Skip to content

Commit

Permalink
Update deps + release new version
Browse files Browse the repository at this point in the history
  • Loading branch information
Zac-HD committed Feb 2, 2024
1 parent 128da6d commit dbc24e1
Show file tree
Hide file tree
Showing 10 changed files with 139 additions and 150 deletions.
54 changes: 15 additions & 39 deletions deps/check.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,68 +4,44 @@
#
# pip-compile --annotation-style=line --output-file=deps/check.txt deps/check.in
#
annotated-types==0.6.0 # via pydantic
attrs==23.1.0 # via flake8-bugbear
attrs==23.2.0 # via flake8-bugbear
autoflake==2.2.1 # via shed
bandit==1.7.6 # via flake8-bandit
black==23.11.0 # via shed
cerberus==1.3.5 # via plette
certifi==2023.11.17 # via requests
charset-normalizer==3.3.2 # via requests
bandit==1.7.7 # via flake8-bandit
black==24.1.1 # via shed
click==8.1.7 # via black
com2ann==0.3.0 # via shed
distlib==0.3.7 # via requirementslib
docopt==0.6.2 # via pipreqs
flake8==6.1.0 # via -r deps/check.in, flake8-bandit, flake8-bugbear, flake8-builtins, flake8-comprehensions, flake8-docstrings, flake8-print, pep8-naming
flake8==7.0.0 # via -r deps/check.in, flake8-bandit, flake8-bugbear, flake8-builtins, flake8-comprehensions, flake8-docstrings, flake8-print, pep8-naming
flake8-bandit==4.1.1 # via -r deps/check.in
flake8-bugbear==23.12.2 # via -r deps/check.in
flake8-bugbear==24.1.17 # via -r deps/check.in
flake8-builtins==2.2.0 # via -r deps/check.in
flake8-comprehensions==3.14.0 # via -r deps/check.in
flake8-docstrings==1.7.0 # via -r deps/check.in
flake8-print==5.0.0 # via -r deps/check.in
gitdb==4.0.11 # via gitpython
gitpython==3.1.40 # via bandit
idna==3.6 # via requests
isort==5.13.0 # via shed
isort==5.13.2 # via shed
libcst==1.1.0 # via shed
markdown-it-py==3.0.0 # via rich
mccabe==0.7.0 # via flake8
mdurl==0.1.2 # via markdown-it-py
mypy==1.7.1 # via -r deps/check.in
mypy==1.8.0 # via -r deps/check.in
mypy-extensions==1.0.0 # via black, mypy, typing-inspect
packaging==23.2 # via black
pathspec==0.11.2 # via black
pathspec==0.12.1 # via black
pbr==6.0.0 # via stevedore
pep517==0.13.1 # via requirementslib
pep8-naming==0.13.3 # via -r deps/check.in
pip-api==0.0.30 # via isort
pipreqs==0.4.13 # via isort
platformdirs==4.1.0 # via black, requirementslib
plette[validation]==0.4.4 # via requirementslib
platformdirs==4.2.0 # via black
pycodestyle==2.11.1 # via flake8, flake8-print
pydantic==2.5.2 # via requirementslib
pydantic-core==2.14.5 # via pydantic
pydocstyle==6.3.0 # via flake8-docstrings
pyflakes==3.1.0 # via autoflake, flake8
pyflakes==3.2.0 # via autoflake, flake8
pygments==2.17.2 # via rich
pyupgrade==3.15.0 # via shed
pyyaml==6.0.1 # via bandit, libcst
requests==2.31.0 # via requirementslib, yarg
requirementslib==3.0.0 # via isort
rich==13.7.0 # via bandit
shed==2023.6.1 # via -r deps/check.in
smmap==5.0.1 # via gitdb
shed==2024.1.1 # via -r deps/check.in
snowballstemmer==2.2.0 # via pydocstyle
stevedore==5.1.0 # via bandit
tokenize-rt==5.2.0 # via pyupgrade
tomli==2.0.1 # via autoflake, black, mypy, pep517
tomlkit==0.12.3 # via plette, requirementslib
types-requests==2.31.0.10 # via -r deps/check.in
typing-extensions==4.8.0 # via black, libcst, mypy, pydantic, pydantic-core, typing-inspect
tomli==2.0.1 # via autoflake, black, mypy
types-requests==2.31.0.20240125 # via -r deps/check.in
typing-extensions==4.9.0 # via black, libcst, mypy, typing-inspect
typing-inspect==0.9.0 # via libcst
urllib3==2.1.0 # via requests, types-requests
yarg==0.1.9 # via pipreqs

