Skip to main content

Miniature operators for Python

Project description

This library makes it almost trivial to add extended operators to the python language, or to transform existing functions into binary operators. For example, one might take the function compose:

def compose(f, g):
    return lambda *args, **kwargs: f(g(*args, **kwargs))

And turn it into an operator, |compose|:

compose = MiniOperator(compose)

Then, the operator can be used as a binary operator [1]:

f = math.sqrt  |compose|  (lambda x: x**2 + 1)
f(0) # 1.0

If one consistently uses this |<name>| notation and parenthesises arguments, no problems should arise [2].

Furthermore, the operator thus created will support overriding through the standard Python convention of __<name>__ and __r<name>__ special methods.

Documentation

The MiniOperator constructor can be called in three ways. MiniOperator(f) creates an operator named f that uses f as its default operation [3]. A name can also be explicitely passed: MiniOperator(name, f), where name is a string, will create an operator named name that uses f as a default operation. Finally, one can create an operator without specifying a default method: MiniOperator(name), where name is a string, will result in an operator that will throw a NotImplementedError when used on most arguments. However, a class will be able to explicitely override __<name>__ or __r<name>__ to support this operator.

Footnotes

Project details


Release history Release notifications | RSS feed

This version

1.0

Download files

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

Source Distribution

MiniOperators-1.0.tar.gz (14.4 kB view details)

Uploaded Source

File details

Details for the file MiniOperators-1.0.tar.gz.

File metadata

  • Download URL: MiniOperators-1.0.tar.gz
  • Upload date:
  • Size: 14.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for MiniOperators-1.0.tar.gz
Algorithm Hash digest
SHA256 2511620a469931150c431fc1569747ac9886b915563f09eb0a74436f1a52d2f7
MD5 824c856c7bda75f45b136a1c75b83523
BLAKE2b-256 4b505bd63fc95044f86f989b50a91f03933c1f4aa2f47798ae58c1fa7ada1a64

See more details on using hashes here.

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