Tuyau is a library that allows you to process values through a sequence of steps, similar to a pipe.
Project description
Tuyau
Tuyau is a library that allows you to process values through a sequence of steps, similar to a pipe.
# Before
for name in names:
len(hash(upper_case(decode(name))))
# After
tube = Tube(decode, upper_case, hash, len)
for name in names:
tube(name)
# or alternative
tube.send(name)
Installation
You can install Tuyau using pip:
pip install tuyau
Usage
Creating a Tuyau
To create a Tuyau, you can pass a sequence of callable steps to the constructor. Each step should be a callable that takes one argument and returns a value of any type.
from tuyau import Tube
def add_one(number: int) -> int:
"""Simple step: add one to the number."""
return number + 1
def multiply_by_two(number: int) -> int:
"""Simple step: multiply the number by two."""
return number * 2
tube = Tube(add_one, multiply_by_two)
print(tube.send(1)) # 4
Processing Values
You can process values through the Tuyau by calling it as if it were a function. The value will go through each step in the sequence and get transformed accordingly.
result = tube(5)
print(result) # Output: 12 (5 + 1 = 6, 6 * 2 = 12)
You can also use the send()
method, which is an alias for calling the Tuyau directly.
result = tube.send(5)
print(result) # Output: 12
Example
Here's an example using lambda functions as steps:
tube = Tube(lambda x: x + 1, lambda x: x * 2)
result = tube(3)
print(result) # Output: 8 (3 + 1 = 4, 4 * 2 = 8)
Typing
Typing
The Tube
class is designed to support typing for both input and output.
from tuyau import Tube
def add_one(num: int) -> int:
return num + 1
def multiply_by_two(num: int) -> int:
return num * 2
# Create Tube with multiple callables that take and return int
tube: Tube[int, int] = Tube(add_one, multiply_by_two)
tube: Tube[int, str] = Tube(add_one, multiply_by_two, str)
# Process integers through the tubes
result: int = tube(3)# Output: 6 (3 + 1 * 2)
result2: str = tube(3)# Output: "6" str(3 + 1 * 2)
Contributing
Contributions are welcome! If you find a bug or have a suggestion for improvement, please create an issue or a pull request on GitHub.
Local dev
install .venv with all dev dep
make dev-install
launch tests
make test
launch linters
make lint
License
This library is licensed under the MIT License - see the LICENSE file for details.
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 tuyau-1.2.tar.gz
.
File metadata
- Download URL: tuyau-1.2.tar.gz
- Upload date:
- Size: 4.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7b1ba39cd8dee1d5687c80a4e74c1b5b36388e5ad0e44c9bd01e6bd982b600bb |
|
MD5 | 25efa3fcb22532d38dca9625d39b6415 |
|
BLAKE2b-256 | b64d22d9edc683253f0631d71ecba1dc3be4241a6482a4c343d9a8dd94c81adf |
File details
Details for the file tuyau-1.2-py3-none-any.whl
.
File metadata
- Download URL: tuyau-1.2-py3-none-any.whl
- Upload date:
- Size: 4.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0de76a83f7ec57d3fe6ee572da464ee8260523e9855793d9abf02a8976e39cc5 |
|
MD5 | 21587a8551d1b403e3ac11b5e238d6a1 |
|
BLAKE2b-256 | 48241805386374f188b2a71d50aee79763739a71453c588de2b9bdbb88bcb914 |