./devel/py-hypothesis, Python library for property based testing

[ CVSweb ] [ Homepage ] [ RSS ] [ Required by ] [ Add to tracker ]

Branch: CURRENT, Version: 4.11.1, Package name: py27-hypothesis-4.11.1, Maintainer: pkgsrc-users

Hypothesis is a library for testing your Python code against a much
larger range of examples than you would ever want to write by hand.
It's based on the Haskell library, Quickcheck, and is designed to
integrate seamlessly into your existing Python unit testing work

Hypothesis is both extremely practical and also advances the state
of the art of unit testing by some way. It's easy to use, stable,
and extremely powerful. If you're not using Hypothesis to test your
project then you're missing out.

Required to run:
[devel/py-setuptools] [lang/python27] [devel/py-enum34] [devel/py-attrs]

Required to build:

Master sites:

SHA1: f71c17aee3499e70dfbc0e4eee2f4c5e400e7d1a
RMD160: eeb3b8896af8bf25d36c20ca1606cf68012b58f1
Filesize: 187.613 KB

Version history: (Expand)

CVS history: (Expand)

   2019-03-13 09:51:48 by Adam Ciarcinski | Files touched by this commit (2) | Package updated
Log message:
py-hypothesis: updated to 4.11.1

This is a formatting-only patch, enabled by a new version of :pypi:isort.

This release deprecates :func:~hypothesis.strategies.sampled_from with empty \ 
sequences. This returns :func:~hypothesis.strategies.nothing, which gives a \ 
clear error if used directly... but simply vanishes if combined with another \ 

Tests that silently generate less than expected are a serious problem for anyone \ 
relying on them to find bugs, and we think reliability more important than \ 
convenience in this case.

This release improves Hypothesis's to detect flaky tests, by noticing when the \ 
behaviour of the test changes between runs. In particular this will notice many \ 
new cases where data generation depends on external state (e.g. external sources \ 
of randomness) and flag those as flaky sooner and more reliably.

The basis of this feature is a considerable reengineering of how Hypothesis \ 
stores its history of test cases, so on top of this its memory usage should be \ 
considerably reduced.

This release adds the strategy :func:~hypothesis.extra.numpy.valid_tuple_axes, \ 
which generates tuples of axis-indices that can be passed to the axis argument \ 
in NumPy's sequential functions (e.g. :func:numpy:numpy.sum).

This release significantly tightens validation in :class:hypothesis.settings. \ 
:obj:~hypothesis.settings.max_examples, :obj:~hypothesis.settings.buffer_size, \ 
and :obj:~hypothesis.settings.stateful_step_count must be positive integers; \ 
:obj:~hypothesis.settings.deadline must be a positive number or None; and \ 
:obj:~hypothesis.settings.derandomize must be either True or False.

As usual, this replaces existing errors with a more helpful error and starts new \ 
validation checks as deprecation warnings.

This release makes some micro-optimisations to certain calculations performed in \ 
the shrinker. These should particularly speed up large test cases where the \ 
shrinker makes many small changes. It will also reduce the amount allocated, but \ 
most of this is garbage that would have been immediately thrown away, so you \ 
probably won't see much effect specifically from that.

This patch removes some overhead from :func:~hypothesis.extra.numpy.arrays with \ 
a constant shape and dtype. The resulting performance improvement is modest, but \ 
worthwile for small arrays.
   2019-03-02 15:22:10 by Adam Ciarcinski | Files touched by this commit (3) | Package updated
Log message:
py-hypothesis: updated to 4.7.17

This release makes some micro-optimisations within Hypothesis's internal \ 
representation of test cases. This should cause heavily nested test cases to \ 
allocate less during generation and shrinking, which should speed things up \ 

This changes the order in which Hypothesis runs certain operations during \ 
shrinking. This should significantly decrease memory usage and speed up \ 
shrinking of large examples.

This release allows Hypothesis to calculate a number of attributes of generated \ 
test cases lazily. This should significantly reduce memory usage and modestly \ 
improve performance, especially for large test cases.

This release reduces the number of operations the shrinker will try when \ 
reordering parts of a test case. This should in some circumstances significantly \ 
speed up shrinking. It may result in different final test cases, and if so \ 
usually slightly worse ones, but it should not generally have much impact on the \ 
end result as the operations removed were typically useless.

This release changes how Hypothesis reorders examples within a test case during \ 
shrinking. This should make shrinking considerably faster.

This release slightly improves the shrinker's ability to replace parts of a test \ 
case with their minimal version, by allowing it to do so in bulk rather than one \ 
at a time. Where this is effective, shrinker performance should be modestly \ 

This release makes some micro-optimisations to common operations performed \ 
during shrinking. Shrinking should now be slightly faster, especially for large \ 
examples with relatively fast test functions.

