Skip to content

Commit 412015d

Browse files
authored
Merge pull request #53 from tybug/tcs-mutator
Move to a typed choice sequence mutator
2 parents 43cd142 + 9f0eb27 commit 412015d

19 files changed

+927
-215
lines changed

Diff for: deps/check.in

+2
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,5 @@ attrs # to let mypy pick up on dataclass_transform
55
pep8-naming
66
shed
77
types-requests
8+
hypothesis
9+
pytest

Diff for: deps/check.txt

+13-7
Original file line numberDiff line numberDiff line change
@@ -4,27 +4,33 @@
44
#
55
# pip-compile --annotation-style=line --output-file=deps/check.txt deps/check.in
66
#
7-
attrs==24.3.0 # via -r deps/check.in
8-
black==24.10.0 # via shed
7+
attrs==25.1.0 # via -r deps/check.in, hypothesis
8+
black==25.1.0 # via shed
99
click==8.1.8 # via black
1010
com2ann==0.3.0 # via shed
11+
exceptiongroup==1.2.2 # via hypothesis, pytest
1112
flake8==7.1.1 # via pep8-naming
12-
libcst==1.5.1 # via shed
13+
hypothesis==6.125.2 # via -r deps/check.in
14+
iniconfig==2.0.0 # via pytest
15+
libcst==1.6.0 # via shed
1316
mccabe==0.7.0 # via flake8
14-
mypy==1.14.1 # via -r deps/check.in
17+
mypy==1.15.0 # via -r deps/check.in
1518
mypy-extensions==1.0.0 # via black, mypy
16-
packaging==24.2 # via black
19+
packaging==24.2 # via black, pytest
1720
pathspec==0.12.1 # via black
1821
pep8-naming==0.14.1 # via -r deps/check.in
1922
platformdirs==4.3.6 # via black
23+
pluggy==1.5.0 # via pytest
2024
pycodestyle==2.12.1 # via flake8
2125
pyflakes==3.2.0 # via flake8
26+
pytest==8.3.4 # via -r deps/check.in
2227
pyupgrade==3.19.1 # via shed
2328
pyyaml==6.0.2 # via libcst
24-
ruff==0.9.0 # via -r deps/check.in, shed
29+
ruff==0.9.4 # via -r deps/check.in, shed
2530
shed==2024.10.1 # via -r deps/check.in
31+
sortedcontainers==2.4.0 # via hypothesis
2632
tokenize-rt==6.1.0 # via pyupgrade
27-
tomli==2.2.1 # via black, mypy
33+
tomli==2.2.1 # via black, mypy, pytest
2834
types-requests==2.32.0.20241016 # via -r deps/check.in
2935
typing-extensions==4.12.2 # via black, mypy
3036
urllib3==2.3.0 # via types-requests

Diff for: deps/docs.txt

