Changes
=======

.. currentmodule:: mush

2.5.0 (23 November 2016)
------------------------

- Allow :class:`Plug` instances to be added directly using :meth:`Runner.add`
  and friends.

2.4.0 (17 November 2016)
------------------------

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

- Add :meth:`Runner.add_label` helper to just add a label at the end of the
  runner.

- Document and flesh out :ref:`plugs`.

- Switch to full `Semantic Versioning`__.

  __ http://semver.org/

2.3 (24 June 2016)
------------------

- Stop catching :class:`TypeError` and turning it into a
  :class:`~context.ContextError` when calling a :class:`Runner`. This turns out
  to be massively unhelpful, especially when using Python 2.

2.2 (2 January 2016)
--------------------

- Add :class:`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 :func:`requires` and :func:`returns` are
  not either types or labels.

- Allow tuples are lists to be passed to :meth:`~modifier.Modifier.add`,
  they will automatically be turned into a :func:`requires` or :func:`returns`.

- Better error messages when a requirement is not found in the
  :class:`~context.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 :func:`attr` and :func:`item` can now be nested
  as well as individually performing nested actions.

- Add :func:`returns` and :meth:`~Runner.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 :obj:`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 :func:`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)
----------------------

- Allow runners to be instantiated using other runners.

- Allow :meth:`Runner.extend` to be passed :class:`Runner` instances.

- Allow :func:`requires` decorations to be stacked.

- Add a :meth:`Runner.replace` method to aid with testing assembled runners.

1.0 (29 October 2013)
-----------------------

- Initial Release
