Bonobo is an Extract Transform Load (or ETL) framework for the Python (3.5+) language.
It works by streaming data through a directed acyclic graph of python callables, one row at a time.
It is targeting small scale data (as in “not big data”), allowing it to be quick and easy to install (no client-server, no daemon, lightweight requirements, no surprises).
Most common file formats (XML, CSV, JSON, Excel, ...) and basic services (SQL databases, REST web services, ...) can be worked with using the built-in or extension libraries, other services can benefit the richness of PyPI.
In short, Bonobo contains the logic to execute efficiently an ETL process, the glue to use plain old python ojects and common operations, readers and writers. For the rest, it's just python!
Table of contents
- First steps
- Too long; didn’t read.
- What versions of python does bonobo support? Why not more?
- Can a graph contain another graph?
- How would one access contextual data from a transformation? Are there parameter injections like pytest’s fixtures?
- What is a plugin? Do I need to write one?
- Is there a difference between a transformation node and a regular python function or generator?
- Why did you include the word «marketing» in a commit message? Why is there a marketing-automation tag on the project? Isn’t marketing evil?
- Why not use <some library> instead?
- All those references to monkeys hurt my head. Bonobos are not monkeys.
- Who is behind this?
- Documentation seriously lacks X, there is a problem in Y…