------------------
This is a feature release.
New features:
* Rule based stateful testing now has an :func:`invariant <hypothesis.stateful.invariant>` decorator that specifies
methods that are run after init and after every step, allowing you to
encode properties that should be true at all times. Thanks to Tom Prince for
this feature.
* The :func:`~hypothesis.strategies.decimals` strategy now supports ``allow_nan`` and ``allow_infinity`` flags.
* There are :ref:`significantly more strategies available for numpy <hypothesis-numpy>`, including for
generating arbitrary data types. Thanks to Zac Hatfield Dodds for this
feature.
* When using the :func:`~hypothesis.strategies.data` strategy you can now add a label as an argument to
``draw()``, which will be printed along with the value when an example fails.
Thanks to Peter Inglesby for this feature.
Bug fixes:
* Bug fix: :func:`~hypothesis.strategies.composite` now preserves functions' docstrings.
* The build is now reproducible and doesn't depend on the path you build it
from. Thanks to Chris Lamb for this feature.
* numpy strategies for the void data type did not work correctly. Thanks to
Zac Hatfield Dodds for this fix.
There have also been a number of performance optimizations:
* The :func:`~hypothesis.strategies.permutations` strategy is now significantly faster to use for large
lists (the underlying algorithm has gone from O(n^2) to O(n)).
* Shrinking of failing test cases should have got significantly faster in
some circumstances where it was previously struggling for a long time.
* Example generation now involves less indirection, which results in a small
speedup in some cases (small enough that you won't really notice it except in
pathological cases).