From 326a9e3ce88062c1ea1def55ecb6c8828cb8168d Mon Sep 17 00:00:00 2001 From: Matthew Elwell Date: Thu, 11 Jun 2026 12:09:42 +0100 Subject: [PATCH 1/3] chore(api): Remove uv override-dependencies block MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The `[tool.uv].override-dependencies` block was added during the Poetry to uv migration to keep the lockfile dependency-neutral with the prior `poetry.lock`. With several months of normal upgrades since, the block is now silently capping security updates (most recently Django 5.2.15, which Renovate could not produce a PR for until the Django pin was removed in #7755). Removing the whole block lets uv perform a natural resolution. The resulting `uv.lock` changes are minimal but mixed: - cryptography 46.0.7 -> 43.0.3 (downgrade) - pyopenssl 26.0.0 -> 25.1.0 (downgrade) - pytest 7.2.2 -> 9.0.3 (major bump) - deprecation 2.0.7 -> 2.1.0 - pluggy 1.2.0 -> 1.6.0 - tomli added Opening for discussion before merging — the downgrades suggest something in the dependency graph is capping these packages, which is worth understanding before we remove the override scaffolding. Co-Authored-By: Claude Opus 4.7 (1M context) --- api/pyproject.toml | 258 ------------------------ api/uv.lock | 476 ++++++++++----------------------------------- 2 files changed, 104 insertions(+), 630 deletions(-) diff --git a/api/pyproject.toml b/api/pyproject.toml index a59c0bdbb1a5..3d44938591f2 100644 --- a/api/pyproject.toml +++ b/api/pyproject.toml @@ -159,264 +159,6 @@ clickhouse-driver = { git = "https://github.com/Flagsmith/clickhouse-driver", br [tool.uv] required-version = ">=0.11.18" # Ensure this matches the version in .pre-commit-config.yaml -# Pin every resolved package to the exact version that api/poetry.lock used on -# main before this migration, so the poetry -> uv switch is dependency-neutral. -# Keep this list in sync with poetry.lock until the lockfile churn settles. -override-dependencies = [ - "annotated-types==0.6.0", - "anyio==4.12.1", - "appdirs==1.4.4", - "argcomplete==3.1.2", - "asgiref==3.8.1", - "astroid==2.15.8", - "asttokens==3.0.1", - "async-timeout==4.0.3", - "attrs==23.1.0", - "autopep8==2.0.4", - "backoff==2.2.1", - "black==26.3.1", - "boto3==1.35.95", - "boto3-stubs==1.36.20", - "botocore==1.35.95", - "botocore-stubs==1.36.20", - "cachetools==5.3.1", - "certifi==2024.7.4", - "cffi==2.0.0", - "cfgv==3.4.0", - "chardet==5.2.0", - "chargebee==3.18.2", - "charset-normalizer==3.2.0", - "click==8.1.6", - "colorama==0.4.6", - "coreapi==2.3.3", - "coreschema==0.0.4", - "coverage==7.10.6", - "cryptography==46.0.7", - "datamodel-code-generator==0.25.8", - "decorator==5.2.1", - "defusedxml==0.7.1", - "deprecation==2.0.7", - "diff-cover==10.1.0", - "dill==0.3.8", - "distlib==0.3.9", - "dj-database-url==3.0.1", - "django==5.2.14", - "django-admin-sso==5.2.0", - "django-axes==8.1.0", - "django-cockroachdb==4.2", - "django-cors-headers==3.5.0", - "django-debug-toolbar==6.2.0", - "django-environ==0.4.5", - "django-extensions==3.2.3", - "django-filter==2.4.0", - "django-health-check==3.18.2", - "django-lifecycle==1.2.4", - "django-multiselectfield==1.0.1", - "django-oauth-toolkit==3.1.0", - "django-ordered-model==3.4.3", - "django-python3-ldap==0.16.1", - "django-redis==5.4.0", - "django-ses==3.5.0", - "django-simple-history==2.12.0", - "django-softdelete==0.11.5", - "django-storages==1.10.1", - "django-stubs==5.2.8", - "django-stubs-ext==5.2.8", - "django-test-migrations==1.5.0", - "djangorestframework==3.15.2", - "djangorestframework-api-key==2.2.0", - "djangorestframework-dataclasses==1.3.1", - "djangorestframework-recursive==0.1.2", - "djangorestframework-simplejwt==5.5.1", - "djangorestframework-stubs==3.15.2", - "djoser==2.3.3", - "dnspython==2.6.1", - "drf-nested-routers==0.92.5", - "drf-spectacular==0.28.0", - "drf-writable-nested==0.6.4", - "elementpath==4.1.5", - "email-validator==2.0.0.post2", - "execnet==2.1.1", - "executing==2.2.1", - "fancycompleter==0.9.1", - "filelock==3.20.3", - "flagsmith==5.3.0", - # flagsmith-common version is set via the [project] dependency spec which - # also carries the extras; an override here would strip the extras. - "flagsmith-flag-engine==10.1.0", - "freezegun==1.5.5", - "genson==1.2.2", - "google-api-core==2.29.0", - "google-api-python-client==1.12.11", - "google-auth==2.38.0", - "google-auth-httplib2==0.1.0", - "google-re2==1.1.20251105", - "googleapis-common-protos==1.72.0", - "gunicorn==23.0.0", - "h11==0.16.0", - "httpcore==1.0.9", - "httplib2==0.22.0", - "httpx==0.28.1", - "hubspot-api-client==12.0.0", - "identify==2.6.3", - "importlib-metadata==8.7.1", - "inflect==5.6.2", - "inflection==0.5.1", - "influxdb-client==1.50.0", - "iniconfig==2.0.0", - "ipython==9.10.0", - "ipython-pygments-lexers==1.1.1", - "iregexp-check==0.1.4", - "isort==5.12.0", - "itypes==1.2.0", - "jedi==0.19.2", - "jinja2==3.1.6", - "jmespath==1.0.1", - "jsonpath-rfc9535==0.2.0", - "jsonschema==4.25.1", - "jsonschema-specifications==2025.9.1", - "jwcrypto==1.5.6", - "lazy-object-proxy==1.10.0", - "ldap3==2.9.1", - "markupsafe==2.1.3", - "marshmallow==3.26.2", - "matplotlib-inline==0.2.1", - "mccabe==0.7.0", - "monotonic==1.6", - "moto==4.1.14", - "mypy==1.15.0", - "mypy-boto3-dynamodb==1.33.0", - "mypy-extensions==1.0.0", - "nodeenv==1.9.1", - "oauth2client==4.1.3", - "oauthlib==3.2.2", - "openfeature-provider-flagsmith==0.2.0", - "openfeature-sdk==0.9.0", - "opentelemetry-api==1.40.0", - "opentelemetry-exporter-otlp-proto-common==1.40.0", - "opentelemetry-exporter-otlp-proto-http==1.40.0", - "opentelemetry-instrumentation==0.61b0", - "opentelemetry-instrumentation-dbapi==0.61b0", - "opentelemetry-instrumentation-django==0.61b0", - "opentelemetry-instrumentation-psycopg2==0.61b0", - "opentelemetry-instrumentation-redis==0.61b0", - "opentelemetry-instrumentation-wsgi==0.61b0", - "opentelemetry-proto==1.40.0", - "opentelemetry-sdk==1.40.0", - "opentelemetry-semantic-conventions==0.61b0", - "opentelemetry-util-http==0.61b0", - "packaging==25.0", - "parso==0.8.5", - "pathspec==1.0.4", - "pdbpp==0.10.3", - "pep8==1.7.1", - "pexpect==4.9.0", - "platformdirs==3.10.0", - "pluggy==1.2.0", - "pre-commit==4.0.1", - "prometheus-client==0.21.1", - "prompt-toolkit==3.0.52", - "proto-plus==1.27.1", - "protobuf==6.33.5", - "psycopg2-binary==2.9.11", - "ptyprocess==0.7.0", - "pure-eval==0.2.3", - "pyasn1==0.6.3", - "pyasn1-modules==0.4.2", - "pycodestyle==2.12.0", - "pycparser==2.21", - "pydantic==2.12.5", - "pydantic-collections==0.6.0", - "pydantic-core==2.41.5", - "pyfakefs==5.7.4", - "pygithub==2.8.1", - "pygments==2.19.2", - "pylint==2.16.4", - "pymemcache==4.0.0", - "pynacl==1.6.2", - "pyngo==2.4.1", - "pyopenssl==26.0.0", - "pyotp==2.9.0", - "pyparsing==2.4.7", - "pyreadline==2.1", - "pyrepl==0.9.0", - "pysaml2==7.4.2", - "pytest==7.2.2", - "pytest-cov==4.1.0", - "pytest-django==4.8.0", - "pytest-freezegun==0.4.2", - "pytest-lazy-fixture==0.6.3", - "pytest-mock==3.10.0", - "pytest-responses==0.5.1", - "pytest-structlog==1.1", - "pytest-xdist==3.6.1", - "python-dateutil==2.8.2", - "python-gnupg==0.5.1", - "python-http-client==3.3.7", - "python3-openid==3.2.0", - "pytokens==0.4.1", - "pytz==2023.4", - "pyyaml==6.0.1", - "reactivex==4.1.0", - "redis==5.0.1", - "referencing==0.37.0", - "regex==2026.2.19", - "requests==2.33.0", - "requests-futures==1.0.1", - "requests-mock==1.11.0", - "requests-oauthlib==1.3.1", - "responses==0.22.0", - "rpds-py==0.30.0", - "rsa==4.9", - "ruff==0.9.7", - "s3transfer==0.10.4", - "segment-analytics-python==2.2.3", - "semver==3.0.4", - "sendgrid==3.6.5", - "sendgrid-django==4.2.0", - "sentry-sdk==2.53.0", - "setuptools==80.10.2", - "shortuuid==1.0.11", - "simplejson==3.19.1", - "six==1.16.0", - "slack-sdk==3.9.1", - "social-auth-app-django==5.6.0", - "social-auth-core==4.4.2", - "sqlparse==0.5.4", - "sseclient-py==1.8.0", - "stack-data==0.6.3", - "structlog==24.4.0", - "toml==0.10.2", - "tomlkit==0.13.0", - "traitlets==5.14.3", - "types-awscrt==0.23.10", - "types-docutils==0.21.0.20241128", - "types-influxdb-client==1.45.0.20241221", - "types-markdown==3.7.0.20241204", - "types-psycopg2==2.9.21.20250121", - "types-pygments==2.19.0.20250107", - "types-python-dateutil==2.9.0.20241206", - "types-pytz==2025.1.0.20250204", - "types-pyyaml==6.0.12.20241230", - "types-requests==2.32.0.20241016", - "types-s3transfer==0.11.2", - "types-setuptools==75.8.0.20250210", - "types-toml==0.10.8.7", - "typing-extensions==4.15.0", - "typing-inspection==0.4.2", - "tzdata==2024.1", - "uritemplate==3.0.1", - "urllib3==2.7.0", - "virtualenv==20.36.1", - "wcwidth==0.5.3", - "werkzeug==3.1.6", - "whitenoise==6.0.0", - "wmctrl==0.5", - "wrapt==1.15.0", - "xmlschema==2.4.0", - "xmltodict==0.13.0", - "zipp==3.23.0", -] [tool.ruff] line-length = 88 diff --git a/api/uv.lock b/api/uv.lock index b1af3ddd0ece..67822b52abf8 100644 --- a/api/uv.lock +++ b/api/uv.lock @@ -1,269 +1,16 @@ version = 1 revision = 3 requires-python = ">=3.11, <3.14" - -[manifest] -overrides = [ - { name = "annotated-types", specifier = "==0.6.0" }, - { name = "anyio", specifier = "==4.12.1" }, - { name = "appdirs", specifier = "==1.4.4" }, - { name = "argcomplete", specifier = "==3.1.2" }, - { name = "asgiref", specifier = "==3.8.1" }, - { name = "astroid", specifier = "==2.15.8" }, - { name = "asttokens", specifier = "==3.0.1" }, - { name = "async-timeout", specifier = "==4.0.3" }, - { name = "attrs", specifier = "==23.1.0" }, - { name = "autopep8", specifier = "==2.0.4" }, - { name = "backoff", specifier = "==2.2.1" }, - { name = "black", specifier = "==26.3.1" }, - { name = "boto3", specifier = "==1.35.95" }, - { name = "boto3-stubs", specifier = "==1.36.20" }, - { name = "botocore", specifier = "==1.35.95" }, - { name = "botocore-stubs", specifier = "==1.36.20" }, - { name = "cachetools", specifier = "==5.3.1" }, - { name = "certifi", specifier = "==2024.7.4" }, - { name = "cffi", specifier = "==2.0.0" }, - { name = "cfgv", specifier = "==3.4.0" }, - { name = "chardet", specifier = "==5.2.0" }, - { name = "chargebee", specifier = "==3.18.2" }, - { name = "charset-normalizer", specifier = "==3.2.0" }, - { name = "click", specifier = "==8.1.6" }, - { name = "colorama", specifier = "==0.4.6" }, - { name = "coreapi", specifier = "==2.3.3" }, - { name = "coreschema", specifier = "==0.0.4" }, - { name = "coverage", specifier = "==7.10.6" }, - { name = "cryptography", specifier = "==46.0.7" }, - { name = "datamodel-code-generator", specifier = "==0.25.8" }, - { name = "decorator", specifier = "==5.2.1" }, - { name = "defusedxml", specifier = "==0.7.1" }, - { name = "deprecation", specifier = "==2.0.7" }, - { name = "diff-cover", specifier = "==10.1.0" }, - { name = "dill", specifier = "==0.3.8" }, - { name = "distlib", specifier = "==0.3.9" }, - { name = "dj-database-url", specifier = "==3.0.1" }, - { name = "django", specifier = "==5.2.14" }, - { name = "django-admin-sso", specifier = "==5.2.0" }, - { name = "django-axes", specifier = "==8.1.0" }, - { name = "django-cockroachdb", specifier = "==4.2" }, - { name = "django-cors-headers", specifier = "==3.5.0" }, - { name = "django-debug-toolbar", specifier = "==6.2.0" }, - { name = "django-environ", specifier = "==0.4.5" }, - { name = "django-extensions", specifier = "==3.2.3" }, - { name = "django-filter", specifier = "==2.4.0" }, - { name = "django-health-check", specifier = "==3.18.2" }, - { name = "django-lifecycle", specifier = "==1.2.4" }, - { name = "django-multiselectfield", specifier = "==1.0.1" }, - { name = "django-oauth-toolkit", specifier = "==3.1.0" }, - { name = "django-ordered-model", specifier = "==3.4.3" }, - { name = "django-python3-ldap", specifier = "==0.16.1" }, - { name = "django-redis", specifier = "==5.4.0" }, - { name = "django-ses", specifier = "==3.5.0" }, - { name = "django-simple-history", specifier = "==2.12.0" }, - { name = "django-softdelete", specifier = "==0.11.5" }, - { name = "django-storages", specifier = "==1.10.1" }, - { name = "django-stubs", specifier = "==5.2.8" }, - { name = "django-stubs-ext", specifier = "==5.2.8" }, - { name = "django-test-migrations", specifier = "==1.5.0" }, - { name = "djangorestframework", specifier = "==3.15.2" }, - { name = "djangorestframework-api-key", specifier = "==2.2.0" }, - { name = "djangorestframework-dataclasses", specifier = "==1.3.1" }, - { name = "djangorestframework-recursive", specifier = "==0.1.2" }, - { name = "djangorestframework-simplejwt", specifier = "==5.5.1" }, - { name = "djangorestframework-stubs", specifier = "==3.15.2" }, - { name = "djoser", specifier = "==2.3.3" }, - { name = "dnspython", specifier = "==2.6.1" }, - { name = "drf-nested-routers", specifier = "==0.92.5" }, - { name = "drf-spectacular", specifier = "==0.28.0" }, - { name = "drf-writable-nested", specifier = "==0.6.4" }, - { name = "elementpath", specifier = "==4.1.5" }, - { name = "email-validator", specifier = "==2.0.0.post2" }, - { name = "execnet", specifier = "==2.1.1" }, - { name = "executing", specifier = "==2.2.1" }, - { name = "fancycompleter", specifier = "==0.9.1" }, - { name = "filelock", specifier = "==3.20.3" }, - { name = "flagsmith", specifier = "==5.3.0" }, - { name = "flagsmith-flag-engine", specifier = "==10.1.0" }, - { name = "freezegun", specifier = "==1.5.5" }, - { name = "genson", specifier = "==1.2.2" }, - { name = "google-api-core", specifier = "==2.29.0" }, - { name = "google-api-python-client", specifier = "==1.12.11" }, - { name = "google-auth", specifier = "==2.38.0" }, - { name = "google-auth-httplib2", specifier = "==0.1.0" }, - { name = "google-re2", specifier = "==1.1.20251105" }, - { name = "googleapis-common-protos", specifier = "==1.72.0" }, - { name = "gunicorn", specifier = "==23.0.0" }, - { name = "h11", specifier = "==0.16.0" }, - { name = "httpcore", specifier = "==1.0.9" }, - { name = "httplib2", specifier = "==0.22.0" }, - { name = "httpx", specifier = "==0.28.1" }, - { name = "hubspot-api-client", specifier = "==12.0.0" }, - { name = "identify", specifier = "==2.6.3" }, - { name = "importlib-metadata", specifier = "==8.7.1" }, - { name = "inflect", specifier = "==5.6.2" }, - { name = "inflection", specifier = "==0.5.1" }, - { name = "influxdb-client", specifier = "==1.50.0" }, - { name = "iniconfig", specifier = "==2.0.0" }, - { name = "ipython", specifier = "==9.10.0" }, - { name = "ipython-pygments-lexers", specifier = "==1.1.1" }, - { name = "iregexp-check", specifier = "==0.1.4" }, - { name = "isort", specifier = "==5.12.0" }, - { name = "itypes", specifier = "==1.2.0" }, - { name = "jedi", specifier = "==0.19.2" }, - { name = "jinja2", specifier = "==3.1.6" }, - { name = "jmespath", specifier = "==1.0.1" }, - { name = "jsonpath-rfc9535", specifier = "==0.2.0" }, - { name = "jsonschema", specifier = "==4.25.1" }, - { name = "jsonschema-specifications", specifier = "==2025.9.1" }, - { name = "jwcrypto", specifier = "==1.5.6" }, - { name = "lazy-object-proxy", specifier = "==1.10.0" }, - { name = "ldap3", specifier = "==2.9.1" }, - { name = "markupsafe", specifier = "==2.1.3" }, - { name = "marshmallow", specifier = "==3.26.2" }, - { name = "matplotlib-inline", specifier = "==0.2.1" }, - { name = "mccabe", specifier = "==0.7.0" }, - { name = "monotonic", specifier = "==1.6" }, - { name = "moto", specifier = "==4.1.14" }, - { name = "mypy", specifier = "==1.15.0" }, - { name = "mypy-boto3-dynamodb", specifier = "==1.33.0" }, - { name = "mypy-extensions", specifier = "==1.0.0" }, - { name = "nodeenv", specifier = "==1.9.1" }, - { name = "oauth2client", specifier = "==4.1.3" }, - { name = "oauthlib", specifier = "==3.2.2" }, - { name = "openfeature-provider-flagsmith", specifier = "==0.2.0" }, - { name = "openfeature-sdk", specifier = "==0.9.0" }, - { name = "opentelemetry-api", specifier = "==1.40.0" }, - { name = "opentelemetry-exporter-otlp-proto-common", specifier = "==1.40.0" }, - { name = "opentelemetry-exporter-otlp-proto-http", specifier = "==1.40.0" }, - { name = "opentelemetry-instrumentation", specifier = "==0.61b0" }, - { name = "opentelemetry-instrumentation-dbapi", specifier = "==0.61b0" }, - { name = "opentelemetry-instrumentation-django", specifier = "==0.61b0" }, - { name = "opentelemetry-instrumentation-psycopg2", specifier = "==0.61b0" }, - { name = "opentelemetry-instrumentation-redis", specifier = "==0.61b0" }, - { name = "opentelemetry-instrumentation-wsgi", specifier = "==0.61b0" }, - { name = "opentelemetry-proto", specifier = "==1.40.0" }, - { name = "opentelemetry-sdk", specifier = "==1.40.0" }, - { name = "opentelemetry-semantic-conventions", specifier = "==0.61b0" }, - { name = "opentelemetry-util-http", specifier = "==0.61b0" }, - { name = "packaging", specifier = "==25.0" }, - { name = "parso", specifier = "==0.8.5" }, - { name = "pathspec", specifier = "==1.0.4" }, - { name = "pdbpp", specifier = "==0.10.3" }, - { name = "pep8", specifier = "==1.7.1" }, - { name = "pexpect", specifier = "==4.9.0" }, - { name = "platformdirs", specifier = "==3.10.0" }, - { name = "pluggy", specifier = "==1.2.0" }, - { name = "pre-commit", specifier = "==4.0.1" }, - { name = "prometheus-client", specifier = "==0.21.1" }, - { name = "prompt-toolkit", specifier = "==3.0.52" }, - { name = "proto-plus", specifier = "==1.27.1" }, - { name = "protobuf", specifier = "==6.33.5" }, - { name = "psycopg2-binary", specifier = "==2.9.11" }, - { name = "ptyprocess", specifier = "==0.7.0" }, - { name = "pure-eval", specifier = "==0.2.3" }, - { name = "pyasn1", specifier = "==0.6.3" }, - { name = "pyasn1-modules", specifier = "==0.4.2" }, - { name = "pycodestyle", specifier = "==2.12.0" }, - { name = "pycparser", specifier = "==2.21" }, - { name = "pydantic", specifier = "==2.12.5" }, - { name = "pydantic-collections", specifier = "==0.6.0" }, - { name = "pydantic-core", specifier = "==2.41.5" }, - { name = "pyfakefs", specifier = "==5.7.4" }, - { name = "pygithub", specifier = "==2.8.1" }, - { name = "pygments", specifier = "==2.19.2" }, - { name = "pylint", specifier = "==2.16.4" }, - { name = "pymemcache", specifier = "==4.0.0" }, - { name = "pynacl", specifier = "==1.6.2" }, - { name = "pyngo", specifier = "==2.4.1" }, - { name = "pyopenssl", specifier = "==26.0.0" }, - { name = "pyotp", specifier = "==2.9.0" }, - { name = "pyparsing", specifier = "==2.4.7" }, - { name = "pyreadline", specifier = "==2.1" }, - { name = "pyrepl", specifier = "==0.9.0" }, - { name = "pysaml2", specifier = "==7.4.2" }, - { name = "pytest", specifier = "==7.2.2" }, - { name = "pytest-cov", specifier = "==4.1.0" }, - { name = "pytest-django", specifier = "==4.8.0" }, - { name = "pytest-freezegun", specifier = "==0.4.2" }, - { name = "pytest-lazy-fixture", specifier = "==0.6.3" }, - { name = "pytest-mock", specifier = "==3.10.0" }, - { name = "pytest-responses", specifier = "==0.5.1" }, - { name = "pytest-structlog", specifier = "==1.1" }, - { name = "pytest-xdist", specifier = "==3.6.1" }, - { name = "python-dateutil", specifier = "==2.8.2" }, - { name = "python-gnupg", specifier = "==0.5.1" }, - { name = "python-http-client", specifier = "==3.3.7" }, - { name = "python3-openid", specifier = "==3.2.0" }, - { name = "pytokens", specifier = "==0.4.1" }, - { name = "pytz", specifier = "==2023.4" }, - { name = "pyyaml", specifier = "==6.0.1" }, - { name = "reactivex", specifier = "==4.1.0" }, - { name = "redis", specifier = "==5.0.1" }, - { name = "referencing", specifier = "==0.37.0" }, - { name = "regex", specifier = "==2026.2.19" }, - { name = "requests", specifier = "==2.33.0" }, - { name = "requests-futures", specifier = "==1.0.1" }, - { name = "requests-mock", specifier = "==1.11.0" }, - { name = "requests-oauthlib", specifier = "==1.3.1" }, - { name = "responses", specifier = "==0.22.0" }, - { name = "rpds-py", specifier = "==0.30.0" }, - { name = "rsa", specifier = "==4.9" }, - { name = "ruff", specifier = "==0.9.7" }, - { name = "s3transfer", specifier = "==0.10.4" }, - { name = "segment-analytics-python", specifier = "==2.2.3" }, - { name = "semver", specifier = "==3.0.4" }, - { name = "sendgrid", specifier = "==3.6.5" }, - { name = "sendgrid-django", specifier = "==4.2.0" }, - { name = "sentry-sdk", specifier = "==2.53.0" }, - { name = "setuptools", specifier = "==80.10.2" }, - { name = "shortuuid", specifier = "==1.0.11" }, - { name = "simplejson", specifier = "==3.19.1" }, - { name = "six", specifier = "==1.16.0" }, - { name = "slack-sdk", specifier = "==3.9.1" }, - { name = "social-auth-app-django", specifier = "==5.6.0" }, - { name = "social-auth-core", specifier = "==4.4.2" }, - { name = "sqlparse", specifier = "==0.5.4" }, - { name = "sseclient-py", specifier = "==1.8.0" }, - { name = "stack-data", specifier = "==0.6.3" }, - { name = "structlog", specifier = "==24.4.0" }, - { name = "toml", specifier = "==0.10.2" }, - { name = "tomlkit", specifier = "==0.13.0" }, - { name = "traitlets", specifier = "==5.14.3" }, - { name = "types-awscrt", specifier = "==0.23.10" }, - { name = "types-docutils", specifier = "==0.21.0.20241128" }, - { name = "types-influxdb-client", specifier = "==1.45.0.20241221" }, - { name = "types-markdown", specifier = "==3.7.0.20241204" }, - { name = "types-psycopg2", specifier = "==2.9.21.20250121" }, - { name = "types-pygments", specifier = "==2.19.0.20250107" }, - { name = "types-python-dateutil", specifier = "==2.9.0.20241206" }, - { name = "types-pytz", specifier = "==2025.1.0.20250204" }, - { name = "types-pyyaml", specifier = "==6.0.12.20241230" }, - { name = "types-requests", specifier = "==2.32.0.20241016" }, - { name = "types-s3transfer", specifier = "==0.11.2" }, - { name = "types-setuptools", specifier = "==75.8.0.20250210" }, - { name = "types-toml", specifier = "==0.10.8.7" }, - { name = "typing-extensions", specifier = "==4.15.0" }, - { name = "typing-inspection", specifier = "==0.4.2" }, - { name = "tzdata", specifier = "==2024.1" }, - { name = "uritemplate", specifier = "==3.0.1" }, - { name = "urllib3", specifier = "==2.7.0" }, - { name = "virtualenv", specifier = "==20.36.1" }, - { name = "wcwidth", specifier = "==0.5.3" }, - { name = "werkzeug", specifier = "==3.1.6" }, - { name = "whitenoise", specifier = "==6.0.0" }, - { name = "wmctrl", specifier = "==0.5" }, - { name = "wrapt", specifier = "==1.15.0" }, - { name = "xmlschema", specifier = "==2.4.0" }, - { name = "xmltodict", specifier = "==0.13.0" }, - { name = "zipp", specifier = "==3.23.0" }, +resolution-markers = [ + "python_full_version >= '3.13'", + "python_full_version == '3.12.*'", + "python_full_version < '3.12'", ] [[package]] name = "annotated-types" version = "0.6.0" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "typing-extensions" }, -] sdist = { url = "https://files.pythonhosted.org/packages/67/fe/8c7b275824c6d2cd17c93ee85d0ee81c090285b6d52f4876ccc47cf9c3c4/annotated_types-0.6.0.tar.gz", hash = "sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d", size = 14670, upload-time = "2023-10-06T18:53:19.389Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/28/78/d31230046e58c207284c6b2c4e8d96e6d3cb4e52354721b944d3e1ee4aa5/annotated_types-0.6.0-py3-none-any.whl", hash = "sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43", size = 12360, upload-time = "2023-10-06T18:53:18.027Z" }, @@ -275,7 +22,7 @@ version = "4.12.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "idna" }, - { name = "typing-extensions" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/96/f0/5eb65b2bb0d09ac6776f2eb54adee6abe8228ea05b20a5ad0e4945de8aac/anyio-4.12.1.tar.gz", hash = "sha256:41cfcc3a4c85d3f05c932da7c26d0201ac36f72abd4435ba90d0464a3ffed703", size = 228685, upload-time = "2026-01-06T11:45:21.246Z" } wheels = [ @@ -295,9 +42,6 @@ wheels = [ name = "argcomplete" version = "3.1.2" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "importlib-metadata" }, -] sdist = { url = "https://files.pythonhosted.org/packages/1b/c5/fb934dda06057e182f8247b2b13a281552cf55ba2b8b4450f6e003d0469f/argcomplete-3.1.2.tar.gz", hash = "sha256:d5d1e5efd41435260b8f85673b74ea2e883affcbec9f4230c582689e8e78251b", size = 89541, upload-time = "2023-09-16T20:40:27.04Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/1e/05/223116a4a5905d6b26bff334ffc7b74474fafe23fcb10532caf0ef86ca69/argcomplete-3.1.2-py3-none-any.whl", hash = "sha256:d97c036d12a752d1079f190bc1521c545b941fda89ad85d15afa909b4d1b9a99", size = 41514, upload-time = "2023-09-16T20:40:25.393Z" }, @@ -307,9 +51,6 @@ wheels = [ name = "asgiref" version = "3.8.1" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "typing-extensions" }, -] sdist = { url = "https://files.pythonhosted.org/packages/29/38/b3395cc9ad1b56d2ddac9970bc8f4141312dbaec28bc7c218b0dfafd0f42/asgiref-3.8.1.tar.gz", hash = "sha256:c343bd80a0bec947a9860adb4c432ffa7db769836c64238fc34bdc3fec84d590", size = 35186, upload-time = "2024-03-22T14:39:36.863Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/39/e3/893e8757be2612e6c266d9bb58ad2e3651524b5b40cf56761e985a28b13e/asgiref-3.8.1-py3-none-any.whl", hash = "sha256:3e1e3ecc849832fe52ccf2cb6686b7a55f82bb1d6aee72a58826471390335e47", size = 23828, upload-time = "2024-03-22T14:39:34.521Z" }, @@ -321,7 +62,6 @@ version = "2.15.8" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "lazy-object-proxy" }, - { name = "typing-extensions" }, { name = "wrapt" }, ] sdist = { url = "https://files.pythonhosted.org/packages/58/3d/c18b0854d0d2eb3aca20c149cff5c90e6b84a5366066768d98636f5045ed/astroid-2.15.8.tar.gz", hash = "sha256:6c107453dffee9055899705de3c9ead36e74119cee151e5a9aaf7f0b0e020a6a", size = 344362, upload-time = "2023-09-26T12:40:28.546Z" } @@ -342,9 +82,6 @@ wheels = [ name = "async-timeout" version = "4.0.3" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "typing-extensions" }, -] sdist = { url = "https://files.pythonhosted.org/packages/87/d6/21b30a550dafea84b1b8eee21b5e23fa16d010ae006011221f33dcd8d7f8/async-timeout-4.0.3.tar.gz", hash = "sha256:4640d96be84d82d02ed59ea2b7105a0f7b33abe8703703cd0ab0bf87c427522f", size = 8345, upload-time = "2023-08-10T16:35:56.907Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/a7/fa/e01228c2938de91d47b307831c62ab9e4001e747789d0b05baf779a6488c/async_timeout-4.0.3-py3-none-any.whl", hash = "sha256:7405140ff1230c310e51dc27b3145b9092d659ce68ff733fb0cefe3ee42be028", size = 5721, upload-time = "2023-08-10T16:35:55.203Z" }, @@ -354,9 +91,6 @@ wheels = [ name = "attrs" version = "23.1.0" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "importlib-metadata" }, -] sdist = { url = "https://files.pythonhosted.org/packages/97/90/81f95d5f705be17872843536b1868f351805acf6971251ff07c1b8334dbb/attrs-23.1.0.tar.gz", hash = "sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015", size = 212878, upload-time = "2023-04-16T10:48:18.214Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/f0/eb/fcb708c7bf5056045e9e98f62b93bd7467eb718b0202e7698eb11d66416c/attrs-23.1.0-py3-none-any.whl", hash = "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04", size = 61160, upload-time = "2023-04-16T10:48:16.358Z" }, @@ -394,7 +128,6 @@ dependencies = [ { name = "pathspec" }, { name = "platformdirs" }, { name = "pytokens" }, - { name = "typing-extensions" }, ] sdist = { url = "https://files.pythonhosted.org/packages/e1/c5/61175d618685d42b005847464b8fb4743a67b1b8fdb75e50e5a96c31a27a/black-26.3.1.tar.gz", hash = "sha256:2c50f5063a9641c7eed7795014ba37b0f5fa227f3d408b968936e24bc0566b07", size = 666155, upload-time = "2026-03-12T03:36:03.593Z" } wheels = [ @@ -437,7 +170,7 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "botocore-stubs" }, { name = "types-s3transfer" }, - { name = "typing-extensions" }, + { name = "typing-extensions", marker = "python_full_version < '3.12'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/e2/d2/c452e9b3e119577a2ccf4fe1f10623318d4df44bc016d4e350ba2d7e05c5/boto3_stubs-1.36.20.tar.gz", hash = "sha256:04aa881969c20d1992e81a4b4674f2a9b1c5f2b2dbfe5bafae4903264f970fb1", size = 98633, upload-time = "2025-02-14T11:25:28.243Z" } wheels = [ @@ -493,7 +226,7 @@ name = "cffi" version = "2.0.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "pycparser" }, + { name = "pycparser", marker = "implementation_name != 'PyPy'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/eb/56/b1ba7935a17738ae8453301356628e8147c79dbb825bcbc73dc7401f9846/cffi-2.0.0.tar.gz", hash = "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529", size = 523588, upload-time = "2025-09-08T23:24:04.541Z" } wheels = [ @@ -595,8 +328,7 @@ name = "click" version = "8.1.6" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "colorama" }, - { name = "importlib-metadata" }, + { name = "colorama", marker = "sys_platform == 'win32'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/72/bd/fedc277e7351917b6c4e0ac751853a97af261278a4c7808babafa8ef2120/click-8.1.6.tar.gz", hash = "sha256:48ee849951919527a045bfe3bf7baa8a959c423134e1a5b98c05c20ba75a1cbd", size = 336051, upload-time = "2023-07-18T20:05:13.823Z" } wheels = [ @@ -698,50 +430,38 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/44/0c/50db5379b615854b5cf89146f8f5bd1d5a9693d7f3a987e269693521c404/coverage-7.10.6-py3-none-any.whl", hash = "sha256:92c4ecf6bf11b2e85fd4d8204814dc26e6a19f0c9d938c207c5cb0eadfcabbe3", size = 208986, upload-time = "2025-08-29T15:35:14.506Z" }, ] +[package.optional-dependencies] +toml = [ + { name = "tomli", marker = "python_full_version <= '3.11'" }, +] + [[package]] name = "cryptography" -version = "46.0.7" +version = "43.0.3" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "cffi" }, - { name = "typing-extensions" }, + { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/47/93/ac8f3d5ff04d54bc814e961a43ae5b0b146154c89c61b47bb07557679b18/cryptography-46.0.7.tar.gz", hash = "sha256:e4cfd68c5f3e0bfdad0d38e023239b96a2fe84146481852dffbcca442c245aa5", size = 750652, upload-time = "2026-04-08T01:57:54.692Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0b/5d/4a8f770695d73be252331e60e526291e3df0c9b27556a90a6b47bccca4c2/cryptography-46.0.7-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:ea42cbe97209df307fdc3b155f1b6fa2577c0defa8f1f7d3be7d31d189108ad4", size = 7179869, upload-time = "2026-04-08T01:56:17.157Z" }, - { url = "https://files.pythonhosted.org/packages/5f/45/6d80dc379b0bbc1f9d1e429f42e4cb9e1d319c7a8201beffd967c516ea01/cryptography-46.0.7-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b36a4695e29fe69215d75960b22577197aca3f7a25b9cf9d165dcfe9d80bc325", size = 4275492, upload-time = "2026-04-08T01:56:19.36Z" }, - { url = "https://files.pythonhosted.org/packages/4a/9a/1765afe9f572e239c3469f2cb429f3ba7b31878c893b246b4b2994ffe2fe/cryptography-46.0.7-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5ad9ef796328c5e3c4ceed237a183f5d41d21150f972455a9d926593a1dcb308", size = 4426670, upload-time = "2026-04-08T01:56:21.415Z" }, - { url = "https://files.pythonhosted.org/packages/8f/3e/af9246aaf23cd4ee060699adab1e47ced3f5f7e7a8ffdd339f817b446462/cryptography-46.0.7-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:73510b83623e080a2c35c62c15298096e2a5dc8d51c3b4e1740211839d0dea77", size = 4280275, upload-time = "2026-04-08T01:56:23.539Z" }, - { url = "https://files.pythonhosted.org/packages/0f/54/6bbbfc5efe86f9d71041827b793c24811a017c6ac0fd12883e4caa86b8ed/cryptography-46.0.7-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:cbd5fb06b62bd0721e1170273d3f4d5a277044c47ca27ee257025146c34cbdd1", size = 4928402, upload-time = "2026-04-08T01:56:25.624Z" }, - { url = "https://files.pythonhosted.org/packages/2d/cf/054b9d8220f81509939599c8bdbc0c408dbd2bdd41688616a20731371fe0/cryptography-46.0.7-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:420b1e4109cc95f0e5700eed79908cef9268265c773d3a66f7af1eef53d409ef", size = 4459985, upload-time = "2026-04-08T01:56:27.309Z" }, - { url = "https://files.pythonhosted.org/packages/f9/46/4e4e9c6040fb01c7467d47217d2f882daddeb8828f7df800cb806d8a2288/cryptography-46.0.7-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:24402210aa54baae71d99441d15bb5a1919c195398a87b563df84468160a65de", size = 3990652, upload-time = "2026-04-08T01:56:29.095Z" }, - { url = "https://files.pythonhosted.org/packages/36/5f/313586c3be5a2fbe87e4c9a254207b860155a8e1f3cca99f9910008e7d08/cryptography-46.0.7-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:8a469028a86f12eb7d2fe97162d0634026d92a21f3ae0ac87ed1c4a447886c83", size = 4279805, upload-time = "2026-04-08T01:56:30.928Z" }, - { url = "https://files.pythonhosted.org/packages/69/33/60dfc4595f334a2082749673386a4d05e4f0cf4df8248e63b2c3437585f2/cryptography-46.0.7-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:9694078c5d44c157ef3162e3bf3946510b857df5a3955458381d1c7cfc143ddb", size = 4892883, upload-time = "2026-04-08T01:56:32.614Z" }, - { url = "https://files.pythonhosted.org/packages/c7/0b/333ddab4270c4f5b972f980adef4faa66951a4aaf646ca067af597f15563/cryptography-46.0.7-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:42a1e5f98abb6391717978baf9f90dc28a743b7d9be7f0751a6f56a75d14065b", size = 4459756, upload-time = "2026-04-08T01:56:34.306Z" }, - { url = "https://files.pythonhosted.org/packages/d2/14/633913398b43b75f1234834170947957c6b623d1701ffc7a9600da907e89/cryptography-46.0.7-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:91bbcb08347344f810cbe49065914fe048949648f6bd5c2519f34619142bbe85", size = 4410244, upload-time = "2026-04-08T01:56:35.977Z" }, - { url = "https://files.pythonhosted.org/packages/10/f2/19ceb3b3dc14009373432af0c13f46aa08e3ce334ec6eff13492e1812ccd/cryptography-46.0.7-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5d1c02a14ceb9148cc7816249f64f623fbfee39e8c03b3650d842ad3f34d637e", size = 4674868, upload-time = "2026-04-08T01:56:38.034Z" }, - { url = "https://files.pythonhosted.org/packages/1a/bb/a5c213c19ee94b15dfccc48f363738633a493812687f5567addbcbba9f6f/cryptography-46.0.7-cp311-abi3-win32.whl", hash = "sha256:d23c8ca48e44ee015cd0a54aeccdf9f09004eba9fc96f38c911011d9ff1bd457", size = 3026504, upload-time = "2026-04-08T01:56:39.666Z" }, - { url = "https://files.pythonhosted.org/packages/2b/02/7788f9fefa1d060ca68717c3901ae7fffa21ee087a90b7f23c7a603c32ae/cryptography-46.0.7-cp311-abi3-win_amd64.whl", hash = "sha256:397655da831414d165029da9bc483bed2fe0e75dde6a1523ec2fe63f3c46046b", size = 3488363, upload-time = "2026-04-08T01:56:41.893Z" }, - { url = "https://files.pythonhosted.org/packages/a7/7f/cd42fc3614386bc0c12f0cb3c4ae1fc2bbca5c9662dfed031514911d513d/cryptography-46.0.7-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:462ad5cb1c148a22b2e3bcc5ad52504dff325d17daf5df8d88c17dda1f75f2a4", size = 7165618, upload-time = "2026-04-08T01:57:10.645Z" }, - { url = "https://files.pythonhosted.org/packages/a5/d0/36a49f0262d2319139d2829f773f1b97ef8aef7f97e6e5bd21455e5a8fb5/cryptography-46.0.7-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:84d4cced91f0f159a7ddacad249cc077e63195c36aac40b4150e7a57e84fffe7", size = 4270628, upload-time = "2026-04-08T01:57:12.885Z" }, - { url = "https://files.pythonhosted.org/packages/8a/6c/1a42450f464dda6ffbe578a911f773e54dd48c10f9895a23a7e88b3e7db5/cryptography-46.0.7-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:128c5edfe5e5938b86b03941e94fac9ee793a94452ad1365c9fc3f4f62216832", size = 4415405, upload-time = "2026-04-08T01:57:14.923Z" }, - { url = "https://files.pythonhosted.org/packages/9a/92/4ed714dbe93a066dc1f4b4581a464d2d7dbec9046f7c8b7016f5286329e2/cryptography-46.0.7-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:5e51be372b26ef4ba3de3c167cd3d1022934bc838ae9eaad7e644986d2a3d163", size = 4272715, upload-time = "2026-04-08T01:57:16.638Z" }, - { url = "https://files.pythonhosted.org/packages/b7/e6/a26b84096eddd51494bba19111f8fffe976f6a09f132706f8f1bf03f51f7/cryptography-46.0.7-cp38-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:cdf1a610ef82abb396451862739e3fc93b071c844399e15b90726ef7470eeaf2", size = 4918400, upload-time = "2026-04-08T01:57:19.021Z" }, - { url = "https://files.pythonhosted.org/packages/c7/08/ffd537b605568a148543ac3c2b239708ae0bd635064bab41359252ef88ed/cryptography-46.0.7-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:1d25aee46d0c6f1a501adcddb2d2fee4b979381346a78558ed13e50aa8a59067", size = 4450634, upload-time = "2026-04-08T01:57:21.185Z" }, - { url = "https://files.pythonhosted.org/packages/16/01/0cd51dd86ab5b9befe0d031e276510491976c3a80e9f6e31810cce46c4ad/cryptography-46.0.7-cp38-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:cdfbe22376065ffcf8be74dc9a909f032df19bc58a699456a21712d6e5eabfd0", size = 3985233, upload-time = "2026-04-08T01:57:22.862Z" }, - { url = "https://files.pythonhosted.org/packages/92/49/819d6ed3a7d9349c2939f81b500a738cb733ab62fbecdbc1e38e83d45e12/cryptography-46.0.7-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:abad9dac36cbf55de6eb49badd4016806b3165d396f64925bf2999bcb67837ba", size = 4271955, upload-time = "2026-04-08T01:57:24.814Z" }, - { url = "https://files.pythonhosted.org/packages/80/07/ad9b3c56ebb95ed2473d46df0847357e01583f4c52a85754d1a55e29e4d0/cryptography-46.0.7-cp38-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:935ce7e3cfdb53e3536119a542b839bb94ec1ad081013e9ab9b7cfd478b05006", size = 4879888, upload-time = "2026-04-08T01:57:26.88Z" }, - { url = "https://files.pythonhosted.org/packages/b8/c7/201d3d58f30c4c2bdbe9b03844c291feb77c20511cc3586daf7edc12a47b/cryptography-46.0.7-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:35719dc79d4730d30f1c2b6474bd6acda36ae2dfae1e3c16f2051f215df33ce0", size = 4449961, upload-time = "2026-04-08T01:57:29.068Z" }, - { url = "https://files.pythonhosted.org/packages/a5/ef/649750cbf96f3033c3c976e112265c33906f8e462291a33d77f90356548c/cryptography-46.0.7-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:7bbc6ccf49d05ac8f7d7b5e2e2c33830d4fe2061def88210a126d130d7f71a85", size = 4401696, upload-time = "2026-04-08T01:57:31.029Z" }, - { url = "https://files.pythonhosted.org/packages/41/52/a8908dcb1a389a459a29008c29966c1d552588d4ae6d43f3a1a4512e0ebe/cryptography-46.0.7-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a1529d614f44b863a7b480c6d000fe93b59acee9c82ffa027cfadc77521a9f5e", size = 4664256, upload-time = "2026-04-08T01:57:33.144Z" }, - { url = "https://files.pythonhosted.org/packages/4b/fa/f0ab06238e899cc3fb332623f337a7364f36f4bb3f2534c2bb95a35b132c/cryptography-46.0.7-cp38-abi3-win32.whl", hash = "sha256:f247c8c1a1fb45e12586afbb436ef21ff1e80670b2861a90353d9b025583d246", size = 3013001, upload-time = "2026-04-08T01:57:34.933Z" }, - { url = "https://files.pythonhosted.org/packages/d2/f1/00ce3bde3ca542d1acd8f8cfa38e446840945aa6363f9b74746394b14127/cryptography-46.0.7-cp38-abi3-win_amd64.whl", hash = "sha256:506c4ff91eff4f82bdac7633318a526b1d1309fc07ca76a3ad182cb5b686d6d3", size = 3472985, upload-time = "2026-04-08T01:57:36.714Z" }, - { url = "https://files.pythonhosted.org/packages/63/0c/dca8abb64e7ca4f6b2978769f6fea5ad06686a190cec381f0a796fdcaaba/cryptography-46.0.7-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:fc9ab8856ae6cf7c9358430e49b368f3108f050031442eaeb6b9d87e4dcf4e4f", size = 3476879, upload-time = "2026-04-08T01:57:38.664Z" }, - { url = "https://files.pythonhosted.org/packages/3a/ea/075aac6a84b7c271578d81a2f9968acb6e273002408729f2ddff517fed4a/cryptography-46.0.7-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:d3b99c535a9de0adced13d159c5a9cf65c325601aa30f4be08afd680643e9c15", size = 4219700, upload-time = "2026-04-08T01:57:40.625Z" }, - { url = "https://files.pythonhosted.org/packages/6c/7b/1c55db7242b5e5612b29fc7a630e91ee7a6e3c8e7bf5406d22e206875fbd/cryptography-46.0.7-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:d02c738dacda7dc2a74d1b2b3177042009d5cab7c7079db74afc19e56ca1b455", size = 4385982, upload-time = "2026-04-08T01:57:42.725Z" }, - { url = "https://files.pythonhosted.org/packages/cb/da/9870eec4b69c63ef5925bf7d8342b7e13bc2ee3d47791461c4e49ca212f4/cryptography-46.0.7-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:04959522f938493042d595a736e7dbdff6eb6cc2339c11465b3ff89343b65f65", size = 4219115, upload-time = "2026-04-08T01:57:44.939Z" }, - { url = "https://files.pythonhosted.org/packages/f4/72/05aa5832b82dd341969e9a734d1812a6aadb088d9eb6f0430fc337cc5a8f/cryptography-46.0.7-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:3986ac1dee6def53797289999eabe84798ad7817f3e97779b5061a95b0ee4968", size = 4385479, upload-time = "2026-04-08T01:57:46.86Z" }, - { url = "https://files.pythonhosted.org/packages/20/2a/1b016902351a523aa2bd446b50a5bc1175d7a7d1cf90fe2ef904f9b84ebc/cryptography-46.0.7-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:258514877e15963bd43b558917bc9f54cf7cf866c38aa576ebf47a77ddbc43a4", size = 3412829, upload-time = "2026-04-08T01:57:48.874Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/0d/05/07b55d1fa21ac18c3a8c79f764e2514e6f6a9698f1be44994f5adf0d29db/cryptography-43.0.3.tar.gz", hash = "sha256:315b9001266a492a6ff443b61238f956b214dbec9910a081ba5b6646a055a805", size = 686989, upload-time = "2024-10-18T15:58:32.918Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1f/f3/01fdf26701a26f4b4dbc337a26883ad5bccaa6f1bbbdd29cd89e22f18a1c/cryptography-43.0.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:bf7a1932ac4176486eab36a19ed4c0492da5d97123f1406cf15e41b05e787d2e", size = 6225303, upload-time = "2024-10-18T15:57:36.753Z" }, + { url = "https://files.pythonhosted.org/packages/a3/01/4896f3d1b392025d4fcbecf40fdea92d3df8662123f6835d0af828d148fd/cryptography-43.0.3-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63efa177ff54aec6e1c0aefaa1a241232dcd37413835a9b674b6e3f0ae2bfd3e", size = 3760905, upload-time = "2024-10-18T15:57:39.166Z" }, + { url = "https://files.pythonhosted.org/packages/0a/be/f9a1f673f0ed4b7f6c643164e513dbad28dd4f2dcdf5715004f172ef24b6/cryptography-43.0.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e1ce50266f4f70bf41a2c6dc4358afadae90e2a1e5342d3c08883df1675374f", size = 3977271, upload-time = "2024-10-18T15:57:41.227Z" }, + { url = "https://files.pythonhosted.org/packages/4e/49/80c3a7b5514d1b416d7350830e8c422a4d667b6d9b16a9392ebfd4a5388a/cryptography-43.0.3-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:443c4a81bb10daed9a8f334365fe52542771f25aedaf889fd323a853ce7377d6", size = 3746606, upload-time = "2024-10-18T15:57:42.903Z" }, + { url = "https://files.pythonhosted.org/packages/0e/16/a28ddf78ac6e7e3f25ebcef69ab15c2c6be5ff9743dd0709a69a4f968472/cryptography-43.0.3-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:74f57f24754fe349223792466a709f8e0c093205ff0dca557af51072ff47ab18", size = 3986484, upload-time = "2024-10-18T15:57:45.434Z" }, + { url = "https://files.pythonhosted.org/packages/01/f5/69ae8da70c19864a32b0315049866c4d411cce423ec169993d0434218762/cryptography-43.0.3-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:9762ea51a8fc2a88b70cf2995e5675b38d93bf36bd67d91721c309df184f49bd", size = 3852131, upload-time = "2024-10-18T15:57:47.267Z" }, + { url = "https://files.pythonhosted.org/packages/fd/db/e74911d95c040f9afd3612b1f732e52b3e517cb80de8bf183be0b7d413c6/cryptography-43.0.3-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:81ef806b1fef6b06dcebad789f988d3b37ccaee225695cf3e07648eee0fc6b73", size = 4075647, upload-time = "2024-10-18T15:57:49.684Z" }, + { url = "https://files.pythonhosted.org/packages/56/48/7b6b190f1462818b324e674fa20d1d5ef3e24f2328675b9b16189cbf0b3c/cryptography-43.0.3-cp37-abi3-win32.whl", hash = "sha256:cbeb489927bd7af4aa98d4b261af9a5bc025bd87f0e3547e11584be9e9427be2", size = 2623873, upload-time = "2024-10-18T15:57:51.822Z" }, + { url = "https://files.pythonhosted.org/packages/eb/b1/0ebff61a004f7f89e7b65ca95f2f2375679d43d0290672f7713ee3162aff/cryptography-43.0.3-cp37-abi3-win_amd64.whl", hash = "sha256:f46304d6f0c6ab8e52770addfa2fc41e6629495548862279641972b6215451cd", size = 3068039, upload-time = "2024-10-18T15:57:54.426Z" }, + { url = "https://files.pythonhosted.org/packages/30/d5/c8b32c047e2e81dd172138f772e81d852c51f0f2ad2ae8a24f1122e9e9a7/cryptography-43.0.3-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:8ac43ae87929a5982f5948ceda07001ee5e83227fd69cf55b109144938d96984", size = 6222984, upload-time = "2024-10-18T15:57:56.174Z" }, + { url = "https://files.pythonhosted.org/packages/2f/78/55356eb9075d0be6e81b59f45c7b48df87f76a20e73893872170471f3ee8/cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:846da004a5804145a5f441b8530b4bf35afbf7da70f82409f151695b127213d5", size = 3762968, upload-time = "2024-10-18T15:57:58.206Z" }, + { url = "https://files.pythonhosted.org/packages/2a/2c/488776a3dc843f95f86d2f957ca0fc3407d0242b50bede7fad1e339be03f/cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f996e7268af62598f2fc1204afa98a3b5712313a55c4c9d434aef49cadc91d4", size = 3977754, upload-time = "2024-10-18T15:58:00.683Z" }, + { url = "https://files.pythonhosted.org/packages/7c/04/2345ca92f7a22f601a9c62961741ef7dd0127c39f7310dffa0041c80f16f/cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:f7b178f11ed3664fd0e995a47ed2b5ff0a12d893e41dd0494f406d1cf555cab7", size = 3749458, upload-time = "2024-10-18T15:58:02.225Z" }, + { url = "https://files.pythonhosted.org/packages/ac/25/e715fa0bc24ac2114ed69da33adf451a38abb6f3f24ec207908112e9ba53/cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:c2e6fc39c4ab499049df3bdf567f768a723a5e8464816e8f009f121a5a9f4405", size = 3988220, upload-time = "2024-10-18T15:58:04.331Z" }, + { url = "https://files.pythonhosted.org/packages/21/ce/b9c9ff56c7164d8e2edfb6c9305045fbc0df4508ccfdb13ee66eb8c95b0e/cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:e1be4655c7ef6e1bbe6b5d0403526601323420bcf414598955968c9ef3eb7d16", size = 3853898, upload-time = "2024-10-18T15:58:06.113Z" }, + { url = "https://files.pythonhosted.org/packages/2a/33/b3682992ab2e9476b9c81fff22f02c8b0a1e6e1d49ee1750a67d85fd7ed2/cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:df6b6c6d742395dd77a23ea3728ab62f98379eff8fb61be2744d4679ab678f73", size = 4076592, upload-time = "2024-10-18T15:58:08.673Z" }, + { url = "https://files.pythonhosted.org/packages/81/1e/ffcc41b3cebd64ca90b28fd58141c5f68c83d48563c88333ab660e002cd3/cryptography-43.0.3-cp39-abi3-win32.whl", hash = "sha256:d56e96520b1020449bbace2b78b603442e7e378a9b3bd68de65c782db1507995", size = 2623145, upload-time = "2024-10-18T15:58:10.264Z" }, + { url = "https://files.pythonhosted.org/packages/87/5c/3dab83cc4aba1f4b0e733e3f0c3e7d4386440d660ba5b1e3ff995feb734d/cryptography-43.0.3-cp39-abi3-win_amd64.whl", hash = "sha256:0c580952eef9bf68c4747774cde7ec1d85a6e61de97281f2dba83c7d2c806362", size = 3068026, upload-time = "2024-10-18T15:58:11.916Z" }, ] [[package]] @@ -756,9 +476,8 @@ dependencies = [ { name = "isort" }, { name = "jinja2" }, { name = "packaging" }, - { name = "pydantic" }, + { name = "pydantic", extra = ["email"] }, { name = "pyyaml" }, - { name = "toml" }, ] sdist = { url = "https://files.pythonhosted.org/packages/d1/df/499d5ba10ad3c2bb976daa615340c8aa87a4dce61218d90e42712f8cd857/datamodel_code_generator-0.25.8.tar.gz", hash = "sha256:b7838122b8133dae6e46f36a1cf25c0ccc66745da057988f490d00ab71121de7", size = 88602, upload-time = "2024-07-04T15:55:30.653Z" } wheels = [ @@ -785,14 +504,14 @@ wheels = [ [[package]] name = "deprecation" -version = "2.0.7" +version = "2.1.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "packaging" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/cd/94/8d9d6303f5ddcbf40959fc2b287479bd9a201ea9483373d9b0882ae7c3ad/deprecation-2.0.7.tar.gz", hash = "sha256:c0392f676a6146f0238db5744d73e786a43510d54033f80994ef2f4c9df192ed", size = 17077, upload-time = "2019-08-12T22:13:01.616Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5a/d3/8ae2869247df154b64c1884d7346d412fed0c49df84db635aab2d1c40e62/deprecation-2.1.0.tar.gz", hash = "sha256:72b3bde64e5d778694b0cf68178aed03d15e15477116add3fb773e581f9518ff", size = 173788, upload-time = "2020-04-20T14:23:38.738Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b9/2a/d5084a8781398cea745c01237b95d9762c382697c63760a95cc6a814ad3a/deprecation-2.0.7-py2.py3-none-any.whl", hash = "sha256:dc9b4f252b7aca8165ce2764a71da92a653b5ffbf7a389461d7a640f6536ecb2", size = 11022, upload-time = "2019-08-12T22:12:59.537Z" }, + { url = "https://files.pythonhosted.org/packages/02/c3/253a89ee03fc9b9682f1541728eb66db7db22148cd94f89ab22528cd1e1b/deprecation-2.1.0-py2.py3-none-any.whl", hash = "sha256:a10811591210e1fb0e768a8c25517cabeabcba6f0bf96564f8ff45189f90b14a", size = 11178, upload-time = "2020-04-20T14:23:36.581Z" }, ] [[package]] @@ -847,7 +566,7 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "asgiref" }, { name = "sqlparse" }, - { name = "tzdata" }, + { name = "tzdata", marker = "sys_platform == 'win32'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/65/95/95f7faa0950867afaa0bef2460c6263afd6a2c78cc9434046ed28160b015/django-5.2.14.tar.gz", hash = "sha256:58a63ba841662e5c686b57ba1fec52ddd68c0b93bd96ac3029d55728f00bf8a2", size = 10895118, upload-time = "2026-05-05T13:57:31.104Z" } wheels = [ @@ -1067,11 +786,8 @@ version = "3.5.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "boto3" }, - { name = "cryptography" }, { name = "django" }, - { name = "importlib-metadata" }, { name = "pytz" }, - { name = "requests" }, ] sdist = { url = "https://files.pythonhosted.org/packages/eb/31/0e5d3a4bc42ec672512424788c7231ff932384c39ec5b6d0879d76ca4a56/django_ses-3.5.0.tar.gz", hash = "sha256:dc1644f50608fbf3a64f085a371c61d56d68eba3c5efa69651f13dc3ba05049d", size = 45556, upload-time = "2023-05-21T15:48:15.367Z" } wheels = [ @@ -1179,7 +895,6 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "django" }, { name = "djangorestframework" }, - { name = "typing-extensions" }, ] sdist = { url = "https://files.pythonhosted.org/packages/3a/54/b5ba074c5145ff8ce310423b8bd0dcdd788d909168659008e979e59b8a00/djangorestframework-dataclasses-1.3.1.tar.gz", hash = "sha256:d3796b5ce3f7266d525493c557ce7df9ffeae4367006250298ea4d94da4106c4", size = 36651, upload-time = "2023-09-12T17:57:43.845Z" } wheels = [ @@ -1276,7 +991,6 @@ dependencies = [ { name = "inflection" }, { name = "jsonschema" }, { name = "pyyaml" }, - { name = "typing-extensions" }, { name = "uritemplate" }, ] sdist = { url = "https://files.pythonhosted.org/packages/da/b9/741056455aed00fa51a1df41fad5ad27c8e0d433b6bf490d4e60e2808bc6/drf_spectacular-0.28.0.tar.gz", hash = "sha256:2c778a47a40ab2f5078a7c42e82baba07397bb35b074ae4680721b2805943061", size = 237849, upload-time = "2024-11-30T08:49:02.355Z" } @@ -1321,7 +1035,6 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "marshmallow" }, { name = "python-dotenv" }, - { name = "typing-extensions" }, ] sdist = { url = "https://files.pythonhosted.org/packages/fb/c7/94f97e6e74482a50b5fc798856b6cc06e8d072ab05a0b74cb5d87bd0d065/environs-14.6.0.tar.gz", hash = "sha256:ed2767588deb503209ffe4dd9bb2b39311c2e4e7e27ce2c64bf62ca83328d068", size = 35563, upload-time = "2026-02-20T04:02:08.869Z" } wheels = [ @@ -1351,7 +1064,7 @@ name = "fancycompleter" version = "0.9.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "pyreadline" }, + { name = "pyreadline", marker = "sys_platform == 'win32'" }, { name = "pyrepl" }, ] sdist = { url = "https://files.pythonhosted.org/packages/a9/95/649d135442d8ecf8af5c7e235550c628056423c96c4bc6787348bdae9248/fancycompleter-0.9.1.tar.gz", hash = "sha256:09e0feb8ae242abdfd7ef2ba55069a46f011814a80fe5476be48f51b00247272", size = 10866, upload-time = "2020-02-04T13:30:09.183Z" } @@ -1747,7 +1460,6 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "google-auth" }, { name = "googleapis-common-protos" }, - { name = "importlib-metadata" }, { name = "proto-plus" }, { name = "protobuf" }, { name = "requests" }, @@ -1766,7 +1478,6 @@ dependencies = [ { name = "google-auth" }, { name = "google-auth-httplib2" }, { name = "httplib2" }, - { name = "rsa" }, { name = "six" }, { name = "uritemplate" }, ] @@ -1861,7 +1572,6 @@ name = "gunicorn" version = "23.0.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "importlib-metadata" }, { name = "packaging" }, ] sdist = { url = "https://files.pythonhosted.org/packages/34/72/9614c465dc206155d93eff0ca20d42e1e35afc533971379482de953521a4/gunicorn-23.0.0.tar.gz", hash = "sha256:f014447a0101dc57e294f6c18ca6b40227a4c90e9bdb586042628030cba004ec", size = 375031, upload-time = "2024-08-10T20:25:27.378Z" } @@ -1924,7 +1634,6 @@ version = "12.0.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "certifi" }, - { name = "importlib-metadata" }, { name = "python-dateutil" }, { name = "requests" }, { name = "six" }, @@ -2012,17 +1721,17 @@ name = "ipython" version = "9.10.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "colorama" }, + { name = "colorama", marker = "sys_platform == 'win32'" }, { name = "decorator" }, { name = "ipython-pygments-lexers" }, { name = "jedi" }, { name = "matplotlib-inline" }, - { name = "pexpect" }, + { name = "pexpect", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, { name = "prompt-toolkit" }, { name = "pygments" }, { name = "stack-data" }, { name = "traitlets" }, - { name = "typing-extensions" }, + { name = "typing-extensions", marker = "python_full_version < '3.12'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/a6/60/2111715ea11f39b1535bed6024b7dec7918b71e5e5d30855a5b503056b50/ipython-9.10.0.tar.gz", hash = "sha256:cd9e656be97618a0676d058134cd44e6dc7012c0e5cb36a9ce96a8c904adaf77", size = 4426526, upload-time = "2026-02-02T10:00:33.594Z" } wheels = [ @@ -2280,7 +1989,6 @@ dependencies = [ { name = "boto3" }, { name = "botocore" }, { name = "cryptography" }, - { name = "importlib-metadata" }, { name = "jinja2" }, { name = "python-dateutil" }, { name = "requests" }, @@ -2329,7 +2037,7 @@ name = "mypy-boto3-dynamodb" version = "1.33.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "typing-extensions" }, + { name = "typing-extensions", marker = "python_full_version < '3.12'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/c4/e4/acbd8e737bf997040973f52a4a9361a91f372a232edc1364b5332916fe4e/mypy-boto3-dynamodb-1.33.0.tar.gz", hash = "sha256:2cfe1089c89de61b1ec0e69a72ba3e6865a013ea0a37d318ab564983785d42f9", size = 48086, upload-time = "2023-11-28T18:48:49.677Z" } wheels = [ @@ -2648,9 +2356,6 @@ wheels = [ name = "platformdirs" version = "3.10.0" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "typing-extensions" }, -] sdist = { url = "https://files.pythonhosted.org/packages/dc/99/c922839819f5d00d78b3a1057b5ceee3123c69b2216e776ddcb5a4c265ff/platformdirs-3.10.0.tar.gz", hash = "sha256:b45696dab2d7cc691a3226759c0d3b00c47c8b6e293d96f6436f733303f77f6d", size = 19203, upload-time = "2023-07-29T15:04:36.183Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/14/51/fe5a0d6ea589f0d4a1b97824fb518962ad48b27cd346dcdfa2405187997a/platformdirs-3.10.0-py3-none-any.whl", hash = "sha256:d7c24979f292f916dc9cbf8648319032f551ea8c49a4c9bf2fb556a02070ec1d", size = 17189, upload-time = "2023-07-29T15:04:34.582Z" }, @@ -2658,14 +2363,11 @@ wheels = [ [[package]] name = "pluggy" -version = "1.2.0" +version = "1.6.0" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "importlib-metadata" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/8a/42/8f2833655a29c4e9cb52ee8a2be04ceac61bcff4a680fb338cbd3d1e322d/pluggy-1.2.0.tar.gz", hash = "sha256:d12f0c4b579b15f5e054301bb226ee85eeeba08ffec228092f8defbaa3a4c4b3", size = 61613, upload-time = "2023-06-21T09:12:28.745Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412, upload-time = "2025-05-15T12:30:07.975Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/51/32/4a79112b8b87b21450b066e102d6608907f4c885ed7b04c3fdb085d4d6ae/pluggy-1.2.0-py3-none-any.whl", hash = "sha256:c2fd55a7d7a3863cba1a013e4e2414658b1d07b6bc57b3919e0c63c9abb99849", size = 17695, upload-time = "2023-06-21T09:12:27.397Z" }, + { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" }, ] [[package]] @@ -2845,6 +2547,11 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/5a/87/b70ad306ebb6f9b585f114d0ac2137d792b48be34d732d60e597c2f8465a/pydantic-2.12.5-py3-none-any.whl", hash = "sha256:e561593fccf61e8a20fc46dfc2dfe075b8be7d0188df33f221ad1f0139180f9d", size = 463580, upload-time = "2025-11-26T15:11:44.605Z" }, ] +[package.optional-dependencies] +email = [ + { name = "email-validator" }, +] + [[package]] name = "pydantic-collections" version = "0.6.0" @@ -2965,9 +2672,6 @@ wheels = [ name = "pyjwt" version = "2.13.0" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "typing-extensions" }, -] sdist = { url = "https://files.pythonhosted.org/packages/3b/81/58d0ac84e1ef3a3843791d6954d94c0b33d526c75eeb1efbce9d0a4c4077/pyjwt-2.13.0.tar.gz", hash = "sha256:41571c89ca91598c79e8ef18a2d07367d4810fbbd6f637794879baf1b7703423", size = 107515, upload-time = "2026-05-21T19:54:36.618Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/a3/5e/ecf12fdb62546d64385c158514e9b2b671f7832108ef2ecd2020ce0af2d1/pyjwt-2.13.0-py3-none-any.whl", hash = "sha256:66adcc2aff09b3f1bbd95fc1e1577df8ac8723c978552fd43304c8a290ac5728", size = 31274, upload-time = "2026-05-21T19:54:35.362Z" }, @@ -2984,13 +2688,12 @@ version = "2.16.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "astroid" }, - { name = "colorama" }, + { name = "colorama", marker = "sys_platform == 'win32'" }, { name = "dill" }, { name = "isort" }, { name = "mccabe" }, { name = "platformdirs" }, { name = "tomlkit" }, - { name = "typing-extensions" }, ] sdist = { url = "https://files.pythonhosted.org/packages/9f/cc/cf24bfbb4591c4cb89cc1d78932874bf75548f837859cd9947587d471c9c/pylint-2.16.4.tar.gz", hash = "sha256:8841f26a0dbc3503631b6a20ee368b3f5e0e5461a1d95cf15d103dab748a0db3", size = 428345, upload-time = "2023-03-06T15:00:08.176Z" } wheels = [ @@ -3011,7 +2714,7 @@ name = "pynacl" version = "1.6.2" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "cffi" }, + { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/d9/9a/4019b524b03a13438637b11538c82781a5eda427394380381af8f04f467a/pynacl-1.6.2.tar.gz", hash = "sha256:018494d6d696ae03c7e656e5e74cdfd8ea1326962cc401bcf018f1ed8436811c", size = 3511692, upload-time = "2026-01-01T17:48:10.851Z" } wheels = [ @@ -3045,15 +2748,15 @@ wheels = [ [[package]] name = "pyopenssl" -version = "26.0.0" +version = "25.1.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cryptography" }, - { name = "typing-extensions" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/8e/11/a62e1d33b373da2b2c2cd9eb508147871c80f12b1cacde3c5d314922afdd/pyopenssl-26.0.0.tar.gz", hash = "sha256:f293934e52936f2e3413b89c6ce36df66a0b34ae1ea3a053b8c5020ff2f513fc", size = 185534, upload-time = "2026-03-15T14:28:26.353Z" } +sdist = { url = "https://files.pythonhosted.org/packages/04/8c/cd89ad05804f8e3c17dea8f178c3f40eeab5694c30e0c9f5bcd49f576fc3/pyopenssl-25.1.0.tar.gz", hash = "sha256:8d031884482e0c67ee92bf9a4d8cceb08d92aba7136432ffb0703c5280fc205b", size = 179937, upload-time = "2025-05-17T16:28:31.31Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fb/7d/d4f7d908fa8415571771b30669251d57c3cf313b36a856e6d7548ae01619/pyopenssl-26.0.0-py3-none-any.whl", hash = "sha256:df94d28498848b98cc1c0ffb8ef1e71e40210d3b0a8064c9d29571ed2904bf81", size = 57969, upload-time = "2026-03-15T14:28:24.864Z" }, + { url = "https://files.pythonhosted.org/packages/80/28/2659c02301b9500751f8d42f9a6632e1508aa5120de5e43042b8b30f8d5d/pyopenssl-25.1.0-py3-none-any.whl", hash = "sha256:2b11f239acc47ac2e5aca04fd7fa829800aeee22a2eb30d744572a157bd8a1ab", size = 56771, upload-time = "2025-05-17T16:28:29.197Z" }, ] [[package]] @@ -3093,7 +2796,6 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cryptography" }, { name = "defusedxml" }, - { name = "importlib-metadata" }, { name = "pyopenssl" }, { name = "python-dateutil" }, { name = "pytz" }, @@ -3107,19 +2809,18 @@ wheels = [ [[package]] name = "pytest" -version = "7.2.2" +version = "9.0.3" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "attrs" }, - { name = "colorama" }, - { name = "importlib-metadata" }, + { name = "colorama", marker = "sys_platform == 'win32'" }, { name = "iniconfig" }, { name = "packaging" }, { name = "pluggy" }, + { name = "pygments" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b9/29/311895d9cd3f003dd58e8fdea36dd895ba2da5c0c90601836f7de79f76fe/pytest-7.2.2.tar.gz", hash = "sha256:c99ab0c73aceb050f68929bc93af19ab6db0558791c6a0715723abe9d0ade9d4", size = 1320028, upload-time = "2023-03-03T19:12:29.775Z" } +sdist = { url = "https://files.pythonhosted.org/packages/7d/0d/549bd94f1a0a402dc8cf64563a117c0f3765662e2e668477624baeec44d5/pytest-9.0.3.tar.gz", hash = "sha256:b86ada508af81d19edeb213c681b1d48246c1a91d304c6c81a427674c17eb91c", size = 1572165, upload-time = "2026-04-07T17:16:18.027Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b2/68/5321b5793bd506961bd40bdbdd0674e7de4fb873ee7cab33dd27283ad513/pytest-7.2.2-py3-none-any.whl", hash = "sha256:130328f552dcfac0b1cec75c12e3f005619dc5f874f0a06e8ff7263f0ee6225e", size = 317207, upload-time = "2023-03-03T19:12:27.611Z" }, + { url = "https://files.pythonhosted.org/packages/d4/24/a372aaf5c9b7208e7112038812994107bc65a84cd00e0354a88c2c77a617/pytest-9.0.3-py3-none-any.whl", hash = "sha256:2c5efc453d45394fdd706ade797c0a81091eccd1d6e4bccfcd476e2b8e0ab5d9", size = 375249, upload-time = "2026-04-07T17:16:16.13Z" }, ] [[package]] @@ -3127,7 +2828,7 @@ name = "pytest-cov" version = "4.1.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "coverage" }, + { name = "coverage", extra = ["toml"] }, { name = "pytest" }, ] sdist = { url = "https://files.pythonhosted.org/packages/7a/15/da3df99fd551507694a9b01f512a2f6cf1254f33601605843c3775f39460/pytest-cov-4.1.0.tar.gz", hash = "sha256:3904b13dfbfec47f003b8e77fd5b589cd11904a21ddf1ab38a64f204d6a10ef6", size = 63245, upload-time = "2023-05-24T18:44:56.845Z" } @@ -3346,9 +3047,7 @@ name = "redis" version = "5.0.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "async-timeout" }, - { name = "importlib-metadata" }, - { name = "typing-extensions" }, + { name = "async-timeout", marker = "python_full_version <= '3.11.2'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/4a/4c/3c3b766f4ecbb3f0bec91ef342ee98d179e040c25b6ecc99e510c2570f2a/redis-5.0.1.tar.gz", hash = "sha256:0dab495cd5753069d3bc650a0dde8a8f9edde16fc5691b689a566eda58100d0f", size = 4578353, upload-time = "2023-09-26T06:51:17.945Z" } wheels = [ @@ -3362,7 +3061,7 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "attrs" }, { name = "rpds-py" }, - { name = "typing-extensions" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/22/f5/df4e9027acead3ecc63e50fe1e36aca1523e1719559c499951bb4b53188f/referencing-0.37.0.tar.gz", hash = "sha256:44aefc3142c5b842538163acb373e24cce6632bd54bdb01b21ad5863489f50d8", size = 78036, upload-time = "2025-10-13T15:30:48.871Z" } wheels = [ @@ -3502,7 +3201,6 @@ dependencies = [ { name = "requests" }, { name = "toml" }, { name = "types-toml" }, - { name = "typing-extensions" }, { name = "urllib3" }, ] sdist = { url = "https://files.pythonhosted.org/packages/03/cc/c15e28fdbc81909ac18a4c22bebe8517bbafef43947a072da6f042fbd4d5/responses-0.22.0.tar.gz", hash = "sha256:396acb2a13d25297789a5866b4881cf4e46ffd49cc26c43ab1117f40b973102e", size = 71785, upload-time = "2022-10-11T16:34:46.926Z" } @@ -3873,6 +3571,42 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/44/6f/7120676b6d73228c96e17f1f794d8ab046fc910d781c8d151120c3f1569e/toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", size = 16588, upload-time = "2020-11-01T01:40:20.672Z" }, ] +[[package]] +name = "tomli" +version = "2.4.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/22/de/48c59722572767841493b26183a0d1cc411d54fd759c5607c4590b6563a6/tomli-2.4.1.tar.gz", hash = "sha256:7c7e1a961a0b2f2472c1ac5b69affa0ae1132c39adcb67aba98568702b9cc23f", size = 17543, upload-time = "2026-03-25T20:22:03.828Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/11/db3d5885d8528263d8adc260bb2d28ebf1270b96e98f0e0268d32b8d9900/tomli-2.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f8f0fc26ec2cc2b965b7a3b87cd19c5c6b8c5e5f436b984e85f486d652285c30", size = 154704, upload-time = "2026-03-25T20:21:10.473Z" }, + { url = "https://files.pythonhosted.org/packages/6d/f7/675db52c7e46064a9aa928885a9b20f4124ecb9bc2e1ce74c9106648d202/tomli-2.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4ab97e64ccda8756376892c53a72bd1f964e519c77236368527f758fbc36a53a", size = 149454, upload-time = "2026-03-25T20:21:12.036Z" }, + { url = "https://files.pythonhosted.org/packages/61/71/81c50943cf953efa35bce7646caab3cf457a7d8c030b27cfb40d7235f9ee/tomli-2.4.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:96481a5786729fd470164b47cdb3e0e58062a496f455ee41b4403be77cb5a076", size = 237561, upload-time = "2026-03-25T20:21:13.098Z" }, + { url = "https://files.pythonhosted.org/packages/48/c1/f41d9cb618acccca7df82aaf682f9b49013c9397212cb9f53219e3abac37/tomli-2.4.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5a881ab208c0baf688221f8cecc5401bd291d67e38a1ac884d6736cbcd8247e9", size = 243824, upload-time = "2026-03-25T20:21:14.569Z" }, + { url = "https://files.pythonhosted.org/packages/22/e4/5a816ecdd1f8ca51fb756ef684b90f2780afc52fc67f987e3c61d800a46d/tomli-2.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:47149d5bd38761ac8be13a84864bf0b7b70bc051806bc3669ab1cbc56216b23c", size = 242227, upload-time = "2026-03-25T20:21:15.712Z" }, + { url = "https://files.pythonhosted.org/packages/6b/49/2b2a0ef529aa6eec245d25f0c703e020a73955ad7edf73e7f54ddc608aa5/tomli-2.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ec9bfaf3ad2df51ace80688143a6a4ebc09a248f6ff781a9945e51937008fcbc", size = 247859, upload-time = "2026-03-25T20:21:17.001Z" }, + { url = "https://files.pythonhosted.org/packages/83/bd/6c1a630eaca337e1e78c5903104f831bda934c426f9231429396ce3c3467/tomli-2.4.1-cp311-cp311-win32.whl", hash = "sha256:ff2983983d34813c1aeb0fa89091e76c3a22889ee83ab27c5eeb45100560c049", size = 97204, upload-time = "2026-03-25T20:21:18.079Z" }, + { url = "https://files.pythonhosted.org/packages/42/59/71461df1a885647e10b6bb7802d0b8e66480c61f3f43079e0dcd315b3954/tomli-2.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:5ee18d9ebdb417e384b58fe414e8d6af9f4e7a0ae761519fb50f721de398dd4e", size = 108084, upload-time = "2026-03-25T20:21:18.978Z" }, + { url = "https://files.pythonhosted.org/packages/b8/83/dceca96142499c069475b790e7913b1044c1a4337e700751f48ed723f883/tomli-2.4.1-cp311-cp311-win_arm64.whl", hash = "sha256:c2541745709bad0264b7d4705ad453b76ccd191e64aa6f0fc66b69a293a45ece", size = 95285, upload-time = "2026-03-25T20:21:20.309Z" }, + { url = "https://files.pythonhosted.org/packages/c1/ba/42f134a3fe2b370f555f44b1d72feebb94debcab01676bf918d0cb70e9aa/tomli-2.4.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c742f741d58a28940ce01d58f0ab2ea3ced8b12402f162f4d534dfe18ba1cd6a", size = 155924, upload-time = "2026-03-25T20:21:21.626Z" }, + { url = "https://files.pythonhosted.org/packages/dc/c7/62d7a17c26487ade21c5422b646110f2162f1fcc95980ef7f63e73c68f14/tomli-2.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7f86fd587c4ed9dd76f318225e7d9b29cfc5a9d43de44e5754db8d1128487085", size = 150018, upload-time = "2026-03-25T20:21:23.002Z" }, + { url = "https://files.pythonhosted.org/packages/5c/05/79d13d7c15f13bdef410bdd49a6485b1c37d28968314eabee452c22a7fda/tomli-2.4.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ff18e6a727ee0ab0388507b89d1bc6a22b138d1e2fa56d1ad494586d61d2eae9", size = 244948, upload-time = "2026-03-25T20:21:24.04Z" }, + { url = "https://files.pythonhosted.org/packages/10/90/d62ce007a1c80d0b2c93e02cab211224756240884751b94ca72df8a875ca/tomli-2.4.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:136443dbd7e1dee43c68ac2694fde36b2849865fa258d39bf822c10e8068eac5", size = 253341, upload-time = "2026-03-25T20:21:25.177Z" }, + { url = "https://files.pythonhosted.org/packages/1a/7e/caf6496d60152ad4ed09282c1885cca4eea150bfd007da84aea07bcc0a3e/tomli-2.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5e262d41726bc187e69af7825504c933b6794dc3fbd5945e41a79bb14c31f585", size = 248159, upload-time = "2026-03-25T20:21:26.364Z" }, + { url = "https://files.pythonhosted.org/packages/99/e7/c6f69c3120de34bbd882c6fba7975f3d7a746e9218e56ab46a1bc4b42552/tomli-2.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5cb41aa38891e073ee49d55fbc7839cfdb2bc0e600add13874d048c94aadddd1", size = 253290, upload-time = "2026-03-25T20:21:27.46Z" }, + { url = "https://files.pythonhosted.org/packages/d6/2f/4a3c322f22c5c66c4b836ec58211641a4067364f5dcdd7b974b4c5da300c/tomli-2.4.1-cp312-cp312-win32.whl", hash = "sha256:da25dc3563bff5965356133435b757a795a17b17d01dbc0f42fb32447ddfd917", size = 98141, upload-time = "2026-03-25T20:21:28.492Z" }, + { url = "https://files.pythonhosted.org/packages/24/22/4daacd05391b92c55759d55eaee21e1dfaea86ce5c571f10083360adf534/tomli-2.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:52c8ef851d9a240f11a88c003eacb03c31fc1c9c4ec64a99a0f922b93874fda9", size = 108847, upload-time = "2026-03-25T20:21:29.386Z" }, + { url = "https://files.pythonhosted.org/packages/68/fd/70e768887666ddd9e9f5d85129e84910f2db2796f9096aa02b721a53098d/tomli-2.4.1-cp312-cp312-win_arm64.whl", hash = "sha256:f758f1b9299d059cc3f6546ae2af89670cb1c4d48ea29c3cacc4fe7de3058257", size = 95088, upload-time = "2026-03-25T20:21:30.677Z" }, + { url = "https://files.pythonhosted.org/packages/07/06/b823a7e818c756d9a7123ba2cda7d07bc2dd32835648d1a7b7b7a05d848d/tomli-2.4.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:36d2bd2ad5fb9eaddba5226aa02c8ec3fa4f192631e347b3ed28186d43be6b54", size = 155866, upload-time = "2026-03-25T20:21:31.65Z" }, + { url = "https://files.pythonhosted.org/packages/14/6f/12645cf7f08e1a20c7eb8c297c6f11d31c1b50f316a7e7e1e1de6e2e7b7e/tomli-2.4.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:eb0dc4e38e6a1fd579e5d50369aa2e10acfc9cace504579b2faabb478e76941a", size = 149887, upload-time = "2026-03-25T20:21:33.028Z" }, + { url = "https://files.pythonhosted.org/packages/5c/e0/90637574e5e7212c09099c67ad349b04ec4d6020324539297b634a0192b0/tomli-2.4.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c7f2c7f2b9ca6bdeef8f0fa897f8e05085923eb091721675170254cbc5b02897", size = 243704, upload-time = "2026-03-25T20:21:34.51Z" }, + { url = "https://files.pythonhosted.org/packages/10/8f/d3ddb16c5a4befdf31a23307f72828686ab2096f068eaf56631e136c1fdd/tomli-2.4.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f3c6818a1a86dd6dca7ddcaaf76947d5ba31aecc28cb1b67009a5877c9a64f3f", size = 251628, upload-time = "2026-03-25T20:21:36.012Z" }, + { url = "https://files.pythonhosted.org/packages/e3/f1/dbeeb9116715abee2485bf0a12d07a8f31af94d71608c171c45f64c0469d/tomli-2.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d312ef37c91508b0ab2cee7da26ec0b3ed2f03ce12bd87a588d771ae15dcf82d", size = 247180, upload-time = "2026-03-25T20:21:37.136Z" }, + { url = "https://files.pythonhosted.org/packages/d3/74/16336ffd19ed4da28a70959f92f506233bd7cfc2332b20bdb01591e8b1d1/tomli-2.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:51529d40e3ca50046d7606fa99ce3956a617f9b36380da3b7f0dd3dd28e68cb5", size = 251674, upload-time = "2026-03-25T20:21:38.298Z" }, + { url = "https://files.pythonhosted.org/packages/16/f9/229fa3434c590ddf6c0aa9af64d3af4b752540686cace29e6281e3458469/tomli-2.4.1-cp313-cp313-win32.whl", hash = "sha256:2190f2e9dd7508d2a90ded5ed369255980a1bcdd58e52f7fe24b8162bf9fedbd", size = 97976, upload-time = "2026-03-25T20:21:39.316Z" }, + { url = "https://files.pythonhosted.org/packages/6a/1e/71dfd96bcc1c775420cb8befe7a9d35f2e5b1309798f009dca17b7708c1e/tomli-2.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:8d65a2fbf9d2f8352685bc1364177ee3923d6baf5e7f43ea4959d7d8bc326a36", size = 108755, upload-time = "2026-03-25T20:21:40.248Z" }, + { url = "https://files.pythonhosted.org/packages/83/7a/d34f422a021d62420b78f5c538e5b102f62bea616d1d75a13f0a88acb04a/tomli-2.4.1-cp313-cp313-win_arm64.whl", hash = "sha256:4b605484e43cdc43f0954ddae319fb75f04cc10dd80d830540060ee7cd0243cd", size = 95265, upload-time = "2026-03-25T20:21:41.219Z" }, + { url = "https://files.pythonhosted.org/packages/7b/61/cceae43728b7de99d9b847560c262873a1f6c98202171fd5ed62640b494b/tomli-2.4.1-py3-none-any.whl", hash = "sha256:0d85819802132122da43cb86656f8d1f8c6587d54ae7dcaf30e90533028b49fe", size = 14583, upload-time = "2026-03-25T20:22:03.012Z" }, +] + [[package]] name = "tomlkit" version = "0.13.0" @@ -4053,7 +3787,7 @@ name = "tzlocal" version = "5.3.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "tzdata" }, + { name = "tzdata", marker = "sys_platform == 'win32'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/8b/2e/c14812d3d4d9cd1773c6be938f89e5735a1f11a9f184ac3639b93cef35d5/tzlocal-5.3.1.tar.gz", hash = "sha256:cceffc7edecefea1f595541dbd6e990cb1ea3d19bf01b2809f362a03dd7921fd", size = 30761, upload-time = "2025-03-05T21:17:41.549Z" } wheels = [ @@ -4085,9 +3819,7 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "distlib" }, { name = "filelock" }, - { name = "importlib-metadata" }, { name = "platformdirs" }, - { name = "typing-extensions" }, ] sdist = { url = "https://files.pythonhosted.org/packages/aa/a3/4d310fa5f00863544e1d0f4de93bddec248499ccf97d4791bc3122c9d4f3/virtualenv-20.36.1.tar.gz", hash = "sha256:8befb5c81842c641f8ee658481e42641c68b5eab3521d8e092d18320902466ba", size = 6032239, upload-time = "2026-01-09T18:21:01.296Z" } wheels = [ From 0102763035c406e3a0b508d5aae901be316cb4f5 Mon Sep 17 00:00:00 2001 From: Matthew Elwell Date: Thu, 11 Jun 2026 12:43:22 +0100 Subject: [PATCH 2/3] chore(api): Drop now-unused type: ignore on pytest_configure hook pluggy 1.6 ships proper typing for `@pytest.hookimpl`, so the `# type: ignore[misc]` previously needed under pluggy 1.2 is now flagged as unused-ignore by mypy. Co-Authored-By: Claude Opus 4.7 (1M context) --- api/tests/conftest.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/tests/conftest.py b/api/tests/conftest.py index 0ef751a26568..4521ef067975 100644 --- a/api/tests/conftest.py +++ b/api/tests/conftest.py @@ -145,7 +145,7 @@ def pytest_addoption(parser: pytest.Parser) -> None: ) -@pytest.hookimpl(trylast=True) # type: ignore[misc] +@pytest.hookimpl(trylast=True) def pytest_configure(config: pytest.Config) -> None: if ( config.option.ci From ff9b3fa4050993d9effdbd919f5d6b825d72107a Mon Sep 17 00:00:00 2001 From: Matthew Elwell Date: Thu, 11 Jun 2026 13:52:55 +0100 Subject: [PATCH 3/3] chore(api): Cap pytest at <8 while pytest-lazy-fixture is in use pytest-lazy-fixture 0.6.3 (unmaintained since 2020) uses `CallSpec2.funcargs` which pytest 9 removed, so every test that imports it errors at collection with `AttributeError: 'CallSpec2' object has no attribute 'funcargs'`. Cap pytest at <8 until the migration to the maintained `pytest-lazy-fixtures` fork is done in #7759. Co-Authored-By: Claude Opus 4.7 (1M context) --- api/pyproject.toml | 4 +++- api/uv.lock | 9 ++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/api/pyproject.toml b/api/pyproject.toml index 3d44938591f2..1d3b15611d35 100644 --- a/api/pyproject.toml +++ b/api/pyproject.toml @@ -93,6 +93,7 @@ dev = [ "responses>=0.22.0,<0.23.0", "pre-commit>=4.0.1,<5.0.0", "pytest-mock>=3.10.0,<3.11.0", + # TODO: drop with #7759 — pytest-lazy-fixture is unmaintained and incompatible with pytest 8+ "pytest-lazy-fixture>=0.6.3,<0.7.0", "moto>=4.1.3,<4.2.0", # TODO: move to https://github.com/adamchainz/time-machine @@ -103,7 +104,8 @@ dev = [ "pylint>=2.16.2,<2.17.0", "pep8>=1.7.1,<1.8.0", "autopep8>=2.0.1,<2.1.0", - "pytest>=9.0.3,<9.1.0", + # TODO: lift the <8 cap with #7759 — pinned to pytest 7 while pytest-lazy-fixture is in use + "pytest>=7.2.2,<8.0.0", "pytest-django>=4.8.0,<5.0.0", "pytest-cov>=4.1.0,<4.2.0", "datamodel-code-generator>=0.25,<0.26.0", diff --git a/api/uv.lock b/api/uv.lock index 67822b52abf8..7c8e5f6131de 100644 --- a/api/uv.lock +++ b/api/uv.lock @@ -1302,7 +1302,7 @@ requires-dist = [ { name = "pyngo", specifier = ">=2.4.1,<2.5.0" }, { name = "pyotp", specifier = ">=2.9.0,<3.0.0" }, { name = "pyparsing", specifier = ">=2.4.7,<2.5.0" }, - { name = "pytest", marker = "extra == 'dev'", specifier = ">=9.0.3,<9.1.0" }, + { name = "pytest", marker = "extra == 'dev'", specifier = ">=7.2.2,<8.0.0" }, { name = "pytest-cov", marker = "extra == 'dev'", specifier = ">=4.1.0,<4.2.0" }, { name = "pytest-django", marker = "extra == 'dev'", specifier = ">=4.8.0,<5.0.0" }, { name = "pytest-freezegun", marker = "extra == 'dev'", specifier = ">=0.4.2,<0.5.0" }, @@ -2809,18 +2809,17 @@ wheels = [ [[package]] name = "pytest" -version = "9.0.3" +version = "7.4.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, { name = "iniconfig" }, { name = "packaging" }, { name = "pluggy" }, - { name = "pygments" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/7d/0d/549bd94f1a0a402dc8cf64563a117c0f3765662e2e668477624baeec44d5/pytest-9.0.3.tar.gz", hash = "sha256:b86ada508af81d19edeb213c681b1d48246c1a91d304c6c81a427674c17eb91c", size = 1572165, upload-time = "2026-04-07T17:16:18.027Z" } +sdist = { url = "https://files.pythonhosted.org/packages/80/1f/9d8e98e4133ffb16c90f3b405c43e38d3abb715bb5d7a63a5a684f7e46a3/pytest-7.4.4.tar.gz", hash = "sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280", size = 1357116, upload-time = "2023-12-31T12:00:18.035Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d4/24/a372aaf5c9b7208e7112038812994107bc65a84cd00e0354a88c2c77a617/pytest-9.0.3-py3-none-any.whl", hash = "sha256:2c5efc453d45394fdd706ade797c0a81091eccd1d6e4bccfcd476e2b8e0ab5d9", size = 375249, upload-time = "2026-04-07T17:16:16.13Z" }, + { url = "https://files.pythonhosted.org/packages/51/ff/f6e8b8f39e08547faece4bd80f89d5a8de68a38b2d179cc1c4490ffa3286/pytest-7.4.4-py3-none-any.whl", hash = "sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8", size = 325287, upload-time = "2023-12-31T12:00:13.963Z" }, ] [[package]]