Skip to main content

Pseudo-hacky sugar around generators. If you write nested for loops or nested functions a(b(c([1,2,3]))) this might help you.

Basically it looks like this:

[1, 2, 3] | add(2) | list == [3, 4, 5]

where

@worker
def add(items, n):
        for i in items:
                yield i + n

The leftmost argument always is the iterator coming from the left side. The other arguments represent a bound state. Using this worker is a two-step process.

adder = add(2)                # bind a state in a closure
adder([1, 2, 3]) == [3, 4, 5] # apply an iterator

workers tend to be very simple and short, reusable and easy to test.

@worker
def echo(items):
        for i in items: yield i
echo = echo()   # echo 'has' no state
assert [1, 2, 3] | echo == [1, 2, 3]

Sometimes you can achieve something like this:

filter_audio_files = fs.filter_by_ext(['.mp3'])

@producer
def folders_with_audio_files(path):
    for root, folders, filenames in os.walk(path):
        if any(filenames | filter_audio_files):
            yield root


@worker
def that_need_fix(paths):
        for path in paths:
                files     = listdir(path) | filter_audio_files | join_path(path) | list
                dos_names = files | get_83DOS_name | list

                if files.sort() != dos_names.sort():
                        yield path
that_need_fix = that_need_fix()


# and the outermost commands in a script then look like this

#give me all folders with mp3-files inside, e.g. print them to stdout
folders_with_audio_files(root)
#give me all folder that need a specific fix, aka dry-mode
folders_with_audio_files(root) | that_need_fix
#actually apply a fix to these folders
folders_with_audio_files(root) | that_need_fix | apply_fix

Download files

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

Source Distribution

useless.pipes-0.0.1.zip (8.7 kB view details)

Uploaded Source

File details

Details for the file useless.pipes-0.0.1.zip.

File metadata

  • Download URL: useless.pipes-0.0.1.zip
  • Upload date:
  • Size: 8.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for useless.pipes-0.0.1.zip
Algorithm Hash digest
SHA256 752f9334f36b4e11ecb6ba79afd5f595d2496246beb3b24e0b1ddfd91997a57e
MD5 f3ea6a63b0aa8d4b71af11f8135e1abc
BLAKE2b-256 a04856a0f8a6f4158fb93f094792fde791f13c3bd3d99642a9647fadc5b6bb73

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.0.1 This release

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page