toolz-stubs
Type stubs for toolz and tlz - Python functional programming libraries.
Installation
pip install toolz-stubs
This installs type stubs for both toolz and tlz.
Usage
Once installed, type checkers like mypy, pyright, or basedpyright will automatically use these stubs:
import toolz
bills = {"Alice": [20, 15, 30], "Bob": [10, 35]}
totals = toolz.valmap(sum, bills) # dict[str, int]
even_entries = toolz.keyfilter(lambda k: k % 2 == 0, {1: "a", 2: "b", 3: "c"}) # dict[int, str]
names = ["Alice", "Bob", "Charlie", "Anna"]
grouped = toolz.groupby(lambda s: s[0], names) # dict[str, list[str]]
Using with cytoolz
When you pip install toolz, you also get a second package called tlz. It's a thin auto-selecting wrapper: if cytoolz (the C-accelerated version) is installed, tlz imports from it; otherwise it falls back to pure-Python toolz. The API is identical either way.
If you use cytoolz, you can switch your imports to tlz to get the same performance with type checking support and a graceful fallback:
# before
from cytoolz.dicttoolz import merge, valmap
from cytoolz.functoolz import curry, compose, pipe
# after — same performance, now with type stubs
from tlz.dicttoolz import merge, valmap
from tlz.functoolz import curry, compose, pipe
What's Included
This package provides type stubs (.pyi files) for:
- toolz: The pure Python functional programming library
- tlz: The auto-selecting wrapper (uses cytoolz if installed, otherwise falls back to toolz)
Modules covered:
toolz.functoolz/tlz.functoolz- Function manipulation (curry, compose, pipe, etc.)toolz.itertoolz/tlz.itertoolz- Iterator utilities (groupby, partition, sliding_window, etc.)toolz.dicttoolz/tlz.dicttoolz- Dictionary operations (merge, valmap, keyfilter, etc.)toolz.curried/tlz.curried- Pre-curried versions of all functionstoolz.recipes/tlz.recipes- Common recipes (countby, partitionby)toolz.sandbox/tlz.sandbox- Experimental utilities
Development
make sync # Install dependencies
make check # Run type checker
make test # Run tests
make lint # Run linter
make format # Check formatting
make build # Build wheel
If manually running commands, be sure to specify --no-editable or hatchling will mispackage toolz & tlz packages.
Tests
The tests in tests/ serve a few purposes:
- they verify runtime behavior with pytest.
- they verify that these stubs genuinely improve the developer experience in an IDE.
- they are type-checked by basedpyright. This ensures the stubs match actual library behavior.
Contributing
Contributions are welcome! Areas that could use improvement:
- More precise generic types
- Additional overloads for functions with variable signatures
- Improved curry and composition typing
- Protocol types for duck-typed parameters
License
BSD 3-Clause (same as toolz)
Metadata
Release files for toolz-stubs 0.4.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| toolz_stubs-0.4.1.tar.gz | 65.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| toolz_stubs-0.4.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 133.5 kB
Release files / toolz_stubs-0.4.1.tar.gz
| Download URL | toolz_stubs-0.4.1.tar.gz |
|---|---|
| Size | 65.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e6fc55936adb699f03934ad4789f62b823e3e41fbd1673b8dd5e950be3b3107e
|
|
BLAKE2b-256 checksum How to use checksums |
50b884bdb65e9a88ff978f99dcff09e3f33aa20eeedcec2a6705b7744b4de524
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 8, 2026.
Transparency logRelease files / toolz_stubs-0.4.1-py3-none-any.whl
| Download URL | toolz_stubs-0.4.1-py3-none-any.whl |
|---|---|
| Size | 68.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4c86f61616ea2a0a369641f0b2665d09d03cb0da18afa79703c2c2e27da898a7
|
|
BLAKE2b-256 checksum How to use checksums |
54f3aa2303b515b881699ce38ac4bf4573857187f06b49420b17792aa8784bbf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 8, 2026.
Transparency log