pycategory
Installation
pip install works for this library.
pip install pycategory
Usage
Here is an example of how to use the pycategory package:
curry
from pycategory import curry
@curry
def function(arg1: int, /, arg2: int, arg3: int = 3, *, arg4: int = 4) -> int:
return arg1 + arg2 + arg3 + arg4
function2 = function # (int) -> ((int) -> int)
function1 = function2(1) # (int) -> int
result = function1(2) # int
Pipeline
from pycategory import Pipeline, curry
def squared(value: int) -> int:
return value**2
assert 42**2**2 == ~(Pipeline(42) >> squared >> squared)
@Pipeline
@curry
def cubed(arg1: int, arg2: int, arg3: int) -> int:
return arg1 * arg2 * arg3
assert 42**3 == ~(cubed << 42 << 42 << 42)
Either
from pycategory import Either, EitherDo, Frame, Left, Right
class Error(Frame):
...
@Either.do
def context(value: int) -> EitherDo[Error, int]:
one = yield from Left[Error, int](Error(unmask=("value",)))
two = 2
three = yield from Right[Error, int](3)
return one + two + three
match context(42).pattern:
case Left(value):
print(f"Left case {value}")
case Right(value):
print(f"Right case {value}")
Option
from pycategory import VOID, Option, OptionDo, Some, Void
@Option.do
def context() -> OptionDo[int]:
one = yield from VOID
two = 2
three = yield from Some[int](3)
return one + two + three
match context().pattern:
case Void():
print("Void case")
case Some(value):
print(f"Some case {value}")
Try
from pycategory import Failure, Success, Try, TryDo
@Try.hold(unmask=("value",))
def hold_context(value: int, /) -> int:
if not value:
raise Exception("error")
return value
@Try.do
def context() -> TryDo[int]:
one = yield from hold_context(0)
two = 2
three = yield from Success[int](3)
return one + two + three
match context().pattern:
case Failure() as failure:
print(f"Failure case {failure.exception}")
case Success(value):
print(f"Success case {value}")
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
pycategory-0.1.2.tar.gz
(14.7 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pycategory-0.1.2.tar.gz.
File metadata
- Download URL: pycategory-0.1.2.tar.gz
- Upload date:
- Size: 14.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.1 CPython/3.11.6 Darwin/23.2.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
18c77e3118aad46fc920788c7944819e28c53612b4a388871e4bc0353de2f556
|
|
| MD5 |
7866b85603ae977f6e258476b175c158
|
|
| BLAKE2b-256 |
6539d4f72a633e23fb621d7a54125fd2a8773f21abeddcc97a982fadaace5cfa
|
File details
Details for the file pycategory-0.1.2-py3-none-any.whl.
File metadata
- Download URL: pycategory-0.1.2-py3-none-any.whl
- Upload date:
- Size: 18.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.1 CPython/3.11.6 Darwin/23.2.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cdaa7ebfbba0a46b7779f5d7c791009f4386c4c36904fca339e8f297c71456c3
|
|
| MD5 |
d9d479c5485472c7d29a43ac17e48abf
|
|
| BLAKE2b-256 |
389a6402be26f4732f1421d4e7f55d6d8e58fc3952da87f16b6aef1b1960220e
|