Skip to main content

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


Download files

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

Source Distribution

with_partial-1.0.1.tar.gz (4.3 kB view details)

Uploaded Source

Built Distribution

with_partial-1.0.1-py3-none-any.whl (5.4 kB view details)

Uploaded Python 3

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

Hashes for with_partial-1.0.1.tar.gz
Algorithm Hash digest
SHA256 4201c0ad3790eeee4d653b60fde743b70d553043bf0bae900f7d54b278682766
MD5 6ba0e81c0b7471ec4c7d7e7e4086ed8f
BLAKE2b-256 674783b5aff76fd9fc9d9c5aa75880c38e8af1eeffbd71a4b98f589e9c047892

See more details on using hashes here.

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

Hashes for with_partial-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 544898c98881a69ffce563f35df32933f29270156fafb837e800edace0816ca2
MD5 1c08b3b6fe63ca1f8ee0aeed709f913d
BLAKE2b-256 a52f1d16144b4648efaa0388cca89596b3d20ce463a111178de5b29c8b143b58

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