diff --git a/.github/workflows/ci-testing-deploy.yml b/.github/workflows/ci-testing-deploy.yml index 5fcdea8633c..c039f62a28f 100644 --- a/.github/workflows/ci-testing-deploy.yml +++ b/.github/workflows/ci-testing-deploy.yml @@ -2118,6 +2118,12 @@ jobs: run: ./ci/github/system-testing/public-api.bash install - name: test run: ./ci/github/system-testing/public-api.bash test + - name: upload failed tests logs + if: failure() + uses: actions/upload-artifact@v2 + with: + name: ${{ github.job }}_docker_logs + path: ./test_failures - name: cleanup if: always() run: ./ci/github/system-testing/public-api.bash clean_up @@ -2177,7 +2183,7 @@ jobs: uses: actions/upload-artifact@v2 with: name: ${{ github.job }}_docker_logs - path: ./tests/swarm-deploy/test_failures + path: ./test_failures - name: cleanup if: always() run: ./ci/github/system-testing/swarm-deploy.bash clean_up diff --git a/ci/helpers/requirements.txt b/ci/helpers/requirements.txt index ec07c16d692..dfd6466d920 100644 --- a/ci/helpers/requirements.txt +++ b/ci/helpers/requirements.txt @@ -37,7 +37,7 @@ multidict==5.2.0 # via # aiohttp # yarl -pydantic==1.8.2 +pydantic==1.9.0 # via fastapi pyjwt==2.3.0 # via -r requirements.in diff --git a/packages/dask-task-models-library/requirements/_base.txt b/packages/dask-task-models-library/requirements/_base.txt index 42e99590386..a86fd113085 100644 --- a/packages/dask-task-models-library/requirements/_base.txt +++ b/packages/dask-task-models-library/requirements/_base.txt @@ -46,7 +46,7 @@ partd==1.2.0 # via dask psutil==5.8.0 # via distributed -pydantic==1.8.2 +pydantic==1.9.0 # via # -c requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../requirements/constraints.txt diff --git a/packages/dask-task-models-library/src/dask_task_models_library/container_tasks/io.py b/packages/dask-task-models-library/src/dask_task_models_library/container_tasks/io.py index b3114a8b0b6..7c4c542f656 100644 --- a/packages/dask-task-models-library/src/dask_task_models_library/container_tasks/io.py +++ b/packages/dask-task-models-library/src/dask_task_models_library/container_tasks/io.py @@ -15,7 +15,7 @@ StrictInt, StrictStr, ) -from typing_extensions import Annotated +from pydantic.types import constr class PortSchema(BaseModel): @@ -74,7 +74,7 @@ class Config: } -PortKey = Annotated[str, Field(regex=PROPERTY_KEY_RE)] +PortKey = constr(regex=PROPERTY_KEY_RE) PortValue = Union[StrictBool, StrictInt, StrictFloat, StrictStr, FileUrl, None] diff --git a/packages/models-library/requirements/_base.txt b/packages/models-library/requirements/_base.txt index e1e1be88f80..5d4590e37a2 100644 --- a/packages/models-library/requirements/_base.txt +++ b/packages/models-library/requirements/_base.txt @@ -12,7 +12,7 @@ idna==2.10 # via # -r requirements/_base.in # email-validator -pydantic==1.8.2 +pydantic==1.9.0 # via # -c requirements/../../../requirements/constraints.txt # -r requirements/_base.in diff --git a/packages/models-library/src/models_library/rest_pagination.py b/packages/models-library/src/models_library/rest_pagination.py index 409fcf13219..597ddaa1777 100644 --- a/packages/models-library/src/models_library/rest_pagination.py +++ b/packages/models-library/src/models_library/rest_pagination.py @@ -14,50 +14,6 @@ DEFAULT_NUMBER_OF_ITEMS_PER_PAGE = 20 -def monkey_patch_pydantic_url_regex() -> None: - # waiting for PR https://github.com/samuelcolvin/pydantic/pull/2512 to be released into - # pydantic main codebase - import pydantic - - if pydantic.VERSION > "1.8.2": - raise RuntimeError( - ( - "Please check that PR https://github.com/samuelcolvin/pydantic/pull/2512 " - "was merged AND added in this version." - "If already present in this version, remove this monkey_patch" - ) - ) - - import re - from typing import Pattern - - from pydantic import networks - - def url_regex() -> Pattern[str]: - _url_regex_cache = networks._url_regex_cache # pylint: disable=protected-access - if _url_regex_cache is None: - _url_regex_cache = re.compile( - r"(?:(?P[a-z][a-z0-9+\-.]+)://)?" # scheme https://tools.ietf.org/html/rfc3986#appendix-A - r"(?:(?P[^\s:/]*)(?::(?P[^\s/]*))?@)?" # user info - r"(?:" - r"(?P(?:\d{1,3}\.){3}\d{1,3})(?=$|[/:#?])|" # ipv4 - r"(?P\[[A-F0-9]*:[A-F0-9:]+\])(?=$|[/:#?])|" # ipv6 - r"(?P[^\s/:?#]+)" # domain, validation occurs later - r")?" - r"(?::(?P\d+))?" # port - r"(?P/[^\s?#]*)?" # path - r"(?:\?(?P[^\s#]+))?" # query - r"(?:#(?P\S+))?", # fragment - re.IGNORECASE, - ) - return _url_regex_cache - - networks.url_regex = url_regex - - -monkey_patch_pydantic_url_regex() - - class PageMetaInfoLimitOffset(BaseModel): limit: PositiveInt = DEFAULT_NUMBER_OF_ITEMS_PER_PAGE total: NonNegativeInt diff --git a/packages/models-library/src/models_library/utils/misc.py b/packages/models-library/src/models_library/utils/misc.py index 011a1a24e69..c06dede6056 100644 --- a/packages/models-library/src/models_library/utils/misc.py +++ b/packages/models-library/src/models_library/utils/misc.py @@ -1,7 +1,7 @@ from typing import Any, Dict, List, Type, Union from pydantic import BaseModel -from pydantic.main import SchemaExtraCallable +from pydantic.config import SchemaExtraCallable def extract_examples(model_cls: Type[BaseModel]) -> List[Dict[str, Any]]: diff --git a/packages/models-library/tests/test_basic_regex.py b/packages/models-library/tests/test_basic_regex.py index 55ab84e60e0..9e2ac1a5cf5 100644 --- a/packages/models-library/tests/test_basic_regex.py +++ b/packages/models-library/tests/test_basic_regex.py @@ -8,7 +8,7 @@ import pytest from models_library.basic_regex import DATE_RE, UUID_RE, VERSION_RE -from pkg_resources import parse_version +from packaging.version import Version INVALID = object() VALID = object() @@ -97,6 +97,6 @@ def test_DATE_RE(date_str, expected): def test_pep404_compare_versions(): # A reminder from https://setuptools.readthedocs.io/en/latest/userguide/distribution.html#specifying-your-project-s-version - assert parse_version("1.9.a.dev") == parse_version("1.9a0dev") - assert parse_version("2.1-rc2") < parse_version("2.1") - assert parse_version("0.6a9dev-r41475") < parse_version("0.6a9") + assert Version("1.9.a.dev") == Version("1.9a0dev") + assert Version("2.1-rc2") < Version("2.1") + assert Version("0.6a9dev") < Version("0.6a9") diff --git a/packages/service-integration/requirements/_base.txt b/packages/service-integration/requirements/_base.txt index 1cab18de7d9..37fd0492bfc 100644 --- a/packages/service-integration/requirements/_base.txt +++ b/packages/service-integration/requirements/_base.txt @@ -40,7 +40,7 @@ pluggy==1.0.0 # via pytest py==1.11.0 # via pytest -pydantic==1.8.2 +pydantic==1.9.0 # via # -c requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../requirements/constraints.txt diff --git a/packages/service-integration/requirements/_tools.txt b/packages/service-integration/requirements/_tools.txt index 72aef0f88d4..4d8a4cbdb21 100644 --- a/packages/service-integration/requirements/_tools.txt +++ b/packages/service-integration/requirements/_tools.txt @@ -123,7 +123,7 @@ prance==0.21.8.0 # via datamodel-code-generator pre-commit==2.15.0 # via -r requirements/../../../requirements/devenv.txt -pydantic==1.8.2 +pydantic==1.9.0 # via # -c requirements/../../../requirements/constraints.txt # -c requirements/_base.txt diff --git a/packages/service-library/requirements/_base.txt b/packages/service-library/requirements/_base.txt index 41bdf64cda3..7a6384d2347 100644 --- a/packages/service-library/requirements/_base.txt +++ b/packages/service-library/requirements/_base.txt @@ -8,7 +8,7 @@ aiodebug==1.1.2 # via -r requirements/_base.in aiofiles==0.8.0 # via -r requirements/_base.in -pydantic==1.8.2 +pydantic==1.9.0 # via # -c requirements/../../../requirements/constraints.txt # -r requirements/_base.in diff --git a/packages/service-library/requirements/_fastapi.txt b/packages/service-library/requirements/_fastapi.txt index 11ad6a9c8e8..f2ba783ee2d 100644 --- a/packages/service-library/requirements/_fastapi.txt +++ b/packages/service-library/requirements/_fastapi.txt @@ -22,7 +22,7 @@ opentracing==2.4.0 # via # fastapi-contrib # jaeger-client -pydantic==1.8.2 +pydantic==1.9.0 # via # -c requirements/./../../../requirements/constraints.txt # -c requirements/./_base.in diff --git a/packages/settings-library/requirements/_base.txt b/packages/settings-library/requirements/_base.txt index 4105a832a78..4ed2575abf9 100644 --- a/packages/settings-library/requirements/_base.txt +++ b/packages/settings-library/requirements/_base.txt @@ -6,7 +6,7 @@ # click==8.0.3 # via typer -pydantic==1.8.2 +pydantic==1.9.0 # via # -c requirements/../../../requirements/constraints.txt # -r requirements/_base.in diff --git a/packages/settings-library/src/settings_library/prometheus.py b/packages/settings-library/src/settings_library/prometheus.py index 0e73f75c79a..a7174f227e4 100644 --- a/packages/settings-library/src/settings_library/prometheus.py +++ b/packages/settings-library/src/settings_library/prometheus.py @@ -1,6 +1,6 @@ from functools import cached_property -from pydantic.networks import HttpUrl +from pydantic.networks import AnyHttpUrl from settings_library.base import BaseCustomSettings from settings_library.utils_service import MixinServiceSettings @@ -14,7 +14,7 @@ class PrometheusSettings(BaseCustomSettings, MixinServiceSettings): @cached_property def base_url(self) -> str: - return HttpUrl.build( + return AnyHttpUrl.build( scheme="http", host=self.PROMETHEUS_HOST, port=f"{self.PROMETHEUS_PORT}", diff --git a/packages/simcore-sdk/requirements/_base.txt b/packages/simcore-sdk/requirements/_base.txt index 88dfe643b99..a29faf9338a 100644 --- a/packages/simcore-sdk/requirements/_base.txt +++ b/packages/simcore-sdk/requirements/_base.txt @@ -71,7 +71,7 @@ psycopg2-binary==2.9.2 # via # aiopg # sqlalchemy -pydantic==1.8.2 +pydantic==1.9.0 # via # -c requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/postgres-database/requirements/../../../requirements/constraints.txt diff --git a/requirements/constraints.txt b/requirements/constraints.txt index 7e83e432636..78fc8c44b4a 100644 --- a/requirements/constraints.txt +++ b/requirements/constraints.txt @@ -41,10 +41,14 @@ minio==7.0.4 # - # Keeps all docker compose to the same version. TODO: remove when all synced docker-compose==1.29.1 + +# tomli<2.0.0,>=0.2.6 (from black==21.12b0->-r requirements/../../../requirements/devenv.txt (line 19)) +tomli<2.0.0 + + # constraint since https://github.com/MagicStack/uvloop/releases/tag/v0.15.0: drops support for 3.5/3.6 Feb.2021 uvloop<0.15.0 ; python_version < '3.7' diff --git a/services/api-server/requirements/_base.txt b/services/api-server/requirements/_base.txt index aeea7cbce0a..df5005a9742 100644 --- a/services/api-server/requirements/_base.txt +++ b/services/api-server/requirements/_base.txt @@ -180,7 +180,7 @@ psycopg2-binary==2.9.1 # sqlalchemy pycparser==2.20 # via cffi -pydantic==1.8.2 +pydantic==1.9.0 # via # -c requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/postgres-database/requirements/../../../requirements/constraints.txt diff --git a/services/api-server/requirements/_test.txt b/services/api-server/requirements/_test.txt index 2ab5b87e72d..6a41077b9d0 100644 --- a/services/api-server/requirements/_test.txt +++ b/services/api-server/requirements/_test.txt @@ -248,7 +248,10 @@ toml==0.10.2 # pylint # pytest tomli==1.2.2 - # via coverage + # via + # -c requirements/../../../packages/postgres-database/requirements/../../../requirements/constraints.txt + # -c requirements/../../../requirements/constraints.txt + # coverage typing-extensions==3.10.0.2 # via # -c requirements/_base.txt diff --git a/services/api-server/requirements/_tools.txt b/services/api-server/requirements/_tools.txt index 951d51ecce4..412e1ccce00 100644 --- a/services/api-server/requirements/_tools.txt +++ b/services/api-server/requirements/_tools.txt @@ -77,6 +77,7 @@ toml==0.10.2 # pre-commit tomli==1.2.2 # via + # -c requirements/../../../requirements/constraints.txt # -c requirements/_test.txt # black # pep517 diff --git a/services/api-server/src/simcore_service_api_server/core/settings.py b/services/api-server/src/simcore_service_api_server/core/settings.py index 81be125255c..e055a561b19 100644 --- a/services/api-server/src/simcore_service_api_server/core/settings.py +++ b/services/api-server/src/simcore_service_api_server/core/settings.py @@ -2,9 +2,8 @@ from typing import Optional from models_library.basic_types import BootModeEnum, LogLevel -from pydantic import Field, SecretStr +from pydantic import AnyHttpUrl, Field, SecretStr from pydantic.class_validators import validator -from pydantic.networks import HttpUrl from settings_library.base import BaseCustomSettings from settings_library.postgres import PostgresSettings from settings_library.tracing import TracingSettings @@ -16,7 +15,7 @@ class _UrlMixin: def _build_url(self, prefix: str) -> str: prefix = prefix.upper() - return HttpUrl.build( + return AnyHttpUrl.build( scheme="http", host=getattr(self, f"{prefix}_HOST"), port=f"{getattr(self, f'{prefix}_PORT')}", diff --git a/services/catalog/requirements/_base.txt b/services/catalog/requirements/_base.txt index 92370c5c28f..73ef57c1008 100644 --- a/services/catalog/requirements/_base.txt +++ b/services/catalog/requirements/_base.txt @@ -115,7 +115,7 @@ psycopg2-binary==2.8.6 # via # aiopg # sqlalchemy -pydantic==1.8.2 +pydantic==1.9.0 # via # -c requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/postgres-database/requirements/../../../requirements/constraints.txt diff --git a/services/dask-sidecar/requirements/_base.txt b/services/dask-sidecar/requirements/_base.txt index 3f3a4abb577..0ccfe060b0f 100644 --- a/services/dask-sidecar/requirements/_base.txt +++ b/services/dask-sidecar/requirements/_base.txt @@ -192,7 +192,7 @@ ptyprocess==0.7.0 # via terminado pycparser==2.20 # via cffi -pydantic==1.8.2 +pydantic==1.9.0 # via # -c requirements/../../../packages/dask-task-models-library/requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/dask-task-models-library/requirements/../../../requirements/constraints.txt diff --git a/services/dask-sidecar/requirements/_packages.txt b/services/dask-sidecar/requirements/_packages.txt index 411e552dc4b..dc09a76f1c0 100644 --- a/services/dask-sidecar/requirements/_packages.txt +++ b/services/dask-sidecar/requirements/_packages.txt @@ -85,7 +85,7 @@ psutil==5.8.0 # via # -c requirements/_base.txt # distributed -pydantic==1.8.2 +pydantic==1.9.0 # via # -c requirements/../../../packages/dask-task-models-library/requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/dask-task-models-library/requirements/../../../requirements/constraints.txt diff --git a/services/datcore-adapter/requirements/_base.txt b/services/datcore-adapter/requirements/_base.txt index eb6cbfbc4c2..59756b1011d 100644 --- a/services/datcore-adapter/requirements/_base.txt +++ b/services/datcore-adapter/requirements/_base.txt @@ -109,7 +109,7 @@ pyasn1==0.4.8 # via # python-jose # rsa -pydantic==1.8.2 +pydantic==1.9.0 # via # -c requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/service-library/requirements/../../../requirements/constraints.txt diff --git a/services/director-v2/requirements/_base.txt b/services/director-v2/requirements/_base.txt index 5ca9fcce531..c5893df88cc 100644 --- a/services/director-v2/requirements/_base.txt +++ b/services/director-v2/requirements/_base.txt @@ -233,7 +233,7 @@ psycopg2-binary==2.9.2 # via # aiopg # sqlalchemy -pydantic==1.8.2 +pydantic==1.9.0 # via # -c requirements/../../../packages/dask-task-models-library/requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/dask-task-models-library/requirements/../../../requirements/constraints.txt diff --git a/services/director-v2/requirements/_test.txt b/services/director-v2/requirements/_test.txt index 9c7950c195b..3d34e437989 100644 --- a/services/director-v2/requirements/_test.txt +++ b/services/director-v2/requirements/_test.txt @@ -4,7 +4,7 @@ # # pip-compile --output-file=requirements/_test.txt --strip-extras requirements/_test.in # -aio_pika==6.8.0 +aio-pika==6.8.0 # via # -c requirements/_base.txt # -r requirements/_test.in diff --git a/services/dynamic-sidecar/requirements/_base.txt b/services/dynamic-sidecar/requirements/_base.txt index dcb8a3933f0..c3590d83f3a 100644 --- a/services/dynamic-sidecar/requirements/_base.txt +++ b/services/dynamic-sidecar/requirements/_base.txt @@ -199,7 +199,7 @@ psycopg2-binary==2.9.1 # sqlalchemy pycparser==2.20 # via cffi -pydantic==1.8.2 +pydantic==1.9.0 # via # -c requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/postgres-database/requirements/../../../requirements/constraints.txt diff --git a/services/storage/requirements/_base.txt b/services/storage/requirements/_base.txt index 203dffbae8d..2d09650f854 100644 --- a/services/storage/requirements/_base.txt +++ b/services/storage/requirements/_base.txt @@ -141,7 +141,7 @@ psycopg2-binary==2.9.1 # via # aiopg # sqlalchemy -pydantic==1.8.2 +pydantic==1.9.0 # via # -c requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/postgres-database/requirements/../../../requirements/constraints.txt diff --git a/services/web/server/requirements/_base.txt b/services/web/server/requirements/_base.txt index 4cd213fafc3..fa32eb63c59 100644 --- a/services/web/server/requirements/_base.txt +++ b/services/web/server/requirements/_base.txt @@ -198,7 +198,7 @@ psycopg2-binary==2.9.1 # sqlalchemy pycparser==2.20 # via cffi -pydantic==1.8.2 +pydantic==1.9.0 # via # -c requirements/../../../../packages/models-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../../packages/postgres-database/requirements/../../../requirements/constraints.txt diff --git a/services/web/server/src/simcore_service_webserver/application.py b/services/web/server/src/simcore_service_webserver/application.py index 6acdbf57836..096543057ab 100644 --- a/services/web/server/src/simcore_service_webserver/application.py +++ b/services/web/server/src/simcore_service_webserver/application.py @@ -6,7 +6,6 @@ from typing import Any, Dict from aiohttp import web -from models_library.rest_pagination import monkey_patch_pydantic_url_regex from servicelib.aiohttp.application import create_safe_application from ._constants import APP_SETTINGS_KEY @@ -43,9 +42,6 @@ from .users import setup_users from .version_control import setup_version_control -monkey_patch_pydantic_url_regex() - - log = logging.getLogger(__name__) diff --git a/tests/environment-setup/requirements/requirements.txt b/tests/environment-setup/requirements/requirements.txt index fcef9fcf65e..70a5e48f1aa 100644 --- a/tests/environment-setup/requirements/requirements.txt +++ b/tests/environment-setup/requirements/requirements.txt @@ -43,7 +43,7 @@ pluggy==1.0.0 # via pytest py==1.11.0 # via pytest -pydantic==1.8.2 +pydantic==1.9.0 # via # -c requirements/../../../packages/service-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/service-library/requirements/_base.in diff --git a/tests/swarm-deploy/requirements/_test.txt b/tests/swarm-deploy/requirements/_test.txt index d9ee5d028e5..55e0497a715 100644 --- a/tests/swarm-deploy/requirements/_test.txt +++ b/tests/swarm-deploy/requirements/_test.txt @@ -152,7 +152,7 @@ psycopg2-binary==2.9.2 # sqlalchemy py==1.11.0 # via pytest -pydantic==1.8.2 +pydantic==1.9.0 # via # -c requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt # -c requirements/../../../packages/service-library/requirements/../../../requirements/constraints.txt