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.

Files for Repack, version 0.1.1
Filename, size File type Python version Upload date Hashes
Filename, size Repack-0.1.1.tar.gz (7.5 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page