# The following packages are considered to be unsafe in a requirements file:
# pip
# setuptools
urllib3==2.2.0 # via types-requests
63 changes: 31 additions & 32 deletions deps/docs.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,77 +4,76 @@
#
# pip-compile --annotation-style=line --output-file=deps/docs.txt deps/docs.in setup.py
#
alabaster==0.7.13 # via sphinx
ansi2html==1.8.0 # via dash
attrs==23.1.0 # via hypothesis
babel==2.13.1 # via sphinx
black==23.11.0 # via hypofuzz (setup.py), hypothesis
alabaster==0.7.16 # via sphinx
attrs==23.2.0 # via hypothesis
babel==2.14.0 # via sphinx
black==24.1.1 # via hypofuzz (setup.py), hypothesis
blinker==1.7.0 # via flask
certifi==2023.11.17 # via requests
certifi==2024.2.2 # via requests
charset-normalizer==3.3.2 # via requests
click==8.1.7 # via black, flask, hypothesis
coverage==7.3.2 # via hypofuzz (setup.py)
dash==2.14.2 # via hypofuzz (setup.py)
coverage==7.4.1 # via hypofuzz (setup.py)
dash==2.15.0 # via hypofuzz (setup.py)
dash-core-components==2.0.0 # via dash
dash-html-components==2.0.0 # via dash
dash-table==5.0.0 # via dash
docutils==0.20.1 # via myst-parser, pybtex-docutils, sphinx, sphinx-rtd-theme, sphinxcontrib-bibtex
exceptiongroup==1.2.0 # via hypothesis, pytest
flask==3.0.0 # via dash
hypothesis[cli]==6.91.1 # via hypofuzz (setup.py)
flask==3.0.1 # via dash
hypothesis[cli]==6.97.4 # via hypofuzz (setup.py)
idna==3.6 # via requests
imagesize==1.4.1 # via sphinx
importlib-metadata==7.0.0 # via dash
importlib-metadata==7.0.1 # via dash
iniconfig==2.0.0 # via pytest
itsdangerous==2.1.2 # via flask
jinja2==3.1.2 # via flask, myst-parser, sphinx
jinja2==3.1.3 # via flask, myst-parser, sphinx
latexcodec==2.0.1 # via pybtex
libcst==1.1.0 # via hypofuzz (setup.py)
markdown-it-py==3.0.0 # via mdit-py-plugins, myst-parser, rich
markupsafe==2.1.3 # via jinja2, werkzeug
markupsafe==2.1.4 # via jinja2, werkzeug
mdit-py-plugins==0.4.0 # via myst-parser
mdurl==0.1.2 # via markdown-it-py
mypy-extensions==1.0.0 # via black, typing-inspect
myst-parser==2.0.0 # via -r deps/docs.in
nest-asyncio==1.5.8 # via dash
numpy==1.26.2 # via pandas
nest-asyncio==1.6.0 # via dash
numpy==1.26.3 # via pandas
packaging==23.2 # via black, plotly, pytest, sphinx
pandas==2.1.4 # via hypofuzz (setup.py)
pathspec==0.11.2 # via black
platformdirs==4.1.0 # via black
pandas==2.2.0 # via hypofuzz (setup.py)
pathspec==0.12.1 # via black
platformdirs==4.2.0 # via black
plotly==5.18.0 # via dash
pluggy==1.3.0 # via pytest
psutil==5.9.6 # via hypofuzz (setup.py)
pluggy==1.4.0 # via pytest
psutil==5.9.8 # via hypofuzz (setup.py)
pybtex==0.24.0 # via pybtex-docutils, sphinxcontrib-bibtex
pybtex-docutils==1.0.3 # via sphinxcontrib-bibtex
pygments==2.17.2 # via rich, sphinx
pytest==7.4.3 # via hypofuzz (setup.py)
pytest==8.0.0 # via hypofuzz (setup.py)
python-dateutil==2.8.2 # via pandas
pytz==2023.3.post1 # via pandas
pytz==2024.1 # via pandas
pyyaml==6.0.1 # via libcst, myst-parser, pybtex
requests==2.31.0 # via dash, hypofuzz (setup.py), sphinx
retrying==1.3.4 # via dash
rich==13.7.0 # via hypothesis
six==1.16.0 # via latexcodec, pybtex, python-dateutil, retrying
snowballstemmer==2.2.0 # via sphinx
sortedcontainers==2.4.0 # via hypothesis
sphinx==7.2.6 # via -r deps/docs.in, myst-parser, sphinx-rtd-theme, sphinxcontrib-applehelp, sphinxcontrib-bibtex, sphinxcontrib-devhelp, sphinxcontrib-htmlhelp, sphinxcontrib-jquery, sphinxcontrib-programoutput, sphinxcontrib-qthelp, sphinxcontrib-serializinghtml
sphinx==7.2.6 # via -r deps/docs.in, myst-parser, sphinx-rtd-theme, sphinxcontrib-bibtex, sphinxcontrib-jquery, sphinxcontrib-programoutput
sphinx-rtd-theme==2.0.0 # via -r deps/docs.in
sphinxcontrib-applehelp==1.0.7 # via sphinx
sphinxcontrib-bibtex==2.6.1 # via -r deps/docs.in
sphinxcontrib-devhelp==1.0.5 # via sphinx
sphinxcontrib-htmlhelp==2.0.4 # via sphinx
sphinxcontrib-applehelp==1.0.8 # via sphinx
sphinxcontrib-bibtex==2.6.2 # via -r deps/docs.in
sphinxcontrib-devhelp==1.0.6 # via sphinx
sphinxcontrib-htmlhelp==2.0.5 # via sphinx
sphinxcontrib-jquery==4.1 # via sphinx-rtd-theme
sphinxcontrib-jsmath==1.0.1 # via sphinx
sphinxcontrib-programoutput==0.17 # via -r deps/docs.in
sphinxcontrib-qthelp==1.0.6 # via sphinx
sphinxcontrib-serializinghtml==1.1.9 # via sphinx
sphinxcontrib-qthelp==1.0.7 # via sphinx
sphinxcontrib-serializinghtml==1.1.10 # via sphinx
tenacity==8.2.3 # via plotly
tomli==2.0.1 # via black, pytest
typing-extensions==4.8.0 # via black, dash, libcst, typing-inspect
typing-extensions==4.9.0 # via black, dash, libcst, typing-inspect
typing-inspect==0.9.0 # via libcst
tzdata==2023.3 # via pandas
urllib3==2.1.0 # via requests
tzdata==2023.4 # via pandas
urllib3==2.2.0 # via requests
werkzeug==3.0.1 # via dash, flask
zipp==3.17.0 # via importlib-metadata

