Bonobo v.0.3

June 5, 2017

Just released Bonobo 0.3. Lots of new features, stability enhancements, better internal plumbery... You should upgrade your projects as soon as possible, and of course make feedback if anything goes wrong.

Install or upgrade

As always, the easiest option for installation or upgrade of Bonobo is through PyPI, using "pip install -U bonobo".

More installation options are available in the documentation.



  • ContextProcessors can now be implemented by getting the "yield" value (v = yield x), shortening the teardown-only context processors by one line.
  • File related writers (file, csv, json ...) now returns NOT_MODIFIED, making it easier to chain something after.
  • More consistent console output, nodes are now sorted in a topological order before display.
  • Graph.add_chain(...) now takes _input and _output parameters the same way, accepting indexes, instances or names (subject to change).
  • Graph.add_chain(...) now allows to "name" a chain, using _name keyword argument, to easily reference its output later (subject to change).
  • New settings module (bonobo.settings) read environment for some global configuration stuff (DEBUG and PROFILE, for now).
  • New Method subclass of Option allows to use Configurable objects as decorator (see bonobo.nodes.filter.Filter for a simple example).
  • New Filter transformation in standard library.

Internal features

  • Better ContextProcessor implementation, avoiding to use a decorator on the parent class. Now works with Configurable instances like Option, Service and Method.
  • ContextCurrifier replaces the logic that was in NodeExecutionContext, that setup and teardown the context stack. Maybe the name is not ideal.
  • All builtin transformations are of course updated to use the improved API, and should be 100% backward compatible.
  • The "core" package has been dismantled, and its rare remaining members are now in "structs" and "util" packages.
  • Standard transformation library has been moved under the bonobo.nodes package. It does not change anything if you used bonobo.* (which you should).
  • ValueHolder is now more restrictive, not allowing to use .value anymore.


  • Code cleanup, dead code removal, more tests, etc.
  • More documentation.


We tried to test as much as we could this release in various setups and using different codebases.

Due to the young age of bonobo, to the limited amount of energy I can invest, to the fact that the internal plumbery is moving a lot and to the «real-world» factor, there may be things that will break.

Please report any issue you'd have so we can try to avoid such problems in the future.