This release is a purely internal refactoring of Hypothesis's API for \ 
representing test cases. There should be no user visible effect.

This release changes certain shrink passes to make them more efficient when they \ 
aren't making progress.

This patch removes some unused code, which makes the internals a bit easier to \ 
understand. There is no user-visible impact.

This release reduces the number of operations the shrinker will try when \ 
reordering parts of a test case. This should in some circumstances significantly \ 
speed up shrinking. It may result in different final test cases, and if so \ 
usually slightly worse ones, but it should not generally have much impact on the \ 
end result as the operations removed were typically useless.

This patch removes some unused code from the shrinker. There is no user-visible \ 

This release changes certain shrink passes to make them adaptive - that is, in \ 
cases where they are successfully making progress they may now do so \ 
significantly faster.

This is a docs-only patch, noting that because the :pypi:lark-parser is under \ 
active development at version 0.x, hypothesis[lark] APIs may break in minor \ 
releases if necessary to keep up with the upstream package.

This changes Hypothesis to no longer import various test frameworks by default \ 
(if they are installed). which will speed up the initial import hypothesis call.

This release changes Hypothesis's internal representation of a test case to \ 
calculate some expensive structural information on demand rather than eagerly. \ 
This should reduce memory usage a fair bit, and may make generation somewhat \ 

This release refactors the internal representation of previously run test cases. \ 
The main thing you should see as a result is that Hypothesis becomes somewhat \ 
less memory hungry.

This patch allows :func:~hypothesis.extra.numpy.array_shapes to generate shapes \ 
with side-length or even dimension zero, though the minimum still defaults to \ 
one. These shapes are rare and have some odd behavior, but are particularly \ 
important to test for just that reason!

In a related bigfix, :func:~hypothesis.extra.numpy.arrays now supports \ 
generating zero-dimensional arrays with dtype=object and a strategy for iterable \ 
elements. Previously, the array element would incorrectly be set to the first \ 
item in the generated iterable.
   2019-02-17 00:36:02 by Adam Ciarcinski | Files touched by this commit (3) | Package updated
Log message:
py-hypothesis: updated to 4.5.11

This release fixes :issue:1813, a bug introduced in :ref:3.59.1 <v3.59.1>, \ 
which caused :py:meth:~hypothesis.strategies.random_module to no longer affect \ 
the body of the test: Although Hypothesis would claim to be seeding the random \ 
module in fact tests would always run with a seed of zero.

This patch fixes an off-by-one error in the maximum length of \ 
:func:~hypothesis.strategies.emails. Thanks to Krzysztof Jurewicz for \ 

This patch removes some unused code from the shrinker. There is no user-visible \ 

This release fixes an internal IndexError in Hypothesis that could sometimes be \ 
triggered during shrinking.

This release modifies the shrinker to interleave different types of reduction \ 
operations, e.g. switching between deleting data and lowering scalar values \ 
rather than trying entirely deletions then entirely lowering.

This may slow things down somewhat in the typical case, but has the major \ 
advantage that many previously difficult to shrink examples should become much \ 
faster, because the shrinker will no longer tend to stall when trying some \ 
ineffective changes to the shrink target but will instead interleave it with \ 
other more effective operations.

This release makes a number of internal changes to the implementation of \ 
:func:hypothesis.extra.lark.from_lark. These are primarily intended as a \ 
refactoring, but you may see some minor improvements to performance when \ 
generating large strings, and possibly to shrink quality.

This patch prints an explanatory note when :issue:1798 is triggered, because the \ 
error message from Numpy is too terse to locate the problem.

In Python 2, long integers are not allowed in the shape argument to \ 
:func:~hypothesis.extra.numpy.arrays. Thanks to Ryan Turner for fixing this.

This release makes a small internal refactoring to clarify how Hypothesis \ 
instructs tests to stop running when appropriate. There is no user-visible \ 

This release standardises all of the shrinker's internal operations on running \ 
in a random order.

The main effect you will see from this that it should now be much less common \ 
for the shrinker to stall for a long time before making further progress. In \ 
some cases this will correspond to shrinking more slowly, but on average it \ 
should result in faster shrinking.

This patch updates some docstrings, but has no runtime changes.

This release adds exclude_min and exclude_max arguments to \ 
:func:~hypothesis.strategies.floats, so that you can easily generate values from \ 
open or half-open intervals
   2019-02-01 12:50:30 by Adam Ciarcinski | Files touched by this commit (3) | Package updated
Log message:
py-hypothesis: updated to 4.4.3

This release fixes an open file leak that used to cause ResourceWarnings.

This release changes Hypothesis's internal approach to caching the results of \ 
executing test cases. The result should be that it is now significantly less \ 
memory hungry, especially when shrinking large test cases.