+13-13
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@
55
# pip-compile --annotation-style=line --output-file=deps/docs.txt deps/docs.in setup.py
66
#
77
alabaster==1.0.0 # via sphinx
8-
attrs==24.3.0 # via hypothesis
9-
babel==2.16.0 # via sphinx
10-
black==24.10.0 # via hypofuzz (setup.py), hypothesis
8+
attrs==25.1.0 # via hypothesis
9+
babel==2.17.0 # via sphinx
10+
black==25.1.0 # via hypofuzz (setup.py), hypothesis
1111
blinker==1.9.0 # via flask
12-
certifi==2024.12.14 # via requests
12+
certifi==2025.1.31 # via requests
1313
charset-normalizer==3.4.1 # via requests
1414
click==8.1.8 # via black, flask, hypothesis
1515
coverage==7.6.10 # via hypofuzz (setup.py)
@@ -20,38 +20,39 @@ dash-table==5.0.0 # via dash
2020
docutils==0.21.2 # via myst-parser, pybtex-docutils, sphinx, sphinx-rtd-theme, sphinxcontrib-bibtex
2121
exceptiongroup==1.2.2 # via hypothesis, pytest
2222
flask==3.0.3 # via dash
23-
hypothesis[cli]==6.123.13 # via hypofuzz (setup.py)
23+
hypothesis[cli]==6.125.2 # via hypofuzz (setup.py)
2424
idna==3.10 # via requests
2525
imagesize==1.4.1 # via sphinx
26-
importlib-metadata==8.5.0 # via dash
26+
importlib-metadata==8.6.1 # via dash
2727
iniconfig==2.0.0 # via pytest
2828
itsdangerous==2.2.0 # via flask
2929
jinja2==3.1.5 # via flask, myst-parser, sphinx
3030
latexcodec==3.0.0 # via pybtex
31-
libcst==1.5.1 # via hypofuzz (setup.py)
31+
libcst==1.6.0 # via hypofuzz (setup.py)
3232
markdown-it-py==3.0.0 # via mdit-py-plugins, myst-parser, rich
3333
markupsafe==3.0.2 # via jinja2, werkzeug
3434
mdit-py-plugins==0.4.2 # via myst-parser
3535
mdurl==0.1.2 # via markdown-it-py
3636
mypy-extensions==1.0.0 # via black
3737
myst-parser==4.0.0 # via -r deps/docs.in
38+
narwhals==1.24.2 # via plotly
3839
nest-asyncio==1.6.0 # via dash
39-
numpy==2.2.1 # via pandas
40+
numpy==2.2.2 # via pandas
4041
packaging==24.2 # via black, plotly, pytest, sphinx
4142
pandas==2.2.3 # via hypofuzz (setup.py)
4243
pathspec==0.12.1 # via black
4344
platformdirs==4.3.6 # via black
44-
plotly==5.24.1 # via dash
45+
plotly==6.0.0 # via dash
4546
pluggy==1.5.0 # via pytest
4647
psutil==6.1.1 # via hypofuzz (setup.py)
4748
pybtex==0.24.0 # via pybtex-docutils, sphinxcontrib-bibtex
4849
pybtex-docutils==1.0.3 # via sphinxcontrib-bibtex
4950
pygments==2.19.1 # via rich, sphinx
5051
pytest==8.3.4 # via hypofuzz (setup.py)
5152
python-dateutil==2.9.0.post0 # via pandas
52-
pytz==2024.2 # via pandas
53+
pytz==2025.1 # via pandas
5354
pyyaml==6.0.2 # via libcst, myst-parser, pybtex
54-
requests==2.32.3 # via dash, hypofuzz (setup.py), sphinx
55+
requests==2.32.3 # via dash, sphinx
5556
retrying==1.3.4 # via dash
5657
rich==13.9.4 # via hypothesis
5758
six==1.17.0 # via pybtex, python-dateutil, retrying
@@ -68,10 +69,9 @@ sphinxcontrib-jsmath==1.0.1 # via sphinx
6869
sphinxcontrib-programoutput==0.18 # via -r deps/docs.in
6970
sphinxcontrib-qthelp==2.0.0 # via sphinx
7071
sphinxcontrib-serializinghtml==2.0.0 # via sphinx
71-
tenacity==9.0.0 # via plotly
7272
tomli==2.2.1 # via black, pytest, sphinx
7373
typing-extensions==4.12.2 # via black, dash, rich
74-
tzdata==2024.2 # via pandas
74+
tzdata==2025.1 # via pandas
7575
urllib3==2.3.0 # via requests
7676
werkzeug==3.0.6 # via dash, flask
7777
zipp==3.21.0 # via importlib-metadata

Diff for: deps/test-old.txt

