Skip to main content
This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (
Help us improve Python packaging - Donate today!

Transducers, similar to those in Clojure

Project Description

This is a port of the transducer concept from Clojure to Python, with an emphasis on providing as Pythonic as interpretation of transducers as possible, rather than reproducing Clojurisms more literally.

Installable Python package

This package is available on the Python Package Index (PyPI) as transducer.


Build status:

Note: Documentation is very much a work in progress.

What are transducers?

Transducers are functions which transform reducers - hence the name. A reducer, in this case, is any function which you could pass to the reduce() function in the Python Standard Library functools module. Such reducers accept an initial or intermediate result and combine a new value with that result to produce a new (or updated) result. Transducers provide us with a convenient means to compose simple reducers into more complex and capable reducers.

Furthermore, transducers facilitate the clean separation of concerns of how source values are input, how they are processed by reducers, and the how results output. This allows the same transducers to be (re)used with many sources and destinations of data, not just with iterable series.

Transducers were developed by Rich Hickey, the driving force behind the Clojure programming language, and this package aims to bring the benefits of transducers to Python 3, whilst transforming some of the Clojurisms into more Pythonic solutions.

An extended write-up of the development of Python transducers from scratch can be found in our series of articles Understanding Transducers Through Python. The code developed over the course of these articles is substantially the same as in this transducer package, although the package uses some further abstractions and tools which are largely irrelevant to understanding how transducers work.

This package, implements simple infrastructure for implementing transducers in Python, a selection of transducer implementations of common operations, and some ‘transducible processes’ which allow us to apply transducers to iterable series (both eagerly and lazily) and to use transducers to process ‘push’ events implemented as Python coroutines.

Release History

Release History

This version
History Node


History Node


History Node


History Node


History Node


Download Files

Download Files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
transducer-0.9-py3-none-any.whl (15.4 kB) Copy SHA256 Checksum SHA256 py3 Wheel Jun 29, 2017
transducer-0.9.tar.gz (16.2 kB) Copy SHA256 Checksum SHA256 Source Jun 29, 2017

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting