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.

>>> from impartial 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.2.0.tar.gz (7.4 kB view details)

Uploaded Source

Built Distribution

impartial-0.2.0-py3-none-any.whl (11.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: impartial-0.2.0.tar.gz
  • Upload date:
  • Size: 7.4 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.2.0.tar.gz
Algorithm Hash digest
SHA256 632bc680f4b9742ea37325392299a4f3022db6572e576166adae530d62512f62
MD5 f5d4e5980ba525f698c015c2ddfba6c7
BLAKE2b-256 79c615c938240cbf83cef52748477fc8f21c9a95eea1bcbcf439fc5415e1b53f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: impartial-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 11.7 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.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 95ec9e35c39384d13e09dd174299a4d4412124469ac9fdca94babab926d810d3
MD5 3eb80bc0633d3e1c3528b78a982c1bef
BLAKE2b-256 0de254170daeb833c63b0fccc8288adc9420e2d9b304ae73d537bca1e5b5b040

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