CyToolz: High-Performance Functional Utilities for Python

CyToolz: High-Performance Functional Utilities for Python

Summary

CyToolz is a high-performance Cython implementation of the popular Toolz library, offering functional utilities for iterables, functions, and dictionaries. It provides significant speed improvements, typically 2-5x faster than its pure Python counterpart, while maintaining the same API. This makes CyToolz an excellent choice for data processing tasks requiring efficiency and low memory usage.

Repository Info

Updated on January 2, 2026
View on GitHub

Tags

Click on any tag to explore related repositories

Introduction

CyToolz is a powerful library that provides high-performance functional utilities for Python. It is a Cython implementation of the well-known toolz package, designed to offer significant speed enhancements for common data manipulation tasks involving iterables, functions, and dictionaries. By leveraging Cython, CyToolz delivers a faster alternative, often 2-5 times quicker than the pure Python toolz library, making it ideal for performance-critical applications and large datasets. It seamlessly integrates with other Python libraries like itertools and functools, promoting a functional programming style.

Installation

Getting started with CyToolz is straightforward. You can install it directly from the Python Package Index (PyPI) using pip:

pip install cytoolz

CyToolz supports Python 3.9+ and requires only CPython and a C compiler, making it a lightweight dependency for your projects.

Examples

CyToolz implements the exact same API as the toolz library, meaning any examples or documentation for toolz apply directly to CyToolz. For comprehensive examples and API details, please refer to the official toolz documentation: Toolz API Documentation.

Here's a simple example demonstrating a common functional utility, compose, which combines multiple functions:

from cytoolz import compose, partial

def increment(x):
    return x + 1

def double(x):
    return x * 2

# Compose functions: double then increment
composed_function = compose(increment, double)
result = composed_function(5) # (5 * 2) + 1 = 11
print(f"Composed result: {result}")

# Using partial application
add_five = partial(lambda x, y: x + y, 5)
print(f"Partial application: {add_five(10)}") # 5 + 10 = 15

Why Use CyToolz?

The primary advantage of CyToolz is its superior performance. By reimplementing core toolz functionalities in Cython, it achieves substantial speedups, typically 2-5 times faster, with some operations showing even more dramatic improvements. This performance boost is crucial when dealing with very large or potentially infinite data streams, where every millisecond counts.

Beyond speed, CyToolz also offers:

  • C API: Provides a C API accessible to other Cython projects, enabling deeper integration and further performance optimizations.
  • Low Memory Usage: Like toolz, it leverages the iterator protocol, returning iterators whenever possible to ensure efficient memory usage, especially for large datasets.
  • Lightweight: Despite its performance benefits, CyToolz remains a minimal dependency, requiring only CPython and a C compiler.
  • Free-threading Support: It includes experimental support and wheels for Python free-threading (introduced in Python 3.13), though users should exercise caution regarding thread-safety.

Links