+11-11
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44
#
55
# pip-compile --annotation-style=line --output-file=deps/test-old.txt deps/test-old.in setup.py
66
#
7-
attrs==24.3.0 # via hypothesis
8-
black==24.10.0 # via hypofuzz (setup.py), hypothesis
7+
attrs==25.1.0 # via hypothesis
8+
black==25.1.0 # via hypofuzz (setup.py), hypothesis
99
blinker==1.9.0 # via flask
10-
certifi==2024.12.14 # via requests
10+
certifi==2025.1.31 # via requests
1111
charset-normalizer==3.4.1 # via requests
1212
click==8.1.8 # via black, flask, hypothesis
1313
coverage[toml]==7.6.10 # via hypofuzz (setup.py), pytest-cov
@@ -18,43 +18,43 @@ dash-table==5.0.0 # via dash
1818
exceptiongroup==1.2.2 # via hypothesis, pytest
1919
execnet==2.1.1 # via pytest-xdist
2020
flask==3.0.3 # via dash
21-
hypothesis[cli]==6.123.13 # via hypofuzz (setup.py)
21+
hypothesis[cli]==6.125.2 # via hypofuzz (setup.py)
2222
idna==3.10 # via requests
23-
importlib-metadata==8.5.0 # via dash
23+
importlib-metadata==8.6.1 # via dash
2424
iniconfig==2.0.0 # via pytest
2525
itsdangerous==2.2.0 # via flask
2626
jinja2==3.1.5 # via flask
27-
libcst==1.5.1 # via hypofuzz (setup.py)
27+
libcst==1.6.0 # via hypofuzz (setup.py)
2828
markdown-it-py==3.0.0 # via rich
2929
markupsafe==3.0.2 # via jinja2, werkzeug
3030
mdurl==0.1.2 # via markdown-it-py
3131
mypy-extensions==1.0.0 # via black
32+
narwhals==1.24.2 # via plotly
3233
nest-asyncio==1.6.0 # via dash
3334
numpy==2.0.2 # via -r deps/test.in, pandas
3435
packaging==24.2 # via black, plotly, pytest
3536
pandas==2.2.3 # via hypofuzz (setup.py)
3637
pathspec==0.12.1 # via black
3738
platformdirs==4.3.6 # via black
38-
plotly==5.24.1 # via dash
39+
plotly==6.0.0 # via dash
3940
pluggy==1.5.0 # via pytest
4041
psutil==6.1.1 # via hypofuzz (setup.py)
41-
pyarrow==18.1.0 # via -r deps/test.in
42+
pyarrow==19.0.0 # via -r deps/test.in
4243
pygments==2.19.1 # via rich
4344
pytest==7.4.4 # via -r deps/test.in, -r deps/test-old.in, hypofuzz (setup.py), pytest-cov, pytest-xdist
4445
pytest-cov==6.0.0 # via -r deps/test.in
4546
pytest-xdist==3.6.1 # via -r deps/test.in
4647
python-dateutil @ git+https://github.com/dateutil/dateutil.git@296d419fe6bf3b22897f8f210735ac9c4e1cb796 # via -r deps/test.in, pandas
47-
pytz==2024.2 # via pandas
48+
pytz==2025.1 # via pandas
4849
pyyaml==6.0.2 # via libcst
4950
requests==2.32.3 # via dash, hypofuzz (setup.py)
5051
retrying==1.3.4 # via dash
5152
rich==13.9.4 # via hypothesis
5253
six==1.17.0 # via python-dateutil, retrying
5354
sortedcontainers==2.4.0 # via hypothesis
54-
tenacity==9.0.0 # via plotly
5555
tomli==2.2.1 # via black, coverage, pytest
5656
typing-extensions==4.12.2 # via black, dash, rich
57-
tzdata==2024.2 # via pandas
57+
tzdata==2025.1 # via pandas
5858
urllib3==2.3.0 # via requests
5959
werkzeug==3.0.6 # via dash, flask
6060
zipp==3.21.0 # via importlib-metadata

Diff for: deps/test.txt

