{"action":"closed","number":354,"pull_request":{"url":"https://api.github.com/repos/kragniz/python-etcd3/pulls/354","id":171015242,"html_url":"https://github.com/kragniz/python-etcd3/pull/354","diff_url":"https://github.com/kragniz/python-etcd3/pull/354.diff","patch_url":"https://github.com/kragniz/python-etcd3/pull/354.patch","issue_url":"https://api.github.com/repos/kragniz/python-etcd3/issues/354","number":354,"state":"closed","locked":false,"title":"Update hypothesis to 3.45.3","user":{"login":"pyup-bot","id":16239342,"avatar_url":"https://avatars0.githubusercontent.com/u/16239342?v=4","gravatar_id":"","url":"https://api.github.com/users/pyup-bot","html_url":"https://github.com/pyup-bot","followers_url":"https://api.github.com/users/pyup-bot/followers","following_url":"https://api.github.com/users/pyup-bot/following{/other_user}","gists_url":"https://api.github.com/users/pyup-bot/gists{/gist_id}","starred_url":"https://api.github.com/users/pyup-bot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pyup-bot/subscriptions","organizations_url":"https://api.github.com/users/pyup-bot/orgs","repos_url":"https://api.github.com/users/pyup-bot/repos","events_url":"https://api.github.com/users/pyup-bot/events{/privacy}","received_events_url":"https://api.github.com/users/pyup-bot/received_events","type":"User","site_admin":false},"body":"\nThere's a new version of [hypothesis](https://pypi.python.org/pypi/hypothesis) available.\nYou are currently using **3.11.6**. I have updated it to **3.45.3**\n\n\n\nThese links might come in handy:  <a href=\"https://pypi.python.org/pypi/hypothesis\">PyPI</a> | <a href=\"https://pyup.io/changelogs/hypothesis/\">Changelog</a> | <a href=\"https://github.com/HypothesisWorks/hypothesis/issues\">Repo</a> \n\n\n\n### Changelog\n> \n>### 3.45.3\n\n>-------------------\n\n>This patch may improve example shrinking slightly for some strategies.\n\n>-------------------\n\n\n>### 3.45.2\n\n>-------------------\n\n>This release makes our docstring style more consistent, thanks to\n>:pypi:`flake8-docstrings`.  There are no user-visible changes.\n\n>-------------------\n\n\n>### 3.45.1\n\n>-------------------\n\n>This fixes an indentation issue in docstrings for\n>:func:`~hypothesis.strategies.datetimes`, :func:`~hypothesis.strategies.dates`,\n>:func:`~hypothesis.strategies.times`, and\n>:func:`~hypothesis.strategies.timedeltas`.\n\n>-------------------\n\n\n>### 3.45.0\n\n>-------------------\n\n>This release fixes :func:`~hypothesis.strategies.builds` so that ``target``\n>can be used as a keyword argument for passing values to the target. The target\n>itself can still be specified as a keyword argument, but that behavior is now\n>deprecated. The target should be provided as the first positional argument.\n\n>--------------------\n\n\n>### 3.44.26\n\n>--------------------\n\n>This release fixes some formatting issues in the Hypothesis source code.\n>It should have no externally visible effects.\n\n>--------------------\n\n\n>### 3.44.25\n\n>--------------------\n\n>This release changes the way in which Hypothesis tries to shrink the size of\n>examples. It probably won&#39;t have much impact, but might make shrinking faster\n>in some cases. It is unlikely but not impossible that it will change the\n>resulting examples.\n\n>--------------------\n\n\n>### 3.44.24\n\n>--------------------\n\n>This release fixes dependency information when installing Hypothesis\n>from a binary &quot;wheel&quot; distribution.\n\n>- The ``install_requires`` for :pypi:`enum34` is resolved at install\n>  time, rather than at build time (with potentially different results).\n>- Django has fixed their ``python_requires`` for versions 2.0.0 onward,\n>  simplifying Python2-compatible constraints for downstream projects.\n\n>--------------------\n\n\n>### 3.44.23\n\n>--------------------\n\n>This release improves shrinking in a class of pathological examples that you\n>are probably never hitting in practice. If you *are* hitting them in practice\n>this should be a significant speed up in shrinking. If you are not, you are\n>very unlikely to notice any difference. You might see a slight slow down and/or\n>slightly better falsifying examples.\n\n>--------------------\n\n\n>### 3.44.22\n\n>--------------------\n\n>This release fixes a dependency problem.  It was possible to install\n>Hypothesis with an old version of :pypi:`attrs`, which would throw a\n>``TypeError`` as soon as you tried to import hypothesis.  Specifically, you\n>need attrs 16.0.0 or newer.\n\n>Hypothesis will now require the correct version of attrs when installing.\n\n>--------------------\n\n\n>### 3.44.21\n\n>--------------------\n\n>This change adds some additional structural information that Hypothesis will\n>use to guide its search.\n\n>You mostly shouldn&#39;t see much difference from this. The two most likely effects\n>you would notice are:\n\n>1. Hypothesis stores slightly more examples in its database for passing tests.\n>2. Hypothesis *may* find new bugs that it was previously missing, but it\n>   probably won&#39;t (this is a basic implementation of the feature that is\n>   intended to support future work. Although it is useful on its own, it&#39;s not\n>   *very* useful on its own).\n\n>--------------------\n\n\n>### 3.44.20\n\n>--------------------\n\n>This is a small refactoring release that changes how Hypothesis tracks some\n>information about the boundary of examples in its internal representation.\n\n>You are unlikely to see much difference in behaviour, but memory usage and\n>run time may both go down slightly during normal test execution, and when\n>failing Hypothesis might print its failing example slightly sooner.\n\n>--------------------\n\n\n>### 3.44.19\n\n>--------------------\n\n>This changes how we compute the default ``average_size`` for all collection\n>strategies. Previously setting a ``max_size`` without setting an\n>``average_size`` would have the seemingly paradoxical effect of making data\n>generation *slower*, because it would raise the average size from its default.\n>Now setting ``max_size`` will either leave the default unchanged or lower it\n>from its default.\n\n>If you are currently experiencing this problem, this may make your tests\n>substantially faster. If you are not, this will likely have no effect on you.\n\n>--------------------\n\n\n>### 3.44.18\n\n>--------------------\n\n>This is a small refactoring release that changes how Hypothesis detects when\n>the structure of data generation depends on earlier values generated (e.g. when\n>using :ref:`flatmap &lt;flatmap&gt;` or :func:`~hypothesis.strategies.composite`).\n>It should not have any observable effect on behaviour.\n\n>--------------------\n\n\n>### 3.44.17\n\n>--------------------\n\n>This release fixes a typo in internal documentation, and has no user-visible impact.\n\n>--------------------\n\n\n>### 3.44.16\n\n>--------------------\n\n>This release improves test case reduction for recursive data structures.\n>Hypothesis now guarantees that whenever a strategy calls itself recursively\n>(usually this will happen because you are using :func:`~hypothesis.strategies.deferred`),\n>any recursive call may replace the top level value. e.g. given a tree structure,\n>Hypothesis will always try replacing it with a subtree.\n\n>Additionally this introduces a new heuristic that may in some circumstances\n>significantly speed up test case reduction - Hypothesis should be better at\n>immediately replacing elements drawn inside another strategy with their minimal\n>possible value.\n\n>--------------------\n\n\n>### 3.44.15\n\n>--------------------\n\n>:func:`~hypothesis.strategies.from_type` can now resolve recursive types\n>such as binary trees (:issue:`1004`).  Detection of non-type arguments has\n>also improved, leading to better error messages in many cases involving\n>:pep:`forward references &lt;484forward-references&gt;`.\n\n>--------------------\n\n\n>### 3.44.14\n\n>--------------------\n\n>This release fixes a bug in the shrinker that prevented the optimisations in\n\n\n>### 3.44.13\n\n>--------------------\n\n>This release changes the average bit length of values drawn from\n>:func:`~hypothesis.strategies.integers` to be much smaller. Additionally it\n>changes the shrinking order so that now size is considered before sign - e.g.\n>-1 will be preferred to +10.\n\n>The new internal format for integers required some changes to the minimizer to\n>make work well, so you may also see some improvements to example quality in\n>unrelated areas.\n\n>--------------------\n\n\n>### 3.44.12\n\n>--------------------\n\n>This changes Hypothesis&#39;s internal implementation of weighted sampling. This\n>will affect example distribution and quality, but you shouldn&#39;t see any other\n>effects.\n\n>--------------------\n\n\n>### 3.44.11\n\n>--------------------\n\n>This is a change to some internals around how Hypothesis handles avoiding\n>generating duplicate examples and seeking out novel regions of the search\n>space.\n\n>You are unlikely to see much difference as a result of it, but it fixes\n>a bug where an internal assertion could theoretically be triggered and has some\n>minor effects on the distribution of examples so could potentially find bugs\n>that have previously been missed.\n\n>--------------------\n\n\n>### 3.44.10\n\n>--------------------\n\n>This patch avoids creating debug statements when debugging is disabled.\n>Profiling suggests this is a 5-10% performance improvement (:issue:`1040`).\n\n>-------------------\n\n\n>### 3.44.9\n\n>-------------------\n\n>This patch blacklists null characters (``&#39;\\x00&#39;``) in automatically created\n>strategies for Django :obj:`~django:django.db.models.CharField` and\n>:obj:`~django:django.db.models.TextField`, due to a database issue which\n>`was recently fixed upstream &lt;https://code.djangoproject.com/ticket/28201&gt;`_\n>(Hypothesis :issue:`1045`).\n\n>-------------------\n\n\n>### 3.44.8\n\n>-------------------\n\n>This release makes the Hypothesis shrinker slightly less greedy in order to\n>avoid local minima - when it gets stuck, it makes a small attempt to search\n>around the final example it would previously have returned to find a new\n>starting point to shrink from. This should improve example quality in some\n>cases, especially ones where the test data has dependencies among parts of it\n>that make it difficult for Hypothesis to proceed.\n\n>-------------------\n\n\n>### 3.44.7\n\n>-------------------\n\n>This release adds support for `Django 2\n>&lt;https://www.djangoproject.com/weblog/2017/dec/02/django-20-released/&gt;`_ in\n>the hypothesis-django extra.\n\n>This release drops support for Django 1.10, as it is no longer supported by\n>the Django team.\n\n>-------------------\n\n\n>### 3.44.6\n\n>-------------------\n\n>This release speeds up test case reduction in many examples by being better at\n>detecting large shrinks it can use to discard redundant parts of its input.\n>This will be particularly noticeable in examples that make use of filtering\n>and for some integer ranges.\n\n>-------------------\n\n\n>### 3.44.5\n\n>-------------------\n\n>Happy new year!\n\n>This is a no-op release that updates the year range on all of\n>the copyright headers in our source to include 2018.\n\n>-------------------\n\n\n>### 3.44.4\n\n>-------------------\n\n>This release fixes :issue:`1044`, which slowed tests by up to 6%\n>due to broken caching.\n\n>-------------------\n\n\n>### 3.44.3\n\n>-------------------\n\n>This release improves the shrinker in cases where examples drawn earlier can\n>affect how much data is drawn later (e.g. when you draw a length parameter in\n>a composite and then draw that many elements). Examples found in cases like\n>this should now be much closer to minimal.\n\n>-------------------\n\n\n>### 3.44.2\n\n>-------------------\n\n>This is a pure refactoring release which changes how Hypothesis manages its\n>set of examples internally. It should have no externally visible effects.\n\n>-------------------\n\n\n>### 3.44.1\n\n>-------------------\n\n>This release fixes :issue:`997`, in which under some circumstances the body of\n>tests run under Hypothesis would not show up when run under coverage even\n>though the tests were run and the code they called outside of the test file\n>would show up normally.\n\n>-------------------\n\n\n>### 3.44.0\n\n>-------------------\n\n>This release adds a new feature: The :ref:`reproduce_failure &lt;reproduce_failure&gt;`,\n>designed to make it easy to use Hypothesis&#39;s binary format for examples to\n>reproduce a problem locally without having to share your example database\n>between machines.\n\n>This also changes when seeds are printed:\n\n>* They will no longer be printed for\n>  normal falsifying examples, as there are now adequate ways of reproducing those\n>  for all cases, so it just contributes noise.\n>* They will once again be printed when reusing examples from the database, as\n>  health check failures should now be more reliable in this scenario so it will\n>  almost always work in this case.\n\n>This work was funded by `Smarkets &lt;https://smarkets.com/&gt;`_.\n\n>-------------------\n\n\n>### 3.43.1\n\n>-------------------\n\n>This release fixes a bug with Hypothesis&#39;s database management - examples that\n>were found in the course of shrinking were saved in a way that indicated that\n>they had distinct causes, and so they would all be retried on the start of the\n>next test. The intended behaviour, which is now what is implemented, is that\n>only a bounded subset of these examples would be retried.\n\n>-------------------\n\n\n>### 3.43.0\n\n>-------------------\n\n>:exc:`~hypothesis.errors.HypothesisDeprecationWarning` now inherits from\n>:exc:`python:FutureWarning` instead of :exc:`python:DeprecationWarning`,\n>as recommended by :pep:`565` for user-facing warnings (:issue:`618`).\n>If you have not changed the default warnings settings, you will now see\n>each distinct :exc:`~hypothesis.errors.HypothesisDeprecationWarning`\n>instead of only the first.\n\n>-------------------\n\n\n>### 3.42.2\n\n>-------------------\n\n>This patch fixes :issue:`1017`, where instances of a list or tuple subtype\n>used as an argument to a strategy would be coerced to tuple.\n\n>-------------------\n\n\n>### 3.42.1\n\n>-------------------\n\n>This release has some internal cleanup, which makes reading the code\n>more pleasant and may shrink large examples slightly faster.\n\n>-------------------\n\n\n>### 3.42.0\n\n>-------------------\n\n>This release deprecates :ref:`faker-extra`, which was designed as a transition\n>strategy but does not support example shrinking or coverage-guided discovery.\n\n>-------------------\n\n\n>### 3.41.0\n\n>-------------------\n\n>:func:`~hypothesis.strategies.sampled_from` can now sample from\n>one-dimensional numpy ndarrays. Sampling from multi-dimensional\n>ndarrays still results in a deprecation warning. Thanks to Charlie\n>Tanksley for this patch.\n\n>-------------------\n\n\n>### 3.40.1\n\n>-------------------\n\n>This release makes two changes:\n\n>* It makes the calculation of some of the metadata that Hypothesis uses for\n>  shrinking occur lazily. This should speed up performance of test case\n>  generation a bit because it no longer calculates information it doesn&#39;t need.\n>* It improves the shrinker for certain classes of nested examples. e.g. when\n>  shrinking lists of lists, the shrinker is now able to concatenate two\n>  adjacent lists together into a single list. As a result of this change,\n>  shrinking may get somewhat slower when the minimal example found is large.\n\n>-------------------\n\n\n>### 3.40.0\n\n>-------------------\n\n>This release improves how various ways of seeding Hypothesis interact with the\n>example database:\n\n>* Using the example database with :func:`~hypothesis.seed` is now deprecated.\n>  You should set ``database=None`` if you are doing that. This will only warn\n>  if you actually load examples from the database while using ``seed``.\n>* The :attr:`~hypothesis.settings.derandomize` will behave the same way as\n>  ``seed``.\n>* Using ``--hypothesis-seed`` will disable use of the database.\n>* If a test used examples from the database, it will not suggest using a seed\n>  to reproduce it, because that won&#39;t work.\n\n>This work was funded by `Smarkets &lt;https://smarkets.com/&gt;`_.\n\n>-------------------\n\n\n>### 3.39.0\n\n>-------------------\n\n>This release adds a new health check that checks if the smallest &quot;natural&quot;\n>possible example of your test case is very large - this will tend to cause\n>Hypothesis to generate bad examples and be quite slow.\n\n>This work was funded by `Smarkets &lt;https://smarkets.com/&gt;`_.\n\n>-------------------\n\n\n>### 3.38.9\n\n>-------------------\n\n>This is a documentation release to improve the documentation of shrinking\n>behaviour for Hypothesis&#39;s strategies.\n\n>-------------------\n\n\n>### 3.38.8\n\n>-------------------\n\n>This release improves the performance of\n>:func:`~hypothesis.strategies.characters` when using ``blacklist_characters``\n>and :func:`~hypothesis.strategies.from_regex` when using negative character\n>classes.\n\n>The problems this fixes were found in the course of work funded by\n>`Smarkets &lt;https://smarkets.com/&gt;`_.\n\n>-------------------\n\n\n>### 3.38.7\n\n>-------------------\n\n>This is a patch release for :func:`~hypothesis.strategies.from_regex`, which\n>had a bug in handling of the :obj:`python:re.VERBOSE` flag (:issue:`992`).\n>Flags are now handled correctly when parsing regex.\n\n>-------------------\n\n\n>### 3.38.6\n\n>-------------------\n\n>This patch changes a few byte-string literals from double to single quotes,\n>thanks to an update in :pypi:`unify`.  There are no user-visible changes.\n\n>-------------------\n\n\n>### 3.38.5\n\n>-------------------\n\n>This fixes the repr of strategies using lambda that are defined inside\n>decorators to include the lambda source.\n\n>This would mostly have been visible when using the\n>:ref:`statistics &lt;statistics&gt;` functionality - lambdas used for e.g. filtering\n>would have shown up with a ``&lt;unknown&gt;`` as their body. This can still happen,\n>but it should happen less often now.\n\n>-------------------\n\n\n>### 3.38.4\n\n>-------------------\n\n>This release updates the reported :ref:`statistics &lt;statistics&gt;` so that they\n>show approximately what fraction of your test run time is spent in data\n>generation (as opposed to test execution).\n\n>This work was funded by `Smarkets &lt;https://smarkets.com/&gt;`_.\n\n>-------------------\n\n\n>### 3.38.3\n\n>-------------------\n\n>This is a documentation release, which ensures code examples are up to date\n>by running them as doctests in CI (:issue:`711`).\n\n>-------------------\n\n\n>### 3.38.2\n\n>-------------------\n\n>This release changes the behaviour of the :attr:`~hypothesis.settings.deadline`\n>setting when used with :func:`~hypothesis.strategies.data`: Time spent inside\n>calls to ``data.draw`` will no longer be counted towards the deadline time.\n\n>As a side effect of some refactoring required for this work, the way flaky\n>tests are handled has changed slightly. You are unlikely to see much difference\n>from this, but some error messages will have changed.\n\n>This work was funded by `Smarkets &lt;https://smarkets.com/&gt;`_.\n\n>-------------------\n\n\n>### 3.38.1\n\n>-------------------\n\n>This patch has a variety of non-user-visible refactorings, removing various\n>minor warts ranging from indirect imports to typos in comments.\n\n>-------------------\n\n\n>### 3.38.0\n\n>-------------------\n\n>This release overhauls :doc:`the health check system &lt;healthchecks&gt;`\n>in a variety of small ways.\n>It adds no new features, but is nevertheless a minor release because it changes\n>which tests are likely to fail health checks.\n\n>The most noticeable effect is that some tests that used to fail health checks\n>will now pass, and some that used to pass will fail. These should all be\n>improvements in accuracy. In particular:\n\n>* New failures will usually be because they are now taking into account things\n>  like use of :func:`~hypothesis.strategies.data` and\n>  :func:`~hypothesis.assume` inside the test body.\n>* New failures *may* also be because for some classes of example the way data\n>  generation performance was measured was artificially faster than real data\n>  generation (for most examples that are hitting performance health checks the\n>  opposite should be the case).\n>* Tests that used to fail health checks and now pass do so because the health\n>  check system used to run in a way that was subtly different than the main\n>  Hypothesis data generation and lacked some of its support for e.g. large\n>  examples.\n\n>If your data generation is especially slow, you may also see your tests get\n>somewhat faster, as there is no longer a separate health check phase. This will\n>be particularly noticeable when rerunning test failures.\n\n>This work was funded by `Smarkets &lt;https://smarkets.com/&gt;`_.\n\n>-------------------\n\n\n>### 3.37.0\n\n>-------------------\n\n>This is a deprecation release for some health check related features.\n\n>The following are now deprecated:\n\n>* Passing :attr:`~hypothesis.HealthCheck.exception_in_generation` to\n>  :attr:`~hypothesis.settings.suppress_health_check`. This no longer does\n>  anything even when passed -  All errors that occur during data generation\n>  will now be immediately reraised rather than going through the health check\n>  mechanism.\n>* Passing :attr:`~hypothesis.HealthCheck.random_module` to\n>  :attr:`~hypothesis.settings.suppress_health_check`. This hasn&#39;t done anything\n>  for a long time, but was never explicitly deprecated. Hypothesis always seeds\n>  the random module when running given tests, so this is no longer an error\n>  and suppressing it doesn&#39;t do anything.\n>* Passing non-:class:`~hypothesis.HealthCheck` values in\n>  :attr:`~hypothesis.settings.suppress_health_check`. This was previously\n>  allowed but never did anything useful.\n\n>In addition, passing a non-iterable value as :attr:`~hypothesis.settings.suppress_health_check`\n>will now raise an error immediately (it would never have worked correctly, but\n>it would previously have failed later). Some validation error messages have\n>also been updated.\n\n>This work was funded by `Smarkets &lt;https://smarkets.com/&gt;`_.\n\n>-------------------\n\n\n>### 3.36.1\n\n>-------------------\n\n>This is a yak shaving release, mostly concerned with our own tests.\n\n>While :func:`~python:inspect.getfullargspec` was documented as deprecated\n>in Python 3.5, it never actually emitted a warning.  Our code to silence\n>this (nonexistent) warning has therefore been removed.\n\n>We now run our tests with ``DeprecationWarning`` as an error, and made some\n>minor changes to our own tests as a result.  This required similar upstream\n>updates to :pypi:`coverage` and :pypi:`execnet` (a test-time dependency via\n>:pypi:`pytest-xdist`).\n\n>There is no user-visible change in Hypothesis itself, but we encourage you\n>to consider enabling deprecations as errors in your own tests.\n\n>-------------------\n\n\n>### 3.36.0\n\n>-------------------\n\n>This release adds a setting to the public API, and does some internal cleanup:\n\n>- The :attr:`~hypothesis.settings.derandomize` setting is now documented (:issue:`890`)\n>- Removed - and disallowed - all &#39;bare excepts&#39; in Hypothesis (:issue:`953`)\n>- Documented the :attr:`~hypothesis.settings.strict` setting as deprecated, and\n>  updated the build so our docs always match deprecations in the code.\n\n>-------------------\n\n\n>### 3.35.0\n\n>-------------------\n\n>This minor release supports constraining :func:`~hypothesis.strategies.uuids`\n>to generate a particular version of :class:`~python:uuid.UUID` (:issue:`721`).\n\n>Thanks to Dion Misic for this feature.\n\n>-------------------\n\n\n>### 3.34.1\n\n>-------------------\n\n>This patch updates the documentation to suggest\n>:func:`builds(callable) &lt;hypothesis.strategies.builds&gt;` instead of\n>:func:`just(callable()) &lt;hypothesis.strategies.just&gt;`.\n\n>-------------------\n\n\n>### 3.34.0\n\n>-------------------\n\n>Hypothesis now emits deprecation warnings if you apply\n>:func:`given &lt;hypothesis.given&gt;` more than once to a target.\n\n>Applying :func:`given &lt;hypothesis.given&gt;` repeatedly wraps the target multiple\n>times. Each wrapper will search the space of of possible parameters separately.\n>This is equivalent but will be much more inefficient than doing it with a\n>single call to :func:`given &lt;hypothesis.given&gt;`.\n\n>For example, instead of\n>``given(booleans()) given(integers())``, you could write\n>``given(booleans(), integers())``\n\n>-------------------\n\n\n>### 3.33.1\n\n>-------------------\n\n>This is a bugfix release:\n\n>- :func:`~hypothesis.strategies.builds` would try to infer a strategy for\n>  required positional arguments of the target from type hints, even if they\n>  had been given to :func:`~hypothesis.strategies.builds` as positional\n>  arguments (:issue:`946`).  Now it only infers missing required arguments.\n>- An internal introspection function wrongly reported ``self`` as a required\n>  argument for bound methods, which might also have affected\n>  :func:`~hypothesis.strategies.builds`.  Now it knows better.\n\n>-------------------\n\n\n>### 3.33.0\n\n>-------------------\n\n>This release supports strategy inference for more field types in Django\n>:func:`~hypothesis.extra.django.models` - you can now omit an argument for\n>Date, Time, Duration, Slug, IP Address, and UUID fields.  (:issue:`642`)\n\n>Strategy generation for fields with grouped choices now selects choices from\n>each group, instead of selecting from the group names.\n\n>-------------------\n\n\n>### 3.32.2\n\n>-------------------\n\n>This patch removes the ``mergedb`` tool, introduced in Hypothesis 1.7.1\n>on an experimental basis.  It has never actually worked, and the new\n>:doc:`Hypothesis example database &lt;database&gt;` is designed to make such a\n>tool unnecessary.\n\n>-------------------\n\n\n>### 3.32.1\n\n>-------------------\n\n>This patch has two improvements for strategies based on enumerations.\n\n>- :func:`~hypothesis.strategies.from_type` now handles enumerations correctly,\n>  delegating to :func:`~hypothesis.strategies.sampled_from`.  Previously it\n>  noted that ``Enum.__init__`` has no required arguments and therefore delegated\n>  to :func:`~hypothesis.strategies.builds`, which would subsequently fail.\n>- When sampling from an :class:`python:enum.Flag`, we also generate combinations\n>  of members. Eg for ``Flag(&#39;Permissions&#39;, &#39;READ, WRITE, EXECUTE&#39;)`` we can now\n>  generate, ``Permissions.READ``, ``Permissions.READ|WRITE``, and so on.\n\n>-------------------\n\n\n>### 3.32.0\n\n>-------------------\n\n>This changes the default value of\n>:attr:`use_coverage=True &lt;hypothesis.settings.use_coverage&gt;` to True when\n>running on pypy (it was already True on CPython).\n\n>It was previously set to False because we expected it to be too slow, but\n>recent benchmarking shows that actually performance of the feature on pypy is\n>fairly acceptable - sometimes it&#39;s slower than on CPython, sometimes it&#39;s\n>faster, but it&#39;s generally within a factor of two either way.\n\n>-------------------\n\n\n>### 3.31.6\n\n>-------------------\n\n>This patch improves the quality of strategies inferred from Numpy dtypes:\n\n>* Integer dtypes generated examples with the upper half of their (non-sign) bits\n>  set to zero.  The inferred strategies can now produce any representable integer.\n>* Fixed-width unicode- and byte-string dtypes now cap the internal example\n>  length, which should improve example and shrink quality.\n>* Numpy arrays can only store fixed-size strings internally, and allow shorter\n>  strings by right-padding them with null bytes.  Inferred string strategies\n>  no longer generate such values, as they can never be retrieved from an array.\n>  This improves shrinking performance by skipping useless values.\n\n>This has already been useful in Hypothesis - we found an overflow bug in our\n>Pandas support, and as a result :func:`~hypothesis.extra.pandas.indexes` and\n>:func:`~hypothesis.extra.pandas.range_indexes` now check that ``min_size``\n>and ``max_size`` are at least zero.\n\n>-------------------\n\n\n>### 3.31.5\n\n>-------------------\n\n>This release fixes a performance problem in tests where\n>:attr:`~hypothesis.settings.use_coverage` is set to True.\n\n>Tests experience a slow-down proportionate to the amount of code they cover.\n>This is still the case, but the factor is now low enough that it should be\n>unnoticeable. Previously it was large and became much larger in 3.28.4.\n\n>-------------------\n\n\n>### 3.31.4\n\n>-------------------\n\n>:func:`~hypothesis.strategies.from_type` failed with a very confusing error\n>if passed a :func:`~python:typing.NewType` (:issue:`901`).  These psudeo-types\n>are now unwrapped correctly, and strategy inference works as expected.\n\n>-------------------\n\n\n>### 3.31.3\n\n>-------------------\n\n>This release makes some small optimisations to our use of coverage that should\n>reduce constant per-example overhead. This is probably only noticeable on\n>examples where the test itself is quite fast. On no-op tests that don&#39;t test\n>anything you may see up to a fourfold speed increase (which is still\n>significantly slower than without coverage). On more realistic tests the speed\n>up is likely to be less than that.\n\n>-------------------\n\n\n>### 3.31.2\n\n>-------------------\n\n>This release fixes some formatting and small typos/grammar issues in the\n>documentation, specifically the page docs/settings.rst, and the inline docs\n>for the various settings.\n\n>-------------------\n\n\n>### 3.31.1\n\n>-------------------\n\n>This release improves the handling of deadlines so that they act better with\n>the shrinking process. This fixes :issue:`892`.\n\n>This involves two changes:\n\n>1. The deadline is raised during the initial generation and shrinking, and then\n>   lowered to the set value for final replay. This restricts our attention to\n>   examples which exceed the deadline by a more significant margin, which\n>   increases their reliability.\n>2. When despite the above a test still becomes flaky because it is\n>   significantly faster on rerun than it was on its first run, the error\n>   message is now more explicit about the nature of this problem, and includes\n>   both the initial test run time and the new test run time.\n\n>In addition, this release also clarifies the documentation of the deadline\n>setting slightly to be more explicit about where it applies.\n\n>This work was funded by `Smarkets &lt;https://smarkets.com/&gt;`_.\n\n>-------------------\n\n\n>### 3.31.0\n\n>-------------------\n\n>This release blocks installation of Hypothesis on Python 3.3, which\n>:PEP:`reached its end of life date on 2017-09-29 &lt;398&gt;`.\n\n>This should not be of interest to anyone but downstream maintainers -\n>if you are affected, migrate to a secure version of Python as soon as\n>possible or at least seek commercial support.\n\n>-------------------\n\n\n>### 3.30.4\n\n>-------------------\n\n>This release makes several changes:\n\n>1. It significantly improves Hypothesis&#39;s ability to use coverage information\n>   to find interesting examples.\n>2. It reduces the default :attr:`~hypothesis.settings.max_examples` setting from 200 to 100. This takes\n>   advantage of the improved algorithm meaning fewer examples are typically\n>   needed to get the same testing and is sufficiently better at covering\n>   interesting behaviour, and offsets some of the performance problems of\n>   running under coverage.\n>3. Hypothesis will always try to start its testing with an example that is near\n>   minimized.\n\n>The new algorithm for 1 also makes some changes to Hypothesis&#39;s low level data\n>generation which apply even with coverage turned off. They generally reduce the\n>total amount of data generated, which should improve test performance somewhat.\n>Between this and 3 you should see a noticeable reduction in test runtime (how\n>much so depends on your tests and how much example size affects their\n>performance. On our benchmarks, where data generation dominates, we saw up to\n>a factor of two performance improvement, but it&#39;s unlikely to be that large.\n\n>-------------------\n\n\n>### 3.30.3\n\n>-------------------\n\n>This release fixes some formatting and small typos/grammar issues in the\n>documentation, specifically the page docs/details.rst, and some inline\n>docs linked from there.\n\n>-------------------\n\n\n>### 3.30.2\n\n>-------------------\n\n>This release changes Hypothesis&#39;s caching approach for functions in\n>``hypothesis.strategies``. Previously it would have cached extremely\n>aggressively and cache entries would never be evicted. Now it adopts a\n>least-frequently used, least recently used key invalidation policy, and is\n>somewhat more conservative about which strategies it caches.\n\n>Workloads which create strategies based on dynamic values, e.g. by using\n>:ref:`flatmap &lt;flatmap&gt;` or :func:`~hypothesis.strategies.composite`,\n>will use significantly less memory.\n\n>-------------------\n\n\n>### 3.30.1\n\n>-------------------\n\n>This release fixes a bug where when running with\n>:attr:`use_coverage=True &lt;hypothesis.settings.use_coverage&gt;` inside an\n>existing running instance of coverage, Hypothesis would frequently put files\n>that the coveragerc excluded in the report for the enclosing coverage.\n\n>-------------------\n\n\n>### 3.30.0\n\n>-------------------\n\n>This release introduces two new features:\n\n>* When a test fails, either with a health check failure or a falsifying example,\n>  Hypothesis will print out a seed that led to that failure, if the test is not\n>  already running with a fixed seed. You can then recreate that failure using either\n>  the :func:`seed &lt;hypothesis.seed&gt;` decorator or (if you are running pytest) with ``--hypothesis-seed``.\n>* :pypi:`pytest` users can specify a seed to use for :func:`given &lt;hypothesis.given&gt;` based tests by passing\n>  the ``--hypothesis-seed`` command line argument.\n\n>This work was funded by `Smarkets &lt;https://smarkets.com/&gt;`_.\n\n>-------------------\n\n\n>### 3.29.0\n\n>-------------------\n\n>This release makes Hypothesis coverage aware. Hypothesis now runs all test\n>bodies under coverage, and uses this information to guide its testing.\n\n>The :attr:`~hypothesis.settings.use_coverage` setting can be used to disable\n>this behaviour if you want to test code that is sensitive to coverage being\n>enabled (either because of performance or interaction with the trace function).\n\n>The main benefits of this feature are:\n\n>* Hypothesis now observes when examples it discovers cover particular lines\n>  or branches and stores them in the database for later.\n>* Hypothesis will make some use of this information to guide its exploration of\n>  the search space and improve the examples it finds (this is currently used\n>  only very lightly and will likely improve significantly in future releases).\n\n>This also has the following side-effects:\n\n>* Hypothesis now has an install time dependency on the :pypi:`coverage` package.\n>* Tests that are already running Hypothesis under coverage will likely get\n>  faster.\n>* Tests that are not running under coverage now run their test bodies under\n>  coverage by default.\n\n\n>This feature is only partially supported under pypy. It is significantly slower\n>than on CPython and is turned off by default as a result, but it should still\n>work correctly if you want to use it.\n\n>-------------------\n\n\n>### 3.28.3\n\n>-------------------\n\n>This release is an internal change that affects how Hypothesis handles\n>calculating certain properties of strategies.\n\n>The primary effect of this is that it fixes a bug where use of\n>:func:`~hypothesis.deferred` could sometimes trigger an internal assertion\n>error. However the fix for this bug involved some moderately deep changes to\n>how Hypothesis handles certain constructs so you may notice some additional\n>knock-on effects.\n\n>In particular the way Hypothesis handles drawing data from strategies that\n>cannot generate any values has changed to bail out sooner than it previously\n>did. This may speed up certain tests, but it is unlikely to make much of a\n>difference in practice for tests that were not already failing with\n>Unsatisfiable.\n\n>-------------------\n\n\n>### 3.28.2\n\n>-------------------\n\n>This is a patch release that fixes a bug in the :mod:`hypothesis.extra.pandas`\n>documentation where it incorrectly referred to :func:`~hypothesis.extra.pandas.column`\n>instead of :func:`~hypothesis.extra.pandas.columns`.\n\n>-------------------\n\n\n>### 3.28.1\n\n>-------------------\n\n>This is a refactoring release. It moves a number of internal uses\n>of :func:`~python:collections.namedtuple` over to using attrs based classes, and removes a couple\n>of internal namedtuple classes that were no longer in use.\n\n>It should have no user visible impact.\n\n>-------------------\n\n\n>### 3.28.0\n\n>-------------------\n\n>This release adds support for testing :pypi:`pandas` via the :ref:`hypothesis.extra.pandas &lt;hypothesis-pandas&gt;`\n>module.\n\n>It also adds a dependency on :pypi:`attrs`.\n\n>This work was funded by `Stripe &lt;https://stripe.com/&gt;`_.\n\n>-------------------\n\n\n>### 3.27.1\n\n>-------------------\n\n>This release fixes some formatting and broken cross-references in the\n>documentation, which includes editing docstrings - and thus a patch release.\n\n>-------------------\n\n\n>### 3.27.0\n\n>-------------------\n\n>This release introduces a :attr:`~hypothesis.settings.deadline`\n>setting to Hypothesis.\n\n>When set this turns slow tests into errors. By default it is unset but will\n>warn if you exceed 200ms, which will become the default value in a future\n>release.\n\n>This work was funded by `Smarkets &lt;https://smarkets.com/&gt;`_.\n\n>-------------------\n\n\n>### 3.26.0\n\n>-------------------\n\n>Hypothesis now emits deprecation warnings if you are using the legacy\n>SQLite example database format, or the tool for merging them. These were\n>already documented as deprecated, so this doesn&#39;t change their deprecation\n>status, only that we warn about it.\n\n>-------------------\n\n\n>### 3.25.1\n\n>-------------------\n\n>This release fixes a bug with generating :doc:`numpy datetime and timedelta types &lt;numpy:reference/arrays.datetime&gt;`:\n>When inferring the strategy from the dtype, datetime and timedelta dtypes with\n>sub-second precision would always produce examples with one second resolution.\n>Inferring a strategy from a time dtype will now always produce example with the\n>same precision.\n\n>-------------------\n\n\n>### 3.25.0\n\n>-------------------\n\n>This release changes how Hypothesis shrinks and replays examples to take into\n>account that it can encounter new bugs while shrinking the bug it originally\n>found. Previously it would end up replacing the originally found bug with the\n>new bug and show you only that one. Now it is (often) able to recognise when\n>two bugs are distinct and when it finds more than one will show both.\n\n>-------------------\n\n\n>### 3.24.2\n\n>-------------------\n\n>This release removes the (purely internal and no longer useful)\n>``strategy_test_suite`` function and the corresponding strategytests module.\n\n>-------------------\n\n\n>### 3.24.1\n\n>-------------------\n\n>This release improves the reduction of examples involving floating point\n>numbers to produce more human readable examples.\n\n>It also has some general purpose changes to the way the minimizer works\n>internally, which may see some improvement in quality and slow down of test\n>case reduction in cases that have nothing to do with floating point numbers.\n\n>-------------------\n\n\n>### 3.24.0\n\n>-------------------\n\n>Hypothesis now emits deprecation warnings if you use ``some_strategy.example()`` inside a\n>test function or strategy definition (this was never intended to be supported,\n>but is sufficiently widespread that it warrants a deprecation path).\n\n>-------------------\n\n\n>### 3.23.3\n\n>-------------------\n\n>This is a bugfix release for :func:`~hypothesis.strategies.decimals`\n>with the ``places`` argument.\n\n>- No longer fails health checks (:issue:`725`, due to internal filtering)\n>- Specifying a ``min_value`` and ``max_value`` without any decimals with\n>  ``places`` places between them gives a more useful error message.\n>- Works for any valid arguments, regardless of the decimal precision context.\n\n>-------------------\n\n\n>### 3.23.2\n\n>-------------------\n\n>This is a small refactoring release that removes a now-unused parameter to an\n>internal API. It shouldn&#39;t have any user visible effect.\n\n>-------------------\n\n\n>### 3.23.1\n\n>-------------------\n\n>Hypothesis no longer propagates the dynamic scope of settings into strategy\n>definitions.\n\n>This release is a small change to something that was never part of the public\n>API and you will almost certainly not notice any effect unless you&#39;re doing\n>something surprising, but for example the following code will now give a\n>different answer in some circumstances:\n\n>.. code-block:: python\n\n>    import hypothesis.strategies as st\n>    from hypothesis import settings\n\n>    CURRENT_SETTINGS = st.builds(lambda: settings.default)\n\n>(We don&#39;t actually encourage you writing code like this)\n\n>Previously this would have generated the settings that were in effect at the\n>point of definition of ``CURRENT_SETTINGS``. Now it will generate the settings\n>that are used for the current test.\n\n>It is very unlikely to be significant enough to be visible, but you may also\n>notice a small performance improvement.\n\n>-------------------\n\n\n>### 3.23.0\n\n>-------------------\n\n>This release adds a ``unique`` argument to :func:`~hypothesis.extra.numpy.arrays`\n>which behaves the same ways as the corresponding one for\n>:func:`~hypothesis.strategies.lists`, requiring all of the elements in the\n>generated array to be distinct.\n\n>-------------------\n\n\n>### 3.22.2\n\n>-------------------\n\n>This release fixes an issue where Hypothesis would raise a ``TypeError`` when\n>using the datetime-related strategies if running with ``PYTHONOPTIMIZE=2``.\n>This bug was introduced in v3.20.0.  (See :issue:`822`)\n\n>-------------------\n\n\n>### 3.22.1\n\n>-------------------\n\n>Hypothesis now transparently handles problems with an internal unicode cache,\n>including file truncation or read-only filesystems (:issue:`767`).\n>Thanks to Sam Hames for the patch.\n\n>-------------------\n\n\n>### 3.22.0\n\n>-------------------\n\n>This release provides what should be a substantial performance improvement to\n>numpy arrays generated using :ref:`provided numpy support &lt;hypothesis-numpy&gt;`,\n>and adds a new ``fill_value`` argument to :func:`~hypothesis.extra.numpy.arrays`\n>to control this behaviour.\n\n>This work was funded by `Stripe &lt;https://stripe.com/&gt;`_.\n\n>-------------------\n\n\n>### 3.21.3\n\n>-------------------\n\n>This release fixes some extremely specific circumstances that probably have\n>never occurred in the wild where users of\n>:func:`~hypothesis.searchstrategy.deferred` might have seen a RuntimeError from\n>too much recursion, usually in cases where no valid example could have been\n>generated anyway.\n\n>-------------------\n\n\n>### 3.21.2\n\n>-------------------\n\n>This release fixes some minor bugs in argument validation:\n\n>    * :ref:`hypothesis.extra.numpy &lt;hypothesis-numpy&gt;` dtype strategies would raise an internal error\n>      instead of an InvalidArgument exception when passed an invalid\n>      endianness specification.\n>    * :func:`~hypothesis.strategies.fractions` would raise an internal error instead of an InvalidArgument\n>      if passed ``float(&quot;nan&quot;)`` as one of its bounds.\n>    * The error message for passing ``float(&quot;nan&quot;)`` as a bound to various\n>      strategies has been improved.\n>    * Various bound arguments will now raise InvalidArgument in cases where\n>      they would previously have raised an internal TypeError or\n>      ValueError from the relevant conversion function.\n>    * :func:`~hypothesis.strategies.streaming` would not have emitted a\n>      deprecation warning when called with an invalid argument.\n\n>-------------------\n\n\n>### 3.21.1\n\n>-------------------\n\n>This release fixes a bug where test failures that were the result of\n>an :func:`example &lt;hypothesis.example&gt;` would print an extra stack trace before re-raising the\n>exception.\n\n>-------------------\n\n\n>### 3.21.0\n\n>-------------------\n\n>This release deprecates Hypothesis&#39;s strict mode, which turned Hypothesis&#39;s\n>deprecation warnings into errors. Similar functionality can be achieved\n>by using :func:`simplefilter(&#39;error&#39;, HypothesisDeprecationWarning) &lt;python:warnings.simplefilter&gt;`.\n\n>-------------------\n\n\n>### 3.20.0\n\n>-------------------\n\n>This release renames the relevant arguments on the\n>:func:`~hypothesis.strategies.datetimes`, :func:`~hypothesis.strategies.dates`,\n>:func:`~hypothesis.strategies.times`, and :func:`~hypothesis.strategies.timedeltas`\n>strategies to ``min_value`` and ``max_value``, to make them consistent with the\n>other strategies in the module.\n\n>The old argument names are still supported but will emit a deprecation warning\n>when used explicitly as keyword arguments. Arguments passed positionally will\n>go to the new argument names and are not deprecated.\n\n>-------------------\n\n\n>### 3.19.3\n\n>-------------------\n\n>This release provides a major overhaul to the internals of how Hypothesis\n>handles shrinking.\n\n>This should mostly be visible in terms of getting better examples for tests\n>which make heavy use of :func:`~hypothesis.strategies.composite`,\n>:func:`~hypothesis.strategies.data` or :ref:`flatmap &lt;flatmap&gt;` where the data\n>drawn depends a lot on previous choices, especially where size parameters are\n>affected. Previously Hypothesis would have struggled to reliably produce\n>good examples here. Now it should do much better. Performance should also be\n>better for examples with a non-zero ``min_size``.\n\n>You may see slight changes to example generation (e.g. improved example\n>diversity) as a result of related changes to internals, but they are unlikely\n>to be significant enough to notice.\n\n>-------------------\n\n\n>### 3.19.2\n\n>-------------------\n\n>This release fixes two bugs in :mod:`hypothesis.extra.numpy`:\n\n>* :func:`~hypothesis.extra.numpy.unicode_string_dtypes` didn&#39;t work at all due\n>  to an incorrect dtype specifier. Now it does.\n>* Various impossible conditions would have been accepted but would error when\n>  they fail to produced any example. Now they raise an explicit InvalidArgument\n>  error.\n\n>-------------------\n\n\n>### 3.19.1\n\n>-------------------\n\n>This is a bugfix release for :issue:`739`, where bounds for\n>:func:`~hypothesis.strategies.fractions` or floating-point\n>:func:`~hypothesis.strategies.decimals` were not properly converted to\n>integers before passing them to the integers strategy.\n>This excluded some values that should have been possible, and could\n>trigger internal errors if the bounds lay between adjacent integers.\n\n>You can now bound :func:`~hypothesis.strategies.fractions` with two\n>arbitrarily close fractions.\n\n>It is now an explicit error to supply a min_value, max_value, and\n>max_denominator to :func:`~hypothesis.strategies.fractions` where the value\n>bounds do not include a fraction with denominator at most max_denominator.\n\n>-------------------\n\n\n>### 3.19.0\n\n>-------------------\n\n>This release adds the :func:`~hypothesis.strategies.from_regex` strategy,\n>which generates strings that contain a match of a regular expression.\n\n>Thanks to Maxim Kulkin for creating the\n>`hypothesis-regex &lt;https://github.com/maximkulkin/hypothesis-regex&gt;`_\n>package and then helping to upstream it! (:issue:`662`)\n\n>-------------------\n\n\n>### 3.18.5\n\n>-------------------\n\n>This is a bugfix release for :func:`~hypothesis.strategies.integers`.\n>Previously the strategy would hit an internal assertion if passed non-integer\n>bounds for ``min_value`` and ``max_value`` that had no integers between them.\n>The strategy now raises InvalidArgument instead.\n\n>-------------------\n\n\n>### 3.18.4\n\n>-------------------\n\n>Release to fix a bug where mocks can be used as test runners under certain\n>conditions. Specifically, if a mock is injected into a test via pytest\n>fixtures or patch decorators, and that mock is the first argument in the\n>list, hypothesis will think it represents self and turns the mock\n>into a test runner.  If this happens, the affected test always passes\n>because the mock is executed instead of the test body. Sometimes, it\n>will also fail health checks.\n\n>Fixes :issue:`491` and a section of :issue:`198`.\n>Thanks to Ben Peterson for this bug fix.\n\n>-------------------\n\n\n>### 3.18.3\n\n>-------------------\n\n>This release should improve the performance of some tests which\n>experienced a slow down as a result of the 3.13.0 release.\n\n>Tests most likely to benefit from this are ones that make extensive\n>use of ``min_size`` parameters, but others may see some improvement\n>as well.\n\n>-------------------\n\n\n>### 3.18.2\n\n>-------------------\n\n>This release fixes a bug introduced in 3.18.0. If the arguments\n>``whitelist_characters`` and ``blacklist_characters`` to\n>:func:`~hypothesis.strategies.characters` both contained elements, then an\n>``InvalidArgument`` exception would be raised.\n\n>Thanks to Zac Hatfield-Dodds for reporting and fixing this.\n\n>-------------------\n\n\n>### 3.18.1\n\n>-------------------\n\n>This is a bug fix release to fix :issue:`780`, where\n>:func:`~hypothesis.strategies.sets` and similar would trigger health check\n>errors if their element strategy could only produce one element (e.g.\n>if it was :func:`~hypothesis.strategies.just`).\n\n>-------------------\n\n\n>### 3.18.0\n\n>-------------------\n\n>This is a feature release:\n\n>* :func:`~hypothesis.strategies.characters` now accepts\n>  ``whitelist_characters``, particular characters which will be added to those\n>  it produces. (:issue:`668`)\n>* A bug fix for the internal function ``_union_interval_lists()``, and a rename\n>  to ``_union_intervals()``. It now correctly handles all cases where intervals\n>  overlap, and it always returns the result as a tuple for tuples.\n\n>Thanks to Alex Willmer for these.\n\n>-------------------\n\n\n>### 3.17.0\n\n>-------------------\n\n>This release documents :ref:`the previously undocumented phases feature &lt;phases&gt;`,\n>making it part of the public API. It also updates how the example\n>database is used. Principally:\n\n>* A ``Phases.reuse`` argument will now correctly control whether examples\n>  from the database are run (it previously did exactly the wrong thing and\n>  controlled whether examples would be *saved*).\n>* Hypothesis will no longer try to rerun *all* previously failing examples.\n>  Instead it will replay the smallest previously failing example and a\n>  selection of other examples that are likely to trigger any other bugs that\n>  will found. This prevents a previous failure from dominating your tests\n>  unnecessarily.\n>* As a result of the previous change, Hypothesis will be slower about clearing\n>  out old examples from the database that are no longer failing (because it can\n>  only clear out ones that it actually runs).\n\n>-------------------\n\n\n>### 3.16.1\n\n>-------------------\n\n>This release makes an implementation change to how Hypothesis handles certain\n>internal constructs.\n\n>The main effect you should see is improvement to the behaviour and performance\n>of collection types, especially ones with a ``min_size`` parameter. Many cases\n>that would previously fail due to being unable to generate enough valid\n>examples will now succeed, and other cases should run slightly faster.\n\n>-------------------\n\n\n>### 3.16.0\n\n>-------------------\n\n>This release introduces a deprecation of the timeout feature. This results in\n>the following changes:\n\n>* Creating a settings object with an explicit timeout will emit a deprecation\n>  warning.\n>* If your test stops because it hits the timeout (and has not found a bug) then\n>  it will emit a deprecation warning.\n>* There is a new value ``unlimited`` which you can import from hypothesis.\n>  ``settings(timeout=unlimited)`` will *not* cause a deprecation warning.\n>* There is a new health check, ``hung_test``, which will trigger after a test\n>  has been running for five minutes if it is not suppressed.\n\n>-------------------\n\n\n>### 3.15.0\n\n>-------------------\n\n>This release deprecates two strategies, :func:`~hypothesis.strategies.choices` and\n>:func:`~hypothesis.strategies.streaming`.\n\n>Both of these are somewhat confusing to use and are entirely redundant since the\n>introduction of the :func:`~hypothesis.strategies.data` strategy for interactive\n>drawing in tests, and their use should be replaced with direct use of\n>:func:`~hypothesis.strategies.data` instead.\n\n>-------------------\n\n\n>### 3.14.2\n\n>-------------------\n\n>This fixes a bug where Hypothesis would not work correctly on Python 2.7 if you\n>had the :mod:`python:typing` module :pypi:`backport &lt;typing&gt;` installed.\n\n>-------------------\n\n\n>### 3.14.1\n\n>-------------------\n\n>This raises the maximum depth at which Hypothesis starts cutting off data\n>generation to a more reasonable value which it is harder to hit by accident.\n\n>This resolves (:issue:`751`), in which some examples which previously worked\n>would start timing out, but it will also likely improve the data generation\n>quality for complex data types.\n\n>-------------------\n\n\n>### 3.14.0\n\n>-------------------\n\n>Hypothesis now understands inline type annotations (:issue:`293`):\n\n>- If the target of :func:`~hypothesis.strategies.builds` has type annotations,\n>  a default strategy for missing required arguments is selected based on the\n>  type.  Type-based strategy selection will only override a default if you\n>  pass :const:`hypothesis.infer` as a keyword argument.\n\n>- If :func:`given &lt;hypothesis.given&gt;` wraps a function with type annotations,\n>  you can pass :const:`~hypothesis.infer` as a keyword argument and the\n>  appropriate strategy will be substituted.\n\n>- You can check what strategy will be inferred for a type with the new\n>  :func:`~hypothesis.strategies.from_type` function.\n\n>- :func:`~hypothesis.strategies.register_type_strategy` teaches Hypothesis\n>  which strategy to infer for custom or unknown types.  You can provide a\n>  strategy, or for more complex cases a function which takes the type and\n>  returns a strategy.\n\n>-------------------\n\n\n>### 3.13.1\n\n>-------------------\n\n>This is a bug fix release for :issue:`514` - Hypothesis would continue running\n>examples after a :class:`~python:unittest.SkipTest` exception was raised,\n>including printing a falsifying example.  Skip exceptions from the standard\n>:mod:`python:unittest` module, and ``pytest``, ``nose``, or ``unittest2``\n>modules now abort the test immediately without printing output.\n\n>-------------------\n\n\n>### 3.13.0\n\n>-------------------\n\n>This release has two major aspects to it: The first is the introduction of\n>:func:`~hypothesis.strategies.deferred`, which allows more natural definition\n>of recursive (including mutually recursive) strategies.\n\n>The second is a number of engine changes designed to support this sort of\n>strategy better. These should have a knock-on effect of also improving the\n>performance of any existing strategies that currently generate a lot of data\n>or involve heavy nesting by reducing their typical example size.\n\n>-------------------\n\n\n>### 3.12.0\n\n>-------------------\n\n>This release makes some major internal changes to how Hypothesis represents\n>data internally, as a prelude to some major engine changes that should improve\n>data quality. There are no API changes, but it&#39;s a significant enough internal\n>change that a minor version bump seemed warranted.\n\n>User facing impact should be fairly mild, but includes:\n\n>* All existing examples in the database will probably be invalidated. Hypothesis\n>  handles this automatically, so you don&#39;t need to do anything, but if you see\n>  all your examples disappear that&#39;s why.\n>* Almost all data distributions have changed significantly. Possibly for the better,\n>  possibly for the worse. This may result in new bugs being found, but it may\n>  also result in Hypothesis being unable to find bugs it previously did.\n>* Data generation may be somewhat faster if your existing bottleneck was in\n>  draw_bytes (which is often the case for large examples).\n>* Shrinking will probably be slower, possibly significantly.\n\n>If you notice any effects you consider to be a significant regression, please\n>open an issue about them.\n\n>-------------------\n\n\n\n\n\n\n*Got merge conflicts? Close this PR and delete the branch. I'll create a new PR for you.*\n\nHappy merging! 🤖\n","created_at":"2018-02-23T13:31:08Z","updated_at":"2018-02-25T04:01:14Z","closed_at":"2018-02-25T04:01:14Z","merged_at":null,"merge_commit_sha":"bcbb99bf71c1fe976e2e302449ca1333740442ff","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/kragniz/python-etcd3/pulls/354/commits","review_comments_url":"https://api.github.com/repos/kragniz/python-etcd3/pulls/354/comments","review_comment_url":"https://api.github.com/repos/kragniz/python-etcd3/pulls/comments{/number}","comments_url":"https://api.github.com/repos/kragniz/python-etcd3/issues/354/comments","statuses_url":"https://api.github.com/repos/kragniz/python-etcd3/statuses/c3e4d82d7c1ed04e65514562d429351e2010d830","head":{"label":"kragniz:pyup-update-hypothesis-3.11.6-to-3.45.3","ref":"pyup-update-hypothesis-3.11.6-to-3.45.3","sha":"c3e4d82d7c1ed04e65514562d429351e2010d830","user":{"login":"kragniz","id":735008,"avatar_url":"https://avatars2.githubusercontent.com/u/735008?v=4","gravatar_id":"","url":"https://api.github.com/users/kragniz","html_url":"https://github.com/kragniz","followers_url":"https://api.github.com/users/kragniz/followers","following_url":"https://api.github.com/users/kragniz/following{/other_user}","gists_url":"https://api.github.com/users/kragniz/gists{/gist_id}","starred_url":"https://api.github.com/users/kragniz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kragniz/subscriptions","organizations_url":"https://api.github.com/users/kragniz/orgs","repos_url":"https://api.github.com/users/kragniz/repos","events_url":"https://api.github.com/users/kragniz/events{/privacy}","received_events_url":"https://api.github.com/users/kragniz/received_events","type":"User","site_admin":false},"repo":{"id":69691394,"name":"python-etcd3","full_name":"kragniz/python-etcd3","owner":{"login":"kragniz","id":735008,"avatar_url":"https://avatars2.githubusercontent.com/u/735008?v=4","gravatar_id":"","url":"https://api.github.com/users/kragniz","html_url":"https://github.com/kragniz","followers_url":"https://api.github.com/users/kragniz/followers","following_url":"https://api.github.com/users/kragniz/following{/other_user}","gists_url":"https://api.github.com/users/kragniz/gists{/gist_id}","starred_url":"https://api.github.com/users/kragniz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kragniz/subscriptions","organizations_url":"https://api.github.com/users/kragniz/orgs","repos_url":"https://api.github.com/users/kragniz/repos","events_url":"https://api.github.com/users/kragniz/events{/privacy}","received_events_url":"https://api.github.com/users/kragniz/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/kragniz/python-etcd3","description":"Python client for the etcd API v3","fork":false,"url":"https://api.github.com/repos/kragniz/python-etcd3","forks_url":"https://api.github.com/repos/kragniz/python-etcd3/forks","keys_url":"https://api.github.com/repos/kragniz/python-etcd3/keys{/key_id}","collaborators_url":"https://api.github.com/repos/kragniz/python-etcd3/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/kragniz/python-etcd3/teams","hooks_url":"https://api.github.com/repos/kragniz/python-etcd3/hooks","issue_events_url":"https://api.github.com/repos/kragniz/python-etcd3/issues/events{/number}","events_url":"https://api.github.com/repos/kragniz/python-etcd3/events","assignees_url":"https://api.github.com/repos/kragniz/python-etcd3/assignees{/user}","branches_url":"https://api.github.com/repos/kragniz/python-etcd3/branches{/branch}","tags_url":"https://api.github.com/repos/kragniz/python-etcd3/tags","blobs_url":"https://api.github.com/repos/kragniz/python-etcd3/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/kragniz/python-etcd3/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/kragniz/python-etcd3/git/refs{/sha}","trees_url":"https://api.github.com/repos/kragniz/python-etcd3/git/trees{/sha}","statuses_url":"https://api.github.com/repos/kragniz/python-etcd3/statuses/{sha}","languages_url":"https://api.github.com/repos/kragniz/python-etcd3/languages","stargazers_url":"https://api.github.com/repos/kragniz/python-etcd3/stargazers","contributors_url":"https://api.github.com/repos/kragniz/python-etcd3/contributors","subscribers_url":"https://api.github.com/repos/kragniz/python-etcd3/subscribers","subscription_url":"https://api.github.com/repos/kragniz/python-etcd3/subscription","commits_url":"https://api.github.com/repos/kragniz/python-etcd3/commits{/sha}","git_commits_url":"https://api.github.com/repos/kragniz/python-etcd3/git/commits{/sha}","comments_url":"https://api.github.com/repos/kragniz/python-etcd3/comments{/number}","issue_comment_url":"https://api.github.com/repos/kragniz/python-etcd3/issues/comments{/number}","contents_url":"https://api.github.com/repos/kragniz/python-etcd3/contents/{+path}","compare_url":"https://api.github.com/repos/kragniz/python-etcd3/compare/{base}...{head}","merges_url":"https://api.github.com/repos/kragniz/python-etcd3/merges","archive_url":"https://api.github.com/repos/kragniz/python-etcd3/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/kragniz/python-etcd3/downloads","issues_url":"https://api.github.com/repos/kragniz/python-etcd3/issues{/number}","pulls_url":"https://api.github.com/repos/kragniz/python-etcd3/pulls{/number}","milestones_url":"https://api.github.com/repos/kragniz/python-etcd3/milestones{/number}","notifications_url":"https://api.github.com/repos/kragniz/python-etcd3/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/kragniz/python-etcd3/labels{/name}","releases_url":"https://api.github.com/repos/kragniz/python-etcd3/releases{/id}","deployments_url":"https://api.github.com/repos/kragniz/python-etcd3/deployments","created_at":"2016-09-30T18:26:16Z","updated_at":"2018-02-21T12:55:14Z","pushed_at":"2018-02-25T04:01:11Z","git_url":"git://github.com/kragniz/python-etcd3.git","ssh_url":"git@github.com:kragniz/python-etcd3.git","clone_url":"https://github.com/kragniz/python-etcd3.git","svn_url":"https://github.com/kragniz/python-etcd3","homepage":"","size":433,"stargazers_count":72,"watchers_count":72,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":44,"mirror_url":null,"archived":false,"open_issues_count":34,"license":{"key":"other","name":"Other","spdx_id":null,"url":null},"forks":44,"open_issues":34,"watchers":72,"default_branch":"master"}},"base":{"label":"kragniz:master","ref":"master","sha":"94e26644d5fa7eb299ed59e390e9022f7dd0d6a7","user":{"login":"kragniz","id":735008,"avatar_url":"https://avatars2.githubusercontent.com/u/735008?v=4","gravatar_id":"","url":"https://api.github.com/users/kragniz","html_url":"https://github.com/kragniz","followers_url":"https://api.github.com/users/kragniz/followers","following_url":"https://api.github.com/users/kragniz/following{/other_user}","gists_url":"https://api.github.com/users/kragniz/gists{/gist_id}","starred_url":"https://api.github.com/users/kragniz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kragniz/subscriptions","organizations_url":"https://api.github.com/users/kragniz/orgs","repos_url":"https://api.github.com/users/kragniz/repos","events_url":"https://api.github.com/users/kragniz/events{/privacy}","received_events_url":"https://api.github.com/users/kragniz/received_events","type":"User","site_admin":false},"repo":{"id":69691394,"name":"python-etcd3","full_name":"kragniz/python-etcd3","owner":{"login":"kragniz","id":735008,"avatar_url":"https://avatars2.githubusercontent.com/u/735008?v=4","gravatar_id":"","url":"https://api.github.com/users/kragniz","html_url":"https://github.com/kragniz","followers_url":"https://api.github.com/users/kragniz/followers","following_url":"https://api.github.com/users/kragniz/following{/other_user}","gists_url":"https://api.github.com/users/kragniz/gists{/gist_id}","starred_url":"https://api.github.com/users/kragniz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kragniz/subscriptions","organizations_url":"https://api.github.com/users/kragniz/orgs","repos_url":"https://api.github.com/users/kragniz/repos","events_url":"https://api.github.com/users/kragniz/events{/privacy}","received_events_url":"https://api.github.com/users/kragniz/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/kragniz/python-etcd3","description":"Python client for the etcd API v3","fork":false,"url":"https://api.github.com/repos/kragniz/python-etcd3","forks_url":"https://api.github.com/repos/kragniz/python-etcd3/forks","keys_url":"https://api.github.com/repos/kragniz/python-etcd3/keys{/key_id}","collaborators_url":"https://api.github.com/repos/kragniz/python-etcd3/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/kragniz/python-etcd3/teams","hooks_url":"https://api.github.com/repos/kragniz/python-etcd3/hooks","issue_events_url":"https://api.github.com/repos/kragniz/python-etcd3/issues/events{/number}","events_url":"https://api.github.com/repos/kragniz/python-etcd3/events","assignees_url":"https://api.github.com/repos/kragniz/python-etcd3/assignees{/user}","branches_url":"https://api.github.com/repos/kragniz/python-etcd3/branches{/branch}","tags_url":"https://api.github.com/repos/kragniz/python-etcd3/tags","blobs_url":"https://api.github.com/repos/kragniz/python-etcd3/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/kragniz/python-etcd3/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/kragniz/python-etcd3/git/refs{/sha}","trees_url":"https://api.github.com/repos/kragniz/python-etcd3/git/trees{/sha}","statuses_url":"https://api.github.com/repos/kragniz/python-etcd3/statuses/{sha}","languages_url":"https://api.github.com/repos/kragniz/python-etcd3/languages","stargazers_url":"https://api.github.com/repos/kragniz/python-etcd3/stargazers","contributors_url":"https://api.github.com/repos/kragniz/python-etcd3/contributors","subscribers_url":"https://api.github.com/repos/kragniz/python-etcd3/subscribers","subscription_url":"https://api.github.com/repos/kragniz/python-etcd3/subscription","commits_url":"https://api.github.com/repos/kragniz/python-etcd3/commits{/sha}","git_commits_url":"https://api.github.com/repos/kragniz/python-etcd3/git/commits{/sha}","comments_url":"https://api.github.com/repos/kragniz/python-etcd3/comments{/number}","issue_comment_url":"https://api.github.com/repos/kragniz/python-etcd3/issues/comments{/number}","contents_url":"https://api.github.com/repos/kragniz/python-etcd3/contents/{+path}","compare_url":"https://api.github.com/repos/kragniz/python-etcd3/compare/{base}...{head}","merges_url":"https://api.github.com/repos/kragniz/python-etcd3/merges","archive_url":"https://api.github.com/repos/kragniz/python-etcd3/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/kragniz/python-etcd3/downloads","issues_url":"https://api.github.com/repos/kragniz/python-etcd3/issues{/number}","pulls_url":"https://api.github.com/repos/kragniz/python-etcd3/pulls{/number}","milestones_url":"https://api.github.com/repos/kragniz/python-etcd3/milestones{/number}","notifications_url":"https://api.github.com/repos/kragniz/python-etcd3/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/kragniz/python-etcd3/labels{/name}","releases_url":"https://api.github.com/repos/kragniz/python-etcd3/releases{/id}","deployments_url":"https://api.github.com/repos/kragniz/python-etcd3/deployments","created_at":"2016-09-30T18:26:16Z","updated_at":"2018-02-21T12:55:14Z","pushed_at":"2018-02-25T04:01:11Z","git_url":"git://github.com/kragniz/python-etcd3.git","ssh_url":"git@github.com:kragniz/python-etcd3.git","clone_url":"https://github.com/kragniz/python-etcd3.git","svn_url":"https://github.com/kragniz/python-etcd3","homepage":"","size":433,"stargazers_count":72,"watchers_count":72,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":44,"mirror_url":null,"archived":false,"open_issues_count":34,"license":{"key":"other","name":"Other","spdx_id":null,"url":null},"forks":44,"open_issues":34,"watchers":72,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/kragniz/python-etcd3/pulls/354"},"html":{"href":"https://github.com/kragniz/python-etcd3/pull/354"},"issue":{"href":"https://api.github.com/repos/kragniz/python-etcd3/issues/354"},"comments":{"href":"https://api.github.com/repos/kragniz/python-etcd3/issues/354/comments"},"review_comments":{"href":"https://api.github.com/repos/kragniz/python-etcd3/pulls/354/comments"},"review_comment":{"href":"https://api.github.com/repos/kragniz/python-etcd3/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/kragniz/python-etcd3/pulls/354/commits"},"statuses":{"href":"https://api.github.com/repos/kragniz/python-etcd3/statuses/c3e4d82d7c1ed04e65514562d429351e2010d830"}},"author_association":"CONTRIBUTOR","merged":false,"mergeable":true,"rebaseable":true,"mergeable_state":"unstable","merged_by":null,"comments":1,"review_comments":0,"maintainer_can_modify":false,"commits":1,"additions":1,"deletions":1,"changed_files":1}}
{"actor":{"display_login":"pyup-bot"}}