Skip to main content

Repack is a collection of well known Python utilities nicely packed together.

Project description

https://travis-ci.org/AlexPereverzyev/repack.svg

Welcome to Repack!

Repack is a collection of well known utilities nicely packed together. To illustrate the idea, imagine, you need to pass an object via URL query string, with Repack it looks like:

import repack

token1 = (repack
            .json_encode()
            .bytify()
            .deflate()
            .base64_encode()
            .url_encode()
            .converter()
            .send({'id': 10001, 'desc':'this is a token' }))

But normally, you would do:

import json
import zlib
import base64
import urllib.parse

string = json.dumps({'id': 10001, 'desc':'this is a token' })
stream = bytes(string, 'utf-8')
stream = zlib.compress(stream)
string = base64.b64encode(stream)
token1 = urllib.parse.quote(string)

Feel the difference :) Also you want it to be lasy, so you can make a converter once and use it later:

urlit = (repack
            .json_encode()
            .bytify()
            .deflate()
            .base64_encode()
            .url_encode()
            .converter())

Like this:

token1 = urlit.send({'id': 10001, 'desc':'this is a token' })

Or like this:

token2 = urlit.send('another token lol')
token3 = urlit.send('one more yay')
token4 = urlit.send('yay!!!')

You can chain the utilities as filter, meaning, values interpreted as False will not pass:

with (repack
        .reverse()
        .printout()
        .filter()) as f:

    f.send('olleH')
    f.send(None)
    f.send('!dlroW')
    f.send(None)

Prints:

Hello
World!

Another example is iterator, which allows to set source later:

with (repack
        .trim()
        .integer()
        .iterator()) as iterator:

    results = []
    for v in iterator.send(iter(['1 ','\t2', '\n3'])):
        results.append(v)

Results in:

[1, 2, 3]

Or vice versa, using accumulator:

with (repack
        .trim()
        .integer()
        .accumulator()) as acc:

    acc.send('1 ')
    acc.send('\t2')
    acc.send('\n3')

    results = []
    for v in acc:
        results.append(v)

The package is under development. Everyone is welcome to contribute. For TODOs, please see the current TODO list in the root folder.

Requirements

  • Python 3.4.2

Install

sudo pip install repack

Extension

As easy as adding more filters to filters/__init__.py or more flows to flows/__init__.py.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

Repack-0.1.1.tar.gz (7.5 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page