From 4c950d27c5a606a77531adba4489d7b5b97abc27 Mon Sep 17 00:00:00 2001 From: Chris Llanwarne Date: Fri, 29 May 2026 14:04:52 -0400 Subject: [PATCH 1/4] update pytest to 9.0.3 --- auth/test/pytest.ini | 1 + batch/test/conftest.py | 10 ---------- batch/test/pytest.ini | 1 + ci/test/pytest.ini | 1 + hail/python/dev/pinned-requirements.txt | 18 +++++++++--------- hail/python/dev/requirements.txt | 9 ++++----- hail/python/pytest.ini | 1 + hail/python/test/hail/conftest.py | 10 ---------- hail/python/test/hailtop/conftest.py | 10 ---------- monitoring/test/pytest.ini | 1 + 10 files changed, 18 insertions(+), 44 deletions(-) diff --git a/auth/test/pytest.ini b/auth/test/pytest.ini index af2398e723d..41ca15e9fa2 100644 --- a/auth/test/pytest.ini +++ b/auth/test/pytest.ini @@ -1,5 +1,6 @@ [pytest] asyncio_mode = auto +asyncio_default_fixture_loop_scope = session addopts = --strict-markers markers = unchecked_allocator: tests that use the unchecked allocator diff --git a/batch/test/conftest.py b/batch/test/conftest.py index 7bf61e4bcbb..b3790edf331 100644 --- a/batch/test/conftest.py +++ b/batch/test/conftest.py @@ -1,4 +1,3 @@ -import asyncio import hashlib import logging import os @@ -11,15 +10,6 @@ log = logging.getLogger(__name__) -@pytest.fixture(scope="session") -def event_loop(): - loop = asyncio.get_event_loop() - try: - yield loop - finally: - loop.close() - - @pytest.fixture(autouse=True) def log_before_after(): log.info('starting test') diff --git a/batch/test/pytest.ini b/batch/test/pytest.ini index af2398e723d..41ca15e9fa2 100644 --- a/batch/test/pytest.ini +++ b/batch/test/pytest.ini @@ -1,5 +1,6 @@ [pytest] asyncio_mode = auto +asyncio_default_fixture_loop_scope = session addopts = --strict-markers markers = unchecked_allocator: tests that use the unchecked allocator diff --git a/ci/test/pytest.ini b/ci/test/pytest.ini index 2f4c80e3075..6a57ceee8c4 100644 --- a/ci/test/pytest.ini +++ b/ci/test/pytest.ini @@ -1,2 +1,3 @@ [pytest] asyncio_mode = auto +asyncio_default_fixture_loop_scope = session diff --git a/hail/python/dev/pinned-requirements.txt b/hail/python/dev/pinned-requirements.txt index 9646c4f3a6a..459f47174de 100644 --- a/hail/python/dev/pinned-requirements.txt +++ b/hail/python/dev/pinned-requirements.txt @@ -52,6 +52,8 @@ babel==2.18.0 # via # jupyterlab-server # sphinx +backports-asyncio-runner==1.2.0 + # via pytest-asyncio beautifulsoup4==4.14.3 # via nbconvert bleach==6.3.0 @@ -198,6 +200,7 @@ jinja2==3.1.6 # nbconvert # nbsphinx # notebook + # pytest-html # sphinx json5==0.14.0 # via jupyterlab-server @@ -385,8 +388,6 @@ ptyprocess==0.7.0 # terminado pure-eval==0.2.3 # via stack-data -py==1.11.0 - # via pytest-forked pycparser==3.0 # via # -c hail/python/dev/../pinned-requirements.txt @@ -399,6 +400,7 @@ pygments==2.20.0 # ipython # jupyter-console # nbconvert + # pytest # sphinx pylint==3.3.9 # via -r hail/python/dev/requirements.txt @@ -408,22 +410,19 @@ pyproject-hooks==1.2.0 # via build pyright==1.1.409 # via -r hail/python/dev/requirements.txt -pytest==7.4.4 +pytest==9.0.3 # via # -r hail/python/dev/requirements.txt # pytest-asyncio - # pytest-forked # pytest-html # pytest-instafail # pytest-metadata # pytest-mock # pytest-timeout # pytest-xdist -pytest-asyncio==0.21.2 +pytest-asyncio==1.4.0 # via -r hail/python/dev/requirements.txt -pytest-forked==1.6.0 - # via pytest-xdist -pytest-html==1.22.1 +pytest-html==4.2.0 # via -r hail/python/dev/requirements.txt pytest-instafail==0.5.0 # via -r hail/python/dev/requirements.txt @@ -435,7 +434,7 @@ pytest-timeout==2.4.0 # via -r hail/python/dev/requirements.txt pytest-timestamper==0.0.10 # via -r hail/python/dev/requirements.txt -pytest-xdist==2.5.0 +pytest-xdist==3.8.0 # via -r hail/python/dev/requirements.txt python-dateutil==2.9.0.post0 # via @@ -615,6 +614,7 @@ typing-extensions==4.15.0 # mistune # multidict # pyright + # pytest-asyncio # referencing # virtualenv tzdata==2026.2 diff --git a/hail/python/dev/requirements.txt b/hail/python/dev/requirements.txt index b447d28e2cf..d148df5e250 100644 --- a/hail/python/dev/requirements.txt +++ b/hail/python/dev/requirements.txt @@ -11,12 +11,11 @@ uv-build>=0.10.0,<0.11 curlylint>=0.13.1,<1 click>=8.1.2,<9 mock>=5.1,<5.2 -pytest>=7.1.3,<8 -pytest-html>=1.20.0,<2 -pytest-xdist>=2.2.1,<3 +pytest>=9.0,<10 +pytest-html>=4.0,<5 +pytest-xdist>=3.8,<4 pytest-instafail>=0.4.2,<1 -# https://github.com/hail-is/hail/issues/14130 -pytest-asyncio>=0.14.0,<0.23 +pytest-asyncio>=1.4,<2 pytest-timestamper>=0.0.9,<1 pytest-timeout>=2.1,<3 pytest-mock>=3.14,<4 diff --git a/hail/python/pytest.ini b/hail/python/pytest.ini index 4cf822dca6c..d15f55a1764 100644 --- a/hail/python/pytest.ini +++ b/hail/python/pytest.ini @@ -1,5 +1,6 @@ [pytest] asyncio_mode = auto +asyncio_default_fixture_loop_scope = session addopts = --strict-markers testpaths = test diff --git a/hail/python/test/hail/conftest.py b/hail/python/test/hail/conftest.py index fd3be79d32f..18a235ba7d0 100644 --- a/hail/python/test/hail/conftest.py +++ b/hail/python/test/hail/conftest.py @@ -1,4 +1,3 @@ -import asyncio import hashlib import logging import os @@ -17,15 +16,6 @@ log = logging.getLogger(__name__) -@pytest.fixture(scope="session") -def event_loop(): - loop = asyncio.get_event_loop() - try: - yield loop - finally: - loop.close() - - def pytest_collection_modifyitems(items): def digest(s): return int.from_bytes(hashlib.md5(str(s).encode('utf-8')).digest(), 'little') diff --git a/hail/python/test/hailtop/conftest.py b/hail/python/test/hailtop/conftest.py index 0b618863e42..08ba85b5a73 100644 --- a/hail/python/test/hailtop/conftest.py +++ b/hail/python/test/hailtop/conftest.py @@ -1,19 +1,9 @@ -import asyncio import hashlib import os import pytest -@pytest.fixture(scope="session") -def event_loop(): - loop = asyncio.get_event_loop() - try: - yield loop - finally: - loop.close() - - def pytest_collection_modifyitems(items): n_splits = int(os.environ.get('HAIL_RUN_IMAGE_SPLITS', '1')) split_index = int(os.environ.get('HAIL_RUN_IMAGE_SPLIT_INDEX', '-1')) diff --git a/monitoring/test/pytest.ini b/monitoring/test/pytest.ini index 2f4c80e3075..6a57ceee8c4 100644 --- a/monitoring/test/pytest.ini +++ b/monitoring/test/pytest.ini @@ -1,2 +1,3 @@ [pytest] asyncio_mode = auto +asyncio_default_fixture_loop_scope = session From dfcb0a1eea240061938b7ce11a2f90c7badb1c63 Mon Sep 17 00:00:00 2001 From: Chris Llanwarne Date: Fri, 29 May 2026 15:27:12 -0400 Subject: [PATCH 2/4] compile pip lockfiles for Python 3.11 to match actual CI environment, fixing backports-asyncio-runner incompatibility --- batch/pinned-requirements.txt | 13 ++----- check_pip_requirements.sh | 2 +- ci/pinned-requirements.txt | 4 +-- gear/pinned-requirements.txt | 10 +----- generate-pip-lockfile.sh | 2 +- hail/python/dev/pinned-requirements.txt | 40 +++++---------------- hail/python/hailtop/pinned-requirements.txt | 7 +--- hail/python/pinned-requirements.txt | 15 +++----- web_common/pinned-requirements.txt | 9 +---- 9 files changed, 21 insertions(+), 81 deletions(-) diff --git a/batch/pinned-requirements.txt b/batch/pinned-requirements.txt index 0231aa1f368..cf0c7975b94 100644 --- a/batch/pinned-requirements.txt +++ b/batch/pinned-requirements.txt @@ -1,5 +1,5 @@ # This file was autogenerated by uv via the following command: -# uv pip compile --python-version 3.10 --python-platform linux batch/requirements.txt --output-file=batch/pinned-requirements.txt +# uv pip compile --python-version 3.11 --python-platform linux batch/requirements.txt --output-file=batch/pinned-requirements.txt aiodocker==0.27.0 # via -r batch/requirements.txt aiohappyeyeballs==2.6.2 @@ -26,13 +26,7 @@ aiosignal==1.4.0 # -c batch/../web_common/pinned-requirements.txt # aiohttp async-timeout==5.0.1 - # via - # -c batch/../gear/pinned-requirements.txt - # -c batch/../hail/python/dev/pinned-requirements.txt - # -c batch/../hail/python/pinned-requirements.txt - # -c batch/../web_common/pinned-requirements.txt - # -r batch/requirements.txt - # aiohttp + # via -r batch/requirements.txt attrs==26.1.0 # via # -c batch/../gear/pinned-requirements.txt @@ -65,7 +59,7 @@ multidict==6.7.1 # -c batch/../web_common/pinned-requirements.txt # aiohttp # yarl -numpy==2.2.6 +numpy==2.4.6 # via # -c batch/../hail/python/dev/pinned-requirements.txt # -c batch/../hail/python/pinned-requirements.txt @@ -119,7 +113,6 @@ typing-extensions==4.15.0 # -c batch/../hail/python/pinned-requirements.txt # -c batch/../web_common/pinned-requirements.txt # aiosignal - # multidict tzdata==2026.2 # via # -c batch/../hail/python/dev/pinned-requirements.txt diff --git a/check_pip_requirements.sh b/check_pip_requirements.sh index 42e02361870..96d7a7d59f5 100755 --- a/check_pip_requirements.sh +++ b/check_pip_requirements.sh @@ -11,7 +11,7 @@ do new_pinned_no_comments=$(mktemp) uv pip compile \ - --python-version 3.10 \ + --python-version 3.11 \ --python-platform linux \ --quiet $reqs $pinned --output-file=$new_pinned # Get rid of comments that might differ despite requirements being the same diff --git a/ci/pinned-requirements.txt b/ci/pinned-requirements.txt index a221d2693c9..baac9e67f06 100644 --- a/ci/pinned-requirements.txt +++ b/ci/pinned-requirements.txt @@ -1,5 +1,5 @@ # This file was autogenerated by uv via the following command: -# uv pip compile --python-version 3.10 --python-platform linux ci/requirements.txt --output-file=ci/pinned-requirements.txt +# uv pip compile --python-version 3.11 --python-platform linux ci/requirements.txt --output-file=ci/pinned-requirements.txt certifi==2026.5.20 # via # -c ci/../gear/pinned-requirements.txt @@ -73,8 +73,6 @@ typing-extensions==4.15.0 # -c ci/../hail/python/dev/pinned-requirements.txt # -c ci/../hail/python/pinned-requirements.txt # -c ci/../web_common/pinned-requirements.txt - # cryptography - # pyjwt # zulip uritemplate==4.2.0 # via diff --git a/gear/pinned-requirements.txt b/gear/pinned-requirements.txt index 0b26bad7429..93449b7e211 100644 --- a/gear/pinned-requirements.txt +++ b/gear/pinned-requirements.txt @@ -1,5 +1,5 @@ # This file was autogenerated by uv via the following command: -# uv pip compile --python-version 3.10 --python-platform linux gear/requirements.txt --output-file=gear/pinned-requirements.txt +# uv pip compile --python-version 3.11 --python-platform linux gear/requirements.txt --output-file=gear/pinned-requirements.txt aiohappyeyeballs==2.6.2 # via # -c gear/../hail/python/dev/pinned-requirements.txt @@ -23,12 +23,6 @@ aiosignal==1.4.0 # -c gear/../hail/python/hailtop/pinned-requirements.txt # -c gear/../hail/python/pinned-requirements.txt # aiohttp -async-timeout==5.0.1 - # via - # -c gear/../hail/python/dev/pinned-requirements.txt - # -c gear/../hail/python/hailtop/pinned-requirements.txt - # -c gear/../hail/python/pinned-requirements.txt - # aiohttp attrs==26.1.0 # via # -c gear/../hail/python/dev/pinned-requirements.txt @@ -200,8 +194,6 @@ typing-extensions==4.15.0 # -c gear/../hail/python/hailtop/pinned-requirements.txt # -c gear/../hail/python/pinned-requirements.txt # aiosignal - # cryptography - # multidict uritemplate==4.2.0 # via google-api-python-client urllib3==2.7.0 diff --git a/generate-pip-lockfile.sh b/generate-pip-lockfile.sh index 2efe9572103..64f5acc2daa 100755 --- a/generate-pip-lockfile.sh +++ b/generate-pip-lockfile.sh @@ -7,6 +7,6 @@ set -ex package=$1 uv pip compile \ - --python-version 3.10 \ + --python-version 3.11 \ --python-platform linux \ --upgrade $package/requirements.txt --output-file=$package/pinned-requirements.txt diff --git a/hail/python/dev/pinned-requirements.txt b/hail/python/dev/pinned-requirements.txt index 459f47174de..332b37ed91f 100644 --- a/hail/python/dev/pinned-requirements.txt +++ b/hail/python/dev/pinned-requirements.txt @@ -1,5 +1,5 @@ # This file was autogenerated by uv via the following command: -# uv pip compile --python-version 3.10 --python-platform linux hail/python/dev/requirements.txt --output-file=hail/python/dev/pinned-requirements.txt +# uv pip compile --python-version 3.11 --python-platform linux hail/python/dev/requirements.txt --output-file=hail/python/dev/pinned-requirements.txt aiohappyeyeballs==2.6.2 # via # -c hail/python/dev/../pinned-requirements.txt @@ -37,10 +37,6 @@ asttokens==2.4.1 # stack-data async-lru==2.3.0 # via jupyterlab -async-timeout==5.0.1 - # via - # -c hail/python/dev/../pinned-requirements.txt - # aiohttp attrs==26.1.0 # via # -c hail/python/dev/../pinned-requirements.txt @@ -52,8 +48,6 @@ babel==2.18.0 # via # jupyterlab-server # sphinx -backports-asyncio-runner==1.2.0 - # via pytest-asyncio beautifulsoup4==4.14.3 # via nbconvert bleach==6.3.0 @@ -86,7 +80,7 @@ comm==0.2.3 # via # ipykernel # ipywidgets -contourpy==1.3.2 +contourpy==1.3.3 # via # -c hail/python/dev/../pinned-requirements.txt # matplotlib @@ -117,11 +111,6 @@ docutils==0.18.1 # sphinx-rtd-theme entrypoints==0.4 # via jupyter-client -exceptiongroup==1.3.1 - # via - # anyio - # ipython - # pytest execnet==2.1.2 # via pytest-xdist executing==2.2.1 @@ -163,8 +152,6 @@ idna==3.17 # yarl imagesize==2.0.0 # via sphinx -importlib-metadata==9.0.0 - # via build iniconfig==2.3.0 # via pytest ipykernel==6.29.5 @@ -174,7 +161,7 @@ ipykernel==6.29.5 # jupyterlab # nbclassic # notebook -ipython==8.39.0 +ipython==9.10.1 # via # ipykernel # ipywidgets @@ -183,6 +170,8 @@ ipython-genutils==0.2.0 # via # nbclassic # notebook +ipython-pygments-lexers==1.1.1 + # via ipython ipywidgets==8.1.8 # via jupyter isoduration==20.11.0 @@ -322,7 +311,7 @@ notebook-shim==0.2.4 # via # jupyterlab # nbclassic -numpy==2.2.6 +numpy==2.4.6 # via # -c hail/python/dev/../pinned-requirements.txt # contourpy @@ -398,6 +387,7 @@ pygments==2.20.0 # aiohttp-devtools # devtools # ipython + # ipython-pygments-lexers # jupyter-console # nbconvert # pytest @@ -480,7 +470,7 @@ rfc3986-validator==0.1.1 # jupyter-events rfc3987-syntax==1.1.0 # via jsonschema -rpds-py==0.30.0 +rpds-py==2026.5.1 # via # jsonschema # referencing @@ -543,12 +533,6 @@ tinycss2==1.4.0 # via bleach toml==0.10.2 # via curlylint -tomli==2.4.1 - # via - # build - # jupyterlab - # pylint - # pytest tomlkit==0.15.0 # via pylint tornado==6.5.6 @@ -606,17 +590,11 @@ typing-extensions==4.15.0 # -c hail/python/dev/../pinned-requirements.txt # aiosignal # anyio - # astroid - # async-lru # beautifulsoup4 - # exceptiongroup # ipython - # mistune - # multidict # pyright # pytest-asyncio # referencing - # virtualenv tzdata==2026.2 # via # -c hail/python/dev/../pinned-requirements.txt @@ -651,5 +629,3 @@ yarl==1.24.2 # via # -c hail/python/dev/../pinned-requirements.txt # aiohttp -zipp==4.1.0 - # via importlib-metadata diff --git a/hail/python/hailtop/pinned-requirements.txt b/hail/python/hailtop/pinned-requirements.txt index ad5b02a5e85..b42549c507a 100644 --- a/hail/python/hailtop/pinned-requirements.txt +++ b/hail/python/hailtop/pinned-requirements.txt @@ -1,5 +1,5 @@ # This file was autogenerated by uv via the following command: -# uv pip compile --python-version 3.10 --python-platform linux hail/python/hailtop/requirements.txt --output-file=hail/python/hailtop/pinned-requirements.txt +# uv pip compile --python-version 3.11 --python-platform linux hail/python/hailtop/requirements.txt --output-file=hail/python/hailtop/pinned-requirements.txt aiodns==2.0.0 # via -r hail/python/hailtop/requirements.txt aiohappyeyeballs==2.6.2 @@ -10,8 +10,6 @@ aiosignal==1.4.0 # via aiohttp annotated-doc==0.0.4 # via typer -async-timeout==5.0.1 - # via aiohttp attrs==26.1.0 # via aiohttp azure-common==1.1.28 @@ -165,10 +163,7 @@ typing-extensions==4.15.0 # azure-core # azure-identity # azure-storage-blob - # cryptography # janus - # multidict - # pyjwt urllib3==2.7.0 # via # botocore diff --git a/hail/python/pinned-requirements.txt b/hail/python/pinned-requirements.txt index da42f5603c2..1717dbd41ed 100644 --- a/hail/python/pinned-requirements.txt +++ b/hail/python/pinned-requirements.txt @@ -1,5 +1,5 @@ # This file was autogenerated by uv via the following command: -# uv pip compile --python-version 3.10 --python-platform linux hail/python/requirements.txt --output-file=hail/python/pinned-requirements.txt +# uv pip compile --python-version 3.11 --python-platform linux hail/python/requirements.txt --output-file=hail/python/pinned-requirements.txt aiodns==2.0.0 # via # -c hail/python/hailtop/pinned-requirements.txt @@ -20,10 +20,6 @@ annotated-doc==0.0.4 # via # -c hail/python/hailtop/pinned-requirements.txt # typer -async-timeout==5.0.1 - # via - # -c hail/python/hailtop/pinned-requirements.txt - # aiohttp attrs==26.1.0 # via # -c hail/python/hailtop/pinned-requirements.txt @@ -91,7 +87,7 @@ commonmark==0.9.2 # via # -c hail/python/hailtop/pinned-requirements.txt # rich -contourpy==1.3.2 +contourpy==1.3.3 # via bokeh cryptography==48.0.0 # via @@ -179,7 +175,7 @@ nest-asyncio==1.6.0 # via # -c hail/python/hailtop/pinned-requirements.txt # -r hail/python/hailtop/requirements.txt -numpy==2.2.6 +numpy==2.4.6 # via # -r hail/python/requirements.txt # bokeh @@ -281,7 +277,7 @@ s3transfer==0.18.0 # via # -c hail/python/hailtop/pinned-requirements.txt # boto3 -scipy==1.15.3 +scipy==1.17.1 # via -r hail/python/requirements.txt setuptools==81.0.0 # via @@ -319,10 +315,7 @@ typing-extensions==4.15.0 # azure-core # azure-identity # azure-storage-blob - # cryptography # janus - # multidict - # pyjwt tzdata==2026.2 # via pandas urllib3==2.7.0 diff --git a/web_common/pinned-requirements.txt b/web_common/pinned-requirements.txt index 6a329277c61..4f7416c249b 100644 --- a/web_common/pinned-requirements.txt +++ b/web_common/pinned-requirements.txt @@ -1,5 +1,5 @@ # This file was autogenerated by uv via the following command: -# uv pip compile --python-version 3.10 --python-platform linux web_common/requirements.txt --output-file=web_common/pinned-requirements.txt +# uv pip compile --python-version 3.11 --python-platform linux web_common/requirements.txt --output-file=web_common/pinned-requirements.txt aiohappyeyeballs==2.6.2 # via # -c web_common/../gear/pinned-requirements.txt @@ -20,12 +20,6 @@ aiosignal==1.4.0 # -c web_common/../hail/python/dev/pinned-requirements.txt # -c web_common/../hail/python/pinned-requirements.txt # aiohttp -async-timeout==5.0.1 - # via - # -c web_common/../gear/pinned-requirements.txt - # -c web_common/../hail/python/dev/pinned-requirements.txt - # -c web_common/../hail/python/pinned-requirements.txt - # aiohttp attrs==26.1.0 # via # -c web_common/../gear/pinned-requirements.txt @@ -78,7 +72,6 @@ typing-extensions==4.15.0 # -c web_common/../hail/python/dev/pinned-requirements.txt # -c web_common/../hail/python/pinned-requirements.txt # aiosignal - # multidict yarl==1.24.2 # via # -c web_common/../gear/pinned-requirements.txt From 2755e7423b0363c8b6039370c501f1753d28c861 Mon Sep 17 00:00:00 2001 From: Chris Llanwarne Date: Wed, 3 Jun 2026 16:06:43 -0400 Subject: [PATCH 3/4] resolve async scope issues, pin contourpy for python 10 --- auth/test/pytest.ini | 1 + batch/test/pytest.ini | 1 + build.yaml | 1 + ci/test/pytest.ini | 1 + hail/python/pinned-requirements.txt | 3 ++- hail/python/pytest.ini | 1 + monitoring/test/pytest.ini | 1 + 7 files changed, 8 insertions(+), 1 deletion(-) diff --git a/auth/test/pytest.ini b/auth/test/pytest.ini index 41ca15e9fa2..cc3d4277380 100644 --- a/auth/test/pytest.ini +++ b/auth/test/pytest.ini @@ -1,6 +1,7 @@ [pytest] asyncio_mode = auto asyncio_default_fixture_loop_scope = session +asyncio_default_test_loop_scope = session addopts = --strict-markers markers = unchecked_allocator: tests that use the unchecked allocator diff --git a/batch/test/pytest.ini b/batch/test/pytest.ini index 41ca15e9fa2..cc3d4277380 100644 --- a/batch/test/pytest.ini +++ b/batch/test/pytest.ini @@ -1,6 +1,7 @@ [pytest] asyncio_mode = auto asyncio_default_fixture_loop_scope = session +asyncio_default_test_loop_scope = session addopts = --strict-markers markers = unchecked_allocator: tests that use the unchecked allocator diff --git a/build.yaml b/build.yaml index 86046b8590c..c0891529c7e 100644 --- a/build.yaml +++ b/build.yaml @@ -2750,6 +2750,7 @@ steps: -vv \ --instafail \ --durations=50 \ + --asyncio-mode=auto \ /io/test_requester_pays_parsing.py inputs: - from: /derived/release/hail/build/deploy/dist diff --git a/ci/test/pytest.ini b/ci/test/pytest.ini index 6a57ceee8c4..7e4076691e2 100644 --- a/ci/test/pytest.ini +++ b/ci/test/pytest.ini @@ -1,3 +1,4 @@ [pytest] asyncio_mode = auto asyncio_default_fixture_loop_scope = session +asyncio_default_test_loop_scope = session diff --git a/hail/python/pinned-requirements.txt b/hail/python/pinned-requirements.txt index 1717dbd41ed..081c5093fdc 100644 --- a/hail/python/pinned-requirements.txt +++ b/hail/python/pinned-requirements.txt @@ -87,8 +87,9 @@ commonmark==0.9.2 # via # -c hail/python/hailtop/pinned-requirements.txt # rich -contourpy==1.3.3 +contourpy==1.3.2 # via bokeh + # NOTE: 1.3.3+ requires Python >=3.11; pinned to 1.3.2 to stay compatible with Python 3.10 images cryptography==48.0.0 # via # -c hail/python/hailtop/pinned-requirements.txt diff --git a/hail/python/pytest.ini b/hail/python/pytest.ini index d15f55a1764..5fd2da680ad 100644 --- a/hail/python/pytest.ini +++ b/hail/python/pytest.ini @@ -1,6 +1,7 @@ [pytest] asyncio_mode = auto asyncio_default_fixture_loop_scope = session +asyncio_default_test_loop_scope = session addopts = --strict-markers testpaths = test diff --git a/monitoring/test/pytest.ini b/monitoring/test/pytest.ini index 6a57ceee8c4..7e4076691e2 100644 --- a/monitoring/test/pytest.ini +++ b/monitoring/test/pytest.ini @@ -1,3 +1,4 @@ [pytest] asyncio_mode = auto asyncio_default_fixture_loop_scope = session +asyncio_default_test_loop_scope = session From 4e8b37d9f98360798dea558711750fda58943fa3 Mon Sep 17 00:00:00 2001 From: Chris Llanwarne Date: Wed, 3 Jun 2026 16:12:22 -0400 Subject: [PATCH 4/4] remake lockfiles --- batch/pinned-requirements.txt | 5 +++-- ci/pinned-requirements.txt | 2 +- gear/pinned-requirements.txt | 7 ++++--- hail/python/dev/pinned-requirements.txt | 21 +++++++++++---------- hail/python/hailtop/pinned-requirements.txt | 11 ++++++----- hail/python/pinned-requirements.txt | 16 ++++++++-------- web_common/pinned-requirements.txt | 5 +++-- 7 files changed, 36 insertions(+), 31 deletions(-) diff --git a/batch/pinned-requirements.txt b/batch/pinned-requirements.txt index cf0c7975b94..b4132aa018b 100644 --- a/batch/pinned-requirements.txt +++ b/batch/pinned-requirements.txt @@ -9,7 +9,7 @@ aiohappyeyeballs==2.6.2 # -c batch/../hail/python/pinned-requirements.txt # -c batch/../web_common/pinned-requirements.txt # aiohttp -aiohttp==3.13.5 +aiohttp==3.14.0 # via # -c batch/../gear/pinned-requirements.txt # -c batch/../hail/python/dev/pinned-requirements.txt @@ -44,7 +44,7 @@ frozenlist==1.8.0 # -c batch/../web_common/pinned-requirements.txt # aiohttp # aiosignal -idna==3.17 +idna==3.18 # via # -c batch/../gear/pinned-requirements.txt # -c batch/../hail/python/dev/pinned-requirements.txt @@ -112,6 +112,7 @@ typing-extensions==4.15.0 # -c batch/../hail/python/dev/pinned-requirements.txt # -c batch/../hail/python/pinned-requirements.txt # -c batch/../web_common/pinned-requirements.txt + # aiohttp # aiosignal tzdata==2026.2 # via diff --git a/ci/pinned-requirements.txt b/ci/pinned-requirements.txt index baac9e67f06..f21eb0f8a4f 100644 --- a/ci/pinned-requirements.txt +++ b/ci/pinned-requirements.txt @@ -32,7 +32,7 @@ distro==1.9.0 # via zulip gidgethub==5.4.0 # via -r ci/requirements.txt -idna==3.17 +idna==3.18 # via # -c ci/../gear/pinned-requirements.txt # -c ci/../hail/python/dev/pinned-requirements.txt diff --git a/gear/pinned-requirements.txt b/gear/pinned-requirements.txt index 93449b7e211..7df54ee2f11 100644 --- a/gear/pinned-requirements.txt +++ b/gear/pinned-requirements.txt @@ -6,7 +6,7 @@ aiohappyeyeballs==2.6.2 # -c gear/../hail/python/hailtop/pinned-requirements.txt # -c gear/../hail/python/pinned-requirements.txt # aiohttp -aiohttp==3.13.5 +aiohttp==3.14.0 # via # -c gear/../hail/python/dev/pinned-requirements.txt # -c gear/../hail/python/hailtop/pinned-requirements.txt @@ -60,7 +60,7 @@ frozenlist==1.8.0 # -c gear/../hail/python/pinned-requirements.txt # aiohttp # aiosignal -google-api-core==2.30.3 +google-api-core==2.31.0 # via google-api-python-client google-api-python-client==2.197.0 # via google-cloud-profiler @@ -84,7 +84,7 @@ httplib2==0.31.2 # via # google-api-python-client # google-auth-httplib2 -idna==3.17 +idna==3.18 # via # -c gear/../hail/python/dev/pinned-requirements.txt # -c gear/../hail/python/hailtop/pinned-requirements.txt @@ -193,6 +193,7 @@ typing-extensions==4.15.0 # -c gear/../hail/python/dev/pinned-requirements.txt # -c gear/../hail/python/hailtop/pinned-requirements.txt # -c gear/../hail/python/pinned-requirements.txt + # aiohttp # aiosignal uritemplate==4.2.0 # via google-api-python-client diff --git a/hail/python/dev/pinned-requirements.txt b/hail/python/dev/pinned-requirements.txt index 332b37ed91f..c04fa646fc8 100644 --- a/hail/python/dev/pinned-requirements.txt +++ b/hail/python/dev/pinned-requirements.txt @@ -4,7 +4,7 @@ aiohappyeyeballs==2.6.2 # via # -c hail/python/dev/../pinned-requirements.txt # aiohttp -aiohttp==3.13.5 +aiohttp==3.14.0 # via # -c hail/python/dev/../pinned-requirements.txt # aiohttp-devtools @@ -88,7 +88,7 @@ curlylint==0.13.1 # via -r hail/python/dev/requirements.txt cycler==0.12.1 # via matplotlib -debugpy==1.8.20 +debugpy==1.8.21 # via ipykernel decorator==4.4.2 # via @@ -102,7 +102,7 @@ dill==0.4.1 # via # -c hail/python/dev/../pinned-requirements.txt # pylint -distlib==0.4.0 +distlib==0.4.1 # via virtualenv docutils==0.18.1 # via @@ -119,7 +119,7 @@ executing==2.2.1 # stack-data fastjsonschema==2.21.2 # via nbformat -filelock==3.29.0 +filelock==3.29.1 # via # python-discovery # virtualenv @@ -142,7 +142,7 @@ httpx==0.28.1 # via jupyterlab identify==2.6.19 # via pre-commit -idna==3.17 +idna==3.18 # via # -c hail/python/dev/../pinned-requirements.txt # anyio @@ -301,7 +301,7 @@ nodeenv==1.10.0 # via # pre-commit # pyright -nodejs-wheel-binaries==24.15.0 +nodejs-wheel-binaries==24.16.0 # via pyright notebook==6.5.7 # via @@ -398,7 +398,7 @@ pyparsing==3.3.2 # via matplotlib pyproject-hooks==1.2.0 # via build -pyright==1.1.409 +pyright==1.1.410 # via -r hail/python/dev/requirements.txt pytest==9.0.3 # via @@ -490,7 +490,7 @@ six==1.17.0 # asttokens # python-dateutil # rfc3339-validator -snowballstemmer==3.1.0 +snowballstemmer==3.1.1 # via sphinx soupsieve==2.8.4 # via beautifulsoup4 @@ -544,7 +544,7 @@ tornado==6.5.6 # jupyterlab # notebook # terminado -traitlets==5.15.0 +traitlets==5.15.1 # via # ipykernel # ipython @@ -588,6 +588,7 @@ types-urllib3==1.26.25.14 typing-extensions==4.15.0 # via # -c hail/python/dev/../pinned-requirements.txt + # aiohttp # aiosignal # anyio # beautifulsoup4 @@ -609,7 +610,7 @@ uv==0.10.12 # via -r hail/python/dev/requirements.txt uv-build==0.10.12 # via -r hail/python/dev/requirements.txt -virtualenv==21.4.1 +virtualenv==21.4.2 # via pre-commit watchfiles==1.2.0 # via aiohttp-devtools diff --git a/hail/python/hailtop/pinned-requirements.txt b/hail/python/hailtop/pinned-requirements.txt index b42549c507a..9f14eff87e8 100644 --- a/hail/python/hailtop/pinned-requirements.txt +++ b/hail/python/hailtop/pinned-requirements.txt @@ -4,7 +4,7 @@ aiodns==2.0.0 # via -r hail/python/hailtop/requirements.txt aiohappyeyeballs==2.6.2 # via aiohttp -aiohttp==3.13.5 +aiohttp==3.14.0 # via -r hail/python/hailtop/requirements.txt aiosignal==1.4.0 # via aiohttp @@ -28,9 +28,9 @@ azure-mgmt-storage==20.1.0 # via -r hail/python/hailtop/requirements.txt azure-storage-blob==12.29.0 # via -r hail/python/hailtop/requirements.txt -boto3==1.43.17 +boto3==1.43.22 # via -r hail/python/hailtop/requirements.txt -botocore==1.43.17 +botocore==1.43.22 # via # -r hail/python/hailtop/requirements.txt # boto3 @@ -71,7 +71,7 @@ google-auth-oauthlib==0.8.0 # via -r hail/python/hailtop/requirements.txt humanize==4.15.0 # via -r hail/python/hailtop/requirements.txt -idna==3.17 +idna==3.18 # via # requests # yarl @@ -87,7 +87,7 @@ jmespath==1.1.0 # botocore jproperties==2.1.2 # via -r hail/python/hailtop/requirements.txt -msal==1.36.0 +msal==1.37.0 # via # azure-identity # msal-extensions @@ -159,6 +159,7 @@ typer==0.24.2 # via -r hail/python/hailtop/requirements.txt typing-extensions==4.15.0 # via + # aiohttp # aiosignal # azure-core # azure-identity diff --git a/hail/python/pinned-requirements.txt b/hail/python/pinned-requirements.txt index 081c5093fdc..162d3853ba5 100644 --- a/hail/python/pinned-requirements.txt +++ b/hail/python/pinned-requirements.txt @@ -8,7 +8,7 @@ aiohappyeyeballs==2.6.2 # via # -c hail/python/hailtop/pinned-requirements.txt # aiohttp -aiohttp==3.13.5 +aiohttp==3.14.0 # via # -c hail/python/hailtop/pinned-requirements.txt # -r hail/python/hailtop/requirements.txt @@ -55,11 +55,11 @@ azure-storage-blob==12.29.0 # -r hail/python/hailtop/requirements.txt bokeh==3.9.0 # via -r hail/python/requirements.txt -boto3==1.43.17 +boto3==1.43.22 # via # -c hail/python/hailtop/pinned-requirements.txt # -r hail/python/hailtop/requirements.txt -botocore==1.43.17 +botocore==1.43.22 # via # -c hail/python/hailtop/pinned-requirements.txt # -r hail/python/hailtop/requirements.txt @@ -87,9 +87,8 @@ commonmark==0.9.2 # via # -c hail/python/hailtop/pinned-requirements.txt # rich -contourpy==1.3.2 +contourpy==1.3.3 # via bokeh - # NOTE: 1.3.3+ requires Python >=3.11; pinned to 1.3.2 to stay compatible with Python 3.10 images cryptography==48.0.0 # via # -c hail/python/hailtop/pinned-requirements.txt @@ -125,7 +124,7 @@ humanize==4.15.0 # via # -c hail/python/hailtop/pinned-requirements.txt # -r hail/python/hailtop/requirements.txt -idna==3.17 +idna==3.18 # via # -c hail/python/hailtop/pinned-requirements.txt # requests @@ -152,7 +151,7 @@ jproperties==2.1.2 # -r hail/python/hailtop/requirements.txt markupsafe==3.0.3 # via jinja2 -msal==1.36.0 +msal==1.37.0 # via # -c hail/python/hailtop/pinned-requirements.txt # azure-identity @@ -170,7 +169,7 @@ multidict==6.7.1 # -c hail/python/hailtop/pinned-requirements.txt # aiohttp # yarl -narwhals==2.21.2 +narwhals==2.22.0 # via bokeh nest-asyncio==1.6.0 # via @@ -312,6 +311,7 @@ typer==0.24.2 typing-extensions==4.15.0 # via # -c hail/python/hailtop/pinned-requirements.txt + # aiohttp # aiosignal # azure-core # azure-identity diff --git a/web_common/pinned-requirements.txt b/web_common/pinned-requirements.txt index 4f7416c249b..bcd44177a55 100644 --- a/web_common/pinned-requirements.txt +++ b/web_common/pinned-requirements.txt @@ -6,7 +6,7 @@ aiohappyeyeballs==2.6.2 # -c web_common/../hail/python/dev/pinned-requirements.txt # -c web_common/../hail/python/pinned-requirements.txt # aiohttp -aiohttp==3.13.5 +aiohttp==3.14.0 # via # -c web_common/../gear/pinned-requirements.txt # -c web_common/../hail/python/dev/pinned-requirements.txt @@ -33,7 +33,7 @@ frozenlist==1.8.0 # -c web_common/../hail/python/pinned-requirements.txt # aiohttp # aiosignal -idna==3.17 +idna==3.18 # via # -c web_common/../gear/pinned-requirements.txt # -c web_common/../hail/python/dev/pinned-requirements.txt @@ -71,6 +71,7 @@ typing-extensions==4.15.0 # -c web_common/../gear/pinned-requirements.txt # -c web_common/../hail/python/dev/pinned-requirements.txt # -c web_common/../hail/python/pinned-requirements.txt + # aiohttp # aiosignal yarl==1.24.2 # via