Changes

2.8.1 (14 February 2020)

  • Fix bug that resulted in lazy resources being cached across separate runs.

2.8.0 (10 February 2020)

  • Add support for lazy resources.

2.7.2 (20 September 2017)

2.7.1 (7 September 2017)

  • Use the original’s requirements when the replacement passed to Runner.replace() has no specified requirements of its own.

2.7.0 (7 September 2017)

  • Move to pytest and sybil for testing.

  • Drop support for Python 3.3.

  • Add update_wrapper() helper.

  • Add support for using Python 3 type annotations to specify requirements and returned resources.

  • Add support for arg names being used as requirements when there is no other configuration.

  • Add an explicit way of ignoring the return value of a callable.

2.6.0 (6 February 2017)

  • Allow replacement of a callable to also supply new requirements.

  • Officially support Python 3.6.

2.5.0 (23 November 2016)

2.4.0 (17 November 2016)

  • Add support for cloning depending on what label was used to add callables.

  • Add Runner.add_label() helper to just add a label at the end of the runner.

  • Document and flesh out Plugs.

  • Switch to full Semantic Versioning.

2.3 (24 June 2016)

  • Stop catching TypeError and turning it into a ContextError when calling a Runner. This turns out to be massively unhelpful, especially when using Python 2.

2.2 (2 January 2016)

  • Add Plug base class.

2.1 (14 December 2015)

  • Typo fixes in documentation.

  • Indicate that Python 2.6 is no longer supported.

  • Raise exceptions when arguments to requires() and returns() are not either types or labels.

  • Allow tuples are lists to be passed to add(), they will automatically be turned into a requires() or returns().

  • Better error messages when a requirement is not found in the Context.

Thanks to Dani Fortunov for the documentation review.

2.0 (11 December 2015)

  • Re-write dropping all the heuristic callable ordering in favour of building up defined sequences of callables with labelled insertion points.

1.3 (21 October 2015)

  • Official support for Python 3.

  • Drop official support for Windows, although things should still work.

  • Move to Travis CI, Read The Docs and Coveralls for development.

  • ‘How’ decorators like attr() and item() can now be nested as well as individually performing nested actions.

  • Add returns() and add_returning() as new ways to override the type of a returned value.

  • A better pattern for “marker types”.

1.2 (11 December 2013)

  • Use nothing instead of None for marker return types, fixing a bug that occurred when a callable tried to type-map a result that was None.

  • Add an after() type wrapper for callables that need to wait until after a resource is used but that can’t accept that resource as a parameter.

1.1 (27 November 2013)

1.0 (29 October 2013)

  • Initial Release