diff --git a/.github/workflows/ci-testing-deploy.yml b/.github/workflows/ci-testing-deploy.yml index 1e9a97c49cb..b98de763088 100644 --- a/.github/workflows/ci-testing-deploy.yml +++ b/.github/workflows/ci-testing-deploy.yml @@ -109,6 +109,10 @@ jobs: - 'mypy.ini' common-library: - 'packages/common-library/**' + - 'packages/pytest-simcore/**' + - 'services/docker-compose*' + - 'scripts/mypy/*' + - 'mypy.ini' notifications-library: - 'packages/notifications-library/**' - 'packages/postgres-database/**' @@ -1695,7 +1699,11 @@ jobs: with: python-version: ${{ matrix.python }} - name: install uv - uses: yezz123/setup-uv@v4 + uses: astral-sh/setup-uv@v6 + with: + version: "0.6.x" + enable-cache: false + cache-dependency-glob: "**/common-library/requirements/ci.txt" - name: show system version run: ./ci/helpers/show_system_versions.bash - name: install @@ -1705,6 +1713,9 @@ jobs: - name: test run: ./ci/github/unit-testing/common-library.bash test - uses: codecov/codecov-action@v5 + if: ${{ !cancelled() }} + env: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} with: flags: unittests #optional diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 247fda7f675..29b5d5b3663 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -5,7 +5,7 @@ "DevSoft.svg-viewer-vscode", "eamodio.gitlens", "exiasr.hadolint", - "ms-azuretools.vscode-docker", + "ms-azuretools.vscode-containers", "ms-python.black-formatter", "ms-python.pylint", "ms-python.python", diff --git a/api/tests/requirements.txt b/api/tests/requirements.txt index c6fecb4c6f4..6711f5c7180 100644 --- a/api/tests/requirements.txt +++ b/api/tests/requirements.txt @@ -85,10 +85,8 @@ pytest==8.3.5 # pytest-cov # pytest-instafail # pytest-sugar -pytest-asyncio==0.23.8 - # via - # -c ../../requirements/constraints.txt - # -r requirements.in +pytest-asyncio==0.26.0 + # via -r requirements.in pytest-cov==6.0.0 # via -r requirements.in pytest-instafail==0.5.0 diff --git a/packages/aws-library/requirements/_test.txt b/packages/aws-library/requirements/_test.txt index 39ea277b5a6..75c1fc07b96 100644 --- a/packages/aws-library/requirements/_test.txt +++ b/packages/aws-library/requirements/_test.txt @@ -196,10 +196,8 @@ pytest==8.3.5 # pytest-instafail # pytest-mock # pytest-sugar -pytest-asyncio==0.23.8 - # via - # -c requirements/../../../requirements/constraints.txt - # -r requirements/_test.in +pytest-asyncio==0.26.0 + # via -r requirements/_test.in pytest-benchmark==5.1.0 # via -r requirements/_test.in pytest-cov==6.0.0 diff --git a/packages/aws-library/setup.cfg b/packages/aws-library/setup.cfg index 8ecae013237..8e5bee5ba44 100644 --- a/packages/aws-library/setup.cfg +++ b/packages/aws-library/setup.cfg @@ -15,6 +15,7 @@ test = pytest [tool:pytest] asyncio_mode = auto +asyncio_default_fixture_loop_scope = function [mypy] plugins = diff --git a/packages/common-library/requirements/_test.txt b/packages/common-library/requirements/_test.txt index 3a57a924cb2..9737c253a39 100644 --- a/packages/common-library/requirements/_test.txt +++ b/packages/common-library/requirements/_test.txt @@ -42,10 +42,8 @@ pytest==8.3.5 # pytest-instafail # pytest-mock # pytest-sugar -pytest-asyncio==0.23.8 - # via - # -c requirements/../../../requirements/constraints.txt - # -r requirements/_test.in +pytest-asyncio==0.26.0 + # via -r requirements/_test.in pytest-cov==6.0.0 # via -r requirements/_test.in pytest-icdiff==0.9 diff --git a/packages/common-library/setup.cfg b/packages/common-library/setup.cfg index b33be52008a..f5e56c109bc 100644 --- a/packages/common-library/setup.cfg +++ b/packages/common-library/setup.cfg @@ -15,6 +15,7 @@ test = pytest [tool:pytest] asyncio_mode = auto +asyncio_default_fixture_loop_scope = function markers = diagnostics: "can be used to run diagnostics against deployed data (e.g. database, registry etc)" testit: "marks test to run during development" diff --git a/packages/dask-task-models-library/requirements/_base.txt b/packages/dask-task-models-library/requirements/_base.txt index fb7c4596721..75b9136287c 100644 --- a/packages/dask-task-models-library/requirements/_base.txt +++ b/packages/dask-task-models-library/requirements/_base.txt @@ -2,7 +2,7 @@ annotated-types==0.7.0 # via pydantic arrow==1.3.0 # via -r requirements/../../../packages/models-library/requirements/_base.in -attrs==25.1.0 +attrs==25.3.0 # via # jsonschema # referencing @@ -15,23 +15,23 @@ cloudpickle==3.1.1 # via # dask # distributed -dask==2025.2.0 +dask==2025.5.0 # via # -r requirements/_base.in # distributed -distributed==2025.2.0 +distributed==2025.5.0 # via dask dnspython==2.7.0 # via email-validator email-validator==2.2.0 # via pydantic -fsspec==2025.2.0 +fsspec==2025.3.2 # via dask idna==3.10 # via email-validator -importlib-metadata==8.6.1 +importlib-metadata==8.7.0 # via dask -jinja2==3.1.5 +jinja2==3.1.6 # via # -c requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt @@ -42,7 +42,7 @@ jinja2==3.1.5 # distributed jsonschema==4.23.0 # via -r requirements/../../../packages/models-library/requirements/_base.in -jsonschema-specifications==2024.10.1 +jsonschema-specifications==2025.4.1 # via jsonschema locket==1.0.0 # via @@ -56,7 +56,7 @@ mdurl==0.1.2 # via markdown-it-py msgpack==1.1.0 # via distributed -orjson==3.10.15 +orjson==3.10.18 # via # -c requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt @@ -68,7 +68,7 @@ orjson==3.10.15 # -r requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/_base.in # -r requirements/../../../packages/models-library/requirements/_base.in # -r requirements/../../../packages/settings-library/requirements/../../../packages/common-library/requirements/_base.in -packaging==24.2 +packaging==25.0 # via # dask # distributed @@ -76,7 +76,7 @@ partd==1.4.2 # via dask psutil==7.0.0 # via distributed -pydantic==2.10.6 +pydantic==2.11.4 # via # -c requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt @@ -92,9 +92,9 @@ pydantic==2.10.6 # -r requirements/_base.in # pydantic-extra-types # pydantic-settings -pydantic-core==2.27.2 +pydantic-core==2.33.2 # via pydantic -pydantic-extra-types==2.10.2 +pydantic-extra-types==2.10.4 # via # -r requirements/../../../packages/common-library/requirements/_base.in # -r requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/_base.in @@ -114,7 +114,7 @@ pygments==2.19.1 # via rich python-dateutil==2.9.0.post0 # via arrow -python-dotenv==1.0.1 +python-dotenv==1.1.0 # via pydantic-settings pyyaml==6.0.2 # via @@ -136,11 +136,11 @@ referencing==0.35.1 # -c requirements/../../../requirements/constraints.txt # jsonschema # jsonschema-specifications -rich==13.9.4 +rich==14.0.0 # via # -r requirements/../../../packages/settings-library/requirements/_base.in # typer -rpds-py==0.23.1 +rpds-py==0.25.0 # via # jsonschema # referencing @@ -150,26 +150,29 @@ six==1.17.0 # via python-dateutil sortedcontainers==2.4.0 # via distributed -tblib==3.0.0 +tblib==3.1.0 # via distributed toolz==1.0.0 # via # dask # distributed # partd -tornado==6.4.2 +tornado==6.5 # via distributed -typer==0.15.2 +typer==0.15.4 # via -r requirements/../../../packages/settings-library/requirements/_base.in -types-python-dateutil==2.9.0.20241206 +types-python-dateutil==2.9.0.20250516 # via arrow -typing-extensions==4.12.2 +typing-extensions==4.13.2 # via # pydantic # pydantic-core # pydantic-extra-types # typer -urllib3==2.3.0 + # typing-inspection +typing-inspection==0.4.0 + # via pydantic +urllib3==2.4.0 # via # -c requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt diff --git a/packages/dask-task-models-library/requirements/_test.txt b/packages/dask-task-models-library/requirements/_test.txt index b7dd17de3ca..9daa7aacc47 100644 --- a/packages/dask-task-models-library/requirements/_test.txt +++ b/packages/dask-task-models-library/requirements/_test.txt @@ -1,8 +1,8 @@ -coverage==7.6.12 +coverage==7.8.0 # via # -r requirements/_test.in # pytest-cov -faker==36.1.1 +faker==37.3.0 # via -r requirements/_test.in flexcache==0.3 # via pint @@ -10,18 +10,18 @@ flexparser==0.4 # via pint icdiff==2.0.7 # via pytest-icdiff -iniconfig==2.0.0 +iniconfig==2.1.0 # via pytest -packaging==24.2 +packaging==25.0 # via # -c requirements/_base.txt # pytest # pytest-sugar pint==0.24.4 # via -r requirements/_test.in -platformdirs==4.3.6 +platformdirs==4.3.8 # via pint -pluggy==1.5.0 +pluggy==1.6.0 # via pytest pprintpp==0.4.0 # via pytest-icdiff @@ -34,11 +34,9 @@ pytest==8.3.5 # pytest-instafail # pytest-mock # pytest-sugar -pytest-asyncio==0.23.8 - # via - # -c requirements/../../../requirements/constraints.txt - # -r requirements/_test.in -pytest-cov==6.0.0 +pytest-asyncio==0.26.0 + # via -r requirements/_test.in +pytest-cov==6.1.1 # via -r requirements/_test.in pytest-icdiff==0.9 # via -r requirements/_test.in @@ -55,13 +53,13 @@ pyyaml==6.0.2 # -c requirements/../../../requirements/constraints.txt # -c requirements/_base.txt # -r requirements/_test.in -termcolor==2.5.0 +termcolor==3.1.0 # via pytest-sugar -typing-extensions==4.12.2 +typing-extensions==4.13.2 # via # -c requirements/_base.txt # flexcache # flexparser # pint -tzdata==2025.1 +tzdata==2025.2 # via faker diff --git a/packages/dask-task-models-library/requirements/_tools.txt b/packages/dask-task-models-library/requirements/_tools.txt index dd6e9ca789e..e0213f1353c 100644 --- a/packages/dask-task-models-library/requirements/_tools.txt +++ b/packages/dask-task-models-library/requirements/_tools.txt @@ -1,4 +1,4 @@ -astroid==3.3.8 +astroid==3.3.10 # via pylint black==25.1.0 # via -r requirements/../../../requirements/devenv.txt @@ -13,13 +13,13 @@ click==8.1.8 # -c requirements/_base.txt # black # pip-tools -dill==0.3.9 +dill==0.4.0 # via pylint distlib==0.3.9 # via virtualenv -filelock==3.17.0 +filelock==3.18.0 # via virtualenv -identify==2.6.8 +identify==2.6.10 # via pre-commit isort==6.0.1 # via @@ -29,13 +29,13 @@ mccabe==0.7.0 # via pylint mypy==1.15.0 # via -r requirements/../../../requirements/devenv.txt -mypy-extensions==1.0.0 +mypy-extensions==1.1.0 # via # black # mypy nodeenv==1.9.1 # via pre-commit -packaging==24.2 +packaging==25.0 # via # -c requirements/_base.txt # -c requirements/_test.txt @@ -43,19 +43,19 @@ packaging==24.2 # build pathspec==0.12.1 # via black -pip==25.0.1 +pip==25.1.1 # via pip-tools pip-tools==7.4.1 # via -r requirements/../../../requirements/devenv.txt -platformdirs==4.3.6 +platformdirs==4.3.8 # via # -c requirements/_test.txt # black # pylint # virtualenv -pre-commit==4.1.0 +pre-commit==4.2.0 # via -r requirements/../../../requirements/devenv.txt -pylint==3.3.4 +pylint==3.3.7 # via -r requirements/../../../requirements/devenv.txt pyproject-hooks==1.2.0 # via @@ -67,18 +67,18 @@ pyyaml==6.0.2 # -c requirements/_base.txt # -c requirements/_test.txt # pre-commit -ruff==0.9.9 +ruff==0.11.10 # via -r requirements/../../../requirements/devenv.txt -setuptools==75.8.2 +setuptools==80.7.1 # via pip-tools tomlkit==0.13.2 # via pylint -typing-extensions==4.12.2 +typing-extensions==4.13.2 # via # -c requirements/_base.txt # -c requirements/_test.txt # mypy -virtualenv==20.29.2 +virtualenv==20.31.2 # via pre-commit wheel==0.45.1 # via pip-tools diff --git a/packages/dask-task-models-library/setup.cfg b/packages/dask-task-models-library/setup.cfg index d072b6ab557..3d91dba1cea 100644 --- a/packages/dask-task-models-library/setup.cfg +++ b/packages/dask-task-models-library/setup.cfg @@ -15,3 +15,4 @@ test = pytest [tool:pytest] asyncio_mode = auto +asyncio_default_fixture_loop_scope = function diff --git a/packages/models-library/requirements/_test.txt b/packages/models-library/requirements/_test.txt index fe635c77660..f54c9d6f0f7 100644 --- a/packages/models-library/requirements/_test.txt +++ b/packages/models-library/requirements/_test.txt @@ -47,10 +47,8 @@ pytest==8.3.5 # pytest-instafail # pytest-mock # pytest-sugar -pytest-asyncio==0.23.8 - # via - # -c requirements/../../../requirements/constraints.txt - # -r requirements/_test.in +pytest-asyncio==0.26.0 + # via -r requirements/_test.in pytest-cov==6.0.0 # via -r requirements/_test.in pytest-icdiff==0.9 diff --git a/packages/models-library/setup.cfg b/packages/models-library/setup.cfg index fef777cb6af..b483a024d04 100644 --- a/packages/models-library/setup.cfg +++ b/packages/models-library/setup.cfg @@ -15,6 +15,7 @@ test = pytest [tool:pytest] asyncio_mode = auto +asyncio_default_fixture_loop_scope = function markers = diagnostics: "can be used to run diagnostics against deployed data (e.g. database, registry etc)" testit: "marks test to run during development" diff --git a/packages/notifications-library/requirements/_test.txt b/packages/notifications-library/requirements/_test.txt index f7c0476d796..404a02002ce 100644 --- a/packages/notifications-library/requirements/_test.txt +++ b/packages/notifications-library/requirements/_test.txt @@ -75,10 +75,8 @@ pytest==8.3.5 # pytest-instafail # pytest-mock # pytest-sugar -pytest-asyncio==0.23.8 - # via - # -c requirements/../../../requirements/constraints.txt - # -r requirements/_test.in +pytest-asyncio==0.26.0 + # via -r requirements/_test.in pytest-cov==6.0.0 # via -r requirements/_test.in pytest-icdiff==0.9 diff --git a/packages/notifications-library/setup.cfg b/packages/notifications-library/setup.cfg index 36d455fd403..d0afa4c1e60 100644 --- a/packages/notifications-library/setup.cfg +++ b/packages/notifications-library/setup.cfg @@ -15,6 +15,7 @@ test = pytest [tool:pytest] asyncio_mode = auto +asyncio_default_fixture_loop_scope = function [mypy] plugins = diff --git a/packages/postgres-database/requirements/_test.txt b/packages/postgres-database/requirements/_test.txt index 1b1be316909..da15f704e3e 100644 --- a/packages/postgres-database/requirements/_test.txt +++ b/packages/postgres-database/requirements/_test.txt @@ -41,10 +41,8 @@ pytest==8.3.5 # pytest-cov # pytest-docker # pytest-instafail -pytest-asyncio==0.23.8 - # via - # -c requirements/../../../requirements/constraints.txt - # -r requirements/_test.in +pytest-asyncio==0.26.0 + # via -r requirements/_test.in pytest-cov==6.0.0 # via -r requirements/_test.in pytest-docker==3.2.0 diff --git a/packages/postgres-database/setup.cfg b/packages/postgres-database/setup.cfg index 3d2590eba91..90cbaba8af1 100644 --- a/packages/postgres-database/setup.cfg +++ b/packages/postgres-database/setup.cfg @@ -9,6 +9,7 @@ commit_args = --no-verify [tool:pytest] asyncio_mode = auto +asyncio_default_fixture_loop_scope = function addopts = -W error::sqlalchemy.exc.SAWarning markers = acceptance_test: "marks tests as 'acceptance tests' i.e. does the system do what the user expects? Typically those are workflows." diff --git a/packages/pytest-simcore/src/pytest_simcore/docker_swarm.py b/packages/pytest-simcore/src/pytest_simcore/docker_swarm.py index e848ddc6df1..90026b90e60 100644 --- a/packages/pytest-simcore/src/pytest_simcore/docker_swarm.py +++ b/packages/pytest-simcore/src/pytest_simcore/docker_swarm.py @@ -15,6 +15,7 @@ import aiodocker import docker import pytest +import pytest_asyncio import yaml from common_library.dict_tools import copy_from_dict from docker.errors import APIError @@ -245,8 +246,8 @@ def _make_dask_sidecar_certificates(simcore_service_folder: Path) -> None: ) -@pytest.fixture(scope="module") -def docker_stack( +@pytest_asyncio.fixture(scope="module", loop_scope="module") +async def docker_stack( osparc_simcore_services_dir: Path, docker_swarm: None, docker_client: docker.client.DockerClient, @@ -254,7 +255,7 @@ def docker_stack( ops_docker_compose_file: Path, keep_docker_up: bool, env_vars_for_docker_compose: EnvVarsDict, -) -> Iterator[dict]: +) -> AsyncIterator[dict]: """deploys core and ops stacks and returns as soon as all are running""" # WARNING: keep prefix "pytest-" in stack names @@ -313,7 +314,7 @@ async def _check_all_services_are_running(): assert not pending, f"some service did not start correctly [{pending}]" - asyncio.run(_check_all_services_are_running()) + await _check_all_services_are_running() finally: _fetch_and_print_services(docker_client, "[BEFORE TEST]") diff --git a/packages/pytest-simcore/src/pytest_simcore/simcore_services.py b/packages/pytest-simcore/src/pytest_simcore/simcore_services.py index a2975528f7c..2a4f6d2ff4d 100644 --- a/packages/pytest-simcore/src/pytest_simcore/simcore_services.py +++ b/packages/pytest-simcore/src/pytest_simcore/simcore_services.py @@ -90,9 +90,10 @@ async def wait_till_service_healthy(service_name: str, endpoint: URL): reraise=True, ): with attempt: - async with aiohttp.ClientSession( - timeout=_ONE_SEC_TIMEOUT - ) as session, session.get(endpoint) as response: + async with ( + aiohttp.ClientSession(timeout=_ONE_SEC_TIMEOUT) as session, + session.get(endpoint) as response, + ): # NOTE: Health-check endpoint require only a status code 200 # (see e.g. services/web/server/docker/healthcheck.py) # regardless of the payload content @@ -164,7 +165,7 @@ def services_endpoint( return services_endpoint -def _wait_for_services_ready(services_endpoint: dict[str, URL]) -> None: +async def _wait_for_services_ready(services_endpoint: dict[str, URL]) -> None: # Compose and log healthcheck url entpoints health_endpoints = [ @@ -188,14 +189,14 @@ async def _check_all_services_are_healthy(): ) # check ready - asyncio.run(_check_all_services_are_healthy()) + await _check_all_services_are_healthy() @pytest.fixture -def simcore_services_ready( +async def simcore_services_ready( services_endpoint: dict[str, URL], monkeypatch: pytest.MonkeyPatch ) -> None: - _wait_for_services_ready(services_endpoint) + await _wait_for_services_ready(services_endpoint) # patches environment variables with right host/port per service for service, endpoint in services_endpoint.items(): env_prefix = service.upper().replace("-", "_") @@ -225,16 +226,15 @@ def _monkeypatch_module(request: pytest.FixtureRequest) -> Iterator[pytest.Monke @pytest.fixture(scope="module") -def simcore_services_ready_module( +async def simcore_services_ready_module( services_endpoint: dict[str, URL], _monkeypatch_module: pytest.MonkeyPatch ) -> None: warnings.warn( - "This fixture uses deprecated monkeypatch_module fixture" - "Please do NOT use it!", + "This fixture uses deprecated monkeypatch_module fixturePlease do NOT use it!", DeprecationWarning, stacklevel=1, ) - _wait_for_services_ready(services_endpoint) + await _wait_for_services_ready(services_endpoint) # patches environment variables with right host/port per service for service, endpoint in services_endpoint.items(): env_prefix = service.upper().replace("-", "_") diff --git a/packages/pytest-simcore/src/pytest_simcore/traefik_service.py b/packages/pytest-simcore/src/pytest_simcore/traefik_service.py index a75df5aae08..881e9173185 100644 --- a/packages/pytest-simcore/src/pytest_simcore/traefik_service.py +++ b/packages/pytest-simcore/src/pytest_simcore/traefik_service.py @@ -3,8 +3,6 @@ # pylint:disable=redefined-outer-name -import asyncio - import aiohttp import pytest import tenacity @@ -37,7 +35,6 @@ def traefik_endpoints( @pytest.fixture() async def traefik_service( - event_loop: asyncio.AbstractEventLoop, traefik_endpoints: tuple[URL, URL, URL], docker_stack: dict, ) -> tuple[URL, URL, URL]: diff --git a/packages/service-library/requirements/_aiohttp.in b/packages/service-library/requirements/_aiohttp.in index a01dcbcacd0..c953f7546b1 100644 --- a/packages/service-library/requirements/_aiohttp.in +++ b/packages/service-library/requirements/_aiohttp.in @@ -3,8 +3,6 @@ # # ---constraint ./_base.txt - aiohttp aiopg[sa] attrs diff --git a/packages/service-library/requirements/_aiohttp.txt b/packages/service-library/requirements/_aiohttp.txt index b48863ff5ca..91d683a8999 100644 --- a/packages/service-library/requirements/_aiohttp.txt +++ b/packages/service-library/requirements/_aiohttp.txt @@ -1,64 +1,45 @@ aiohappyeyeballs==2.4.6 - # via - # -c requirements/./_base.txt - # aiohttp + # via aiohttp aiohttp==3.11.18 - # via - # -c requirements/./_base.txt - # -r requirements/_aiohttp.in + # via -r requirements/_aiohttp.in aiopg==1.4.0 # via -r requirements/_aiohttp.in aiosignal==1.3.2 - # via - # -c requirements/./_base.txt - # aiohttp + # via aiohttp async-timeout==4.0.3 # via aiopg attrs==25.1.0 # via - # -c requirements/./_base.txt # -r requirements/_aiohttp.in # aiohttp # jsonschema # referencing deprecated==1.2.18 # via - # -c requirements/./_base.txt # opentelemetry-api # opentelemetry-semantic-conventions frozenlist==1.5.0 # via - # -c requirements/./_base.txt # aiohttp # aiosignal greenlet==3.1.1 # via sqlalchemy idna==3.10 - # via - # -c requirements/./_base.txt - # yarl + # via yarl importlib-metadata==8.5.0 - # via - # -c requirements/./_base.txt - # opentelemetry-api + # via opentelemetry-api jsonschema==4.23.0 - # via - # -c requirements/./_base.txt - # -r requirements/_aiohttp.in + # via -r requirements/_aiohttp.in jsonschema-specifications==2024.10.1 - # via - # -c requirements/./_base.txt - # jsonschema + # via jsonschema markupsafe==3.0.2 # via werkzeug multidict==6.1.0 # via - # -c requirements/./_base.txt # aiohttp # yarl opentelemetry-api==1.30.0 # via - # -c requirements/./_base.txt # opentelemetry-instrumentation # opentelemetry-instrumentation-aiohttp-client # opentelemetry-instrumentation-aiohttp-server @@ -67,7 +48,6 @@ opentelemetry-api==1.30.0 # opentelemetry-semantic-conventions opentelemetry-instrumentation==0.51b0 # via - # -c requirements/./_base.txt # opentelemetry-instrumentation-aiohttp-client # opentelemetry-instrumentation-aiohttp-server # opentelemetry-instrumentation-aiopg @@ -82,25 +62,20 @@ opentelemetry-instrumentation-dbapi==0.51b0 # via opentelemetry-instrumentation-aiopg opentelemetry-semantic-conventions==0.51b0 # via - # -c requirements/./_base.txt # opentelemetry-instrumentation # opentelemetry-instrumentation-aiohttp-client # opentelemetry-instrumentation-aiohttp-server # opentelemetry-instrumentation-dbapi opentelemetry-util-http==0.51b0 # via - # -c requirements/./_base.txt # opentelemetry-instrumentation-aiohttp-client # opentelemetry-instrumentation-aiohttp-server packaging==24.2 - # via - # -c requirements/./_base.txt - # opentelemetry-instrumentation + # via opentelemetry-instrumentation prometheus-client==0.21.1 # via -r requirements/_aiohttp.in propcache==0.3.0 # via - # -c requirements/./_base.txt # aiohttp # yarl psycopg2-binary==2.9.10 @@ -109,12 +84,10 @@ psycopg2-binary==2.9.10 # sqlalchemy referencing==0.35.1 # via - # -c requirements/./_base.txt # jsonschema # jsonschema-specifications rpds-py==0.23.1 # via - # -c requirements/./_base.txt # jsonschema # referencing sqlalchemy==1.4.54 @@ -123,7 +96,6 @@ werkzeug==3.1.3 # via -r requirements/_aiohttp.in wrapt==1.17.2 # via - # -c requirements/./_base.txt # deprecated # opentelemetry-instrumentation # opentelemetry-instrumentation-aiohttp-client @@ -131,10 +103,6 @@ wrapt==1.17.2 # opentelemetry-instrumentation-aiopg # opentelemetry-instrumentation-dbapi yarl==1.18.3 - # via - # -c requirements/./_base.txt - # aiohttp + # via aiohttp zipp==3.21.0 - # via - # -c requirements/./_base.txt - # importlib-metadata + # via importlib-metadata diff --git a/packages/service-library/requirements/_fastapi.in b/packages/service-library/requirements/_fastapi.in index 8d0c4f62782..869f648fa5f 100644 --- a/packages/service-library/requirements/_fastapi.in +++ b/packages/service-library/requirements/_fastapi.in @@ -3,8 +3,6 @@ # # ---constraint ./_base.txt - fastapi fastapi-lifespan-manager diff --git a/packages/service-library/requirements/_fastapi.txt b/packages/service-library/requirements/_fastapi.txt index e7b3ea8219a..7b9f4ba8f05 100644 --- a/packages/service-library/requirements/_fastapi.txt +++ b/packages/service-library/requirements/_fastapi.txt @@ -1,26 +1,19 @@ annotated-types==0.7.0 - # via - # -c requirements/./_base.txt - # pydantic + # via pydantic anyio==4.8.0 # via - # -c requirements/./_base.txt # httpx # starlette asgiref==3.8.1 # via opentelemetry-instrumentation-asgi certifi==2025.1.31 # via - # -c requirements/./_base.txt # httpcore # httpx click==8.1.8 - # via - # -c requirements/./_base.txt - # uvicorn + # via uvicorn deprecated==1.2.18 # via - # -c requirements/./_base.txt # opentelemetry-api # opentelemetry-semantic-conventions fastapi==0.115.11 @@ -39,16 +32,12 @@ httpx==0.28.1 # via -r requirements/_fastapi.in idna==3.10 # via - # -c requirements/./_base.txt # anyio # httpx importlib-metadata==8.5.0 - # via - # -c requirements/./_base.txt - # opentelemetry-api + # via opentelemetry-api opentelemetry-api==1.30.0 # via - # -c requirements/./_base.txt # opentelemetry-instrumentation # opentelemetry-instrumentation-asgi # opentelemetry-instrumentation-fastapi @@ -56,7 +45,6 @@ opentelemetry-api==1.30.0 # opentelemetry-semantic-conventions opentelemetry-instrumentation==0.51b0 # via - # -c requirements/./_base.txt # opentelemetry-instrumentation-asgi # opentelemetry-instrumentation-fastapi # opentelemetry-instrumentation-httpx @@ -68,40 +56,29 @@ opentelemetry-instrumentation-httpx==0.51b0 # via -r requirements/_fastapi.in opentelemetry-semantic-conventions==0.51b0 # via - # -c requirements/./_base.txt # opentelemetry-instrumentation # opentelemetry-instrumentation-asgi # opentelemetry-instrumentation-fastapi # opentelemetry-instrumentation-httpx opentelemetry-util-http==0.51b0 # via - # -c requirements/./_base.txt # opentelemetry-instrumentation-asgi # opentelemetry-instrumentation-fastapi # opentelemetry-instrumentation-httpx packaging==24.2 - # via - # -c requirements/./_base.txt - # opentelemetry-instrumentation + # via opentelemetry-instrumentation prometheus-client==0.21.1 # via -r requirements/_fastapi.in pydantic==2.10.6 - # via - # -c requirements/./_base.txt - # fastapi + # via fastapi pydantic-core==2.27.2 - # via - # -c requirements/./_base.txt - # pydantic + # via pydantic sniffio==1.3.1 - # via - # -c requirements/./_base.txt - # anyio + # via anyio starlette==0.46.0 # via fastapi typing-extensions==4.12.2 # via - # -c requirements/./_base.txt # anyio # fastapi # pydantic @@ -110,11 +87,8 @@ uvicorn==0.34.0 # via -r requirements/_fastapi.in wrapt==1.17.2 # via - # -c requirements/./_base.txt # deprecated # opentelemetry-instrumentation # opentelemetry-instrumentation-httpx zipp==3.21.0 - # via - # -c requirements/./_base.txt - # importlib-metadata + # via importlib-metadata diff --git a/packages/service-library/requirements/_test.txt b/packages/service-library/requirements/_test.txt index 6961302ed02..5fba3b1d7d9 100644 --- a/packages/service-library/requirements/_test.txt +++ b/packages/service-library/requirements/_test.txt @@ -165,9 +165,8 @@ pytest==8.3.5 # pytest-xdist pytest-aiohttp==1.1.0 # via -r requirements/_test.in -pytest-asyncio==0.23.8 +pytest-asyncio==0.26.0 # via - # -c requirements/../../../requirements/constraints.txt # -r requirements/_test.in # pytest-aiohttp pytest-benchmark==5.1.0 diff --git a/packages/service-library/setup.cfg b/packages/service-library/setup.cfg index ec97b3ace20..874495da36b 100644 --- a/packages/service-library/setup.cfg +++ b/packages/service-library/setup.cfg @@ -16,6 +16,7 @@ test = pytest [tool:pytest] addopts = --strict-markers asyncio_mode = auto +asyncio_default_fixture_loop_scope = function markers = testit: "marks test to run during development" performance_test: "performance test" diff --git a/packages/service-library/tests/aiohttp/long_running_tasks/test_long_running_tasks.py b/packages/service-library/tests/aiohttp/long_running_tasks/test_long_running_tasks.py index 7907f092c24..71d5501b2ed 100644 --- a/packages/service-library/tests/aiohttp/long_running_tasks/test_long_running_tasks.py +++ b/packages/service-library/tests/aiohttp/long_running_tasks/test_long_running_tasks.py @@ -9,7 +9,6 @@ """ - import asyncio import json from collections.abc import Awaitable, Callable @@ -42,16 +41,12 @@ def app(server_routes: web.RouteTableDef) -> web.Application: @pytest.fixture -def client( - event_loop: asyncio.AbstractEventLoop, +async def client( aiohttp_client: Callable, unused_tcp_port_factory: Callable, app: web.Application, ) -> TestClient: - - return event_loop.run_until_complete( - aiohttp_client(app, server_kwargs={"port": unused_tcp_port_factory()}) - ) + return await aiohttp_client(app, server_kwargs={"port": unused_tcp_port_factory()}) async def test_workflow( diff --git a/packages/service-library/tests/aiohttp/long_running_tasks/test_long_running_tasks_client.py b/packages/service-library/tests/aiohttp/long_running_tasks/test_long_running_tasks_client.py index d8fb9b288ae..b211cc3d1ca 100644 --- a/packages/service-library/tests/aiohttp/long_running_tasks/test_long_running_tasks_client.py +++ b/packages/service-library/tests/aiohttp/long_running_tasks/test_long_running_tasks_client.py @@ -30,15 +30,12 @@ def app(server_routes: web.RouteTableDef) -> web.Application: @pytest.fixture -def client( - event_loop: asyncio.AbstractEventLoop, +async def client( aiohttp_client: Callable, unused_tcp_port_factory: Callable, app: web.Application, ) -> TestClient: - return event_loop.run_until_complete( - aiohttp_client(app, server_kwargs={"port": unused_tcp_port_factory()}) - ) + return await aiohttp_client(app, server_kwargs={"port": unused_tcp_port_factory()}) @pytest.fixture diff --git a/packages/service-library/tests/aiohttp/long_running_tasks/test_long_running_tasks_with_task_context.py b/packages/service-library/tests/aiohttp/long_running_tasks/test_long_running_tasks_with_task_context.py index 4d5e41dd920..0b37c941669 100644 --- a/packages/service-library/tests/aiohttp/long_running_tasks/test_long_running_tasks_with_task_context.py +++ b/packages/service-library/tests/aiohttp/long_running_tasks/test_long_running_tasks_with_task_context.py @@ -9,8 +9,6 @@ """ - -import asyncio from collections.abc import Awaitable, Callable from functools import wraps from typing import Optional @@ -79,17 +77,13 @@ def app_with_task_context( @pytest.fixture -def client_with_task_context( - event_loop: asyncio.AbstractEventLoop, +async def client_with_task_context( aiohttp_client: Callable, unused_tcp_port_factory: Callable, app_with_task_context: web.Application, ) -> TestClient: - - return event_loop.run_until_complete( - aiohttp_client( - app_with_task_context, server_kwargs={"port": unused_tcp_port_factory()} - ) + return await aiohttp_client( + app_with_task_context, server_kwargs={"port": unused_tcp_port_factory()} ) diff --git a/packages/service-library/tests/aiohttp/test_monitoring.py b/packages/service-library/tests/aiohttp/test_monitoring.py index e4691c61c9e..a7ad0d003d8 100644 --- a/packages/service-library/tests/aiohttp/test_monitoring.py +++ b/packages/service-library/tests/aiohttp/test_monitoring.py @@ -3,7 +3,6 @@ # pylint: disable=unused-variable -from asyncio import AbstractEventLoop from collections.abc import Callable from typing import Any @@ -21,8 +20,7 @@ @pytest.fixture -def client( - event_loop: AbstractEventLoop, +async def client( aiohttp_client: Callable, unused_tcp_port_factory: Callable, ) -> TestClient: @@ -40,9 +38,7 @@ async def monitored_request(request: web.Request) -> web.Response: setup_monitoring(app, app_name="pytest_app") - return event_loop.run_until_complete( - aiohttp_client(app, server_kwargs={"port": ports[0]}) - ) + return await aiohttp_client(app, server_kwargs={"port": ports[0]}) def _assert_metrics_contain_entry( diff --git a/packages/service-library/tests/aiohttp/test_rest_middlewares.py b/packages/service-library/tests/aiohttp/test_rest_middlewares.py index 0bd501066d9..64e15801f94 100644 --- a/packages/service-library/tests/aiohttp/test_rest_middlewares.py +++ b/packages/service-library/tests/aiohttp/test_rest_middlewares.py @@ -129,8 +129,7 @@ async def raise_success_with_text(_request: web.Request): @pytest.fixture -def client( - event_loop: asyncio.AbstractEventLoop, +async def client( aiohttp_client: Callable, monkeypatch: pytest.MonkeyPatch, ): @@ -175,7 +174,7 @@ def client( app.middlewares.append(error_middleware_factory(api_version="/v1")) app.middlewares.append(envelope_middleware_factory(api_version="/v1")) - return event_loop.run_until_complete(aiohttp_client(app)) + return await aiohttp_client(app) @pytest.mark.parametrize( diff --git a/packages/simcore-sdk/requirements/_test.in b/packages/simcore-sdk/requirements/_test.in index dad346b84be..5ee33c8a3cd 100644 --- a/packages/simcore-sdk/requirements/_test.in +++ b/packages/simcore-sdk/requirements/_test.in @@ -19,11 +19,7 @@ faker flaky moto[server] pytest -# ---- -# Overcomes "Known issues" in https://github.com/pytest-dev/pytest-asyncio/releases/tag/v0.23.8 -# IMPORTANT: This constraint can be removed when `test_pytest_asyncio_known_issue` passes with the new update of pytest-asyncio -pytest-asyncio<0.23 -# ---- +pytest-asyncio pytest-cov pytest-icdiff pytest-instafail diff --git a/packages/simcore-sdk/requirements/_test.txt b/packages/simcore-sdk/requirements/_test.txt index 66aa0d04604..fda48d30bb2 100644 --- a/packages/simcore-sdk/requirements/_test.txt +++ b/packages/simcore-sdk/requirements/_test.txt @@ -233,10 +233,8 @@ pytest==8.3.5 # pytest-mock # pytest-sugar # pytest-xdist -pytest-asyncio==0.21.2 - # via - # -c requirements/../../../requirements/constraints.txt - # -r requirements/_test.in +pytest-asyncio==0.26.0 + # via -r requirements/_test.in pytest-cov==6.0.0 # via -r requirements/_test.in pytest-icdiff==0.9 diff --git a/packages/simcore-sdk/setup.cfg b/packages/simcore-sdk/setup.cfg index a572e8dbb7b..a547ef01d2a 100644 --- a/packages/simcore-sdk/setup.cfg +++ b/packages/simcore-sdk/setup.cfg @@ -15,6 +15,7 @@ test = pytest [tool:pytest] asyncio_mode = auto +asyncio_default_fixture_loop_scope = function markers = slow: marks tests as slow (deselect with '-m "not slow"') acceptance_test: "marks tests as 'acceptance tests' i.e. does the system do what the user expects? Typically those are workflows." diff --git a/packages/simcore-sdk/tests/integration/test_node_ports_common_dbmanager.py b/packages/simcore-sdk/tests/integration/test_node_ports_common_dbmanager.py index edfb06445db..db8e51d7dbd 100644 --- a/packages/simcore-sdk/tests/integration/test_node_ports_common_dbmanager.py +++ b/packages/simcore-sdk/tests/integration/test_node_ports_common_dbmanager.py @@ -3,8 +3,8 @@ # pylint:disable=redefined-outer-name import json +from collections.abc import Callable from pathlib import Path -from typing import Callable, Dict from simcore_sdk.node_ports_common.dbmanager import DBManager @@ -20,7 +20,7 @@ async def test_db_manager_read_config( project_id: str, node_uuid: str, node_ports_config: None, - default_configuration: Dict, + default_configuration: dict, ): db_manager = DBManager() ports_configuration_str = await db_manager.get_ports_configuration_from_node_uuid( diff --git a/requirements/constraints.txt b/requirements/constraints.txt index 16fb75bc479..cb86fead226 100644 --- a/requirements/constraints.txt +++ b/requirements/constraints.txt @@ -36,9 +36,6 @@ urllib3>=1.26.5 # https://github.com/advisories/GH sqlalchemy<2.0 -# SEE https://github.com/pytest-dev/pytest-asyncio/issues/706 -# Many tests fail with `RuntimeError: There is no current event loop in thread 'MainThread'` -pytest-asyncio<0.24 # # Bugs diff --git a/services/agent/requirements/_test.txt b/services/agent/requirements/_test.txt index 53f1dd092f2..58d1b37d60b 100644 --- a/services/agent/requirements/_test.txt +++ b/services/agent/requirements/_test.txt @@ -215,10 +215,8 @@ pytest==8.3.5 # pytest-asyncio # pytest-cov # pytest-mock -pytest-asyncio==0.23.8 - # via - # -c requirements/../../../requirements/constraints.txt - # -r requirements/_test.in +pytest-asyncio==0.26.0 + # via -r requirements/_test.in pytest-cov==6.0.0 # via -r requirements/_test.in pytest-mock==3.14.0 diff --git a/services/agent/setup.cfg b/services/agent/setup.cfg index 8bd9985027d..c4965654e3e 100644 --- a/services/agent/setup.cfg +++ b/services/agent/setup.cfg @@ -9,6 +9,7 @@ commit_args = --no-verify [tool:pytest] asyncio_mode = auto +asyncio_default_fixture_loop_scope = function [mypy] plugins = diff --git a/services/api-server/requirements/_test.txt b/services/api-server/requirements/_test.txt index 8ce05a958cb..901dcd57a08 100644 --- a/services/api-server/requirements/_test.txt +++ b/services/api-server/requirements/_test.txt @@ -35,6 +35,7 @@ attrs==24.2.0 # jschema-to-python # jsonschema # pytest-docker + # referencing # sarif-om aws-sam-translator==1.55.0 # via @@ -268,10 +269,8 @@ pytest==8.3.5 # pytest-cov # pytest-docker # pytest-mock -pytest-asyncio==0.23.8 - # via - # -c requirements/../../../requirements/constraints.txt - # -r requirements/_test.in +pytest-asyncio==0.26.0 + # via -r requirements/_test.in pytest-cov==6.0.0 # via -r requirements/_test.in pytest-docker==3.2.0 @@ -298,6 +297,10 @@ pyyaml==6.0.2 # moto # openapi-spec-validator # responses +referencing==0.35.1 + # via + # -c requirements/../../../requirements/constraints.txt + # types-jsonschema requests==2.32.3 # via # -c requirements/_base.txt @@ -309,6 +312,8 @@ responses==0.25.6 # via moto respx==0.22.0 # via -r requirements/_test.in +rpds-py==0.25.0 + # via referencing rsa==4.9 # via # -c requirements/../../../requirements/constraints.txt diff --git a/services/api-server/setup.cfg b/services/api-server/setup.cfg index 8a0204af53c..8bb3e9b8f8e 100644 --- a/services/api-server/setup.cfg +++ b/services/api-server/setup.cfg @@ -9,13 +9,14 @@ commit_args = --no-verify [tool:pytest] asyncio_mode = auto +asyncio_default_fixture_loop_scope = function addopts = --strict-markers -markers = +markers = slow: marks tests as slow (deselect with '-m "not slow"') acceptance_test: "marks tests as 'acceptance tests' i.e. does the system do what the user expects? Typically those are workflows." testit: "marks test to run during development" [mypy] -plugins = +plugins = pydantic.mypy sqlalchemy.ext.mypy.plugin diff --git a/services/api-server/tests/unit/test_utils_http_calls_capture.py b/services/api-server/tests/unit/test_utils_http_calls_capture.py index 9ef5e034529..62e3ddac64e 100644 --- a/services/api-server/tests/unit/test_utils_http_calls_capture.py +++ b/services/api-server/tests/unit/test_utils_http_calls_capture.py @@ -4,7 +4,6 @@ # pylint: disable=too-many-arguments -import asyncio import re from pathlib import Path @@ -17,9 +16,7 @@ from pytest_simcore.helpers.httpx_calls_capture_models import HttpApiCallCaptureModel -async def test_capture_http_call( - event_loop: asyncio.AbstractEventLoop, httpbin_base_url: HttpUrl -): +async def test_capture_http_call(httpbin_base_url: HttpUrl): # CAPTURE async with httpx.AsyncClient() as client: response: httpx.Response = await client.get(f"{httpbin_base_url}json") @@ -56,9 +53,7 @@ async def test_capture_http_call( assert response.status_code == captured.status_code -async def test_capture_http_dynamic_call( - event_loop: asyncio.AbstractEventLoop, faker: Faker, httpbin_base_url: str -): +async def test_capture_http_dynamic_call(faker: Faker, httpbin_base_url: str): # CAPTURE async with httpx.AsyncClient() as client: sample_uid = faker.uuid4() # used during test sampling diff --git a/services/autoscaling/requirements/_base.txt b/services/autoscaling/requirements/_base.txt index f676fe27b72..955aa1a4b25 100644 --- a/services/autoscaling/requirements/_base.txt +++ b/services/autoscaling/requirements/_base.txt @@ -1,4 +1,4 @@ -aio-pika==9.5.3 +aio-pika==9.5.5 # via # -r requirements/../../../packages/aws-library/requirements/../../../packages/service-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/_base.in @@ -26,7 +26,7 @@ aiofiles==24.1.0 # -r requirements/../../../packages/aws-library/requirements/../../../packages/service-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/_base.in # aioboto3 -aiohappyeyeballs==2.4.4 +aiohappyeyeballs==2.6.1 # via aiohttp aiohttp==3.11.18 # via @@ -60,11 +60,11 @@ aioitertools==0.12.0 # via aiobotocore aiormq==6.8.1 # via aio-pika -aiosignal==1.3.1 +aiosignal==1.3.2 # via aiohttp annotated-types==0.7.0 # via pydantic -anyio==4.7.0 +anyio==4.9.0 # via # fast-depends # faststream @@ -81,7 +81,7 @@ arrow==1.3.0 # -r requirements/../../../packages/service-library/requirements/_base.in asgiref==3.8.1 # via opentelemetry-instrumentation-asgi -attrs==24.2.0 +attrs==25.3.0 # via # aiohttp # jsonschema @@ -93,9 +93,9 @@ botocore==1.37.3 # aiobotocore # boto3 # s3transfer -botocore-stubs==1.35.76 +botocore-stubs==1.38.19 # via types-aiobotocore -certifi==2024.8.30 +certifi==2025.4.26 # via # -c requirements/../../../packages/aws-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/aws-library/requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt @@ -124,32 +124,32 @@ certifi==2024.8.30 # httpcore # httpx # requests -charset-normalizer==3.4.0 +charset-normalizer==3.4.2 # via requests -click==8.1.7 +click==8.1.8 # via # -c requirements/../../../services/dask-sidecar/requirements/_dask-distributed.txt # dask # distributed # typer # uvicorn -cloudpickle==3.1.0 +cloudpickle==3.1.1 # via # -c requirements/../../../services/dask-sidecar/requirements/_dask-distributed.txt # dask # distributed -dask==2024.12.0 +dask==2025.5.0 # via # -c requirements/../../../services/dask-sidecar/requirements/_dask-distributed.txt # -r requirements/_base.in # distributed -deprecated==1.2.15 +deprecated==1.2.18 # via # opentelemetry-api # opentelemetry-exporter-otlp-proto-grpc # opentelemetry-exporter-otlp-proto-http # opentelemetry-semantic-conventions -distributed==2024.12.0 +distributed==2025.5.0 # via # -c requirements/../../../services/dask-sidecar/requirements/_dask-distributed.txt # dask @@ -157,40 +157,40 @@ dnspython==2.7.0 # via email-validator email-validator==2.2.0 # via pydantic -exceptiongroup==1.2.2 +exceptiongroup==1.3.0 # via aio-pika fast-depends==2.4.12 # via faststream -fastapi==0.115.6 +fastapi==0.115.12 # via # -r requirements/../../../packages/service-library/requirements/_fastapi.in # -r requirements/_base.in # fastapi-lifespan-manager fastapi-lifespan-manager==0.1.4 # via -r requirements/../../../packages/service-library/requirements/_fastapi.in -faststream==0.5.33 +faststream==0.5.41 # via # -r requirements/../../../packages/aws-library/requirements/../../../packages/service-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/_base.in -frozenlist==1.5.0 +frozenlist==1.6.0 # via # aiohttp # aiosignal -fsspec==2024.10.0 +fsspec==2025.3.2 # via # -c requirements/../../../services/dask-sidecar/requirements/_dask-distributed.txt # dask -googleapis-common-protos==1.66.0 +googleapis-common-protos==1.70.0 # via # opentelemetry-exporter-otlp-proto-grpc # opentelemetry-exporter-otlp-proto-http -grpcio==1.68.1 +grpcio==1.71.0 # via opentelemetry-exporter-otlp-proto-grpc -h11==0.14.0 +h11==0.16.0 # via # httpcore # uvicorn -httpcore==1.0.7 +httpcore==1.0.9 # via httpx httpx==0.28.1 # via @@ -226,12 +226,12 @@ idna==3.10 # httpx # requests # yarl -importlib-metadata==8.5.0 +importlib-metadata==8.6.1 # via # -c requirements/../../../services/dask-sidecar/requirements/_dask-distributed.txt # dask # opentelemetry-api -jinja2==3.1.4 +jinja2==3.1.6 # via # -c requirements/../../../packages/aws-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/aws-library/requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt @@ -270,7 +270,7 @@ jsonschema==4.23.0 # -r requirements/../../../packages/aws-library/requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/_base.in # -r requirements/../../../packages/models-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/_base.in -jsonschema-specifications==2024.10.1 +jsonschema-specifications==2025.4.1 # via jsonschema locket==1.0.0 # via @@ -289,12 +289,12 @@ msgpack==1.1.0 # via # -c requirements/../../../services/dask-sidecar/requirements/_dask-distributed.txt # distributed -multidict==6.1.0 +multidict==6.4.4 # via # aiobotocore # aiohttp # yarl -opentelemetry-api==1.28.2 +opentelemetry-api==1.33.1 # via # -r requirements/../../../packages/aws-library/requirements/../../../packages/service-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/_base.in @@ -311,19 +311,19 @@ opentelemetry-api==1.28.2 # opentelemetry-propagator-aws-xray # opentelemetry-sdk # opentelemetry-semantic-conventions -opentelemetry-exporter-otlp==1.28.2 +opentelemetry-exporter-otlp==1.33.1 # via # -r requirements/../../../packages/aws-library/requirements/../../../packages/service-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/_base.in -opentelemetry-exporter-otlp-proto-common==1.28.2 +opentelemetry-exporter-otlp-proto-common==1.33.1 # via # opentelemetry-exporter-otlp-proto-grpc # opentelemetry-exporter-otlp-proto-http -opentelemetry-exporter-otlp-proto-grpc==1.28.2 +opentelemetry-exporter-otlp-proto-grpc==1.33.1 # via opentelemetry-exporter-otlp -opentelemetry-exporter-otlp-proto-http==1.28.2 +opentelemetry-exporter-otlp-proto-http==1.33.1 # via opentelemetry-exporter-otlp -opentelemetry-instrumentation==0.49b2 +opentelemetry-instrumentation==0.54b1 # via # opentelemetry-instrumentation-asgi # opentelemetry-instrumentation-botocore @@ -332,40 +332,40 @@ opentelemetry-instrumentation==0.49b2 # opentelemetry-instrumentation-logging # opentelemetry-instrumentation-redis # opentelemetry-instrumentation-requests -opentelemetry-instrumentation-asgi==0.49b2 +opentelemetry-instrumentation-asgi==0.54b1 # via opentelemetry-instrumentation-fastapi -opentelemetry-instrumentation-botocore==0.49b2 +opentelemetry-instrumentation-botocore==0.54b1 # via -r requirements/../../../packages/aws-library/requirements/_base.in -opentelemetry-instrumentation-fastapi==0.49b2 +opentelemetry-instrumentation-fastapi==0.54b1 # via -r requirements/../../../packages/service-library/requirements/_fastapi.in -opentelemetry-instrumentation-httpx==0.49b2 +opentelemetry-instrumentation-httpx==0.54b1 # via -r requirements/../../../packages/service-library/requirements/_fastapi.in -opentelemetry-instrumentation-logging==0.49b2 +opentelemetry-instrumentation-logging==0.54b1 # via # -r requirements/../../../packages/aws-library/requirements/../../../packages/service-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/_base.in -opentelemetry-instrumentation-redis==0.49b2 +opentelemetry-instrumentation-redis==0.54b1 # via # -r requirements/../../../packages/aws-library/requirements/../../../packages/service-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/_base.in -opentelemetry-instrumentation-requests==0.49b2 +opentelemetry-instrumentation-requests==0.54b1 # via # -r requirements/../../../packages/aws-library/requirements/../../../packages/service-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/_base.in opentelemetry-propagator-aws-xray==1.0.2 # via opentelemetry-instrumentation-botocore -opentelemetry-proto==1.28.2 +opentelemetry-proto==1.33.1 # via # opentelemetry-exporter-otlp-proto-common # opentelemetry-exporter-otlp-proto-grpc # opentelemetry-exporter-otlp-proto-http -opentelemetry-sdk==1.28.2 +opentelemetry-sdk==1.33.1 # via # -r requirements/../../../packages/aws-library/requirements/../../../packages/service-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/_base.in # opentelemetry-exporter-otlp-proto-grpc # opentelemetry-exporter-otlp-proto-http -opentelemetry-semantic-conventions==0.49b2 +opentelemetry-semantic-conventions==0.54b1 # via # opentelemetry-instrumentation # opentelemetry-instrumentation-asgi @@ -375,13 +375,13 @@ opentelemetry-semantic-conventions==0.49b2 # opentelemetry-instrumentation-redis # opentelemetry-instrumentation-requests # opentelemetry-sdk -opentelemetry-util-http==0.49b2 +opentelemetry-util-http==0.54b1 # via # opentelemetry-instrumentation-asgi # opentelemetry-instrumentation-fastapi # opentelemetry-instrumentation-httpx # opentelemetry-instrumentation-requests -orjson==3.10.12 +orjson==3.10.18 # via # -c requirements/../../../packages/aws-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/aws-library/requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt @@ -423,7 +423,7 @@ orjson==3.10.12 # -r requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/../../../packages/common-library/requirements/_base.in # -r requirements/../../../packages/settings-library/requirements/../../../packages/common-library/requirements/_base.in -packaging==24.2 +packaging==25.0 # via # -c requirements/../../../services/dask-sidecar/requirements/_dask-distributed.txt # -r requirements/_base.in @@ -436,25 +436,25 @@ partd==1.4.2 # via # -c requirements/../../../services/dask-sidecar/requirements/_dask-distributed.txt # dask -prometheus-client==0.21.1 +prometheus-client==0.22.0 # via -r requirements/../../../packages/service-library/requirements/_fastapi.in -propcache==0.2.1 +propcache==0.3.1 # via # aiohttp # yarl -protobuf==5.29.1 +protobuf==5.29.4 # via # googleapis-common-protos # opentelemetry-proto -psutil==6.1.0 +psutil==7.0.0 # via # -c requirements/../../../services/dask-sidecar/requirements/_dask-distributed.txt # -r requirements/../../../packages/aws-library/requirements/../../../packages/service-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/_base.in # distributed -pycryptodome==3.21.0 +pycryptodome==3.23.0 # via stream-zip -pydantic==2.10.3 +pydantic==2.11.4 # via # -c requirements/../../../packages/aws-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/aws-library/requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt @@ -507,9 +507,9 @@ pydantic==2.10.3 # fastapi # pydantic-extra-types # pydantic-settings -pydantic-core==2.27.1 +pydantic-core==2.33.2 # via pydantic -pydantic-extra-types==2.10.0 +pydantic-extra-types==2.10.4 # via # -r requirements/../../../packages/aws-library/requirements/../../../packages/common-library/requirements/_base.in # -r requirements/../../../packages/aws-library/requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/_base.in @@ -527,7 +527,7 @@ pydantic-extra-types==2.10.0 # -r requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/../../../packages/common-library/requirements/_base.in # -r requirements/../../../packages/settings-library/requirements/../../../packages/common-library/requirements/_base.in -pydantic-settings==2.6.1 +pydantic-settings==2.7.0 # via # -c requirements/../../../packages/aws-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/aws-library/requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt @@ -561,9 +561,9 @@ pydantic-settings==2.6.1 # -r requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/_base.in # -r requirements/../../../packages/settings-library/requirements/_base.in -pygments==2.18.0 +pygments==2.19.1 # via rich -pyinstrument==5.0.0 +pyinstrument==5.0.1 # via # -r requirements/../../../packages/aws-library/requirements/../../../packages/service-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/_base.in @@ -572,7 +572,7 @@ python-dateutil==2.9.0.post0 # aiobotocore # arrow # botocore -python-dotenv==1.0.1 +python-dotenv==1.1.0 # via pydantic-settings pyyaml==6.0.2 # via @@ -605,7 +605,7 @@ pyyaml==6.0.2 # -r requirements/../../../packages/service-library/requirements/_base.in # dask # distributed -redis==5.2.1 +redis==6.1.0 # via # -c requirements/../../../packages/aws-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/aws-library/requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt @@ -663,20 +663,20 @@ referencing==0.35.1 # jsonschema-specifications requests==2.32.3 # via opentelemetry-exporter-otlp-proto-http -rich==13.9.4 +rich==14.0.0 # via # -r requirements/../../../packages/aws-library/requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/_base.in # -r requirements/../../../packages/aws-library/requirements/../../../packages/settings-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/_base.in # -r requirements/../../../packages/settings-library/requirements/_base.in # typer -rpds-py==0.22.3 +rpds-py==0.25.0 # via # jsonschema # referencing s3transfer==0.11.3 # via boto3 -sh==2.1.0 +sh==2.2.2 # via -r requirements/../../../packages/aws-library/requirements/_base.in shellingham==1.5.4 # via typer @@ -688,7 +688,7 @@ sortedcontainers==2.4.0 # via # -c requirements/../../../services/dask-sidecar/requirements/_dask-distributed.txt # distributed -starlette==0.41.3 +starlette==0.46.2 # via # -c requirements/../../../packages/aws-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/aws-library/requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt @@ -719,11 +719,11 @@ stream-zip==0.0.83 # via # -r requirements/../../../packages/aws-library/requirements/../../../packages/service-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/_base.in -tblib==3.0.0 +tblib==3.1.0 # via # -c requirements/../../../services/dask-sidecar/requirements/_dask-distributed.txt # distributed -tenacity==9.0.0 +tenacity==9.1.2 # via # -r requirements/../../../packages/aws-library/requirements/../../../packages/service-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/_base.in @@ -735,7 +735,7 @@ toolz==1.0.0 # dask # distributed # partd -tornado==6.4.2 +tornado==6.5 # via # -c requirements/../../../services/dask-sidecar/requirements/_dask-distributed.txt # distributed @@ -743,28 +743,29 @@ tqdm==4.67.1 # via # -r requirements/../../../packages/aws-library/requirements/../../../packages/service-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/_base.in -typer==0.15.1 +typer==0.15.4 # via # -r requirements/../../../packages/aws-library/requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/_base.in # -r requirements/../../../packages/aws-library/requirements/../../../packages/settings-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/_base.in # -r requirements/../../../packages/settings-library/requirements/_base.in -types-aiobotocore==2.19.0 +types-aiobotocore==2.22.0 # via -r requirements/../../../packages/aws-library/requirements/_base.in -types-aiobotocore-ec2==2.19.0 +types-aiobotocore-ec2==2.22.0 # via types-aiobotocore -types-aiobotocore-s3==2.19.0 +types-aiobotocore-s3==2.22.0 # via types-aiobotocore -types-aiobotocore-ssm==2.19.0 +types-aiobotocore-ssm==2.22.0 # via types-aiobotocore -types-awscrt==0.23.3 +types-awscrt==0.27.2 # via botocore-stubs -types-python-dateutil==2.9.0.20241206 +types-python-dateutil==2.9.0.20250516 # via arrow -typing-extensions==4.12.2 +typing-extensions==4.13.2 # via # aiodebug # anyio + # exceptiongroup # fastapi # faststream # opentelemetry-sdk @@ -776,7 +777,10 @@ typing-extensions==4.12.2 # types-aiobotocore-ec2 # types-aiobotocore-s3 # types-aiobotocore-ssm -urllib3==2.2.3 + # typing-inspection +typing-inspection==0.4.0 + # via pydantic +urllib3==2.4.0 # via # -c requirements/../../../packages/aws-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/aws-library/requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt @@ -806,16 +810,16 @@ urllib3==2.2.3 # botocore # distributed # requests -uvicorn==0.32.1 +uvicorn==0.34.2 # via -r requirements/../../../packages/service-library/requirements/_fastapi.in -wrapt==1.17.0 +wrapt==1.17.2 # via # aiobotocore # deprecated # opentelemetry-instrumentation # opentelemetry-instrumentation-httpx # opentelemetry-instrumentation-redis -yarl==1.18.3 +yarl==1.20.0 # via # -r requirements/../../../packages/aws-library/requirements/../../../packages/service-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/_base.in diff --git a/services/autoscaling/requirements/_test.txt b/services/autoscaling/requirements/_test.txt index b7c7859014c..669083ffa99 100644 --- a/services/autoscaling/requirements/_test.txt +++ b/services/autoscaling/requirements/_test.txt @@ -4,18 +4,18 @@ annotated-types==0.7.0 # pydantic antlr4-python3-runtime==4.13.2 # via moto -anyio==4.7.0 +anyio==4.9.0 # via # -c requirements/_base.txt # httpx asgi-lifespan==2.1.0 # via -r requirements/_test.in -attrs==24.2.0 +attrs==25.3.0 # via # -c requirements/_base.txt # jsonschema # referencing -aws-sam-translator==1.95.0 +aws-sam-translator==1.97.0 # via cfn-lint aws-xray-sdk==2.14.0 # via moto @@ -33,11 +33,11 @@ botocore==1.37.3 # boto3 # moto # s3transfer -botocore-stubs==1.35.76 +botocore-stubs==1.38.19 # via # -c requirements/_base.txt # types-aiobotocore -certifi==2024.8.30 +certifi==2025.4.26 # via # -c requirements/../../../requirements/constraints.txt # -c requirements/_base.txt @@ -46,50 +46,50 @@ certifi==2024.8.30 # requests cffi==1.17.1 # via cryptography -cfn-lint==1.27.0 +cfn-lint==1.35.1 # via moto -charset-normalizer==3.4.0 +charset-normalizer==3.4.2 # via # -c requirements/_base.txt # requests -click==8.1.7 +click==8.1.8 # via # -c requirements/_base.txt # flask -coverage==7.6.12 +coverage==7.8.0 # via # -r requirements/_test.in # pytest-cov -cryptography==44.0.2 +cryptography==45.0.2 # via # -c requirements/../../../requirements/constraints.txt # joserfc # moto -deepdiff==8.2.0 +deepdiff==8.5.0 # via -r requirements/_test.in docker==7.1.0 # via # -r requirements/_test.in # moto -faker==36.1.1 +faker==37.3.0 # via -r requirements/_test.in -fakeredis==2.27.0 +fakeredis==2.29.0 # via -r requirements/_test.in flaky==3.8.1 # via -r requirements/_test.in -flask==3.1.0 +flask==3.1.1 # via # flask-cors # moto -flask-cors==5.0.1 +flask-cors==6.0.0 # via moto graphql-core==3.2.6 # via moto -h11==0.14.0 +h11==0.16.0 # via # -c requirements/_base.txt # httpcore -httpcore==1.0.7 +httpcore==1.0.9 # via # -c requirements/_base.txt # httpx @@ -107,11 +107,11 @@ idna==3.10 # anyio # httpx # requests -iniconfig==2.0.0 +iniconfig==2.1.0 # via pytest itsdangerous==2.2.0 # via flask -jinja2==3.1.4 +jinja2==3.1.6 # via # -c requirements/../../../requirements/constraints.txt # -c requirements/_base.txt @@ -138,18 +138,19 @@ jsonschema==4.23.0 # openapi-spec-validator jsonschema-path==0.3.4 # via openapi-spec-validator -jsonschema-specifications==2024.10.1 +jsonschema-specifications==2025.4.1 # via # -c requirements/_base.txt # jsonschema # openapi-schema-validator -lazy-object-proxy==1.10.0 +lazy-object-proxy==1.11.0 # via openapi-spec-validator lupa==2.4 # via fakeredis markupsafe==3.0.2 # via # -c requirements/_base.txt + # flask # jinja2 # werkzeug moto==5.1.4 @@ -162,22 +163,22 @@ openapi-schema-validator==0.6.3 # via openapi-spec-validator openapi-spec-validator==0.7.1 # via moto -orderly-set==5.3.0 +orderly-set==5.4.1 # via deepdiff -packaging==24.2 +packaging==25.0 # via # -c requirements/_base.txt # pytest # pytest-sugar pathable==0.4.4 # via jsonschema-path -pluggy==1.5.0 +pluggy==1.6.0 # via pytest ply==3.11 # via jsonpath-ng pprintpp==0.4.0 # via pytest-icdiff -psutil==6.1.0 +psutil==7.0.0 # via # -c requirements/_base.txt # -r requirements/_test.in @@ -185,16 +186,16 @@ py-partiql-parser==0.6.1 # via moto pycparser==2.22 # via cffi -pydantic==2.10.3 +pydantic==2.11.4 # via # -c requirements/../../../requirements/constraints.txt # -c requirements/_base.txt # aws-sam-translator -pydantic-core==2.27.1 +pydantic-core==2.33.2 # via # -c requirements/_base.txt # pydantic -pyparsing==3.2.1 +pyparsing==3.2.3 # via moto pytest==8.3.5 # via @@ -204,11 +205,9 @@ pytest==8.3.5 # pytest-icdiff # pytest-mock # pytest-sugar -pytest-asyncio==0.23.8 - # via - # -c requirements/../../../requirements/constraints.txt - # -r requirements/_test.in -pytest-cov==6.0.0 +pytest-asyncio==0.26.0 + # via -r requirements/_test.in +pytest-cov==6.1.1 # via -r requirements/_test.in pytest-icdiff==0.9 # via -r requirements/_test.in @@ -223,7 +222,7 @@ python-dateutil==2.9.0.post0 # -c requirements/_base.txt # botocore # moto -python-dotenv==1.0.1 +python-dotenv==1.1.0 # via # -c requirements/_base.txt # -r requirements/_test.in @@ -235,7 +234,7 @@ pyyaml==6.0.2 # jsonschema-path # moto # responses -redis==5.2.1 +redis==6.1.0 # via # -c requirements/../../../requirements/constraints.txt # -c requirements/_base.txt @@ -256,13 +255,13 @@ requests==2.32.3 # jsonschema-path # moto # responses -responses==0.25.6 +responses==0.25.7 # via moto respx==0.22.0 # via -r requirements/_test.in rfc3339-validator==0.1.4 # via openapi-schema-validator -rpds-py==0.22.3 +rpds-py==0.25.0 # via # -c requirements/_base.txt # jsonschema @@ -271,7 +270,7 @@ s3transfer==0.11.3 # via # -c requirements/_base.txt # boto3 -setuptools==75.8.2 +setuptools==80.7.1 # via moto six==1.17.0 # via @@ -287,35 +286,35 @@ sortedcontainers==2.4.0 # via # -c requirements/_base.txt # fakeredis -sympy==1.13.3 +sympy==1.14.0 # via cfn-lint -termcolor==2.5.0 +termcolor==3.1.0 # via pytest-sugar -types-aiobotocore==2.19.0 +types-aiobotocore==2.22.0 # via # -c requirements/_base.txt # -r requirements/_test.in -types-aiobotocore-ec2==2.19.0 +types-aiobotocore-ec2==2.22.0 # via # -c requirements/_base.txt # types-aiobotocore -types-aiobotocore-iam==2.19.0 +types-aiobotocore-iam==2.22.0 # via types-aiobotocore -types-aiobotocore-s3==2.19.0 +types-aiobotocore-s3==2.22.0 # via # -c requirements/_base.txt # types-aiobotocore -types-aiobotocore-ssm==2.19.0 +types-aiobotocore-ssm==2.22.0 # via # -c requirements/_base.txt # types-aiobotocore -types-awscrt==0.23.3 +types-awscrt==0.27.2 # via # -c requirements/_base.txt # botocore-stubs -types-pyyaml==6.0.12.20241230 +types-pyyaml==6.0.12.20250516 # via -r requirements/_test.in -typing-extensions==4.12.2 +typing-extensions==4.13.2 # via # -c requirements/_base.txt # anyio @@ -328,9 +327,14 @@ typing-extensions==4.12.2 # types-aiobotocore-iam # types-aiobotocore-s3 # types-aiobotocore-ssm -tzdata==2025.1 + # typing-inspection +typing-inspection==0.4.0 + # via + # -c requirements/_base.txt + # pydantic +tzdata==2025.2 # via faker -urllib3==2.2.3 +urllib3==2.4.0 # via # -c requirements/../../../requirements/constraints.txt # -c requirements/_base.txt @@ -343,7 +347,7 @@ werkzeug==3.1.3 # flask # flask-cors # moto -wrapt==1.17.0 +wrapt==1.17.2 # via # -c requirements/_base.txt # aws-xray-sdk diff --git a/services/autoscaling/requirements/_tools.txt b/services/autoscaling/requirements/_tools.txt index 6c7b9431172..c76d3992bbe 100644 --- a/services/autoscaling/requirements/_tools.txt +++ b/services/autoscaling/requirements/_tools.txt @@ -1,4 +1,4 @@ -astroid==3.3.8 +astroid==3.3.10 # via pylint black==25.1.0 # via -r requirements/../../../requirements/devenv.txt @@ -8,19 +8,19 @@ bump2version==1.0.1 # via -r requirements/../../../requirements/devenv.txt cfgv==3.4.0 # via pre-commit -click==8.1.7 +click==8.1.8 # via # -c requirements/_base.txt # -c requirements/_test.txt # black # pip-tools -dill==0.3.9 +dill==0.4.0 # via pylint distlib==0.3.9 # via virtualenv -filelock==3.17.0 +filelock==3.18.0 # via virtualenv -identify==2.6.8 +identify==2.6.10 # via pre-commit isort==6.0.1 # via @@ -30,13 +30,13 @@ mccabe==0.7.0 # via pylint mypy==1.15.0 # via -r requirements/../../../requirements/devenv.txt -mypy-extensions==1.0.0 +mypy-extensions==1.1.0 # via # black # mypy nodeenv==1.9.1 # via pre-commit -packaging==24.2 +packaging==25.0 # via # -c requirements/_base.txt # -c requirements/_test.txt @@ -44,18 +44,18 @@ packaging==24.2 # build pathspec==0.12.1 # via black -pip==25.0.1 +pip==25.1.1 # via pip-tools pip-tools==7.4.1 # via -r requirements/../../../requirements/devenv.txt -platformdirs==4.3.6 +platformdirs==4.3.8 # via # black # pylint # virtualenv -pre-commit==4.1.0 +pre-commit==4.2.0 # via -r requirements/../../../requirements/devenv.txt -pylint==3.3.4 +pylint==3.3.7 # via -r requirements/../../../requirements/devenv.txt pyproject-hooks==1.2.0 # via @@ -68,20 +68,20 @@ pyyaml==6.0.2 # -c requirements/_test.txt # pre-commit # watchdog -ruff==0.9.9 +ruff==0.11.10 # via -r requirements/../../../requirements/devenv.txt -setuptools==75.8.2 +setuptools==80.7.1 # via # -c requirements/_test.txt # pip-tools tomlkit==0.13.2 # via pylint -typing-extensions==4.12.2 +typing-extensions==4.13.2 # via # -c requirements/_base.txt # -c requirements/_test.txt # mypy -virtualenv==20.29.2 +virtualenv==20.31.2 # via pre-commit watchdog==6.0.0 # via -r requirements/_tools.in diff --git a/services/autoscaling/setup.cfg b/services/autoscaling/setup.cfg index c41b031a53f..fbce28e13d5 100644 --- a/services/autoscaling/setup.cfg +++ b/services/autoscaling/setup.cfg @@ -9,6 +9,7 @@ commit_args = --no-verify [tool:pytest] asyncio_mode = auto +asyncio_default_fixture_loop_scope = function markers = slow: marks tests as slow (deselect with '-m "not slow"') acceptance_test: "marks tests as 'acceptance tests' i.e. does the system do what the user expects? Typically those are workflows." diff --git a/services/catalog/requirements/_test.txt b/services/catalog/requirements/_test.txt index 40781a24dfb..30015c3c870 100644 --- a/services/catalog/requirements/_test.txt +++ b/services/catalog/requirements/_test.txt @@ -132,10 +132,8 @@ pytest==8.3.5 # pytest-mock pytest-aiohttp==1.1.0 # via -r requirements/_test.in -pytest-asyncio==0.23.8 - # via - # -c requirements/../../../requirements/constraints.txt - # pytest-aiohttp +pytest-asyncio==0.26.0 + # via pytest-aiohttp pytest-benchmark==5.1.0 # via -r requirements/_test.in pytest-cov==6.0.0 diff --git a/services/catalog/setup.cfg b/services/catalog/setup.cfg index ac92051993c..812aa1c836c 100644 --- a/services/catalog/setup.cfg +++ b/services/catalog/setup.cfg @@ -9,10 +9,11 @@ commit_args = --no-verify [tool:pytest] asyncio_mode = auto -markers = +asyncio_default_fixture_loop_scope = function +markers = testit: "marks test to run during development" [mypy] -plugins = +plugins = pydantic.mypy sqlalchemy.ext.mypy.plugin diff --git a/services/clusters-keeper/requirements/_base.txt b/services/clusters-keeper/requirements/_base.txt index b8d25923fc3..84a7c88a3c7 100644 --- a/services/clusters-keeper/requirements/_base.txt +++ b/services/clusters-keeper/requirements/_base.txt @@ -1,4 +1,4 @@ -aio-pika==9.5.3 +aio-pika==9.5.5 # via # -r requirements/../../../packages/aws-library/requirements/../../../packages/service-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/_base.in @@ -24,7 +24,7 @@ aiofiles==24.1.0 # -r requirements/../../../packages/aws-library/requirements/../../../packages/service-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/_base.in # aioboto3 -aiohappyeyeballs==2.4.4 +aiohappyeyeballs==2.6.1 # via aiohttp aiohttp==3.11.18 # via @@ -58,11 +58,11 @@ aioitertools==0.12.0 # via aiobotocore aiormq==6.8.1 # via aio-pika -aiosignal==1.3.1 +aiosignal==1.3.2 # via aiohttp annotated-types==0.7.0 # via pydantic -anyio==4.7.0 +anyio==4.9.0 # via # fast-depends # faststream @@ -79,7 +79,7 @@ arrow==1.3.0 # -r requirements/../../../packages/service-library/requirements/_base.in asgiref==3.8.1 # via opentelemetry-instrumentation-asgi -attrs==24.2.0 +attrs==25.3.0 # via # aiohttp # jsonschema @@ -91,9 +91,9 @@ botocore==1.37.3 # aiobotocore # boto3 # s3transfer -botocore-stubs==1.35.76 +botocore-stubs==1.38.19 # via types-aiobotocore -certifi==2024.8.30 +certifi==2025.4.26 # via # -c requirements/../../../packages/aws-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/aws-library/requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt @@ -122,32 +122,32 @@ certifi==2024.8.30 # httpcore # httpx # requests -charset-normalizer==3.4.0 +charset-normalizer==3.4.2 # via requests -click==8.1.7 +click==8.1.8 # via # -c requirements/../../../services/dask-sidecar/requirements/_dask-distributed.txt # dask # distributed # typer # uvicorn -cloudpickle==3.1.0 +cloudpickle==3.1.1 # via # -c requirements/../../../services/dask-sidecar/requirements/_dask-distributed.txt # dask # distributed -dask==2024.12.0 +dask==2025.5.0 # via # -c requirements/../../../services/dask-sidecar/requirements/_dask-distributed.txt # -r requirements/_base.in # distributed -deprecated==1.2.15 +deprecated==1.2.18 # via # opentelemetry-api # opentelemetry-exporter-otlp-proto-grpc # opentelemetry-exporter-otlp-proto-http # opentelemetry-semantic-conventions -distributed==2024.12.0 +distributed==2025.5.0 # via # -c requirements/../../../services/dask-sidecar/requirements/_dask-distributed.txt # dask @@ -155,40 +155,40 @@ dnspython==2.7.0 # via email-validator email-validator==2.2.0 # via pydantic -exceptiongroup==1.2.2 +exceptiongroup==1.3.0 # via aio-pika fast-depends==2.4.12 # via faststream -fastapi==0.115.6 +fastapi==0.115.12 # via # -r requirements/../../../packages/service-library/requirements/_fastapi.in # -r requirements/_base.in # fastapi-lifespan-manager fastapi-lifespan-manager==0.1.4 # via -r requirements/../../../packages/service-library/requirements/_fastapi.in -faststream==0.5.33 +faststream==0.5.41 # via # -r requirements/../../../packages/aws-library/requirements/../../../packages/service-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/_base.in -frozenlist==1.5.0 +frozenlist==1.6.0 # via # aiohttp # aiosignal -fsspec==2024.10.0 +fsspec==2025.3.2 # via # -c requirements/../../../services/dask-sidecar/requirements/_dask-distributed.txt # dask -googleapis-common-protos==1.66.0 +googleapis-common-protos==1.70.0 # via # opentelemetry-exporter-otlp-proto-grpc # opentelemetry-exporter-otlp-proto-http -grpcio==1.68.1 +grpcio==1.71.0 # via opentelemetry-exporter-otlp-proto-grpc -h11==0.14.0 +h11==0.16.0 # via # httpcore # uvicorn -httpcore==1.0.7 +httpcore==1.0.9 # via httpx httpx==0.28.1 # via @@ -224,12 +224,12 @@ idna==3.10 # httpx # requests # yarl -importlib-metadata==8.5.0 +importlib-metadata==8.6.1 # via # -c requirements/../../../services/dask-sidecar/requirements/_dask-distributed.txt # dask # opentelemetry-api -jinja2==3.1.4 +jinja2==3.1.6 # via # -c requirements/../../../packages/aws-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/aws-library/requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt @@ -268,7 +268,7 @@ jsonschema==4.23.0 # -r requirements/../../../packages/aws-library/requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/_base.in # -r requirements/../../../packages/models-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/_base.in -jsonschema-specifications==2024.10.1 +jsonschema-specifications==2025.4.1 # via jsonschema locket==1.0.0 # via @@ -287,12 +287,12 @@ msgpack==1.1.0 # via # -c requirements/../../../services/dask-sidecar/requirements/_dask-distributed.txt # distributed -multidict==6.1.0 +multidict==6.4.4 # via # aiobotocore # aiohttp # yarl -opentelemetry-api==1.28.2 +opentelemetry-api==1.33.1 # via # -r requirements/../../../packages/aws-library/requirements/../../../packages/service-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/_base.in @@ -309,19 +309,19 @@ opentelemetry-api==1.28.2 # opentelemetry-propagator-aws-xray # opentelemetry-sdk # opentelemetry-semantic-conventions -opentelemetry-exporter-otlp==1.28.2 +opentelemetry-exporter-otlp==1.33.1 # via # -r requirements/../../../packages/aws-library/requirements/../../../packages/service-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/_base.in -opentelemetry-exporter-otlp-proto-common==1.28.2 +opentelemetry-exporter-otlp-proto-common==1.33.1 # via # opentelemetry-exporter-otlp-proto-grpc # opentelemetry-exporter-otlp-proto-http -opentelemetry-exporter-otlp-proto-grpc==1.28.2 +opentelemetry-exporter-otlp-proto-grpc==1.33.1 # via opentelemetry-exporter-otlp -opentelemetry-exporter-otlp-proto-http==1.28.2 +opentelemetry-exporter-otlp-proto-http==1.33.1 # via opentelemetry-exporter-otlp -opentelemetry-instrumentation==0.49b2 +opentelemetry-instrumentation==0.54b1 # via # opentelemetry-instrumentation-asgi # opentelemetry-instrumentation-botocore @@ -330,40 +330,40 @@ opentelemetry-instrumentation==0.49b2 # opentelemetry-instrumentation-logging # opentelemetry-instrumentation-redis # opentelemetry-instrumentation-requests -opentelemetry-instrumentation-asgi==0.49b2 +opentelemetry-instrumentation-asgi==0.54b1 # via opentelemetry-instrumentation-fastapi -opentelemetry-instrumentation-botocore==0.49b2 +opentelemetry-instrumentation-botocore==0.54b1 # via -r requirements/../../../packages/aws-library/requirements/_base.in -opentelemetry-instrumentation-fastapi==0.49b2 +opentelemetry-instrumentation-fastapi==0.54b1 # via -r requirements/../../../packages/service-library/requirements/_fastapi.in -opentelemetry-instrumentation-httpx==0.49b2 +opentelemetry-instrumentation-httpx==0.54b1 # via -r requirements/../../../packages/service-library/requirements/_fastapi.in -opentelemetry-instrumentation-logging==0.49b2 +opentelemetry-instrumentation-logging==0.54b1 # via # -r requirements/../../../packages/aws-library/requirements/../../../packages/service-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/_base.in -opentelemetry-instrumentation-redis==0.49b2 +opentelemetry-instrumentation-redis==0.54b1 # via # -r requirements/../../../packages/aws-library/requirements/../../../packages/service-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/_base.in -opentelemetry-instrumentation-requests==0.49b2 +opentelemetry-instrumentation-requests==0.54b1 # via # -r requirements/../../../packages/aws-library/requirements/../../../packages/service-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/_base.in opentelemetry-propagator-aws-xray==1.0.2 # via opentelemetry-instrumentation-botocore -opentelemetry-proto==1.28.2 +opentelemetry-proto==1.33.1 # via # opentelemetry-exporter-otlp-proto-common # opentelemetry-exporter-otlp-proto-grpc # opentelemetry-exporter-otlp-proto-http -opentelemetry-sdk==1.28.2 +opentelemetry-sdk==1.33.1 # via # -r requirements/../../../packages/aws-library/requirements/../../../packages/service-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/_base.in # opentelemetry-exporter-otlp-proto-grpc # opentelemetry-exporter-otlp-proto-http -opentelemetry-semantic-conventions==0.49b2 +opentelemetry-semantic-conventions==0.54b1 # via # opentelemetry-instrumentation # opentelemetry-instrumentation-asgi @@ -373,13 +373,13 @@ opentelemetry-semantic-conventions==0.49b2 # opentelemetry-instrumentation-redis # opentelemetry-instrumentation-requests # opentelemetry-sdk -opentelemetry-util-http==0.49b2 +opentelemetry-util-http==0.54b1 # via # opentelemetry-instrumentation-asgi # opentelemetry-instrumentation-fastapi # opentelemetry-instrumentation-httpx # opentelemetry-instrumentation-requests -orjson==3.10.12 +orjson==3.10.18 # via # -c requirements/../../../packages/aws-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/aws-library/requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt @@ -421,7 +421,7 @@ orjson==3.10.12 # -r requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/../../../packages/common-library/requirements/_base.in # -r requirements/../../../packages/settings-library/requirements/../../../packages/common-library/requirements/_base.in -packaging==24.2 +packaging==25.0 # via # -c requirements/../../../services/dask-sidecar/requirements/_dask-distributed.txt # -r requirements/_base.in @@ -434,25 +434,25 @@ partd==1.4.2 # via # -c requirements/../../../services/dask-sidecar/requirements/_dask-distributed.txt # dask -prometheus-client==0.21.1 +prometheus-client==0.22.0 # via -r requirements/../../../packages/service-library/requirements/_fastapi.in -propcache==0.2.1 +propcache==0.3.1 # via # aiohttp # yarl -protobuf==5.29.1 +protobuf==5.29.4 # via # googleapis-common-protos # opentelemetry-proto -psutil==6.1.0 +psutil==7.0.0 # via # -c requirements/../../../services/dask-sidecar/requirements/_dask-distributed.txt # -r requirements/../../../packages/aws-library/requirements/../../../packages/service-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/_base.in # distributed -pycryptodome==3.21.0 +pycryptodome==3.23.0 # via stream-zip -pydantic==2.10.3 +pydantic==2.11.4 # via # -c requirements/../../../packages/aws-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/aws-library/requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt @@ -505,9 +505,9 @@ pydantic==2.10.3 # fastapi # pydantic-extra-types # pydantic-settings -pydantic-core==2.27.1 +pydantic-core==2.33.2 # via pydantic -pydantic-extra-types==2.10.0 +pydantic-extra-types==2.10.4 # via # -r requirements/../../../packages/aws-library/requirements/../../../packages/common-library/requirements/_base.in # -r requirements/../../../packages/aws-library/requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/_base.in @@ -525,7 +525,7 @@ pydantic-extra-types==2.10.0 # -r requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/../../../packages/common-library/requirements/_base.in # -r requirements/../../../packages/settings-library/requirements/../../../packages/common-library/requirements/_base.in -pydantic-settings==2.6.1 +pydantic-settings==2.7.0 # via # -c requirements/../../../packages/aws-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/aws-library/requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt @@ -559,9 +559,9 @@ pydantic-settings==2.6.1 # -r requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/_base.in # -r requirements/../../../packages/settings-library/requirements/_base.in -pygments==2.18.0 +pygments==2.19.1 # via rich -pyinstrument==5.0.0 +pyinstrument==5.0.1 # via # -r requirements/../../../packages/aws-library/requirements/../../../packages/service-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/_base.in @@ -570,7 +570,7 @@ python-dateutil==2.9.0.post0 # aiobotocore # arrow # botocore -python-dotenv==1.0.1 +python-dotenv==1.1.0 # via pydantic-settings pyyaml==6.0.2 # via @@ -603,7 +603,7 @@ pyyaml==6.0.2 # -r requirements/../../../packages/service-library/requirements/_base.in # dask # distributed -redis==5.2.1 +redis==6.1.0 # via # -c requirements/../../../packages/aws-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/aws-library/requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt @@ -661,20 +661,20 @@ referencing==0.35.1 # jsonschema-specifications requests==2.32.3 # via opentelemetry-exporter-otlp-proto-http -rich==13.9.4 +rich==14.0.0 # via # -r requirements/../../../packages/aws-library/requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/_base.in # -r requirements/../../../packages/aws-library/requirements/../../../packages/settings-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/_base.in # -r requirements/../../../packages/settings-library/requirements/_base.in # typer -rpds-py==0.22.3 +rpds-py==0.25.0 # via # jsonschema # referencing s3transfer==0.11.3 # via boto3 -sh==2.1.0 +sh==2.2.2 # via -r requirements/../../../packages/aws-library/requirements/_base.in shellingham==1.5.4 # via typer @@ -686,7 +686,7 @@ sortedcontainers==2.4.0 # via # -c requirements/../../../services/dask-sidecar/requirements/_dask-distributed.txt # distributed -starlette==0.41.3 +starlette==0.46.2 # via # -c requirements/../../../packages/aws-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/aws-library/requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt @@ -717,11 +717,11 @@ stream-zip==0.0.83 # via # -r requirements/../../../packages/aws-library/requirements/../../../packages/service-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/_base.in -tblib==3.0.0 +tblib==3.1.0 # via # -c requirements/../../../services/dask-sidecar/requirements/_dask-distributed.txt # distributed -tenacity==9.0.0 +tenacity==9.1.2 # via # -r requirements/../../../packages/aws-library/requirements/../../../packages/service-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/_base.in @@ -733,7 +733,7 @@ toolz==1.0.0 # dask # distributed # partd -tornado==6.4.2 +tornado==6.5 # via # -c requirements/../../../services/dask-sidecar/requirements/_dask-distributed.txt # distributed @@ -741,28 +741,29 @@ tqdm==4.67.1 # via # -r requirements/../../../packages/aws-library/requirements/../../../packages/service-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/_base.in -typer==0.15.1 +typer==0.15.4 # via # -r requirements/../../../packages/aws-library/requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/_base.in # -r requirements/../../../packages/aws-library/requirements/../../../packages/settings-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/_base.in # -r requirements/../../../packages/settings-library/requirements/_base.in -types-aiobotocore==2.19.0 +types-aiobotocore==2.22.0 # via -r requirements/../../../packages/aws-library/requirements/_base.in -types-aiobotocore-ec2==2.19.0 +types-aiobotocore-ec2==2.22.0 # via types-aiobotocore -types-aiobotocore-s3==2.19.0 +types-aiobotocore-s3==2.22.0 # via types-aiobotocore -types-aiobotocore-ssm==2.19.0 +types-aiobotocore-ssm==2.22.0 # via types-aiobotocore -types-awscrt==0.23.3 +types-awscrt==0.27.2 # via botocore-stubs -types-python-dateutil==2.9.0.20241206 +types-python-dateutil==2.9.0.20250516 # via arrow -typing-extensions==4.12.2 +typing-extensions==4.13.2 # via # aiodebug # anyio + # exceptiongroup # fastapi # faststream # opentelemetry-sdk @@ -774,7 +775,10 @@ typing-extensions==4.12.2 # types-aiobotocore-ec2 # types-aiobotocore-s3 # types-aiobotocore-ssm -urllib3==2.2.3 + # typing-inspection +typing-inspection==0.4.0 + # via pydantic +urllib3==2.4.0 # via # -c requirements/../../../packages/aws-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/aws-library/requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt @@ -804,16 +808,16 @@ urllib3==2.2.3 # botocore # distributed # requests -uvicorn==0.32.1 +uvicorn==0.34.2 # via -r requirements/../../../packages/service-library/requirements/_fastapi.in -wrapt==1.17.0 +wrapt==1.17.2 # via # aiobotocore # deprecated # opentelemetry-instrumentation # opentelemetry-instrumentation-httpx # opentelemetry-instrumentation-redis -yarl==1.18.3 +yarl==1.20.0 # via # -r requirements/../../../packages/aws-library/requirements/../../../packages/service-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/_base.in diff --git a/services/clusters-keeper/requirements/_test.txt b/services/clusters-keeper/requirements/_test.txt index 212fea5fb2a..41eacfca34a 100644 --- a/services/clusters-keeper/requirements/_test.txt +++ b/services/clusters-keeper/requirements/_test.txt @@ -2,7 +2,7 @@ aiodocker==0.24.0 # via # -c requirements/_base.txt # -r requirements/_test.in -aiohappyeyeballs==2.4.4 +aiohappyeyeballs==2.6.1 # via # -c requirements/_base.txt # aiohttp @@ -11,7 +11,7 @@ aiohttp==3.11.18 # -c requirements/../../../requirements/constraints.txt # -c requirements/_base.txt # aiodocker -aiosignal==1.3.1 +aiosignal==1.3.2 # via # -c requirements/_base.txt # aiohttp @@ -21,19 +21,19 @@ annotated-types==0.7.0 # pydantic antlr4-python3-runtime==4.13.2 # via moto -anyio==4.7.0 +anyio==4.9.0 # via # -c requirements/_base.txt # httpx asgi-lifespan==2.1.0 # via -r requirements/_test.in -attrs==24.2.0 +attrs==25.3.0 # via # -c requirements/_base.txt # aiohttp # jsonschema # referencing -aws-sam-translator==1.95.0 +aws-sam-translator==1.97.0 # via cfn-lint aws-xray-sdk==2.14.0 # via moto @@ -51,7 +51,7 @@ botocore==1.37.3 # boto3 # moto # s3transfer -certifi==2024.8.30 +certifi==2025.4.26 # via # -c requirements/../../../requirements/constraints.txt # -c requirements/_base.txt @@ -60,55 +60,55 @@ certifi==2024.8.30 # requests cffi==1.17.1 # via cryptography -cfn-lint==1.27.0 +cfn-lint==1.35.1 # via moto -charset-normalizer==3.4.0 +charset-normalizer==3.4.2 # via # -c requirements/_base.txt # requests -click==8.1.7 +click==8.1.8 # via # -c requirements/_base.txt # flask -coverage==7.6.12 +coverage==7.8.0 # via # -r requirements/_test.in # pytest-cov -cryptography==44.0.2 +cryptography==45.0.2 # via # -c requirements/../../../requirements/constraints.txt # joserfc # moto -debugpy==1.8.12 +debugpy==1.8.14 # via -r requirements/_test.in -deepdiff==8.2.0 +deepdiff==8.5.0 # via -r requirements/_test.in docker==7.1.0 # via # -r requirements/_test.in # moto -faker==36.1.1 +faker==37.3.0 # via -r requirements/_test.in -fakeredis==2.27.0 +fakeredis==2.29.0 # via -r requirements/_test.in -flask==3.1.0 +flask==3.1.1 # via # flask-cors # moto -flask-cors==5.0.1 +flask-cors==6.0.0 # via moto -frozenlist==1.5.0 +frozenlist==1.6.0 # via # -c requirements/_base.txt # aiohttp # aiosignal graphql-core==3.2.6 # via moto -h11==0.14.0 +h11==0.16.0 # via # -c requirements/_base.txt # httpcore -httpcore==1.0.7 +httpcore==1.0.9 # via # -c requirements/_base.txt # httpx @@ -125,11 +125,11 @@ idna==3.10 # httpx # requests # yarl -iniconfig==2.0.0 +iniconfig==2.1.0 # via pytest itsdangerous==2.2.0 # via flask -jinja2==3.1.4 +jinja2==3.1.6 # via # -c requirements/../../../requirements/constraints.txt # -c requirements/_base.txt @@ -156,25 +156,26 @@ jsonschema==4.23.0 # openapi-spec-validator jsonschema-path==0.3.4 # via openapi-spec-validator -jsonschema-specifications==2024.10.1 +jsonschema-specifications==2025.4.1 # via # -c requirements/_base.txt # jsonschema # openapi-schema-validator -lazy-object-proxy==1.10.0 +lazy-object-proxy==1.11.0 # via openapi-spec-validator lupa==2.4 # via fakeredis markupsafe==3.0.2 # via # -c requirements/_base.txt + # flask # jinja2 # werkzeug moto==5.1.4 # via -r requirements/_test.in mpmath==1.3.0 # via sympy -multidict==6.1.0 +multidict==6.4.4 # via # -c requirements/_base.txt # aiohttp @@ -185,9 +186,9 @@ openapi-schema-validator==0.6.3 # via openapi-spec-validator openapi-spec-validator==0.7.1 # via moto -orderly-set==5.3.0 +orderly-set==5.4.1 # via deepdiff -packaging==24.2 +packaging==25.0 # via # -c requirements/_base.txt # pytest @@ -195,16 +196,16 @@ parse==1.20.2 # via -r requirements/_test.in pathable==0.4.4 # via jsonschema-path -pluggy==1.5.0 +pluggy==1.6.0 # via pytest ply==3.11 # via jsonpath-ng -propcache==0.2.1 +propcache==0.3.1 # via # -c requirements/_base.txt # aiohttp # yarl -psutil==6.1.0 +psutil==7.0.0 # via # -c requirements/_base.txt # -r requirements/_test.in @@ -212,16 +213,16 @@ py-partiql-parser==0.6.1 # via moto pycparser==2.22 # via cffi -pydantic==2.10.3 +pydantic==2.11.4 # via # -c requirements/../../../requirements/constraints.txt # -c requirements/_base.txt # aws-sam-translator -pydantic-core==2.27.1 +pydantic-core==2.33.2 # via # -c requirements/_base.txt # pydantic -pyparsing==3.2.1 +pyparsing==3.2.3 # via moto pytest==8.3.5 # via @@ -229,11 +230,9 @@ pytest==8.3.5 # pytest-asyncio # pytest-cov # pytest-mock -pytest-asyncio==0.23.8 - # via - # -c requirements/../../../requirements/constraints.txt - # -r requirements/_test.in -pytest-cov==6.0.0 +pytest-asyncio==0.26.0 + # via -r requirements/_test.in +pytest-cov==6.1.1 # via -r requirements/_test.in pytest-mock==3.14.0 # via -r requirements/_test.in @@ -244,7 +243,7 @@ python-dateutil==2.9.0.post0 # -c requirements/_base.txt # botocore # moto -python-dotenv==1.0.1 +python-dotenv==1.1.0 # via # -c requirements/_base.txt # -r requirements/_test.in @@ -256,7 +255,7 @@ pyyaml==6.0.2 # jsonschema-path # moto # responses -redis==5.2.1 +redis==6.1.0 # via # -c requirements/../../../requirements/constraints.txt # -c requirements/_base.txt @@ -277,13 +276,13 @@ requests==2.32.3 # jsonschema-path # moto # responses -responses==0.25.6 +responses==0.25.7 # via moto respx==0.22.0 # via -r requirements/_test.in rfc3339-validator==0.1.4 # via openapi-schema-validator -rpds-py==0.22.3 +rpds-py==0.25.0 # via # -c requirements/_base.txt # jsonschema @@ -292,7 +291,7 @@ s3transfer==0.11.3 # via # -c requirements/_base.txt # boto3 -setuptools==75.8.2 +setuptools==80.7.1 # via moto six==1.17.0 # via @@ -308,11 +307,11 @@ sortedcontainers==2.4.0 # via # -c requirements/_base.txt # fakeredis -sympy==1.13.3 +sympy==1.14.0 # via cfn-lint -types-pyyaml==6.0.12.20241230 +types-pyyaml==6.0.12.20250516 # via -r requirements/_test.in -typing-extensions==4.12.2 +typing-extensions==4.13.2 # via # -c requirements/_base.txt # anyio @@ -320,9 +319,14 @@ typing-extensions==4.12.2 # cfn-lint # pydantic # pydantic-core -tzdata==2025.1 + # typing-inspection +typing-inspection==0.4.0 + # via + # -c requirements/_base.txt + # pydantic +tzdata==2025.2 # via faker -urllib3==2.2.3 +urllib3==2.4.0 # via # -c requirements/../../../requirements/constraints.txt # -c requirements/_base.txt @@ -335,13 +339,13 @@ werkzeug==3.1.3 # flask # flask-cors # moto -wrapt==1.17.0 +wrapt==1.17.2 # via # -c requirements/_base.txt # aws-xray-sdk xmltodict==0.14.2 # via moto -yarl==1.18.3 +yarl==1.20.0 # via # -c requirements/_base.txt # aiohttp diff --git a/services/clusters-keeper/requirements/_tools.txt b/services/clusters-keeper/requirements/_tools.txt index 6c7b9431172..c76d3992bbe 100644 --- a/services/clusters-keeper/requirements/_tools.txt +++ b/services/clusters-keeper/requirements/_tools.txt @@ -1,4 +1,4 @@ -astroid==3.3.8 +astroid==3.3.10 # via pylint black==25.1.0 # via -r requirements/../../../requirements/devenv.txt @@ -8,19 +8,19 @@ bump2version==1.0.1 # via -r requirements/../../../requirements/devenv.txt cfgv==3.4.0 # via pre-commit -click==8.1.7 +click==8.1.8 # via # -c requirements/_base.txt # -c requirements/_test.txt # black # pip-tools -dill==0.3.9 +dill==0.4.0 # via pylint distlib==0.3.9 # via virtualenv -filelock==3.17.0 +filelock==3.18.0 # via virtualenv -identify==2.6.8 +identify==2.6.10 # via pre-commit isort==6.0.1 # via @@ -30,13 +30,13 @@ mccabe==0.7.0 # via pylint mypy==1.15.0 # via -r requirements/../../../requirements/devenv.txt -mypy-extensions==1.0.0 +mypy-extensions==1.1.0 # via # black # mypy nodeenv==1.9.1 # via pre-commit -packaging==24.2 +packaging==25.0 # via # -c requirements/_base.txt # -c requirements/_test.txt @@ -44,18 +44,18 @@ packaging==24.2 # build pathspec==0.12.1 # via black -pip==25.0.1 +pip==25.1.1 # via pip-tools pip-tools==7.4.1 # via -r requirements/../../../requirements/devenv.txt -platformdirs==4.3.6 +platformdirs==4.3.8 # via # black # pylint # virtualenv -pre-commit==4.1.0 +pre-commit==4.2.0 # via -r requirements/../../../requirements/devenv.txt -pylint==3.3.4 +pylint==3.3.7 # via -r requirements/../../../requirements/devenv.txt pyproject-hooks==1.2.0 # via @@ -68,20 +68,20 @@ pyyaml==6.0.2 # -c requirements/_test.txt # pre-commit # watchdog -ruff==0.9.9 +ruff==0.11.10 # via -r requirements/../../../requirements/devenv.txt -setuptools==75.8.2 +setuptools==80.7.1 # via # -c requirements/_test.txt # pip-tools tomlkit==0.13.2 # via pylint -typing-extensions==4.12.2 +typing-extensions==4.13.2 # via # -c requirements/_base.txt # -c requirements/_test.txt # mypy -virtualenv==20.29.2 +virtualenv==20.31.2 # via pre-commit watchdog==6.0.0 # via -r requirements/_tools.in diff --git a/services/clusters-keeper/setup.cfg b/services/clusters-keeper/setup.cfg index a4087cd9515..e3236d8ebb0 100644 --- a/services/clusters-keeper/setup.cfg +++ b/services/clusters-keeper/setup.cfg @@ -9,6 +9,7 @@ commit_args = --no-verify [tool:pytest] asyncio_mode = auto +asyncio_default_fixture_loop_scope = function markers = testit: "marks test to run during development" diff --git a/services/dask-sidecar/requirements/_base.txt b/services/dask-sidecar/requirements/_base.txt index 1f8c1363f02..7097a3f7bf7 100644 --- a/services/dask-sidecar/requirements/_base.txt +++ b/services/dask-sidecar/requirements/_base.txt @@ -1,6 +1,6 @@ -aio-pika==9.5.3 +aio-pika==9.5.5 # via -r requirements/../../../packages/service-library/requirements/_base.in -aiobotocore==2.21.1 +aiobotocore==2.22.0 # via s3fs aiocache==0.12.3 # via -r requirements/../../../packages/service-library/requirements/_base.in @@ -14,7 +14,7 @@ aiofiles==24.1.0 # via # -r requirements/../../../packages/service-library/requirements/_base.in # -r requirements/_base.in -aiohappyeyeballs==2.4.4 +aiohappyeyeballs==2.6.1 # via aiohttp aiohttp==3.11.18 # via @@ -44,11 +44,11 @@ aioitertools==0.12.0 # via aiobotocore aiormq==6.8.1 # via aio-pika -aiosignal==1.3.1 +aiosignal==1.3.2 # via aiohttp annotated-types==0.7.0 # via pydantic -anyio==4.7.0 +anyio==4.9.0 # via # fast-depends # faststream @@ -58,18 +58,18 @@ arrow==1.3.0 # -r requirements/../../../packages/models-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/_base.in -attrs==24.2.0 +attrs==25.3.0 # via # aiohttp # jsonschema # referencing -blosc==1.11.2 +blosc==1.11.3 # via -r requirements/_base.in -bokeh==3.6.2 +bokeh==3.7.3 # via dask -botocore==1.37.1 +botocore==1.37.3 # via aiobotocore -certifi==2024.8.30 +certifi==2025.4.26 # via # -c requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/dask-task-models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt @@ -90,57 +90,57 @@ certifi==2024.8.30 # -c requirements/../../../packages/settings-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../requirements/constraints.txt # requests -charset-normalizer==3.4.0 +charset-normalizer==3.4.2 # via requests -click==8.1.7 +click==8.1.8 # via # dask # distributed # typer -cloudpickle==3.1.0 +cloudpickle==3.1.1 # via # dask # distributed -contourpy==1.3.1 +contourpy==1.3.2 # via bokeh -dask==2024.12.0 +dask==2025.5.0 # via # -c requirements/constraints.txt # -r requirements/../../../packages/dask-task-models-library/requirements/_base.in # -r requirements/_base.in # distributed -deprecated==1.2.15 +deprecated==1.2.18 # via # opentelemetry-api # opentelemetry-exporter-otlp-proto-grpc # opentelemetry-exporter-otlp-proto-http # opentelemetry-semantic-conventions -distributed==2024.12.0 +distributed==2025.5.0 # via dask dnspython==2.7.0 # via email-validator email-validator==2.2.0 # via pydantic -exceptiongroup==1.2.2 +exceptiongroup==1.3.0 # via aio-pika fast-depends==2.4.12 # via faststream -faststream==0.5.33 +faststream==0.5.41 # via -r requirements/../../../packages/service-library/requirements/_base.in -frozenlist==1.5.0 +frozenlist==1.6.0 # via # aiohttp # aiosignal -fsspec==2024.10.0 +fsspec==2025.3.2 # via # -r requirements/_base.in # dask # s3fs -googleapis-common-protos==1.66.0 +googleapis-common-protos==1.70.0 # via # opentelemetry-exporter-otlp-proto-grpc # opentelemetry-exporter-otlp-proto-http -grpcio==1.68.1 +grpcio==1.71.0 # via opentelemetry-exporter-otlp-proto-grpc idna==3.10 # via @@ -148,11 +148,11 @@ idna==3.10 # email-validator # requests # yarl -importlib-metadata==8.5.0 +importlib-metadata==8.6.1 # via # dask # opentelemetry-api -jinja2==3.1.4 +jinja2==3.1.6 # via # -c requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/dask-task-models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt @@ -184,13 +184,13 @@ jsonschema==4.23.0 # -r requirements/../../../packages/dask-task-models-library/requirements/../../../packages/models-library/requirements/_base.in # -r requirements/../../../packages/models-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/_base.in -jsonschema-specifications==2024.10.1 +jsonschema-specifications==2025.4.1 # via jsonschema locket==1.0.0 # via # distributed # partd -lz4==4.3.3 +lz4==4.4.4 # via -r requirements/_base.in markdown-it-py==3.0.0 # via rich @@ -200,17 +200,19 @@ mdurl==0.1.2 # via markdown-it-py msgpack==1.1.0 # via distributed -multidict==6.1.0 +multidict==6.4.4 # via # aiobotocore # aiohttp # yarl -numpy==2.1.3 +narwhals==1.40.0 + # via bokeh +numpy==2.2.6 # via # bokeh # contourpy # pandas -opentelemetry-api==1.28.2 +opentelemetry-api==1.33.1 # via # -r requirements/../../../packages/service-library/requirements/_base.in # opentelemetry-exporter-otlp-proto-grpc @@ -221,46 +223,46 @@ opentelemetry-api==1.28.2 # opentelemetry-instrumentation-requests # opentelemetry-sdk # opentelemetry-semantic-conventions -opentelemetry-exporter-otlp==1.28.2 +opentelemetry-exporter-otlp==1.33.1 # via -r requirements/../../../packages/service-library/requirements/_base.in -opentelemetry-exporter-otlp-proto-common==1.28.2 +opentelemetry-exporter-otlp-proto-common==1.33.1 # via # opentelemetry-exporter-otlp-proto-grpc # opentelemetry-exporter-otlp-proto-http -opentelemetry-exporter-otlp-proto-grpc==1.28.2 +opentelemetry-exporter-otlp-proto-grpc==1.33.1 # via opentelemetry-exporter-otlp -opentelemetry-exporter-otlp-proto-http==1.28.2 +opentelemetry-exporter-otlp-proto-http==1.33.1 # via opentelemetry-exporter-otlp -opentelemetry-instrumentation==0.49b2 +opentelemetry-instrumentation==0.54b1 # via # opentelemetry-instrumentation-logging # opentelemetry-instrumentation-redis # opentelemetry-instrumentation-requests -opentelemetry-instrumentation-logging==0.49b2 +opentelemetry-instrumentation-logging==0.54b1 # via -r requirements/../../../packages/service-library/requirements/_base.in -opentelemetry-instrumentation-redis==0.49b2 +opentelemetry-instrumentation-redis==0.54b1 # via -r requirements/../../../packages/service-library/requirements/_base.in -opentelemetry-instrumentation-requests==0.49b2 +opentelemetry-instrumentation-requests==0.54b1 # via -r requirements/../../../packages/service-library/requirements/_base.in -opentelemetry-proto==1.28.2 +opentelemetry-proto==1.33.1 # via # opentelemetry-exporter-otlp-proto-common # opentelemetry-exporter-otlp-proto-grpc # opentelemetry-exporter-otlp-proto-http -opentelemetry-sdk==1.28.2 +opentelemetry-sdk==1.33.1 # via # -r requirements/../../../packages/service-library/requirements/_base.in # opentelemetry-exporter-otlp-proto-grpc # opentelemetry-exporter-otlp-proto-http -opentelemetry-semantic-conventions==0.49b2 +opentelemetry-semantic-conventions==0.54b1 # via # opentelemetry-instrumentation # opentelemetry-instrumentation-redis # opentelemetry-instrumentation-requests # opentelemetry-sdk -opentelemetry-util-http==0.49b2 +opentelemetry-util-http==0.54b1 # via opentelemetry-instrumentation-requests -orjson==3.10.12 +orjson==3.10.18 # via # -c requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/dask-task-models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt @@ -292,7 +294,7 @@ orjson==3.10.12 # -r requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/../../../packages/common-library/requirements/_base.in # -r requirements/../../../packages/settings-library/requirements/../../../packages/common-library/requirements/_base.in -packaging==24.2 +packaging==25.0 # via # bokeh # dask @@ -304,25 +306,25 @@ pandas==2.2.3 # via bokeh partd==1.4.2 # via dask -pillow==11.0.0 +pillow==11.2.1 # via bokeh -prometheus-client==0.21.1 +prometheus-client==0.22.0 # via -r requirements/_base.in -propcache==0.2.1 +propcache==0.3.1 # via # aiohttp # yarl -protobuf==5.29.1 +protobuf==5.29.4 # via # googleapis-common-protos # opentelemetry-proto -psutil==6.1.0 +psutil==7.0.0 # via # -r requirements/../../../packages/service-library/requirements/_base.in # distributed -pycryptodome==3.21.0 +pycryptodome==3.23.0 # via stream-zip -pydantic==2.10.3 +pydantic==2.11.4 # via # -c requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/dask-task-models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt @@ -363,9 +365,9 @@ pydantic==2.10.3 # fast-depends # pydantic-extra-types # pydantic-settings -pydantic-core==2.27.1 +pydantic-core==2.33.2 # via pydantic -pydantic-extra-types==2.10.0 +pydantic-extra-types==2.10.4 # via # -r requirements/../../../packages/common-library/requirements/_base.in # -r requirements/../../../packages/dask-task-models-library/requirements/../../../packages/common-library/requirements/_base.in @@ -379,7 +381,7 @@ pydantic-extra-types==2.10.0 # -r requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/../../../packages/common-library/requirements/_base.in # -r requirements/../../../packages/settings-library/requirements/../../../packages/common-library/requirements/_base.in -pydantic-settings==2.6.1 +pydantic-settings==2.7.0 # via # -c requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/dask-task-models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt @@ -405,9 +407,9 @@ pydantic-settings==2.6.1 # -r requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/_base.in # -r requirements/../../../packages/settings-library/requirements/_base.in -pygments==2.18.0 +pygments==2.19.1 # via rich -pyinstrument==5.0.0 +pyinstrument==5.0.1 # via -r requirements/../../../packages/service-library/requirements/_base.in python-dateutil==2.9.0.post0 # via @@ -415,9 +417,9 @@ python-dateutil==2.9.0.post0 # arrow # botocore # pandas -python-dotenv==1.0.1 +python-dotenv==1.1.0 # via pydantic-settings -pytz==2024.2 +pytz==2025.2 # via pandas pyyaml==6.0.2 # via @@ -443,7 +445,7 @@ pyyaml==6.0.2 # bokeh # dask # distributed -redis==5.2.1 +redis==6.1.0 # via # -c requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/dask-task-models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt @@ -486,21 +488,21 @@ referencing==0.35.1 # -c requirements/../../../requirements/constraints.txt # jsonschema # jsonschema-specifications -repro-zipfile==0.3.1 +repro-zipfile==0.4.0 # via -r requirements/_base.in requests==2.32.3 # via opentelemetry-exporter-otlp-proto-http -rich==13.9.4 +rich==14.0.0 # via # -r requirements/../../../packages/dask-task-models-library/requirements/../../../packages/settings-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/_base.in # -r requirements/../../../packages/settings-library/requirements/_base.in # typer -rpds-py==0.22.3 +rpds-py==0.25.0 # via # jsonschema # referencing -s3fs==2024.10.0 +s3fs==2025.3.2 # via fsspec shellingham==1.5.4 # via typer @@ -512,9 +514,9 @@ sortedcontainers==2.4.0 # via distributed stream-zip==0.0.83 # via -r requirements/../../../packages/service-library/requirements/_base.in -tblib==3.0.0 +tblib==3.1.0 # via distributed -tenacity==9.0.0 +tenacity==9.1.2 # via -r requirements/../../../packages/service-library/requirements/_base.in toolz==1.0.0 # via @@ -522,32 +524,36 @@ toolz==1.0.0 # dask # distributed # partd -tornado==6.4.2 +tornado==6.5 # via # bokeh # distributed tqdm==4.67.1 # via -r requirements/../../../packages/service-library/requirements/_base.in -typer==0.15.1 +typer==0.15.4 # via # -r requirements/../../../packages/dask-task-models-library/requirements/../../../packages/settings-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/_base.in # -r requirements/../../../packages/settings-library/requirements/_base.in -types-python-dateutil==2.9.0.20241206 +types-python-dateutil==2.9.0.20250516 # via arrow -typing-extensions==4.12.2 +typing-extensions==4.13.2 # via # aiodebug # anyio + # exceptiongroup # faststream # opentelemetry-sdk # pydantic # pydantic-core # pydantic-extra-types # typer -tzdata==2024.2 + # typing-inspection +typing-inspection==0.4.0 + # via pydantic +tzdata==2025.2 # via pandas -urllib3==2.2.3 +urllib3==2.4.0 # via # -c requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/dask-task-models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt @@ -570,15 +576,15 @@ urllib3==2.2.3 # botocore # distributed # requests -wrapt==1.17.0 +wrapt==1.17.2 # via # aiobotocore # deprecated # opentelemetry-instrumentation # opentelemetry-instrumentation-redis -xyzservices==2024.9.0 +xyzservices==2025.4.0 # via bokeh -yarl==1.18.3 +yarl==1.20.0 # via # -r requirements/../../../packages/service-library/requirements/_base.in # aio-pika diff --git a/services/dask-sidecar/requirements/_dask-distributed.txt b/services/dask-sidecar/requirements/_dask-distributed.txt index 2e37ea361da..35f16cb2d4e 100644 --- a/services/dask-sidecar/requirements/_dask-distributed.txt +++ b/services/dask-sidecar/requirements/_dask-distributed.txt @@ -1,35 +1,35 @@ -blosc==1.11.2 +blosc==1.11.3 # via # -c requirements/./_base.txt # -r requirements/_dask-distributed.in -click==8.1.7 +click==8.1.8 # via # -c requirements/./_base.txt # dask # distributed -cloudpickle==3.1.0 +cloudpickle==3.1.1 # via # -c requirements/./_base.txt # dask # distributed -dask==2024.12.0 +dask==2025.5.0 # via # -c requirements/./_base.txt # -r requirements/_dask-distributed.in # distributed -distributed==2024.12.0 +distributed==2025.5.0 # via # -c requirements/./_base.txt # dask -fsspec==2024.10.0 +fsspec==2025.3.2 # via # -c requirements/./_base.txt # dask -importlib-metadata==8.5.0 +importlib-metadata==8.6.1 # via # -c requirements/./_base.txt # dask -jinja2==3.1.4 +jinja2==3.1.6 # via # -c requirements/./_base.txt # distributed @@ -38,7 +38,7 @@ locket==1.0.0 # -c requirements/./_base.txt # distributed # partd -lz4==4.3.3 +lz4==4.4.4 # via # -c requirements/./_base.txt # -r requirements/_dask-distributed.in @@ -50,11 +50,11 @@ msgpack==1.1.0 # via # -c requirements/./_base.txt # distributed -numpy==2.1.3 +numpy==2.2.6 # via # -c requirements/./_base.txt # -r requirements/_dask-distributed.in -packaging==24.2 +packaging==25.0 # via # -c requirements/./_base.txt # dask @@ -63,7 +63,7 @@ partd==1.4.2 # via # -c requirements/./_base.txt # dask -psutil==6.1.0 +psutil==7.0.0 # via # -c requirements/./_base.txt # distributed @@ -76,7 +76,7 @@ sortedcontainers==2.4.0 # via # -c requirements/./_base.txt # distributed -tblib==3.0.0 +tblib==3.1.0 # via # -c requirements/./_base.txt # distributed @@ -86,11 +86,11 @@ toolz==1.0.0 # dask # distributed # partd -tornado==6.4.2 +tornado==6.5 # via # -c requirements/./_base.txt # distributed -urllib3==2.2.3 +urllib3==2.4.0 # via # -c requirements/./_base.txt # distributed diff --git a/services/dask-sidecar/requirements/_test.txt b/services/dask-sidecar/requirements/_test.txt index 1d7ddd2a079..91ad970abd0 100644 --- a/services/dask-sidecar/requirements/_test.txt +++ b/services/dask-sidecar/requirements/_test.txt @@ -1,6 +1,6 @@ -aioboto3==14.1.0 +aioboto3==14.3.0 # via -r requirements/_test.in -aiobotocore==2.21.1 +aiobotocore==2.22.0 # via # -c requirements/_base.txt # aioboto3 @@ -8,7 +8,7 @@ aiofiles==24.1.0 # via # -c requirements/_base.txt # aioboto3 -aiohappyeyeballs==2.4.4 +aiohappyeyeballs==2.6.1 # via # -c requirements/_base.txt # aiohttp @@ -21,7 +21,7 @@ aioitertools==0.12.0 # via # -c requirements/_base.txt # aiobotocore -aiosignal==1.3.1 +aiosignal==1.3.2 # via # -c requirements/_base.txt # aiohttp @@ -31,24 +31,24 @@ annotated-types==0.7.0 # pydantic antlr4-python3-runtime==4.13.2 # via moto -attrs==24.2.0 +attrs==25.3.0 # via # -c requirements/_base.txt # aiohttp # jsonschema # referencing -aws-sam-translator==1.95.0 +aws-sam-translator==1.97.0 # via cfn-lint aws-xray-sdk==2.14.0 # via moto blinker==1.9.0 # via flask -boto3==1.37.1 +boto3==1.37.3 # via # aiobotocore # aws-sam-translator # moto -botocore==1.37.1 +botocore==1.37.3 # via # -c requirements/_base.txt # aiobotocore @@ -56,32 +56,32 @@ botocore==1.37.1 # boto3 # moto # s3transfer -botocore-stubs==1.38.11 +botocore-stubs==1.38.19 # via # types-aioboto3 # types-aiobotocore -certifi==2024.8.30 +certifi==2025.4.26 # via # -c requirements/../../../requirements/constraints.txt # -c requirements/_base.txt # requests cffi==1.17.1 # via cryptography -cfn-lint==1.27.0 +cfn-lint==1.35.1 # via moto -charset-normalizer==3.4.0 +charset-normalizer==3.4.2 # via # -c requirements/_base.txt # requests -click==8.1.7 +click==8.1.8 # via # -c requirements/_base.txt # flask -coverage==7.6.12 +coverage==7.8.0 # via # -r requirements/_test.in # pytest-cov -cryptography==44.0.2 +cryptography==45.0.2 # via # -c requirements/../../../requirements/constraints.txt # joserfc @@ -91,15 +91,15 @@ docker==7.1.0 # via # -r requirements/_test.in # moto -faker==36.1.1 +faker==37.3.0 # via -r requirements/_test.in -flask==3.1.0 +flask==3.1.1 # via # flask-cors # moto -flask-cors==5.0.1 +flask-cors==6.0.0 # via moto -frozenlist==1.5.0 +frozenlist==1.6.0 # via # -c requirements/_base.txt # aiohttp @@ -113,11 +113,11 @@ idna==3.10 # -c requirements/_base.txt # requests # yarl -iniconfig==2.0.0 +iniconfig==2.1.0 # via pytest itsdangerous==2.2.0 # via flask -jinja2==3.1.4 +jinja2==3.1.6 # via # -c requirements/../../../requirements/constraints.txt # -c requirements/_base.txt @@ -145,23 +145,24 @@ jsonschema==4.23.0 # openapi-spec-validator jsonschema-path==0.3.4 # via openapi-spec-validator -jsonschema-specifications==2024.10.1 +jsonschema-specifications==2025.4.1 # via # -c requirements/_base.txt # jsonschema # openapi-schema-validator -lazy-object-proxy==1.10.0 +lazy-object-proxy==1.11.0 # via openapi-spec-validator markupsafe==3.0.2 # via # -c requirements/_base.txt + # flask # jinja2 # werkzeug moto==5.1.4 # via -r requirements/_test.in mpmath==1.3.0 # via sympy -multidict==6.1.0 +multidict==6.4.4 # via # -c requirements/_base.txt # aiobotocore @@ -173,20 +174,20 @@ openapi-schema-validator==0.6.3 # via openapi-spec-validator openapi-spec-validator==0.7.1 # via moto -packaging==24.2 +packaging==25.0 # via # -c requirements/_base.txt # pytest # pytest-sugar pathable==0.4.4 # via jsonschema-path -pluggy==1.5.0 +pluggy==1.6.0 # via pytest ply==3.11 # via jsonpath-ng pprintpp==0.4.0 # via pytest-icdiff -propcache==0.2.1 +propcache==0.3.1 # via # -c requirements/_base.txt # aiohttp @@ -195,20 +196,20 @@ py-partiql-parser==0.6.1 # via moto pycparser==2.22 # via cffi -pydantic==2.10.3 +pydantic==2.11.4 # via # -c requirements/../../../requirements/constraints.txt # -c requirements/_base.txt # aws-sam-translator -pydantic-core==2.27.1 +pydantic-core==2.33.2 # via # -c requirements/_base.txt # pydantic pyftpdlib==2.0.1 # via pytest-localftpserver -pyopenssl==25.0.0 +pyopenssl==25.1.0 # via pytest-localftpserver -pyparsing==3.2.1 +pyparsing==3.2.3 # via moto pytest==8.3.5 # via @@ -220,11 +221,9 @@ pytest==8.3.5 # pytest-localftpserver # pytest-mock # pytest-sugar -pytest-asyncio==0.23.8 - # via - # -c requirements/../../../requirements/constraints.txt - # -r requirements/_test.in -pytest-cov==6.0.0 +pytest-asyncio==0.26.0 + # via -r requirements/_test.in +pytest-cov==6.1.1 # via -r requirements/_test.in pytest-icdiff==0.9 # via -r requirements/_test.in @@ -242,7 +241,7 @@ python-dateutil==2.9.0.post0 # aiobotocore # botocore # moto -python-dotenv==1.0.1 +python-dotenv==1.1.0 # via # -c requirements/_base.txt # -r requirements/_test.in @@ -270,27 +269,27 @@ requests==2.32.3 # jsonschema-path # moto # responses -responses==0.25.6 +responses==0.25.7 # via moto rfc3339-validator==0.1.4 # via openapi-schema-validator -rpds-py==0.22.3 +rpds-py==0.25.0 # via # -c requirements/_base.txt # jsonschema # referencing s3transfer==0.11.3 # via boto3 -setuptools==75.8.2 +setuptools==80.7.1 # via moto six==1.17.0 # via # -c requirements/_base.txt # python-dateutil # rfc3339-validator -sympy==1.13.3 +sympy==1.14.0 # via cfn-lint -termcolor==2.5.0 +termcolor==3.1.0 # via pytest-sugar types-aioboto3==14.3.0 # via -r requirements/_test.in @@ -300,13 +299,13 @@ types-aiobotocore==2.22.0 # types-aioboto3 types-aiobotocore-s3==2.22.0 # via types-aiobotocore -types-aiofiles==24.1.0.20241221 +types-aiofiles==24.1.0.20250516 # via -r requirements/_test.in -types-awscrt==0.26.1 +types-awscrt==0.27.2 # via botocore-stubs types-s3transfer==0.12.0 # via types-aioboto3 -typing-extensions==4.12.2 +typing-extensions==4.13.2 # via # -c requirements/_base.txt # aws-sam-translator @@ -317,11 +316,16 @@ typing-extensions==4.12.2 # types-aioboto3 # types-aiobotocore # types-aiobotocore-s3 -tzdata==2024.2 + # typing-inspection +typing-inspection==0.4.0 + # via + # -c requirements/_base.txt + # pydantic +tzdata==2025.2 # via # -c requirements/_base.txt # faker -urllib3==2.2.3 +urllib3==2.4.0 # via # -c requirements/../../../requirements/constraints.txt # -c requirements/_base.txt @@ -334,14 +338,14 @@ werkzeug==3.1.3 # flask # flask-cors # moto -wrapt==1.17.0 +wrapt==1.17.2 # via # -c requirements/_base.txt # aiobotocore # aws-xray-sdk xmltodict==0.14.2 # via moto -yarl==1.18.3 +yarl==1.20.0 # via # -c requirements/_base.txt # aiohttp diff --git a/services/dask-sidecar/requirements/_tools.txt b/services/dask-sidecar/requirements/_tools.txt index 6c7b9431172..c76d3992bbe 100644 --- a/services/dask-sidecar/requirements/_tools.txt +++ b/services/dask-sidecar/requirements/_tools.txt @@ -1,4 +1,4 @@ -astroid==3.3.8 +astroid==3.3.10 # via pylint black==25.1.0 # via -r requirements/../../../requirements/devenv.txt @@ -8,19 +8,19 @@ bump2version==1.0.1 # via -r requirements/../../../requirements/devenv.txt cfgv==3.4.0 # via pre-commit -click==8.1.7 +click==8.1.8 # via # -c requirements/_base.txt # -c requirements/_test.txt # black # pip-tools -dill==0.3.9 +dill==0.4.0 # via pylint distlib==0.3.9 # via virtualenv -filelock==3.17.0 +filelock==3.18.0 # via virtualenv -identify==2.6.8 +identify==2.6.10 # via pre-commit isort==6.0.1 # via @@ -30,13 +30,13 @@ mccabe==0.7.0 # via pylint mypy==1.15.0 # via -r requirements/../../../requirements/devenv.txt -mypy-extensions==1.0.0 +mypy-extensions==1.1.0 # via # black # mypy nodeenv==1.9.1 # via pre-commit -packaging==24.2 +packaging==25.0 # via # -c requirements/_base.txt # -c requirements/_test.txt @@ -44,18 +44,18 @@ packaging==24.2 # build pathspec==0.12.1 # via black -pip==25.0.1 +pip==25.1.1 # via pip-tools pip-tools==7.4.1 # via -r requirements/../../../requirements/devenv.txt -platformdirs==4.3.6 +platformdirs==4.3.8 # via # black # pylint # virtualenv -pre-commit==4.1.0 +pre-commit==4.2.0 # via -r requirements/../../../requirements/devenv.txt -pylint==3.3.4 +pylint==3.3.7 # via -r requirements/../../../requirements/devenv.txt pyproject-hooks==1.2.0 # via @@ -68,20 +68,20 @@ pyyaml==6.0.2 # -c requirements/_test.txt # pre-commit # watchdog -ruff==0.9.9 +ruff==0.11.10 # via -r requirements/../../../requirements/devenv.txt -setuptools==75.8.2 +setuptools==80.7.1 # via # -c requirements/_test.txt # pip-tools tomlkit==0.13.2 # via pylint -typing-extensions==4.12.2 +typing-extensions==4.13.2 # via # -c requirements/_base.txt # -c requirements/_test.txt # mypy -virtualenv==20.29.2 +virtualenv==20.31.2 # via pre-commit watchdog==6.0.0 # via -r requirements/_tools.in diff --git a/services/dask-sidecar/setup.cfg b/services/dask-sidecar/setup.cfg index 1cfc0f263ea..7100631fdfb 100644 --- a/services/dask-sidecar/setup.cfg +++ b/services/dask-sidecar/setup.cfg @@ -9,3 +9,4 @@ commit_args = --no-verify [tool:pytest] asyncio_mode = auto +asyncio_default_fixture_loop_scope = function diff --git a/services/dask-sidecar/src/simcore_service_dask_sidecar/utils/files.py b/services/dask-sidecar/src/simcore_service_dask_sidecar/utils/files.py index d6972296724..2a108cc595f 100644 --- a/services/dask-sidecar/src/simcore_service_dask_sidecar/utils/files.py +++ b/services/dask-sidecar/src/simcore_service_dask_sidecar/utils/files.py @@ -12,7 +12,7 @@ import aiofiles import aiofiles.tempfile import fsspec # type: ignore[import-untyped] -import repro_zipfile # type: ignore[import-untyped] +import repro_zipfile from pydantic import ByteSize, FileUrl, TypeAdapter from pydantic.networks import AnyUrl from servicelib.logging_utils import LogLevelInt, LogMessageStr diff --git a/services/dask-sidecar/tests/unit/test_computational_sidecar_tasks.py b/services/dask-sidecar/tests/unit/test_computational_sidecar_tasks.py index a0756a0bc30..57cf06de1ad 100644 --- a/services/dask-sidecar/tests/unit/test_computational_sidecar_tasks.py +++ b/services/dask-sidecar/tests/unit/test_computational_sidecar_tasks.py @@ -537,7 +537,6 @@ async def subscribe_and_process(a_mock: mock.AsyncMock): def test_run_computational_sidecar_real_fct( caplog_info_level: pytest.LogCaptureFixture, - event_loop: asyncio.AbstractEventLoop, app_environment: EnvVarsDict, dask_subsystem_mock: dict[str, mock.Mock], sleeper_task: ServiceExampleParam, diff --git a/services/dask-sidecar/tests/unit/test_utils_gpus.py b/services/dask-sidecar/tests/unit/test_utils_gpus.py index 88e2d5ecec5..01492256990 100644 --- a/services/dask-sidecar/tests/unit/test_utils_gpus.py +++ b/services/dask-sidecar/tests/unit/test_utils_gpus.py @@ -3,7 +3,6 @@ # pylint: disable=redefined-outer-name -import asyncio from unittest import mock import aiodocker @@ -25,7 +24,6 @@ def mock_aiodocker(mocker: MockerFixture) -> mock.MagicMock: def test_num_available_gpus_returns_0_when_container_not_created( - event_loop: asyncio.events.AbstractEventLoop, app_environment: EnvVarsDict, mock_aiodocker: mock.MagicMock, ): @@ -37,7 +35,6 @@ def test_num_available_gpus_returns_0_when_container_not_created( def test_num_available_gpus_returns_0_when_container_throws_exception_on_run( - event_loop: asyncio.events.AbstractEventLoop, app_environment: EnvVarsDict, mock_aiodocker: mock.MagicMock, ): @@ -50,7 +47,6 @@ def test_num_available_gpus_returns_0_when_container_throws_exception_on_run( def test_num_available_gpus_returns_0_when_no_status_code_returned( - event_loop: asyncio.events.AbstractEventLoop, app_environment: EnvVarsDict, mock_aiodocker: mock.MagicMock, ): @@ -61,7 +57,6 @@ def test_num_available_gpus_returns_0_when_no_status_code_returned( def test_num_available_gpus_returns_0_when_bad_status_code_returned( - event_loop: asyncio.events.AbstractEventLoop, app_environment: EnvVarsDict, mock_aiodocker: mock.MagicMock, ): @@ -72,7 +67,6 @@ def test_num_available_gpus_returns_0_when_bad_status_code_returned( def test_num_available_gpus_returns_0_when_container_wait_timesout( - event_loop: asyncio.events.AbstractEventLoop, app_environment: EnvVarsDict, mock_aiodocker: mock.MagicMock, ): @@ -87,7 +81,6 @@ def test_num_available_gpus_returns_0_when_container_wait_timesout( [([], 0), (["gpu1"], 1), (["gpu1", "gpu2", "gpu4"], 3)], ) def test_num_available_gpus( - event_loop: asyncio.events.AbstractEventLoop, app_environment: EnvVarsDict, container_logs: list[str], expected_num_gpus: int, diff --git a/services/datcore-adapter/requirements/_test.txt b/services/datcore-adapter/requirements/_test.txt index 2f03edb0fa2..4ff7b32ba9a 100644 --- a/services/datcore-adapter/requirements/_test.txt +++ b/services/datcore-adapter/requirements/_test.txt @@ -70,10 +70,8 @@ pytest==8.3.5 # pytest-mock # pytest-sugar # pytest-xdist -pytest-asyncio==0.23.8 - # via - # -c requirements/../../../requirements/constraints.txt - # -r requirements/_test.in +pytest-asyncio==0.26.0 + # via -r requirements/_test.in pytest-cov==6.0.0 # via -r requirements/_test.in pytest-icdiff==0.9 diff --git a/services/datcore-adapter/setup.cfg b/services/datcore-adapter/setup.cfg index 060ea72b9a9..8a5fd76af1f 100644 --- a/services/datcore-adapter/setup.cfg +++ b/services/datcore-adapter/setup.cfg @@ -9,7 +9,8 @@ commit_args = --no-verify [tool:pytest] asyncio_mode = auto +asyncio_default_fixture_loop_scope = function [mypy] -plugins = +plugins = pydantic.mypy diff --git a/services/director-v2/openapi.json b/services/director-v2/openapi.json index 78cc4e1fb59..5f57b836564 100644 --- a/services/director-v2/openapi.json +++ b/services/director-v2/openapi.json @@ -2810,6 +2810,7 @@ "simcore.service.compose-spec": { "anyOf": [ { + "additionalProperties": true, "type": "object" }, { @@ -3208,6 +3209,7 @@ "properties": { "nodes_outputs": { "additionalProperties": { + "additionalProperties": true, "propertyNames": { "maxLength": 100, "minLength": 1 diff --git a/services/director-v2/requirements/_base.txt b/services/director-v2/requirements/_base.txt index ec073478903..996b869642e 100644 --- a/services/director-v2/requirements/_base.txt +++ b/services/director-v2/requirements/_base.txt @@ -23,7 +23,7 @@ aiofiles==24.1.0 # -r requirements/../../../packages/service-library/requirements/_base.in # -r requirements/../../../packages/simcore-sdk/requirements/../../../packages/service-library/requirements/_base.in # -r requirements/../../../packages/simcore-sdk/requirements/_base.in -aiohappyeyeballs==2.5.0 +aiohappyeyeballs==2.6.1 # via aiohttp aiohttp==3.11.18 # via @@ -67,13 +67,13 @@ aiormq==6.8.1 # via aio-pika aiosignal==1.3.2 # via aiohttp -alembic==1.15.1 +alembic==1.15.2 # via # -r requirements/../../../packages/postgres-database/requirements/_base.in # -r requirements/../../../packages/simcore-sdk/requirements/../../../packages/postgres-database/requirements/_base.in annotated-types==0.7.0 # via pydantic -anyio==4.8.0 +anyio==4.9.0 # via # fast-depends # faststream @@ -93,16 +93,16 @@ asgiref==3.8.1 # via opentelemetry-instrumentation-asgi asyncpg==0.30.0 # via sqlalchemy -attrs==25.1.0 +attrs==25.3.0 # via # aiohttp # jsonschema # referencing bidict==0.23.1 # via python-socketio -blosc==1.11.2 +blosc==1.11.3 # via -r requirements/../../../services/dask-sidecar/requirements/_dask-distributed.txt -certifi==2025.1.31 +certifi==2025.4.26 # via # -c requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/dask-task-models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt @@ -141,9 +141,9 @@ certifi==2025.1.31 # httpcore # httpx # requests -charset-normalizer==3.4.1 +charset-normalizer==3.4.2 # via requests -click==8.1.7 +click==8.1.8 # via # -r requirements/../../../services/dask-sidecar/requirements/_dask-distributed.txt # dask @@ -151,12 +151,12 @@ click==8.1.7 # rich-toolkit # typer # uvicorn -cloudpickle==3.1.0 +cloudpickle==3.1.1 # via # -r requirements/../../../services/dask-sidecar/requirements/_dask-distributed.txt # dask # distributed -dask==2024.12.0 +dask==2025.5.0 # via # -r requirements/../../../packages/dask-task-models-library/requirements/_base.in # -r requirements/../../../services/dask-sidecar/requirements/_dask-distributed.txt @@ -167,7 +167,7 @@ deprecated==1.2.18 # opentelemetry-exporter-otlp-proto-grpc # opentelemetry-exporter-otlp-proto-http # opentelemetry-semantic-conventions -distributed==2024.12.0 +distributed==2025.5.0 # via # -r requirements/../../../services/dask-sidecar/requirements/_dask-distributed.txt # dask @@ -177,11 +177,11 @@ email-validator==2.2.0 # via # fastapi # pydantic -exceptiongroup==1.2.2 +exceptiongroup==1.3.0 # via aio-pika fast-depends==2.4.12 # via faststream -fastapi==0.115.6 +fastapi==0.115.12 # via # -r requirements/../../../packages/service-library/requirements/_fastapi.in # -r requirements/_base.in @@ -190,7 +190,7 @@ fastapi-cli==0.0.7 # via fastapi fastapi-lifespan-manager==0.1.4 # via -r requirements/../../../packages/service-library/requirements/_fastapi.in -faststream==0.5.35 +faststream==0.5.41 # via # -r requirements/../../../packages/service-library/requirements/_base.in # -r requirements/../../../packages/simcore-sdk/requirements/../../../packages/service-library/requirements/_base.in @@ -198,28 +198,28 @@ flexcache==0.3 # via pint flexparser==0.4 # via pint -frozenlist==1.5.0 +frozenlist==1.6.0 # via # aiohttp # aiosignal -fsspec==2024.10.0 +fsspec==2025.3.2 # via # -r requirements/../../../services/dask-sidecar/requirements/_dask-distributed.txt # dask -googleapis-common-protos==1.69.1 +googleapis-common-protos==1.70.0 # via # opentelemetry-exporter-otlp-proto-grpc # opentelemetry-exporter-otlp-proto-http -greenlet==3.1.1 +greenlet==3.2.2 # via sqlalchemy -grpcio==1.70.0 +grpcio==1.71.0 # via opentelemetry-exporter-otlp-proto-grpc -h11==0.14.0 +h11==0.16.0 # via # httpcore # uvicorn # wsproto -httpcore==1.0.7 +httpcore==1.0.9 # via httpx httptools==0.6.4 # via uvicorn @@ -269,14 +269,14 @@ idna==3.10 # httpx # requests # yarl -importlib-metadata==8.5.0 +importlib-metadata==8.6.1 # via # -r requirements/../../../services/dask-sidecar/requirements/_dask-distributed.txt # dask # opentelemetry-api itsdangerous==2.2.0 # via fastapi -jinja2==3.1.4 +jinja2==3.1.6 # via # -c requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/dask-task-models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt @@ -322,16 +322,16 @@ jsonschema==4.23.0 # -r requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/_base.in # -r requirements/../../../packages/simcore-sdk/requirements/../../../packages/models-library/requirements/_base.in # -r requirements/../../../packages/simcore-sdk/requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/_base.in -jsonschema-specifications==2024.10.1 +jsonschema-specifications==2025.4.1 # via jsonschema locket==1.0.0 # via # -r requirements/../../../services/dask-sidecar/requirements/_dask-distributed.txt # distributed # partd -lz4==4.3.3 +lz4==4.4.4 # via -r requirements/../../../services/dask-sidecar/requirements/_dask-distributed.txt -mako==1.3.9 +mako==1.3.10 # via # -c requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/dask-task-models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt @@ -382,15 +382,15 @@ msgpack==1.1.0 # -r requirements/../../../services/dask-sidecar/requirements/_dask-distributed.txt # aiocache # distributed -multidict==6.1.0 +multidict==6.4.4 # via # aiohttp # yarl networkx==3.4.2 # via -r requirements/_base.in -numpy==2.1.3 +numpy==2.2.6 # via -r requirements/../../../services/dask-sidecar/requirements/_dask-distributed.txt -opentelemetry-api==1.30.0 +opentelemetry-api==1.33.1 # via # -r requirements/../../../packages/service-library/requirements/_base.in # -r requirements/../../../packages/simcore-sdk/requirements/../../../packages/service-library/requirements/_base.in @@ -406,19 +406,19 @@ opentelemetry-api==1.30.0 # opentelemetry-instrumentation-requests # opentelemetry-sdk # opentelemetry-semantic-conventions -opentelemetry-exporter-otlp==1.30.0 +opentelemetry-exporter-otlp==1.33.1 # via # -r requirements/../../../packages/service-library/requirements/_base.in # -r requirements/../../../packages/simcore-sdk/requirements/../../../packages/service-library/requirements/_base.in -opentelemetry-exporter-otlp-proto-common==1.30.0 +opentelemetry-exporter-otlp-proto-common==1.33.1 # via # opentelemetry-exporter-otlp-proto-grpc # opentelemetry-exporter-otlp-proto-http -opentelemetry-exporter-otlp-proto-grpc==1.30.0 +opentelemetry-exporter-otlp-proto-grpc==1.33.1 # via opentelemetry-exporter-otlp -opentelemetry-exporter-otlp-proto-http==1.30.0 +opentelemetry-exporter-otlp-proto-http==1.33.1 # via opentelemetry-exporter-otlp -opentelemetry-instrumentation==0.51b0 +opentelemetry-instrumentation==0.54b1 # via # opentelemetry-instrumentation-asgi # opentelemetry-instrumentation-asyncpg @@ -427,40 +427,40 @@ opentelemetry-instrumentation==0.51b0 # opentelemetry-instrumentation-logging # opentelemetry-instrumentation-redis # opentelemetry-instrumentation-requests -opentelemetry-instrumentation-asgi==0.51b0 +opentelemetry-instrumentation-asgi==0.54b1 # via opentelemetry-instrumentation-fastapi -opentelemetry-instrumentation-asyncpg==0.51b0 +opentelemetry-instrumentation-asyncpg==0.54b1 # via # -r requirements/../../../packages/postgres-database/requirements/_base.in # -r requirements/../../../packages/simcore-sdk/requirements/../../../packages/postgres-database/requirements/_base.in -opentelemetry-instrumentation-fastapi==0.51b0 +opentelemetry-instrumentation-fastapi==0.54b1 # via -r requirements/../../../packages/service-library/requirements/_fastapi.in -opentelemetry-instrumentation-httpx==0.51b0 +opentelemetry-instrumentation-httpx==0.54b1 # via -r requirements/../../../packages/service-library/requirements/_fastapi.in -opentelemetry-instrumentation-logging==0.51b0 +opentelemetry-instrumentation-logging==0.54b1 # via # -r requirements/../../../packages/service-library/requirements/_base.in # -r requirements/../../../packages/simcore-sdk/requirements/../../../packages/service-library/requirements/_base.in -opentelemetry-instrumentation-redis==0.51b0 +opentelemetry-instrumentation-redis==0.54b1 # via # -r requirements/../../../packages/service-library/requirements/_base.in # -r requirements/../../../packages/simcore-sdk/requirements/../../../packages/service-library/requirements/_base.in -opentelemetry-instrumentation-requests==0.51b0 +opentelemetry-instrumentation-requests==0.54b1 # via # -r requirements/../../../packages/service-library/requirements/_base.in # -r requirements/../../../packages/simcore-sdk/requirements/../../../packages/service-library/requirements/_base.in -opentelemetry-proto==1.30.0 +opentelemetry-proto==1.33.1 # via # opentelemetry-exporter-otlp-proto-common # opentelemetry-exporter-otlp-proto-grpc # opentelemetry-exporter-otlp-proto-http -opentelemetry-sdk==1.30.0 +opentelemetry-sdk==1.33.1 # via # -r requirements/../../../packages/service-library/requirements/_base.in # -r requirements/../../../packages/simcore-sdk/requirements/../../../packages/service-library/requirements/_base.in # opentelemetry-exporter-otlp-proto-grpc # opentelemetry-exporter-otlp-proto-http -opentelemetry-semantic-conventions==0.51b0 +opentelemetry-semantic-conventions==0.54b1 # via # opentelemetry-instrumentation # opentelemetry-instrumentation-asgi @@ -470,7 +470,7 @@ opentelemetry-semantic-conventions==0.51b0 # opentelemetry-instrumentation-redis # opentelemetry-instrumentation-requests # opentelemetry-sdk -opentelemetry-util-http==0.51b0 +opentelemetry-util-http==0.54b1 # via # opentelemetry-instrumentation-asgi # opentelemetry-instrumentation-fastapi @@ -478,7 +478,7 @@ opentelemetry-util-http==0.51b0 # opentelemetry-instrumentation-requests ordered-set==4.1.0 # via -r requirements/_base.in -orjson==3.10.15 +orjson==3.10.18 # via # -c requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/dask-task-models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt @@ -538,7 +538,7 @@ orjson==3.10.15 # -r requirements/../../../packages/simcore-sdk/requirements/../../../packages/settings-library/requirements/../../../packages/common-library/requirements/_base.in # -r requirements/_base.in # fastapi -packaging==24.2 +packaging==25.0 # via # -r requirements/../../../packages/simcore-sdk/requirements/_base.in # -r requirements/../../../services/dask-sidecar/requirements/_dask-distributed.txt @@ -553,19 +553,19 @@ partd==1.4.2 # dask pint==0.24.4 # via -r requirements/../../../packages/simcore-sdk/requirements/_base.in -platformdirs==4.3.6 +platformdirs==4.3.8 # via pint -prometheus-client==0.21.1 +prometheus-client==0.22.0 # via -r requirements/../../../packages/service-library/requirements/_fastapi.in -propcache==0.3.0 +propcache==0.3.1 # via # aiohttp # yarl -protobuf==5.29.3 +protobuf==5.29.4 # via # googleapis-common-protos # opentelemetry-proto -psutil==6.1.0 +psutil==7.0.0 # via # -r requirements/../../../packages/service-library/requirements/_base.in # -r requirements/../../../packages/simcore-sdk/requirements/../../../packages/service-library/requirements/_base.in @@ -573,9 +573,9 @@ psutil==6.1.0 # distributed psycopg2-binary==2.9.10 # via sqlalchemy -pycryptodome==3.21.0 +pycryptodome==3.23.0 # via stream-zip -pydantic==2.10.6 +pydantic==2.11.4 # via # -c requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/dask-task-models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt @@ -649,9 +649,9 @@ pydantic==2.10.6 # fastapi # pydantic-extra-types # pydantic-settings -pydantic-core==2.27.2 +pydantic-core==2.33.2 # via pydantic -pydantic-extra-types==2.10.2 +pydantic-extra-types==2.10.4 # via # -r requirements/../../../packages/common-library/requirements/_base.in # -r requirements/../../../packages/dask-task-models-library/requirements/../../../packages/common-library/requirements/_base.in @@ -731,15 +731,15 @@ pyinstrument==5.0.1 # -r requirements/../../../packages/simcore-sdk/requirements/../../../packages/service-library/requirements/_base.in python-dateutil==2.9.0.post0 # via arrow -python-dotenv==1.0.1 +python-dotenv==1.1.0 # via # pydantic-settings # uvicorn -python-engineio==4.11.2 +python-engineio==4.12.1 # via python-socketio python-multipart==0.0.20 # via fastapi -python-socketio==5.12.1 +python-socketio==5.13.0 # via -r requirements/_base.in pyyaml==6.0.2 # via @@ -784,7 +784,7 @@ pyyaml==6.0.2 # distributed # fastapi # uvicorn -redis==5.2.1 +redis==6.1.0 # via # -c requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/dask-task-models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt @@ -864,7 +864,7 @@ referencing==0.35.1 # jsonschema-specifications requests==2.32.3 # via opentelemetry-exporter-otlp-proto-http -rich==13.9.4 +rich==14.0.0 # via # -r requirements/../../../packages/dask-task-models-library/requirements/../../../packages/settings-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/_base.in @@ -874,9 +874,9 @@ rich==13.9.4 # -r requirements/_base.in # rich-toolkit # typer -rich-toolkit==0.13.2 +rich-toolkit==0.14.6 # via fastapi-cli -rpds-py==0.23.1 +rpds-py==0.25.0 # via # jsonschema # referencing @@ -932,7 +932,7 @@ sqlalchemy==1.4.54 # -r requirements/../../../packages/simcore-sdk/requirements/../../../packages/postgres-database/requirements/_base.in # -r requirements/../../../packages/simcore-sdk/requirements/_base.in # alembic -starlette==0.41.3 +starlette==0.46.2 # via # -c requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/dask-task-models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt @@ -973,11 +973,11 @@ stream-zip==0.0.83 # via # -r requirements/../../../packages/service-library/requirements/_base.in # -r requirements/../../../packages/simcore-sdk/requirements/../../../packages/service-library/requirements/_base.in -tblib==3.0.0 +tblib==3.1.0 # via # -r requirements/../../../services/dask-sidecar/requirements/_dask-distributed.txt # distributed -tenacity==9.0.0 +tenacity==9.1.2 # via # -r requirements/../../../packages/service-library/requirements/_base.in # -r requirements/../../../packages/simcore-sdk/requirements/../../../packages/service-library/requirements/_base.in @@ -991,7 +991,7 @@ toolz==1.0.0 # dask # distributed # partd -tornado==6.4.2 +tornado==6.5 # via # -r requirements/../../../services/dask-sidecar/requirements/_dask-distributed.txt # distributed @@ -1000,7 +1000,7 @@ tqdm==4.67.1 # -r requirements/../../../packages/service-library/requirements/_base.in # -r requirements/../../../packages/simcore-sdk/requirements/../../../packages/service-library/requirements/_base.in # -r requirements/../../../packages/simcore-sdk/requirements/_base.in -typer==0.15.2 +typer==0.15.4 # via # -r requirements/../../../packages/dask-task-models-library/requirements/../../../packages/settings-library/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/_base.in @@ -1008,13 +1008,14 @@ typer==0.15.2 # -r requirements/../../../packages/simcore-sdk/requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/_base.in # -r requirements/../../../packages/simcore-sdk/requirements/../../../packages/settings-library/requirements/_base.in # fastapi-cli -types-python-dateutil==2.9.0.20241206 +types-python-dateutil==2.9.0.20250516 # via arrow -typing-extensions==4.12.2 +typing-extensions==4.13.2 # via # aiodebug # alembic # anyio + # exceptiongroup # fastapi # faststream # flexcache @@ -1026,6 +1027,9 @@ typing-extensions==4.12.2 # pydantic-extra-types # rich-toolkit # typer + # typing-inspection +typing-inspection==0.4.0 + # via pydantic ujson==5.10.0 # via # -c requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt @@ -1063,7 +1067,7 @@ ujson==5.10.0 # -c requirements/../../../packages/simcore-sdk/requirements/../../../requirements/constraints.txt # -c requirements/../../../requirements/constraints.txt # fastapi -urllib3==2.2.3 +urllib3==2.4.0 # via # -c requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/dask-task-models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt @@ -1102,14 +1106,14 @@ urllib3==2.2.3 # -r requirements/../../../services/dask-sidecar/requirements/_dask-distributed.txt # distributed # requests -uvicorn==0.34.0 +uvicorn==0.34.2 # via # -r requirements/../../../packages/service-library/requirements/_fastapi.in # fastapi # fastapi-cli uvloop==0.21.0 # via uvicorn -watchfiles==1.0.4 +watchfiles==1.0.5 # via uvicorn websockets==15.0.1 # via uvicorn @@ -1121,7 +1125,7 @@ wrapt==1.17.2 # opentelemetry-instrumentation-redis wsproto==1.2.0 # via simple-websocket -yarl==1.18.3 +yarl==1.20.0 # via # -r requirements/../../../packages/postgres-database/requirements/_base.in # -r requirements/../../../packages/service-library/requirements/_base.in diff --git a/services/director-v2/requirements/_test.in b/services/director-v2/requirements/_test.in index 3633a09b704..2fb831189ba 100644 --- a/services/director-v2/requirements/_test.in +++ b/services/director-v2/requirements/_test.in @@ -19,11 +19,7 @@ docker Faker flaky pytest -# ---- -# Overcomes "Known issues" in https://github.com/pytest-dev/pytest-asyncio/releases/tag/v0.23.8 -# IMPORTANT: This constraint can be removed when `test_pytest_asyncio_known_issue` passes with the new update of pytest-asyncio -pytest-asyncio<0.23 -# ---- +pytest-asyncio pytest-cov pytest-docker pytest-icdiff diff --git a/services/director-v2/requirements/_test.txt b/services/director-v2/requirements/_test.txt index 08c3214f5da..b556d2b115e 100644 --- a/services/director-v2/requirements/_test.txt +++ b/services/director-v2/requirements/_test.txt @@ -10,7 +10,7 @@ aiofiles==24.1.0 # via # -c requirements/_base.txt # aioboto3 -aiohappyeyeballs==2.5.0 +aiohappyeyeballs==2.6.1 # via # -c requirements/_base.txt # aiohttp @@ -29,11 +29,11 @@ aiosignal==1.3.2 # via # -c requirements/_base.txt # aiohttp -alembic==1.15.1 +alembic==1.15.2 # via # -c requirements/_base.txt # -r requirements/_test.in -anyio==4.8.0 +anyio==4.9.0 # via # -c requirements/_base.txt # httpx @@ -41,12 +41,12 @@ asgi-lifespan==2.1.0 # via -r requirements/_test.in async-asgi-testclient==1.4.11 # via -r requirements/_test.in -attrs==25.1.0 +attrs==25.3.0 # via # -c requirements/_base.txt # aiohttp # pytest-docker -bokeh==3.6.3 +bokeh==3.7.3 # via dask boto3==1.37.3 # via aiobotocore @@ -55,70 +55,70 @@ botocore==1.37.3 # aiobotocore # boto3 # s3transfer -certifi==2025.1.31 +certifi==2025.4.26 # via # -c requirements/../../../requirements/constraints.txt # -c requirements/_base.txt # httpcore # httpx # requests -charset-normalizer==3.4.1 +charset-normalizer==3.4.2 # via # -c requirements/_base.txt # requests -click==8.1.7 +click==8.1.8 # via # -c requirements/_base.txt # dask # distributed -cloudpickle==3.1.0 +cloudpickle==3.1.1 # via # -c requirements/_base.txt # dask # distributed -contourpy==1.3.1 +contourpy==1.3.2 # via bokeh -coverage==7.6.12 +coverage==7.8.0 # via pytest-cov -dask==2024.12.0 +dask==2025.5.0 # via # -c requirements/_base.txt # -r requirements/_test.in # distributed -distributed==2024.12.0 +distributed==2025.5.0 # via # -c requirements/_base.txt # dask docker==7.1.0 # via -r requirements/_test.in -exceptiongroup==1.2.2 +exceptiongroup==1.3.0 # via # -c requirements/_base.txt # aio-pika execnet==2.1.1 # via pytest-xdist -faker==36.2.2 +faker==37.3.0 # via -r requirements/_test.in flaky==3.8.1 # via -r requirements/_test.in -frozenlist==1.5.0 +frozenlist==1.6.0 # via # -c requirements/_base.txt # aiohttp # aiosignal -fsspec==2024.10.0 +fsspec==2025.3.2 # via # -c requirements/_base.txt # dask -greenlet==3.1.1 +greenlet==3.2.2 # via # -c requirements/_base.txt # sqlalchemy -h11==0.14.0 +h11==0.16.0 # via # -c requirements/_base.txt # httpcore -httpcore==1.0.7 +httpcore==1.0.9 # via # -c requirements/_base.txt # httpx @@ -136,13 +136,13 @@ idna==3.10 # httpx # requests # yarl -importlib-metadata==8.5.0 +importlib-metadata==8.6.1 # via # -c requirements/_base.txt # dask -iniconfig==2.0.0 +iniconfig==2.1.0 # via pytest -jinja2==3.1.4 +jinja2==3.1.6 # via # -c requirements/../../../requirements/constraints.txt # -c requirements/_base.txt @@ -159,7 +159,7 @@ locket==1.0.0 # -c requirements/_base.txt # distributed # partd -mako==1.3.9 +mako==1.3.10 # via # -c requirements/../../../requirements/constraints.txt # -c requirements/_base.txt @@ -173,7 +173,7 @@ msgpack==1.1.0 # via # -c requirements/_base.txt # distributed -multidict==6.1.0 +multidict==6.4.4 # via # -c requirements/_base.txt # aiobotocore @@ -182,16 +182,18 @@ multidict==6.1.0 # yarl mypy==1.15.0 # via sqlalchemy -mypy-extensions==1.0.0 +mypy-extensions==1.1.0 # via mypy -numpy==2.1.3 +narwhals==1.40.0 + # via bokeh +numpy==2.2.6 # via # -c requirements/_base.txt # bokeh # contourpy # pandas # types-networkx -packaging==24.2 +packaging==25.0 # via # -c requirements/_base.txt # bokeh @@ -208,18 +210,18 @@ partd==1.4.2 # via # -c requirements/_base.txt # dask -pillow==11.1.0 +pillow==11.2.1 # via bokeh -pluggy==1.5.0 +pluggy==1.6.0 # via pytest pprintpp==0.4.0 # via pytest-icdiff -propcache==0.3.0 +propcache==0.3.1 # via # -c requirements/_base.txt # aiohttp # yarl -psutil==6.1.0 +psutil==7.0.0 # via # -c requirements/_base.txt # distributed @@ -232,13 +234,11 @@ pytest==8.3.5 # pytest-icdiff # pytest-mock # pytest-xdist -pytest-asyncio==0.21.2 - # via - # -c requirements/../../../requirements/constraints.txt - # -r requirements/_test.in -pytest-cov==6.0.0 +pytest-asyncio==0.26.0 + # via -r requirements/_test.in +pytest-cov==6.1.1 # via -r requirements/_test.in -pytest-docker==3.2.0 +pytest-docker==3.2.1 # via -r requirements/_test.in pytest-icdiff==0.9 # via -r requirements/_test.in @@ -254,7 +254,7 @@ python-dateutil==2.9.0.post0 # aiobotocore # botocore # pandas -pytz==2025.1 +pytz==2025.2 # via pandas pyyaml==6.0.2 # via @@ -293,7 +293,7 @@ sqlalchemy==1.4.54 # alembic sqlalchemy2-stubs==0.0.2a38 # via sqlalchemy -tblib==3.0.0 +tblib==3.1.0 # via # -c requirements/_base.txt # distributed @@ -303,29 +303,30 @@ toolz==1.0.0 # dask # distributed # partd -tornado==6.4.2 +tornado==6.5 # via # -c requirements/_base.txt # bokeh # distributed -types-networkx==3.4.2.20250304 +types-networkx==3.4.2.20250515 # via -r requirements/_test.in -types-psycopg2==2.9.21.20250121 +types-psycopg2==2.9.21.20250516 # via -r requirements/_test.in -types-pyyaml==6.0.12.20241230 +types-pyyaml==6.0.12.20250516 # via -r requirements/_test.in -typing-extensions==4.12.2 +typing-extensions==4.13.2 # via # -c requirements/_base.txt # alembic # anyio + # exceptiongroup # mypy # sqlalchemy2-stubs -tzdata==2025.1 +tzdata==2025.2 # via # faker # pandas -urllib3==2.2.3 +urllib3==2.4.0 # via # -c requirements/../../../requirements/constraints.txt # -c requirements/_base.txt @@ -337,9 +338,9 @@ wrapt==1.17.2 # via # -c requirements/_base.txt # aiobotocore -xyzservices==2025.1.0 +xyzservices==2025.4.0 # via bokeh -yarl==1.18.3 +yarl==1.20.0 # via # -c requirements/_base.txt # aio-pika diff --git a/services/director-v2/requirements/_tools.txt b/services/director-v2/requirements/_tools.txt index 322c3b95791..19dcf22bed6 100644 --- a/services/director-v2/requirements/_tools.txt +++ b/services/director-v2/requirements/_tools.txt @@ -1,4 +1,4 @@ -astroid==3.3.8 +astroid==3.3.10 # via pylint black==25.1.0 # via -r requirements/../../../requirements/devenv.txt @@ -8,19 +8,19 @@ bump2version==1.0.1 # via -r requirements/../../../requirements/devenv.txt cfgv==3.4.0 # via pre-commit -click==8.1.7 +click==8.1.8 # via # -c requirements/_base.txt # -c requirements/_test.txt # black # pip-tools -dill==0.3.9 +dill==0.4.0 # via pylint distlib==0.3.9 # via virtualenv -filelock==3.17.0 +filelock==3.18.0 # via virtualenv -identify==2.6.8 +identify==2.6.10 # via pre-commit isort==6.0.1 # via @@ -32,14 +32,14 @@ mypy==1.15.0 # via # -c requirements/_test.txt # -r requirements/../../../requirements/devenv.txt -mypy-extensions==1.0.0 +mypy-extensions==1.1.0 # via # -c requirements/_test.txt # black # mypy nodeenv==1.9.1 # via pre-commit -packaging==24.2 +packaging==25.0 # via # -c requirements/_base.txt # -c requirements/_test.txt @@ -47,19 +47,19 @@ packaging==24.2 # build pathspec==0.12.1 # via black -pip==25.0.1 +pip==25.1.1 # via pip-tools pip-tools==7.4.1 # via -r requirements/../../../requirements/devenv.txt -platformdirs==4.3.6 +platformdirs==4.3.8 # via # -c requirements/_base.txt # black # pylint # virtualenv -pre-commit==4.1.0 +pre-commit==4.2.0 # via -r requirements/../../../requirements/devenv.txt -pylint==3.3.4 +pylint==3.3.7 # via -r requirements/../../../requirements/devenv.txt pyproject-hooks==1.2.0 # via @@ -72,18 +72,18 @@ pyyaml==6.0.2 # -c requirements/_test.txt # pre-commit # watchdog -ruff==0.9.9 +ruff==0.11.10 # via -r requirements/../../../requirements/devenv.txt -setuptools==75.8.2 +setuptools==80.7.1 # via pip-tools tomlkit==0.13.2 # via pylint -typing-extensions==4.12.2 +typing-extensions==4.13.2 # via # -c requirements/_base.txt # -c requirements/_test.txt # mypy -virtualenv==20.29.3 +virtualenv==20.31.2 # via pre-commit watchdog==6.0.0 # via -r requirements/_tools.in diff --git a/services/director-v2/setup.cfg b/services/director-v2/setup.cfg index fa984376544..f84ced2849b 100644 --- a/services/director-v2/setup.cfg +++ b/services/director-v2/setup.cfg @@ -9,6 +9,7 @@ commit_args = --no-verify [tool:pytest] asyncio_mode = auto +asyncio_default_fixture_loop_scope = function markers = testit: "marks test to run during development" acceptance_test: "marks tests as 'acceptance tests' i.e. does the system do what the user expects? Typically those are workflows." diff --git a/services/director/requirements/_test.txt b/services/director/requirements/_test.txt index e636c947e3d..14f1a23345c 100644 --- a/services/director/requirements/_test.txt +++ b/services/director/requirements/_test.txt @@ -100,10 +100,8 @@ pytest==8.3.5 # pytest-instafail # pytest-mock # pytest-sugar -pytest-asyncio==0.23.8 - # via - # -c requirements/../../../requirements/constraints.txt - # -r requirements/_test.in +pytest-asyncio==0.26.0 + # via -r requirements/_test.in pytest-benchmark==5.1.0 # via -r requirements/_test.in pytest-cov==6.0.0 diff --git a/services/director/setup.cfg b/services/director/setup.cfg index eb3d7554b27..7576ec6b459 100644 --- a/services/director/setup.cfg +++ b/services/director/setup.cfg @@ -10,6 +10,7 @@ commit_args = --no-verify [tool:pytest] asyncio_mode = auto +asyncio_default_fixture_loop_scope = function markers = testit: "marks test to run during development" diff --git a/services/docker-api-proxy/requirements/_test.txt b/services/docker-api-proxy/requirements/_test.txt index 438d2c6ac09..3a6fafadc16 100644 --- a/services/docker-api-proxy/requirements/_test.txt +++ b/services/docker-api-proxy/requirements/_test.txt @@ -295,21 +295,8 @@ pytest==8.3.5 # pytest-asyncio # pytest-cov # pytest-mock -pytest-asyncio==0.23.8 - # via - # -c requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt - # -c requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt - # -c requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt - # -c requirements/../../../packages/service-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt - # -c requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt - # -c requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt - # -c requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt - # -c requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/../../../requirements/constraints.txt - # -c requirements/../../../packages/service-library/requirements/../../../requirements/constraints.txt - # -c requirements/../../../packages/settings-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt - # -c requirements/../../../packages/settings-library/requirements/../../../requirements/constraints.txt - # -c requirements/../../../requirements/constraints.txt - # -r requirements/_test.in +pytest-asyncio==0.26.0 + # via -r requirements/_test.in pytest-cov==6.0.0 # via -r requirements/_test.in pytest-mock==3.14.0 diff --git a/services/dynamic-scheduler/requirements/_test.txt b/services/dynamic-scheduler/requirements/_test.txt index 67d27e212fb..88272b19133 100644 --- a/services/dynamic-scheduler/requirements/_test.txt +++ b/services/dynamic-scheduler/requirements/_test.txt @@ -88,10 +88,8 @@ pytest==8.3.5 # pytest-icdiff # pytest-mock # pytest-sugar -pytest-asyncio==0.23.8 - # via - # -c requirements/../../../requirements/constraints.txt - # -r requirements/_test.in +pytest-asyncio==0.26.0 + # via -r requirements/_test.in pytest-cov==6.0.0 # via -r requirements/_test.in pytest-icdiff==0.9 diff --git a/services/dynamic-scheduler/setup.cfg b/services/dynamic-scheduler/setup.cfg index 900d3daba98..8eb83957564 100644 --- a/services/dynamic-scheduler/setup.cfg +++ b/services/dynamic-scheduler/setup.cfg @@ -9,6 +9,7 @@ commit_args = --no-verify [tool:pytest] asyncio_mode = auto +asyncio_default_fixture_loop_scope = function markers = testit: "marks test to run during development" diff --git a/services/dynamic-sidecar/requirements/_test.txt b/services/dynamic-sidecar/requirements/_test.txt index 4ba3116c903..7cf2d4f763c 100644 --- a/services/dynamic-sidecar/requirements/_test.txt +++ b/services/dynamic-sidecar/requirements/_test.txt @@ -102,10 +102,8 @@ pytest==8.3.5 # pytest-asyncio # pytest-cov # pytest-mock -pytest-asyncio==0.23.8 - # via - # -c requirements/../../../requirements/constraints.txt - # -r requirements/_test.in +pytest-asyncio==0.26.0 + # via -r requirements/_test.in pytest-cov==6.0.0 # via -r requirements/_test.in pytest-mock==3.14.0 diff --git a/services/dynamic-sidecar/setup.cfg b/services/dynamic-sidecar/setup.cfg index b32474b3ba3..e02fb54d462 100644 --- a/services/dynamic-sidecar/setup.cfg +++ b/services/dynamic-sidecar/setup.cfg @@ -9,9 +9,10 @@ commit_args = --no-verify [tool:pytest] asyncio_mode = auto -markers = +asyncio_default_fixture_loop_scope = function +markers = testit: "marks test to run during development" [mypy] -plugins = +plugins = pydantic.mypy diff --git a/services/efs-guardian/requirements/_test.txt b/services/efs-guardian/requirements/_test.txt index 8dc4fe1880f..c2a24ce3459 100644 --- a/services/efs-guardian/requirements/_test.txt +++ b/services/efs-guardian/requirements/_test.txt @@ -228,10 +228,8 @@ pytest==8.3.5 # pytest-asyncio # pytest-cov # pytest-mock -pytest-asyncio==0.23.8 - # via - # -c requirements/../../../requirements/constraints.txt - # -r requirements/_test.in +pytest-asyncio==0.26.0 + # via -r requirements/_test.in pytest-cov==6.0.0 # via -r requirements/_test.in pytest-mock==3.14.0 diff --git a/services/efs-guardian/setup.cfg b/services/efs-guardian/setup.cfg index 95cf52a4a36..a9078103b94 100644 --- a/services/efs-guardian/setup.cfg +++ b/services/efs-guardian/setup.cfg @@ -9,6 +9,7 @@ commit_args = --no-verify [tool:pytest] asyncio_mode = auto +asyncio_default_fixture_loop_scope = function markers = testit: "marks test to run during development" diff --git a/services/invitations/requirements/_test.txt b/services/invitations/requirements/_test.txt index 8db5683f40d..0b1bfff0ba6 100644 --- a/services/invitations/requirements/_test.txt +++ b/services/invitations/requirements/_test.txt @@ -53,10 +53,8 @@ pytest==8.3.5 # pytest-asyncio # pytest-cov # pytest-sugar -pytest-asyncio==0.23.8 - # via - # -c requirements/../../../requirements/constraints.txt - # -r requirements/_test.in +pytest-asyncio==0.26.0 + # via -r requirements/_test.in pytest-cov==6.0.0 # via -r requirements/_test.in pytest-runner==6.0.1 diff --git a/services/invitations/setup.cfg b/services/invitations/setup.cfg index 2322dbbec49..1d4afc35977 100644 --- a/services/invitations/setup.cfg +++ b/services/invitations/setup.cfg @@ -9,6 +9,7 @@ commit_args = --no-verify [tool:pytest] asyncio_mode = auto +asyncio_default_fixture_loop_scope = function markers = testit: "marks test to run during development" diff --git a/services/migration/requirements/_test.txt b/services/migration/requirements/_test.txt index 4bed24a2e59..f807b504dae 100644 --- a/services/migration/requirements/_test.txt +++ b/services/migration/requirements/_test.txt @@ -38,10 +38,8 @@ pytest==8.3.5 # pytest-cov # pytest-docker # pytest-mock -pytest-asyncio==0.23.8 - # via - # -c requirements/../../../requirements/constraints.txt - # -r requirements/_test.in +pytest-asyncio==0.26.0 + # via -r requirements/_test.in pytest-cov==6.0.0 # via -r requirements/_test.in pytest-docker==3.2.0 diff --git a/services/notifications/requirements/_test.txt b/services/notifications/requirements/_test.txt index 39c817aa927..483fca1f9a3 100644 --- a/services/notifications/requirements/_test.txt +++ b/services/notifications/requirements/_test.txt @@ -56,10 +56,8 @@ pytest==8.3.5 # pytest-asyncio # pytest-cov # pytest-mock -pytest-asyncio==0.23.8 - # via - # -c requirements/../../../requirements/constraints.txt - # -r requirements/_test.in +pytest-asyncio==0.26.0 + # via -r requirements/_test.in pytest-cov==6.0.0 # via -r requirements/_test.in pytest-mock==3.14.0 diff --git a/services/notifications/setup.cfg b/services/notifications/setup.cfg index c3123ece6cf..fd462156b58 100644 --- a/services/notifications/setup.cfg +++ b/services/notifications/setup.cfg @@ -9,6 +9,7 @@ commit_args = --no-verify [tool:pytest] asyncio_mode = auto +asyncio_default_fixture_loop_scope = function [mypy] plugins = diff --git a/services/payments/requirements/_test.txt b/services/payments/requirements/_test.txt index 93a17917d9e..7c801660a10 100644 --- a/services/payments/requirements/_test.txt +++ b/services/payments/requirements/_test.txt @@ -111,10 +111,8 @@ pytest==8.3.5 # pytest-icdiff # pytest-mock # pytest-sugar -pytest-asyncio==0.23.8 - # via - # -c requirements/../../../requirements/constraints.txt - # -r requirements/_test.in +pytest-asyncio==0.26.0 + # via -r requirements/_test.in pytest-cov==6.0.0 # via -r requirements/_test.in pytest-icdiff==0.9 diff --git a/services/payments/setup.cfg b/services/payments/setup.cfg index e4ecc5c546a..d651872f245 100644 --- a/services/payments/setup.cfg +++ b/services/payments/setup.cfg @@ -10,6 +10,7 @@ commit_args = --no-verify [tool:pytest] asyncio_mode = auto +asyncio_default_fixture_loop_scope = function markers = testit: "marks test to run during development" acceptance_test: "marks tests as 'acceptance tests' i.e. does the system do what the user expects? Typically those are workflows." diff --git a/services/resource-usage-tracker/requirements/_test.txt b/services/resource-usage-tracker/requirements/_test.txt index 22e0600cd60..88d8f09be4f 100644 --- a/services/resource-usage-tracker/requirements/_test.txt +++ b/services/resource-usage-tracker/requirements/_test.txt @@ -204,10 +204,8 @@ pytest==8.3.5 # pytest-cov # pytest-mock # pytest-sugar -pytest-asyncio==0.23.8 - # via - # -c requirements/../../../requirements/constraints.txt - # -r requirements/_test.in +pytest-asyncio==0.26.0 + # via -r requirements/_test.in pytest-cov==6.0.0 # via -r requirements/_test.in pytest-mock==3.14.0 diff --git a/services/resource-usage-tracker/setup.cfg b/services/resource-usage-tracker/setup.cfg index 2c2bab9ea38..1dbddd94448 100644 --- a/services/resource-usage-tracker/setup.cfg +++ b/services/resource-usage-tracker/setup.cfg @@ -9,6 +9,7 @@ commit_args = --no-verify [tool:pytest] asyncio_mode = auto +asyncio_default_fixture_loop_scope = function markers = testit: "marks test to run during development" [mypy] diff --git a/services/storage/requirements/_test.txt b/services/storage/requirements/_test.txt index a04ae5b2759..49ce5406f68 100644 --- a/services/storage/requirements/_test.txt +++ b/services/storage/requirements/_test.txt @@ -288,10 +288,8 @@ pytest==8.3.5 # pytest-instafail # pytest-mock # pytest-sugar -pytest-asyncio==0.23.8 - # via - # -c requirements/../../../requirements/constraints.txt - # -r requirements/_test.in +pytest-asyncio==0.26.0 + # via -r requirements/_test.in pytest-celery==1.1.3 # via -r requirements/_test.in pytest-cov==6.0.0 diff --git a/services/storage/setup.cfg b/services/storage/setup.cfg index a0fbc3b4cac..6c4b25275d5 100644 --- a/services/storage/setup.cfg +++ b/services/storage/setup.cfg @@ -9,13 +9,14 @@ commit_args = --no-verify [tool:pytest] asyncio_mode = auto -markers = +asyncio_default_fixture_loop_scope = function +markers = slow: marks tests as slow (deselect with '-m "not slow"') acceptance_test: "marks tests as 'acceptance tests' i.e. does the system do what the user expects? Typically those are workflows." testit: "marks test to run during development" heavy_load: "mark tests that require large amount of data" [mypy] -plugins = +plugins = pydantic.mypy sqlalchemy.ext.mypy.plugin diff --git a/services/web/server/requirements/_test.in b/services/web/server/requirements/_test.in index 368a9d03f7d..d8afabb9146 100644 --- a/services/web/server/requirements/_test.in +++ b/services/web/server/requirements/_test.in @@ -23,12 +23,7 @@ jsonref jsonschema openapi-spec-validator pytest -pytest-aiohttp -# ---- -# Overcomes "Known issues" in https://github.com/pytest-dev/pytest-asyncio/releases/tag/v0.23.8 -# IMPORTANT: This constraint can be removed when `test_pytest_asyncio_known_issue` passes with the new update of pytest-asyncio -pytest-asyncio<0.23 -# ---- +pytest-asyncio pytest-benchmark pytest-cov pytest-docker diff --git a/services/web/server/requirements/_test.txt b/services/web/server/requirements/_test.txt index 6bf253af430..312ac7d3e6e 100644 --- a/services/web/server/requirements/_test.txt +++ b/services/web/server/requirements/_test.txt @@ -7,7 +7,6 @@ aiohttp==3.11.18 # -c requirements/../../../../requirements/constraints.txt # -c requirements/_base.txt # aioresponses - # pytest-aiohttp aioresponses==0.7.8 # via -r requirements/_test.in aiosignal==1.2.0 @@ -210,7 +209,6 @@ pyrsistent==0.18.1 pytest==8.3.5 # via # -r requirements/_test.in - # pytest-aiohttp # pytest-asyncio # pytest-benchmark # pytest-cov @@ -220,13 +218,8 @@ pytest==8.3.5 # pytest-mock # pytest-sugar # pytest-xdist -pytest-aiohttp==1.0.5 +pytest-asyncio==0.26.0 # via -r requirements/_test.in -pytest-asyncio==0.21.2 - # via - # -c requirements/../../../../requirements/constraints.txt - # -r requirements/_test.in - # pytest-aiohttp pytest-benchmark==5.1.0 # via -r requirements/_test.in pytest-cov==6.0.0 diff --git a/services/web/server/setup.cfg b/services/web/server/setup.cfg index bb232c5a3cb..74695ace879 100644 --- a/services/web/server/setup.cfg +++ b/services/web/server/setup.cfg @@ -12,13 +12,14 @@ commit_args = --no-verify [tool:pytest] addopts = --strict-markers asyncio_mode = auto -markers = +asyncio_default_fixture_loop_scope = function +markers = slow: marks tests as slow (deselect with '-m "not slow"') acceptance_test: "marks tests as 'acceptance tests' i.e. does the system do what the user expects? Typically those are workflows." testit: "marks test to run during development" heavy_load: "mark tests that require large amount of data" [mypy] -plugins = +plugins = pydantic.mypy sqlalchemy.ext.mypy.plugin diff --git a/services/web/server/tests/conftest.py b/services/web/server/tests/conftest.py index 978a58d8b2b..dc15b475984 100644 --- a/services/web/server/tests/conftest.py +++ b/services/web/server/tests/conftest.py @@ -3,6 +3,7 @@ # pylint: disable=unused-argument # pylint: disable=unused-variable +import asyncio import json import logging import random @@ -62,6 +63,7 @@ # imports the fixtures for the integration tests pytest_plugins = [ + "aiohttp.pytest_plugin", "pytest_simcore.cli_runner", "pytest_simcore.db_entries_mocks", "pytest_simcore.docker_compose", @@ -157,7 +159,7 @@ async def logged_user( "first_name": faker.first_name(), "last_name": faker.last_name(), "phone": faker.phone_number() - + f"{random.randint(1000,9999)}", # noqa: S311 + + f"{random.randint(1000, 9999)}", # noqa: S311 }, check_if_succeeds=user_role != UserRole.ANONYMOUS, ) as user: @@ -241,7 +243,6 @@ async def _setup( "templateType": None, } if from_study: - from_study_wo_access_rights = deepcopy(from_study) from_study_wo_access_rights.pop("accessRights") expected_data = { @@ -478,3 +479,11 @@ def mock_dynamic_scheduler(mocker: MockerFixture) -> None: "simcore_service_webserver.dynamic_scheduler.api.update_projects_networks", autospec=True, ) + + +@pytest.fixture +async def loop( + event_loop: asyncio.AbstractEventLoop, +) -> asyncio.AbstractEventLoop: + """Override the event loop inside pytest-aiohttp with the one from pytest-asyncio.""" + return event_loop diff --git a/services/web/server/tests/integration/01/test_exporter_requests_handlers.py b/services/web/server/tests/integration/01/test_exporter_requests_handlers.py index 4c0e271809d..b471f6883c8 100644 --- a/services/web/server/tests/integration/01/test_exporter_requests_handlers.py +++ b/services/web/server/tests/integration/01/test_exporter_requests_handlers.py @@ -1,7 +1,6 @@ # pylint: disable=unused-argument # pylint: disable=redefined-outer-name -import asyncio import logging import sys from collections.abc import AsyncIterable, Callable, Iterable @@ -145,9 +144,8 @@ def product_name() -> str: @pytest.fixture -def client( +async def client( docker_swarm: None, - event_loop: asyncio.AbstractEventLoop, aiohttp_client: Callable, app_config: dict, monkeypatch_setenv_from_app_config: Callable, @@ -185,11 +183,9 @@ def client( setup_socketio(app) setup_resource_manager(app) - return event_loop.run_until_complete( - aiohttp_client( - app, - server_kwargs={"port": cfg["main"]["port"], "host": cfg["main"]["host"]}, - ) + return await aiohttp_client( + app, + server_kwargs={"port": cfg["main"]["port"], "host": cfg["main"]["host"]}, ) diff --git a/services/web/server/tests/integration/01/test_garbage_collection.py b/services/web/server/tests/integration/01/test_garbage_collection.py index 032e366162b..0618647f01c 100644 --- a/services/web/server/tests/integration/01/test_garbage_collection.py +++ b/services/web/server/tests/integration/01/test_garbage_collection.py @@ -139,8 +139,7 @@ async def director_v2_service_mock( @pytest.fixture -def client( - event_loop: asyncio.AbstractEventLoop, +async def client( aiohttp_client: Callable[..., Awaitable[TestClient]], app_config: dict[str, Any], postgres_with_template_db: sa.engine.Engine, @@ -181,11 +180,9 @@ def client( assert setup_resource_manager(app) setup_garbage_collector(app) - return event_loop.run_until_complete( - aiohttp_client( - app, - server_kwargs={"port": cfg["main"]["port"], "host": cfg["main"]["host"]}, - ) + return await aiohttp_client( + app, + server_kwargs={"port": cfg["main"]["port"], "host": cfg["main"]["host"]}, ) diff --git a/services/web/server/tests/integration/02/notifications/test_rabbitmq_consumers.py b/services/web/server/tests/integration/02/notifications/test_rabbitmq_consumers.py index b59ddd49a7b..051e4e1c56f 100644 --- a/services/web/server/tests/integration/02/notifications/test_rabbitmq_consumers.py +++ b/services/web/server/tests/integration/02/notifications/test_rabbitmq_consumers.py @@ -3,7 +3,6 @@ # pylint: disable=unused-variable # pylint: disable=too-many-arguments -import asyncio from collections.abc import Awaitable, Callable from random import choice from typing import Any @@ -130,9 +129,8 @@ async def _assert_handler_called_with_json( @pytest.fixture -def client( +async def client( mock_redis_socket_timeout: None, - event_loop: asyncio.AbstractEventLoop, aiohttp_client: Callable, app_config: dict[str, Any], rabbit_service: RabbitSettings, @@ -159,14 +157,12 @@ def client( setup_socketio(app) setup_resource_manager(app) - return event_loop.run_until_complete( - aiohttp_client( - app, - server_kwargs={ - "port": app_config["main"]["port"], - "host": app_config["main"]["host"], - }, - ) + return await aiohttp_client( + app, + server_kwargs={ + "port": app_config["main"]["port"], + "host": app_config["main"]["host"], + }, ) diff --git a/services/web/server/tests/integration/02/test_computation.py b/services/web/server/tests/integration/02/test_computation.py index 75c22ef3ac7..200deba64f3 100644 --- a/services/web/server/tests/integration/02/test_computation.py +++ b/services/web/server/tests/integration/02/test_computation.py @@ -113,8 +113,7 @@ def user_role_response(): @pytest.fixture -def client( - event_loop: asyncio.AbstractEventLoop, +async def client( postgres_db: sa.engine.Engine, rabbit_service: RabbitSettings, redis_settings: RedisSettings, @@ -151,14 +150,12 @@ def client( setup_db_listener(app) # no garbage collector - return event_loop.run_until_complete( - aiohttp_client( - app, - server_kwargs={ - "port": app_config["main"]["port"], - "host": app_config["main"]["host"], - }, - ) + return await aiohttp_client( + app, + server_kwargs={ + "port": app_config["main"]["port"], + "host": app_config["main"]["host"], + }, ) @@ -253,7 +250,7 @@ def _get_project_workbench_from_db( project_in_db ), f"missing pipeline in the database under comp_pipeline {project_id}" print( - f"<-- found following workbench: {json_dumps( project_in_db.workbench, indent=2)}" + f"<-- found following workbench: {json_dumps(project_in_db.workbench, indent=2)}" ) return project_in_db.workbench diff --git a/services/web/server/tests/integration/test__pytest_asyncio.py b/services/web/server/tests/integration/test__pytest_asyncio.py deleted file mode 100644 index 28d843fef5f..00000000000 --- a/services/web/server/tests/integration/test__pytest_asyncio.py +++ /dev/null @@ -1,48 +0,0 @@ -# pylint: disable=redefined-outer-name -# pylint: disable=unused-argument -# pylint: disable=unused-variable - -import asyncio - -import pytest -import pytest_asyncio - -pytest_simcore_core_services_selection = [ - "migration", - "postgres", -] -pytest_simcore_ops_services_selection = [] - - -@pytest.fixture(autouse=True) -def _drop_and_recreate_postgres(database_from_template_before_each_function: None): - return - - -@pytest.fixture -def some_fixture( - event_loop: asyncio.AbstractEventLoop, - simcore_services_ready: None, -): - event_loop.run_until_complete(asyncio.sleep(0.1)) - - -# NOTE: Remove skip marker to check whether `pytest-asyncio<0.23` constraint in _test.in -@pytest.mark.skip(reason="Checks pytest-asyncio upgrade issue") -async def test_pytest_asyncio_known_issue(some_fixture: None): - # - # This test demonstrates a common failure in most integration tests when using pytest-asyncio version 0.23. - # The test was derived by simplifying the original test_garbage_collection.py to highlight the issue. - # - # Due to an unresolved issue in pytest-asyncio, pytest will fail to execute this async test, - # resulting in the following error: - # - # `RuntimeError: There is no current event loop in thread 'MainThread'.` - # - # For more details, refer to the "Known Issues" section in the release notes: - # https://github.com/pytest-dev/pytest-asyncio/releases/tag/v0.23.8 - # - - assert pytest_asyncio.__version__ - - # NOTE: it might fail upon db tear-down but it is not relevant for this test diff --git a/services/web/server/tests/unit/isolated/scicrunch/test_scicrunch_service_client.py b/services/web/server/tests/unit/isolated/scicrunch/test_scicrunch_service_client.py index ee0b2bff9bf..d32013c3388 100644 --- a/services/web/server/tests/unit/isolated/scicrunch/test_scicrunch_service_client.py +++ b/services/web/server/tests/unit/isolated/scicrunch/test_scicrunch_service_client.py @@ -3,10 +3,10 @@ # pylint:disable=redefined-outer-name """ - Use this test to emulate situations with scicrunch service API +Use this test to emulate situations with scicrunch service API """ -import asyncio + import json import os from collections.abc import Callable @@ -100,18 +100,16 @@ async def mock_scicrunch_service_resolver( @pytest.fixture -def app( +async def app( mock_env_devel_environment: EnvVarsDict, - event_loop: asyncio.AbstractEventLoop, aiohttp_server: Callable, ) -> web.Application: - app_ = create_safe_application() setup_settings(app_) setup_scicrunch(app_) - server = event_loop.run_until_complete(aiohttp_server(app_)) + server = await aiohttp_server(app_) assert server.app == app_ return server.app diff --git a/services/web/server/tests/unit/isolated/test__redirections.py b/services/web/server/tests/unit/isolated/test__redirections.py index 6274087326f..360928a3de0 100644 --- a/services/web/server/tests/unit/isolated/test__redirections.py +++ b/services/web/server/tests/unit/isolated/test__redirections.py @@ -3,7 +3,6 @@ # pylint:disable=redefined-outer-name -import asyncio import textwrap from collections.abc import Awaitable, Callable from pathlib import Path @@ -36,12 +35,10 @@ def index_static_path(tmpdir): @pytest.fixture -def client( - event_loop: asyncio.AbstractEventLoop, +async def client( aiohttp_client: Callable[..., Awaitable[TestClient]], index_static_path, ): - routes = web.RouteTableDef() @routes.get("/") @@ -71,7 +68,7 @@ async def get_redirect_to_root(_request): app = web.Application() app.add_routes(routes) - return event_loop.run_until_complete(aiohttp_client(app)) + return await aiohttp_client(app) @pytest.mark.parametrize("test_path", ["/", "/other"]) diff --git a/services/web/server/tests/unit/isolated/test_activity.py b/services/web/server/tests/unit/isolated/test_activity.py index b08543a9996..8f041245f99 100644 --- a/services/web/server/tests/unit/isolated/test_activity.py +++ b/services/web/server/tests/unit/isolated/test_activity.py @@ -2,7 +2,6 @@ # pylint:disable=unused-argument # pylint:disable=redefined-outer-name -import asyncio import os from collections.abc import Awaitable, Callable from typing import Any @@ -62,7 +61,6 @@ def mocked_monitoring_down(mocker: MockerFixture) -> None: def app_environment( mock_env_devel_environment: EnvVarsDict, monkeypatch: pytest.MonkeyPatch ) -> EnvVarsDict: - envs = mock_env_devel_environment | setenvs_from_dict( monkeypatch, { @@ -99,8 +97,7 @@ def app_environment( @pytest.fixture -def client( - event_loop: asyncio.AbstractEventLoop, +async def client( aiohttp_client: Callable[..., Awaitable[TestClient]], mock_orphaned_services: MagicMock, app_environment: EnvVarsDict, @@ -119,7 +116,7 @@ def client( setup_rest(app) assert setup_activity(app) - return event_loop.run_until_complete(aiohttp_client(app)) + return await aiohttp_client(app) async def test_has_login_required(client: TestClient): diff --git a/services/web/server/tests/unit/isolated/test_catalog_setup.py b/services/web/server/tests/unit/isolated/test_catalog_setup.py index f16efc1695e..712117f2d40 100644 --- a/services/web/server/tests/unit/isolated/test_catalog_setup.py +++ b/services/web/server/tests/unit/isolated/test_catalog_setup.py @@ -2,7 +2,6 @@ # pylint: disable=unused-argument # pylint: disable=unused-variable -import asyncio from collections.abc import Awaitable, Callable import pytest @@ -15,15 +14,14 @@ @pytest.fixture -def client( - event_loop: asyncio.AbstractEventLoop, +async def client( aiohttp_client: Callable[..., Awaitable[TestClient]], ): app = create_safe_application() setup_catalog.__wrapped__(app) - return event_loop.run_until_complete(aiohttp_client(app)) + return await aiohttp_client(app) def test_url_translation(): diff --git a/services/web/server/tests/unit/isolated/test_diagnostics_healthcheck.py b/services/web/server/tests/unit/isolated/test_diagnostics_healthcheck.py index 924f5d55575..ab0883aaa69 100644 --- a/services/web/server/tests/unit/isolated/test_diagnostics_healthcheck.py +++ b/services/web/server/tests/unit/isolated/test_diagnostics_healthcheck.py @@ -103,14 +103,12 @@ def mock_environment( @pytest.fixture -def client( - event_loop: asyncio.AbstractEventLoop, +async def client( unused_tcp_port_factory: Callable, aiohttp_client: Callable[..., Awaitable[TestClient]], api_version_prefix: str, mock_environment: EnvVarsDict, ) -> TestClient: - routes = web.RouteTableDef() @routes.get("/error") @@ -167,8 +165,8 @@ async def delay_response(request: web.Request): app.router.add_routes(routes) - return event_loop.run_until_complete( - aiohttp_client(app, server_kwargs={key: main[key] for key in ("host", "port")}) + return await aiohttp_client( + app, server_kwargs={key: main[key] for key in ("host", "port")} ) @@ -228,7 +226,7 @@ async def test_diagnose_on_response_delays(client: TestClient): settings: DiagnosticsSettings = client.app[APP_SETTINGS_KEY].WEBSERVER_DIAGNOSTICS tmax = settings.DIAGNOSTICS_MAX_AVG_LATENCY - coros = [client.get(f"/delay/{1.1*tmax}") for _ in range(10)] + coros = [client.get(f"/delay/{1.1 * tmax}") for _ in range(10)] resps = await asyncio.gather(*coros) for resp in resps: diff --git a/services/web/server/tests/unit/isolated/test_rest.py b/services/web/server/tests/unit/isolated/test_rest.py index 335350c5468..02094f11dc2 100644 --- a/services/web/server/tests/unit/isolated/test_rest.py +++ b/services/web/server/tests/unit/isolated/test_rest.py @@ -2,7 +2,6 @@ # pylint:disable=redefined-outer-name # pylint:disable=no-name-in-module -import asyncio from collections.abc import Awaitable, Callable from http import HTTPStatus from unittest.mock import MagicMock @@ -21,8 +20,7 @@ @pytest.fixture -def client( - event_loop: asyncio.AbstractEventLoop, +async def client( unused_tcp_port_factory: Callable, aiohttp_client: Callable[..., Awaitable[TestClient]], api_version_prefix: str, @@ -48,9 +46,7 @@ async def slow_handler(request: web.Request): app.router.add_get("/slow", slow_handler) - return event_loop.run_until_complete( - aiohttp_client(app, server_kwargs=server_kwargs) - ) + return await aiohttp_client(app, server_kwargs=server_kwargs) async def test_frontend_config( diff --git a/services/web/server/tests/unit/isolated/test_security_api.py b/services/web/server/tests/unit/isolated/test_security_api.py index dd10eb4fee5..6f43d45e26c 100644 --- a/services/web/server/tests/unit/isolated/test_security_api.py +++ b/services/web/server/tests/unit/isolated/test_security_api.py @@ -71,9 +71,9 @@ async def _forget_product_name(request: web.Request) -> ProductName | None: @pytest.fixture -def set_products_in_app_state() -> Callable[ - [web.Application, OrderedDict[str, Product]], None -]: +def set_products_in_app_state() -> ( + Callable[[web.Application, OrderedDict[str, Product]], None] +): """ Add products in app's state to avoid setting up a full database in tests @@ -205,8 +205,7 @@ async def _logout(request: web.Request): @pytest.fixture -def client( - event_loop: asyncio.AbstractEventLoop, +async def client( aiohttp_client: Callable[..., Awaitable[TestClient]], mocker: MockerFixture, app_products: OrderedDict[str, Product], @@ -234,7 +233,7 @@ def client( set_products_in_app_state(app, app_products) app.middlewares.append(discover_product_middleware) - return event_loop.run_until_complete(aiohttp_client(app)) + return await aiohttp_client(app) @pytest.fixture @@ -254,7 +253,6 @@ async def test_product_in_session( expected_product_name: ProductName, basic_db_funs_mocked: None, ): - resp = await client.post("/v0/public") assert resp.status == status.HTTP_401_UNAUTHORIZED, f"error: {await resp.text()}" @@ -345,7 +343,6 @@ async def test_hack_product_session( get_active_user_or_none_dbmock: MagicMock, is_user_in_product_name_dbmock: MagicMock, ): - resp = await client.post("/v0/hack/s4l") assert resp.ok diff --git a/services/web/server/tests/unit/isolated/test_utils_rate_limiting.py b/services/web/server/tests/unit/isolated/test_utils_rate_limiting.py index 1389e9a154d..39e0adc5672 100644 --- a/services/web/server/tests/unit/isolated/test_utils_rate_limiting.py +++ b/services/web/server/tests/unit/isolated/test_utils_rate_limiting.py @@ -28,14 +28,13 @@ async def get_ok_handler(_request: web.Request): @pytest.fixture -def client( - event_loop, +async def client( aiohttp_client: Callable[..., Awaitable[TestClient]], ) -> TestClient: app = web.Application() app.router.add_get("/", get_ok_handler) - return event_loop.run_until_complete(aiohttp_client(app)) + return await aiohttp_client(app) def test_rate_limit_route_decorator(): @@ -81,7 +80,6 @@ async def test_global_rate_limit_route(requests_per_second: float, client: TestC msg = [] for i, task in enumerate(tasks): - while not task.done(): await asyncio.sleep(0.01) @@ -101,7 +99,7 @@ async def test_global_rate_limit_route(requests_per_second: float, client: TestC # first requests are OK assert all( t.result().status == expected_status for t in tasks[:MAX_NUM_REQUESTS] - ), f" Failed with { msg[:MAX_NUM_REQUESTS]}" + ), f" Failed with {msg[:MAX_NUM_REQUESTS]}" if requests_per_second >= MAX_REQUEST_RATE: expected_status = HTTPTooManyRequests.status_code @@ -109,7 +107,7 @@ async def test_global_rate_limit_route(requests_per_second: float, client: TestC # after ... assert all( t.result().status == expected_status for t in tasks[MAX_NUM_REQUESTS:] - ), f" Failed with { msg[MAX_NUM_REQUESTS:]}" + ), f" Failed with {msg[MAX_NUM_REQUESTS:]}" # checks Retry-After header failed = [] diff --git a/services/web/server/tests/unit/with_dbs/01/groups/conftest.py b/services/web/server/tests/unit/with_dbs/01/groups/conftest.py index 67e733cfd78..b53bab0a3dc 100644 --- a/services/web/server/tests/unit/with_dbs/01/groups/conftest.py +++ b/services/web/server/tests/unit/with_dbs/01/groups/conftest.py @@ -23,8 +23,7 @@ @pytest.fixture -def client( - event_loop, +async def client( aiohttp_client: Callable, app_environment: EnvVarsDict, postgres_db: sa.engine.Engine, @@ -40,4 +39,4 @@ def client( setup_users(app) setup_groups(app) - return event_loop.run_until_complete(aiohttp_client(app)) + return await aiohttp_client(app) diff --git a/services/web/server/tests/unit/with_dbs/01/storage/test_storage.py b/services/web/server/tests/unit/with_dbs/01/storage/test_storage.py index d7a0c1087b4..dd59712ed7b 100644 --- a/services/web/server/tests/unit/with_dbs/01/storage/test_storage.py +++ b/services/web/server/tests/unit/with_dbs/01/storage/test_storage.py @@ -79,6 +79,18 @@ ] +@pytest.mark.xfail( + reason="This is really weird: A first test that fails is necessary to make this test module work with pytest-asyncio>=0.24.0. " + "Maybe because of module/session event loops?" +) +async def test_pytest_asyncio_failure( + client: TestClient, +): + url = "/v0/storage/locations" + assert url.startswith(PREFIX) + await client.get(url) + + @pytest.mark.parametrize( "user_role,expected", [ @@ -95,7 +107,6 @@ async def test_list_storage_locations( ): url = "/v0/storage/locations" assert url.startswith(PREFIX) - resp = await client.get(url) data, error = await assert_status(resp, expected) diff --git a/services/web/server/tests/unit/with_dbs/01/storage/test_storage_handlers.py b/services/web/server/tests/unit/with_dbs/01/storage/test_storage_handlers.py index 61909c8742d..ef9724704c6 100644 --- a/services/web/server/tests/unit/with_dbs/01/storage/test_storage_handlers.py +++ b/services/web/server/tests/unit/with_dbs/01/storage/test_storage_handlers.py @@ -89,6 +89,20 @@ def _resolve(*args, **kwargs) -> AnyUrl: DOUBLE_ENCODE_SLASH_IN_FILE_ID = "ef944bbe-14c7-11ee-a195-02420a0f07ab%252F46ac4913-92dc-432c-98e3-2dea21d3f0ed%252Fa_text_file.txt" SINGLE_ENCODE_SLASH_IN_FILE_ID = "ef944bbe-14c7-11ee-a195-02420a0f07ab%2F46ac4913-92dc-432c-98e3-2dea21d3f0ed%2Fa_text_file.txt" +PREFIX = "/" + "v0" + "/storage" + + +@pytest.mark.xfail( + reason="This is really weird: A first test that fails is necessary to make this test module work with pytest-asyncio>=0.24.0. " + "Maybe because of module/session event loops?" +) +async def test_pytest_asyncio_failure( + client: TestClient, +): + url = "/v0/storage/locations" + assert url.startswith(PREFIX) + await client.get(url) + @pytest.mark.parametrize("user_role", [UserRole.USER]) @pytest.mark.parametrize( diff --git a/services/web/server/tests/unit/with_dbs/01/test_statics.py b/services/web/server/tests/unit/with_dbs/01/test_statics.py index dfd32405f23..e6f690ad36a 100644 --- a/services/web/server/tests/unit/with_dbs/01/test_statics.py +++ b/services/web/server/tests/unit/with_dbs/01/test_statics.py @@ -1,7 +1,6 @@ # pylint:disable=redefined-outer-name # pylint:disable=unused-argument -import asyncio import json import re from collections.abc import Callable @@ -48,10 +47,9 @@ def mock_static_webserver(aioresponses_mocker: aioresponses) -> None: @pytest.fixture -def client( +async def client( mock_static_webserver: None, app_environment: EnvVarsDict, - event_loop: asyncio.AbstractEventLoop, aiohttp_client: Callable, postgres_db: sa.engine.Engine, ) -> TestClient: @@ -64,9 +62,7 @@ def client( setup_products(app) assert setup_statics(app) - return event_loop.run_until_complete( - aiohttp_client(app, server_kwargs={"host": "localhost"}) - ) + return await aiohttp_client(app, server_kwargs={"host": "localhost"}) @pytest.mark.parametrize( diff --git a/services/web/server/tests/unit/with_dbs/02/test_projects_states_handlers.py b/services/web/server/tests/unit/with_dbs/02/test_projects_states_handlers.py index 8795f8cec62..68f0c0dfe6e 100644 --- a/services/web/server/tests/unit/with_dbs/02/test_projects_states_handlers.py +++ b/services/web/server/tests/unit/with_dbs/02/test_projects_states_handlers.py @@ -7,7 +7,7 @@ import asyncio import time -from collections.abc import Awaitable, Callable, Iterator +from collections.abc import AsyncIterator, Awaitable, Callable, Iterator from copy import deepcopy from datetime import UTC, datetime, timedelta from decimal import Decimal @@ -104,7 +104,6 @@ async def _list_projects( expected: HTTPStatus, query_parameters: dict | None = None, ) -> list[ProjectDict]: - assert client.app # GET /v0/projects @@ -296,8 +295,8 @@ async def test_share_project( ) if new_project: assert new_project["accessRights"] == { - f'{primary_group["gid"]}': {"read": True, "write": True, "delete": True}, - f'{(all_group["gid"])}': share_rights, + f"{primary_group['gid']}": {"read": True, "write": True, "delete": True}, + f"{(all_group['gid'])}": share_rights, } # user 1 can always get to his project @@ -1214,9 +1213,9 @@ async def test_project_node_lifetime( # noqa: PLR0915 @pytest.fixture -def client_on_running_server_factory( - client: TestClient, event_loop -) -> Iterator[Callable]: +async def client_on_running_server_factory( + client: TestClient, +) -> AsyncIterator[Callable[[], TestClient]]: # Creates clients connected to the same server as the reference client # # Implemented as aihttp_client but creates a client using a running server, @@ -1226,8 +1225,8 @@ def client_on_running_server_factory( clients = [] - def go(): - cli = TestClient(client.server, loop=event_loop) + def go() -> TestClient: + cli = TestClient(client.server, loop=asyncio.get_event_loop()) assert client.server.started # AVOIDS client.start_server clients.append(cli) @@ -1235,7 +1234,7 @@ def go(): yield go - async def close_client_but_not_server(cli: TestClient): + async def close_client_but_not_server(cli: TestClient) -> None: # pylint: disable=protected-access if not cli._closed: # noqa: SLF001 for resp in cli._responses: # noqa: SLF001 @@ -1249,7 +1248,7 @@ async def finalize(): while clients: await close_client_but_not_server(clients.pop()) - event_loop.run_until_complete(finalize()) + await finalize() @pytest.fixture @@ -1260,7 +1259,7 @@ def clean_redis_table(redis_client) -> None: @pytest.mark.parametrize(*standard_role_response()) async def test_open_shared_project_2_users_locked( client: TestClient, - client_on_running_server_factory: Callable, + client_on_running_server_factory: Callable[[], TestClient], logged_user: dict, shared_project: dict, socketio_client_factory: Callable, @@ -1443,7 +1442,7 @@ async def test_open_shared_project_2_users_locked( @pytest.mark.parametrize(*standard_role_response()) async def test_open_shared_project_at_same_time( client: TestClient, - client_on_running_server_factory: Callable, + client_on_running_server_factory: Callable[[], TestClient], logged_user: dict, shared_project: ProjectDict, socketio_client_factory: Callable, diff --git a/services/web/server/tests/unit/with_dbs/03/login/test_login_reset_password.py b/services/web/server/tests/unit/with_dbs/03/login/test_login_reset_password.py index a4e8b2036bc..2451e0adee7 100644 --- a/services/web/server/tests/unit/with_dbs/03/login/test_login_reset_password.py +++ b/services/web/server/tests/unit/with_dbs/03/login/test_login_reset_password.py @@ -4,7 +4,6 @@ # pylint: disable=too-many-arguments -import asyncio import contextlib from collections.abc import AsyncIterator, Callable @@ -46,8 +45,7 @@ @pytest.fixture -def client( - event_loop: asyncio.AbstractEventLoop, +async def client( aiohttp_client: Callable, app_products_names: list[ProductName], disabled_setup_garbage_collector: MockType, @@ -56,7 +54,7 @@ def client( web_server: TestServer, ) -> TestClient: assert app_products_names - return event_loop.run_until_complete(aiohttp_client(web_server)) + return await aiohttp_client(web_server) async def test_two_steps_action_confirmation_workflow( @@ -261,7 +259,6 @@ async def test_unregistered_product( assert client.app async with NewUser(app=client.app) as user: - # allow in await groups_service.auto_add_user_to_product_group( client.app, user_id=user["id"], product_name=default_product_name diff --git a/services/web/server/tests/unit/with_dbs/03/tags/conftest.py b/services/web/server/tests/unit/with_dbs/03/tags/conftest.py index ea8907aeab3..03a8f66e9a2 100644 --- a/services/web/server/tests/unit/with_dbs/03/tags/conftest.py +++ b/services/web/server/tests/unit/with_dbs/03/tags/conftest.py @@ -2,7 +2,6 @@ # pylint:disable=unused-argument # pylint:disable=redefined-outer-name -import asyncio from collections.abc import AsyncIterator, Callable from copy import deepcopy from pathlib import Path @@ -58,8 +57,7 @@ def app_environment( @pytest.fixture -def client( - event_loop: asyncio.AbstractEventLoop, +async def client( aiohttp_client: Callable, app_environment: EnvVarsDict, postgres_db, @@ -91,9 +89,7 @@ def client( setup_wallets(app) # server and client - return event_loop.run_until_complete( - aiohttp_client(app, server_kwargs={"host": "localhost"}) - ) + return await aiohttp_client(app, server_kwargs={"host": "localhost"}) # teardown here ... diff --git a/services/web/server/tests/unit/with_dbs/03/test_session.py b/services/web/server/tests/unit/with_dbs/03/test_session.py index 060959ee44d..2bf9a190e99 100644 --- a/services/web/server/tests/unit/with_dbs/03/test_session.py +++ b/services/web/server/tests/unit/with_dbs/03/test_session.py @@ -5,7 +5,6 @@ # pylint: disable=unused-variable -import asyncio from collections.abc import Callable import pytest @@ -43,16 +42,14 @@ def app_environment( @pytest.fixture -def client( +async def client( session_url_path: str, - event_loop: asyncio.AbstractEventLoop, aiohttp_client: Callable, disable_static_webserver: Callable, app_environment: EnvVarsDict, postgres_db, mock_orphaned_services, # disables gc ) -> TestClient: - extra_routes = web.RouteTableDef() @extra_routes.get(session_url_path) @@ -65,7 +62,7 @@ async def _get_user_session(request: web.Request): app.add_routes(extra_routes) - return event_loop.run_until_complete(aiohttp_client(app)) + return await aiohttp_client(app) async def test_security_identity_is_email_and_product( @@ -121,7 +118,6 @@ async def test_security_identity_is_email_and_product( def test_session_settings( session_key: str | bytes | None, mock_env_devel_environment: EnvVarsDict ): - if session_key is not None: settings = SessionSettings(WEBSERVER_SESSION_SECRET_KEY=session_key) else: diff --git a/services/web/server/tests/unit/with_dbs/03/test_session_access_policies.py b/services/web/server/tests/unit/with_dbs/03/test_session_access_policies.py index 88970409a8e..9a20ee62e4c 100644 --- a/services/web/server/tests/unit/with_dbs/03/test_session_access_policies.py +++ b/services/web/server/tests/unit/with_dbs/03/test_session_access_policies.py @@ -4,7 +4,6 @@ # pylint: disable=too-many-arguments -from asyncio import AbstractEventLoop from collections.abc import Callable from typing import Protocol @@ -30,8 +29,7 @@ @pytest.fixture -def client( - event_loop: AbstractEventLoop, +async def client( aiohttp_client: Callable, mock_env_devel_environment: EnvVarsDict, ) -> TestClient: @@ -115,14 +113,13 @@ async def phone_confirmation(request: web.Request): setup_session(app) app.add_routes(routes) - return event_loop.run_until_complete(aiohttp_client(app)) + return await aiohttp_client(app) class ClientRequestCallable(Protocol): async def __call__( self, client: TestClient, name: str, return_status: int | None = None - ) -> ClientResponse: - ... + ) -> ClientResponse: ... @pytest.fixture @@ -157,7 +154,6 @@ async def test_login_then_submit_code( async def test_login_fails_then_no_access( client: TestClient, do_request: ClientRequestCallable ): - response = await do_request( client, "auth_login", return_status=status.HTTP_500_INTERNAL_SERVER_ERROR ) diff --git a/services/web/server/tests/unit/with_dbs/04/garbage_collector/test_resource_manager.py b/services/web/server/tests/unit/with_dbs/04/garbage_collector/test_resource_manager.py index f5b37b61960..2c9d421e4f4 100644 --- a/services/web/server/tests/unit/with_dbs/04/garbage_collector/test_resource_manager.py +++ b/services/web/server/tests/unit/with_dbs/04/garbage_collector/test_resource_manager.py @@ -122,8 +122,7 @@ def app_environment( @pytest.fixture -def client( - event_loop: asyncio.AbstractEventLoop, +async def client( aiohttp_client: Callable, app_environment: EnvVarsDict, postgres_db: sa.engine.Engine, @@ -159,11 +158,7 @@ def client( # garbage_collectorgc_core.collect_garbage assert not is_setup_completed("simcore_service_webserver.garbage_collector", app) - return event_loop.run_until_complete( - aiohttp_client( - app, - ) - ) + return await aiohttp_client(app) @pytest.fixture diff --git a/services/web/server/tests/unit/with_dbs/conftest.py b/services/web/server/tests/unit/with_dbs/conftest.py index 652144bb57d..710bf07215a 100644 --- a/services/web/server/tests/unit/with_dbs/conftest.py +++ b/services/web/server/tests/unit/with_dbs/conftest.py @@ -3,7 +3,6 @@ # pylint: disable=unused-variable # pylint: disable=too-many-arguments -import asyncio import random import sys import textwrap @@ -25,6 +24,7 @@ import aiopg.sa import pytest +import pytest_asyncio import redis import redis.asyncio as aioredis import simcore_postgres_database.cli as pg_cli @@ -205,9 +205,8 @@ async def _print_mail_to_stdout( ) -@pytest.fixture -def web_server( - event_loop: asyncio.AbstractEventLoop, +@pytest_asyncio.fixture(loop_scope="function") +async def web_server( app_environment: EnvVarsDict, postgres_db: sa.engine.Engine, webserver_test_server_port: int, @@ -223,9 +222,7 @@ def web_server( disable_static_webserver(app) - server = event_loop.run_until_complete( - aiohttp_server(app, port=webserver_test_server_port) - ) + server = await aiohttp_server(app, port=webserver_test_server_port) assert isinstance(postgres_db, sa.engine.Engine) @@ -238,8 +235,7 @@ def web_server( @pytest.fixture -def client( - event_loop: asyncio.AbstractEventLoop, +async def client( aiohttp_client: Callable, web_server: TestServer, mock_orphaned_services, @@ -250,7 +246,7 @@ def client( client connect to web-server """ # WARNING: this fixture is commonly overriden. Check before renaming. - return event_loop.run_until_complete(aiohttp_client(web_server)) + return await aiohttp_client(web_server) @pytest.fixture(scope="session") diff --git a/tests/environment-setup/requirements/requirements.txt b/tests/environment-setup/requirements/requirements.txt index f4424462554..be1f58f4078 100644 --- a/tests/environment-setup/requirements/requirements.txt +++ b/tests/environment-setup/requirements/requirements.txt @@ -28,18 +28,8 @@ pytest==8.3.5 # pytest-asyncio # pytest-instafail # pytest-sugar -pytest-asyncio==0.23.8 - # via - # -c requirements/../../../packages/service-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt - # -c requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt - # -c requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt - # -c requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt - # -c requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/../../../requirements/constraints.txt - # -c requirements/../../../packages/service-library/requirements/../../../requirements/constraints.txt - # -c requirements/../../../packages/settings-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt - # -c requirements/../../../packages/settings-library/requirements/../../../requirements/constraints.txt - # -c requirements/../../../requirements/constraints.txt - # -r requirements/requirements.in +pytest-asyncio==0.26.0 + # via -r requirements/requirements.in pytest-instafail==0.5.0 # via -r requirements/requirements.in pytest-runner==6.0.1 diff --git a/tests/public-api/Makefile b/tests/public-api/Makefile index e688cf0b195..fc08324570a 100644 --- a/tests/public-api/Makefile +++ b/tests/public-api/Makefile @@ -48,5 +48,6 @@ test-ci: ## runs ci tests (i.e. w/o debug tools and with code coverage) -vv \ --color=yes \ --durations=10 \ + --asyncio-mode=auto \ --keep-docker-up \ $(CURDIR) diff --git a/tests/public-api/conftest.py b/tests/public-api/conftest.py index b8f40710e08..508b4c59a8a 100644 --- a/tests/public-api/conftest.py +++ b/tests/public-api/conftest.py @@ -4,12 +4,11 @@ # pylint: disable=unused-argument # pylint: disable=unused-variable -import asyncio import json import logging import os import time -from collections.abc import Callable, Iterable, Iterator +from collections.abc import Callable, Iterator from pprint import pformat import httpx @@ -75,17 +74,8 @@ def ops_services_selection(ops_docker_compose: dict) -> list[str]: return all_ops_services -@pytest.fixture(scope="module") -def event_loop(request: pytest.FixtureRequest) -> Iterable[asyncio.AbstractEventLoop]: - """Overrides pytest_asyncio.event_loop and extends to module scope""" - loop = asyncio.get_event_loop_policy().new_event_loop() - yield loop - loop.close() - - @pytest.fixture(scope="module") def simcore_docker_stack_and_registry_ready( - event_loop: asyncio.AbstractEventLoop, docker_registry: UrlStr, docker_stack: StacksDeployedDict, simcore_services_ready_module: None, diff --git a/tests/public-api/requirements/_test.txt b/tests/public-api/requirements/_test.txt index 95e13d0874d..0048a85e432 100644 --- a/tests/public-api/requirements/_test.txt +++ b/tests/public-api/requirements/_test.txt @@ -68,10 +68,8 @@ pytest==8.3.5 # via # -r requirements/_test.in # pytest-asyncio -pytest-asyncio==0.23.8 - # via - # -c requirements/../../../requirements/constraints.txt - # -r requirements/_test.in +pytest-asyncio==0.26.0 + # via -r requirements/_test.in python-dotenv==1.0.1 # via -r requirements/_test.in pyyaml==6.0.2 diff --git a/tests/swarm-deploy/requirements/_test.txt b/tests/swarm-deploy/requirements/_test.txt index 23ecb5c4c51..fe3462478b3 100644 --- a/tests/swarm-deploy/requirements/_test.txt +++ b/tests/swarm-deploy/requirements/_test.txt @@ -484,34 +484,8 @@ pytest==8.3.5 # pytest-instafail # pytest-mock # pytest-sugar -pytest-asyncio==0.23.8 - # via - # -c requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt - # -c requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt - # -c requirements/../../../packages/service-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt - # -c requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt - # -c requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt - # -c requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt - # -c requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/../../../requirements/constraints.txt - # -c requirements/../../../packages/service-library/requirements/../../../requirements/constraints.txt - # -c requirements/../../../packages/settings-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt - # -c requirements/../../../packages/settings-library/requirements/../../../requirements/constraints.txt - # -c requirements/../../../packages/simcore-sdk/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt - # -c requirements/../../../packages/simcore-sdk/requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt - # -c requirements/../../../packages/simcore-sdk/requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt - # -c requirements/../../../packages/simcore-sdk/requirements/../../../packages/postgres-database/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt - # -c requirements/../../../packages/simcore-sdk/requirements/../../../packages/postgres-database/requirements/../../../requirements/constraints.txt - # -c requirements/../../../packages/simcore-sdk/requirements/../../../packages/service-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt - # -c requirements/../../../packages/simcore-sdk/requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt - # -c requirements/../../../packages/simcore-sdk/requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt - # -c requirements/../../../packages/simcore-sdk/requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt - # -c requirements/../../../packages/simcore-sdk/requirements/../../../packages/service-library/requirements/../../../packages/settings-library/requirements/../../../requirements/constraints.txt - # -c requirements/../../../packages/simcore-sdk/requirements/../../../packages/service-library/requirements/../../../requirements/constraints.txt - # -c requirements/../../../packages/simcore-sdk/requirements/../../../packages/settings-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt - # -c requirements/../../../packages/simcore-sdk/requirements/../../../packages/settings-library/requirements/../../../requirements/constraints.txt - # -c requirements/../../../packages/simcore-sdk/requirements/../../../requirements/constraints.txt - # -c requirements/../../../requirements/constraints.txt - # -r requirements/_test.in +pytest-asyncio==0.26.0 + # via -r requirements/_test.in pytest-instafail==0.5.0 # via -r requirements/_test.in pytest-mock==3.14.0