From da4b3b1447bfc78434eea9509c31ddb2070b0c0d Mon Sep 17 00:00:00 2001 From: CI on behalf of the Hypothesis team Date: Sat, 1 Mar 2025 17:05:09 -0800 Subject: [PATCH 1/3] Update pinned dependencies --- .github/workflows/main.yml | 2 +- hypothesis-python/RELEASE.rst | 4 + hypothesis-python/setup.py | 2 +- .../vendor/tlds-alpha-by-domain.txt | 4 +- hypothesis-python/tox.ini | 6 +- requirements/coverage.txt | 10 +- requirements/fuzzing.txt | 122 ++++++++---------- requirements/tools.txt | 49 +++---- tooling/src/hypothesistooling/__main__.py | 15 ++- 9 files changed, 105 insertions(+), 109 deletions(-) create mode 100644 hypothesis-python/RELEASE.rst diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index f8aa1cf397..f587d1e514 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -227,7 +227,7 @@ jobs: NODE_VERSION: 18 # Note that the versions below must be updated in sync; we've automated # that with `update_pyodide_versions()` in our weekly cronjob. - PYODIDE_VERSION: 0.27.2 + PYODIDE_VERSION: 0.27.3 PYTHON_VERSION: 3.12.7 EMSCRIPTEN_VERSION: 3.1.58 steps: diff --git a/hypothesis-python/RELEASE.rst b/hypothesis-python/RELEASE.rst new file mode 100644 index 0000000000..cfbd34824b --- /dev/null +++ b/hypothesis-python/RELEASE.rst @@ -0,0 +1,4 @@ +RELEASE_TYPE: patch + +This patch updates our vendored `list of top-level domains `__, +which is used by the provisional :func:`~hypothesis.provisional.domains` strategy. diff --git a/hypothesis-python/setup.py b/hypothesis-python/setup.py index 5dd5331406..f7e78a7f93 100644 --- a/hypothesis-python/setup.py +++ b/hypothesis-python/setup.py @@ -60,7 +60,7 @@ def local_file(name): "pytest": ["pytest>=4.6"], "dpcontracts": ["dpcontracts>=0.4"], "redis": ["redis>=3.0.0"], - "crosshair": ["hypothesis-crosshair>=0.0.19", "crosshair-tool>=0.0.82"], + "crosshair": ["hypothesis-crosshair>=0.0.20", "crosshair-tool>=0.0.82"], # zoneinfo is an odd one: every dependency is platform-conditional. "zoneinfo": [ "tzdata>=2025.1 ; sys_platform == 'win32' or sys_platform == 'emscripten'", diff --git a/hypothesis-python/src/hypothesis/vendor/tlds-alpha-by-domain.txt b/hypothesis-python/src/hypothesis/vendor/tlds-alpha-by-domain.txt index a5776075a1..b534e60ce4 100644 --- a/hypothesis-python/src/hypothesis/vendor/tlds-alpha-by-domain.txt +++ b/hypothesis-python/src/hypothesis/vendor/tlds-alpha-by-domain.txt @@ -1,4 +1,4 @@ -# Version 2024092800, Last Updated Sat Sep 28 07:07:01 2024 UTC +# Version 2025030100, Last Updated Sat Mar 1 07:07:02 2025 UTC AAA AARP ABB @@ -627,7 +627,6 @@ KAUFEN KDDI KE KERRYHOTELS -KERRYLOGISTICS KERRYPROPERTIES KFH KG @@ -691,7 +690,6 @@ LIMITED LIMO LINCOLN LINK -LIPSY LIVE LIVING LK diff --git a/hypothesis-python/tox.ini b/hypothesis-python/tox.ini index 33a8144d59..41762f0489 100644 --- a/hypothesis-python/tox.ini +++ b/hypothesis-python/tox.ini @@ -161,21 +161,21 @@ commands = setenv= PYTHONWARNDEFAULTENCODING=1 commands = - pip install django==4.2.18 + pip install django==4.2.19 python -bb -X dev -m tests.django.manage test tests.django {posargs} [testenv:django50] setenv= PYTHONWARNDEFAULTENCODING=1 commands = - pip install django==5.0.11 + pip install django==5.0.12 python -bb -X dev -m tests.django.manage test tests.django {posargs} [testenv:django51] setenv= PYTHONWARNDEFAULTENCODING=1 commands = - pip install django==5.1.5 + pip install django==5.1.6 python -bb -X dev -m tests.django.manage test tests.django {posargs} [testenv:py{39}-nose] diff --git a/requirements/coverage.txt b/requirements/coverage.txt index db16f1f9b8..9a3dfb33c4 100644 --- a/requirements/coverage.txt +++ b/requirements/coverage.txt @@ -18,7 +18,7 @@ click==8.1.8 # via # -r requirements/coverage.in # black -coverage[toml]==7.6.10 +coverage[toml]==7.6.12 # via pytest-cov dpcontracts==0.6.0 # via -r requirements/coverage.in @@ -28,7 +28,7 @@ exceptiongroup==1.2.2 ; python_version < "3.11" # pytest execnet==2.1.1 # via pytest-xdist -fakeredis==2.26.2 +fakeredis==2.27.0 # via -r requirements/coverage.in iniconfig==2.0.0 # via pytest @@ -38,7 +38,7 @@ libcst==1.6.0 # via -r requirements/coverage.in mypy-extensions==1.0.0 # via black -numpy==2.2.2 +numpy==2.2.3 # via # -r requirements/coverage.in # pandas @@ -58,7 +58,7 @@ pluggy==1.5.0 # via pytest ptyprocess==0.7.0 # via pexpect -pyarrow==19.0.0 +pyarrow==19.0.1 # via -r requirements/coverage.in pytest==8.3.4 # via @@ -73,7 +73,7 @@ python-dateutil==2.9.0.post0 # via # -r requirements/coverage.in # pandas -pytz==2024.2 +pytz==2025.1 # via # -r requirements/coverage.in # pandas diff --git a/requirements/fuzzing.txt b/requirements/fuzzing.txt index 4bb3c80263..bc8a1774c4 100644 --- a/requirements/fuzzing.txt +++ b/requirements/fuzzing.txt @@ -6,6 +6,8 @@ # annotated-types==0.7.0 # via -r requirements/coverage.in +anyio==4.8.0 + # via starlette async-timeout==5.0.1 # via redis attrs==24.1.0 @@ -13,62 +15,59 @@ attrs==24.1.0 # -r requirements/test.in # hypothesis # hypothesis (hypothesis-python/setup.py) + # outcome + # trio black==25.1.0 # via # -r requirements/coverage.in # hypofuzz # hypothesis -blinker==1.9.0 - # via flask -certifi==2024.12.14 - # via requests -charset-normalizer==3.4.1 - # via requests click==8.1.8 # via # -r requirements/coverage.in # black - # flask # hypothesis -coverage[toml]==7.6.10 +coverage[toml]==7.6.12 # via # hypofuzz # pytest-cov -dash==2.18.2 - # via hypofuzz -dash-core-components==2.0.0 - # via dash -dash-html-components==2.0.0 - # via dash -dash-table==5.0.0 - # via dash dpcontracts==0.6.0 # via -r requirements/coverage.in exceptiongroup==1.2.2 ; python_version < "3.11" # via + # anyio + # hypercorn # hypothesis # hypothesis (hypothesis-python/setup.py) # pytest + # taskgroup + # trio execnet==2.1.1 # via pytest-xdist -fakeredis==2.26.2 +fakeredis==2.27.0 # via -r requirements/coverage.in -flask==3.0.3 - # via dash -hypofuzz==25.1.5 +h11==0.14.0 + # via + # hypercorn + # wsproto +h2==4.2.0 + # via hypercorn +hpack==4.1.0 + # via h2 +hypercorn==0.17.3 + # via hypofuzz +hyperframe==6.1.0 + # via h2 +hypofuzz==25.2.5 # via -r requirements/fuzzing.in -hypothesis[cli]==6.124.7 +hypothesis[cli,watchdog]==6.127.3 # via hypofuzz idna==3.10 - # via requests -importlib-metadata==8.6.1 - # via dash + # via + # anyio + # trio iniconfig==2.0.0 # via pytest -itsdangerous==2.2.0 - # via flask -jinja2==3.1.5 - # via flask lark==1.2.2 # via -r requirements/coverage.in libcst==1.6.0 @@ -77,44 +76,37 @@ libcst==1.6.0 # hypofuzz markdown-it-py==3.0.0 # via rich -markupsafe==3.0.2 - # via - # jinja2 - # werkzeug mdurl==0.1.2 # via markdown-it-py mypy-extensions==1.0.0 # via black -nest-asyncio==1.6.0 - # via dash -numpy==2.2.2 +numpy==2.2.3 # via # -r requirements/coverage.in # pandas +outcome==1.3.0.post0 + # via trio packaging==24.2 # via # black - # plotly # pytest pandas==2.2.3 - # via - # -r requirements/coverage.in - # hypofuzz + # via -r requirements/coverage.in pathspec==0.12.1 # via black pexpect==4.9.0 # via -r requirements/test.in platformdirs==4.3.6 # via black -plotly==5.24.1 - # via dash pluggy==1.5.0 # via pytest -psutil==6.1.1 +priority==2.0.0 + # via hypercorn +psutil==7.0.0 # via hypofuzz ptyprocess==0.7.0 # via pexpect -pyarrow==19.0.0 +pyarrow==19.0.1 # via -r requirements/coverage.in pygments==2.19.1 # via rich @@ -132,7 +124,7 @@ python-dateutil==2.9.0.post0 # via # -r requirements/coverage.in # pandas -pytz==2024.2 +pytz==2025.1 # via # -r requirements/coverage.in # pandas @@ -140,46 +132,46 @@ pyyaml==6.0.2 # via libcst redis==5.2.1 # via fakeredis -requests==2.32.3 - # via dash -retrying==1.3.4 - # via dash rich==13.9.4 # via hypothesis six==1.17.0 + # via python-dateutil +sniffio==1.3.1 # via - # python-dateutil - # retrying + # anyio + # trio sortedcontainers==2.4.0 # via # fakeredis # hypothesis # hypothesis (hypothesis-python/setup.py) -tenacity==9.0.0 - # via plotly + # trio +starlette==0.46.0 + # via hypofuzz +taskgroup==0.2.2 + # via hypercorn tomli==2.2.1 # via # black # coverage + # hypercorn # pytest +trio==0.29.0 + # via hypofuzz typing-extensions==4.12.2 # via # -r requirements/coverage.in + # anyio # black - # dash # fakeredis + # hypercorn # rich + # taskgroup tzdata==2025.1 # via pandas -urllib3==2.3.0 - # via requests -werkzeug==3.0.6 - # via - # dash - # flask -zipp==3.21.0 - # via importlib-metadata - -# The following packages are considered to be unsafe in a requirements file: -setuptools==75.8.0 - # via dash +watchdog==6.0.0 + # via + # -r requirements/coverage.in + # hypothesis +wsproto==1.2.0 + # via hypercorn diff --git a/requirements/tools.txt b/requirements/tools.txt index 39b3645640..f45e4fe1eb 100644 --- a/requirements/tools.txt +++ b/requirements/tools.txt @@ -18,11 +18,11 @@ attrs==24.1.0 # hypothesis (hypothesis-python/setup.py) autoflake==2.3.1 # via shed -babel==2.16.0 +babel==2.17.0 # via sphinx backports-tarfile==1.2.0 # via jaraco-context -beautifulsoup4==4.12.3 +beautifulsoup4==4.13.3 # via sphinx-codeautolink black==25.1.0 # via shed @@ -30,9 +30,9 @@ blinker==1.9.0 # via pelican build==1.2.2.post1 # via pip-tools -cachetools==5.5.1 +cachetools==5.5.2 # via tox -certifi==2024.12.14 +certifi==2025.1.31 # via requests cffi==1.17.1 # via cryptography @@ -44,24 +44,24 @@ click==8.1.8 # via # black # pip-tools -codespell==2.4.0 +codespell==2.4.1 # via -r requirements/tools.in colorama==0.4.6 # via tox com2ann==0.3.0 # via shed -coverage==7.6.10 +coverage==7.6.12 # via -r requirements/tools.in -cryptography==44.0.0 +cryptography==44.0.1 # via # secretstorage # types-pyopenssl # types-redis -decorator==5.1.1 +decorator==5.2.1 # via ipython distlib==0.3.9 # via virtualenv -django==5.1.5 +django==5.1.6 # via -r requirements/tools.in docutils==0.21.2 # via @@ -101,9 +101,9 @@ importlib-metadata==8.6.1 # via keyring iniconfig==2.0.0 # via pytest -ipython==8.31.0 +ipython==8.33.0 # via -r requirements/tools.in -isort==5.13.2 +isort==6.0.1 # via shed jaraco-classes==3.4.0 # via keyring @@ -113,7 +113,7 @@ jaraco-functools==4.1.0 # via keyring jedi==0.19.2 # via ipython -jeepney==0.8.0 +jeepney==0.9.0 # via # keyring # secretstorage @@ -145,17 +145,17 @@ more-itertools==10.6.0 # via # jaraco-classes # jaraco-functools -mypy==1.14.1 +mypy==1.15.0 # via -r requirements/tools.in mypy-extensions==1.0.0 # via # black # mypy -nh3==0.2.20 +nh3==0.2.21 # via readme-renderer nodeenv==1.9.1 # via pyright -numpy==2.2.2 +numpy==2.2.3 # via -r requirements/tools.in ordered-set==4.1.0 # via pelican @@ -212,7 +212,7 @@ pyproject-hooks==1.2.0 # via # build # pip-tools -pyright==1.1.392.post0 +pyright==1.1.395 # via -r requirements/tools.in pytest==8.3.4 # via @@ -224,7 +224,7 @@ python-dateutil==2.9.0.post0 # via # -r requirements/tools.in # pelican -pytz==2024.2 +pytz==2025.1 # via feedgenerator pyupgrade==3.19.1 # via shed @@ -252,7 +252,7 @@ rich==13.9.4 # via # pelican # twine -ruff==0.9.3 +ruff==0.9.9 # via -r requirements/tools.in secretstorage==3.3.3 # via keyring @@ -275,7 +275,7 @@ sphinx==8.1.3 # sphinx-hoverxref # sphinx-rtd-theme # sphinxcontrib-jquery -sphinx-codeautolink==0.16.2 +sphinx-codeautolink==0.17.1 # via -r requirements/tools.in sphinx-hoverxref==1.4.2 # via -r requirements/tools.in @@ -332,17 +332,18 @@ types-click==7.1.8 # via -r requirements/tools.in types-pyopenssl==24.1.0.20240722 # via types-redis -types-pytz==2024.2.0.20241221 +types-pytz==2025.1.0.20250204 # via -r requirements/tools.in types-redis==4.6.0.20241004 # via -r requirements/tools.in -types-setuptools==75.8.0.20250110 +types-setuptools==75.8.2.20250301 # via types-cffi typing-extensions==4.12.2 # via # -r requirements/tools.in # anyio # asgiref + # beautifulsoup4 # black # ipython # mypy @@ -355,7 +356,7 @@ urllib3==2.3.0 # via # requests # twine -virtualenv==20.29.1 +virtualenv==20.29.2 # via tox watchdog==6.0.0 # via -r requirements/tools.in @@ -369,7 +370,7 @@ zipp==3.21.0 # via importlib-metadata # The following packages are considered to be unsafe in a requirements file: -pip==24.3.1 +pip==25.0.1 # via pip-tools -setuptools==75.8.0 +setuptools==75.8.2 # via pip-tools diff --git a/tooling/src/hypothesistooling/__main__.py b/tooling/src/hypothesistooling/__main__.py index f1280be1cb..a6ce357d08 100644 --- a/tooling/src/hypothesistooling/__main__.py +++ b/tooling/src/hypothesistooling/__main__.py @@ -325,9 +325,9 @@ def update_python_versions(): DJANGO_VERSIONS = { - "4.2": "4.2.18", - "5.0": "5.0.11", - "5.1": "5.1.5", + "4.2": "4.2.19", + "5.0": "5.0.12", + "5.1": "5.1.6", } @@ -501,13 +501,14 @@ def run_tox(task, version, *args): "3.9": "3.9.21", "3.10": "3.10.16", "3.11": "3.11.11", - "3.12": "3.12.8", - "3.13": "3.13.1", + "3.12": "3.12.9", + "3.13": "3.13.2", "3.13t": "3.13t-dev", - "3.14": "3.14.0a4", + "3.14": "3.14.0a5", "3.14t": "3.14t-dev", "pypy3.9": "pypy3.9-7.3.16", - "pypy3.10": "pypy3.10-7.3.17", + "pypy3.10": "pypy3.10-7.3.19", + "pypy3.11": "pypy3.11-7.3.19", } ci_version = "3.10" # Keep this in sync with GH Actions main.yml and .readthedocs.yml From a45ccf53b61cfc80f215d0532fa98c46e0ea1f0c Mon Sep 17 00:00:00 2001 From: Zac Hatfield-Dodds Date: Sat, 1 Mar 2025 17:05:09 -0800 Subject: [PATCH 2/3] test on pypy3.11 --- .github/workflows/main.yml | 1 + hypothesis-python/tox.ini | 2 +- whole_repo_tests/test_ci_config.py | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index f587d1e514..60226e930a 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -39,6 +39,7 @@ jobs: - check-py311-cover - check-py311-nocover - check-py311-niche + - check-pypy311-cover - check-py312-cover - check-py312-nocover - check-py312-niche diff --git a/hypothesis-python/tox.ini b/hypothesis-python/tox.ini index 41762f0489..83d69364a6 100644 --- a/hypothesis-python/tox.ini +++ b/hypothesis-python/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = py{39,py39,310,py310,311,312,313,313t,314,314t}-{brief,full,cover,nocover,niche,custom} +envlist = py{39,py39,310,py310,311,py311,312,313,313t,314,314t}-{brief,full,cover,nocover,niche,custom} toxworkdir={env:TOX_WORK_DIR:.tox} [testenv] diff --git a/whole_repo_tests/test_ci_config.py b/whole_repo_tests/test_ci_config.py index 98db370582..dae03b04ae 100644 --- a/whole_repo_tests/test_ci_config.py +++ b/whole_repo_tests/test_ci_config.py @@ -26,4 +26,5 @@ @pytest.mark.parametrize("version", sorted(PYTHONS)) def test_python_versions_are_tested_in_ci(version): slug = version.replace("pypy", "py").replace(".", "") + print(ci_checks) assert f"- check-py{slug}" in ci_checks, f"Add {version} to main.yml and tox.ini" From d8dec21b4736cc8e248a40d2622a623f5376c6f2 Mon Sep 17 00:00:00 2001 From: Daniel Garcia Moreno Date: Sat, 1 Mar 2025 17:05:09 -0800 Subject: [PATCH 3/3] Fix test_clean_source for python 3.13.2 In python 3.13.2 untokenize() does not round-trip for code containing line breaks (\ + \n). This patch removes the test case for the space removal before line break. https://github.com/python/cpython/issues/125553 --- hypothesis-python/tests/cover/test_reflection.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/hypothesis-python/tests/cover/test_reflection.py b/hypothesis-python/tests/cover/test_reflection.py index 3f9565e7be..e158b18ce0 100644 --- a/hypothesis-python/tests/cover/test_reflection.py +++ b/hypothesis-python/tests/cover/test_reflection.py @@ -659,8 +659,10 @@ def test_param_called_within_defaults_on_error(): def _prep_source(*pairs): return [ - pytest.param(dedent(x).strip(), dedent(y).strip().encode(), id=f"case-{i}") - for i, (x, y) in enumerate(pairs) + pytest.param( + dedent(x).strip(), dedent(y).strip().encode(), id=f"case-{i}", marks=marks + ) + for i, (x, y, *marks) in enumerate(pairs) ] @@ -697,6 +699,10 @@ def \\ def\\ f(): pass """, + pytest.mark.skipif( + sys.version_info[:3] == (3, 13, 2), + reason="untokenize() does not round-trip for code with line breaks, gh-125553", + ), ), ( """