A utility for functional piping in Python that allows you to access any function in any scope as a partial.
Project description
WithPartial
Introduction
WithPartial is a simple utility for functional piping in Python.
The package exposes a context manager (used with with
) called PipeContext
, that allows you to access any function in any scope as a partial, meaning that it's naturally pipeable.
Here's a contrived example from the test suite:
import numpy as np
from with_partial import PartialContext
from pipetools import pipe
with PartialContext() as _:
ret = (
10 > pipe |
_.np.ones() |
_.np.reshape(newshape=(5, 2)) |
_.np.mean() |
_.int()
)
assert ret == 1
As you can see, we were able to call both numpy
and built-in functions on the _
object, and it executed the pipeline similarly to say R's magrittr
package.
Installation
pip install with_partial
Usage
Actually WithPartial doesn't provide an actual piping mechanism, but it does add a useful syntax for use with pipes. For the actual piping mechanism, I suggest that you try pipetools, which this package is actually tested against.
WithPartial provides a single class: PipeContext
.
The way you use PipeContext
is by first using it as a context manager:
with PipeContext() as _:
Then, using the return value of the context manager, which we have named _
(but you could call it anything), you access attributes and items (using .attr
or ["key"]
or [0]
) to locate the function you want and then you finally call it ()
, which will create the partial.
You can use positional and keyword arguments at this point if you need
For more usage information, refer to the test suite.
Tests
Note: you will need poetry installed.
git clone https://github.com/multimeric/WithPartial.git
cd WithPartial
poetry install --extras pipetools
poetry run pytest test/
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file with_partial-1.0.1.tar.gz
.
File metadata
- Download URL: with_partial-1.0.1.tar.gz
- Upload date:
- Size: 4.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.4 CPython/3.9.7 Linux/5.13.0-19-generic
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4201c0ad3790eeee4d653b60fde743b70d553043bf0bae900f7d54b278682766 |
|
MD5 | 6ba0e81c0b7471ec4c7d7e7e4086ed8f |
|
BLAKE2b-256 | 674783b5aff76fd9fc9d9c5aa75880c38e8af1eeffbd71a4b98f589e9c047892 |
File details
Details for the file with_partial-1.0.1-py3-none-any.whl
.
File metadata
- Download URL: with_partial-1.0.1-py3-none-any.whl
- Upload date:
- Size: 5.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.4 CPython/3.9.7 Linux/5.13.0-19-generic
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 544898c98881a69ffce563f35df32933f29270156fafb837e800edace0816ca2 |
|
MD5 | 1c08b3b6fe63ca1f8ee0aeed709f913d |
|
BLAKE2b-256 | a52f1d16144b4648efaa0388cca89596b3d20ce463a111178de5b29c8b143b58 |