Expand Down
45 changes: 22 additions & 23 deletions deps/test.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,47 +4,46 @@
#
# pip-compile --annotation-style=line --output-file=deps/test.txt deps/test.in setup.py
#
ansi2html==1.8.0 # via dash
attrs==23.1.0 # via hypothesis
black==23.11.0 # via hypofuzz (setup.py), hypothesis
attrs==23.2.0 # via hypothesis
black==24.1.1 # via hypofuzz (setup.py), hypothesis
blinker==1.7.0 # via flask
certifi==2023.11.17 # via requests
certifi==2024.2.2 # via requests
charset-normalizer==3.3.2 # via requests
click==8.1.7 # via black, flask, hypothesis
coverage[toml]==7.3.2 # via hypofuzz (setup.py), pytest-cov
dash==2.14.2 # via hypofuzz (setup.py)
coverage[toml]==7.4.1 # via hypofuzz (setup.py), pytest-cov
dash==2.15.0 # via hypofuzz (setup.py)
dash-core-components==2.0.0 # via dash
dash-html-components==2.0.0 # via dash
dash-table==5.0.0 # via dash
exceptiongroup==1.2.0 # via hypothesis, pytest
execnet==2.0.2 # via pytest-xdist
flask==3.0.0 # via dash
hypothesis[cli]==6.91.1 # via hypofuzz (setup.py)
flask==3.0.1 # via dash
hypothesis[cli]==6.97.4 # via hypofuzz (setup.py)
idna==3.6 # via requests
importlib-metadata==7.0.0 # via dash
importlib-metadata==7.0.1 # via dash
iniconfig==2.0.0 # via pytest
itsdangerous==2.1.2 # via flask
jinja2==3.1.2 # via flask
jinja2==3.1.3 # via flask
libcst==1.1.0 # via hypofuzz (setup.py)
markdown-it-py==3.0.0 # via rich
markupsafe==2.1.3 # via jinja2, werkzeug
markupsafe==2.1.4 # via jinja2, werkzeug
mdurl==0.1.2 # via markdown-it-py
mypy-extensions==1.0.0 # via black, typing-inspect
nest-asyncio==1.5.8 # via dash
numpy==1.26.2 # via pandas
nest-asyncio==1.6.0 # via dash
numpy==1.26.3 # via pandas
packaging==23.2 # via black, plotly, pytest
pandas==2.1.4 # via hypofuzz (setup.py)
pathspec==0.11.2 # via black
platformdirs==4.1.0 # via black
pandas==2.2.0 # via hypofuzz (setup.py)
pathspec==0.12.1 # via black
platformdirs==4.2.0 # via black
plotly==5.18.0 # via dash
pluggy==1.3.0 # via pytest
psutil==5.9.6 # via hypofuzz (setup.py)
pluggy==1.4.0 # via pytest
psutil==5.9.8 # via hypofuzz (setup.py)
pygments==2.17.2 # via rich
pytest==7.4.3 # via -r deps/test.in, hypofuzz (setup.py), pytest-cov, pytest-xdist
pytest==8.0.0 # via -r deps/test.in, hypofuzz (setup.py), pytest-cov, pytest-xdist
pytest-cov==4.1.0 # via -r deps/test.in
pytest-xdist==3.5.0 # via -r deps/test.in
python-dateutil==2.8.2 # via pandas
pytz==2023.3.post1 # via pandas
pytz==2024.1 # via pandas
pyyaml==6.0.1 # via libcst
requests==2.31.0 # via dash, hypofuzz (setup.py)
retrying==1.3.4 # via dash
Expand All @@ -53,10 +52,10 @@ six==1.16.0 # via python-dateutil, retrying
sortedcontainers==2.4.0 # via hypothesis
tenacity==8.2.3 # via plotly
tomli==2.0.1 # via black, coverage, pytest
typing-extensions==4.8.0 # via black, dash, libcst, typing-inspect
typing-extensions==4.9.0 # via black, dash, libcst, typing-inspect
typing-inspect==0.9.0 # via libcst
tzdata==2023.3 # via pandas
urllib3==2.1.0 # via requests
tzdata==2023.4 # via pandas
urllib3==2.2.0 # via requests
werkzeug==3.0.1 # via dash, flask
zipp==3.17.0 # via importlib-metadata