Some tests may get slower or faster depending on whether the new or old caching \ 
strategy was well suited to them, but any change in speed in either direction \ 
should be minor.

This patch tightens up some of our internal heuristics to deal with shrinking \ 
floating point numbers, which will now run in fewer circumstances.

You are fairly unlikely to see much difference from this, but if you do you are \ 
likely to see shrinking become slightly faster and/or producing slightly worse \ 

This release adds the :func:~hypothesis.extra.django.from_form function, which \ 
allows automatic testing against Django forms. (:issue:35)

This release deprecates HealthCheck.hung_test and disables the associated \ 
runtime check for tests that ran for more than five minutes. Such a check is \ 
redundant now that we enforce the deadline and max_examples setting, which can \ 
be adjusted independently.

This release adds a new module, hypothesis.extra.lark, which you can use to \ 
generate strings matching a context-free grammar.

In this initial version, only :pypi:lark-parser EBNF grammars are supported, by \ 
the new :func:hypothesis.extra.lark.from_lark function.

This patch fixes a very rare overflow bug (:issue:1748) which could raise an \ 
InvalidArgument error in :func:~hypothesis.strategies.complex_numbers even \ 
though the arguments were valid.

This release makes some improvements to internal code organisation and \ 
documentation and has no impact on behaviour.

This release adds :func:~hypothesis.register_random, which registers \ 
random.Random instances or compatible objects to be seeded and reset by \ 
Hypothesis to ensure that test cases are deterministic.

We still recommend explicitly passing a random.Random instance from \ 
:func:~hypothesis.strategies.randoms if possible, but registering a \ 
framework-global state for Hypothesis to manage is better than flaky tests!

This patch fixes :issue:1387, where bounded \ 
:func:~hypothesis.strategies.integers with a very large range would almost \ 
always generate very large numbers. Now, we usually use the same tuned \ 
distribution as unbounded :func:~hypothesis.strategies.integers.

This release randomizes the order in which the shrinker tries some of its \ 
initial normalization operations. You are unlikely to see much difference as a \ 
result unless your generated examples are very large. In this case you may see \ 
some performance improvements in shrinking.

Welcome to the next major version of Hypothesis!

There are no new features here, as we release those in minor versions. Instead, \ 
4.0 is a chance for us to remove deprecated features (many already converted \ 
into no-ops), and turn a variety of warnings into errors.

If you were running on the last version of Hypothesis 3.x without any Hypothesis \ 
deprecation warnings (or using private APIs), this will be a very boring \ 
upgrade. In fact, nothing will change for you at all. Per :ref:our deprecation \ 
policy <deprecation-policy>, warnings added in the last six months (after \ 
2018-07-05) have not been converted to errors.

hypothesis.extra.datetime has been removed, replaced by the core date and time \ 
hypothesis.extra.fakefactory has been removed, replaced by general expansion of \ 
Hypothesis' strategies and the third-party ecosystem.
The SQLite example database backend has been removed.

The :obj:~hypothesis.settings.deadline is now enforced by default, rather than \ 
just emitting a warning when the default (200 milliseconds per test case) \ 
deadline is exceeded.
The database_file setting has been removed; use :obj:~hypothesis.settings.database.
The perform_health_check setting has been removed; use \ 
The max_shrinks setting has been removed; use :obj:~hypothesis.settings.phases \ 
to disable shrinking.
The min_satisfying_examples, max_iterations, strict, timeout, and use_coverage \ 
settings have been removed without user-configurable replacements.

The elements argument is now required for collection strategies.
The average_size argument was a no-op and has been removed.
Date and time strategies now only accept min_value and max_value for bounds.
:func:~hypothesis.strategies.builds now requires that the thing to build is \ 
passed as the first positional argument.
Alphabet validation for :func:~hypothesis.strategies.text raises errors, not \ 
warnings, as does category validation for \ 
The choices() strategy has been removed. Instead, you can use \ 
:func:~hypothesis.strategies.data with \ 
:func:~hypothesis.strategies.sampled_from, so choice(elements) becomes \ 
The streaming() strategy has been removed. Instead, you can use \ 
:func:~hypothesis.strategies.data and replace iterating over the stream with \ 
data.draw() calls.
:func:~hypothesis.strategies.sampled_from and \ 
:func:~hypothesis.strategies.permutations raise errors instead of warnings if \ 
passed a collection that is not a sequence.

