Skip to main content

A lightweight extension of functools.partial

Project description

impartial

build PyPI PyPI - Python Version Licence

impartial is a lightweight extension of functools.partial that allows modifying positional and keyword arguments in a functional style.

The main idea is that any function wrapped with impartial gets a method with_<keyword>(value) for every keyword argument of that function. Each with_<keyword>(value) method returns a new impartial function with that keyword being modified.

>>> import impartial
>>> @impartial
... def power(x, exponent):
...     return x ** exponent
...
>>> power
impartial(<function power at 0x10d54e790>)
>>> square = power.with_exponent(2) # behaves like functools.partial(square, exponent=2)
>>> square
impartial(<function power at 0x10d54e790>, exponent=2)
>>> square(3)
9

Features:

  • the with_<keyword>(value) methods can be arbitrarily chained
  • impartial functions are immutable: any "modification" of arguments returns a new impartial function
  • very lightweight (~50 LOC and no dependencies)
  • fully compatible with functools.partial (impartial is a subclass of functools.partial)
  • can be used as a decorator

To install this package, run:

pip install impartial

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

impartial-0.1.3.tar.gz (7.1 kB view details)

Uploaded Source

Built Distribution

impartial-0.1.3-py3-none-any.whl (11.4 kB view details)

Uploaded Python 3

File details

Details for the file impartial-0.1.3.tar.gz.

File metadata

  • Download URL: impartial-0.1.3.tar.gz
  • Upload date:
  • Size: 7.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.4

File hashes

Hashes for impartial-0.1.3.tar.gz
Algorithm Hash digest
SHA256 049b069ae06d4337a84a8d120bfcfe968b106595f9f0f597731c050752a22a82
MD5 9285f7dd67fd496a0bf9beee360265db
BLAKE2b-256 d644fe71752cd12914a2bbba437f9d6d2c7b90b5615c9b31780aef9f74a2585f

See more details on using hashes here.

File details

Details for the file impartial-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: impartial-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 11.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.4

File hashes

Hashes for impartial-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 95883822ccecbe37b6f3b16587f00d1a39f10dee74bc614334074666f103e137
MD5 81913fdbc2a29a7fece4fb73691aa58d
BLAKE2b-256 34698e6ef6976ce63641d92d1a2e0a0c2bfb9265ce1ba10be808d1a23c4f6b99

See more details on using hashes here.

Supported by

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