An itertools-inspired toolkit for cached iterator and data-structure processing
Project description
itertoolkit
Functions creating iterators and cached data pipelines for efficient looping.
itertoolkit is an itertoolkit-inspired wrapper focused on practical data processing. It keeps the lazy, composable style of iterator algebra, then adds cache-aware helpers so repeated list and data-structure transformations run faster.
The goal is simple:
- Keep memory usage low with lazy iterators.
- Speed up repeated workloads with caching.
- Make iterator pipelines readable and reusable.
Installation
pip install itertoolkit
Quick Start
from itertoolkit import count, islice
# Example: base itertoolkit stream
stream = (x * x for x in count(1))
print(list(islice(stream, 5))) # [1, 4, 9, 16, 25]
# Example: cached computation workflow (concept)
# result = itertoolkit.cached_map(expensive_fn, dataset, cache_key="v1")
Why It Is Faster
itertoolkit performance comes from combining:
- Lazy iteration, so intermediate materialization is avoided.
- Cache-first wrappers, so repeated transformations are reused.
- Composable pipelines, so complex loops stay compact and optimized.
In repeated analytics or feature-building jobs, the first pass computes and stores results, and later passes can fetch from cache instead of recomputing every step.
Core Iterator Families
General iterators
| Iterator concept | Input | Output shape | Typical use |
|---|---|---|---|
| Running reduction | iterable, func | incremental totals | rolling stats |
| Batching | iterable, n | tuples of size n | chunk processing |
| Chaining | multiple iterables | one continuous stream | merging sources |
| Selection | data + selectors | filtered stream | mask-based filtering |
| Windowing | iterable | adjacent pairs/windows | transition analysis |
| Truncation | predicate/slice | bounded output | safe handling of infinite streams |
Combinatoric iterators
| Iterator concept | Output |
|---|---|
| Cartesian products | all pairings across inputs |
| Permutations | order-sensitive tuples |
| Combinations | order-insensitive unique tuples |
| Combinations with replacement | tuples allowing repeated values |
Pipeline Pattern
Use this pattern when processing large lists, tables, graphs, or text records:
- Start from one or more iterables.
- Chain filtering, mapping, grouping, and batching.
- Add cache boundaries around expensive stages.
- Materialize only where needed (
list,tuple,DataFrame, model input).
from itertoolkit import chain
sources = [[1, 2, 3], [4, 5], [6]]
pipeline = (x * 10 for x in chain.from_iterable(sources) if x % 2 == 0)
print(list(pipeline)) # [20, 40, 60]
Caching Strategy
Recommended caching behavior for data-heavy workloads:
- Key by transformation signature and input fingerprint.
- Keep deterministic steps cacheable.
- Invalidate cache on function/version changes.
- Persist long-running results between sessions.
This makes repeated preprocessing and feature extraction significantly cheaper.
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
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 itertoolkit-1.5.2-py3-none-any.whl.
File metadata
- Download URL: itertoolkit-1.5.2-py3-none-any.whl
- Upload date:
- Size: 66.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6c18f2f53fbc430c0d0713b80ee56037df53f7f0320c9036cae9d5618a241fd4
|
|
| MD5 |
d97fabb9cd97568d58c833e526a9a9b6
|
|
| BLAKE2b-256 |
4c1583b1d1e068453e0a6af1c3d9ad564b29fd59231af898a430e04f0e44dff5
|