Applying :func:@given <hypothesis.given> to a test function multiple times \ 
was really inefficient, and now it's also an error.
Using the .example() method of a strategy (intended for interactive exploration) \ 
within another strategy or a test function always weakened data generation and \ 
broke shrinking, and now it's an error too.
The HYPOTHESIS_DATABASE_FILE environment variable is no longer supported, as the \ 
database_file setting has been removed.
The HYPOTHESIS_VERBOSITY_LEVEL environment variable is no longer supported. You \ 
can use the --hypothesis-verbosity pytest argument instead, or write your own \ 
setup code using the settings profile system to replace it.
Using :func:@seed <hypothesis.seed> or :obj:derandomize=True \ 
<hypothesis.settings.derandomize> now forces :obj:database=None \ 
<hypothesis.settings.database> to ensure results are in fact reproducible. \ 
If :obj:~hypothesis.settings.database is not None, doing so also emits a \ 
Unused exception types have been removed from hypothesis.errors; namely \ 
AbnormalExit, BadData, BadTemplateDraw, DefinitelyNoSuchExample, Timeout, and \ 
   2019-01-07 09:31:28 by Adam Ciarcinski | Files touched by this commit (3) | Package updated
Log message:
py-hypothesis: updated to 3.86.5

This is a docs-only patch, which fixes some typos and removes a few hyperlinks \ 
for deprecated features.

This release changes the order in which the shrinker tries to delete data. For \ 
large and slow tests this may significantly improve the performance of \ 

This release fixes a bug where certain places Hypothesis internal errors could \ 
be raised during shrinking when a user exception occurred that suppressed an \ 
exception Hypothesis uses internally in its generation.

The two known ways to trigger this problem were:

Errors raised in stateful tests’ teardown function.
Errors raised in finally blocks that wrapped a call to data.draw.
These cases will now be handled correctly.

This patch is a docs-only change to fix a broken hyperlink.

This patch fixes issue 1732, where integers() would always return long values on \ 
Python 2.

This release ensures that infinite numbers are never generated by floats() with \ 
allow_infinity=False, which could previously happen in some cases where one \ 
bound was also provided.

The trivially inconsistent min_value=inf, allow_infinity=False now raises an \ 
InvalidArgumentError, as does the inverse with max_value. You can still use \ 
just(inf) to generate inf without violating other constraints.
   2018-12-13 08:11:49 by Adam Ciarcinski | Files touched by this commit (2) | Package updated
Log message:
py-hypothesis: updated to 3.83.1

This patch increases the variety of examples generated by st.from_type(type).

Our pytest plugin now warns you when strategy functions have been collected as \ 
tests, which may happen when e.g. using the :func:@composite \ 
<hypothesis.strategies.composite> decorator when you should be using \ 
@given(st.data()) for inline draws. Such functions always pass when treated as \ 
tests, because the lazy creation of strategies mean that the function body is \ 
never actually executed!

Hypothesis can now :ref:show statistics <statistics> when running under \ 
:pypi:pytest-xdist. Previously, statistics were only reported when all tests \ 
were run in a single process (:issue:700).

This patch fixes :issue:1667, where passing bounds of Numpy dtype int64 to \ 
:func:~hypothesis.strategies.integers could cause errors on Python 3 due to \ 
internal rounding.

Hypothesis now seeds and resets the global state of :class:np.random \ 
<numpy:numpy.random.RandomState> for each test case, to ensure that tests \ 
are reproducible.

This matches and complements the existing handling of the :mod:python:random \ 
module - Numpy simply maintains an independent PRNG for performance reasons.

This is a no-op release to add the new Framework :: Hypothesis trove classifier \ 
to :pypi:hypothesis on PyPI.

You can use it as a filter to find Hypothesis-related packages such as \ 
extensions as they add the tag over the coming weeks, or simply visit :doc:our \ 
curated list <strategies>.

The :ref:Hypothesis for Pandas extension <hypothesis-pandas> is now listed \ 
in setup.py, so you can pip install hypothesis[pandas]. Thanks to jmshi for this \ 
   2018-11-05 09:35:04 by Adam Ciarcinski | Files touched by this commit (2) | Package updated
Log message:
py-hypothesis: updated to 3.82.1

This patch fixes :func:~hypothesis.strategies.from_type on Python 2 for classes \ 
where cls.__init__ is object.__init__.

The alphabet argument for :func:~hypothesis.strategies.text now uses its default \ 
value of characters(blacklist_categories=('Cs',)) directly, instead of hiding \ 
that behind alphabet=None and replacing it within the function. Passing None is \ 
therefore deprecated.
   2018-10-29 09:21:57 by Adam Ciarcinski | Files touched by this commit (2) | Package updated
Log message:
py-hypothesis: updated to 3.81.0

:class:~hypothesis.stateful.GenericStateMachine and \ 
:class:~hypothesis.stateful.RuleBasedStateMachine now raise an explicit error \ 
when instances of :obj:~hypothesis.settings are assigned to the classes' \ 
settings attribute, which is a no-op (:issue:1643). Instead assign to \ 
SomeStateMachine.TestCase.settings, or use @settings(...) as a class decorator \ 
to handle this automatically.