Expand Down
5 changes: 5 additions & 0 deletions docs-src/changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@
HypoFuzz uses [calendar-based versioning](https://calver.org/), with a
`YY-MM-patch` format.

## 24.02.1
Now requires [Hypothesis 6.93.2](https://hypothesis.readthedocs.io/en/latest/changes.html#v6-93-2)
or later, fixing compatibility with some unstable internals that HypoFuzz hooks into (yes, again).
Also deduplicates the displayed covering examples in the dashboard, when their reprs are identical.

## 23.12.1
Now requires [Hypothesis 6.91](https://hypothesis.readthedocs.io/en/latest/changes.html#v6-91-0)
or later, fixing compatibility with some unstable internals that HypoFuzz hooks into.
Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ def local_file(name: str) -> str:
"black >= 23.3.0",
"coverage >= 5.2.1",
"dash >= 2.0.0",
"hypothesis[cli] >= 6.91.0",
"hypothesis[cli] >= 6.93.2",
"libcst >= 1.0.0",
"pandas >= 1.0.0",
"psutil >= 3.0.0",
Expand Down
2 changes: 1 addition & 1 deletion src/hypofuzz/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
"""Adaptive fuzzing for property-based tests using Hypothesis."""

__version__ = "23.12.1"
__version__ = "24.2.1"
__all__: list = []
15 changes: 11 additions & 4 deletions src/hypofuzz/dashboard.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
"""Live web dashboard for a fuzzing run."""

import atexit
import datetime
import os
Expand Down Expand Up @@ -142,6 +143,15 @@ def display_page(pathname: str) -> html.Div:
href=f"https://app.pytrace.com/?open={url}",
)
add.append(html.Pre(children=[link]))

_seen_cov_examples = set()
covering_examples = []
for row in last_update.get("seed_pool", []):
example = try_format(row[1]), row[2]
if example not in _seen_cov_examples:
_seen_cov_examples.add(example)
covering_examples.append(example)

return html.Div(
children=[
dcc.Link("Back to main dashboard", href="/"),
Expand Down Expand Up @@ -169,10 +179,7 @@ def display_page(pathname: str) -> html.Div:
"not covered by any previous, more-minimal, example."
]
),
]
+ [
html.Pre([html.Code([try_format(row[1]), row[2], "\n"])])
for row in last_update.get("seed_pool", [])
*(html.Pre([html.Code([*ex, "\n"])]) for ex in covering_examples),
]
)

