This release fixes a bug introduced in :ref:`Hypothesis 4.14.3 <v4.14.3>` that would sometimes cause :func:`sampled_from(...).filter(...) <hypothesis.strategies.sampled_from>` to encounter an internal assertion failure when there are three or fewer elements, and every element is rejected by the filter.
4.14.5
Not secure
-------------------
This patch takes the previous efficiency improvements to :func:`sampled_from(...).filter(...) <hypothesis.strategies.sampled_from>` strategies that reject most elements, and generalises them to also apply to ``sampled_from(...).filter(...).filter(...)`` and longer chains of filters.
4.14.4
Not secure
-------------------
This release fixes a bug that prevented :func:`~hypothesis.strategies.random_module` from correctly restoring the previous state of the ``random`` module.
The random state was instead being restored to a temporary deterministic state, which accidentally caused subsequent tests to see the same random values across multiple test runs.
4.14.3
Not secure
-------------------
This patch adds an internal special case to make :func:`sampled_from(...).filter(...) <hypothesis.strategies.sampled_from>` much more efficient when the filter rejects most elements (:issue:`1885`).
4.14.2
Not secure
-------------------
This patch improves the error message if the function ``f`` in :ref:`s.flatmap(f) <flatmap>` does not return a strategy.
Thanks to Kai Chen for this change!
4.14.1
Not secure
-------------------
This release modifies how Hypothesis selects operations to run during shrinking, by causing it to deprioritise previously useless classes of shrink until others have reached a fixed point.
This avoids certain pathological cases where the shrinker gets very close to finishing and then takes a very long time to finish the last small changes because it tries many useless shrinks for each useful one towards the end. It also should cause a more modest improvement (probably no more than about 30%) in shrinking performance for most tests.