- Update to 6.119.1
- This patch migrates some more internals (around generating
novel inputs) to the IR layer (issue #3921).
- Update to 6.119.0
- This release improves Hypothesis’ handling of ExceptionGroup
- it’s now able to detect marker detections if they’re inside
a group and attempts to resolve them. Note that this handling
is still a work in progress and might not handle edge cases
optimally. Please open issues if you encounter any problems
or unexpected behavior with it.
- Update to 6.118.9
- Internal refactorings in preparation for upcoming changes.
- Update to 6.118.8
- Internal renamings.
- Update to 6.118.7
- This patch removes some # type: ignore comments following a
mypy update.
- Update to 6.118.6
- When Hypothesis replays examples from its test database that
it knows were previously fully shrunk it will no longer try
to shrink them again.
- This should significantly speed up development workflows for
slow tests, as the shrinking could contribute a significant
delay when rerunning the tests.
- In some rare cases this may cause minor reductions in example
quality. This was considered an acceptable tradeoff for the
improved test runtime.
- Update to 6.118.5
- This patch avoids computing some string representations we
won’t need, giving a small speedup (part of issue #4139).
- Update to 6.118.4
- This patch migrates the optimisation algorithm for
targeted property-based testing to our IR layer (issue
#3921). This should result in moderately different (and
hopefully improved) exploration behavior in tests which use
hypothesis.target().
- Update to 6.118.3
- This patch adds more type hints to internal Hypothesis code.
- Update to 6.118.2
- This patch migrates the explain phase to our IR layer (issue
#3921). This should improve both its speed and precision.
- Update to 6.118.1
- This patch updates some internals around how we determine an
input is too large to finish generating.
- Update to 6.118.0
- The urls() strategy no longer generates URLs where the port
number is 0.
- This change is motivated by the idea that the generated URLs
should, at least in theory, be possible to fetch. The port
number 0 is special; if a server binds to port 0, the kernel
will allocate an unused, and non-zero, port instead. That
means that it’s not possible for a server to actually be
listening on port 0. This motivation is briefly described in
the documentation for urls().
- Fixes issue #4157.
- Thanks to @gmacon for this contribution!
- Update to 6.117.0
- This changes the behaviour of settings profiles so that
if you reregister the currently loaded profile it will
automatically reload it. Previously you would have had to
load it again.
- In particular this means that if you register a “ci” profile,
it will automatically be used when Hypothesis detects you are
running on CI.
- Update to 6.116.0
- Hypothesis now detects if it is running on a CI server and
provides better default settings for running on CI in this
case.
- Update to 6.115.6
- This patch changes the priority order of pretty printing
logic so that a user provided pretty printing method will
always be used in preference to e.g. printing it like a
dataclass.
- Update to 6.115.5
- This patch restores diversity to the outputs of
from_type(type) (issue #4144).
- Update to 6.115.4
- This release improves pretty printing of nested classes to
include the outer class name in their printed representation.
- Update to 6.115.3
- This patch fixes a regression from version 6.115.2 where
generating values from integers() with certain values for
min_value and max_value would error.
- Require numpy >= 2.
OBS-URL: https://build.opensuse.org/request/show/1224614
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-hypothesis?expand=0&rev=79
- This patch migrates some more internals (around generating
novel inputs) to the IR layer (issue #3921).
- Update to 6.119.0
- This release improves Hypothesis’ handling of ExceptionGroup
- it’s now able to detect marker detections if they’re inside
a group and attempts to resolve them. Note that this handling
is still a work in progress and might not handle edge cases
optimally. Please open issues if you encounter any problems
or unexpected behavior with it.
- Update to 6.118.9
- Internal refactorings in preparation for upcoming changes.
- Update to 6.118.8
- Internal renamings.
- Update to 6.118.7
- This patch removes some # type: ignore comments following a
mypy update.
- Update to 6.118.6
- When Hypothesis replays examples from its test database that
it knows were previously fully shrunk it will no longer try
to shrink them again.
- This should significantly speed up development workflows for
slow tests, as the shrinking could contribute a significant
delay when rerunning the tests.
- In some rare cases this may cause minor reductions in example
quality. This was considered an acceptable tradeoff for the
improved test runtime.
- Update to 6.118.5
- This patch avoids computing some string representations we
won’t need, giving a small speedup (part of issue #4139).
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-hypothesis?expand=0&rev=199
Forwarded request #1217328 from glaubitz
- Update to 6.115.3
* This patch fixes a regression from :ref:`version 6.115.2 <v6.115.2>` where
generating values from :func:`~hypothesis.strategies.integers` with certain
values for ``min_value`` and ``max_value`` would error.
- from version 6.115.2
* This release improves integer shrinking by folding the endpoint upweighting
for :func:`~hypothesis.strategies.integers` into the ``weights`` parameter
of our IR.
If you maintain an alternative backend as part of our (for now explicitly
unstable) :ref:`alternative-backends`, this release changes the type of the
``weights`` parameter to ``draw_integer`` and may be a breaking change for you.
- from version 6.115.1
* This patch improves the performance of :func:`~hypothesis.strategies.from_type`
with `pydantic.types.condate
- from version 6.115.0
* This improves the formatting of dataclasses and attrs classes when printing
falsifying examples.
- from version 6.114.1
* This patch upgrades remaining type annotations to Python 3.9 syntax.
- from version 6.114.0
* This release drops support for Python 3.8, which reached end of life on
2024-10-07.
- from version 6.113.0
* This release adds ``hypothesis.errors.BackendCannotProceed``, an unstable API
for use by :ref:`alternative-backends`.
- from version 6.112.5
* This release fixes a regression where :class:`hypothesis.stateful.Bundle` did
not work properly with :ref:`flatmap <flatmap>` functionality.
- from version 6.112.4
* This patch tweaks the paths in ``@example(...)`` patches, so that
OBS-URL: https://build.opensuse.org/request/show/1217398
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-hypothesis?expand=0&rev=78
* This patch fixes a regression from :ref:`version 6.115.2 <v6.115.2>` where
generating values from :func:`~hypothesis.strategies.integers` with certain
values for ``min_value`` and ``max_value`` would error.
- from version 6.115.2
* This release improves integer shrinking by folding the endpoint upweighting
for :func:`~hypothesis.strategies.integers` into the ``weights`` parameter
of our IR.
If you maintain an alternative backend as part of our (for now explicitly
unstable) :ref:`alternative-backends`, this release changes the type of the
``weights`` parameter to ``draw_integer`` and may be a breaking change for you.
- from version 6.115.1
* This patch improves the performance of :func:`~hypothesis.strategies.from_type`
with `pydantic.types.condate
- from version 6.115.0
* This improves the formatting of dataclasses and attrs classes when printing
falsifying examples.
- from version 6.114.1
* This patch upgrades remaining type annotations to Python 3.9 syntax.
- from version 6.114.0
* This release drops support for Python 3.8, which reached end of life on
2024-10-07.
- from version 6.113.0
* This release adds ``hypothesis.errors.BackendCannotProceed``, an unstable API
for use by :ref:`alternative-backends`.
- from version 6.112.5
* This release fixes a regression where :class:`hypothesis.stateful.Bundle` did
not work properly with :ref:`flatmap <flatmap>` functionality.
- from version 6.112.4
* This patch tweaks the paths in ``@example(...)`` patches, so that
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-hypothesis?expand=0&rev=197
* This release adds support for variable-width bytes in our IR
layer (issue #3921), which should mean improved performance
anywhere you use binary(). If you maintain an alternative
backend as part of our (for now explicitly unstable)
Alternative backends for Hypothesis, this release changes the
draw_* interface and may be a breaking change for you.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-hypothesis?expand=0&rev=193
- Update to 6.108.5
* The alphabet= argument to from_regex() now accepts unions of characters()
and sampled_from() strategies, in addition to accepting each individually.
* Improves support for unions of numpy dtypes such as np.float64 | np.complex128
in from_type() and arrays()
* Support for Django 5.0, drop support for end-of-life Django versions (< 4.2).
* Migrate the shrinker to our new internal representation, called the IR layer.
This improves the shrinker’s performance in the majority of cases. For example,
on the Hypothesis test suite, shrinking is a median of 1.38x faster.
* The from_dtype() function no longer generates NaT (“not-a-time”) values for the
datetime64 or timedelta64 dtypes if passed allow_nan=False
* Add the experimental and unstable backend setting. See documentation for details.
* Many more minor changes, see the upstream changelog.
- Add 0001-Revert-Use-tmp_path-in-ghostwriter-tests.patch to fix tests
* https://github.com/HypothesisWorks/hypothesis/issues/4062
OBS-URL: https://build.opensuse.org/request/show/1191165
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-hypothesis?expand=0&rev=191
- Update to 6.98.9
* Avoid creating a .hypothesis directory when using register_type_strategy().
* Add ability to pass any object to note().
* Warn when constructing a repr that is overly long.
* Change the distribution of sampled_from() when sampling from a Flag.
* Deprecate use of the global random number generator while drawing from a strategy.
* Improve our distribution of generated values for all strategies.
* Improve the Ghostwriter for binary operators.
OBS-URL: https://build.opensuse.org/request/show/1152084
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-hypothesis?expand=0&rev=185
- update to 6.92.1:
* This release adds an experimental :wikipedia:`observability
* This patch fixes an issue where
:func:`~hypothesis.strategies.builds` could not be used with
:pypi:`attrs` objects that defined private attributes (i.e.
attributes with a leading underscore). See also
* This release adds an optional ``payload`` argument to
:func:`hypothesis.event`, so that you can clearly express
the difference between the label and the value of an
observation.
* This patch supports assigning ``settings = settings(...)`` as
a class attribute on a subclass of a ``.TestCase`` attribute
of a :class:`~hypothesis.stateful.RuleBasedStateMachine`.
* This release makes it an error to assign ``settings =
settings(...)`` as a class attribute on a
:class:`~hypothesis.stateful.RuleBasedStateMachine`.
* This patch refactors some internals. There is no user-
visible change, but we hope to improve performance and unlock
support for alternative backends such as :pypi:`symbolic
execution with crosshair in future (:issue:`3086`).
* This release teaches :func:`~hypothesis.strategies.from_type`
to handle constraints implied by the :pypi:`annotated-types`
package - as used by e.g. :pypi:`Pydantic`.
* This patch adds a warning when :func:`@st.composite
wraps a function annotated as returning a
:class:`~hypothesis.strategies.SearchStrategy`,
since this is usually an error (:issue:`3786`).
* This patch refactors ``from_type(typing.Tuple)``, allowing
:func:`~hypothesis.strategies.register_type_strategy` to take
effect for tuples instead of being silently ignored
OBS-URL: https://build.opensuse.org/request/show/1135262
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-hypothesis?expand=0&rev=70
* This release adds an experimental :wikipedia:`observability
* This patch fixes an issue where
:func:`~hypothesis.strategies.builds` could not be used with
:pypi:`attrs` objects that defined private attributes (i.e.
attributes with a leading underscore). See also
* This release adds an optional ``payload`` argument to
:func:`hypothesis.event`, so that you can clearly express
the difference between the label and the value of an
observation.
* This patch supports assigning ``settings = settings(...)`` as
a class attribute on a subclass of a ``.TestCase`` attribute
of a :class:`~hypothesis.stateful.RuleBasedStateMachine`.
* This release makes it an error to assign ``settings =
settings(...)`` as a class attribute on a
:class:`~hypothesis.stateful.RuleBasedStateMachine`.
* This patch refactors some internals. There is no user-
visible change, but we hope to improve performance and unlock
support for alternative backends such as :pypi:`symbolic
execution with crosshair in future (:issue:`3086`).
* This release teaches :func:`~hypothesis.strategies.from_type`
to handle constraints implied by the :pypi:`annotated-types`
package - as used by e.g. :pypi:`Pydantic`.
* This patch adds a warning when :func:`@st.composite
wraps a function annotated as returning a
:class:`~hypothesis.strategies.SearchStrategy`,
since this is usually an error (:issue:`3786`).
* This patch refactors ``from_type(typing.Tuple)``, allowing
:func:`~hypothesis.strategies.register_type_strategy` to take
effect for tuples instead of being silently ignored
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-hypothesis?expand=0&rev=179
- Update to 6.88.0
- disable flaky test
* This release allows strategy-generating functions registered
with register_type_strategy() to conditionally not return
a strategy, by returning NotImplemented
* When randoms( was called with use_true_randoms=False,
calling sample on it with an empty sequence and 0 elements
would result in an error, when it should have returned
an empty sequence to agree with the normal behaviour of
random.Random. This fixes that discrepancy.)
OBS-URL: https://build.opensuse.org/request/show/1118040
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-hypothesis?expand=0&rev=175
- Update to 6.87.3
* This patch ensures that the :ref:`hypothesis codemod <codemods>`
CLI will print a warning instead of stopping with an internal error
if one of your files contains invalid syntax (:issue:`3759`).
* This patch makes some small changes to our NumPy integration
to ensure forward compatibility.
* Fixes :issue:`3755`, where an internal condition turns out to be
reachable after all.
* This release deprecates use of :func:`~hypothesis.assume`
and reject() outside of property-based tests, because these functions
work by raising a special exception (:issue:`3743`).
It also fixes some type annotations (:issue:`3753`).
* Hotfix for :issue:`3747`, a bug in explain mode which is so rare
that we missed it in six months of dogfooding. Thanks to :pypi:`mygrad`
for discovering and promptly reporting this!
* This patch improves the documentation of
:obj:`@example(...).xfail() <hypothesis.example.xfail>` by adding a note
about PEP 614, similar to :obj:`@example(...).via() <hypothesis.example.via>`,
and adds a warning when a strategy generates a test case which
seems identical to one provided by an xfailed example.
* This release enables the :obj:`~hypothesis.Phase.explain`
:ref:`phase <phases>` by default. We hope it helps you to understand
why your failing tests have failed!
* This patch switches some of our type annotations to use
:obj:`typing.Literal` when only a few specific values are allowed,
such as UUID or IP address versions.
* This release deprecates the old whitelist/blacklist arguments to
:func:`~hypothesis.strategies.characters`, in favor of include/exclude
arguments which more clearly describe their effects on the set
of characters which can be generated.
OBS-URL: https://build.opensuse.org/request/show/1116915
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-hypothesis?expand=0&rev=174
- update to 6.82.4:
* This patch ensures that we always close the download
connection in :class:`~hypothesis.database.GitHubArtifactDatabase`.
* We can now pretty-print combinations of *zero*
:class:`enum.Flag` values, like ``SomeFlag(0)``,
which has never worked before.
* This patch fixes pretty-printing of combinations of
:class:`enum.Flag` values, which was previously an error
(:issue:`3709`).
* Improve shrinking of floats in narrow regions that don't
cross an integer boundary. Closes :issue:`3357`.
* :func:`~hypothesis.strategies.from_regex` now supports the
atomic grouping (``(?>...)``) and possessive quantifier
(``*+``, ``++``, ``?+``, ``{m,n}+``) syntax `added in Python 3.11
* If the :envvar:`HYPOTHESIS_NO_PLUGINS` environment variable
is set, we'll avoid :ref:`loading plugins <entry-points>`
such as `the old Pydantic integration
* Fixes some lingering issues with inference of recursive types
* in `~hypothesis.strategies.from_type`. Closes :issue:`3525`.
* This release drops support for Python 3.7, `which reached end
of life on 2023-06-27
* Fixes occasional recursion-limit-exceeded errors when
validating deeply nested strategies. Closes: :issue:`3671`
* Improve the type rendered in
:func:`~hypothesis.strategies.from_type`, which improves the
coverage of Ghostwriter.
* This patch improves Ghostwriter's use of qualified names for
re-exported functions and classes, and avoids importing useless
:obj:`~typing.TypeVar`\ s.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-hypothesis?expand=0&rev=170
- update to 6.75.3:
* This patch fixes ~hypothesis.strategies.complex_numbers accidentally
invalidating itself when passed magnitude arguments for 32
and 64-bit widths, i.e. 16- and 32-bit floats, due to not
internally down-casting numbers
- Update to 6.75.2:
* Improved the documentation regarding how to use
GitHubArtifactDatabase and fixed a bug that occurred in
repositories with no existing artifacts.
- 6.75.1
* hypothesis.errors will now raise AttributeError when attempting to
access an undefined attribute, rather than returning None.
- 6.75.0
* Sick of adding @example()s by hand? Our Pytest plugin now writes
.patch files to insert them for you, making this workflow easier
than ever before.
* Note that you’ll need LibCST (via hypothesis[codemods]), and that
@example().via() requires PEP 614 (Python 3.9 or later).
- 6.74.1
* This patch provides better error messages for datetime- and
timedelta-related invalid dtypes in our Pandas extra (issue
#3518).
- 6.74.0
* This release adds support for nullable pandas dtypes in pandas()
(issue #3604).
- 6.73.1
* This patch updates our minimum Numpy version to 1.16, and restores
compatibility with versions before 1.20, which were broken by a
mistake in Hypothesis 6.72.4 (issue #3625).
OBS-URL: https://build.opensuse.org/request/show/1087109
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-hypothesis?expand=0&rev=65
* Improved the documentation regarding how to use
GitHubArtifactDatabase and fixed a bug that occurred in
repositories with no existing artifacts.
- 6.75.1
* hypothesis.errors will now raise AttributeError when attempting to
access an undefined attribute, rather than returning None.
- 6.75.0
* Sick of adding @example()s by hand? Our Pytest plugin now writes
.patch files to insert them for you, making this workflow easier
than ever before.
* Note that you’ll need LibCST (via hypothesis[codemods]), and that
@example().via() requires PEP 614 (Python 3.9 or later).
- 6.74.1
* This patch provides better error messages for datetime- and
timedelta-related invalid dtypes in our Pandas extra (issue
#3518).
- 6.74.0
* This release adds support for nullable pandas dtypes in pandas()
(issue #3604).
- 6.73.1
* This patch updates our minimum Numpy version to 1.16, and restores
compatibility with versions before 1.20, which were broken by a
mistake in Hypothesis 6.72.4 (issue #3625).
- 6.73.0
* This release upgrades the explain phase (issue #3411).
- 6.72.4
* This patch fixes type annotations for the arrays() strategy.
- 6.72.3
* This patch fixes a bug with from_type() with dict[tuple[int, int], str] (issue #3527).
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-hypothesis?expand=0&rev=166
- Update to 6.61.2
* This patch improves our pretty-printing of failing examples,
including some refactoring to prepare for exciting future
features.
- Release 6.61.1
* This patch brings our domains() and emails() strategies into
compliance with RFC 5890 §2.3.1: we no longer generate
parts-of-domains where the third and fourth characters are --
(“R-LDH labels”), though future versions may deliberately
generate xn-- punycode labels. Thanks to python-email-validator
for the report!
- Update dependencies
- Move to PEP517 build
OBS-URL: https://build.opensuse.org/request/show/1056822
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-hypothesis?expand=0&rev=160
- Update to 6.61.0
- This release improves our treatment of database keys, which based on (among
other things) the source code of your test function. We now post-process
this source to ignore decorators, comments, trailing whitespace, and blank
lines - so that you can add :obj:`@example() <hypothesis.example>`\ s or
make some small no-op edits to your code without preventing replay of any
known failing or covering examples.
- 6.60.1 - 2022-12-11
- This patch updates our vendored `list of top-level domains
<https://www.iana.org/domains/root/db>`__,
which is used by the provisional :func:`~hypothesis.provisional.domains`
strategy.
- 6.60.0 - 2022-12-04
- This release improves Hypothesis' ability to resolve forward references in
type annotations. It fixes a bug that prevented
:func:`~hypothesis.strategies.builds` from being used with `pydantic models
that possess updated forward references
<https://pydantic-docs.helpmanual.io/usage/postponed_annotations/>`__. See
:issue:`3519`.
- 6.59.0 - 2022-12-02
- The :obj:`@example(...) <hypothesis.example>` decorator now has a ``.via()``
method, which future tools will use to track automatically-added covering
examples (:issue:`3506`).
- 6.58.2 - 2022-11-30
- This patch updates our vendored `list of top-level domains
<https://www.iana.org/domains/root/db>`__, which is used by the provisional
:func:`~hypothesis.provisional.domains` strategy.
- 6.58.1 - 2022-11-26
- This patch shifts ``hypothesis[lark]`` from depending on the old
:pypi:`lark-parser` package to the new :pypi:`lark` package. There are no
code changes in Hypothesis, it's just that Lark got a new name on PyPI for
version 1.0 onwards.
- 6.58.0 - 2022-11-19
- :func:`~hypothesis.register_random` has used :mod:`weakref` since
:ref:`v6.27.1`, allowing the :class:`~random.Random`-compatible objects to
be garbage-collected when there are no other references remaining in order
to avoid memory leaks. We now raise an error or emit a warning when this
seems likely to happen immediately.
- The type annotation of :func:`~hypothesis.register_random` was also widened
so that structural subtypes of :class:`~random.Random` are accepted by
static typecheckers.
- 6.57.1 - 2022-11-14
- This patch updates some internal type annotations and fixes a formatting
bug in the :obj:`~hypothesis.Phase.explain` phase reporting.
- 6.57.0 - 2022-11-14
- Hypothesis now raises an error if you passed a strategy as the
``alphabet=`` argument to :func:`~hypothesis.strategies.text`, and it
generated something which was not a length-one string. This has never been
supported, we're just adding explicit validation to catch cases like `this
StackOverflow question <https://stackoverflow.com/a/74336909/9297601>`__.
- 6.56.4 - 2022-10-28
- This patch updates some docs, and depends on :pypi:`exceptiongroup` 1.0.0
final to avoid a bug in the previous version.
- 6.56.3 - 2022-10-17
- This patch teaches :func:`~hypothesis.strategies.text` to rewrite a few
more filter predicates (:issue:`3134`). You're unlikely to notice any
change.
OBS-URL: https://build.opensuse.org/request/show/1043052
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-hypothesis?expand=0&rev=61
- This release improves our treatment of database keys, which based on (among
other things) the source code of your test function. We now post-process
this source to ignore decorators, comments, trailing whitespace, and blank
lines - so that you can add :obj:`@example() <hypothesis.example>`\ s or
make some small no-op edits to your code without preventing replay of any
known failing or covering examples.
- 6.60.1 - 2022-12-11
- This patch updates our vendored `list of top-level domains
<https://www.iana.org/domains/root/db>`__,
which is used by the provisional :func:`~hypothesis.provisional.domains`
strategy.
- 6.60.0 - 2022-12-04
- This release improves Hypothesis' ability to resolve forward references in
type annotations. It fixes a bug that prevented
:func:`~hypothesis.strategies.builds` from being used with `pydantic models
that possess updated forward references
<https://pydantic-docs.helpmanual.io/usage/postponed_annotations/>`__. See
:issue:`3519`.
- 6.59.0 - 2022-12-02
- The :obj:`@example(...) <hypothesis.example>` decorator now has a ``.via()``
method, which future tools will use to track automatically-added covering
examples (:issue:`3506`).
- 6.58.2 - 2022-11-30
- This patch updates our vendored `list of top-level domains
<https://www.iana.org/domains/root/db>`__, which is used by the provisional
:func:`~hypothesis.provisional.domains` strategy.
- 6.58.1 - 2022-11-26
- This patch shifts ``hypothesis[lark]`` from depending on the old
:pypi:`lark-parser` package to the new :pypi:`lark` package. There are no
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-hypothesis?expand=0&rev=158