+11-11
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44
#
55
# pip-compile --annotation-style=line --output-file=deps/test.txt deps/test.in setup.py
66
#
7-
attrs==24.3.0 # via hypothesis
8-
black==24.10.0 # via hypofuzz (setup.py), hypothesis
7+
attrs==25.1.0 # via hypothesis
8+
black==25.1.0 # via hypofuzz (setup.py), hypothesis
99
blinker==1.9.0 # via flask
10-
certifi==2024.12.14 # via requests
10+
certifi==2025.1.31 # via requests
1111
charset-normalizer==3.4.1 # via requests
1212
click==8.1.8 # via black, flask, hypothesis
1313
coverage[toml]==7.6.10 # via hypofuzz (setup.py), pytest-cov
@@ -18,43 +18,43 @@ dash-table==5.0.0 # via dash
1818
exceptiongroup==1.2.2 # via hypothesis, pytest
1919
execnet==2.1.1 # via pytest-xdist
2020
flask==3.0.3 # via dash
21-
hypothesis[cli]==6.123.13 # via hypofuzz (setup.py)
21+
hypothesis[cli]==6.125.2 # via hypofuzz (setup.py)
2222
idna==3.10 # via requests
23-
importlib-metadata==8.5.0 # via dash
23+
importlib-metadata==8.6.1 # via dash
2424
iniconfig==2.0.0 # via pytest
2525
itsdangerous==2.2.0 # via flask
2626
jinja2==3.1.5 # via flask
27-
libcst==1.5.1 # via hypofuzz (setup.py)
27+
libcst==1.6.0 # via hypofuzz (setup.py)
2828
markdown-it-py==3.0.0 # via rich
2929
markupsafe==3.0.2 # via jinja2, werkzeug
3030
mdurl==0.1.2 # via markdown-it-py
3131
mypy-extensions==1.0.0 # via black
32+
narwhals==1.24.2 # via plotly
3233
nest-asyncio==1.6.0 # via dash
3334
numpy==2.0.2 # via -r deps/test.in, pandas
3435
packaging==24.2 # via black, plotly, pytest
3536
pandas==2.2.3 # via hypofuzz (setup.py)
3637
pathspec==0.12.1 # via black
3738
platformdirs==4.3.6 # via black
38-
plotly==5.24.1 # via dash
39+
plotly==6.0.0 # via dash
3940
pluggy==1.5.0 # via pytest
4041
psutil==6.1.1 # via hypofuzz (setup.py)
41-
pyarrow==18.1.0 # via -r deps/test.in
42+
pyarrow==19.0.0 # via -r deps/test.in
4243
pygments==2.19.1 # via rich
4344
pytest==8.3.4 # via -r deps/test.in, hypofuzz (setup.py), pytest-cov, pytest-xdist
4445
pytest-cov==6.0.0 # via -r deps/test.in
4546
pytest-xdist==3.6.1 # via -r deps/test.in
4647
python-dateutil @ git+https://github.com/dateutil/dateutil.git@296d419fe6bf3b22897f8f210735ac9c4e1cb796 # via -r deps/test.in, pandas
47-
pytz==2024.2 # via pandas
48+
pytz==2025.1 # via pandas
4849
pyyaml==6.0.2 # via libcst
4950
requests==2.32.3 # via -r deps/test.in, dash
5051
retrying==1.3.4 # via dash
5152
rich==13.9.4 # via hypothesis
5253
six==1.17.0 # via python-dateutil, retrying
5354
sortedcontainers==2.4.0 # via hypothesis
54-
tenacity==9.0.0 # via plotly
5555
tomli==2.2.1 # via black, coverage, pytest
5656
typing-extensions==4.12.2 # via black, dash, rich
57-
tzdata==2024.2 # via pandas
57+
tzdata==2025.1 # via pandas
5858
urllib3==2.3.0 # via requests
5959
werkzeug==3.0.6 # via dash, flask
6060
zipp==3.21.0 # via importlib-metadata

Diff for: docs-src/changelog.md

+6
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22
HypoFuzz uses [calendar-based versioning](https://calver.org/), with a
33
`YY-MM-patch` format.
44

5+
## 25.02.1
6+
7+
Use a new mutator based on the typed choice sequence (https://github.com/HypothesisWorks/hypothesis/issues/3921), bringing back compatibility with new Hypothesis versions.
8+
9+
We also now ignore code coverage inside the `pytest` and `_pytest` modules, which is unhelpful to fuzz.
10+
511
## 25.01.6
612

713
Pin upper Hypothesis bound for compatibility, until we support new Hypothesis internals.

Diff for: setup.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def local_file(name: str) -> str:
3737
"black >= 23.3.0",
3838
"coverage >= 5.2.1",
3939
"dash >= 2.0.0",
40-
"hypothesis[cli] >= 6.124.0, < 6.124.4",
40+
"hypothesis[cli] >= 6.124.9",
4141
"libcst >= 1.0.0",
4242
"pandas >= 1.0.0",
4343
"psutil >= 3.0.0",

Diff for: src/hypofuzz/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
"""Adaptive fuzzing for property-based tests using Hypothesis."""
22

3-
__version__ = "25.01.6"
3+
__version__ = "25.02.1"
44
__all__: list = []

0 commit comments

Comments
 (0)