Expand Down
13 changes: 7 additions & 6 deletions src/hypofuzz/hy.py
Original file line number Diff line number Diff line change
Expand Up @@ -274,10 +274,9 @@ def _run_test_on(
# Generate all arguments to the test function.
args = self.__stuff.args
kwargs = dict(self.__stuff.kwargs)
a, kw, argslices = context.prep_args_kwargs_from_strategies(
(), self.__stuff.given_kwargs
kw, argslices = context.prep_args_kwargs_from_strategies(
self.__stuff.given_kwargs
)
assert not a, "strategies all moved to kwargs by now"
kwargs.update(kw)

printer = RepresentationPrinter(context=context)
Expand Down Expand Up @@ -373,9 +372,11 @@ def _json_description(self) -> Report:
"loaded_from_db": len(self.pool._loaded_from_database),
"status_counts": self.status_counts,
"seed_pool": self.pool.json_report,
"note": "replaying saved examples"
if self._replay_buffer
else ("shrinking known examples" if self.pool._in_distill_phase else ""),
"note": (
"replaying saved examples"
if self._replay_buffer
else ("shrinking known examples" if self.pool._in_distill_phase else "")
),
}
if self.pool.interesting_examples:
report["note"] = (
Expand Down
1 change: 1 addition & 0 deletions src/hypofuzz/interface.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
"""CLI and Python API for the fuzzer."""

import io
import sys
from contextlib import redirect_stdout, suppress
Expand Down
Loading

0 comments on commit dbc24e1

Please sign in to comment.