From 3c7cd83fa9443a002714f1d2585c5dc5a903042f Mon Sep 17 00:00:00 2001 From: Obada Haddad-Soussac <11889208+ObadaS@users.noreply.github.com> Date: Tue, 10 Mar 2026 16:21:31 +0100 Subject: [PATCH 01/77] Bump version.json --- version.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/version.json b/version.json index 7f8c990a0..68c67befb 100644 --- a/version.json +++ b/version.json @@ -1,5 +1,5 @@ { - "tag_name": "v1.24", - "release_name": "v1.24", - "html_url": "https://github.com/codalab/codabench/releases/tag/v1.24" + "tag_name": "v1.25", + "release_name": "v1.25", + "html_url": "https://github.com/codalab/codabench/releases/tag/v1.25" } From 05f96ef4b82df1764556758f4afdf8e17b58d9e1 Mon Sep 17 00:00:00 2001 From: Obada Haddad Date: Wed, 11 Mar 2026 15:21:14 +0100 Subject: [PATCH 02/77] fix csrf and domain_name when the instance is behind multiple different domain names --- src/settings/base.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/settings/base.py b/src/settings/base.py index ed5b978d7..127b17eb8 100644 --- a/src/settings/base.py +++ b/src/settings/base.py @@ -19,15 +19,21 @@ csrf_https_domain = "https://" + os.environ.get("DOMAIN_NAME").split(':')[0] csrf_http_domain = "http://" + os.environ.get("DOMAIN_NAME").split(':')[0] -CSRF_TRUSTED_ORIGINS = [csrf_https_domain, csrf_http_domain] -CSRF_ALLOWED_ORIGINS = [csrf_https_domain, csrf_http_domain] +if os.environ.get("EXTERNAL_DOMAIN_NAME", "") != "": + csrf_https_external_domain = "https://" + os.environ.get("EXTERNAL_DOMAIN_NAME", "").split(':')[0] + csrf_http_external_domain = "http://" + os.environ.get("EXTERNAL_DOMAIN_NAME", "").split(':')[0] + CSRF_TRUSTED_ORIGINS = [csrf_https_domain, csrf_http_domain, csrf_https_external_domain, csrf_http_external_domain] + CSRF_ALLOWED_ORIGINS = [csrf_https_domain, csrf_http_domain, csrf_https_external_domain, csrf_http_external_domain] -SITE_ID = 1 + DOMAIN_NAME = os.environ.get('EXTERNAL_DOMAIN_NAME').split(':')[0] +else: + CSRF_TRUSTED_ORIGINS = [csrf_https_domain, csrf_http_domain] + CSRF_ALLOWED_ORIGINS = [csrf_https_domain, csrf_http_domain] -SITE_DOMAIN = os.environ.get('SITE_DOMAIN', 'http://localhost') -DOMAIN_NAME = os.environ.get('DOMAIN_NAME', 'localhost').split(':')[0] + DOMAIN_NAME = os.environ.get('DOMAIN_NAME', 'localhost').split(':')[0] -SELENIUM_HOSTNAME = os.environ.get("SELENIUM_HOSTNAME", "localhost") +SITE_DOMAIN = os.environ.get('SITE_DOMAIN', 'http://localhost') +SITE_ID = 1 THIRD_PARTY_APPS = ( From d87143a880fdf42f72a0b99fd2e524882ff936a9 Mon Sep 17 00:00:00 2001 From: Obada Haddad Date: Wed, 11 Mar 2026 15:32:14 +0100 Subject: [PATCH 03/77] add some documentation about multiple domains --- .../How-to-deploy-Codabench-on-your-server.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/documentation/docs/Developers_and_Administrators/How-to-deploy-Codabench-on-your-server.md b/documentation/docs/Developers_and_Administrators/How-to-deploy-Codabench-on-your-server.md index fb2895b7d..aa11532d4 100644 --- a/documentation/docs/Developers_and_Administrators/How-to-deploy-Codabench-on-your-server.md +++ b/documentation/docs/Developers_and_Administrators/How-to-deploy-Codabench-on-your-server.md @@ -439,4 +439,7 @@ Caddyfile : path /{$AWS_STORAGE_BUCKET_NAME}* /{$AWS_STORAGE_PRIVATE_BUCKET_NAME}* } reverse_proxy @min_bucket minio:{$MINIO_PORT} -``` \ No newline at end of file +``` + +## Codabench Instance behind a reverse proxy +If you put your instance behind a reverse proxy and want that proxy to contact the instance via http or https, your `DOMAIN_NAME` might not be reachable from the outside. In this case, you can set `DOMAIN_NAME` as your internal domain name, used by the reverse proxy, and `EXTERNAL_DOMAIN_NAME` as the domain name that is known on external networks (like the internet). \ No newline at end of file From ad31fe2ea01128515a82e8358a9f722500c84283 Mon Sep 17 00:00:00 2001 From: didayolo Date: Sat, 7 Mar 2026 08:46:10 +0100 Subject: [PATCH 04/77] Fix auto-migration --- src/apps/competitions/models.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/apps/competitions/models.py b/src/apps/competitions/models.py index fb7e5f068..b99600930 100644 --- a/src/apps/competitions/models.py +++ b/src/apps/competitions/models.py @@ -153,7 +153,6 @@ def apply_phase_migration(self, current_phase, next_phase, force_migration=False created_by_migration=current_phase, participant=submission.participant, phase=next_phase, - task=submission.task, owner=submission.owner, data=submission.data, ) From 8ca3c789ca86e72d91a6d2ffb9e9f400c0578f45 Mon Sep 17 00:00:00 2001 From: Obada Haddad-Soussac <11889208+ObadaS@users.noreply.github.com> Date: Fri, 13 Mar 2026 12:25:27 +0100 Subject: [PATCH 05/77] Various packages upgrades (Django 5.2) (#2200) * Fix gather to work with Python 3.12 * packages upgrade with uv lock --upgrade * bump gunicorn to 23; new major version of flake8 so new fixes * bump jinja, requests, pillow * bump uvicorn (includes h11) * bump python to 3.10.19 for the compute worker; bump websockets to 16 for instance and compute worker (which also fixes an issue on the compute worker with python 3.10) * Upgrade package.json packages (still some left, like Riot which is a major rewrite) * remove six from pyproject and code * flake8 fixes * bump boto3, botocore, s3transfer * bump urllib3 * bump python to 3.13 on compute worker * bump pyyaml, ipdb, twisted, flex, markdown, flex, pygments, whitenoise, bleach, oyaml, aiofiles, bpython, argh, watchdog * bump celery to 5.6.2 for main instance * bump python to 3.13.11 on instance * flake8 fixes * bump python to 3.14 for playwright pytests * merge pytest.ini into pyproject.toml; bump pytest to 9.0.2 * bump various django related packages; bump pytest to 9.0.2 and merge pytest config from setup.cfg into pyproject.toml * bump django_filter and fix code to make it work * remove coreapi and legacy-cgi, bump setuptools * remove duplicate build in docker-compose.yml and assign better names to containers * bump caddy version and remove useless line in circle-ci config file * bump django to 4.2.29 and various other packages with uv lock --upgrade * bump django to 5.2.12, bump other packages with uv lock --upgrade * bump factory-boy, django-ajax-selects, drf-extensions and replace deprecated django-cors-middleware with django-cors-headers * replace bleach (deprecated) with nh3 * bump django-redis to 6.0.0 * bump rabbitmq to 4.2.4 * cleanup some Containerfiles * Fixed missing code from #2237 that was not merged into this branch * bump blessed and redis on instance; bump charset-normalizer and setuptools on compute worker * fix logout that broke on django 5.2 upgrade --------- Co-authored-by: Chris Harris Co-authored-by: Obada Haddad --- .circleci/config.yml | 2 +- compute_worker/compute_worker.py | 9 +- compute_worker/pyproject.toml | 17 +- compute_worker/uv.lock | 236 ++-- docker-compose.yml | 15 +- package.json | 10 +- packaging/container/Containerfile | 8 +- .../container/Containerfile.compute_worker | 10 +- packaging/container/Containerfile.rabbitmq | 2 +- pyproject.toml | 96 +- setup.cfg | 7 - src/apps/api/fields.py | 3 +- src/apps/api/views/analytics.py | 40 +- src/apps/api/views/competitions.py | 2 +- src/apps/api/views/datasets.py | 2 +- src/apps/api/views/profiles.py | 2 +- src/apps/api/views/queues.py | 2 +- src/apps/api/views/submissions.py | 2 +- src/apps/api/views/tasks.py | 2 +- .../management/commands/generate_data.py | 2 +- src/apps/competitions/models.py | 4 +- src/apps/competitions/tasks.py | 2 +- src/apps/forums/tests/test_smoke_tests.py | 16 +- src/apps/profiles/tokens.py | 13 +- src/settings/test.py | 5 +- src/templates/base.html | 8 +- src/utils/email.py | 6 +- src/utils/storage.py | 4 - tests/.python-version | 1 - tests/pyproject.toml | 10 +- tests/pytest.ini | 7 - tests/uv.lock | 389 +----- uv.lock | 1154 ++++++++--------- 33 files changed, 891 insertions(+), 1197 deletions(-) delete mode 100644 tests/.python-version delete mode 100644 tests/pytest.ini diff --git a/.circleci/config.yml b/.circleci/config.yml index 208cb523d..486a1c7f5 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -69,7 +69,7 @@ jobs: - run: name: "Tests: Run unit/integration tests (excluding e2e)" - command: docker compose exec django py.test src/ -m "not e2e" + command: docker compose exec django py.test src/ # We give the name of the test files manually because we need test_auth.py to be run before the others for state.json file to be created # CI="true" to skip some tests that fail in the CI for now diff --git a/compute_worker/compute_worker.py b/compute_worker/compute_worker.py index 2e39c1800..7ddab6da1 100644 --- a/compute_worker/compute_worker.py +++ b/compute_worker/compute_worker.py @@ -240,6 +240,8 @@ def rewrite_bundle_url_if_needed(url): # ----------------------------------------------------------------------------- @shared_task(name="compute_worker_run") def run_wrapper(run_args): + # We need to convert the UUID given by celery into a byte like object otherwise things will break + run_args.update(secret=str(run_args["secret"])) logger.info(f"Received run arguments: \n {colorize_run_args(json.dumps(run_args))}") run = Run(run_args) @@ -1183,14 +1185,14 @@ def start(self): logger.info("Running scoring program, and then ingestion program") loop = asyncio.new_event_loop() + # Set the event loop for the gather + asyncio.set_event_loop(loop) gathered_tasks = asyncio.gather( self._run_program_directory(program_dir, kind="program"), self._run_program_directory(ingestion_program_dir, kind="ingestion"), self.watch_detailed_results(), - loop=loop, return_exceptions=True, ) - task_results = [] # will store results/exceptions from gather signal.signal(signal.SIGALRM, alarm_handler) signal.alarm(self.execution_time_limit) @@ -1278,6 +1280,9 @@ def start(self): # set logs of this kind to None, since we handled them already logger.info("Program finished") signal.alarm(0) + # Ensure loop is cleaned up + loop.close() + asyncio.set_event_loop(None) if self.is_scoring: # Check if scoring program failed diff --git a/compute_worker/pyproject.toml b/compute_worker/pyproject.toml index fbc8a534a..ea41563ce 100644 --- a/compute_worker/pyproject.toml +++ b/compute_worker/pyproject.toml @@ -2,20 +2,21 @@ authors = [ {name = "codalab"}, ] -requires-python = "==3.9.20" +requires-python = "==3.13.11" dependencies = [ - "celery==5.2.2", + "celery==5.6.2", "requests>=2.32.4,<3", - "watchdog==2.1.1", - "argh==0.26.2", - "websockets==9.1", - "aiofiles==0.4.0", - "pyyaml==6.0.1", + "watchdog==6.0.0", + "argh==0.31.3", + "websockets==16.0.0", + "aiofiles==25.1.0", + "pyyaml==6.0.3", "loguru>=0.7.3,<0.8", "docker>=7.1.0,<8", "rich>=14.2.0,<15", + "setuptools>=82.0.0", ] name = "compute-worker" version = "0.1.0" -description = "" \ No newline at end of file +description = "" diff --git a/compute_worker/uv.lock b/compute_worker/uv.lock index f05387699..6a9f9d311 100644 --- a/compute_worker/uv.lock +++ b/compute_worker/uv.lock @@ -1,14 +1,14 @@ version = 1 revision = 3 -requires-python = "==3.9.20" +requires-python = "==3.13.11" [[package]] name = "aiofiles" -version = "0.4.0" +version = "25.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/94/c2/e3cb60c1b7d9478203d4514e2d33ea424ad9bb98e45b21d6225db93f25c9/aiofiles-0.4.0.tar.gz", hash = "sha256:021ea0ba314a86027c166ecc4b4c07f2d40fc0f4b3a950d1868a0f2571c2bbee", size = 9270, upload-time = "2018-08-11T17:24:08.5Z" } +sdist = { url = "https://files.pythonhosted.org/packages/41/c3/534eac40372d8ee36ef40df62ec129bee4fdb5ad9706e58a29be53b2c970/aiofiles-25.1.0.tar.gz", hash = "sha256:a8d728f0a29de45dc521f18f07297428d56992a742f0cd2701ba86e44d23d5b2", size = 46354, upload-time = "2025-10-09T20:51:04.358Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cf/f2/a67a23bc0bb61d88f82aa7fb84a2fb5f278becfbdc038c5cbb36c31feaf1/aiofiles-0.4.0-py3-none-any.whl", hash = "sha256:1e644c2573f953664368de28d2aa4c89dfd64550429d0c27c4680ccd3aa4985d", size = 9191, upload-time = "2018-08-11T17:24:07.206Z" }, + { url = "https://files.pythonhosted.org/packages/bc/8a/340a1555ae33d7354dbca4faa54948d76d89a27ceef032c8c3bc661d003e/aiofiles-25.1.0-py3-none-any.whl", hash = "sha256:abe311e527c862958650f9438e859c1fa7568a141b22abcd015e120e86a85695", size = 14668, upload-time = "2025-10-09T20:51:03.174Z" }, ] [[package]] @@ -25,25 +25,25 @@ wheels = [ [[package]] name = "argh" -version = "0.26.2" +version = "0.31.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e3/75/1183b5d1663a66aebb2c184e0398724b624cecd4f4b679cb6e25de97ed15/argh-0.26.2.tar.gz", hash = "sha256:e9535b8c84dc9571a48999094fda7f33e63c3f1b74f3e5f3ac0105a58405bb65", size = 32913, upload-time = "2016-05-11T20:55:36.296Z" } +sdist = { url = "https://files.pythonhosted.org/packages/4f/34/bc0b3577a818b4b70c6e318d23fe3c81fc3bb25f978ca8a3965cd8ee3af9/argh-0.31.3.tar.gz", hash = "sha256:f30023d8be14ca5ee6b1b3eeab829151d7bbda464ae07dc4dd5347919c5892f9", size = 57570, upload-time = "2024-07-13T17:54:59.729Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/06/1c/e667a7126f0b84aaa1c56844337bf0ac12445d1beb9c8a6199a7314944bf/argh-0.26.2-py2.py3-none-any.whl", hash = "sha256:a9b3aaa1904eeb78e32394cd46c6f37ac0fb4af6dc488daa58971bdc7d7fcaf3", size = 30872, upload-time = "2016-05-11T20:55:26.893Z" }, + { url = "https://files.pythonhosted.org/packages/d2/52/fcd83710b6f8786df80e5d335882d1b24d1f610f397703e94a6ffb0d6f66/argh-0.31.3-py3-none-any.whl", hash = "sha256:2edac856ff50126f6e47d884751328c9f466bacbbb6cbfdac322053d94705494", size = 44844, upload-time = "2024-07-13T17:54:57.706Z" }, ] [[package]] name = "billiard" -version = "3.6.4.0" +version = "4.2.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/92/91/40de1901da8ec9eeb7c6a22143ba5d55d8aaa790761ca31342cedcd5c793/billiard-3.6.4.0.tar.gz", hash = "sha256:299de5a8da28a783d51b197d496bef4f1595dd023a93a4f59dde1886ae905547", size = 155303, upload-time = "2021-04-01T09:23:50.092Z" } +sdist = { url = "https://files.pythonhosted.org/packages/58/23/b12ac0bcdfb7360d664f40a00b1bda139cbbbced012c34e375506dbd0143/billiard-4.2.4.tar.gz", hash = "sha256:55f542c371209e03cd5862299b74e52e4fbcba8250ba611ad94276b369b6a85f", size = 156537, upload-time = "2025-11-30T13:28:48.52Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2b/89/0c43de91d4e52eaa7bd748771d417f6ac9e51e66b2f61928c2151bf65878/billiard-3.6.4.0-py3-none-any.whl", hash = "sha256:87103ea78fa6ab4d5c751c4909bcff74617d985de7fa8b672cf8618afd5a875b", size = 89472, upload-time = "2021-04-01T09:23:42.019Z" }, + { url = "https://files.pythonhosted.org/packages/cb/87/8bab77b323f16d67be364031220069f79159117dd5e43eeb4be2fef1ac9b/billiard-4.2.4-py3-none-any.whl", hash = "sha256:525b42bdec68d2b983347ac312f892db930858495db601b5836ac24e6477cde5", size = 87070, upload-time = "2025-11-30T13:28:47.016Z" }, ] [[package]] name = "celery" -version = "5.2.2" +version = "5.6.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "billiard" }, @@ -52,59 +52,59 @@ dependencies = [ { name = "click-plugins" }, { name = "click-repl" }, { name = "kombu" }, - { name = "pytz" }, - { name = "setuptools" }, + { name = "python-dateutil" }, + { name = "tzlocal" }, { name = "vine" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bf/00/ac6f7afbf93f0199c70d6ee4e17082c67a4a27d6ebc57c39f0df04426c15/celery-5.2.2.tar.gz", hash = "sha256:2844eb040e915398623a43253a8e1016723442ece6b0751a3c416d8a2b34216f", size = 1470157, upload-time = "2021-12-26T14:31:59.584Z" } +sdist = { url = "https://files.pythonhosted.org/packages/8f/9d/3d13596519cfa7207a6f9834f4b082554845eb3cd2684b5f8535d50c7c44/celery-5.6.2.tar.gz", hash = "sha256:4a8921c3fcf2ad76317d3b29020772103581ed2454c4c042cc55dcc43585009b", size = 1718802, upload-time = "2026-01-04T12:35:58.012Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/1d/a9/57e261eb3d95c74faf6a0ab7b21b4a875bfe3f71d60b1788ddafdef71f37/celery-5.2.2-py3-none-any.whl", hash = "sha256:5a68a351076cfac4f678fa5ffd898105c28825a2224902da006970005196d061", size = 405080, upload-time = "2021-12-26T14:31:56.465Z" }, + { url = "https://files.pythonhosted.org/packages/dd/bd/9ecd619e456ae4ba73b6583cc313f26152afae13e9a82ac4fe7f8856bfd1/celery-5.6.2-py3-none-any.whl", hash = "sha256:3ffafacbe056951b629c7abcf9064c4a2366de0bdfc9fdba421b97ebb68619a5", size = 445502, upload-time = "2026-01-04T12:35:55.894Z" }, ] [[package]] name = "certifi" -version = "2026.1.4" +version = "2026.2.25" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e0/2d/a891ca51311197f6ad14a7ef42e2399f36cf2f9bd44752b3dc4eab60fdc5/certifi-2026.1.4.tar.gz", hash = "sha256:ac726dd470482006e014ad384921ed6438c457018f4b3d204aea4281258b2120", size = 154268, upload-time = "2026-01-04T02:42:41.825Z" } +sdist = { url = "https://files.pythonhosted.org/packages/af/2d/7bf41579a8986e348fa033a31cdd0e4121114f6bce2457e8876010b092dd/certifi-2026.2.25.tar.gz", hash = "sha256:e887ab5cee78ea814d3472169153c2d12cd43b14bd03329a39a9c6e2e80bfba7", size = 155029, upload-time = "2026-02-25T02:54:17.342Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e6/ad/3cc14f097111b4de0040c83a525973216457bbeeb63739ef1ed275c1c021/certifi-2026.1.4-py3-none-any.whl", hash = "sha256:9943707519e4add1115f44c2bc244f782c0249876bf51b6599fee1ffbedd685c", size = 152900, upload-time = "2026-01-04T02:42:40.15Z" }, + { url = "https://files.pythonhosted.org/packages/9a/3c/c17fb3ca2d9c3acff52e30b309f538586f9f5b9c9cf454f3845fc9af4881/certifi-2026.2.25-py3-none-any.whl", hash = "sha256:027692e4402ad994f1c42e52a4997a9763c646b73e4096e4d5d6db8af1d6f0fa", size = 153684, upload-time = "2026-02-25T02:54:15.766Z" }, ] [[package]] name = "charset-normalizer" -version = "3.4.4" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/13/69/33ddede1939fdd074bce5434295f38fae7136463422fe4fd3e0e89b98062/charset_normalizer-3.4.4.tar.gz", hash = "sha256:94537985111c35f28720e43603b8e7b43a6ecfb2ce1d3058bbe955b73404e21a", size = 129418, upload-time = "2025-10-14T04:42:32.879Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/46/7c/0c4760bccf082737ca7ab84a4c2034fcc06b1f21cf3032ea98bd6feb1725/charset_normalizer-3.4.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a9768c477b9d7bd54bc0c86dbaebdec6f03306675526c9927c0e8a04e8f94af9", size = 209609, upload-time = "2025-10-14T04:42:10.922Z" }, - { url = "https://files.pythonhosted.org/packages/bb/a4/69719daef2f3d7f1819de60c9a6be981b8eeead7542d5ec4440f3c80e111/charset_normalizer-3.4.4-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1bee1e43c28aa63cb16e5c14e582580546b08e535299b8b6158a7c9c768a1f3d", size = 149029, upload-time = "2025-10-14T04:42:12.38Z" }, - { url = "https://files.pythonhosted.org/packages/e6/21/8d4e1d6c1e6070d3672908b8e4533a71b5b53e71d16828cc24d0efec564c/charset_normalizer-3.4.4-cp39-cp39-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:fd44c878ea55ba351104cb93cc85e74916eb8fa440ca7903e57575e97394f608", size = 144580, upload-time = "2025-10-14T04:42:13.549Z" }, - { url = "https://files.pythonhosted.org/packages/a7/0a/a616d001b3f25647a9068e0b9199f697ce507ec898cacb06a0d5a1617c99/charset_normalizer-3.4.4-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:0f04b14ffe5fdc8c4933862d8306109a2c51e0704acfa35d51598eb45a1e89fc", size = 162340, upload-time = "2025-10-14T04:42:14.892Z" }, - { url = "https://files.pythonhosted.org/packages/85/93/060b52deb249a5450460e0585c88a904a83aec474ab8e7aba787f45e79f2/charset_normalizer-3.4.4-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:cd09d08005f958f370f539f186d10aec3377d55b9eeb0d796025d4886119d76e", size = 159619, upload-time = "2025-10-14T04:42:16.676Z" }, - { url = "https://files.pythonhosted.org/packages/dd/21/0274deb1cc0632cd587a9a0ec6b4674d9108e461cb4cd40d457adaeb0564/charset_normalizer-3.4.4-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4fe7859a4e3e8457458e2ff592f15ccb02f3da787fcd31e0183879c3ad4692a1", size = 153980, upload-time = "2025-10-14T04:42:17.917Z" }, - { url = "https://files.pythonhosted.org/packages/28/2b/e3d7d982858dccc11b31906976323d790dded2017a0572f093ff982d692f/charset_normalizer-3.4.4-cp39-cp39-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:fa09f53c465e532f4d3db095e0c55b615f010ad81803d383195b6b5ca6cbf5f3", size = 152174, upload-time = "2025-10-14T04:42:19.018Z" }, - { url = "https://files.pythonhosted.org/packages/6e/ff/4a269f8e35f1e58b2df52c131a1fa019acb7ef3f8697b7d464b07e9b492d/charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:7fa17817dc5625de8a027cb8b26d9fefa3ea28c8253929b8d6649e705d2835b6", size = 151666, upload-time = "2025-10-14T04:42:20.171Z" }, - { url = "https://files.pythonhosted.org/packages/da/c9/ec39870f0b330d58486001dd8e532c6b9a905f5765f58a6f8204926b4a93/charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:5947809c8a2417be3267efc979c47d76a079758166f7d43ef5ae8e9f92751f88", size = 145550, upload-time = "2025-10-14T04:42:21.324Z" }, - { url = "https://files.pythonhosted.org/packages/75/8f/d186ab99e40e0ed9f82f033d6e49001701c81244d01905dd4a6924191a30/charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:4902828217069c3c5c71094537a8e623f5d097858ac6ca8252f7b4d10b7560f1", size = 163721, upload-time = "2025-10-14T04:42:22.46Z" }, - { url = "https://files.pythonhosted.org/packages/96/b1/6047663b9744df26a7e479ac1e77af7134b1fcf9026243bb48ee2d18810f/charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_riscv64.whl", hash = "sha256:7c308f7e26e4363d79df40ca5b2be1c6ba9f02bdbccfed5abddb7859a6ce72cf", size = 152127, upload-time = "2025-10-14T04:42:23.712Z" }, - { url = "https://files.pythonhosted.org/packages/59/78/e5a6eac9179f24f704d1be67d08704c3c6ab9f00963963524be27c18ed87/charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:2c9d3c380143a1fedbff95a312aa798578371eb29da42106a29019368a475318", size = 161175, upload-time = "2025-10-14T04:42:24.87Z" }, - { url = "https://files.pythonhosted.org/packages/e5/43/0e626e42d54dd2f8dd6fc5e1c5ff00f05fbca17cb699bedead2cae69c62f/charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:cb01158d8b88ee68f15949894ccc6712278243d95f344770fa7593fa2d94410c", size = 155375, upload-time = "2025-10-14T04:42:27.246Z" }, - { url = "https://files.pythonhosted.org/packages/e9/91/d9615bf2e06f35e4997616ff31248c3657ed649c5ab9d35ea12fce54e380/charset_normalizer-3.4.4-cp39-cp39-win32.whl", hash = "sha256:2677acec1a2f8ef614c6888b5b4ae4060cc184174a938ed4e8ef690e15d3e505", size = 99692, upload-time = "2025-10-14T04:42:28.425Z" }, - { url = "https://files.pythonhosted.org/packages/d1/a9/6c040053909d9d1ef4fcab45fddec083aedc9052c10078339b47c8573ea8/charset_normalizer-3.4.4-cp39-cp39-win_amd64.whl", hash = "sha256:f8e160feb2aed042cd657a72acc0b481212ed28b1b9a95c0cee1621b524e1966", size = 107192, upload-time = "2025-10-14T04:42:29.482Z" }, - { url = "https://files.pythonhosted.org/packages/f0/c6/4fa536b2c0cd3edfb7ccf8469fa0f363ea67b7213a842b90909ca33dd851/charset_normalizer-3.4.4-cp39-cp39-win_arm64.whl", hash = "sha256:b5d84d37db046c5ca74ee7bb47dd6cbc13f80665fdde3e8040bdd3fb015ecb50", size = 100220, upload-time = "2025-10-14T04:42:30.632Z" }, - { url = "https://files.pythonhosted.org/packages/0a/4c/925909008ed5a988ccbb72dcc897407e5d6d3bd72410d69e051fc0c14647/charset_normalizer-3.4.4-py3-none-any.whl", hash = "sha256:7a32c560861a02ff789ad905a2fe94e3f840803362c84fecf1851cb4cf3dc37f", size = 53402, upload-time = "2025-10-14T04:42:31.76Z" }, +version = "3.4.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1d/35/02daf95b9cd686320bb622eb148792655c9412dbb9b67abb5694e5910a24/charset_normalizer-3.4.5.tar.gz", hash = "sha256:95adae7b6c42a6c5b5b559b1a99149f090a57128155daeea91732c8d970d8644", size = 134804, upload-time = "2026-03-06T06:03:19.46Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f5/48/9f34ec4bb24aa3fdba1890c1bddb97c8a4be1bd84ef5c42ac2352563ad05/charset_normalizer-3.4.5-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ac59c15e3f1465f722607800c68713f9fbc2f672b9eb649fe831da4019ae9b23", size = 280788, upload-time = "2026-03-06T06:01:37.126Z" }, + { url = "https://files.pythonhosted.org/packages/0e/09/6003e7ffeb90cc0560da893e3208396a44c210c5ee42efff539639def59b/charset_normalizer-3.4.5-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:165c7b21d19365464e8f70e5ce5e12524c58b48c78c1f5a57524603c1ab003f8", size = 188890, upload-time = "2026-03-06T06:01:38.73Z" }, + { url = "https://files.pythonhosted.org/packages/42/1e/02706edf19e390680daa694d17e2b8eab4b5f7ac285e2a51168b4b22ee6b/charset_normalizer-3.4.5-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:28269983f25a4da0425743d0d257a2d6921ea7d9b83599d4039486ec5b9f911d", size = 206136, upload-time = "2026-03-06T06:01:40.016Z" }, + { url = "https://files.pythonhosted.org/packages/c7/87/942c3def1b37baf3cf786bad01249190f3ca3d5e63a84f831e704977de1f/charset_normalizer-3.4.5-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d27ce22ec453564770d29d03a9506d449efbb9fa13c00842262b2f6801c48cce", size = 202551, upload-time = "2026-03-06T06:01:41.522Z" }, + { url = "https://files.pythonhosted.org/packages/94/0a/af49691938dfe175d71b8a929bd7e4ace2809c0c5134e28bc535660d5262/charset_normalizer-3.4.5-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0625665e4ebdddb553ab185de5db7054393af8879fb0c87bd5690d14379d6819", size = 195572, upload-time = "2026-03-06T06:01:43.208Z" }, + { url = "https://files.pythonhosted.org/packages/20/ea/dfb1792a8050a8e694cfbde1570ff97ff74e48afd874152d38163d1df9ae/charset_normalizer-3.4.5-cp313-cp313-manylinux_2_31_armv7l.whl", hash = "sha256:c23eb3263356d94858655b3e63f85ac5d50970c6e8febcdde7830209139cc37d", size = 184438, upload-time = "2026-03-06T06:01:44.755Z" }, + { url = "https://files.pythonhosted.org/packages/72/12/c281e2067466e3ddd0595bfaea58a6946765ace5c72dfa3edc2f5f118026/charset_normalizer-3.4.5-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e6302ca4ae283deb0af68d2fbf467474b8b6aedcd3dab4db187e07f94c109763", size = 193035, upload-time = "2026-03-06T06:01:46.051Z" }, + { url = "https://files.pythonhosted.org/packages/ba/4f/3792c056e7708e10464bad0438a44708886fb8f92e3c3d29ec5e2d964d42/charset_normalizer-3.4.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e51ae7d81c825761d941962450f50d041db028b7278e7b08930b4541b3e45cb9", size = 191340, upload-time = "2026-03-06T06:01:47.547Z" }, + { url = "https://files.pythonhosted.org/packages/e7/86/80ddba897127b5c7a9bccc481b0cd36c8fefa485d113262f0fe4332f0bf4/charset_normalizer-3.4.5-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:597d10dec876923e5c59e48dbd366e852eacb2b806029491d307daea6b917d7c", size = 185464, upload-time = "2026-03-06T06:01:48.764Z" }, + { url = "https://files.pythonhosted.org/packages/4d/00/b5eff85ba198faacab83e0e4b6f0648155f072278e3b392a82478f8b988b/charset_normalizer-3.4.5-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:5cffde4032a197bd3b42fd0b9509ec60fb70918d6970e4cc773f20fc9180ca67", size = 208014, upload-time = "2026-03-06T06:01:50.371Z" }, + { url = "https://files.pythonhosted.org/packages/c8/11/d36f70be01597fd30850dde8a1269ebc8efadd23ba5785808454f2389bde/charset_normalizer-3.4.5-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:2da4eedcb6338e2321e831a0165759c0c620e37f8cd044a263ff67493be8ffb3", size = 193297, upload-time = "2026-03-06T06:01:51.933Z" }, + { url = "https://files.pythonhosted.org/packages/1a/1d/259eb0a53d4910536c7c2abb9cb25f4153548efb42800c6a9456764649c0/charset_normalizer-3.4.5-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:65a126fb4b070d05340a84fc709dd9e7c75d9b063b610ece8a60197a291d0adf", size = 204321, upload-time = "2026-03-06T06:01:53.887Z" }, + { url = "https://files.pythonhosted.org/packages/84/31/faa6c5b9d3688715e1ed1bb9d124c384fe2fc1633a409e503ffe1c6398c1/charset_normalizer-3.4.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c7a80a9242963416bd81f99349d5f3fce1843c303bd404f204918b6d75a75fd6", size = 197509, upload-time = "2026-03-06T06:01:56.439Z" }, + { url = "https://files.pythonhosted.org/packages/fd/a5/c7d9dd1503ffc08950b3260f5d39ec2366dd08254f0900ecbcf3a6197c7c/charset_normalizer-3.4.5-cp313-cp313-win32.whl", hash = "sha256:f1d725b754e967e648046f00c4facc42d414840f5ccc670c5670f59f83693e4f", size = 132284, upload-time = "2026-03-06T06:01:57.812Z" }, + { url = "https://files.pythonhosted.org/packages/b9/0f/57072b253af40c8aa6636e6de7d75985624c1eb392815b2f934199340a89/charset_normalizer-3.4.5-cp313-cp313-win_amd64.whl", hash = "sha256:e37bd100d2c5d3ba35db9c7c5ba5a9228cbcffe5c4778dc824b164e5257813d7", size = 142630, upload-time = "2026-03-06T06:01:59.062Z" }, + { url = "https://files.pythonhosted.org/packages/31/41/1c4b7cc9f13bd9d369ce3bc993e13d374ce25fa38a2663644283ecf422c1/charset_normalizer-3.4.5-cp313-cp313-win_arm64.whl", hash = "sha256:93b3b2cc5cf1b8743660ce77a4f45f3f6d1172068207c1defc779a36eea6bb36", size = 133254, upload-time = "2026-03-06T06:02:00.281Z" }, + { url = "https://files.pythonhosted.org/packages/c5/60/3a621758945513adfd4db86827a5bafcc615f913dbd0b4c2ed64a65731be/charset_normalizer-3.4.5-py3-none-any.whl", hash = "sha256:9db5e3fcdcee89a78c04dffb3fe33c79f77bd741a624946db2591c81b2fc85b0", size = 55455, upload-time = "2026-03-06T06:03:17.827Z" }, ] [[package]] name = "click" -version = "8.1.8" +version = "8.3.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b9/2e/0090cbf739cee7d23781ad4b89a9894a41538e4fcf4c31dcdd705b78eb8b/click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a", size = 226593, upload-time = "2024-12-21T18:38:44.339Z" } +sdist = { url = "https://files.pythonhosted.org/packages/3d/fa/656b739db8587d7b5dfa22e22ed02566950fbfbcdc20311993483657a5c0/click-8.3.1.tar.gz", hash = "sha256:12ff4785d337a1bb490bb7e9c2b1ee5da3112e94a8622f26a6c77f5d2fc6842a", size = 295065, upload-time = "2025-11-15T20:45:42.706Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/d4/7ebdbd03970677812aac39c869717059dbb71a4cfc033ca6e5221787892c/click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2", size = 98188, upload-time = "2024-12-21T18:38:41.666Z" }, + { url = "https://files.pythonhosted.org/packages/98/78/01c019cdb5d6498122777c1a43056ebb3ebfeef2076d9d026bfe15583b2b/click-8.3.1-py3-none-any.whl", hash = "sha256:981153a64e25f12d547d3426c367a4857371575ee7ad18df2a6183ab0545b2a6", size = 108274, upload-time = "2025-11-15T20:45:41.139Z" }, ] [[package]] @@ -166,22 +166,24 @@ dependencies = [ { name = "pyyaml" }, { name = "requests" }, { name = "rich" }, + { name = "setuptools" }, { name = "watchdog" }, { name = "websockets" }, ] [package.metadata] requires-dist = [ - { name = "aiofiles", specifier = "==0.4.0" }, - { name = "argh", specifier = "==0.26.2" }, - { name = "celery", specifier = "==5.2.2" }, + { name = "aiofiles", specifier = "==25.1.0" }, + { name = "argh", specifier = "==0.31.3" }, + { name = "celery", specifier = "==5.6.2" }, { name = "docker", specifier = ">=7.1.0,<8" }, { name = "loguru", specifier = ">=0.7.3,<0.8" }, - { name = "pyyaml", specifier = "==6.0.1" }, + { name = "pyyaml", specifier = "==6.0.3" }, { name = "requests", specifier = ">=2.32.4,<3" }, { name = "rich", specifier = ">=14.2.0,<15" }, - { name = "watchdog", specifier = "==2.1.1" }, - { name = "websockets", specifier = "==9.1" }, + { name = "setuptools", specifier = ">=82.0.0" }, + { name = "watchdog", specifier = "==6.0.0" }, + { name = "websockets", specifier = "==16.0.0" }, ] [[package]] @@ -237,14 +239,14 @@ wheels = [ [[package]] name = "markdown-it-py" -version = "3.0.0" +version = "4.0.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "mdurl" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", size = 74596, upload-time = "2023-06-03T06:41:14.443Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5b/f5/4ec618ed16cc4f8fb3b701563655a69816155e79e24a17b651541804721d/markdown_it_py-4.0.0.tar.gz", hash = "sha256:cb0a2b4aa34f932c007117b194e945bd74e0ec24133ceb5bac59009cda1cb9f3", size = 73070, upload-time = "2025-08-11T12:57:52.854Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", size = 87528, upload-time = "2023-06-03T06:41:11.019Z" }, + { url = "https://files.pythonhosted.org/packages/94/54/e7d793b573f298e1c9013b8c4dade17d481164aa517d1d7148619c2cedbf/markdown_it_py-4.0.0-py3-none-any.whl", hash = "sha256:87327c59b172c5011896038353a81343b6754500a08cd7a4973bb48c6d578147", size = 87321, upload-time = "2025-08-11T12:57:51.923Z" }, ] [[package]] @@ -287,12 +289,15 @@ wheels = [ ] [[package]] -name = "pytz" -version = "2025.2" +name = "python-dateutil" +version = "2.9.0.post0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884, upload-time = "2025-03-25T02:25:00.538Z" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225, upload-time = "2025-03-25T02:24:58.468Z" }, + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, ] [[package]] @@ -300,25 +305,27 @@ name = "pywin32" version = "311" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/59/42/b86689aac0cdaee7ae1c58d464b0ff04ca909c19bb6502d4973cdd9f9544/pywin32-311-cp39-cp39-win32.whl", hash = "sha256:aba8f82d551a942cb20d4a83413ccbac30790b50efb89a75e4f586ac0bb8056b", size = 8760837, upload-time = "2025-07-14T20:12:59.59Z" }, - { url = "https://files.pythonhosted.org/packages/9f/8a/1403d0353f8c5a2f0829d2b1c4becbf9da2f0a4d040886404fc4a5431e4d/pywin32-311-cp39-cp39-win_amd64.whl", hash = "sha256:e0c4cfb0621281fe40387df582097fd796e80430597cb9944f0ae70447bacd91", size = 9590187, upload-time = "2025-07-14T20:13:01.419Z" }, - { url = "https://files.pythonhosted.org/packages/60/22/e0e8d802f124772cec9c75430b01a212f86f9de7546bda715e54140d5aeb/pywin32-311-cp39-cp39-win_arm64.whl", hash = "sha256:62ea666235135fee79bb154e695f3ff67370afefd71bd7fea7512fc70ef31e3d", size = 8778162, upload-time = "2025-07-14T20:13:03.544Z" }, + { url = "https://files.pythonhosted.org/packages/a5/be/3fd5de0979fcb3994bfee0d65ed8ca9506a8a1260651b86174f6a86f52b3/pywin32-311-cp313-cp313-win32.whl", hash = "sha256:f95ba5a847cba10dd8c4d8fefa9f2a6cf283b8b88ed6178fa8a6c1ab16054d0d", size = 8705700, upload-time = "2025-07-14T20:13:26.471Z" }, + { url = "https://files.pythonhosted.org/packages/e3/28/e0a1909523c6890208295a29e05c2adb2126364e289826c0a8bc7297bd5c/pywin32-311-cp313-cp313-win_amd64.whl", hash = "sha256:718a38f7e5b058e76aee1c56ddd06908116d35147e133427e59a3983f703a20d", size = 9494700, upload-time = "2025-07-14T20:13:28.243Z" }, + { url = "https://files.pythonhosted.org/packages/04/bf/90339ac0f55726dce7d794e6d79a18a91265bdf3aa70b6b9ca52f35e022a/pywin32-311-cp313-cp313-win_arm64.whl", hash = "sha256:7b4075d959648406202d92a2310cb990fea19b535c7f4a78d3f5e10b926eeb8a", size = 8709318, upload-time = "2025-07-14T20:13:30.348Z" }, ] [[package]] name = "pyyaml" -version = "6.0.1" +version = "6.0.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/cd/e5/af35f7ea75cf72f2cd079c95ee16797de7cd71f29ea7c68ae5ce7be1eda0/PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43", size = 125201, upload-time = "2023-07-18T00:00:23.308Z" } +sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/57/c5/5d09b66b41d549914802f482a2118d925d876dc2a35b2d127694c1345c34/PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8", size = 197846, upload-time = "2023-07-17T23:59:46.424Z" }, - { url = "https://files.pythonhosted.org/packages/0e/88/21b2f16cb2123c1e9375f2c93486e35fdc86e63f02e274f0e99c589ef153/PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859", size = 174396, upload-time = "2023-07-17T23:59:49.538Z" }, - { url = "https://files.pythonhosted.org/packages/ac/6c/967d91a8edf98d2b2b01d149bd9e51b8f9fb527c98d80ebb60c6b21d60c4/PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6", size = 731824, upload-time = "2023-07-17T23:59:58.111Z" }, - { url = "https://files.pythonhosted.org/packages/4a/4b/c71ef18ef83c82f99e6da8332910692af78ea32bd1d1d76c9787dfa36aea/PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0", size = 754777, upload-time = "2023-07-18T00:00:06.716Z" }, - { url = "https://files.pythonhosted.org/packages/7d/39/472f2554a0f1e825bd7c5afc11c817cd7a2f3657460f7159f691fbb37c51/PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c", size = 738883, upload-time = "2023-07-18T00:00:14.423Z" }, - { url = "https://files.pythonhosted.org/packages/40/da/a175a35cf5583580e90ac3e2a3dbca90e43011593ae62ce63f79d7b28d92/PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5", size = 750294, upload-time = "2023-08-28T18:43:37.153Z" }, - { url = "https://files.pythonhosted.org/packages/24/62/7fcc372442ec8ea331da18c24b13710e010c5073ab851ef36bf9dacb283f/PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c", size = 136936, upload-time = "2023-07-18T00:00:17.167Z" }, - { url = "https://files.pythonhosted.org/packages/84/4d/82704d1ab9290b03da94e6425f5e87396b999fd7eb8e08f3a92c158402bf/PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486", size = 152751, upload-time = "2023-07-18T00:00:19.939Z" }, + { url = "https://files.pythonhosted.org/packages/d1/11/0fd08f8192109f7169db964b5707a2f1e8b745d4e239b784a5a1dd80d1db/pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8", size = 181669, upload-time = "2025-09-25T21:32:23.673Z" }, + { url = "https://files.pythonhosted.org/packages/b1/16/95309993f1d3748cd644e02e38b75d50cbc0d9561d21f390a76242ce073f/pyyaml-6.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1", size = 173252, upload-time = "2025-09-25T21:32:25.149Z" }, + { url = "https://files.pythonhosted.org/packages/50/31/b20f376d3f810b9b2371e72ef5adb33879b25edb7a6d072cb7ca0c486398/pyyaml-6.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c", size = 767081, upload-time = "2025-09-25T21:32:26.575Z" }, + { url = "https://files.pythonhosted.org/packages/49/1e/a55ca81e949270d5d4432fbbd19dfea5321eda7c41a849d443dc92fd1ff7/pyyaml-6.0.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5", size = 841159, upload-time = "2025-09-25T21:32:27.727Z" }, + { url = "https://files.pythonhosted.org/packages/74/27/e5b8f34d02d9995b80abcef563ea1f8b56d20134d8f4e5e81733b1feceb2/pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6", size = 801626, upload-time = "2025-09-25T21:32:28.878Z" }, + { url = "https://files.pythonhosted.org/packages/f9/11/ba845c23988798f40e52ba45f34849aa8a1f2d4af4b798588010792ebad6/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6", size = 753613, upload-time = "2025-09-25T21:32:30.178Z" }, + { url = "https://files.pythonhosted.org/packages/3d/e0/7966e1a7bfc0a45bf0a7fb6b98ea03fc9b8d84fa7f2229e9659680b69ee3/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be", size = 794115, upload-time = "2025-09-25T21:32:31.353Z" }, + { url = "https://files.pythonhosted.org/packages/de/94/980b50a6531b3019e45ddeada0626d45fa85cbe22300844a7983285bed3b/pyyaml-6.0.3-cp313-cp313-win32.whl", hash = "sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26", size = 137427, upload-time = "2025-09-25T21:32:32.58Z" }, + { url = "https://files.pythonhosted.org/packages/97/c9/39d5b874e8b28845e4ec2202b5da735d0199dbe5b8fb85f91398814a9a46/pyyaml-6.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c", size = 154090, upload-time = "2025-09-25T21:32:33.659Z" }, + { url = "https://files.pythonhosted.org/packages/73/e8/2bdf3ca2090f68bb3d75b44da7bbc71843b19c9f2b9cb9b0f4ab7a5a4329/pyyaml-6.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb", size = 140246, upload-time = "2025-09-25T21:32:34.663Z" }, ] [[package]] @@ -338,24 +345,33 @@ wheels = [ [[package]] name = "rich" -version = "14.3.2" +version = "14.3.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markdown-it-py" }, { name = "pygments" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/74/99/a4cab2acbb884f80e558b0771e97e21e939c5dfb460f488d19df485e8298/rich-14.3.2.tar.gz", hash = "sha256:e712f11c1a562a11843306f5ed999475f09ac31ffb64281f73ab29ffdda8b3b8", size = 230143, upload-time = "2026-02-01T16:20:47.908Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b3/c6/f3b320c27991c46f43ee9d856302c70dc2d0fb2dba4842ff739d5f46b393/rich-14.3.3.tar.gz", hash = "sha256:b8daa0b9e4eef54dd8cf7c86c03713f53241884e814f4e2f5fb342fe520f639b", size = 230582, upload-time = "2026-02-19T17:23:12.474Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ef/45/615f5babd880b4bd7d405cc0dc348234c5ffb6ed1ea33e152ede08b2072d/rich-14.3.2-py3-none-any.whl", hash = "sha256:08e67c3e90884651da3239ea668222d19bea7b589149d8014a21c633420dbb69", size = 309963, upload-time = "2026-02-01T16:20:46.078Z" }, + { url = "https://files.pythonhosted.org/packages/14/25/b208c5683343959b670dc001595f2f3737e051da617f66c31f7c4fa93abc/rich-14.3.3-py3-none-any.whl", hash = "sha256:793431c1f8619afa7d3b52b2cdec859562b950ea0d4b6b505397612db8d5362d", size = 310458, upload-time = "2026-02-19T17:23:13.732Z" }, ] [[package]] name = "setuptools" -version = "80.10.2" +version = "82.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/4f/db/cfac1baf10650ab4d1c111714410d2fbb77ac5a616db26775db562c8fab2/setuptools-82.0.1.tar.gz", hash = "sha256:7d872682c5d01cfde07da7bccc7b65469d3dca203318515ada1de5eda35efbf9", size = 1152316, upload-time = "2026-03-09T12:47:17.221Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9d/76/f789f7a86709c6b087c5a2f52f911838cad707cc613162401badc665acfe/setuptools-82.0.1-py3-none-any.whl", hash = "sha256:a59e362652f08dcd477c78bb6e7bd9d80a7995bc73ce773050228a348ce2e5bb", size = 1006223, upload-time = "2026-03-09T12:47:15.026Z" }, +] + +[[package]] +name = "six" +version = "1.17.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/76/95/faf61eb8363f26aa7e1d762267a8d602a1b26d4f3a1e758e92cb3cb8b054/setuptools-80.10.2.tar.gz", hash = "sha256:8b0e9d10c784bf7d262c4e5ec5d4ec94127ce206e8738f29a437945fbc219b70", size = 1200343, upload-time = "2026-01-25T22:38:17.252Z" } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/94/b8/f1f62a5e3c0ad2ff1d189590bfa4c46b4f3b6e49cef6f26c6ee4e575394d/setuptools-80.10.2-py3-none-any.whl", hash = "sha256:95b30ddfb717250edb492926c92b5221f7ef3fbcc2b07579bcd4a27da21d0173", size = 1064234, upload-time = "2026-01-25T22:38:15.216Z" }, + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, ] [[package]] @@ -367,6 +383,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/c7/b0/003792df09decd6849a5e39c28b513c06e84436a54440380862b5aeff25d/tzdata-2025.3-py2.py3-none-any.whl", hash = "sha256:06a47e5700f3081aab02b2e513160914ff0694bce9947d6b76ebd6bf57cfc5d1", size = 348521, upload-time = "2025-12-13T17:45:33.889Z" }, ] +[[package]] +name = "tzlocal" +version = "5.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { 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 = [ + { url = "https://files.pythonhosted.org/packages/c2/14/e2a54fabd4f08cd7af1c07030603c3356b74da07f7cc056e600436edfa17/tzlocal-5.3.1-py3-none-any.whl", hash = "sha256:eb1a66c3ef5847adf7a834f1be0800581b683b5608e74f86ecbcef8ab91bb85d", size = 18026, upload-time = "2025-03-05T21:17:39.857Z" }, +] + [[package]] name = "urllib3" version = "2.6.3" @@ -387,46 +415,50 @@ wheels = [ [[package]] name = "watchdog" -version = "2.1.1" +version = "6.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/23/7c/82cafb290b818c331192e52609af8d41c34b55f468957ba5bd0a8d2cb776/watchdog-2.1.1.tar.gz", hash = "sha256:2894440b4ea95a6ef4c5d152deedbe270cae46092682710b7028a04d6a6980f6", size = 105882, upload-time = "2021-05-10T13:51:02.629Z" } +sdist = { url = "https://files.pythonhosted.org/packages/db/7d/7f3d619e951c88ed75c6037b246ddcf2d322812ee8ea189be89511721d54/watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282", size = 131220, upload-time = "2024-11-01T14:07:13.037Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ae/85/655e322ef55e4c98672e7f003fa95dff5b58149c50465b93ef947b31be90/watchdog-2.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:22c13c19599b0dec7192f8f7d26404d5223cb36c9a450e96430483e685dccd7e", size = 83829, upload-time = "2021-05-10T13:50:42.16Z" }, - { url = "https://files.pythonhosted.org/packages/bc/27/6f250c6a534b8811dcd0efcd5f9574dd2b8c077571aa66544947b0b76d0c/watchdog-2.1.1-py3-none-manylinux2014_aarch64.whl", hash = "sha256:aa59afc87a892ed92d7d88d09f4b736f1336fc35540b403da7ee00c3be74bd07", size = 74713, upload-time = "2021-05-10T13:50:46.671Z" }, - { url = "https://files.pythonhosted.org/packages/ad/5f/3813b46bd10efa4870798850af2685cc3cce6e989d5a3397df0ee1cfe0e6/watchdog-2.1.1-py3-none-manylinux2014_armv7l.whl", hash = "sha256:a1b3f76e2a0713b406348dd5b9df2aa02bdd741a6ddf54f4c6410b395e077502", size = 74715, upload-time = "2021-05-10T13:50:48.086Z" }, - { url = "https://files.pythonhosted.org/packages/81/29/6abfafa77d6c6ead43ba92fd5537fd2fc33f7dc916460457d06cba45a398/watchdog-2.1.1-py3-none-manylinux2014_i686.whl", hash = "sha256:9f1b124fe2d4a1f37b7068f6289c2b1eba44859eb790bf6bd709adff224a5469", size = 74710, upload-time = "2021-05-10T13:50:49.983Z" }, - { url = "https://files.pythonhosted.org/packages/34/87/5298db4bf7bef093254bedd48fee54a3fc63f30185b0f2359d0bb8f213a4/watchdog-2.1.1-py3-none-manylinux2014_ppc64.whl", hash = "sha256:a9005f968220b715101d5fcdde5f5deda54f0d1873f618724f547797171f5e97", size = 74711, upload-time = "2021-05-10T13:50:51.297Z" }, - { url = "https://files.pythonhosted.org/packages/0d/5a/629a27cdb7c76744402598c76c0170d9298ecb61bb9238143811d1089897/watchdog-2.1.1-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:027c532e2fd3367d55fe235510fc304381a6cc88d0dcd619403e57ffbd83c1d2", size = 74714, upload-time = "2021-05-10T13:50:52.802Z" }, - { url = "https://files.pythonhosted.org/packages/fb/ef/5d2a010e6dea46260103a0615e7f433833a37dcee851e743cbf039a85b82/watchdog-2.1.1-py3-none-manylinux2014_s390x.whl", hash = "sha256:4d83c89ba24bd67b7a7d5752a4ef953ec40db69d4d30582bd1f27d3ecb6b61b0", size = 74714, upload-time = "2021-05-10T13:50:54.87Z" }, - { url = "https://files.pythonhosted.org/packages/58/f6/6b538562aaa62294ca0a1d18b59d9fcb1a43fe166fa5b3a258f445d64119/watchdog-2.1.1-py3-none-manylinux2014_x86_64.whl", hash = "sha256:67c645b1e500cc74d550e9aad4829309c5084dc55e8dc4e1c25d5da23e5be239", size = 74714, upload-time = "2021-05-10T13:50:56.916Z" }, - { url = "https://files.pythonhosted.org/packages/73/8f/cb225682a508d2c43f6a1f4cfe274a75a2e156ec2d73af055d5d47542f26/watchdog-2.1.1-py3-none-win32.whl", hash = "sha256:12645d41d7307601b318c48861e776ce7a9fdcad9f74961013ec39037050582c", size = 74698, upload-time = "2021-05-10T13:50:58.739Z" }, - { url = "https://files.pythonhosted.org/packages/85/64/592c43792c0f6b18b031d5944ba1c36d4a2775d72cb06c4088050ab4834a/watchdog-2.1.1-py3-none-win_amd64.whl", hash = "sha256:16078cd241a95124acd4d8d3efba2140faec9300674b12413cc08be11b825d56", size = 74701, upload-time = "2021-05-10T13:50:59.987Z" }, - { url = "https://files.pythonhosted.org/packages/49/5c/69074682ce2e5dbe701755d778cdf5480448462e901ea088cc7e6e2c8261/watchdog-2.1.1-py3-none-win_ia64.whl", hash = "sha256:20d4cabfa2ad7239995d81a0163bc0264a3e104a64f33c6f0a21ad75a0d915d9", size = 74701, upload-time = "2021-05-10T13:51:01.299Z" }, + { url = "https://files.pythonhosted.org/packages/68/98/b0345cabdce2041a01293ba483333582891a3bd5769b08eceb0d406056ef/watchdog-6.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:490ab2ef84f11129844c23fb14ecf30ef3d8a6abafd3754a6f75ca1e6654136c", size = 96480, upload-time = "2024-11-01T14:06:42.952Z" }, + { url = "https://files.pythonhosted.org/packages/85/83/cdf13902c626b28eedef7ec4f10745c52aad8a8fe7eb04ed7b1f111ca20e/watchdog-6.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:76aae96b00ae814b181bb25b1b98076d5fc84e8a53cd8885a318b42b6d3a5134", size = 88451, upload-time = "2024-11-01T14:06:45.084Z" }, + { url = "https://files.pythonhosted.org/packages/fe/c4/225c87bae08c8b9ec99030cd48ae9c4eca050a59bf5c2255853e18c87b50/watchdog-6.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a175f755fc2279e0b7312c0035d52e27211a5bc39719dd529625b1930917345b", size = 89057, upload-time = "2024-11-01T14:06:47.324Z" }, + { url = "https://files.pythonhosted.org/packages/a9/c7/ca4bf3e518cb57a686b2feb4f55a1892fd9a3dd13f470fca14e00f80ea36/watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13", size = 79079, upload-time = "2024-11-01T14:06:59.472Z" }, + { url = "https://files.pythonhosted.org/packages/5c/51/d46dc9332f9a647593c947b4b88e2381c8dfc0942d15b8edc0310fa4abb1/watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379", size = 79078, upload-time = "2024-11-01T14:07:01.431Z" }, + { url = "https://files.pythonhosted.org/packages/d4/57/04edbf5e169cd318d5f07b4766fee38e825d64b6913ca157ca32d1a42267/watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e", size = 79076, upload-time = "2024-11-01T14:07:02.568Z" }, + { url = "https://files.pythonhosted.org/packages/ab/cc/da8422b300e13cb187d2203f20b9253e91058aaf7db65b74142013478e66/watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f", size = 79077, upload-time = "2024-11-01T14:07:03.893Z" }, + { url = "https://files.pythonhosted.org/packages/2c/3b/b8964e04ae1a025c44ba8e4291f86e97fac443bca31de8bd98d3263d2fcf/watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26", size = 79078, upload-time = "2024-11-01T14:07:05.189Z" }, + { url = "https://files.pythonhosted.org/packages/62/ae/a696eb424bedff7407801c257d4b1afda455fe40821a2be430e173660e81/watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c", size = 79077, upload-time = "2024-11-01T14:07:06.376Z" }, + { url = "https://files.pythonhosted.org/packages/b5/e8/dbf020b4d98251a9860752a094d09a65e1b436ad181faf929983f697048f/watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2", size = 79078, upload-time = "2024-11-01T14:07:07.547Z" }, + { url = "https://files.pythonhosted.org/packages/07/f6/d0e5b343768e8bcb4cda79f0f2f55051bf26177ecd5651f84c07567461cf/watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a", size = 79065, upload-time = "2024-11-01T14:07:09.525Z" }, + { url = "https://files.pythonhosted.org/packages/db/d9/c495884c6e548fce18a8f40568ff120bc3a4b7b99813081c8ac0c936fa64/watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680", size = 79070, upload-time = "2024-11-01T14:07:10.686Z" }, + { url = "https://files.pythonhosted.org/packages/33/e8/e40370e6d74ddba47f002a32919d91310d6074130fe4e17dabcafc15cbf1/watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f", size = 79067, upload-time = "2024-11-01T14:07:11.845Z" }, ] [[package]] name = "wcwidth" -version = "0.5.3" +version = "0.6.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c2/62/a7c072fbfefb2980a00f99ca994279cb9ecf310cb2e6b2a4d2a28fe192b3/wcwidth-0.5.3.tar.gz", hash = "sha256:53123b7af053c74e9fe2e92ac810301f6139e64379031f7124574212fb3b4091", size = 157587, upload-time = "2026-01-31T03:52:10.92Z" } +sdist = { url = "https://files.pythonhosted.org/packages/35/a2/8e3becb46433538a38726c948d3399905a4c7cabd0df578ede5dc51f0ec2/wcwidth-0.6.0.tar.gz", hash = "sha256:cdc4e4262d6ef9a1a57e018384cbeb1208d8abbc64176027e2c2455c81313159", size = 159684, upload-time = "2026-02-06T19:19:40.919Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/3c/c1/d73f12f8cdb1891334a2ccf7389eed244d3941e74d80dd220badb937f3fb/wcwidth-0.5.3-py3-none-any.whl", hash = "sha256:d584eff31cd4753e1e5ff6c12e1edfdb324c995713f75d26c29807bb84bf649e", size = 92981, upload-time = "2026-01-31T03:52:09.14Z" }, + { url = "https://files.pythonhosted.org/packages/68/5a/199c59e0a824a3db2b89c5d2dade7ab5f9624dbf6448dc291b46d5ec94d3/wcwidth-0.6.0-py3-none-any.whl", hash = "sha256:1a3a1e510b553315f8e146c54764f4fb6264ffad731b3d78088cdb1478ffbdad", size = 94189, upload-time = "2026-02-06T19:19:39.646Z" }, ] [[package]] name = "websockets" -version = "9.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0d/bd/5262054455ab2067e51de331bfbc53a1dfa9071af7c424cf7c0793c4349a/websockets-9.1.tar.gz", hash = "sha256:276d2339ebf0df4f45df453923ebd2270b87900eda5dfd4a6b0cfa15f82111c3", size = 76694, upload-time = "2021-05-27T19:34:30.628Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e5/b3/0ff0676cb0043bc85f4cb548733a37b5e7e9b82fe253edd0f5d173b2ec43/websockets-9.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e9e5fd6dbdf95d99bc03732ded1fc8ef22ebbc05999ac7e0c7bf57fe6e4e5ae2", size = 88721, upload-time = "2021-05-27T19:34:22.69Z" }, - { url = "https://files.pythonhosted.org/packages/46/e7/ebbe5d8ce59c77b59a13551fe0103c73131fab0b7cfb2fdc10b58f252e13/websockets-9.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:9e7fdc775fe7403dbd8bc883ba59576a6232eac96dacb56512daacf7af5d618d", size = 101297, upload-time = "2021-05-27T19:34:23.713Z" }, - { url = "https://files.pythonhosted.org/packages/96/d0/3e5beec93673fc4526e118f45e56df8a292b6f009002675614f4e3dfcf3a/websockets-9.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:597c28f3aa7a09e8c070a86b03107094ee5cdafcc0d55f2f2eac92faac8dc67d", size = 102182, upload-time = "2021-05-27T19:34:24.705Z" }, - { url = "https://files.pythonhosted.org/packages/18/9c/3334655fd3eb93fe3b728203db354711cec48044c2d7b8bfbde9ea0ffc5d/websockets-9.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:ad893d889bc700a5835e0a95a3e4f2c39e91577ab232a3dc03c262a0f8fc4b5c", size = 101299, upload-time = "2021-05-27T19:34:25.696Z" }, - { url = "https://files.pythonhosted.org/packages/c8/31/bb59de44c04c5d81083a5ee93eeb3e9b30d32aa8f6b72080eb5da4bb73f7/websockets-9.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:1d6b4fddb12ab9adf87b843cd4316c4bd602db8d5efd2fb83147f0458fe85135", size = 102182, upload-time = "2021-05-27T19:34:26.602Z" }, - { url = "https://files.pythonhosted.org/packages/21/9b/112c8439c718432fd3fb1f6fa56050767a70ad977712008cec036d061a7a/websockets-9.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:ebf459a1c069f9866d8569439c06193c586e72c9330db1390af7c6a0a32c4afd", size = 102252, upload-time = "2021-05-27T19:34:27.549Z" }, - { url = "https://files.pythonhosted.org/packages/d6/c9/8d3e0904e624b1b83f1939170ed28002c971dcf960093eb2154af8408b67/websockets-9.1-cp39-cp39-win32.whl", hash = "sha256:be5fd35e99970518547edc906efab29afd392319f020c3c58b0e1a158e16ed20", size = 89556, upload-time = "2021-05-27T19:34:28.646Z" }, - { url = "https://files.pythonhosted.org/packages/d7/d7/cd60ce74675402998e285f9f54baf86c80daaa473e557c92f53c01b10f2b/websockets-9.1-cp39-cp39-win_amd64.whl", hash = "sha256:85db8090ba94e22d964498a47fdd933b8875a1add6ebc514c7ac8703eb97bbf0", size = 90217, upload-time = "2021-05-27T19:34:29.707Z" }, +version = "16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/04/24/4b2031d72e840ce4c1ccb255f693b15c334757fc50023e4db9537080b8c4/websockets-16.0.tar.gz", hash = "sha256:5f6261a5e56e8d5c42a4497b364ea24d94d9563e8fbd44e78ac40879c60179b5", size = 179346, upload-time = "2026-01-10T09:23:47.181Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cc/9c/baa8456050d1c1b08dd0ec7346026668cbc6f145ab4e314d707bb845bf0d/websockets-16.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:878b336ac47938b474c8f982ac2f7266a540adc3fa4ad74ae96fea9823a02cc9", size = 177364, upload-time = "2026-01-10T09:22:59.333Z" }, + { url = "https://files.pythonhosted.org/packages/7e/0c/8811fc53e9bcff68fe7de2bcbe75116a8d959ac699a3200f4847a8925210/websockets-16.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:52a0fec0e6c8d9a784c2c78276a48a2bdf099e4ccc2a4cad53b27718dbfd0230", size = 175039, upload-time = "2026-01-10T09:23:01.171Z" }, + { url = "https://files.pythonhosted.org/packages/aa/82/39a5f910cb99ec0b59e482971238c845af9220d3ab9fa76dd9162cda9d62/websockets-16.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e6578ed5b6981005df1860a56e3617f14a6c307e6a71b4fff8c48fdc50f3ed2c", size = 175323, upload-time = "2026-01-10T09:23:02.341Z" }, + { url = "https://files.pythonhosted.org/packages/bd/28/0a25ee5342eb5d5f297d992a77e56892ecb65e7854c7898fb7d35e9b33bd/websockets-16.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:95724e638f0f9c350bb1c2b0a7ad0e83d9cc0c9259f3ea94e40d7b02a2179ae5", size = 184975, upload-time = "2026-01-10T09:23:03.756Z" }, + { url = "https://files.pythonhosted.org/packages/f9/66/27ea52741752f5107c2e41fda05e8395a682a1e11c4e592a809a90c6a506/websockets-16.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c0204dc62a89dc9d50d682412c10b3542d748260d743500a85c13cd1ee4bde82", size = 186203, upload-time = "2026-01-10T09:23:05.01Z" }, + { url = "https://files.pythonhosted.org/packages/37/e5/8e32857371406a757816a2b471939d51c463509be73fa538216ea52b792a/websockets-16.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:52ac480f44d32970d66763115edea932f1c5b1312de36df06d6b219f6741eed8", size = 185653, upload-time = "2026-01-10T09:23:06.301Z" }, + { url = "https://files.pythonhosted.org/packages/9b/67/f926bac29882894669368dc73f4da900fcdf47955d0a0185d60103df5737/websockets-16.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6e5a82b677f8f6f59e8dfc34ec06ca6b5b48bc4fcda346acd093694cc2c24d8f", size = 184920, upload-time = "2026-01-10T09:23:07.492Z" }, + { url = "https://files.pythonhosted.org/packages/3c/a1/3d6ccdcd125b0a42a311bcd15a7f705d688f73b2a22d8cf1c0875d35d34a/websockets-16.0-cp313-cp313-win32.whl", hash = "sha256:abf050a199613f64c886ea10f38b47770a65154dc37181bfaff70c160f45315a", size = 178255, upload-time = "2026-01-10T09:23:09.245Z" }, + { url = "https://files.pythonhosted.org/packages/6b/ae/90366304d7c2ce80f9b826096a9e9048b4bb760e44d3b873bb272cba696b/websockets-16.0-cp313-cp313-win_amd64.whl", hash = "sha256:3425ac5cf448801335d6fdc7ae1eb22072055417a96cc6b31b3861f455fbc156", size = 178689, upload-time = "2026-01-10T09:23:10.483Z" }, + { url = "https://files.pythonhosted.org/packages/6f/28/258ebab549c2bf3e64d2b0217b973467394a9cea8c42f70418ca2c5d0d2e/websockets-16.0-py3-none-any.whl", hash = "sha256:1637db62fad1dc833276dded54215f2c7fa46912301a24bd94d45d46a011ceec", size = 171598, upload-time = "2026-01-10T09:23:45.395Z" }, ] [[package]] diff --git a/docker-compose.yml b/docker-compose.yml index 46c1783de..de8bfe42e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -3,7 +3,7 @@ services: # Web Services #---------------------------------------------------------------------------------------------------- caddy: - image: caddy:2.10.0 + image: caddy:2.11.1 env_file: .env environment: - ACME_AGREE=true @@ -22,9 +22,11 @@ services: - django django: + container_name: django build: context: . dockerfile: packaging/container/Containerfile + image: django_site-worker # NOTE: We use watchmedo to reload gunicorn nicely, Uvicorn + Gunicorn reloads don't work well command: ["python manage.py migrate --no-input && python manage.py collectstatic --no-input && cd /app/src && watchmedo auto-restart -p '*.py' --recursive -- python3 ./gunicorn_run.py"] environment: @@ -95,6 +97,7 @@ services: # Local development helper, rebuilds RiotJS/Stylus on change #---------------------------------------------------------------------------------------------------- builder: + container_name: builder build: context: . dockerfile: packaging/container/Containerfile.builder @@ -115,6 +118,7 @@ services: #---------------------------------------------------------------------------------------------------- db: image: postgres:18-alpine + container_name: db env_file: .env environment: - PGDATA=/var/lib/postgresql/18/docker @@ -136,6 +140,7 @@ services: # Rabbitmq & Flower monitoring tool #---------------------------------------------------------------------------------------------------- rabbit: + container_name: rabbit build: context: . dockerfile: packaging/container/Containerfile.rabbitmq @@ -161,6 +166,7 @@ services: max-file: "5" flower: + container_name: flower image: mher/flower env_file: .env environment: @@ -179,6 +185,7 @@ services: # Redis #---------------------------------------------------------------------------------------------------- redis: + container_name: redis image: redis ports: - 6379:6379 @@ -195,9 +202,8 @@ services: # This auto-reloads command: ["watchmedo auto-restart -p '*.py' --recursive -- celery -A celery_config worker -B -Q site-worker -l info -n site-worker@%n --concurrency=2"] working_dir: /app/src - build: - context: . - dockerfile: packaging/container/Containerfile + container_name: site_worker + image: django_site-worker depends_on: - rabbit - db @@ -219,6 +225,7 @@ services: compute_worker: command: ["celery -A compute_worker worker -l info -Q compute-worker -n compute-worker@%n"] working_dir: /app + container_name: compute_worker build: context: . dockerfile: packaging/container/Containerfile.compute_worker diff --git a/package.json b/package.json index dc727bd94..11d82838a 100644 --- a/package.json +++ b/package.json @@ -2,11 +2,11 @@ "name": "competitions-v2", "version": "0.0.1", "dependencies": { - "jquery": "^3.2.1", - "npm-watch": "^0.2.0", - "riot": "^3.6.3", - "stylus": "^0.54.5", - "uglify-js": "^3.0.28" + "jquery": "^4.0.0", + "npm-watch": "^0.13.0", + "riot": "^3.13.2", + "stylus": "^0.64.0", + "uglify-js": "^3.19.3" }, "devDependencies": {}, "watch": { diff --git a/packaging/container/Containerfile b/packaging/container/Containerfile index 448a6ed17..9e1ca00bb 100644 --- a/packaging/container/Containerfile +++ b/packaging/container/Containerfile @@ -1,16 +1,16 @@ FROM almalinux:10-minimal + RUN microdnf install -y tar gzip ENV PYTHONUNBUFFERED=1 # Install UV and add paths to PATH for uv and the future .venv created by uv -RUN curl -LsSf https://astral.sh/uv/install.sh | sh +RUN curl -LsSf https://astral.sh/uv/install.sh | sh && microdnf remove -y tar gzip && microdnf clean all ENV PATH=$PATH:/root/.local/bin ENV PATH=$PATH:/.venv/bin - -COPY pyproject.toml ./ -COPY uv.lock ./ +# Copy pyproject and uv.lock +COPY pyproject.toml uv.lock ./ # Install dependencies RUN uv sync --all-extras --frozen diff --git a/packaging/container/Containerfile.compute_worker b/packaging/container/Containerfile.compute_worker index f5808687f..7749fceb6 100644 --- a/packaging/container/Containerfile.compute_worker +++ b/packaging/container/Containerfile.compute_worker @@ -1,17 +1,14 @@ FROM almalinux:10-minimal + RUN microdnf install -y tar gzip # This makes output not buffer and return immediately, nice for seeing results in stdout ENV PYTHONUNBUFFERED=1 -COPY compute_worker/pyproject.toml ./ -COPY compute_worker/uv.lock ./ -COPY compute_worker/celery_config.py ./ -COPY compute_worker/compute_worker.py ./ - +COPY compute_worker/pyproject.toml compute_worker/uv.lock compute_worker/celery_config.py compute_worker/compute_worker.py ./ # Install UV and add paths to PATH for uv and the future .venv created by uv -RUN curl -LsSf https://astral.sh/uv/install.sh | sh +RUN curl -LsSf https://astral.sh/uv/install.sh | sh && microdnf remove -y tar gzip && microdnf clean all ENV PATH=$PATH:/root/.local/bin ENV PATH=$PATH:/.venv/bin @@ -19,5 +16,6 @@ ENV PATH=$PATH:/.venv/bin # Install dependencies RUN uv sync --frozen COPY src/settings/logs_loguru.py /.venv/bin + ENTRYPOINT ["/bin/bash", "-c"] CMD ["celery -A compute_worker worker -l info -Q compute-worker -n compute-worker@$HOSTNAME --concurrency=1"] diff --git a/packaging/container/Containerfile.rabbitmq b/packaging/container/Containerfile.rabbitmq index 29314380a..37f44d67e 100644 --- a/packaging/container/Containerfile.rabbitmq +++ b/packaging/container/Containerfile.rabbitmq @@ -1,4 +1,4 @@ -FROM rabbitmq:4.2.0-management +FROM rabbitmq:4.2.4-management ARG WORKER_CONNECTION_TIMEOUT RUN echo "consumer_timeout = $WORKER_CONNECTION_TIMEOUT" >> /etc/rabbitmq/conf.d/10-defaults.conf diff --git a/pyproject.toml b/pyproject.toml index 4202d6d14..d12809e07 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,71 +3,69 @@ name = "codabench" version = "0.1.0" description = "" authors = [{ name = "Codalab" }] -requires-python = ">=3.10,<3.11" +requires-python = "==3.13.11" readme = "README.md" classifiers = [ "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.10", ] dependencies = [ - "django>=4.2.0,<5", + "django==5.2.12", "django-oauth-toolkit==1.6.3", - "django-cors-middleware==1.5.0", - "social-auth-core>=4.1.0,<5", - "social-auth-app-django>=5.0.0,<6", - "six==1.16.0", - "django-extensions>=3.2,<4", - "channels==4.2.0", + "social-auth-core==4.8.5", + "social-auth-app-django==5.4.3", + "django-extensions==4.1.0", + "channels==4.3.2", "channels-redis==4.0.0", - "pillow==10.3.0", - "celery==4.4.7", - "gunicorn==22.0.0", - "urllib3>=1.25.4,<1.27", - "uvicorn>=0.22.0,<0.23", - "pyyaml==5.3.1", - "watchdog==2.1.1", - "argh==0.26.2", - "python-dateutil==2.7.3", - "bpython>=0.21.0,<0.22", - "websockets>=10.4.0,<11", - "aiofiles==0.4.0", - "oyaml==0.7", - "factory-boy==2.11.1", - "bleach>=5.0.0", - "django-debug-toolbar==3.2", - "django-querycount==0.7.0", + "pillow==12.1.1", + "celery==5.6.2", + "gunicorn==23.0", + "urllib3==2.6.3", + "uvicorn==0.38", + "pyyaml==6.0.3", + "watchdog==6.0.0", + "argh==0.31.3", + "python-dateutil==2.9.0", + "bpython==0.26", + "websockets==16.0.0", + "aiofiles==25.1.0", + "oyaml==1.0", + "factory-boy==3.3.3", "blessings==1.7", "django-su>=1.0.0,<2", - "django-ajax-selects==2.0.0", + "django-ajax-selects==3.0.3", "dj-database-url==0.4.2", "psycopg2-binary>=2.9.9,<3", - "django-redis==4.12.1", + "django-redis==6.0.0", "django-storages[azure]>=1.14.6,<2", "azure-storage-blob>=12,<13", "azure-storage-common==2.1.0", - "boto3==1.26.76", - "whitenoise==5.2.0", - "djangorestframework>=3.13.0", + "boto3==1.42.50", + "whitenoise==6.11.0", + "djangorestframework==3.16.1", "djangorestframework-csv==3.0.1", - "drf-extensions==0.4.0", - "markdown==2.6.11", - "pygments==2.2.0", - "drf-writable-nested==0.6.2", - "django-filter==2.4.0", - "flex==6.12.0", + "drf-extensions==0.8.0", + "markdown==3.10.2", + "pygments==2.19.2", + "drf-writable-nested==0.7.2", + "flex==6.14.1", "pyrabbit2==1.0.7", - "django-enforce-host==1.0.1", - "twisted==24.7.0", - "ipdb==0.13", - "jinja2==3.1.4", - "requests==2.32.2", - "drf-extra-fields>=3.5.0", - "botocore==1.29.76", - "s3transfer==0.6.0", + "django-enforce-host==1.1.0", + "twisted==25.5.0", + "ipdb==0.13.13", + "jinja2==3.1.6", + "requests==2.32.5", + "drf-extra-fields==3.7.0", + "botocore==1.42.50", + "s3transfer==0.16.0", "drf-spectacular>=0.28.0,<0.29", - "coreapi>=2.3.3,<3", "loguru>=0.7.3,<0.8", "tzdata>=2025.3", + "setuptools==82.0.0", + "pytz>=2025.2", + "django-filter==25.1", + "django-cors-headers==4.9.0", + "nh3==0.3.3", ] [tool.uv] @@ -79,9 +77,11 @@ build-backend = "uv_build" [dependency-groups] dev = [ - "flake8>=3.8.4", - "pytest==7.4.4", - "pytest-django==4.11.1", + "django-querycount==0.7.0", + "django-debug-toolbar==6.2.0", + "flake8==7.3.0", + "pytest==9.0.2", + "pytest-django==4.12.0", ] [tool.pytest.ini_options] DJANGO_SETTINGS_MODULE = "settings.develop" # Just "settings" since pytest will be running from src/ diff --git a/setup.cfg b/setup.cfg index efdf38296..16f5d925e 100644 --- a/setup.cfg +++ b/setup.cfg @@ -14,10 +14,3 @@ isort-show-traceback = True # E501 -- line too long # F405 -- name may be undefined, or defined from star imports # E402 -- module level import not at top of file - -[tool:pytest] -addopts = --ds=settings.test --reuse-db -python_paths = src/ -testpaths = - src/apps - src/tests diff --git a/src/apps/api/fields.py b/src/apps/api/fields.py index 3ca9680e6..65775d267 100644 --- a/src/apps/api/fields.py +++ b/src/apps/api/fields.py @@ -3,7 +3,6 @@ import binascii import json -import six from django.core.files.base import ContentFile from drf_extra_fields.fields import Base64ImageField from rest_framework.exceptions import ValidationError @@ -36,7 +35,7 @@ def to_internal_value(self, named_json_data): file_name = data["file_name"] base64_data = data["data"] - if isinstance(base64_data, six.string_types): + if isinstance(base64_data, str): # Strip base64 header. if ';base64,' in base64_data: header, base64_data = base64_data.split(';base64,') diff --git a/src/apps/api/views/analytics.py b/src/apps/api/views/analytics.py index 552b7cf30..ae9ef667d 100644 --- a/src/apps/api/views/analytics.py +++ b/src/apps/api/views/analytics.py @@ -16,7 +16,6 @@ import os import datetime -import coreapi import pytz import logging logger = logging.getLogger(__name__) @@ -26,42 +25,6 @@ delete_orphan_files_task = None -class SimpleFilterBackend(BaseFilterBackend): - def get_schema_fields(self, view): - fields = [ - coreapi.Field( - name='start_date', - location='query', - required=True, - type='string', - description='Beginning of query interval (inclusive) (YYYY-MM-DD format string)' - ), - coreapi.Field( - name='end_date', - location='query', - required=True, - type='string', - description='End of query interval (exclusive) (YYYY-MM-DD format string)' - ), - coreapi.Field( - name='time_unit', - location='query', - required=True, - type='string', - description='Unit of time (choose 1 of month, week, or day)' - ), - coreapi.Field( - name='format', - location='query', - required=False, - type='string', - description='If csv data is desired set format=csv, otherwise do not set.' - ), - ] - - return fields - - def merge_dicts(d1, d2): d = {**d1, **d2} return d @@ -111,7 +74,7 @@ class AnalyticsView(APIView): Return the total number of users joined, competitions created, published competitions created, and submissions made within a given time interval. Also returns the number of comps, users, and subs created within the time range for each time unit. """ - filter_backends = (SimpleFilterBackend,) + filter_backends = (BaseFilterBackend,) renderer_classes = (JSONRenderer, AnalyticsRenderer,) def get(self, request): @@ -399,7 +362,6 @@ def check_orphans_deletion_status(request): if not request.user.is_superuser: raise PermissionDenied(detail="Admin only") - global delete_orphan_files_task state = None if delete_orphan_files_task: state = delete_orphan_files_task.state diff --git a/src/apps/api/views/competitions.py b/src/apps/api/views/competitions.py index e3b9804f7..7cacb433b 100644 --- a/src/apps/api/views/competitions.py +++ b/src/apps/api/views/competitions.py @@ -869,7 +869,7 @@ class CompetitionParticipantViewSet(ModelViewSet): queryset = CompetitionParticipant.objects.all() serializer_class = CompetitionParticipantSerializer filter_backends = (DjangoFilterBackend, SearchFilter) - filter_fields = ('user__username', 'user__email', 'status', 'competition', 'user__is_deleted') + filterset_fields = ('user__username', 'user__email', 'status', 'competition', 'user__is_deleted') search_fields = ('user__username', 'user__email',) def get_queryset(self): diff --git a/src/apps/api/views/datasets.py b/src/apps/api/views/datasets.py index 0c95a8a3c..fa22187b7 100644 --- a/src/apps/api/views/datasets.py +++ b/src/apps/api/views/datasets.py @@ -21,7 +21,7 @@ class DataViewSet(ModelViewSet): queryset = Data.objects.all() filter_backends = (DjangoFilterBackend, SearchFilter) - filter_fields = ('type', 'name', 'key', 'was_created_by_competition', 'is_public') + filterset_fields = ('type', 'name', 'key', 'was_created_by_competition', 'is_public') search_fields = ('file_name', 'name', 'description', 'key', 'competition__title',) pagination_class = BasicPagination diff --git a/src/apps/api/views/profiles.py b/src/apps/api/views/profiles.py index 7c7f6dcd8..65e2bb13c 100644 --- a/src/apps/api/views/profiles.py +++ b/src/apps/api/views/profiles.py @@ -166,7 +166,7 @@ def update_member_group(self, request, pk=None): @action(detail=True, methods=['post'], permission_classes=[IsOrganizationEditor]) def invite_users(self, request, pk=None): org = self.get_object() - if type(request.data['users']) != list: + if type(request.data['users']) is not list: raise ValidationError(f'Required data is an Array of User ID\'s not a {type(request.data["users"])} ') # Getting users, but filtering out any that are already in the organization users = User.objects.filter(id__in=request.data['users']).exclude(organizations=pk) diff --git a/src/apps/api/views/queues.py b/src/apps/api/views/queues.py index 23e486e85..ffb0b2550 100644 --- a/src/apps/api/views/queues.py +++ b/src/apps/api/views/queues.py @@ -14,7 +14,7 @@ class QueueViewSet(ModelViewSet): queryset = Queue.objects.all() serializer_class = serializers.QueueListSerializer - filter_fields = ('owner', 'is_public', 'name') + filterset_fields = ('owner', 'is_public', 'name') filter_backends = (DjangoFilterBackend, SearchFilter) search_fields = ('name',) pagination_class = BasicPagination diff --git a/src/apps/api/views/submissions.py b/src/apps/api/views/submissions.py index 7c7ddb538..1bb33c359 100644 --- a/src/apps/api/views/submissions.py +++ b/src/apps/api/views/submissions.py @@ -29,7 +29,7 @@ class SubmissionViewSet(ModelViewSet): queryset = Submission.objects.all().order_by('-pk') permission_classes = [] filter_backends = (DjangoFilterBackend, SearchFilter) - filter_fields = ('phase__competition', 'phase', 'status', 'is_soft_deleted') + filterset_fields = ('phase__competition', 'phase', 'status', 'is_soft_deleted') search_fields = ('data__data_file', 'description', 'name', 'owner__username') renderer_classes = api_settings.DEFAULT_RENDERER_CLASSES + [renderers.CSVRenderer] diff --git a/src/apps/api/views/tasks.py b/src/apps/api/views/tasks.py index 9bed7c2fd..debf03237 100644 --- a/src/apps/api/views/tasks.py +++ b/src/apps/api/views/tasks.py @@ -29,7 +29,7 @@ class TaskViewSet(ModelViewSet): queryset = Task.objects.all() serializer_class = serializers.TaskSerializer - filter_fields = ('created_by', 'is_public') + filterset_fields = ('created_by', 'is_public') filter_backends = (DjangoFilterBackend, SearchFilter) search_fields = ('name', 'description',) pagination_class = BasicPagination diff --git a/src/apps/commands/management/commands/generate_data.py b/src/apps/commands/management/commands/generate_data.py index dfd062827..8297b88b3 100644 --- a/src/apps/commands/management/commands/generate_data.py +++ b/src/apps/commands/management/commands/generate_data.py @@ -31,7 +31,7 @@ def add_arguments(self, parser): def handle(self, *args, **kwargs): size = kwargs.get('size') or 3 no_admin = kwargs.get('no_admin') - print(f'Creating data of size {size} {"without an admin account." if no_admin else "with an admin account." }') + print(f'Creating data of size {size} {"without an admin account." if no_admin else "with an admin account."}') users = [] for i in range(size): if i == 0 and not no_admin: diff --git a/src/apps/competitions/models.py b/src/apps/competitions/models.py index b99600930..30f1e34f6 100644 --- a/src/apps/competitions/models.py +++ b/src/apps/competitions/models.py @@ -669,8 +669,8 @@ def cancel(self, status=CANCELLED): # If a custom queue is set, we need to fetch the appropriate celery app if self.phase.competition.queue: celery_app = app_for_vhost(str(self.phase.competition.queue.vhost)) - - celery_app.control.revoke(self.celery_task_id, terminate=True) + # We need to convert the UUID given by celery into a byte like object otherwise it won't work + celery_app.control.revoke(str(self.celery_task_id), terminate=True) self.status = status self.save() return True diff --git a/src/apps/competitions/tasks.py b/src/apps/competitions/tasks.py index 4c5e495b8..1afba2f26 100644 --- a/src/apps/competitions/tasks.py +++ b/src/apps/competitions/tasks.py @@ -377,7 +377,7 @@ def mark_status_as_failed_and_delete_dataset(competition_creation_status, detail raise CompetitionUnpackingException("competition.yaml is missing from zip, check your folder structure " "to make sure it is in the root directory.") with open(yaml_path) as f: - competition_yaml = yaml.load(f.read()) + competition_yaml = yaml.safe_load(f.read()) yaml_version = str(competition_yaml.get('version', '1')) diff --git a/src/apps/forums/tests/test_smoke_tests.py b/src/apps/forums/tests/test_smoke_tests.py index 6ea251a43..ea3993e34 100644 --- a/src/apps/forums/tests/test_smoke_tests.py +++ b/src/apps/forums/tests/test_smoke_tests.py @@ -26,36 +26,36 @@ def setUp(self): def test_forum_thread_list_view_returns_200(self): resp = self.client.get(reverse("forums:forum_detail", kwargs={'forum_pk': self.forum.pk})) - self.assertEquals(resp.status_code, 200) + self.assertEqual(resp.status_code, 200) def test_forum_post_new_thread_non_logged_in_returns_302(self): resp = self.client.get(reverse("forums:forum_new_thread", kwargs={'forum_pk': self.forum.pk})) - self.assertEquals(resp.status_code, 302) + self.assertEqual(resp.status_code, 302) def test_forum_post_new_thread_view_returns_200(self): self.client.login(username="regular", password="pass") resp = self.client.get(reverse("forums:forum_new_thread", kwargs={'forum_pk': self.forum.pk})) - self.assertEquals(resp.status_code, 200) + self.assertEqual(resp.status_code, 200) def test_forum_view_thread_returns_200(self): resp = self.client.get(reverse("forums:forum_thread_detail", kwargs={'forum_pk': self.forum.pk, 'thread_pk': self.thread.pk})) - self.assertEquals(resp.status_code, 200) + self.assertEqual(resp.status_code, 200) def test_forum_new_post_requires_login_returns_302(self): resp = self.client.get(reverse("forums:forum_new_post", kwargs={'forum_pk': self.forum.pk, 'thread_pk': self.thread.pk})) - self.assertEquals(resp.status_code, 302) + self.assertEqual(resp.status_code, 302) def test_forum_new_post_returns_200(self): self.client.login(username="regular", password="pass") resp = self.client.get(reverse("forums:forum_new_post", kwargs={'forum_pk': self.forum.pk, 'thread_pk': self.thread.pk})) - self.assertEquals(resp.status_code, 200) + self.assertEqual(resp.status_code, 200) def test_forum_delete_post_returns_200(self): self.client.login(username='admin', password='pass') resp = self.client.delete(reverse("forums:forum_delete_post", kwargs={'forum_pk': self.forum.pk, 'thread_pk': self.thread.pk, 'post_pk': self.post.pk})) - self.assertEquals(resp.status_code, 302) + self.assertEqual(resp.status_code, 302) def test_forum_delete_thread_returns_200(self): self.client.login(username='admin', password='pass') resp = self.client.delete(reverse("forums:forum_delete_thread", kwargs={'forum_pk': self.forum.pk, 'thread_pk': self.thread.pk})) - self.assertEquals(resp.status_code, 302) + self.assertEqual(resp.status_code, 302) diff --git a/src/apps/profiles/tokens.py b/src/apps/profiles/tokens.py index 2842f2df4..9984f109a 100644 --- a/src/apps/profiles/tokens.py +++ b/src/apps/profiles/tokens.py @@ -1,13 +1,12 @@ from django.contrib.auth.tokens import PasswordResetTokenGenerator -import six class AccountActivationTokenGenerator(PasswordResetTokenGenerator): def _make_hash_value(self, user, timestamp): return ( - six.text_type(user.pk) + - six.text_type(timestamp) + - six.text_type(user.is_active) + str(user.pk) + + str(timestamp) + + str(user.is_active) ) @@ -17,9 +16,9 @@ def _make_hash_value(self, user, timestamp): class AccountDeletionTokenGenerator(PasswordResetTokenGenerator): def _make_hash_value(self, user, timestamp): return ( - six.text_type(user.pk) + - six.text_type(timestamp) + - six.text_type(user.is_deleted) + str(user.pk) + + str(timestamp) + + str(user.is_deleted) ) diff --git a/src/settings/test.py b/src/settings/test.py index e7a881aec..4294dd940 100644 --- a/src/settings/test.py +++ b/src/settings/test.py @@ -4,7 +4,10 @@ DEBUG = True CELERY_TASK_ALWAYS_EAGER = True - +INSTALLED_APPS += ('debug_toolbar',) +MIDDLEWARE = ('debug_toolbar.middleware.DebugToolbarMiddleware', + 'querycount.middleware.QueryCountMiddleware', + ) + MIDDLEWARE # Don't use whitenoise -- so we don't get exceptions for missing files STORAGES["staticfiles"] = { diff --git a/src/templates/base.html b/src/templates/base.html index cfceb0672..c98aed636 100644 --- a/src/templates/base.html +++ b/src/templates/base.html @@ -125,7 +125,7 @@
My Resources
Competitions Resources - Queues + Queues
Account
@@ -134,7 +134,9 @@ Settings Notifications Change Password - Logout + + Logout +
Organizations
@@ -312,7 +314,7 @@

CodaBench

}, // Forums FORUM: function (pk) { - return "{% url "forums:forum_detail" forum_pk=0 %}".replace(0, pk) + return "{% url "forums:forum_detail" forum_pk=0 %}".replace(0, pk) }, // Datasets DATASET_MANAGEMENT: "{% url "datasets:management" %}", diff --git a/src/utils/email.py b/src/utils/email.py index 3969452d5..229f6a325 100644 --- a/src/utils/email.py +++ b/src/utils/email.py @@ -1,4 +1,4 @@ -import bleach +import nh3 import markdown from django.conf import settings from django.contrib.sites.models import Site @@ -13,7 +13,7 @@ def codalab_send_mail(context_data, to_email, html_file, text_file, subject, fro text = render_to_string(text_file, context_data) html = render_to_string(html_file, context_data) - to_email = to_email if type(to_email) == list else [to_email] + to_email = to_email if type(to_email) is list else [to_email] message = EmailMultiAlternatives(subject, text, from_email=from_email, to=to_email) message.attach_alternative(html, 'text/html') message.send() @@ -32,7 +32,7 @@ def sanitize(content): 'h6', ] attrs = {'img': ['src']} - return bleach.clean( + return nh3.clean( content, tags=tags, attributes=attrs diff --git a/src/utils/storage.py b/src/utils/storage.py index 7bb88bc2a..23f988d0d 100644 --- a/src/utils/storage.py +++ b/src/utils/storage.py @@ -1,10 +1,6 @@ import hashlib from django.conf import settings -# Fallbacks -PublicStorageClass = object -PrivateStorageClass = object - # Import only the required backend if settings.STORAGE_IS_S3: try: diff --git a/tests/.python-version b/tests/.python-version deleted file mode 100644 index bd28b9c5c..000000000 --- a/tests/.python-version +++ /dev/null @@ -1 +0,0 @@ -3.9 diff --git a/tests/pyproject.toml b/tests/pyproject.toml index 411704000..761e18182 100644 --- a/tests/pyproject.toml +++ b/tests/pyproject.toml @@ -3,12 +3,18 @@ name = "tests" version = "0.1.0" description = "Add your description here" readme = "README.md" -requires-python = ">=3.9" +requires-python = "==3.14.0" dependencies = [ "loguru~=0.7.3", "psycopg[binary]~=3.2.13", - "pytest~=8.4.2", + "pytest==9.0.2", "pytest-playwright~=0.7.1", "pytest-xdist~=3.8.0", "toml~=0.10.2", ] +[tool.pytest.ini_options] +# Use localhost as default host +# addopts = --base-url=localhost --headed --browser webkit --browser firefox --browser chromium --numprocesses 2 +addopts = "--base-url=http://localhost:8000 --browser firefox --screenshot only-on-failure --full-page-screenshot" +log_cli = "true" +log_cli_level = "INFO" diff --git a/tests/pytest.ini b/tests/pytest.ini deleted file mode 100644 index 1d3d9fa0c..000000000 --- a/tests/pytest.ini +++ /dev/null @@ -1,7 +0,0 @@ -# content of pytest.ini -[pytest] -# Use localhost as default host -# addopts = --base-url=localhost --headed --browser webkit --browser firefox --browser chromium --numprocesses 2 -addopts = --base-url=http://localhost:8000 --browser firefox --screenshot only-on-failure --full-page-screenshot -log_cli = true -log_cli_level = INFO diff --git a/tests/uv.lock b/tests/uv.lock index d208fbef0..12e61d5bd 100644 --- a/tests/uv.lock +++ b/tests/uv.lock @@ -1,18 +1,14 @@ version = 1 -revision = 2 -requires-python = ">=3.9" -resolution-markers = [ - "python_full_version >= '3.10'", - "python_full_version < '3.10'", -] +revision = 3 +requires-python = "==3.14.0" [[package]] name = "certifi" -version = "2025.11.12" +version = "2026.2.25" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/8c/58f469717fa48465e4a50c014a0400602d3c437d7c0c468e17ada824da3a/certifi-2025.11.12.tar.gz", hash = "sha256:d8ab5478f2ecd78af242878415affce761ca6bc54a22a27e026d7c25357c3316", size = 160538, upload-time = "2025-11-12T02:54:51.517Z" } +sdist = { url = "https://files.pythonhosted.org/packages/af/2d/7bf41579a8986e348fa033a31cdd0e4121114f6bce2457e8876010b092dd/certifi-2026.2.25.tar.gz", hash = "sha256:e887ab5cee78ea814d3472169153c2d12cd43b14bd03329a39a9c6e2e80bfba7", size = 155029, upload-time = "2026-02-25T02:54:17.342Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/70/7d/9bc192684cea499815ff478dfcdc13835ddf401365057044fb721ec6bddb/certifi-2025.11.12-py3-none-any.whl", hash = "sha256:97de8790030bbd5c2d96b7ec782fc2f7820ef8dba6db909ccf95449f2d062d4b", size = 159438, upload-time = "2025-11-12T02:54:49.735Z" }, + { url = "https://files.pythonhosted.org/packages/9a/3c/c17fb3ca2d9c3acff52e30b309f538586f9f5b9c9cf454f3845fc9af4881/certifi-2026.2.25-py3-none-any.whl", hash = "sha256:027692e4402ad994f1c42e52a4997a9763c646b73e4096e4d5d6db8af1d6f0fa", size = 153684, upload-time = "2026-02-25T02:54:15.766Z" }, ] [[package]] @@ -21,70 +17,6 @@ version = "3.4.4" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/13/69/33ddede1939fdd074bce5434295f38fae7136463422fe4fd3e0e89b98062/charset_normalizer-3.4.4.tar.gz", hash = "sha256:94537985111c35f28720e43603b8e7b43a6ecfb2ce1d3058bbe955b73404e21a", size = 129418, upload-time = "2025-10-14T04:42:32.879Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/1f/b8/6d51fc1d52cbd52cd4ccedd5b5b2f0f6a11bbf6765c782298b0f3e808541/charset_normalizer-3.4.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e824f1492727fa856dd6eda4f7cee25f8518a12f3c4a56a74e8095695089cf6d", size = 209709, upload-time = "2025-10-14T04:40:11.385Z" }, - { url = "https://files.pythonhosted.org/packages/5c/af/1f9d7f7faafe2ddfb6f72a2e07a548a629c61ad510fe60f9630309908fef/charset_normalizer-3.4.4-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4bd5d4137d500351a30687c2d3971758aac9a19208fc110ccb9d7188fbe709e8", size = 148814, upload-time = "2025-10-14T04:40:13.135Z" }, - { url = "https://files.pythonhosted.org/packages/79/3d/f2e3ac2bbc056ca0c204298ea4e3d9db9b4afe437812638759db2c976b5f/charset_normalizer-3.4.4-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:027f6de494925c0ab2a55eab46ae5129951638a49a34d87f4c3eda90f696b4ad", size = 144467, upload-time = "2025-10-14T04:40:14.728Z" }, - { url = "https://files.pythonhosted.org/packages/ec/85/1bf997003815e60d57de7bd972c57dc6950446a3e4ccac43bc3070721856/charset_normalizer-3.4.4-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f820802628d2694cb7e56db99213f930856014862f3fd943d290ea8438d07ca8", size = 162280, upload-time = "2025-10-14T04:40:16.14Z" }, - { url = "https://files.pythonhosted.org/packages/3e/8e/6aa1952f56b192f54921c436b87f2aaf7c7a7c3d0d1a765547d64fd83c13/charset_normalizer-3.4.4-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:798d75d81754988d2565bff1b97ba5a44411867c0cf32b77a7e8f8d84796b10d", size = 159454, upload-time = "2025-10-14T04:40:17.567Z" }, - { url = "https://files.pythonhosted.org/packages/36/3b/60cbd1f8e93aa25d1c669c649b7a655b0b5fb4c571858910ea9332678558/charset_normalizer-3.4.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9d1bb833febdff5c8927f922386db610b49db6e0d4f4ee29601d71e7c2694313", size = 153609, upload-time = "2025-10-14T04:40:19.08Z" }, - { url = "https://files.pythonhosted.org/packages/64/91/6a13396948b8fd3c4b4fd5bc74d045f5637d78c9675585e8e9fbe5636554/charset_normalizer-3.4.4-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:9cd98cdc06614a2f768d2b7286d66805f94c48cde050acdbbb7db2600ab3197e", size = 151849, upload-time = "2025-10-14T04:40:20.607Z" }, - { url = "https://files.pythonhosted.org/packages/b7/7a/59482e28b9981d105691e968c544cc0df3b7d6133152fb3dcdc8f135da7a/charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:077fbb858e903c73f6c9db43374fd213b0b6a778106bc7032446a8e8b5b38b93", size = 151586, upload-time = "2025-10-14T04:40:21.719Z" }, - { url = "https://files.pythonhosted.org/packages/92/59/f64ef6a1c4bdd2baf892b04cd78792ed8684fbc48d4c2afe467d96b4df57/charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:244bfb999c71b35de57821b8ea746b24e863398194a4014e4c76adc2bbdfeff0", size = 145290, upload-time = "2025-10-14T04:40:23.069Z" }, - { url = "https://files.pythonhosted.org/packages/6b/63/3bf9f279ddfa641ffa1962b0db6a57a9c294361cc2f5fcac997049a00e9c/charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:64b55f9dce520635f018f907ff1b0df1fdc31f2795a922fb49dd14fbcdf48c84", size = 163663, upload-time = "2025-10-14T04:40:24.17Z" }, - { url = "https://files.pythonhosted.org/packages/ed/09/c9e38fc8fa9e0849b172b581fd9803bdf6e694041127933934184e19f8c3/charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:faa3a41b2b66b6e50f84ae4a68c64fcd0c44355741c6374813a800cd6695db9e", size = 151964, upload-time = "2025-10-14T04:40:25.368Z" }, - { url = "https://files.pythonhosted.org/packages/d2/d1/d28b747e512d0da79d8b6a1ac18b7ab2ecfd81b2944c4c710e166d8dd09c/charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:6515f3182dbe4ea06ced2d9e8666d97b46ef4c75e326b79bb624110f122551db", size = 161064, upload-time = "2025-10-14T04:40:26.806Z" }, - { url = "https://files.pythonhosted.org/packages/bb/9a/31d62b611d901c3b9e5500c36aab0ff5eb442043fb3a1c254200d3d397d9/charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cc00f04ed596e9dc0da42ed17ac5e596c6ccba999ba6bd92b0e0aef2f170f2d6", size = 155015, upload-time = "2025-10-14T04:40:28.284Z" }, - { url = "https://files.pythonhosted.org/packages/1f/f3/107e008fa2bff0c8b9319584174418e5e5285fef32f79d8ee6a430d0039c/charset_normalizer-3.4.4-cp310-cp310-win32.whl", hash = "sha256:f34be2938726fc13801220747472850852fe6b1ea75869a048d6f896838c896f", size = 99792, upload-time = "2025-10-14T04:40:29.613Z" }, - { url = "https://files.pythonhosted.org/packages/eb/66/e396e8a408843337d7315bab30dbf106c38966f1819f123257f5520f8a96/charset_normalizer-3.4.4-cp310-cp310-win_amd64.whl", hash = "sha256:a61900df84c667873b292c3de315a786dd8dac506704dea57bc957bd31e22c7d", size = 107198, upload-time = "2025-10-14T04:40:30.644Z" }, - { url = "https://files.pythonhosted.org/packages/b5/58/01b4f815bf0312704c267f2ccb6e5d42bcc7752340cd487bc9f8c3710597/charset_normalizer-3.4.4-cp310-cp310-win_arm64.whl", hash = "sha256:cead0978fc57397645f12578bfd2d5ea9138ea0fac82b2f63f7f7c6877986a69", size = 100262, upload-time = "2025-10-14T04:40:32.108Z" }, - { url = "https://files.pythonhosted.org/packages/ed/27/c6491ff4954e58a10f69ad90aca8a1b6fe9c5d3c6f380907af3c37435b59/charset_normalizer-3.4.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6e1fcf0720908f200cd21aa4e6750a48ff6ce4afe7ff5a79a90d5ed8a08296f8", size = 206988, upload-time = "2025-10-14T04:40:33.79Z" }, - { url = "https://files.pythonhosted.org/packages/94/59/2e87300fe67ab820b5428580a53cad894272dbb97f38a7a814a2a1ac1011/charset_normalizer-3.4.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5f819d5fe9234f9f82d75bdfa9aef3a3d72c4d24a6e57aeaebba32a704553aa0", size = 147324, upload-time = "2025-10-14T04:40:34.961Z" }, - { url = "https://files.pythonhosted.org/packages/07/fb/0cf61dc84b2b088391830f6274cb57c82e4da8bbc2efeac8c025edb88772/charset_normalizer-3.4.4-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:a59cb51917aa591b1c4e6a43c132f0cdc3c76dbad6155df4e28ee626cc77a0a3", size = 142742, upload-time = "2025-10-14T04:40:36.105Z" }, - { url = "https://files.pythonhosted.org/packages/62/8b/171935adf2312cd745d290ed93cf16cf0dfe320863ab7cbeeae1dcd6535f/charset_normalizer-3.4.4-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:8ef3c867360f88ac904fd3f5e1f902f13307af9052646963ee08ff4f131adafc", size = 160863, upload-time = "2025-10-14T04:40:37.188Z" }, - { url = "https://files.pythonhosted.org/packages/09/73/ad875b192bda14f2173bfc1bc9a55e009808484a4b256748d931b6948442/charset_normalizer-3.4.4-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d9e45d7faa48ee908174d8fe84854479ef838fc6a705c9315372eacbc2f02897", size = 157837, upload-time = "2025-10-14T04:40:38.435Z" }, - { url = "https://files.pythonhosted.org/packages/6d/fc/de9cce525b2c5b94b47c70a4b4fb19f871b24995c728e957ee68ab1671ea/charset_normalizer-3.4.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:840c25fb618a231545cbab0564a799f101b63b9901f2569faecd6b222ac72381", size = 151550, upload-time = "2025-10-14T04:40:40.053Z" }, - { url = "https://files.pythonhosted.org/packages/55/c2/43edd615fdfba8c6f2dfbd459b25a6b3b551f24ea21981e23fb768503ce1/charset_normalizer-3.4.4-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ca5862d5b3928c4940729dacc329aa9102900382fea192fc5e52eb69d6093815", size = 149162, upload-time = "2025-10-14T04:40:41.163Z" }, - { url = "https://files.pythonhosted.org/packages/03/86/bde4ad8b4d0e9429a4e82c1e8f5c659993a9a863ad62c7df05cf7b678d75/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d9c7f57c3d666a53421049053eaacdd14bbd0a528e2186fcb2e672effd053bb0", size = 150019, upload-time = "2025-10-14T04:40:42.276Z" }, - { url = "https://files.pythonhosted.org/packages/1f/86/a151eb2af293a7e7bac3a739b81072585ce36ccfb4493039f49f1d3cae8c/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:277e970e750505ed74c832b4bf75dac7476262ee2a013f5574dd49075879e161", size = 143310, upload-time = "2025-10-14T04:40:43.439Z" }, - { url = "https://files.pythonhosted.org/packages/b5/fe/43dae6144a7e07b87478fdfc4dbe9efd5defb0e7ec29f5f58a55aeef7bf7/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:31fd66405eaf47bb62e8cd575dc621c56c668f27d46a61d975a249930dd5e2a4", size = 162022, upload-time = "2025-10-14T04:40:44.547Z" }, - { url = "https://files.pythonhosted.org/packages/80/e6/7aab83774f5d2bca81f42ac58d04caf44f0cc2b65fc6db2b3b2e8a05f3b3/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:0d3d8f15c07f86e9ff82319b3d9ef6f4bf907608f53fe9d92b28ea9ae3d1fd89", size = 149383, upload-time = "2025-10-14T04:40:46.018Z" }, - { url = "https://files.pythonhosted.org/packages/4f/e8/b289173b4edae05c0dde07f69f8db476a0b511eac556dfe0d6bda3c43384/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:9f7fcd74d410a36883701fafa2482a6af2ff5ba96b9a620e9e0721e28ead5569", size = 159098, upload-time = "2025-10-14T04:40:47.081Z" }, - { url = "https://files.pythonhosted.org/packages/d8/df/fe699727754cae3f8478493c7f45f777b17c3ef0600e28abfec8619eb49c/charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ebf3e58c7ec8a8bed6d66a75d7fb37b55e5015b03ceae72a8e7c74495551e224", size = 152991, upload-time = "2025-10-14T04:40:48.246Z" }, - { url = "https://files.pythonhosted.org/packages/1a/86/584869fe4ddb6ffa3bd9f491b87a01568797fb9bd8933f557dba9771beaf/charset_normalizer-3.4.4-cp311-cp311-win32.whl", hash = "sha256:eecbc200c7fd5ddb9a7f16c7decb07b566c29fa2161a16cf67b8d068bd21690a", size = 99456, upload-time = "2025-10-14T04:40:49.376Z" }, - { url = "https://files.pythonhosted.org/packages/65/f6/62fdd5feb60530f50f7e38b4f6a1d5203f4d16ff4f9f0952962c044e919a/charset_normalizer-3.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:5ae497466c7901d54b639cf42d5b8c1b6a4fead55215500d2f486d34db48d016", size = 106978, upload-time = "2025-10-14T04:40:50.844Z" }, - { url = "https://files.pythonhosted.org/packages/7a/9d/0710916e6c82948b3be62d9d398cb4fcf4e97b56d6a6aeccd66c4b2f2bd5/charset_normalizer-3.4.4-cp311-cp311-win_arm64.whl", hash = "sha256:65e2befcd84bc6f37095f5961e68a6f077bf44946771354a28ad434c2cce0ae1", size = 99969, upload-time = "2025-10-14T04:40:52.272Z" }, - { url = "https://files.pythonhosted.org/packages/f3/85/1637cd4af66fa687396e757dec650f28025f2a2f5a5531a3208dc0ec43f2/charset_normalizer-3.4.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0a98e6759f854bd25a58a73fa88833fba3b7c491169f86ce1180c948ab3fd394", size = 208425, upload-time = "2025-10-14T04:40:53.353Z" }, - { url = "https://files.pythonhosted.org/packages/9d/6a/04130023fef2a0d9c62d0bae2649b69f7b7d8d24ea5536feef50551029df/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b5b290ccc2a263e8d185130284f8501e3e36c5e02750fc6b6bdeb2e9e96f1e25", size = 148162, upload-time = "2025-10-14T04:40:54.558Z" }, - { url = "https://files.pythonhosted.org/packages/78/29/62328d79aa60da22c9e0b9a66539feae06ca0f5a4171ac4f7dc285b83688/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:74bb723680f9f7a6234dcf67aea57e708ec1fbdf5699fb91dfd6f511b0a320ef", size = 144558, upload-time = "2025-10-14T04:40:55.677Z" }, - { url = "https://files.pythonhosted.org/packages/86/bb/b32194a4bf15b88403537c2e120b817c61cd4ecffa9b6876e941c3ee38fe/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f1e34719c6ed0b92f418c7c780480b26b5d9c50349e9a9af7d76bf757530350d", size = 161497, upload-time = "2025-10-14T04:40:57.217Z" }, - { url = "https://files.pythonhosted.org/packages/19/89/a54c82b253d5b9b111dc74aca196ba5ccfcca8242d0fb64146d4d3183ff1/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2437418e20515acec67d86e12bf70056a33abdacb5cb1655042f6538d6b085a8", size = 159240, upload-time = "2025-10-14T04:40:58.358Z" }, - { url = "https://files.pythonhosted.org/packages/c0/10/d20b513afe03acc89ec33948320a5544d31f21b05368436d580dec4e234d/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:11d694519d7f29d6cd09f6ac70028dba10f92f6cdd059096db198c283794ac86", size = 153471, upload-time = "2025-10-14T04:40:59.468Z" }, - { url = "https://files.pythonhosted.org/packages/61/fa/fbf177b55bdd727010f9c0a3c49eefa1d10f960e5f09d1d887bf93c2e698/charset_normalizer-3.4.4-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ac1c4a689edcc530fc9d9aa11f5774b9e2f33f9a0c6a57864e90908f5208d30a", size = 150864, upload-time = "2025-10-14T04:41:00.623Z" }, - { url = "https://files.pythonhosted.org/packages/05/12/9fbc6a4d39c0198adeebbde20b619790e9236557ca59fc40e0e3cebe6f40/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:21d142cc6c0ec30d2efee5068ca36c128a30b0f2c53c1c07bd78cb6bc1d3be5f", size = 150647, upload-time = "2025-10-14T04:41:01.754Z" }, - { url = "https://files.pythonhosted.org/packages/ad/1f/6a9a593d52e3e8c5d2b167daf8c6b968808efb57ef4c210acb907c365bc4/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:5dbe56a36425d26d6cfb40ce79c314a2e4dd6211d51d6d2191c00bed34f354cc", size = 145110, upload-time = "2025-10-14T04:41:03.231Z" }, - { url = "https://files.pythonhosted.org/packages/30/42/9a52c609e72471b0fc54386dc63c3781a387bb4fe61c20231a4ebcd58bdd/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:5bfbb1b9acf3334612667b61bd3002196fe2a1eb4dd74d247e0f2a4d50ec9bbf", size = 162839, upload-time = "2025-10-14T04:41:04.715Z" }, - { url = "https://files.pythonhosted.org/packages/c4/5b/c0682bbf9f11597073052628ddd38344a3d673fda35a36773f7d19344b23/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:d055ec1e26e441f6187acf818b73564e6e6282709e9bcb5b63f5b23068356a15", size = 150667, upload-time = "2025-10-14T04:41:05.827Z" }, - { url = "https://files.pythonhosted.org/packages/e4/24/a41afeab6f990cf2daf6cb8c67419b63b48cf518e4f56022230840c9bfb2/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:af2d8c67d8e573d6de5bc30cdb27e9b95e49115cd9baad5ddbd1a6207aaa82a9", size = 160535, upload-time = "2025-10-14T04:41:06.938Z" }, - { url = "https://files.pythonhosted.org/packages/2a/e5/6a4ce77ed243c4a50a1fecca6aaaab419628c818a49434be428fe24c9957/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:780236ac706e66881f3b7f2f32dfe90507a09e67d1d454c762cf642e6e1586e0", size = 154816, upload-time = "2025-10-14T04:41:08.101Z" }, - { url = "https://files.pythonhosted.org/packages/a8/ef/89297262b8092b312d29cdb2517cb1237e51db8ecef2e9af5edbe7b683b1/charset_normalizer-3.4.4-cp312-cp312-win32.whl", hash = "sha256:5833d2c39d8896e4e19b689ffc198f08ea58116bee26dea51e362ecc7cd3ed26", size = 99694, upload-time = "2025-10-14T04:41:09.23Z" }, - { url = "https://files.pythonhosted.org/packages/3d/2d/1e5ed9dd3b3803994c155cd9aacb60c82c331bad84daf75bcb9c91b3295e/charset_normalizer-3.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:a79cfe37875f822425b89a82333404539ae63dbdddf97f84dcbc3d339aae9525", size = 107131, upload-time = "2025-10-14T04:41:10.467Z" }, - { url = "https://files.pythonhosted.org/packages/d0/d9/0ed4c7098a861482a7b6a95603edce4c0d9db2311af23da1fb2b75ec26fc/charset_normalizer-3.4.4-cp312-cp312-win_arm64.whl", hash = "sha256:376bec83a63b8021bb5c8ea75e21c4ccb86e7e45ca4eb81146091b56599b80c3", size = 100390, upload-time = "2025-10-14T04:41:11.915Z" }, - { url = "https://files.pythonhosted.org/packages/97/45/4b3a1239bbacd321068ea6e7ac28875b03ab8bc0aa0966452db17cd36714/charset_normalizer-3.4.4-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:e1f185f86a6f3403aa2420e815904c67b2f9ebc443f045edd0de921108345794", size = 208091, upload-time = "2025-10-14T04:41:13.346Z" }, - { url = "https://files.pythonhosted.org/packages/7d/62/73a6d7450829655a35bb88a88fca7d736f9882a27eacdca2c6d505b57e2e/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b39f987ae8ccdf0d2642338faf2abb1862340facc796048b604ef14919e55ed", size = 147936, upload-time = "2025-10-14T04:41:14.461Z" }, - { url = "https://files.pythonhosted.org/packages/89/c5/adb8c8b3d6625bef6d88b251bbb0d95f8205831b987631ab0c8bb5d937c2/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3162d5d8ce1bb98dd51af660f2121c55d0fa541b46dff7bb9b9f86ea1d87de72", size = 144180, upload-time = "2025-10-14T04:41:15.588Z" }, - { url = "https://files.pythonhosted.org/packages/91/ed/9706e4070682d1cc219050b6048bfd293ccf67b3d4f5a4f39207453d4b99/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:81d5eb2a312700f4ecaa977a8235b634ce853200e828fbadf3a9c50bab278328", size = 161346, upload-time = "2025-10-14T04:41:16.738Z" }, - { url = "https://files.pythonhosted.org/packages/d5/0d/031f0d95e4972901a2f6f09ef055751805ff541511dc1252ba3ca1f80cf5/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5bd2293095d766545ec1a8f612559f6b40abc0eb18bb2f5d1171872d34036ede", size = 158874, upload-time = "2025-10-14T04:41:17.923Z" }, - { url = "https://files.pythonhosted.org/packages/f5/83/6ab5883f57c9c801ce5e5677242328aa45592be8a00644310a008d04f922/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a8a8b89589086a25749f471e6a900d3f662d1d3b6e2e59dcecf787b1cc3a1894", size = 153076, upload-time = "2025-10-14T04:41:19.106Z" }, - { url = "https://files.pythonhosted.org/packages/75/1e/5ff781ddf5260e387d6419959ee89ef13878229732732ee73cdae01800f2/charset_normalizer-3.4.4-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc7637e2f80d8530ee4a78e878bce464f70087ce73cf7c1caf142416923b98f1", size = 150601, upload-time = "2025-10-14T04:41:20.245Z" }, - { url = "https://files.pythonhosted.org/packages/d7/57/71be810965493d3510a6ca79b90c19e48696fb1ff964da319334b12677f0/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f8bf04158c6b607d747e93949aa60618b61312fe647a6369f88ce2ff16043490", size = 150376, upload-time = "2025-10-14T04:41:21.398Z" }, - { url = "https://files.pythonhosted.org/packages/e5/d5/c3d057a78c181d007014feb7e9f2e65905a6c4ef182c0ddf0de2924edd65/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:554af85e960429cf30784dd47447d5125aaa3b99a6f0683589dbd27e2f45da44", size = 144825, upload-time = "2025-10-14T04:41:22.583Z" }, - { url = "https://files.pythonhosted.org/packages/e6/8c/d0406294828d4976f275ffbe66f00266c4b3136b7506941d87c00cab5272/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:74018750915ee7ad843a774364e13a3db91682f26142baddf775342c3f5b1133", size = 162583, upload-time = "2025-10-14T04:41:23.754Z" }, - { url = "https://files.pythonhosted.org/packages/d7/24/e2aa1f18c8f15c4c0e932d9287b8609dd30ad56dbe41d926bd846e22fb8d/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:c0463276121fdee9c49b98908b3a89c39be45d86d1dbaa22957e38f6321d4ce3", size = 150366, upload-time = "2025-10-14T04:41:25.27Z" }, - { url = "https://files.pythonhosted.org/packages/e4/5b/1e6160c7739aad1e2df054300cc618b06bf784a7a164b0f238360721ab86/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:362d61fd13843997c1c446760ef36f240cf81d3ebf74ac62652aebaf7838561e", size = 160300, upload-time = "2025-10-14T04:41:26.725Z" }, - { url = "https://files.pythonhosted.org/packages/7a/10/f882167cd207fbdd743e55534d5d9620e095089d176d55cb22d5322f2afd/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9a26f18905b8dd5d685d6d07b0cdf98a79f3c7a918906af7cc143ea2e164c8bc", size = 154465, upload-time = "2025-10-14T04:41:28.322Z" }, - { url = "https://files.pythonhosted.org/packages/89/66/c7a9e1b7429be72123441bfdbaf2bc13faab3f90b933f664db506dea5915/charset_normalizer-3.4.4-cp313-cp313-win32.whl", hash = "sha256:9b35f4c90079ff2e2edc5b26c0c77925e5d2d255c42c74fdb70fb49b172726ac", size = 99404, upload-time = "2025-10-14T04:41:29.95Z" }, - { url = "https://files.pythonhosted.org/packages/c4/26/b9924fa27db384bdcd97ab83b4f0a8058d96ad9626ead570674d5e737d90/charset_normalizer-3.4.4-cp313-cp313-win_amd64.whl", hash = "sha256:b435cba5f4f750aa6c0a0d92c541fb79f69a387c91e61f1795227e4ed9cece14", size = 107092, upload-time = "2025-10-14T04:41:31.188Z" }, - { url = "https://files.pythonhosted.org/packages/af/8f/3ed4bfa0c0c72a7ca17f0380cd9e4dd842b09f664e780c13cff1dcf2ef1b/charset_normalizer-3.4.4-cp313-cp313-win_arm64.whl", hash = "sha256:542d2cee80be6f80247095cc36c418f7bddd14f4a6de45af91dfad36d817bba2", size = 100408, upload-time = "2025-10-14T04:41:32.624Z" }, { url = "https://files.pythonhosted.org/packages/2a/35/7051599bd493e62411d6ede36fd5af83a38f37c4767b92884df7301db25d/charset_normalizer-3.4.4-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:da3326d9e65ef63a817ecbcc0df6e94463713b754fe293eaa03da99befb9a5bd", size = 207746, upload-time = "2025-10-14T04:41:33.773Z" }, { url = "https://files.pythonhosted.org/packages/10/9a/97c8d48ef10d6cd4fcead2415523221624bf58bcf68a802721a6bc807c8f/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8af65f14dc14a79b924524b1e7fffe304517b2bff5a58bf64f30b98bbc5079eb", size = 147889, upload-time = "2025-10-14T04:41:34.897Z" }, { url = "https://files.pythonhosted.org/packages/10/bf/979224a919a1b606c82bd2c5fa49b5c6d5727aa47b4312bb27b1734f53cd/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:74664978bb272435107de04e36db5a9735e78232b85b77d45cfb38f758efd33e", size = 143641, upload-time = "2025-10-14T04:41:36.116Z" }, @@ -101,22 +33,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b0/6f/8f7af07237c34a1defe7defc565a9bc1807762f672c0fde711a4b22bf9c0/charset_normalizer-3.4.4-cp314-cp314-win32.whl", hash = "sha256:f9d332f8c2a2fcbffe1378594431458ddbef721c1769d78e2cbc06280d8155f9", size = 99940, upload-time = "2025-10-14T04:41:49.946Z" }, { url = "https://files.pythonhosted.org/packages/4b/51/8ade005e5ca5b0d80fb4aff72a3775b325bdc3d27408c8113811a7cbe640/charset_normalizer-3.4.4-cp314-cp314-win_amd64.whl", hash = "sha256:8a6562c3700cce886c5be75ade4a5db4214fda19fede41d9792d100288d8f94c", size = 107104, upload-time = "2025-10-14T04:41:51.051Z" }, { url = "https://files.pythonhosted.org/packages/da/5f/6b8f83a55bb8278772c5ae54a577f3099025f9ade59d0136ac24a0df4bde/charset_normalizer-3.4.4-cp314-cp314-win_arm64.whl", hash = "sha256:de00632ca48df9daf77a2c65a484531649261ec9f25489917f09e455cb09ddb2", size = 100743, upload-time = "2025-10-14T04:41:52.122Z" }, - { url = "https://files.pythonhosted.org/packages/46/7c/0c4760bccf082737ca7ab84a4c2034fcc06b1f21cf3032ea98bd6feb1725/charset_normalizer-3.4.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a9768c477b9d7bd54bc0c86dbaebdec6f03306675526c9927c0e8a04e8f94af9", size = 209609, upload-time = "2025-10-14T04:42:10.922Z" }, - { url = "https://files.pythonhosted.org/packages/bb/a4/69719daef2f3d7f1819de60c9a6be981b8eeead7542d5ec4440f3c80e111/charset_normalizer-3.4.4-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1bee1e43c28aa63cb16e5c14e582580546b08e535299b8b6158a7c9c768a1f3d", size = 149029, upload-time = "2025-10-14T04:42:12.38Z" }, - { url = "https://files.pythonhosted.org/packages/e6/21/8d4e1d6c1e6070d3672908b8e4533a71b5b53e71d16828cc24d0efec564c/charset_normalizer-3.4.4-cp39-cp39-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:fd44c878ea55ba351104cb93cc85e74916eb8fa440ca7903e57575e97394f608", size = 144580, upload-time = "2025-10-14T04:42:13.549Z" }, - { url = "https://files.pythonhosted.org/packages/a7/0a/a616d001b3f25647a9068e0b9199f697ce507ec898cacb06a0d5a1617c99/charset_normalizer-3.4.4-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:0f04b14ffe5fdc8c4933862d8306109a2c51e0704acfa35d51598eb45a1e89fc", size = 162340, upload-time = "2025-10-14T04:42:14.892Z" }, - { url = "https://files.pythonhosted.org/packages/85/93/060b52deb249a5450460e0585c88a904a83aec474ab8e7aba787f45e79f2/charset_normalizer-3.4.4-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:cd09d08005f958f370f539f186d10aec3377d55b9eeb0d796025d4886119d76e", size = 159619, upload-time = "2025-10-14T04:42:16.676Z" }, - { url = "https://files.pythonhosted.org/packages/dd/21/0274deb1cc0632cd587a9a0ec6b4674d9108e461cb4cd40d457adaeb0564/charset_normalizer-3.4.4-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4fe7859a4e3e8457458e2ff592f15ccb02f3da787fcd31e0183879c3ad4692a1", size = 153980, upload-time = "2025-10-14T04:42:17.917Z" }, - { url = "https://files.pythonhosted.org/packages/28/2b/e3d7d982858dccc11b31906976323d790dded2017a0572f093ff982d692f/charset_normalizer-3.4.4-cp39-cp39-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:fa09f53c465e532f4d3db095e0c55b615f010ad81803d383195b6b5ca6cbf5f3", size = 152174, upload-time = "2025-10-14T04:42:19.018Z" }, - { url = "https://files.pythonhosted.org/packages/6e/ff/4a269f8e35f1e58b2df52c131a1fa019acb7ef3f8697b7d464b07e9b492d/charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:7fa17817dc5625de8a027cb8b26d9fefa3ea28c8253929b8d6649e705d2835b6", size = 151666, upload-time = "2025-10-14T04:42:20.171Z" }, - { url = "https://files.pythonhosted.org/packages/da/c9/ec39870f0b330d58486001dd8e532c6b9a905f5765f58a6f8204926b4a93/charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:5947809c8a2417be3267efc979c47d76a079758166f7d43ef5ae8e9f92751f88", size = 145550, upload-time = "2025-10-14T04:42:21.324Z" }, - { url = "https://files.pythonhosted.org/packages/75/8f/d186ab99e40e0ed9f82f033d6e49001701c81244d01905dd4a6924191a30/charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:4902828217069c3c5c71094537a8e623f5d097858ac6ca8252f7b4d10b7560f1", size = 163721, upload-time = "2025-10-14T04:42:22.46Z" }, - { url = "https://files.pythonhosted.org/packages/96/b1/6047663b9744df26a7e479ac1e77af7134b1fcf9026243bb48ee2d18810f/charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_riscv64.whl", hash = "sha256:7c308f7e26e4363d79df40ca5b2be1c6ba9f02bdbccfed5abddb7859a6ce72cf", size = 152127, upload-time = "2025-10-14T04:42:23.712Z" }, - { url = "https://files.pythonhosted.org/packages/59/78/e5a6eac9179f24f704d1be67d08704c3c6ab9f00963963524be27c18ed87/charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:2c9d3c380143a1fedbff95a312aa798578371eb29da42106a29019368a475318", size = 161175, upload-time = "2025-10-14T04:42:24.87Z" }, - { url = "https://files.pythonhosted.org/packages/e5/43/0e626e42d54dd2f8dd6fc5e1c5ff00f05fbca17cb699bedead2cae69c62f/charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:cb01158d8b88ee68f15949894ccc6712278243d95f344770fa7593fa2d94410c", size = 155375, upload-time = "2025-10-14T04:42:27.246Z" }, - { url = "https://files.pythonhosted.org/packages/e9/91/d9615bf2e06f35e4997616ff31248c3657ed649c5ab9d35ea12fce54e380/charset_normalizer-3.4.4-cp39-cp39-win32.whl", hash = "sha256:2677acec1a2f8ef614c6888b5b4ae4060cc184174a938ed4e8ef690e15d3e505", size = 99692, upload-time = "2025-10-14T04:42:28.425Z" }, - { url = "https://files.pythonhosted.org/packages/d1/a9/6c040053909d9d1ef4fcab45fddec083aedc9052c10078339b47c8573ea8/charset_normalizer-3.4.4-cp39-cp39-win_amd64.whl", hash = "sha256:f8e160feb2aed042cd657a72acc0b481212ed28b1b9a95c0cee1621b524e1966", size = 107192, upload-time = "2025-10-14T04:42:29.482Z" }, - { url = "https://files.pythonhosted.org/packages/f0/c6/4fa536b2c0cd3edfb7ccf8469fa0f363ea67b7213a842b90909ca33dd851/charset_normalizer-3.4.4-cp39-cp39-win_arm64.whl", hash = "sha256:b5d84d37db046c5ca74ee7bb47dd6cbc13f80665fdde3e8040bdd3fb015ecb50", size = 100220, upload-time = "2025-10-14T04:42:30.632Z" }, { url = "https://files.pythonhosted.org/packages/0a/4c/925909008ed5a988ccbb72dcc897407e5d6d3bd72410d69e051fc0c14647/charset_normalizer-3.4.4-py3-none-any.whl", hash = "sha256:7a32c560861a02ff789ad905a2fe94e3f840803362c84fecf1851cb4cf3dc37f", size = 53402, upload-time = "2025-10-14T04:42:31.76Z" }, ] @@ -129,18 +45,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, ] -[[package]] -name = "exceptiongroup" -version = "1.3.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "typing-extensions", marker = "python_full_version < '3.13'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/50/79/66800aadf48771f6b62f7eb014e352e5d06856655206165d775e675a02c9/exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219", size = 30371, upload-time = "2025-11-21T23:01:54.787Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/8a/0e/97c33bf5009bdbac74fd2beace167cab3f978feb69cc36f1ef79360d6c4e/exceptiongroup-1.3.1-py3-none-any.whl", hash = "sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577f82c773598", size = 16740, upload-time = "2025-11-21T23:01:53.443Z" }, -] - [[package]] name = "execnet" version = "2.1.2" @@ -152,75 +56,27 @@ wheels = [ [[package]] name = "greenlet" -version = "3.2.4" +version = "3.3.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/03/b8/704d753a5a45507a7aab61f18db9509302ed3d0a27ac7e0359ec2905b1a6/greenlet-3.2.4.tar.gz", hash = "sha256:0dca0d95ff849f9a364385f36ab49f50065d76964944638be9691e1832e9f86d", size = 188260, upload-time = "2025-08-07T13:24:33.51Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a3/51/1664f6b78fc6ebbd98019a1fd730e83fa78f2db7058f72b1463d3612b8db/greenlet-3.3.2.tar.gz", hash = "sha256:2eaf067fc6d886931c7962e8c6bede15d2f01965560f3359b27c80bde2d151f2", size = 188267, upload-time = "2026-02-20T20:54:15.531Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7d/ed/6bfa4109fcb23a58819600392564fea69cdc6551ffd5e69ccf1d52a40cbc/greenlet-3.2.4-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:8c68325b0d0acf8d91dde4e6f930967dd52a5302cd4062932a6b2e7c2969f47c", size = 271061, upload-time = "2025-08-07T13:17:15.373Z" }, - { url = "https://files.pythonhosted.org/packages/2a/fc/102ec1a2fc015b3a7652abab7acf3541d58c04d3d17a8d3d6a44adae1eb1/greenlet-3.2.4-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:94385f101946790ae13da500603491f04a76b6e4c059dab271b3ce2e283b2590", size = 629475, upload-time = "2025-08-07T13:42:54.009Z" }, - { url = "https://files.pythonhosted.org/packages/c5/26/80383131d55a4ac0fb08d71660fd77e7660b9db6bdb4e8884f46d9f2cc04/greenlet-3.2.4-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f10fd42b5ee276335863712fa3da6608e93f70629c631bf77145021600abc23c", size = 640802, upload-time = "2025-08-07T13:45:25.52Z" }, - { url = "https://files.pythonhosted.org/packages/9f/7c/e7833dbcd8f376f3326bd728c845d31dcde4c84268d3921afcae77d90d08/greenlet-3.2.4-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:c8c9e331e58180d0d83c5b7999255721b725913ff6bc6cf39fa2a45841a4fd4b", size = 636703, upload-time = "2025-08-07T13:53:12.622Z" }, - { url = "https://files.pythonhosted.org/packages/e9/49/547b93b7c0428ede7b3f309bc965986874759f7d89e4e04aeddbc9699acb/greenlet-3.2.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:58b97143c9cc7b86fc458f215bd0932f1757ce649e05b640fea2e79b54cedb31", size = 635417, upload-time = "2025-08-07T13:18:25.189Z" }, - { url = "https://files.pythonhosted.org/packages/7f/91/ae2eb6b7979e2f9b035a9f612cf70f1bf54aad4e1d125129bef1eae96f19/greenlet-3.2.4-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c2ca18a03a8cfb5b25bc1cbe20f3d9a4c80d8c3b13ba3df49ac3961af0b1018d", size = 584358, upload-time = "2025-08-07T13:18:23.708Z" }, - { url = "https://files.pythonhosted.org/packages/f7/85/433de0c9c0252b22b16d413c9407e6cb3b41df7389afc366ca204dbc1393/greenlet-3.2.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:9fe0a28a7b952a21e2c062cd5756d34354117796c6d9215a87f55e38d15402c5", size = 1113550, upload-time = "2025-08-07T13:42:37.467Z" }, - { url = "https://files.pythonhosted.org/packages/a1/8d/88f3ebd2bc96bf7747093696f4335a0a8a4c5acfcf1b757717c0d2474ba3/greenlet-3.2.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8854167e06950ca75b898b104b63cc646573aa5fef1353d4508ecdd1ee76254f", size = 1137126, upload-time = "2025-08-07T13:18:20.239Z" }, - { url = "https://files.pythonhosted.org/packages/f1/29/74242b7d72385e29bcc5563fba67dad94943d7cd03552bac320d597f29b2/greenlet-3.2.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f47617f698838ba98f4ff4189aef02e7343952df3a615f847bb575c3feb177a7", size = 1544904, upload-time = "2025-11-04T12:42:04.763Z" }, - { url = "https://files.pythonhosted.org/packages/c8/e2/1572b8eeab0f77df5f6729d6ab6b141e4a84ee8eb9bc8c1e7918f94eda6d/greenlet-3.2.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:af41be48a4f60429d5cad9d22175217805098a9ef7c40bfef44f7669fb9d74d8", size = 1611228, upload-time = "2025-11-04T12:42:08.423Z" }, - { url = "https://files.pythonhosted.org/packages/d6/6f/b60b0291d9623c496638c582297ead61f43c4b72eef5e9c926ef4565ec13/greenlet-3.2.4-cp310-cp310-win_amd64.whl", hash = "sha256:73f49b5368b5359d04e18d15828eecc1806033db5233397748f4ca813ff1056c", size = 298654, upload-time = "2025-08-07T13:50:00.469Z" }, - { url = "https://files.pythonhosted.org/packages/a4/de/f28ced0a67749cac23fecb02b694f6473f47686dff6afaa211d186e2ef9c/greenlet-3.2.4-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:96378df1de302bc38e99c3a9aa311967b7dc80ced1dcc6f171e99842987882a2", size = 272305, upload-time = "2025-08-07T13:15:41.288Z" }, - { url = "https://files.pythonhosted.org/packages/09/16/2c3792cba130000bf2a31c5272999113f4764fd9d874fb257ff588ac779a/greenlet-3.2.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1ee8fae0519a337f2329cb78bd7a8e128ec0f881073d43f023c7b8d4831d5246", size = 632472, upload-time = "2025-08-07T13:42:55.044Z" }, - { url = "https://files.pythonhosted.org/packages/ae/8f/95d48d7e3d433e6dae5b1682e4292242a53f22df82e6d3dda81b1701a960/greenlet-3.2.4-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:94abf90142c2a18151632371140b3dba4dee031633fe614cb592dbb6c9e17bc3", size = 644646, upload-time = "2025-08-07T13:45:26.523Z" }, - { url = "https://files.pythonhosted.org/packages/d5/5e/405965351aef8c76b8ef7ad370e5da58d57ef6068df197548b015464001a/greenlet-3.2.4-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:4d1378601b85e2e5171b99be8d2dc85f594c79967599328f95c1dc1a40f1c633", size = 640519, upload-time = "2025-08-07T13:53:13.928Z" }, - { url = "https://files.pythonhosted.org/packages/25/5d/382753b52006ce0218297ec1b628e048c4e64b155379331f25a7316eb749/greenlet-3.2.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0db5594dce18db94f7d1650d7489909b57afde4c580806b8d9203b6e79cdc079", size = 639707, upload-time = "2025-08-07T13:18:27.146Z" }, - { url = "https://files.pythonhosted.org/packages/1f/8e/abdd3f14d735b2929290a018ecf133c901be4874b858dd1c604b9319f064/greenlet-3.2.4-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2523e5246274f54fdadbce8494458a2ebdcdbc7b802318466ac5606d3cded1f8", size = 587684, upload-time = "2025-08-07T13:18:25.164Z" }, - { url = "https://files.pythonhosted.org/packages/5d/65/deb2a69c3e5996439b0176f6651e0052542bb6c8f8ec2e3fba97c9768805/greenlet-3.2.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1987de92fec508535687fb807a5cea1560f6196285a4cde35c100b8cd632cc52", size = 1116647, upload-time = "2025-08-07T13:42:38.655Z" }, - { url = "https://files.pythonhosted.org/packages/3f/cc/b07000438a29ac5cfb2194bfc128151d52f333cee74dd7dfe3fb733fc16c/greenlet-3.2.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:55e9c5affaa6775e2c6b67659f3a71684de4c549b3dd9afca3bc773533d284fa", size = 1142073, upload-time = "2025-08-07T13:18:21.737Z" }, - { url = "https://files.pythonhosted.org/packages/67/24/28a5b2fa42d12b3d7e5614145f0bd89714c34c08be6aabe39c14dd52db34/greenlet-3.2.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c9c6de1940a7d828635fbd254d69db79e54619f165ee7ce32fda763a9cb6a58c", size = 1548385, upload-time = "2025-11-04T12:42:11.067Z" }, - { url = "https://files.pythonhosted.org/packages/6a/05/03f2f0bdd0b0ff9a4f7b99333d57b53a7709c27723ec8123056b084e69cd/greenlet-3.2.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:03c5136e7be905045160b1b9fdca93dd6727b180feeafda6818e6496434ed8c5", size = 1613329, upload-time = "2025-11-04T12:42:12.928Z" }, - { url = "https://files.pythonhosted.org/packages/d8/0f/30aef242fcab550b0b3520b8e3561156857c94288f0332a79928c31a52cf/greenlet-3.2.4-cp311-cp311-win_amd64.whl", hash = "sha256:9c40adce87eaa9ddb593ccb0fa6a07caf34015a29bf8d344811665b573138db9", size = 299100, upload-time = "2025-08-07T13:44:12.287Z" }, - { url = "https://files.pythonhosted.org/packages/44/69/9b804adb5fd0671f367781560eb5eb586c4d495277c93bde4307b9e28068/greenlet-3.2.4-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:3b67ca49f54cede0186854a008109d6ee71f66bd57bb36abd6d0a0267b540cdd", size = 274079, upload-time = "2025-08-07T13:15:45.033Z" }, - { url = "https://files.pythonhosted.org/packages/46/e9/d2a80c99f19a153eff70bc451ab78615583b8dac0754cfb942223d2c1a0d/greenlet-3.2.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ddf9164e7a5b08e9d22511526865780a576f19ddd00d62f8a665949327fde8bb", size = 640997, upload-time = "2025-08-07T13:42:56.234Z" }, - { url = "https://files.pythonhosted.org/packages/3b/16/035dcfcc48715ccd345f3a93183267167cdd162ad123cd93067d86f27ce4/greenlet-3.2.4-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f28588772bb5fb869a8eb331374ec06f24a83a9c25bfa1f38b6993afe9c1e968", size = 655185, upload-time = "2025-08-07T13:45:27.624Z" }, - { url = "https://files.pythonhosted.org/packages/31/da/0386695eef69ffae1ad726881571dfe28b41970173947e7c558d9998de0f/greenlet-3.2.4-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:5c9320971821a7cb77cfab8d956fa8e39cd07ca44b6070db358ceb7f8797c8c9", size = 649926, upload-time = "2025-08-07T13:53:15.251Z" }, - { url = "https://files.pythonhosted.org/packages/68/88/69bf19fd4dc19981928ceacbc5fd4bb6bc2215d53199e367832e98d1d8fe/greenlet-3.2.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c60a6d84229b271d44b70fb6e5fa23781abb5d742af7b808ae3f6efd7c9c60f6", size = 651839, upload-time = "2025-08-07T13:18:30.281Z" }, - { url = "https://files.pythonhosted.org/packages/19/0d/6660d55f7373b2ff8152401a83e02084956da23ae58cddbfb0b330978fe9/greenlet-3.2.4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3b3812d8d0c9579967815af437d96623f45c0f2ae5f04e366de62a12d83a8fb0", size = 607586, upload-time = "2025-08-07T13:18:28.544Z" }, - { url = "https://files.pythonhosted.org/packages/8e/1a/c953fdedd22d81ee4629afbb38d2f9d71e37d23caace44775a3a969147d4/greenlet-3.2.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:abbf57b5a870d30c4675928c37278493044d7c14378350b3aa5d484fa65575f0", size = 1123281, upload-time = "2025-08-07T13:42:39.858Z" }, - { url = "https://files.pythonhosted.org/packages/3f/c7/12381b18e21aef2c6bd3a636da1088b888b97b7a0362fac2e4de92405f97/greenlet-3.2.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:20fb936b4652b6e307b8f347665e2c615540d4b42b3b4c8a321d8286da7e520f", size = 1151142, upload-time = "2025-08-07T13:18:22.981Z" }, - { url = "https://files.pythonhosted.org/packages/27/45/80935968b53cfd3f33cf99ea5f08227f2646e044568c9b1555b58ffd61c2/greenlet-3.2.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ee7a6ec486883397d70eec05059353b8e83eca9168b9f3f9a361971e77e0bcd0", size = 1564846, upload-time = "2025-11-04T12:42:15.191Z" }, - { url = "https://files.pythonhosted.org/packages/69/02/b7c30e5e04752cb4db6202a3858b149c0710e5453b71a3b2aec5d78a1aab/greenlet-3.2.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:326d234cbf337c9c3def0676412eb7040a35a768efc92504b947b3e9cfc7543d", size = 1633814, upload-time = "2025-11-04T12:42:17.175Z" }, - { url = "https://files.pythonhosted.org/packages/e9/08/b0814846b79399e585f974bbeebf5580fbe59e258ea7be64d9dfb253c84f/greenlet-3.2.4-cp312-cp312-win_amd64.whl", hash = "sha256:a7d4e128405eea3814a12cc2605e0e6aedb4035bf32697f72deca74de4105e02", size = 299899, upload-time = "2025-08-07T13:38:53.448Z" }, - { url = "https://files.pythonhosted.org/packages/49/e8/58c7f85958bda41dafea50497cbd59738c5c43dbbea5ee83d651234398f4/greenlet-3.2.4-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:1a921e542453fe531144e91e1feedf12e07351b1cf6c9e8a3325ea600a715a31", size = 272814, upload-time = "2025-08-07T13:15:50.011Z" }, - { url = "https://files.pythonhosted.org/packages/62/dd/b9f59862e9e257a16e4e610480cfffd29e3fae018a68c2332090b53aac3d/greenlet-3.2.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cd3c8e693bff0fff6ba55f140bf390fa92c994083f838fece0f63be121334945", size = 641073, upload-time = "2025-08-07T13:42:57.23Z" }, - { url = "https://files.pythonhosted.org/packages/f7/0b/bc13f787394920b23073ca3b6c4a7a21396301ed75a655bcb47196b50e6e/greenlet-3.2.4-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:710638eb93b1fa52823aa91bf75326f9ecdfd5e0466f00789246a5280f4ba0fc", size = 655191, upload-time = "2025-08-07T13:45:29.752Z" }, - { url = "https://files.pythonhosted.org/packages/f2/d6/6adde57d1345a8d0f14d31e4ab9c23cfe8e2cd39c3baf7674b4b0338d266/greenlet-3.2.4-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:c5111ccdc9c88f423426df3fd1811bfc40ed66264d35aa373420a34377efc98a", size = 649516, upload-time = "2025-08-07T13:53:16.314Z" }, - { url = "https://files.pythonhosted.org/packages/7f/3b/3a3328a788d4a473889a2d403199932be55b1b0060f4ddd96ee7cdfcad10/greenlet-3.2.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d76383238584e9711e20ebe14db6c88ddcedc1829a9ad31a584389463b5aa504", size = 652169, upload-time = "2025-08-07T13:18:32.861Z" }, - { url = "https://files.pythonhosted.org/packages/ee/43/3cecdc0349359e1a527cbf2e3e28e5f8f06d3343aaf82ca13437a9aa290f/greenlet-3.2.4-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:23768528f2911bcd7e475210822ffb5254ed10d71f4028387e5a99b4c6699671", size = 610497, upload-time = "2025-08-07T13:18:31.636Z" }, - { url = "https://files.pythonhosted.org/packages/b8/19/06b6cf5d604e2c382a6f31cafafd6f33d5dea706f4db7bdab184bad2b21d/greenlet-3.2.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:00fadb3fedccc447f517ee0d3fd8fe49eae949e1cd0f6a611818f4f6fb7dc83b", size = 1121662, upload-time = "2025-08-07T13:42:41.117Z" }, - { url = "https://files.pythonhosted.org/packages/a2/15/0d5e4e1a66fab130d98168fe984c509249c833c1a3c16806b90f253ce7b9/greenlet-3.2.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:d25c5091190f2dc0eaa3f950252122edbbadbb682aa7b1ef2f8af0f8c0afefae", size = 1149210, upload-time = "2025-08-07T13:18:24.072Z" }, - { url = "https://files.pythonhosted.org/packages/1c/53/f9c440463b3057485b8594d7a638bed53ba531165ef0ca0e6c364b5cc807/greenlet-3.2.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6e343822feb58ac4d0a1211bd9399de2b3a04963ddeec21530fc426cc121f19b", size = 1564759, upload-time = "2025-11-04T12:42:19.395Z" }, - { url = "https://files.pythonhosted.org/packages/47/e4/3bb4240abdd0a8d23f4f88adec746a3099f0d86bfedb623f063b2e3b4df0/greenlet-3.2.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ca7f6f1f2649b89ce02f6f229d7c19f680a6238af656f61e0115b24857917929", size = 1634288, upload-time = "2025-11-04T12:42:21.174Z" }, - { url = "https://files.pythonhosted.org/packages/0b/55/2321e43595e6801e105fcfdee02b34c0f996eb71e6ddffca6b10b7e1d771/greenlet-3.2.4-cp313-cp313-win_amd64.whl", hash = "sha256:554b03b6e73aaabec3745364d6239e9e012d64c68ccd0b8430c64ccc14939a8b", size = 299685, upload-time = "2025-08-07T13:24:38.824Z" }, - { url = "https://files.pythonhosted.org/packages/22/5c/85273fd7cc388285632b0498dbbab97596e04b154933dfe0f3e68156c68c/greenlet-3.2.4-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:49a30d5fda2507ae77be16479bdb62a660fa51b1eb4928b524975b3bde77b3c0", size = 273586, upload-time = "2025-08-07T13:16:08.004Z" }, - { url = "https://files.pythonhosted.org/packages/d1/75/10aeeaa3da9332c2e761e4c50d4c3556c21113ee3f0afa2cf5769946f7a3/greenlet-3.2.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:299fd615cd8fc86267b47597123e3f43ad79c9d8a22bebdce535e53550763e2f", size = 686346, upload-time = "2025-08-07T13:42:59.944Z" }, - { url = "https://files.pythonhosted.org/packages/c0/aa/687d6b12ffb505a4447567d1f3abea23bd20e73a5bed63871178e0831b7a/greenlet-3.2.4-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:c17b6b34111ea72fc5a4e4beec9711d2226285f0386ea83477cbb97c30a3f3a5", size = 699218, upload-time = "2025-08-07T13:45:30.969Z" }, - { url = "https://files.pythonhosted.org/packages/dc/8b/29aae55436521f1d6f8ff4e12fb676f3400de7fcf27fccd1d4d17fd8fecd/greenlet-3.2.4-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:b4a1870c51720687af7fa3e7cda6d08d801dae660f75a76f3845b642b4da6ee1", size = 694659, upload-time = "2025-08-07T13:53:17.759Z" }, - { url = "https://files.pythonhosted.org/packages/92/2e/ea25914b1ebfde93b6fc4ff46d6864564fba59024e928bdc7de475affc25/greenlet-3.2.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:061dc4cf2c34852b052a8620d40f36324554bc192be474b9e9770e8c042fd735", size = 695355, upload-time = "2025-08-07T13:18:34.517Z" }, - { url = "https://files.pythonhosted.org/packages/72/60/fc56c62046ec17f6b0d3060564562c64c862948c9d4bc8aa807cf5bd74f4/greenlet-3.2.4-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:44358b9bf66c8576a9f57a590d5f5d6e72fa4228b763d0e43fee6d3b06d3a337", size = 657512, upload-time = "2025-08-07T13:18:33.969Z" }, - { url = "https://files.pythonhosted.org/packages/23/6e/74407aed965a4ab6ddd93a7ded3180b730d281c77b765788419484cdfeef/greenlet-3.2.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:2917bdf657f5859fbf3386b12d68ede4cf1f04c90c3a6bc1f013dd68a22e2269", size = 1612508, upload-time = "2025-11-04T12:42:23.427Z" }, - { url = "https://files.pythonhosted.org/packages/0d/da/343cd760ab2f92bac1845ca07ee3faea9fe52bee65f7bcb19f16ad7de08b/greenlet-3.2.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:015d48959d4add5d6c9f6c5210ee3803a830dce46356e3bc326d6776bde54681", size = 1680760, upload-time = "2025-11-04T12:42:25.341Z" }, - { url = "https://files.pythonhosted.org/packages/e3/a5/6ddab2b4c112be95601c13428db1d8b6608a8b6039816f2ba09c346c08fc/greenlet-3.2.4-cp314-cp314-win_amd64.whl", hash = "sha256:e37ab26028f12dbb0ff65f29a8d3d44a765c61e729647bf2ddfbbed621726f01", size = 303425, upload-time = "2025-08-07T13:32:27.59Z" }, - { url = "https://files.pythonhosted.org/packages/f7/c0/93885c4106d2626bf51fdec377d6aef740dfa5c4877461889a7cf8e565cc/greenlet-3.2.4-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:b6a7c19cf0d2742d0809a4c05975db036fdff50cd294a93632d6a310bf9ac02c", size = 269859, upload-time = "2025-08-07T13:16:16.003Z" }, - { url = "https://files.pythonhosted.org/packages/4d/f5/33f05dc3ba10a02dedb1485870cf81c109227d3d3aa280f0e48486cac248/greenlet-3.2.4-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:27890167f55d2387576d1f41d9487ef171849ea0359ce1510ca6e06c8bece11d", size = 627610, upload-time = "2025-08-07T13:43:01.345Z" }, - { url = "https://files.pythonhosted.org/packages/b2/a7/9476decef51a0844195f99ed5dc611d212e9b3515512ecdf7321543a7225/greenlet-3.2.4-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:18d9260df2b5fbf41ae5139e1be4e796d99655f023a636cd0e11e6406cca7d58", size = 639417, upload-time = "2025-08-07T13:45:32.094Z" }, - { url = "https://files.pythonhosted.org/packages/bd/e0/849b9159cbb176f8c0af5caaff1faffdece7a8417fcc6fe1869770e33e21/greenlet-3.2.4-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:671df96c1f23c4a0d4077a325483c1503c96a1b7d9db26592ae770daa41233d4", size = 634751, upload-time = "2025-08-07T13:53:18.848Z" }, - { url = "https://files.pythonhosted.org/packages/5f/d3/844e714a9bbd39034144dca8b658dcd01839b72bb0ec7d8014e33e3705f0/greenlet-3.2.4-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:16458c245a38991aa19676900d48bd1a6f2ce3e16595051a4db9d012154e8433", size = 634020, upload-time = "2025-08-07T13:18:36.841Z" }, - { url = "https://files.pythonhosted.org/packages/6b/4c/f3de2a8de0e840ecb0253ad0dc7e2bb3747348e798ec7e397d783a3cb380/greenlet-3.2.4-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c9913f1a30e4526f432991f89ae263459b1c64d1608c0d22a5c79c287b3c70df", size = 582817, upload-time = "2025-08-07T13:18:35.48Z" }, - { url = "https://files.pythonhosted.org/packages/89/80/7332915adc766035c8980b161c2e5d50b2f941f453af232c164cff5e0aeb/greenlet-3.2.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b90654e092f928f110e0007f572007c9727b5265f7632c2fa7415b4689351594", size = 1111985, upload-time = "2025-08-07T13:42:42.425Z" }, - { url = "https://files.pythonhosted.org/packages/66/71/1928e2c80197353bcb9b50aa19c4d8e26ee6d7a900c564907665cf4b9a41/greenlet-3.2.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:81701fd84f26330f0d5f4944d4e92e61afe6319dcd9775e39396e39d7c3e5f98", size = 1136137, upload-time = "2025-08-07T13:18:26.168Z" }, - { url = "https://files.pythonhosted.org/packages/4b/bf/7bd33643e48ed45dcc0e22572f650767832bd4e1287f97434943cc402148/greenlet-3.2.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:28a3c6b7cd72a96f61b0e4b2a36f681025b60ae4779cc73c1535eb5f29560b10", size = 1542941, upload-time = "2025-11-04T12:42:27.427Z" }, - { url = "https://files.pythonhosted.org/packages/9b/74/4bc433f91d0d09a1c22954a371f9df928cb85e72640870158853a83415e5/greenlet-3.2.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:52206cd642670b0b320a1fd1cbfd95bca0e043179c1d8a045f2c6109dfe973be", size = 1609685, upload-time = "2025-11-04T12:42:29.242Z" }, - { url = "https://files.pythonhosted.org/packages/89/48/a5dc74dde38aeb2b15d418cec76ed50e1dd3d620ccda84d8199703248968/greenlet-3.2.4-cp39-cp39-win32.whl", hash = "sha256:65458b409c1ed459ea899e939f0e1cdb14f58dbc803f2f93c5eab5694d32671b", size = 281400, upload-time = "2025-08-07T14:02:20.263Z" }, - { url = "https://files.pythonhosted.org/packages/e5/44/342c4591db50db1076b8bda86ed0ad59240e3e1da17806a4cf10a6d0e447/greenlet-3.2.4-cp39-cp39-win_amd64.whl", hash = "sha256:d2e685ade4dafd447ede19c31277a224a239a0a1a4eca4e6390efedf20260cfb", size = 298533, upload-time = "2025-08-07T13:56:34.168Z" }, + { url = "https://files.pythonhosted.org/packages/3f/ae/8bffcbd373b57a5992cd077cbe8858fff39110480a9d50697091faea6f39/greenlet-3.3.2-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:8d1658d7291f9859beed69a776c10822a0a799bc4bfe1bd4272bb60e62507dab", size = 279650, upload-time = "2026-02-20T20:18:00.783Z" }, + { url = "https://files.pythonhosted.org/packages/d1/c0/45f93f348fa49abf32ac8439938726c480bd96b2a3c6f4d949ec0124b69f/greenlet-3.3.2-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:18cb1b7337bca281915b3c5d5ae19f4e76d35e1df80f4ad3c1a7be91fadf1082", size = 650295, upload-time = "2026-02-20T20:47:34.036Z" }, + { url = "https://files.pythonhosted.org/packages/b3/de/dd7589b3f2b8372069ab3e4763ea5329940fc7ad9dcd3e272a37516d7c9b/greenlet-3.3.2-cp314-cp314-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c2e47408e8ce1c6f1ceea0dffcdf6ebb85cc09e55c7af407c99f1112016e45e9", size = 662163, upload-time = "2026-02-20T20:56:01.295Z" }, + { url = "https://files.pythonhosted.org/packages/cd/ac/85804f74f1ccea31ba518dcc8ee6f14c79f73fe36fa1beba38930806df09/greenlet-3.3.2-cp314-cp314-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:e3cb43ce200f59483eb82949bf1835a99cf43d7571e900d7c8d5c62cdf25d2f9", size = 675371, upload-time = "2026-02-20T21:02:49.664Z" }, + { url = "https://files.pythonhosted.org/packages/d2/d8/09bfa816572a4d83bccd6750df1926f79158b1c36c5f73786e26dbe4ee38/greenlet-3.3.2-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:63d10328839d1973e5ba35e98cccbca71b232b14051fd957b6f8b6e8e80d0506", size = 664160, upload-time = "2026-02-20T20:21:04.015Z" }, + { url = "https://files.pythonhosted.org/packages/48/cf/56832f0c8255d27f6c35d41b5ec91168d74ec721d85f01a12131eec6b93c/greenlet-3.3.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:8e4ab3cfb02993c8cc248ea73d7dae6cec0253e9afa311c9b37e603ca9fad2ce", size = 1619181, upload-time = "2026-02-20T20:49:36.052Z" }, + { url = "https://files.pythonhosted.org/packages/0a/23/b90b60a4aabb4cec0796e55f25ffbfb579a907c3898cd2905c8918acaa16/greenlet-3.3.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:94ad81f0fd3c0c0681a018a976e5c2bd2ca2d9d94895f23e7bb1af4e8af4e2d5", size = 1687713, upload-time = "2026-02-20T20:21:11.684Z" }, + { url = "https://files.pythonhosted.org/packages/f3/ca/2101ca3d9223a1dc125140dbc063644dca76df6ff356531eb27bc267b446/greenlet-3.3.2-cp314-cp314-win_amd64.whl", hash = "sha256:8c4dd0f3997cf2512f7601563cc90dfb8957c0cff1e3a1b23991d4ea1776c492", size = 232034, upload-time = "2026-02-20T20:20:08.186Z" }, + { url = "https://files.pythonhosted.org/packages/f6/4a/ecf894e962a59dea60f04877eea0fd5724618da89f1867b28ee8b91e811f/greenlet-3.3.2-cp314-cp314-win_arm64.whl", hash = "sha256:cd6f9e2bbd46321ba3bbb4c8a15794d32960e3b0ae2cc4d49a1a53d314805d71", size = 231437, upload-time = "2026-02-20T20:18:59.722Z" }, + { url = "https://files.pythonhosted.org/packages/98/6d/8f2ef704e614bcf58ed43cfb8d87afa1c285e98194ab2cfad351bf04f81e/greenlet-3.3.2-cp314-cp314t-macosx_11_0_universal2.whl", hash = "sha256:e26e72bec7ab387ac80caa7496e0f908ff954f31065b0ffc1f8ecb1338b11b54", size = 286617, upload-time = "2026-02-20T20:19:29.856Z" }, + { url = "https://files.pythonhosted.org/packages/5e/0d/93894161d307c6ea237a43988f27eba0947b360b99ac5239ad3fe09f0b47/greenlet-3.3.2-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8b466dff7a4ffda6ca975979bab80bdadde979e29fc947ac3be4451428d8b0e4", size = 655189, upload-time = "2026-02-20T20:47:35.742Z" }, + { url = "https://files.pythonhosted.org/packages/f5/2c/d2d506ebd8abcb57386ec4f7ba20f4030cbe56eae541bc6fd6ef399c0b41/greenlet-3.3.2-cp314-cp314t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b8bddc5b73c9720bea487b3bffdb1840fe4e3656fba3bd40aa1489e9f37877ff", size = 658225, upload-time = "2026-02-20T20:56:02.527Z" }, + { url = "https://files.pythonhosted.org/packages/d1/67/8197b7e7e602150938049d8e7f30de1660cfb87e4c8ee349b42b67bdb2e1/greenlet-3.3.2-cp314-cp314t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:59b3e2c40f6706b05a9cd299c836c6aa2378cabe25d021acd80f13abf81181cf", size = 666581, upload-time = "2026-02-20T21:02:51.526Z" }, + { url = "https://files.pythonhosted.org/packages/8e/30/3a09155fbf728673a1dea713572d2d31159f824a37c22da82127056c44e4/greenlet-3.3.2-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b26b0f4428b871a751968285a1ac9648944cea09807177ac639b030bddebcea4", size = 657907, upload-time = "2026-02-20T20:21:05.259Z" }, + { url = "https://files.pythonhosted.org/packages/f3/fd/d05a4b7acd0154ed758797f0a43b4c0962a843bedfe980115e842c5b2d08/greenlet-3.3.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:1fb39a11ee2e4d94be9a76671482be9398560955c9e568550de0224e41104727", size = 1618857, upload-time = "2026-02-20T20:49:37.309Z" }, + { url = "https://files.pythonhosted.org/packages/6f/e1/50ee92a5db521de8f35075b5eff060dd43d39ebd46c2181a2042f7070385/greenlet-3.3.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:20154044d9085151bc309e7689d6f7ba10027f8f5a8c0676ad398b951913d89e", size = 1680010, upload-time = "2026-02-20T20:21:13.427Z" }, + { url = "https://files.pythonhosted.org/packages/29/4b/45d90626aef8e65336bed690106d1382f7a43665e2249017e9527df8823b/greenlet-3.3.2-cp314-cp314t-win_amd64.whl", hash = "sha256:c04c5e06ec3e022cbfe2cd4a846e1d4e50087444f875ff6d2c2ad8445495cf1a", size = 237086, upload-time = "2026-02-20T20:20:45.786Z" }, ] [[package]] @@ -232,25 +88,10 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea", size = 71008, upload-time = "2025-10-12T14:55:18.883Z" }, ] -[[package]] -name = "iniconfig" -version = "2.1.0" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version < '3.10'", -] -sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793, upload-time = "2025-03-19T20:09:59.721Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050, upload-time = "2025-03-19T20:10:01.071Z" }, -] - [[package]] name = "iniconfig" version = "2.3.0" source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version >= '3.10'", -] sdist = { url = "https://files.pythonhosted.org/packages/72/34/14ca021ce8e5dfedc35312d08ba8bf51fdd999c576889fc2c24cb97f4f10/iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730", size = 20503, upload-time = "2025-10-18T21:55:43.219Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12", size = 7484, upload-time = "2025-10-18T21:55:41.639Z" }, @@ -271,30 +112,30 @@ wheels = [ [[package]] name = "packaging" -version = "25.0" +version = "26.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727, upload-time = "2025-04-19T11:48:59.673Z" } +sdist = { url = "https://files.pythonhosted.org/packages/65/ee/299d360cdc32edc7d2cf530f3accf79c4fca01e96ffc950d8a52213bd8e4/packaging-26.0.tar.gz", hash = "sha256:00243ae351a257117b6a241061796684b084ed1c516a08c48a3f7e147a9d80b4", size = 143416, upload-time = "2026-01-21T20:50:39.064Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload-time = "2025-04-19T11:48:57.875Z" }, + { url = "https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl", hash = "sha256:b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a37529", size = 74366, upload-time = "2026-01-21T20:50:37.788Z" }, ] [[package]] name = "playwright" -version = "1.56.0" +version = "1.58.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "greenlet" }, { name = "pyee" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/6b/31/a5362cee43f844509f1f10d8a27c9cc0e2f7bdce5353d304d93b2151c1b1/playwright-1.56.0-py3-none-macosx_10_13_x86_64.whl", hash = "sha256:b33eb89c516cbc6723f2e3523bada4a4eb0984a9c411325c02d7016a5d625e9c", size = 40611424, upload-time = "2025-11-11T18:39:10.175Z" }, - { url = "https://files.pythonhosted.org/packages/ef/95/347eef596d8778fb53590dc326c344d427fa19ba3d42b646fce2a4572eb3/playwright-1.56.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:b228b3395212b9472a4ee5f1afe40d376eef9568eb039fcb3e563de8f4f4657b", size = 39400228, upload-time = "2025-11-11T18:39:13.915Z" }, - { url = "https://files.pythonhosted.org/packages/b9/54/6ad97b08b2ca1dfcb4fbde4536c4f45c0d9d8b1857a2d20e7bbfdf43bf15/playwright-1.56.0-py3-none-macosx_11_0_universal2.whl", hash = "sha256:0ef7e6fd653267798a8a968ff7aa2dcac14398b7dd7440ef57524e01e0fbbd65", size = 40611424, upload-time = "2025-11-11T18:39:17.093Z" }, - { url = "https://files.pythonhosted.org/packages/e4/76/6d409e37e82cdd5dda3df1ab958130ae32b46e42458bd4fc93d7eb8749cb/playwright-1.56.0-py3-none-manylinux1_x86_64.whl", hash = "sha256:404be089b49d94bc4c1fe0dfb07664bda5ffe87789034a03bffb884489bdfb5c", size = 46263122, upload-time = "2025-11-11T18:39:20.619Z" }, - { url = "https://files.pythonhosted.org/packages/4f/84/fb292cc5d45f3252e255ea39066cd1d2385c61c6c1596548dfbf59c88605/playwright-1.56.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64cda7cf4e51c0d35dab55190841bfcdfb5871685ec22cb722cd0ad2df183e34", size = 46110645, upload-time = "2025-11-11T18:39:24.005Z" }, - { url = "https://files.pythonhosted.org/packages/61/bd/8c02c3388ae14edc374ac9f22cbe4e14826c6a51b2d8eaf86e89fabee264/playwright-1.56.0-py3-none-win32.whl", hash = "sha256:d87b79bcb082092d916a332c27ec9732e0418c319755d235d93cc6be13bdd721", size = 35639837, upload-time = "2025-11-11T18:39:27.174Z" }, - { url = "https://files.pythonhosted.org/packages/64/27/f13b538fbc6b7a00152f4379054a49f6abc0bf55ac86f677ae54bc49fb82/playwright-1.56.0-py3-none-win_amd64.whl", hash = "sha256:3c7fc49bb9e673489bf2622855f9486d41c5101bbed964638552b864c4591f94", size = 35639843, upload-time = "2025-11-11T18:39:30.851Z" }, - { url = "https://files.pythonhosted.org/packages/f2/c7/3ee8b556107995846576b4fe42a08ed49b8677619421f2afacf6ee421138/playwright-1.56.0-py3-none-win_arm64.whl", hash = "sha256:2745490ae8dd58d27e5ea4d9aa28402e8e2991eb84fb4b2fd5fbde2106716f6f", size = 31248959, upload-time = "2025-11-11T18:39:33.998Z" }, + { url = "https://files.pythonhosted.org/packages/f8/c9/9c6061d5703267f1baae6a4647bfd1862e386fbfdb97d889f6f6ae9e3f64/playwright-1.58.0-py3-none-macosx_10_13_x86_64.whl", hash = "sha256:96e3204aac292ee639edbfdef6298b4be2ea0a55a16b7068df91adac077cc606", size = 42251098, upload-time = "2026-01-30T15:09:24.028Z" }, + { url = "https://files.pythonhosted.org/packages/e0/40/59d34a756e02f8c670f0fee987d46f7ee53d05447d43cd114ca015cb168c/playwright-1.58.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:70c763694739d28df71ed578b9c8202bb83e8fe8fb9268c04dd13afe36301f71", size = 41039625, upload-time = "2026-01-30T15:09:27.558Z" }, + { url = "https://files.pythonhosted.org/packages/e1/ee/3ce6209c9c74a650aac9028c621f357a34ea5cd4d950700f8e2c4b7fe2c4/playwright-1.58.0-py3-none-macosx_11_0_universal2.whl", hash = "sha256:185e0132578733d02802dfddfbbc35f42be23a45ff49ccae5081f25952238117", size = 42251098, upload-time = "2026-01-30T15:09:30.461Z" }, + { url = "https://files.pythonhosted.org/packages/f1/af/009958cbf23fac551a940d34e3206e6c7eed2b8c940d0c3afd1feb0b0589/playwright-1.58.0-py3-none-manylinux1_x86_64.whl", hash = "sha256:c95568ba1eda83812598c1dc9be60b4406dffd60b149bc1536180ad108723d6b", size = 46235268, upload-time = "2026-01-30T15:09:33.787Z" }, + { url = "https://files.pythonhosted.org/packages/d9/a6/0e66ad04b6d3440dae73efb39540c5685c5fc95b17c8b29340b62abbd952/playwright-1.58.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f9999948f1ab541d98812de25e3a8c410776aa516d948807140aff797b4bffa", size = 45964214, upload-time = "2026-01-30T15:09:36.751Z" }, + { url = "https://files.pythonhosted.org/packages/0e/4b/236e60ab9f6d62ed0fd32150d61f1f494cefbf02304c0061e78ed80c1c32/playwright-1.58.0-py3-none-win32.whl", hash = "sha256:1e03be090e75a0fabbdaeab65ce17c308c425d879fa48bb1d7986f96bfad0b99", size = 36815998, upload-time = "2026-01-30T15:09:39.627Z" }, + { url = "https://files.pythonhosted.org/packages/41/f8/5ec599c5e59d2f2f336a05b4f318e733077cd5044f24adb6f86900c3e6a7/playwright-1.58.0-py3-none-win_amd64.whl", hash = "sha256:a2bf639d0ce33b3ba38de777e08697b0d8f3dc07ab6802e4ac53fb65e3907af8", size = 36816005, upload-time = "2026-01-30T15:09:42.449Z" }, + { url = "https://files.pythonhosted.org/packages/c8/c4/cc0229fea55c87d6c9c67fe44a21e2cd28d1d558a5478ed4d617e9fb0c93/playwright-1.58.0-py3-none-win_arm64.whl", hash = "sha256:32ffe5c303901a13a0ecab91d1c3f74baf73b84f4bedbb6b935f5bc11cc98e1b", size = 33085919, upload-time = "2026-01-30T15:09:45.71Z" }, ] [[package]] @@ -311,7 +152,6 @@ name = "psycopg" version = "3.2.13" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "typing-extensions", marker = "python_full_version < '3.13'" }, { name = "tzdata", marker = "sys_platform == 'win32'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/44/05/d4a05988f15fcf90e0088c735b1f2fc04a30b7fc65461d6ec278f5f2f17a/psycopg-3.2.13.tar.gz", hash = "sha256:309adaeda61d44556046ec9a83a93f42bbe5310120b1995f3af49ab6d9f13c1d", size = 160626, upload-time = "2025-11-21T22:34:32.328Z" } @@ -329,42 +169,6 @@ name = "psycopg-binary" version = "3.2.13" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8f/16/325f72b7ebdb906bd6cca6c0caea5b8fd7092c4686237c5669fe3f3cc7f2/psycopg_binary-3.2.13-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9e25eb65494955c0dabdcd7097b004cbd70b982cf3cbc7186c2e854f788677a9", size = 4013642, upload-time = "2025-11-21T22:29:43.39Z" }, - { url = "https://files.pythonhosted.org/packages/4a/a6/f7616dfcab942d5ad6fb5ce8364148e22a4cd817340ac368b6a6bd17559d/psycopg_binary-3.2.13-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:732b25c2d932ca0655ea2588563eae831dc0842c93c69be4754a5b0e9760b38d", size = 4076666, upload-time = "2025-11-21T22:29:51.33Z" }, - { url = "https://files.pythonhosted.org/packages/4d/f7/cddf75c43c967c9262afe6863275fdd2e5f877d98c379f5c3a21b6fa419d/psycopg_binary-3.2.13-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7350d9cc4e35529c4548ddda34a1c17f28d3f3a8f792c25cd67e8a04952ed415", size = 4639390, upload-time = "2025-11-21T22:29:57.614Z" }, - { url = "https://files.pythonhosted.org/packages/9f/b9/f86f2e6413ac024b3a759fd446cc90c325a0d7403dce533bd419e1c41164/psycopg_binary-3.2.13-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:090c22795969ee1ace17322b1718769694607d942cef084c6fb4493adfa57da0", size = 4737745, upload-time = "2025-11-21T22:30:01.814Z" }, - { url = "https://files.pythonhosted.org/packages/19/aa/1a17c7176875d7e0a848710d87f13fdd3cc08724fa6bfcc43c72846f22b9/psycopg_binary-3.2.13-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:9ac329532f36342ff99fc1aefdbb531563bec03c7bc3ae934c8347a7a61339df", size = 4419762, upload-time = "2025-11-21T22:30:05.401Z" }, - { url = "https://files.pythonhosted.org/packages/a3/9b/5c7f8c90a3504c45ceadffa1f1f4b2fc8ce9e04494cf67d27dfa265e5681/psycopg_binary-3.2.13-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:1db11a7e618d58cfb937c409c7d279a84cbb31d32a7efc63f1e5f426f3613793", size = 3878529, upload-time = "2025-11-21T22:30:09.493Z" }, - { url = "https://files.pythonhosted.org/packages/ea/37/37e7152e6b0813e68361768d1baf0e40d8ed0ac8091471641c2c88e0cec6/psycopg_binary-3.2.13-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:5f5081b2cbb0358bb3625109d41b57411bf9d9c29762a867e38c06d974b245ee", size = 3560767, upload-time = "2025-11-21T22:30:13.88Z" }, - { url = "https://files.pythonhosted.org/packages/f7/b2/929d8e15b8797486d160b797ce84a4d0251a9361f7f31e9b01b439608e3b/psycopg_binary-3.2.13-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5d466ac3a3738647ff2405397946870dc363e33282ced151e7ea74f622947c06", size = 3604456, upload-time = "2025-11-21T22:30:18.392Z" }, - { url = "https://files.pythonhosted.org/packages/c7/74/4d4e7481bc717bbe3de689c4d40439d4e1be07df989da2c38140298cbae5/psycopg_binary-3.2.13-cp310-cp310-win_amd64.whl", hash = "sha256:087acf2b24787ae206718136c1f51bc90cda68b02c3819b0556f418e3565f2c3", size = 2910871, upload-time = "2025-11-21T22:30:22.24Z" }, - { url = "https://files.pythonhosted.org/packages/06/f5/fc70804a999167daf5b876107b99e8fe91c3f785a31753c0e3e7b93446ba/psycopg_binary-3.2.13-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9cfe87749d010dfd34534ba8c71aa0674db9a3fce65232c98989f77c742c9ce7", size = 4013844, upload-time = "2025-11-21T22:30:25.985Z" }, - { url = "https://files.pythonhosted.org/packages/07/87/857639681f5dfcd567aaf199fe4e5b026a105b0462a604f4fb7eda0735d8/psycopg_binary-3.2.13-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8db77fac1dfe3f69c982db92a51fd78e1354fa8f523a6781a636123e5c7ffcde", size = 4077002, upload-time = "2025-11-21T22:30:29.539Z" }, - { url = "https://files.pythonhosted.org/packages/7c/1d/2cb7af6a31429b9022455c966d8408a2b5a19acd3de7610402381518e8f7/psycopg_binary-3.2.13-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cbbac4cd5b0e14b91ad8244268ca3fc2f527d1a337b489af57d7669c9d2e1a24", size = 4637181, upload-time = "2025-11-21T22:30:34.126Z" }, - { url = "https://files.pythonhosted.org/packages/28/bd/ffde1ac7e6ab75646c253fbe0378772fb6f0229af8a05cd9862ee8aad0f0/psycopg_binary-3.2.13-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:a146f0a59a7e3ca92996f8133b1d5e5922e668f7c656b4a9201e702f4cf25896", size = 4737775, upload-time = "2025-11-21T22:30:38.408Z" }, - { url = "https://files.pythonhosted.org/packages/c2/74/3702732d01639c97943d56ec26860357dfacda0b5a708e82e794d07f499c/psycopg_binary-3.2.13-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:27150515de5f709e4142429db6fd36a1d01f0b8b17d915b5f7bb095364465398", size = 4421537, upload-time = "2025-11-21T22:30:42.696Z" }, - { url = "https://files.pythonhosted.org/packages/f2/8c/915a899857c2211196aa7f1749ba85bed421afaf72f185a0eb91e64ba550/psycopg_binary-3.2.13-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9942255705255367d94368941e3a913b0daf74b47d191471dbe4dc0de9fbc769", size = 3877500, upload-time = "2025-11-21T22:30:47.064Z" }, - { url = "https://files.pythonhosted.org/packages/36/d9/46060c183413bf62d47df98d7e3b30ab561639bcb583c3796cca30dafa43/psycopg_binary-3.2.13-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:75ebc8335f48c339ec24f4c371595f6b7043147fe6d18e619c8564428ab8adaf", size = 3560186, upload-time = "2025-11-21T22:30:54.522Z" }, - { url = "https://files.pythonhosted.org/packages/56/cf/2987689614632898e4861e4122cd41937ea9b5afcbe3c3061c7265bfa6de/psycopg_binary-3.2.13-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6fe2982a73b2ea473c9e2b91a35a21af3b03313bed188eccbcde4972483ac60a", size = 3601117, upload-time = "2025-11-21T22:31:01.218Z" }, - { url = "https://files.pythonhosted.org/packages/e2/ef/df7fa8a47ef47d08af8a792343811a98bc7ab48f763560fc1d5acc1f28af/psycopg_binary-3.2.13-cp311-cp311-win_amd64.whl", hash = "sha256:6a50db4661fae78779d3cc38a0a68cabc997ca9d485ec27443b109ef8ac1672a", size = 2912873, upload-time = "2025-11-21T22:31:05.473Z" }, - { url = "https://files.pythonhosted.org/packages/49/9e/f90243b3d0d007a89989b013b0eb3e78ac929fed4eb40a2b317452abafe1/psycopg_binary-3.2.13-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:223fc610a80bbc4355ad3c9952d468a18bb5cd7065846a8c275f100d80cd4004", size = 3996285, upload-time = "2025-11-21T22:31:08.95Z" }, - { url = "https://files.pythonhosted.org/packages/12/42/7d55f515ee3e2ced5ff9bc493fb2308f5187686b6d9583cd6a9c880d2053/psycopg_binary-3.2.13-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b67f06a68d68b4621b6a411f9e583df876977afa06b1ba270b1b347d40aa93fc", size = 4070567, upload-time = "2025-11-21T22:31:12.31Z" }, - { url = "https://files.pythonhosted.org/packages/a8/a8/ead4de04d8cf5f35119a75a8dd92fa4a2ec8a309b1aa58855f64616c03d7/psycopg_binary-3.2.13-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:082579f2ae41bdabe20c82810810f3e290ac2206cccf0cb41cf36b3218f53b3c", size = 4616833, upload-time = "2025-11-21T22:31:16.614Z" }, - { url = "https://files.pythonhosted.org/packages/26/2e/4af6ab69ade7d67d31296f88c79c322a3522564e30b3f1458f19e74d67c3/psycopg_binary-3.2.13-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:ff7df7bd8ec2c805f3a4896b8ade971139af0f9f8cf45d05014ac71fe54887be", size = 4711710, upload-time = "2025-11-21T22:31:22.007Z" }, - { url = "https://files.pythonhosted.org/packages/9a/31/bdbd6b2264bb7ae5fe8b775c5524da73329d8888c6137fd8b050ff9cabbc/psycopg_binary-3.2.13-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8f1189dc78553ef4b2e55d9e116fc74870191bc6a9a5f4442412a703c4cc6c3b", size = 4401656, upload-time = "2025-11-21T22:31:26.842Z" }, - { url = "https://files.pythonhosted.org/packages/33/c5/8fd8f96450e4ef242022c9a588305e3dc7309c34bc392a9b4c2da60854b1/psycopg_binary-3.2.13-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0ef8ed4a4e0f7bf5e941782478a43c14b2b585b031e2266dd3afb87be2775d95", size = 3851747, upload-time = "2025-11-21T22:31:30.5Z" }, - { url = "https://files.pythonhosted.org/packages/4a/47/406d102ae49d253f124644530f1e5b3fd2f92aea59d4f9b8dd1c71cf8e0f/psycopg_binary-3.2.13-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:de06fc9707a49f7c081b5c950974dd6de3dc33d681f7524f0b396471f5a4a480", size = 3524796, upload-time = "2025-11-21T22:31:34.377Z" }, - { url = "https://files.pythonhosted.org/packages/45/6f/a89be8aee27a5522e97dbcb225fe429c489acdf0bb25fc0fadb329dfb39f/psycopg_binary-3.2.13-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:917ad1cd6e6ef8a9df2f28d7b29c7148f089be46ac56fe838f986c0227652d14", size = 3576536, upload-time = "2025-11-21T22:31:38.06Z" }, - { url = "https://files.pythonhosted.org/packages/ef/f8/c924c7dc792c81bf6181d7d4eeb613c8b2151b3a208f95cedec3c1a25ba3/psycopg_binary-3.2.13-cp312-cp312-win_amd64.whl", hash = "sha256:b53b0d9499805b307017070492189e349256e0946f62c815e442baa01f2ea6c5", size = 2902172, upload-time = "2025-11-21T22:31:41.256Z" }, - { url = "https://files.pythonhosted.org/packages/28/ec/ef37bb44dc02fcc6c0a3eeb93f4baaac13bcb228633fe38ad3fb5a3f6449/psycopg_binary-3.2.13-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:dbae6ab1966e2b61d97e47220556c330c4608bb4cfb3a124aa0595c39995c068", size = 3995628, upload-time = "2025-11-21T22:31:45.921Z" }, - { url = "https://files.pythonhosted.org/packages/6d/ad/4748f5f1a40248af16dba087dbec50bd335ee025cc1fb9bf64773378ceff/psycopg_binary-3.2.13-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:fae933e4564386199fc54845d85413eedb49760e0bcd2b621fde2dd1825b99b3", size = 4069024, upload-time = "2025-11-21T22:31:50.202Z" }, - { url = "https://files.pythonhosted.org/packages/cf/c2/f02ec6bbc30c7fcd3b39823d2d624b42fae480edeb6e50eb3276281d5635/psycopg_binary-3.2.13-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:13e2f8894d410678529ff9f1211f96c5a93ff142f992b302682b42d924428b61", size = 4615127, upload-time = "2025-11-21T22:31:56.517Z" }, - { url = "https://files.pythonhosted.org/packages/f0/0d/a54fc2cdd672c84175d6869cc823d6ec2a8909318d491f3c24e6077983f2/psycopg_binary-3.2.13-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f26f7009375cf1e92180e5c517c52da1054f7e690dde90e0ed00fa8b5736bcd4", size = 4710267, upload-time = "2025-11-21T22:32:04.585Z" }, - { url = "https://files.pythonhosted.org/packages/9d/b7/067de1acaf3d312253351f3af4121f972584bd36cada6378d4b0cdcebd38/psycopg_binary-3.2.13-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ea2fdbcc9142933a47c66970e0df8b363e3bd1ea4c5ce376f2f3d94a9aeec847", size = 4400795, upload-time = "2025-11-21T22:32:08.883Z" }, - { url = "https://files.pythonhosted.org/packages/64/b5/030e6b1ebfc4d3a8fca03adc5fc827982643bad0b01a1268538d17c08ed3/psycopg_binary-3.2.13-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac92d6bc1d4a41c7459953a9aa727b9966e937e94c9e072527317fd2a67d488b", size = 3851239, upload-time = "2025-11-21T22:32:12.333Z" }, - { url = "https://files.pythonhosted.org/packages/79/6f/0541845364a7de9eae6807060da6a04b22a8eb2e803606d285d9250fbe93/psycopg_binary-3.2.13-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:8b843c00478739e95c46d6d3472b13123b634685f107831a9bfc41503a06ecbd", size = 3525084, upload-time = "2025-11-21T22:32:15.946Z" }, - { url = "https://files.pythonhosted.org/packages/83/ae/6507890dc30a4bbd9d938d4ff3a4079d009a5ad8170af51c7f762438fdbf/psycopg_binary-3.2.13-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:2f63868cc96bc18486cebec24445affbdd7f7debf28fac466ea935a8b5a4753b", size = 3576787, upload-time = "2025-11-21T22:32:19.922Z" }, - { url = "https://files.pythonhosted.org/packages/9d/64/3d1c2f1fd09b60cdfbe68b9a810b357ba505eff6e4bdb1a2d9f6729da64c/psycopg_binary-3.2.13-cp313-cp313-win_amd64.whl", hash = "sha256:594dfbca3326e997ae738d3d339004e8416b1f7390f52ce8dc2d692393e8fa96", size = 2905584, upload-time = "2025-11-21T22:32:23.399Z" }, { url = "https://files.pythonhosted.org/packages/d3/b4/7656b3d67bedff2b900c8c4671cb6eb5fb99c2fc36da33579cac89779c25/psycopg_binary-3.2.13-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:502a778c3e07c6b3aabfa56ee230e8c264d2debfab42d11535513a01bdfff0d6", size = 3997201, upload-time = "2025-11-21T22:32:28.185Z" }, { url = "https://files.pythonhosted.org/packages/e0/2e/3b4afbd94d48df19c3931cedba464b109f89d81ac43178e6a3d654b4e8d5/psycopg_binary-3.2.13-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:7561a71d764d6f74d66e8b7d844b0f27fa33de508f65c17b1d56a94c73644776", size = 4071631, upload-time = "2025-11-21T22:32:32.594Z" }, { url = "https://files.pythonhosted.org/packages/5e/8b/107d06d55992e2f13157eb705ba5a47d06c4cf1bed077dff0c567b10c187/psycopg_binary-3.2.13-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:9caf14745a1930b4e03fe4072cd7154eaf6e1241d20c42130ed784408a26b24b", size = 4620918, upload-time = "2025-11-21T22:32:37.357Z" }, @@ -374,27 +178,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/38/7c/f492e63b517d6dcd564e8c43bc15e11a4c712a848adf8938ce33bfd4c867/psycopg_binary-3.2.13-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:cc3a0408435dfbb77eeca5e8050df4b19a6e9b7e5e5583edf524c4a83d6293b2", size = 3531351, upload-time = "2025-11-21T22:32:55.571Z" }, { url = "https://files.pythonhosted.org/packages/07/5a/d8743eb23944e5cf2a0bbfa92935c140b5beaacdb872be641065ed70ab2c/psycopg_binary-3.2.13-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:65df0d459ffba14082d8ca4bb2f6ffbb2f8d02968f7d34a747e1031934b76b23", size = 3581034, upload-time = "2025-11-21T22:33:01.648Z" }, { url = "https://files.pythonhosted.org/packages/46/b2/411d4180252144f7eff024894d2d2ebb98c012c944a282fc20250870e461/psycopg_binary-3.2.13-cp314-cp314-win_amd64.whl", hash = "sha256:5c77f156c7316529ed371b5f95a51139e531328ee39c37493a2afcbc1f79d5de", size = 3000162, upload-time = "2025-11-21T22:33:07.378Z" }, - { url = "https://files.pythonhosted.org/packages/80/dc/3ea3fe5df19af323b4b78e0e98e073f8117b1336e5b6dc6978c067485019/psycopg_binary-3.2.13-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6d8d1b709509d0f8cb857acf740b5eccd5bd2fb208a5b20e895f250519a32459", size = 4015148, upload-time = "2025-11-21T22:33:47.539Z" }, - { url = "https://files.pythonhosted.org/packages/e1/28/a832b014974e7bda61b3c684afe5e47f70d5dc4471cbab90a41a7c2bdf6a/psycopg_binary-3.2.13-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2d45bc5f4335498d32a26c8f8c0bf9ce8c973c19e78a9ee77c031300fb361300", size = 4078197, upload-time = "2025-11-21T22:33:52.494Z" }, - { url = "https://files.pythonhosted.org/packages/5c/8c/5962c876a8bba4a6f8ff941998577e8359c928c700d092893e10f97aa94e/psycopg_binary-3.2.13-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f062d725898bf6fc5cfc6349a0d08ee09f129deb14d7fcd5c30f9f1b349f39dc", size = 4638520, upload-time = "2025-11-21T22:33:57.568Z" }, - { url = "https://files.pythonhosted.org/packages/cd/b2/b557ac96752da8fd4b0ff7a128d148e6809ce576a2add6156c91d55abe0a/psycopg_binary-3.2.13-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:915647b5bbbcde2bd464dc293eec4f74710fa71edc4f85aa6f6c8494a179dc9e", size = 4737730, upload-time = "2025-11-21T22:34:02.969Z" }, - { url = "https://files.pythonhosted.org/packages/b5/9a/af2d96c0e711e90cf340a5f607911cd6df593fe1aec9c46644162161af18/psycopg_binary-3.2.13-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d3aec6e2f1cf4deb1b9a3ac287c0591479f3bd851d0a911d628f8c2c71c14f4a", size = 4421382, upload-time = "2025-11-21T22:34:11.501Z" }, - { url = "https://files.pythonhosted.org/packages/0e/f6/f8135198a2c70ca663b55d44c6fc3beb4e36025679b541a9d489814f2ddc/psycopg_binary-3.2.13-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:a56a8b1794cbf27ca04012ac2890d58cfc82b3b310c1dac4fa78fbf6f57e7440", size = 3879259, upload-time = "2025-11-21T22:34:17.706Z" }, - { url = "https://files.pythonhosted.org/packages/7c/8c/3f778fc954f0b691941073a1d8b78c07219594135831cad32a739e4eee97/psycopg_binary-3.2.13-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:4150a5e72f863be442d153829724109d83a76871d9bc801d6bb5b9c84b5b19b9", size = 3560475, upload-time = "2025-11-21T22:34:21.329Z" }, - { url = "https://files.pythonhosted.org/packages/21/d2/731d56c636155f210fbb00cdbb7498c0e04a21052415520da54ac96eca63/psycopg_binary-3.2.13-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:028b49eb465f5d263d250cfd4f168fdabb306d0bbd97fd66a8a1fd7b696a953c", size = 3605616, upload-time = "2025-11-21T22:34:25.229Z" }, - { url = "https://files.pythonhosted.org/packages/8f/22/2619870c9ed44b5eaeae4f7706126754ccadde6319483cd4c490f5d13fbb/psycopg_binary-3.2.13-cp39-cp39-win_amd64.whl", hash = "sha256:532ea34f673148d637be65a96251832252e278540b39fbd683ef37e58ec361c1", size = 2912739, upload-time = "2025-11-21T22:34:29.069Z" }, ] [[package]] name = "pyee" -version = "13.0.0" +version = "13.0.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/95/03/1fd98d5841cd7964a27d729ccf2199602fe05eb7a405c1462eb7277945ed/pyee-13.0.0.tar.gz", hash = "sha256:b391e3c5a434d1f5118a25615001dbc8f669cf410ab67d04c4d4e07c55481c37", size = 31250, upload-time = "2025-03-17T18:53:15.955Z" } +sdist = { url = "https://files.pythonhosted.org/packages/8b/04/e7c1fe4dc78a6fdbfd6c337b1c3732ff543b8a397683ab38378447baa331/pyee-13.0.1.tar.gz", hash = "sha256:0b931f7c14535667ed4c7e0d531716368715e860b988770fc7eb8578d1f67fc8", size = 31655, upload-time = "2026-02-14T21:12:28.044Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/9b/4d/b9add7c84060d4c1906abe9a7e5359f2a60f7a9a4f67268b2766673427d8/pyee-13.0.0-py3-none-any.whl", hash = "sha256:48195a3cddb3b1515ce0695ed76036b5ccc2ef3a9f963ff9f77aec0139845498", size = 15730, upload-time = "2025-03-17T18:53:14.532Z" }, + { url = "https://files.pythonhosted.org/packages/a0/c4/b4d4827c93ef43c01f599ef31453ccc1c132b353284fc6c87d535c233129/pyee-13.0.1-py3-none-any.whl", hash = "sha256:af2f8fede4171ef667dfded53f96e2ed0d6e6bd7ee3bb46437f77e3b57689228", size = 15659, upload-time = "2026-02-14T21:12:26.263Z" }, ] [[package]] @@ -408,21 +203,18 @@ wheels = [ [[package]] name = "pytest" -version = "8.4.2" +version = "9.0.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, - { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, - { name = "iniconfig", version = "2.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, - { name = "iniconfig", version = "2.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "iniconfig" }, { name = "packaging" }, { name = "pluggy" }, { name = "pygments" }, - { name = "tomli", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a3/5c/00a0e072241553e1a7496d638deababa67c5058571567b92a7eaa258397c/pytest-8.4.2.tar.gz", hash = "sha256:86c0d0b93306b961d58d62a4db4879f27fe25513d4b969df351abdddb3c30e01", size = 1519618, upload-time = "2025-09-04T14:34:22.711Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d1/db/7ef3487e0fb0049ddb5ce41d3a49c235bf9ad299b6a25d5780a89f19230f/pytest-9.0.2.tar.gz", hash = "sha256:75186651a92bd89611d1d9fc20f0b4345fd827c41ccd5c299a868a05d70edf11", size = 1568901, upload-time = "2025-12-06T21:30:51.014Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a8/a4/20da314d277121d6534b3a980b29035dcd51e6744bd79075a6ce8fa4eb8d/pytest-8.4.2-py3-none-any.whl", hash = "sha256:872f880de3fc3a5bdc88a11b39c9710c3497a547cfa9320bc3c5e62fbf272e79", size = 365750, upload-time = "2025-09-04T14:34:20.226Z" }, + { url = "https://files.pythonhosted.org/packages/3b/ab/b3226f0bd7cdcf710fbede2b3548584366da3b19b5021e74f5bde2a8fa3f/pytest-9.0.2-py3-none-any.whl", hash = "sha256:711ffd45bf766d5264d487b917733b453d917afd2b0ad65223959f59089f875b", size = 374801, upload-time = "2025-12-06T21:30:49.154Z" }, ] [[package]] @@ -438,36 +230,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/98/1c/b00940ab9eb8ede7897443b771987f2f4a76f06be02f1b3f01eb7567e24a/pytest_base_url-2.1.0-py3-none-any.whl", hash = "sha256:3ad15611778764d451927b2a53240c1a7a591b521ea44cebfe45849d2d2812e6", size = 5302, upload-time = "2024-01-31T22:42:58.897Z" }, ] -[[package]] -name = "pytest-playwright" -version = "0.7.1" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version < '3.10'", -] -dependencies = [ - { name = "playwright", marker = "python_full_version < '3.10'" }, - { name = "pytest", marker = "python_full_version < '3.10'" }, - { name = "pytest-base-url", marker = "python_full_version < '3.10'" }, - { name = "python-slugify", marker = "python_full_version < '3.10'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/a0/1e/9771990bad2b59d37728c4b6f28c234b3badbb2494bd72d54a6e2a988e23/pytest_playwright-0.7.1.tar.gz", hash = "sha256:94b551b2677ecdc16284fcd6a4f0045eafda47a60e74410f3fe4d8260e12cabf", size = 16769, upload-time = "2025-09-08T08:10:53.765Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/dd/59/373da90ce6a1a46ca6a449bf16cea11a3c6e269814eb60e7668526350b95/pytest_playwright-0.7.1-py3-none-any.whl", hash = "sha256:fcc46510fb75f8eba6df3bc8e84e4e902483d92be98075f20b9d160651a36d90", size = 16754, upload-time = "2025-09-08T08:10:55.92Z" }, -] - [[package]] name = "pytest-playwright" version = "0.7.2" source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version >= '3.10'", -] dependencies = [ - { name = "playwright", marker = "python_full_version >= '3.10'" }, - { name = "pytest", marker = "python_full_version >= '3.10'" }, - { name = "pytest-base-url", marker = "python_full_version >= '3.10'" }, - { name = "python-slugify", marker = "python_full_version >= '3.10'" }, + { name = "playwright" }, + { name = "pytest" }, + { name = "pytest-base-url" }, + { name = "python-slugify" }, ] sdist = { url = "https://files.pythonhosted.org/packages/e8/6b/913e36aa421b35689ec95ed953ff7e8df3f2ee1c7b8ab2a3f1fd39d95faf/pytest_playwright-0.7.2.tar.gz", hash = "sha256:247b61123b28c7e8febb993a187a07e54f14a9aa04edc166f7a976d88f04c770", size = 16928, upload-time = "2025-11-24T03:43:22.53Z" } wheels = [ @@ -522,8 +293,7 @@ dependencies = [ { name = "loguru" }, { name = "psycopg", extra = ["binary"] }, { name = "pytest" }, - { name = "pytest-playwright", version = "0.7.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, - { name = "pytest-playwright", version = "0.7.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "pytest-playwright" }, { name = "pytest-xdist" }, { name = "toml" }, ] @@ -532,7 +302,7 @@ dependencies = [ requires-dist = [ { name = "loguru", specifier = "~=0.7.3" }, { name = "psycopg", extras = ["binary"], specifier = "~=3.2.13" }, - { name = "pytest", specifier = "~=8.4.2" }, + { name = "pytest", specifier = "==9.0.2" }, { name = "pytest-playwright", specifier = "~=0.7.1" }, { name = "pytest-xdist", specifier = "~=3.8.0" }, { name = "toml", specifier = "~=0.10.2" }, @@ -556,55 +326,6 @@ 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.3.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/52/ed/3f73f72945444548f33eba9a87fc7a6e969915e7b1acc8260b30e1f76a2f/tomli-2.3.0.tar.gz", hash = "sha256:64be704a875d2a59753d80ee8a533c3fe183e3f06807ff7dc2232938ccb01549", size = 17392, upload-time = "2025-10-08T22:01:47.119Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b3/2e/299f62b401438d5fe1624119c723f5d877acc86a4c2492da405626665f12/tomli-2.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:88bd15eb972f3664f5ed4b57c1634a97153b4bac4479dcb6a495f41921eb7f45", size = 153236, upload-time = "2025-10-08T22:01:00.137Z" }, - { url = "https://files.pythonhosted.org/packages/86/7f/d8fffe6a7aefdb61bced88fcb5e280cfd71e08939da5894161bd71bea022/tomli-2.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:883b1c0d6398a6a9d29b508c331fa56adbcdff647f6ace4dfca0f50e90dfd0ba", size = 148084, upload-time = "2025-10-08T22:01:01.63Z" }, - { url = "https://files.pythonhosted.org/packages/47/5c/24935fb6a2ee63e86d80e4d3b58b222dafaf438c416752c8b58537c8b89a/tomli-2.3.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d1381caf13ab9f300e30dd8feadb3de072aeb86f1d34a8569453ff32a7dea4bf", size = 234832, upload-time = "2025-10-08T22:01:02.543Z" }, - { url = "https://files.pythonhosted.org/packages/89/da/75dfd804fc11e6612846758a23f13271b76d577e299592b4371a4ca4cd09/tomli-2.3.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a0e285d2649b78c0d9027570d4da3425bdb49830a6156121360b3f8511ea3441", size = 242052, upload-time = "2025-10-08T22:01:03.836Z" }, - { url = "https://files.pythonhosted.org/packages/70/8c/f48ac899f7b3ca7eb13af73bacbc93aec37f9c954df3c08ad96991c8c373/tomli-2.3.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0a154a9ae14bfcf5d8917a59b51ffd5a3ac1fd149b71b47a3a104ca4edcfa845", size = 239555, upload-time = "2025-10-08T22:01:04.834Z" }, - { url = "https://files.pythonhosted.org/packages/ba/28/72f8afd73f1d0e7829bfc093f4cb98ce0a40ffc0cc997009ee1ed94ba705/tomli-2.3.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:74bf8464ff93e413514fefd2be591c3b0b23231a77f901db1eb30d6f712fc42c", size = 245128, upload-time = "2025-10-08T22:01:05.84Z" }, - { url = "https://files.pythonhosted.org/packages/b6/eb/a7679c8ac85208706d27436e8d421dfa39d4c914dcf5fa8083a9305f58d9/tomli-2.3.0-cp311-cp311-win32.whl", hash = "sha256:00b5f5d95bbfc7d12f91ad8c593a1659b6387b43f054104cda404be6bda62456", size = 96445, upload-time = "2025-10-08T22:01:06.896Z" }, - { url = "https://files.pythonhosted.org/packages/0a/fe/3d3420c4cb1ad9cb462fb52967080575f15898da97e21cb6f1361d505383/tomli-2.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:4dc4ce8483a5d429ab602f111a93a6ab1ed425eae3122032db7e9acf449451be", size = 107165, upload-time = "2025-10-08T22:01:08.107Z" }, - { url = "https://files.pythonhosted.org/packages/ff/b7/40f36368fcabc518bb11c8f06379a0fd631985046c038aca08c6d6a43c6e/tomli-2.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d7d86942e56ded512a594786a5ba0a5e521d02529b3826e7761a05138341a2ac", size = 154891, upload-time = "2025-10-08T22:01:09.082Z" }, - { url = "https://files.pythonhosted.org/packages/f9/3f/d9dd692199e3b3aab2e4e4dd948abd0f790d9ded8cd10cbaae276a898434/tomli-2.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:73ee0b47d4dad1c5e996e3cd33b8a76a50167ae5f96a2607cbe8cc773506ab22", size = 148796, upload-time = "2025-10-08T22:01:10.266Z" }, - { url = "https://files.pythonhosted.org/packages/60/83/59bff4996c2cf9f9387a0f5a3394629c7efa5ef16142076a23a90f1955fa/tomli-2.3.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:792262b94d5d0a466afb5bc63c7daa9d75520110971ee269152083270998316f", size = 242121, upload-time = "2025-10-08T22:01:11.332Z" }, - { url = "https://files.pythonhosted.org/packages/45/e5/7c5119ff39de8693d6baab6c0b6dcb556d192c165596e9fc231ea1052041/tomli-2.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4f195fe57ecceac95a66a75ac24d9d5fbc98ef0962e09b2eddec5d39375aae52", size = 250070, upload-time = "2025-10-08T22:01:12.498Z" }, - { url = "https://files.pythonhosted.org/packages/45/12/ad5126d3a278f27e6701abde51d342aa78d06e27ce2bb596a01f7709a5a2/tomli-2.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e31d432427dcbf4d86958c184b9bfd1e96b5b71f8eb17e6d02531f434fd335b8", size = 245859, upload-time = "2025-10-08T22:01:13.551Z" }, - { url = "https://files.pythonhosted.org/packages/fb/a1/4d6865da6a71c603cfe6ad0e6556c73c76548557a8d658f9e3b142df245f/tomli-2.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7b0882799624980785240ab732537fcfc372601015c00f7fc367c55308c186f6", size = 250296, upload-time = "2025-10-08T22:01:14.614Z" }, - { url = "https://files.pythonhosted.org/packages/a0/b7/a7a7042715d55c9ba6e8b196d65d2cb662578b4d8cd17d882d45322b0d78/tomli-2.3.0-cp312-cp312-win32.whl", hash = "sha256:ff72b71b5d10d22ecb084d345fc26f42b5143c5533db5e2eaba7d2d335358876", size = 97124, upload-time = "2025-10-08T22:01:15.629Z" }, - { url = "https://files.pythonhosted.org/packages/06/1e/f22f100db15a68b520664eb3328fb0ae4e90530887928558112c8d1f4515/tomli-2.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:1cb4ed918939151a03f33d4242ccd0aa5f11b3547d0cf30f7c74a408a5b99878", size = 107698, upload-time = "2025-10-08T22:01:16.51Z" }, - { url = "https://files.pythonhosted.org/packages/89/48/06ee6eabe4fdd9ecd48bf488f4ac783844fd777f547b8d1b61c11939974e/tomli-2.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5192f562738228945d7b13d4930baffda67b69425a7f0da96d360b0a3888136b", size = 154819, upload-time = "2025-10-08T22:01:17.964Z" }, - { url = "https://files.pythonhosted.org/packages/f1/01/88793757d54d8937015c75dcdfb673c65471945f6be98e6a0410fba167ed/tomli-2.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:be71c93a63d738597996be9528f4abe628d1adf5e6eb11607bc8fe1a510b5dae", size = 148766, upload-time = "2025-10-08T22:01:18.959Z" }, - { url = "https://files.pythonhosted.org/packages/42/17/5e2c956f0144b812e7e107f94f1cc54af734eb17b5191c0bbfb72de5e93e/tomli-2.3.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c4665508bcbac83a31ff8ab08f424b665200c0e1e645d2bd9ab3d3e557b6185b", size = 240771, upload-time = "2025-10-08T22:01:20.106Z" }, - { url = "https://files.pythonhosted.org/packages/d5/f4/0fbd014909748706c01d16824eadb0307115f9562a15cbb012cd9b3512c5/tomli-2.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4021923f97266babc6ccab9f5068642a0095faa0a51a246a6a02fccbb3514eaf", size = 248586, upload-time = "2025-10-08T22:01:21.164Z" }, - { url = "https://files.pythonhosted.org/packages/30/77/fed85e114bde5e81ecf9bc5da0cc69f2914b38f4708c80ae67d0c10180c5/tomli-2.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4ea38c40145a357d513bffad0ed869f13c1773716cf71ccaa83b0fa0cc4e42f", size = 244792, upload-time = "2025-10-08T22:01:22.417Z" }, - { url = "https://files.pythonhosted.org/packages/55/92/afed3d497f7c186dc71e6ee6d4fcb0acfa5f7d0a1a2878f8beae379ae0cc/tomli-2.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ad805ea85eda330dbad64c7ea7a4556259665bdf9d2672f5dccc740eb9d3ca05", size = 248909, upload-time = "2025-10-08T22:01:23.859Z" }, - { url = "https://files.pythonhosted.org/packages/f8/84/ef50c51b5a9472e7265ce1ffc7f24cd4023d289e109f669bdb1553f6a7c2/tomli-2.3.0-cp313-cp313-win32.whl", hash = "sha256:97d5eec30149fd3294270e889b4234023f2c69747e555a27bd708828353ab606", size = 96946, upload-time = "2025-10-08T22:01:24.893Z" }, - { url = "https://files.pythonhosted.org/packages/b2/b7/718cd1da0884f281f95ccfa3a6cc572d30053cba64603f79d431d3c9b61b/tomli-2.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:0c95ca56fbe89e065c6ead5b593ee64b84a26fca063b5d71a1122bf26e533999", size = 107705, upload-time = "2025-10-08T22:01:26.153Z" }, - { url = "https://files.pythonhosted.org/packages/19/94/aeafa14a52e16163008060506fcb6aa1949d13548d13752171a755c65611/tomli-2.3.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:cebc6fe843e0733ee827a282aca4999b596241195f43b4cc371d64fc6639da9e", size = 154244, upload-time = "2025-10-08T22:01:27.06Z" }, - { url = "https://files.pythonhosted.org/packages/db/e4/1e58409aa78eefa47ccd19779fc6f36787edbe7d4cd330eeeedb33a4515b/tomli-2.3.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:4c2ef0244c75aba9355561272009d934953817c49f47d768070c3c94355c2aa3", size = 148637, upload-time = "2025-10-08T22:01:28.059Z" }, - { url = "https://files.pythonhosted.org/packages/26/b6/d1eccb62f665e44359226811064596dd6a366ea1f985839c566cd61525ae/tomli-2.3.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c22a8bf253bacc0cf11f35ad9808b6cb75ada2631c2d97c971122583b129afbc", size = 241925, upload-time = "2025-10-08T22:01:29.066Z" }, - { url = "https://files.pythonhosted.org/packages/70/91/7cdab9a03e6d3d2bb11beae108da5bdc1c34bdeb06e21163482544ddcc90/tomli-2.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0eea8cc5c5e9f89c9b90c4896a8deefc74f518db5927d0e0e8d4a80953d774d0", size = 249045, upload-time = "2025-10-08T22:01:31.98Z" }, - { url = "https://files.pythonhosted.org/packages/15/1b/8c26874ed1f6e4f1fcfeb868db8a794cbe9f227299402db58cfcc858766c/tomli-2.3.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b74a0e59ec5d15127acdabd75ea17726ac4c5178ae51b85bfe39c4f8a278e879", size = 245835, upload-time = "2025-10-08T22:01:32.989Z" }, - { url = "https://files.pythonhosted.org/packages/fd/42/8e3c6a9a4b1a1360c1a2a39f0b972cef2cc9ebd56025168c4137192a9321/tomli-2.3.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:b5870b50c9db823c595983571d1296a6ff3e1b88f734a4c8f6fc6188397de005", size = 253109, upload-time = "2025-10-08T22:01:34.052Z" }, - { url = "https://files.pythonhosted.org/packages/22/0c/b4da635000a71b5f80130937eeac12e686eefb376b8dee113b4a582bba42/tomli-2.3.0-cp314-cp314-win32.whl", hash = "sha256:feb0dacc61170ed7ab602d3d972a58f14ee3ee60494292d384649a3dc38ef463", size = 97930, upload-time = "2025-10-08T22:01:35.082Z" }, - { url = "https://files.pythonhosted.org/packages/b9/74/cb1abc870a418ae99cd5c9547d6bce30701a954e0e721821df483ef7223c/tomli-2.3.0-cp314-cp314-win_amd64.whl", hash = "sha256:b273fcbd7fc64dc3600c098e39136522650c49bca95df2d11cf3b626422392c8", size = 107964, upload-time = "2025-10-08T22:01:36.057Z" }, - { url = "https://files.pythonhosted.org/packages/54/78/5c46fff6432a712af9f792944f4fcd7067d8823157949f4e40c56b8b3c83/tomli-2.3.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:940d56ee0410fa17ee1f12b817b37a4d4e4dc4d27340863cc67236c74f582e77", size = 163065, upload-time = "2025-10-08T22:01:37.27Z" }, - { url = "https://files.pythonhosted.org/packages/39/67/f85d9bd23182f45eca8939cd2bc7050e1f90c41f4a2ecbbd5963a1d1c486/tomli-2.3.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:f85209946d1fe94416debbb88d00eb92ce9cd5266775424ff81bc959e001acaf", size = 159088, upload-time = "2025-10-08T22:01:38.235Z" }, - { url = "https://files.pythonhosted.org/packages/26/5a/4b546a0405b9cc0659b399f12b6adb750757baf04250b148d3c5059fc4eb/tomli-2.3.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a56212bdcce682e56b0aaf79e869ba5d15a6163f88d5451cbde388d48b13f530", size = 268193, upload-time = "2025-10-08T22:01:39.712Z" }, - { url = "https://files.pythonhosted.org/packages/42/4f/2c12a72ae22cf7b59a7fe75b3465b7aba40ea9145d026ba41cb382075b0e/tomli-2.3.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c5f3ffd1e098dfc032d4d3af5c0ac64f6d286d98bc148698356847b80fa4de1b", size = 275488, upload-time = "2025-10-08T22:01:40.773Z" }, - { url = "https://files.pythonhosted.org/packages/92/04/a038d65dbe160c3aa5a624e93ad98111090f6804027d474ba9c37c8ae186/tomli-2.3.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:5e01decd096b1530d97d5d85cb4dff4af2d8347bd35686654a004f8dea20fc67", size = 272669, upload-time = "2025-10-08T22:01:41.824Z" }, - { url = "https://files.pythonhosted.org/packages/be/2f/8b7c60a9d1612a7cbc39ffcca4f21a73bf368a80fc25bccf8253e2563267/tomli-2.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:8a35dd0e643bb2610f156cca8db95d213a90015c11fee76c946aa62b7ae7e02f", size = 279709, upload-time = "2025-10-08T22:01:43.177Z" }, - { url = "https://files.pythonhosted.org/packages/7e/46/cc36c679f09f27ded940281c38607716c86cf8ba4a518d524e349c8b4874/tomli-2.3.0-cp314-cp314t-win32.whl", hash = "sha256:a1f7f282fe248311650081faafa5f4732bdbfef5d45fe3f2e702fbc6f2d496e0", size = 107563, upload-time = "2025-10-08T22:01:44.233Z" }, - { url = "https://files.pythonhosted.org/packages/84/ff/426ca8683cf7b753614480484f6437f568fd2fda2edbdf57a2d3d8b27a0b/tomli-2.3.0-cp314-cp314t-win_amd64.whl", hash = "sha256:70a251f8d4ba2d9ac2542eecf008b3c8a9fc5c3f9f02c56a9d7952612be2fdba", size = 119756, upload-time = "2025-10-08T22:01:45.234Z" }, - { url = "https://files.pythonhosted.org/packages/77/b8/0135fadc89e73be292b473cb820b4f5a08197779206b33191e801feeae40/tomli-2.3.0-py3-none-any.whl", hash = "sha256:e95b1af3c5b07d9e643909b5abbec77cd9f1217e6d0bca72b0234736b9fb1f1b", size = 14408, upload-time = "2025-10-08T22:01:46.04Z" }, -] - [[package]] name = "typing-extensions" version = "4.15.0" @@ -616,20 +337,20 @@ wheels = [ [[package]] name = "tzdata" -version = "2025.2" +version = "2025.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/95/32/1a225d6164441be760d75c2c42e2780dc0873fe382da3e98a2e1e48361e5/tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9", size = 196380, upload-time = "2025-03-23T13:54:43.652Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5e/a7/c202b344c5ca7daf398f3b8a477eeb205cf3b6f32e7ec3a6bac0629ca975/tzdata-2025.3.tar.gz", hash = "sha256:de39c2ca5dc7b0344f2eba86f49d614019d29f060fc4ebc8a417896a620b56a7", size = 196772, upload-time = "2025-12-13T17:45:35.667Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839, upload-time = "2025-03-23T13:54:41.845Z" }, + { url = "https://files.pythonhosted.org/packages/c7/b0/003792df09decd6849a5e39c28b513c06e84436a54440380862b5aeff25d/tzdata-2025.3-py2.py3-none-any.whl", hash = "sha256:06a47e5700f3081aab02b2e513160914ff0694bce9947d6b76ebd6bf57cfc5d1", size = 348521, upload-time = "2025-12-13T17:45:33.889Z" }, ] [[package]] name = "urllib3" -version = "2.5.0" +version = "2.6.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/15/22/9ee70a2574a4f4599c47dd506532914ce044817c7752a79b6a51286319bc/urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760", size = 393185, upload-time = "2025-06-18T14:07:41.644Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c7/24/5f1b3bdffd70275f6661c76461e25f024d5a38a46f04aaca912426a2b1d3/urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed", size = 435556, upload-time = "2026-01-07T16:24:43.925Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc", size = 129795, upload-time = "2025-06-18T14:07:40.39Z" }, + { url = "https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4", size = 131584, upload-time = "2026-01-07T16:24:42.685Z" }, ] [[package]] diff --git a/uv.lock b/uv.lock index 1bea781f0..0ca8733b1 100644 --- a/uv.lock +++ b/uv.lock @@ -1,26 +1,26 @@ version = 1 revision = 3 -requires-python = "==3.10.*" +requires-python = "==3.13.11" [[package]] name = "aiofiles" -version = "0.4.0" +version = "25.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/94/c2/e3cb60c1b7d9478203d4514e2d33ea424ad9bb98e45b21d6225db93f25c9/aiofiles-0.4.0.tar.gz", hash = "sha256:021ea0ba314a86027c166ecc4b4c07f2d40fc0f4b3a950d1868a0f2571c2bbee", size = 9270, upload-time = "2018-08-11T17:24:08.5Z" } +sdist = { url = "https://files.pythonhosted.org/packages/41/c3/534eac40372d8ee36ef40df62ec129bee4fdb5ad9706e58a29be53b2c970/aiofiles-25.1.0.tar.gz", hash = "sha256:a8d728f0a29de45dc521f18f07297428d56992a742f0cd2701ba86e44d23d5b2", size = 46354, upload-time = "2025-10-09T20:51:04.358Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cf/f2/a67a23bc0bb61d88f82aa7fb84a2fb5f278becfbdc038c5cbb36c31feaf1/aiofiles-0.4.0-py3-none-any.whl", hash = "sha256:1e644c2573f953664368de28d2aa4c89dfd64550429d0c27c4680ccd3aa4985d", size = 9191, upload-time = "2018-08-11T17:24:07.206Z" }, + { url = "https://files.pythonhosted.org/packages/bc/8a/340a1555ae33d7354dbca4faa54948d76d89a27ceef032c8c3bc661d003e/aiofiles-25.1.0-py3-none-any.whl", hash = "sha256:abe311e527c862958650f9438e859c1fa7568a141b22abcd015e120e86a85695", size = 14668, upload-time = "2025-10-09T20:51:03.174Z" }, ] [[package]] name = "amqp" -version = "2.6.1" +version = "5.3.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "vine" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/37/9f/d54494a157d0dcd1673fe7a1bcce7ac70d3eb6d5d6149749450c87a2c959/amqp-2.6.1.tar.gz", hash = "sha256:70cdb10628468ff14e57ec2f751c7aa9e48e7e3651cfd62d431213c0c4e58f21", size = 119956, upload-time = "2020-07-31T16:32:31.914Z" } +sdist = { url = "https://files.pythonhosted.org/packages/79/fc/ec94a357dfc6683d8c86f8b4cfa5416a4c36b28052ec8260c77aca96a443/amqp-5.3.1.tar.gz", hash = "sha256:cddc00c725449522023bad949f70fff7b48f0b1ade74d170a6f10ab044739432", size = 129013, upload-time = "2024-11-12T19:55:44.051Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/bc/90/bb5ce93521772f083cb2d7a413bb82eda5afc62b4192adb7ea4c7b4858b9/amqp-2.6.1-py2.py3-none-any.whl", hash = "sha256:aa7f313fb887c91f15474c1229907a04dac0b8135822d6603437803424c0aa59", size = 48006, upload-time = "2020-07-31T16:32:22.693Z" }, + { url = "https://files.pythonhosted.org/packages/26/99/fc813cd978842c26c82534010ea849eee9ab3a13ea2b74e95cb9c99e747b/amqp-5.3.1-py3-none-any.whl", hash = "sha256:43b3319e1b4e7d1251833a93d672b4af1e40f3d632d479b98661a95f117880a2", size = 50944, upload-time = "2024-11-12T19:55:41.782Z" }, ] [[package]] @@ -32,31 +32,19 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/75/f9/f1c10e223c7b56a38109a3f2eb4e7fe9a757ea3ed3a166754fb30f65e466/ansicon-1.89.0-py2.py3-none-any.whl", hash = "sha256:f1def52d17f65c2c9682cf8370c03f541f410c1752d6a14029f97318e4b9dfec", size = 63675, upload-time = "2019-04-29T20:23:53.83Z" }, ] -[[package]] -name = "appnope" -version = "0.1.4" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/35/5d/752690df9ef5b76e169e68d6a129fa6d08a7100ca7f754c89495db3c6019/appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee", size = 4170, upload-time = "2024-02-06T09:43:11.258Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c", size = 4321, upload-time = "2024-02-06T09:43:09.663Z" }, -] - [[package]] name = "argh" -version = "0.26.2" +version = "0.31.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e3/75/1183b5d1663a66aebb2c184e0398724b624cecd4f4b679cb6e25de97ed15/argh-0.26.2.tar.gz", hash = "sha256:e9535b8c84dc9571a48999094fda7f33e63c3f1b74f3e5f3ac0105a58405bb65", size = 32913, upload-time = "2016-05-11T20:55:36.296Z" } +sdist = { url = "https://files.pythonhosted.org/packages/4f/34/bc0b3577a818b4b70c6e318d23fe3c81fc3bb25f978ca8a3965cd8ee3af9/argh-0.31.3.tar.gz", hash = "sha256:f30023d8be14ca5ee6b1b3eeab829151d7bbda464ae07dc4dd5347919c5892f9", size = 57570, upload-time = "2024-07-13T17:54:59.729Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/06/1c/e667a7126f0b84aaa1c56844337bf0ac12445d1beb9c8a6199a7314944bf/argh-0.26.2-py2.py3-none-any.whl", hash = "sha256:a9b3aaa1904eeb78e32394cd46c6f37ac0fb4af6dc488daa58971bdc7d7fcaf3", size = 30872, upload-time = "2016-05-11T20:55:26.893Z" }, + { url = "https://files.pythonhosted.org/packages/d2/52/fcd83710b6f8786df80e5d335882d1b24d1f610f397703e94a6ffb0d6f66/argh-0.31.3-py3-none-any.whl", hash = "sha256:2edac856ff50126f6e47d884751328c9f466bacbbb6cbfdac322053d94705494", size = 44844, upload-time = "2024-07-13T17:54:57.706Z" }, ] [[package]] name = "asgiref" version = "3.11.1" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "typing-extensions" }, -] sdist = { url = "https://files.pythonhosted.org/packages/63/40/f03da1264ae8f7cfdbf9146542e5e7e8100a4c66ab48e791df9a03d3f6c0/asgiref-3.11.1.tar.gz", hash = "sha256:5f184dc43b7e763efe848065441eac62229c9f7b0475f41f80e207a114eda4ce", size = 38550, upload-time = "2026-02-03T13:30:14.33Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/5c/0a/a72d10ed65068e115044937873362e6e32fab1b7dce0046aeb224682c989/asgiref-3.11.1-py3-none-any.whl", hash = "sha256:e8667a091e69529631969fd45dc268fa79b99c92c5fcdda727757e52146ec133", size = 24345, upload-time = "2026-02-03T13:30:13.039Z" }, @@ -71,15 +59,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d2/39/e7eaf1799466a4aef85b6a4fe7bd175ad2b1c6345066aa33f1f58d4b18d0/asttokens-3.0.1-py3-none-any.whl", hash = "sha256:15a3ebc0f43c2d0a50eeafea25e19046c68398e487b9f1f5b517f7c0f40f976a", size = 27047, upload-time = "2025-11-15T16:43:16.109Z" }, ] -[[package]] -name = "async-timeout" -version = "5.0.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a5/ae/136395dfbfe00dfc94da3f3e136d0b13f394cba8f4841120e34226265780/async_timeout-5.0.1.tar.gz", hash = "sha256:d9321a7a3d5a6a5e187e824d2fa0793ce379a202935782d555d6e9d2735677d3", size = 9274, upload-time = "2024-11-06T16:41:39.6Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fe/ba/e2081de779ca30d473f21f5b30e0e737c438205440784c7dfc81efc2b029/async_timeout-5.0.1-py3-none-any.whl", hash = "sha256:39e3809566ff85354557ec2398b55e096c8364bacac9405a7a1fa429e77fe76c", size = 6233, upload-time = "2024-11-06T16:41:37.9Z" }, -] - [[package]] name = "attrs" version = "25.4.0" @@ -109,15 +88,15 @@ wheels = [ [[package]] name = "azure-core" -version = "1.38.0" +version = "1.38.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "requests" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/dc/1b/e503e08e755ea94e7d3419c9242315f888fc664211c90d032e40479022bf/azure_core-1.38.0.tar.gz", hash = "sha256:8194d2682245a3e4e3151a667c686464c3786fed7918b394d035bdcd61bb5993", size = 363033, upload-time = "2026-01-12T17:03:05.535Z" } +sdist = { url = "https://files.pythonhosted.org/packages/00/fe/5c7710bc611a4070d06ba801de9a935cc87c3d4b689c644958047bdf2cba/azure_core-1.38.2.tar.gz", hash = "sha256:67562857cb979217e48dc60980243b61ea115b77326fa93d83b729e7ff0482e7", size = 363734, upload-time = "2026-02-18T19:33:05.6Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fc/d8/b8fcba9464f02b121f39de2db2bf57f0b216fe11d014513d666e8634380d/azure_core-1.38.0-py3-none-any.whl", hash = "sha256:ab0c9b2cd71fecb1842d52c965c95285d3cfb38902f6766e4a471f1cd8905335", size = 217825, upload-time = "2026-01-12T17:03:07.291Z" }, + { url = "https://files.pythonhosted.org/packages/42/23/6371a551800d3812d6019cd813acd985f9fac0fedc1290129211a73da4ae/azure_core-1.38.2-py3-none-any.whl", hash = "sha256:074806c75cf239ea284a33a66827695ef7aeddac0b4e19dda266a93e4665ead9", size = 217957, upload-time = "2026-02-18T19:33:07.696Z" }, ] [[package]] @@ -150,71 +129,26 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/6b/a0/6794b318ce0118d1a4053bdf0149a60807407db9b710354f2b203c2f5975/azure_storage_common-2.1.0-py2.py3-none-any.whl", hash = "sha256:b01a491a18839b9d05a4fe3421458a0ddb5ab9443c14e487f40d16f9a1dc2fbe", size = 47778, upload-time = "2019-08-02T04:24:14.67Z" }, ] -[[package]] -name = "backcall" -version = "0.2.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/40/764a663805d84deee23043e1426a9175567db89c8b3287b5c2ad9f71aa93/backcall-0.2.0.tar.gz", hash = "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e", size = 18041, upload-time = "2020-06-09T15:11:32.931Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/4c/1c/ff6546b6c12603d8dd1070aa3c3d273ad4c07f5771689a7b69a550e8c951/backcall-0.2.0-py2.py3-none-any.whl", hash = "sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255", size = 11157, upload-time = "2020-06-09T15:11:30.87Z" }, -] - [[package]] name = "billiard" -version = "3.6.4.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/92/91/40de1901da8ec9eeb7c6a22143ba5d55d8aaa790761ca31342cedcd5c793/billiard-3.6.4.0.tar.gz", hash = "sha256:299de5a8da28a783d51b197d496bef4f1595dd023a93a4f59dde1886ae905547", size = 155303, upload-time = "2021-04-01T09:23:50.092Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2b/89/0c43de91d4e52eaa7bd748771d417f6ac9e51e66b2f61928c2151bf65878/billiard-3.6.4.0-py3-none-any.whl", hash = "sha256:87103ea78fa6ab4d5c751c4909bcff74617d985de7fa8b672cf8618afd5a875b", size = 89472, upload-time = "2021-04-01T09:23:42.019Z" }, -] - -[[package]] -name = "black" -version = "26.1.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "click" }, - { name = "mypy-extensions" }, - { name = "packaging" }, - { name = "pathspec" }, - { name = "platformdirs" }, - { name = "pytokens" }, - { name = "tomli" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/13/88/560b11e521c522440af991d46848a2bde64b5f7202ec14e1f46f9509d328/black-26.1.0.tar.gz", hash = "sha256:d294ac3340eef9c9eb5d29288e96dc719ff269a88e27b396340459dd85da4c58", size = 658785, upload-time = "2026-01-18T04:50:11.993Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/51/1b/523329e713f965ad0ea2b7a047eeb003007792a0353622ac7a8cb2ee6fef/black-26.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ca699710dece84e3ebf6e92ee15f5b8f72870ef984bf944a57a777a48357c168", size = 1849661, upload-time = "2026-01-18T04:59:12.425Z" }, - { url = "https://files.pythonhosted.org/packages/14/82/94c0640f7285fa71c2f32879f23e609dd2aa39ba2641f395487f24a578e7/black-26.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5e8e75dabb6eb83d064b0db46392b25cabb6e784ea624219736e8985a6b3675d", size = 1689065, upload-time = "2026-01-18T04:59:13.993Z" }, - { url = "https://files.pythonhosted.org/packages/f0/78/474373cbd798f9291ed8f7107056e343fd39fef42de4a51c7fd0d360840c/black-26.1.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:eb07665d9a907a1a645ee41a0df8a25ffac8ad9c26cdb557b7b88eeeeec934e0", size = 1751502, upload-time = "2026-01-18T04:59:15.971Z" }, - { url = "https://files.pythonhosted.org/packages/29/89/59d0e350123f97bc32c27c4d79563432d7f3530dca2bff64d855c178af8b/black-26.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:7ed300200918147c963c87700ccf9966dceaefbbb7277450a8d646fc5646bf24", size = 1400102, upload-time = "2026-01-18T04:59:17.8Z" }, - { url = "https://files.pythonhosted.org/packages/e1/bc/5d866c7ae1c9d67d308f83af5462ca7046760158bbf142502bad8f22b3a1/black-26.1.0-cp310-cp310-win_arm64.whl", hash = "sha256:c5b7713daea9bf943f79f8c3b46f361cc5229e0e604dcef6a8bb6d1c37d9df89", size = 1207038, upload-time = "2026-01-18T04:59:19.543Z" }, - { url = "https://files.pythonhosted.org/packages/e4/3d/51bdb3ecbfadfaf825ec0c75e1de6077422b4afa2091c6c9ba34fbfc0c2d/black-26.1.0-py3-none-any.whl", hash = "sha256:1054e8e47ebd686e078c0bb0eaf31e6ce69c966058d122f2c0c950311f9f3ede", size = 204010, upload-time = "2026-01-18T04:50:09.978Z" }, -] - -[[package]] -name = "bleach" -version = "6.3.0" +version = "4.2.4" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "webencodings" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/07/18/3c8523962314be6bf4c8989c79ad9531c825210dd13a8669f6b84336e8bd/bleach-6.3.0.tar.gz", hash = "sha256:6f3b91b1c0a02bb9a78b5a454c92506aa0fdf197e1d5e114d2e00c6f64306d22", size = 203533, upload-time = "2025-10-27T17:57:39.211Z" } +sdist = { url = "https://files.pythonhosted.org/packages/58/23/b12ac0bcdfb7360d664f40a00b1bda139cbbbced012c34e375506dbd0143/billiard-4.2.4.tar.gz", hash = "sha256:55f542c371209e03cd5862299b74e52e4fbcba8250ba611ad94276b369b6a85f", size = 156537, upload-time = "2025-11-30T13:28:48.52Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cd/3a/577b549de0cc09d95f11087ee63c739bba856cd3952697eec4c4bb91350a/bleach-6.3.0-py3-none-any.whl", hash = "sha256:fe10ec77c93ddf3d13a73b035abaac7a9f5e436513864ccdad516693213c65d6", size = 164437, upload-time = "2025-10-27T17:57:37.538Z" }, + { url = "https://files.pythonhosted.org/packages/cb/87/8bab77b323f16d67be364031220069f79159117dd5e43eeb4be2fef1ac9b/billiard-4.2.4-py3-none-any.whl", hash = "sha256:525b42bdec68d2b983347ac312f892db930858495db601b5836ac24e6477cde5", size = 87070, upload-time = "2025-11-30T13:28:47.016Z" }, ] [[package]] name = "blessed" -version = "1.29.0" +version = "1.33.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jinxed", marker = "sys_platform == 'win32'" }, { name = "wcwidth" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/cb/1f/ed37dbe0fd7f026cfbff0d968b924f1a53411e1c3a4639762467d3b06d24/blessed-1.29.0.tar.gz", hash = "sha256:4938cbfea8280885c853c0700850704aeacb25a97fca56de5e1e30ca63a0f1aa", size = 13950929, upload-time = "2026-02-01T15:26:38.202Z" } +sdist = { url = "https://files.pythonhosted.org/packages/68/5c/92dc10a25a4eafb4b9bef5dad522a0b7d5d5b55d2d76f9a6721b2e49ca2c/blessed-1.33.0.tar.gz", hash = "sha256:c732a1043042d84f411423a1a7b74643e1dd3a2271bd6e5955682dd4a321b0ef", size = 13980368, upload-time = "2026-03-07T00:00:06.288Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ff/47/566dcc08f8037511355a49220a3eecb795f955bb6145f419d5e60dbeaa00/blessed-1.29.0-py3-none-any.whl", hash = "sha256:cd5f339a308ac5e97d814c4bcbf7ce9723c465ca73c42744ea72646a0c653f6e", size = 100645, upload-time = "2026-02-01T15:26:35.632Z" }, + { url = "https://files.pythonhosted.org/packages/22/04/2b4e111e0b902b1ac0b25e5e010af71c79fca093a3399bd7f8b82adcc536/blessed-1.33.0-py3-none-any.whl", hash = "sha256:1bc8ecac6d139286ea51ec1683433528ce75b0c60db77b7d881112bf9fc85b0f", size = 111519, upload-time = "2026-03-07T00:00:00.202Z" }, ] [[package]] @@ -231,35 +165,35 @@ wheels = [ [[package]] name = "boto3" -version = "1.26.76" +version = "1.42.50" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "botocore" }, { name = "jmespath" }, { name = "s3transfer" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/29/a8/3ffdf9744fd5d0330cd0303ff3bd52c1491934e5bd5fba2353d14641685f/boto3-1.26.76.tar.gz", hash = "sha256:30c7d967ed1c6b5a05643e42cae9d4d36c3f1cb6782637ddc7007a104cfd9027", size = 104194, upload-time = "2023-02-21T21:23:47.28Z" } +sdist = { url = "https://files.pythonhosted.org/packages/59/41/7a7280875ec000e280b0392478a5d6247bc88e7ecf2ae6ec8f4ddb35b014/boto3-1.42.50.tar.gz", hash = "sha256:38545d7e6e855fefc8a11e899ccbd6d2c9f64671d6648c2acfb1c78c1057a480", size = 112851, upload-time = "2026-02-16T20:42:09.203Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/95/a43050c34b38d38379a9fea1986492c9d70b7ee4522f80a0f09117443b55/boto3-1.26.76-py3-none-any.whl", hash = "sha256:b4c2969b7677762914394b8273cc1905dfe5b71f250741c1a575487ae357e729", size = 132672, upload-time = "2023-02-21T21:23:43.783Z" }, + { url = "https://files.pythonhosted.org/packages/5e/14/bf4077d843d737bec6f4176e113182a4435a1864e2a819ca07004da8a9ac/boto3-1.42.50-py3-none-any.whl", hash = "sha256:2fdf8f5349b130d62576068a6c47b3eec368a70bc28f16d8cce17c5f7e74fc2e", size = 140604, upload-time = "2026-02-16T20:42:06.652Z" }, ] [[package]] name = "botocore" -version = "1.29.76" +version = "1.42.50" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jmespath" }, { name = "python-dateutil" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fb/4b/87b54878085654cd3a01175b849e273cbf049bc01a141e1b9b512d956a9a/botocore-1.29.76.tar.gz", hash = "sha256:c2f67b6b3f8acf2968eafca06526f07b9fb0d27bac4c68a635d51abb675134a7", size = 10806066, upload-time = "2023-02-21T21:23:31.884Z" } +sdist = { url = "https://files.pythonhosted.org/packages/93/fd/e63789133b2bf044c8550cd6766ec93628b0ac18a03f2aa0b80171f0697a/botocore-1.42.50.tar.gz", hash = "sha256:de1e128e4898f4e66877bfabbbb03c61f99366f27520442539339e8a74afe3a5", size = 14958074, upload-time = "2026-02-16T20:41:58.814Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/87/93/e862d4b2ec9b0c8f7a6ee3141df138c00aa91de42839e55b68e3ebb53bf2/botocore-1.29.76-py3-none-any.whl", hash = "sha256:70735b00cd529f152992231ca6757e458e5ec25db43767b3526e9a35b2f143b7", size = 10419210, upload-time = "2023-02-21T21:23:27.086Z" }, + { url = "https://files.pythonhosted.org/packages/aa/b8/b02ad16c5198e652eafdd8bad76aa62ac094afabbe1241b4be1cd4075666/botocore-1.42.50-py3-none-any.whl", hash = "sha256:3ec7004009d1557a881b1d076d54b5768230849fa9ccdebfd409f0571490e691", size = 14631256, upload-time = "2026-02-16T20:41:55.004Z" }, ] [[package]] name = "bpython" -version = "0.21" +version = "0.26" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "curtsies" }, @@ -269,33 +203,38 @@ dependencies = [ { name = "pyxdg" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/8f/34/7bdeba9999d2dfe5c0682291966bfa7edcedf2859885fa0037b8a38d0878/bpython-0.21.tar.gz", hash = "sha256:88aa9b89974f6a7726499a2608fa7ded216d84c69e78114ab2ef996a45709487", size = 208206, upload-time = "2021-01-25T08:16:36.487Z" } +sdist = { url = "https://files.pythonhosted.org/packages/44/29/cd80e9108a6fc6a925ffb915f8f69198a2bb2388e39167a41d743ac2a8f4/bpython-0.26.tar.gz", hash = "sha256:f79083e1e3723be9b49c9994ad1dd3a19ccb4d0d4f9a6f5b3a73bef8bc327433", size = 207564, upload-time = "2025-10-28T07:19:41.97Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a8/d8/b05ef2d144b9551ba4db2737b73f42692f9ec115aa4fde436794745fca7e/bpython-0.21-py3-none-any.whl", hash = "sha256:64a2032052c629f0fc2d215cdcf3cbdc005d9001a4e8c11b2126e80899be77fb", size = 180463, upload-time = "2021-01-25T08:16:34.114Z" }, + { url = "https://files.pythonhosted.org/packages/ea/92/26d8d98de4c1676305e03ec2be67850afaf883b507bf71b917d852585ec8/bpython-0.26-py3-none-any.whl", hash = "sha256:91bdbbe667078677dc6b236493fc03e47a04cd099630a32ca3f72d6d49b71e20", size = 175988, upload-time = "2025-10-28T07:19:40.114Z" }, ] [[package]] name = "celery" -version = "4.4.7" +version = "5.6.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "billiard" }, + { name = "click" }, + { name = "click-didyoumean" }, + { name = "click-plugins" }, + { name = "click-repl" }, { name = "kombu" }, - { name = "pytz" }, + { name = "python-dateutil" }, + { name = "tzlocal" }, { name = "vine" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fe/58/c7ced9705c2cedf526e183e428d1b145910cb8bc7ea537a2ec9a6552c056/celery-4.4.7.tar.gz", hash = "sha256:d220b13a8ed57c78149acf82c006785356071844afe0b27012a4991d44026f9f", size = 1469812, upload-time = "2020-07-31T17:42:18.792Z" } +sdist = { url = "https://files.pythonhosted.org/packages/8f/9d/3d13596519cfa7207a6f9834f4b082554845eb3cd2684b5f8535d50c7c44/celery-5.6.2.tar.gz", hash = "sha256:4a8921c3fcf2ad76317d3b29020772103581ed2454c4c042cc55dcc43585009b", size = 1718802, upload-time = "2026-01-04T12:35:58.012Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c8/0c/609e3611d20c9f8d883852d1be5516671f630fb08c8c1e56911567dfba7b/celery-4.4.7-py2.py3-none-any.whl", hash = "sha256:a92e1d56e650781fb747032a3997d16236d037c8199eacd5217d1a72893bca45", size = 427577, upload-time = "2020-07-31T17:41:39.793Z" }, + { url = "https://files.pythonhosted.org/packages/dd/bd/9ecd619e456ae4ba73b6583cc313f26152afae13e9a82ac4fe7f8856bfd1/celery-5.6.2-py3-none-any.whl", hash = "sha256:3ffafacbe056951b629c7abcf9064c4a2366de0bdfc9fdba421b97ebb68619a5", size = 445502, upload-time = "2026-01-04T12:35:55.894Z" }, ] [[package]] name = "certifi" -version = "2026.1.4" +version = "2026.2.25" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e0/2d/a891ca51311197f6ad14a7ef42e2399f36cf2f9bd44752b3dc4eab60fdc5/certifi-2026.1.4.tar.gz", hash = "sha256:ac726dd470482006e014ad384921ed6438c457018f4b3d204aea4281258b2120", size = 154268, upload-time = "2026-01-04T02:42:41.825Z" } +sdist = { url = "https://files.pythonhosted.org/packages/af/2d/7bf41579a8986e348fa033a31cdd0e4121114f6bce2457e8876010b092dd/certifi-2026.2.25.tar.gz", hash = "sha256:e887ab5cee78ea814d3472169153c2d12cd43b14bd03329a39a9c6e2e80bfba7", size = 155029, upload-time = "2026-02-25T02:54:17.342Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e6/ad/3cc14f097111b4de0040c83a525973216457bbeeb63739ef1ed275c1c021/certifi-2026.1.4-py3-none-any.whl", hash = "sha256:9943707519e4add1115f44c2bc244f782c0249876bf51b6599fee1ffbedd685c", size = 152900, upload-time = "2026-01-04T02:42:40.15Z" }, + { url = "https://files.pythonhosted.org/packages/9a/3c/c17fb3ca2d9c3acff52e30b309f538586f9f5b9c9cf454f3845fc9af4881/certifi-2026.2.25-py3-none-any.whl", hash = "sha256:027692e4402ad994f1c42e52a4997a9763c646b73e4096e4d5d6db8af1d6f0fa", size = 153684, upload-time = "2026-02-25T02:54:15.766Z" }, ] [[package]] @@ -307,31 +246,31 @@ dependencies = [ ] 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 = [ - { url = "https://files.pythonhosted.org/packages/93/d7/516d984057745a6cd96575eea814fe1edd6646ee6efd552fb7b0921dec83/cffi-2.0.0-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:0cf2d91ecc3fcc0625c2c530fe004f82c110405f101548512cce44322fa8ac44", size = 184283, upload-time = "2025-09-08T23:22:08.01Z" }, - { url = "https://files.pythonhosted.org/packages/9e/84/ad6a0b408daa859246f57c03efd28e5dd1b33c21737c2db84cae8c237aa5/cffi-2.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f73b96c41e3b2adedc34a7356e64c8eb96e03a3782b535e043a986276ce12a49", size = 180504, upload-time = "2025-09-08T23:22:10.637Z" }, - { url = "https://files.pythonhosted.org/packages/50/bd/b1a6362b80628111e6653c961f987faa55262b4002fcec42308cad1db680/cffi-2.0.0-cp310-cp310-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:53f77cbe57044e88bbd5ed26ac1d0514d2acf0591dd6bb02a3ae37f76811b80c", size = 208811, upload-time = "2025-09-08T23:22:12.267Z" }, - { url = "https://files.pythonhosted.org/packages/4f/27/6933a8b2562d7bd1fb595074cf99cc81fc3789f6a6c05cdabb46284a3188/cffi-2.0.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3e837e369566884707ddaf85fc1744b47575005c0a229de3327f8f9a20f4efeb", size = 216402, upload-time = "2025-09-08T23:22:13.455Z" }, - { url = "https://files.pythonhosted.org/packages/05/eb/b86f2a2645b62adcfff53b0dd97e8dfafb5c8aa864bd0d9a2c2049a0d551/cffi-2.0.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:5eda85d6d1879e692d546a078b44251cdd08dd1cfb98dfb77b670c97cee49ea0", size = 203217, upload-time = "2025-09-08T23:22:14.596Z" }, - { url = "https://files.pythonhosted.org/packages/9f/e0/6cbe77a53acf5acc7c08cc186c9928864bd7c005f9efd0d126884858a5fe/cffi-2.0.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:9332088d75dc3241c702d852d4671613136d90fa6881da7d770a483fd05248b4", size = 203079, upload-time = "2025-09-08T23:22:15.769Z" }, - { url = "https://files.pythonhosted.org/packages/98/29/9b366e70e243eb3d14a5cb488dfd3a0b6b2f1fb001a203f653b93ccfac88/cffi-2.0.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fc7de24befaeae77ba923797c7c87834c73648a05a4bde34b3b7e5588973a453", size = 216475, upload-time = "2025-09-08T23:22:17.427Z" }, - { url = "https://files.pythonhosted.org/packages/21/7a/13b24e70d2f90a322f2900c5d8e1f14fa7e2a6b3332b7309ba7b2ba51a5a/cffi-2.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cf364028c016c03078a23b503f02058f1814320a56ad535686f90565636a9495", size = 218829, upload-time = "2025-09-08T23:22:19.069Z" }, - { url = "https://files.pythonhosted.org/packages/60/99/c9dc110974c59cc981b1f5b66e1d8af8af764e00f0293266824d9c4254bc/cffi-2.0.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e11e82b744887154b182fd3e7e8512418446501191994dbf9c9fc1f32cc8efd5", size = 211211, upload-time = "2025-09-08T23:22:20.588Z" }, - { url = "https://files.pythonhosted.org/packages/49/72/ff2d12dbf21aca1b32a40ed792ee6b40f6dc3a9cf1644bd7ef6e95e0ac5e/cffi-2.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8ea985900c5c95ce9db1745f7933eeef5d314f0565b27625d9a10ec9881e1bfb", size = 218036, upload-time = "2025-09-08T23:22:22.143Z" }, - { url = "https://files.pythonhosted.org/packages/e2/cc/027d7fb82e58c48ea717149b03bcadcbdc293553edb283af792bd4bcbb3f/cffi-2.0.0-cp310-cp310-win32.whl", hash = "sha256:1f72fb8906754ac8a2cc3f9f5aaa298070652a0ffae577e0ea9bd480dc3c931a", size = 172184, upload-time = "2025-09-08T23:22:23.328Z" }, - { url = "https://files.pythonhosted.org/packages/33/fa/072dd15ae27fbb4e06b437eb6e944e75b068deb09e2a2826039e49ee2045/cffi-2.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:b18a3ed7d5b3bd8d9ef7a8cb226502c6bf8308df1525e1cc676c3680e7176739", size = 182790, upload-time = "2025-09-08T23:22:24.752Z" }, + { url = "https://files.pythonhosted.org/packages/4b/8d/a0a47a0c9e413a658623d014e91e74a50cdd2c423f7ccfd44086ef767f90/cffi-2.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb", size = 185230, upload-time = "2025-09-08T23:23:00.879Z" }, + { url = "https://files.pythonhosted.org/packages/4a/d2/a6c0296814556c68ee32009d9c2ad4f85f2707cdecfd7727951ec228005d/cffi-2.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca", size = 181043, upload-time = "2025-09-08T23:23:02.231Z" }, + { url = "https://files.pythonhosted.org/packages/b0/1e/d22cc63332bd59b06481ceaac49d6c507598642e2230f201649058a7e704/cffi-2.0.0-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b", size = 212446, upload-time = "2025-09-08T23:23:03.472Z" }, + { url = "https://files.pythonhosted.org/packages/a9/f5/a2c23eb03b61a0b8747f211eb716446c826ad66818ddc7810cc2cc19b3f2/cffi-2.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b", size = 220101, upload-time = "2025-09-08T23:23:04.792Z" }, + { url = "https://files.pythonhosted.org/packages/f2/7f/e6647792fc5850d634695bc0e6ab4111ae88e89981d35ac269956605feba/cffi-2.0.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2", size = 207948, upload-time = "2025-09-08T23:23:06.127Z" }, + { url = "https://files.pythonhosted.org/packages/cb/1e/a5a1bd6f1fb30f22573f76533de12a00bf274abcdc55c8edab639078abb6/cffi-2.0.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3", size = 206422, upload-time = "2025-09-08T23:23:07.753Z" }, + { url = "https://files.pythonhosted.org/packages/98/df/0a1755e750013a2081e863e7cd37e0cdd02664372c754e5560099eb7aa44/cffi-2.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26", size = 219499, upload-time = "2025-09-08T23:23:09.648Z" }, + { url = "https://files.pythonhosted.org/packages/50/e1/a969e687fcf9ea58e6e2a928ad5e2dd88cc12f6f0ab477e9971f2309b57c/cffi-2.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c", size = 222928, upload-time = "2025-09-08T23:23:10.928Z" }, + { url = "https://files.pythonhosted.org/packages/36/54/0362578dd2c9e557a28ac77698ed67323ed5b9775ca9d3fe73fe191bb5d8/cffi-2.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b", size = 221302, upload-time = "2025-09-08T23:23:12.42Z" }, + { url = "https://files.pythonhosted.org/packages/eb/6d/bf9bda840d5f1dfdbf0feca87fbdb64a918a69bca42cfa0ba7b137c48cb8/cffi-2.0.0-cp313-cp313-win32.whl", hash = "sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27", size = 172909, upload-time = "2025-09-08T23:23:14.32Z" }, + { url = "https://files.pythonhosted.org/packages/37/18/6519e1ee6f5a1e579e04b9ddb6f1676c17368a7aba48299c3759bbc3c8b3/cffi-2.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75", size = 183402, upload-time = "2025-09-08T23:23:15.535Z" }, + { url = "https://files.pythonhosted.org/packages/cb/0e/02ceeec9a7d6ee63bb596121c2c8e9b3a9e150936f4fbef6ca1943e6137c/cffi-2.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91", size = 177780, upload-time = "2025-09-08T23:23:16.761Z" }, ] [[package]] name = "channels" -version = "4.2.0" +version = "4.3.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "asgiref" }, { name = "django" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/96/e2/10d949dca9eb8a85c5735efefe3309033419e7d4f4193a70f6ede58b2951/channels-4.2.0.tar.gz", hash = "sha256:d9e707487431ba5dbce9af982970dab3b0efd786580fadb99e45dca5e39fdd59", size = 26554, upload-time = "2024-11-15T15:46:19.324Z" } +sdist = { url = "https://files.pythonhosted.org/packages/74/92/b18d4bb54d14986a8b35215a1c9e6a7f9f4d57ca63ac9aee8290ebb4957d/channels-4.3.2.tar.gz", hash = "sha256:f2bb6bfb73ad7fb4705041d07613c7b4e69528f01ef8cb9fb6c21d9295f15667", size = 27023, upload-time = "2025-11-20T15:13:05.102Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/4e/f36a0e2c04504014385cbc13119a15b8a716e524e8e5ed9480581397691a/channels-4.2.0-py3-none-any.whl", hash = "sha256:6b75bc8d6888fb7236e7e7bf1948520b72d296ad08216a242fc56b1db0ffde1a", size = 30935, upload-time = "2024-11-15T15:46:17.361Z" }, + { url = "https://files.pythonhosted.org/packages/16/34/c32915288b7ef482377b6adc401192f98c6a99b3a145423d3b8aed807898/channels-4.3.2-py3-none-any.whl", hash = "sha256:fef47e9055a603900cf16cef85f050d522d9ac4b3daccf24835bd9580705c176", size = 31313, upload-time = "2025-11-20T15:13:02.357Z" }, ] [[package]] @@ -351,27 +290,27 @@ wheels = [ [[package]] name = "charset-normalizer" -version = "3.4.4" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/13/69/33ddede1939fdd074bce5434295f38fae7136463422fe4fd3e0e89b98062/charset_normalizer-3.4.4.tar.gz", hash = "sha256:94537985111c35f28720e43603b8e7b43a6ecfb2ce1d3058bbe955b73404e21a", size = 129418, upload-time = "2025-10-14T04:42:32.879Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/1f/b8/6d51fc1d52cbd52cd4ccedd5b5b2f0f6a11bbf6765c782298b0f3e808541/charset_normalizer-3.4.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e824f1492727fa856dd6eda4f7cee25f8518a12f3c4a56a74e8095695089cf6d", size = 209709, upload-time = "2025-10-14T04:40:11.385Z" }, - { url = "https://files.pythonhosted.org/packages/5c/af/1f9d7f7faafe2ddfb6f72a2e07a548a629c61ad510fe60f9630309908fef/charset_normalizer-3.4.4-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4bd5d4137d500351a30687c2d3971758aac9a19208fc110ccb9d7188fbe709e8", size = 148814, upload-time = "2025-10-14T04:40:13.135Z" }, - { url = "https://files.pythonhosted.org/packages/79/3d/f2e3ac2bbc056ca0c204298ea4e3d9db9b4afe437812638759db2c976b5f/charset_normalizer-3.4.4-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:027f6de494925c0ab2a55eab46ae5129951638a49a34d87f4c3eda90f696b4ad", size = 144467, upload-time = "2025-10-14T04:40:14.728Z" }, - { url = "https://files.pythonhosted.org/packages/ec/85/1bf997003815e60d57de7bd972c57dc6950446a3e4ccac43bc3070721856/charset_normalizer-3.4.4-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f820802628d2694cb7e56db99213f930856014862f3fd943d290ea8438d07ca8", size = 162280, upload-time = "2025-10-14T04:40:16.14Z" }, - { url = "https://files.pythonhosted.org/packages/3e/8e/6aa1952f56b192f54921c436b87f2aaf7c7a7c3d0d1a765547d64fd83c13/charset_normalizer-3.4.4-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:798d75d81754988d2565bff1b97ba5a44411867c0cf32b77a7e8f8d84796b10d", size = 159454, upload-time = "2025-10-14T04:40:17.567Z" }, - { url = "https://files.pythonhosted.org/packages/36/3b/60cbd1f8e93aa25d1c669c649b7a655b0b5fb4c571858910ea9332678558/charset_normalizer-3.4.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9d1bb833febdff5c8927f922386db610b49db6e0d4f4ee29601d71e7c2694313", size = 153609, upload-time = "2025-10-14T04:40:19.08Z" }, - { url = "https://files.pythonhosted.org/packages/64/91/6a13396948b8fd3c4b4fd5bc74d045f5637d78c9675585e8e9fbe5636554/charset_normalizer-3.4.4-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:9cd98cdc06614a2f768d2b7286d66805f94c48cde050acdbbb7db2600ab3197e", size = 151849, upload-time = "2025-10-14T04:40:20.607Z" }, - { url = "https://files.pythonhosted.org/packages/b7/7a/59482e28b9981d105691e968c544cc0df3b7d6133152fb3dcdc8f135da7a/charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:077fbb858e903c73f6c9db43374fd213b0b6a778106bc7032446a8e8b5b38b93", size = 151586, upload-time = "2025-10-14T04:40:21.719Z" }, - { url = "https://files.pythonhosted.org/packages/92/59/f64ef6a1c4bdd2baf892b04cd78792ed8684fbc48d4c2afe467d96b4df57/charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:244bfb999c71b35de57821b8ea746b24e863398194a4014e4c76adc2bbdfeff0", size = 145290, upload-time = "2025-10-14T04:40:23.069Z" }, - { url = "https://files.pythonhosted.org/packages/6b/63/3bf9f279ddfa641ffa1962b0db6a57a9c294361cc2f5fcac997049a00e9c/charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:64b55f9dce520635f018f907ff1b0df1fdc31f2795a922fb49dd14fbcdf48c84", size = 163663, upload-time = "2025-10-14T04:40:24.17Z" }, - { url = "https://files.pythonhosted.org/packages/ed/09/c9e38fc8fa9e0849b172b581fd9803bdf6e694041127933934184e19f8c3/charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:faa3a41b2b66b6e50f84ae4a68c64fcd0c44355741c6374813a800cd6695db9e", size = 151964, upload-time = "2025-10-14T04:40:25.368Z" }, - { url = "https://files.pythonhosted.org/packages/d2/d1/d28b747e512d0da79d8b6a1ac18b7ab2ecfd81b2944c4c710e166d8dd09c/charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:6515f3182dbe4ea06ced2d9e8666d97b46ef4c75e326b79bb624110f122551db", size = 161064, upload-time = "2025-10-14T04:40:26.806Z" }, - { url = "https://files.pythonhosted.org/packages/bb/9a/31d62b611d901c3b9e5500c36aab0ff5eb442043fb3a1c254200d3d397d9/charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cc00f04ed596e9dc0da42ed17ac5e596c6ccba999ba6bd92b0e0aef2f170f2d6", size = 155015, upload-time = "2025-10-14T04:40:28.284Z" }, - { url = "https://files.pythonhosted.org/packages/1f/f3/107e008fa2bff0c8b9319584174418e5e5285fef32f79d8ee6a430d0039c/charset_normalizer-3.4.4-cp310-cp310-win32.whl", hash = "sha256:f34be2938726fc13801220747472850852fe6b1ea75869a048d6f896838c896f", size = 99792, upload-time = "2025-10-14T04:40:29.613Z" }, - { url = "https://files.pythonhosted.org/packages/eb/66/e396e8a408843337d7315bab30dbf106c38966f1819f123257f5520f8a96/charset_normalizer-3.4.4-cp310-cp310-win_amd64.whl", hash = "sha256:a61900df84c667873b292c3de315a786dd8dac506704dea57bc957bd31e22c7d", size = 107198, upload-time = "2025-10-14T04:40:30.644Z" }, - { url = "https://files.pythonhosted.org/packages/b5/58/01b4f815bf0312704c267f2ccb6e5d42bcc7752340cd487bc9f8c3710597/charset_normalizer-3.4.4-cp310-cp310-win_arm64.whl", hash = "sha256:cead0978fc57397645f12578bfd2d5ea9138ea0fac82b2f63f7f7c6877986a69", size = 100262, upload-time = "2025-10-14T04:40:32.108Z" }, - { url = "https://files.pythonhosted.org/packages/0a/4c/925909008ed5a988ccbb72dcc897407e5d6d3bd72410d69e051fc0c14647/charset_normalizer-3.4.4-py3-none-any.whl", hash = "sha256:7a32c560861a02ff789ad905a2fe94e3f840803362c84fecf1851cb4cf3dc37f", size = 53402, upload-time = "2025-10-14T04:42:31.76Z" }, +version = "3.4.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1d/35/02daf95b9cd686320bb622eb148792655c9412dbb9b67abb5694e5910a24/charset_normalizer-3.4.5.tar.gz", hash = "sha256:95adae7b6c42a6c5b5b559b1a99149f090a57128155daeea91732c8d970d8644", size = 134804, upload-time = "2026-03-06T06:03:19.46Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f5/48/9f34ec4bb24aa3fdba1890c1bddb97c8a4be1bd84ef5c42ac2352563ad05/charset_normalizer-3.4.5-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ac59c15e3f1465f722607800c68713f9fbc2f672b9eb649fe831da4019ae9b23", size = 280788, upload-time = "2026-03-06T06:01:37.126Z" }, + { url = "https://files.pythonhosted.org/packages/0e/09/6003e7ffeb90cc0560da893e3208396a44c210c5ee42efff539639def59b/charset_normalizer-3.4.5-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:165c7b21d19365464e8f70e5ce5e12524c58b48c78c1f5a57524603c1ab003f8", size = 188890, upload-time = "2026-03-06T06:01:38.73Z" }, + { url = "https://files.pythonhosted.org/packages/42/1e/02706edf19e390680daa694d17e2b8eab4b5f7ac285e2a51168b4b22ee6b/charset_normalizer-3.4.5-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:28269983f25a4da0425743d0d257a2d6921ea7d9b83599d4039486ec5b9f911d", size = 206136, upload-time = "2026-03-06T06:01:40.016Z" }, + { url = "https://files.pythonhosted.org/packages/c7/87/942c3def1b37baf3cf786bad01249190f3ca3d5e63a84f831e704977de1f/charset_normalizer-3.4.5-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d27ce22ec453564770d29d03a9506d449efbb9fa13c00842262b2f6801c48cce", size = 202551, upload-time = "2026-03-06T06:01:41.522Z" }, + { url = "https://files.pythonhosted.org/packages/94/0a/af49691938dfe175d71b8a929bd7e4ace2809c0c5134e28bc535660d5262/charset_normalizer-3.4.5-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0625665e4ebdddb553ab185de5db7054393af8879fb0c87bd5690d14379d6819", size = 195572, upload-time = "2026-03-06T06:01:43.208Z" }, + { url = "https://files.pythonhosted.org/packages/20/ea/dfb1792a8050a8e694cfbde1570ff97ff74e48afd874152d38163d1df9ae/charset_normalizer-3.4.5-cp313-cp313-manylinux_2_31_armv7l.whl", hash = "sha256:c23eb3263356d94858655b3e63f85ac5d50970c6e8febcdde7830209139cc37d", size = 184438, upload-time = "2026-03-06T06:01:44.755Z" }, + { url = "https://files.pythonhosted.org/packages/72/12/c281e2067466e3ddd0595bfaea58a6946765ace5c72dfa3edc2f5f118026/charset_normalizer-3.4.5-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e6302ca4ae283deb0af68d2fbf467474b8b6aedcd3dab4db187e07f94c109763", size = 193035, upload-time = "2026-03-06T06:01:46.051Z" }, + { url = "https://files.pythonhosted.org/packages/ba/4f/3792c056e7708e10464bad0438a44708886fb8f92e3c3d29ec5e2d964d42/charset_normalizer-3.4.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e51ae7d81c825761d941962450f50d041db028b7278e7b08930b4541b3e45cb9", size = 191340, upload-time = "2026-03-06T06:01:47.547Z" }, + { url = "https://files.pythonhosted.org/packages/e7/86/80ddba897127b5c7a9bccc481b0cd36c8fefa485d113262f0fe4332f0bf4/charset_normalizer-3.4.5-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:597d10dec876923e5c59e48dbd366e852eacb2b806029491d307daea6b917d7c", size = 185464, upload-time = "2026-03-06T06:01:48.764Z" }, + { url = "https://files.pythonhosted.org/packages/4d/00/b5eff85ba198faacab83e0e4b6f0648155f072278e3b392a82478f8b988b/charset_normalizer-3.4.5-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:5cffde4032a197bd3b42fd0b9509ec60fb70918d6970e4cc773f20fc9180ca67", size = 208014, upload-time = "2026-03-06T06:01:50.371Z" }, + { url = "https://files.pythonhosted.org/packages/c8/11/d36f70be01597fd30850dde8a1269ebc8efadd23ba5785808454f2389bde/charset_normalizer-3.4.5-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:2da4eedcb6338e2321e831a0165759c0c620e37f8cd044a263ff67493be8ffb3", size = 193297, upload-time = "2026-03-06T06:01:51.933Z" }, + { url = "https://files.pythonhosted.org/packages/1a/1d/259eb0a53d4910536c7c2abb9cb25f4153548efb42800c6a9456764649c0/charset_normalizer-3.4.5-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:65a126fb4b070d05340a84fc709dd9e7c75d9b063b610ece8a60197a291d0adf", size = 204321, upload-time = "2026-03-06T06:01:53.887Z" }, + { url = "https://files.pythonhosted.org/packages/84/31/faa6c5b9d3688715e1ed1bb9d124c384fe2fc1633a409e503ffe1c6398c1/charset_normalizer-3.4.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c7a80a9242963416bd81f99349d5f3fce1843c303bd404f204918b6d75a75fd6", size = 197509, upload-time = "2026-03-06T06:01:56.439Z" }, + { url = "https://files.pythonhosted.org/packages/fd/a5/c7d9dd1503ffc08950b3260f5d39ec2366dd08254f0900ecbcf3a6197c7c/charset_normalizer-3.4.5-cp313-cp313-win32.whl", hash = "sha256:f1d725b754e967e648046f00c4facc42d414840f5ccc670c5670f59f83693e4f", size = 132284, upload-time = "2026-03-06T06:01:57.812Z" }, + { url = "https://files.pythonhosted.org/packages/b9/0f/57072b253af40c8aa6636e6de7d75985624c1eb392815b2f934199340a89/charset_normalizer-3.4.5-cp313-cp313-win_amd64.whl", hash = "sha256:e37bd100d2c5d3ba35db9c7c5ba5a9228cbcffe5c4778dc824b164e5257813d7", size = 142630, upload-time = "2026-03-06T06:01:59.062Z" }, + { url = "https://files.pythonhosted.org/packages/31/41/1c4b7cc9f13bd9d369ce3bc993e13d374ce25fa38a2663644283ecf422c1/charset_normalizer-3.4.5-cp313-cp313-win_arm64.whl", hash = "sha256:93b3b2cc5cf1b8743660ce77a4f45f3f6d1172068207c1defc779a36eea6bb36", size = 133254, upload-time = "2026-03-06T06:02:00.281Z" }, + { url = "https://files.pythonhosted.org/packages/c5/60/3a621758945513adfd4db86827a5bafcc615f913dbd0b4c2ed64a65731be/charset_normalizer-3.4.5-py3-none-any.whl", hash = "sha256:9db5e3fcdcee89a78c04dffb3fe33c79f77bd741a624946db2591c81b2fc85b0", size = 55455, upload-time = "2026-03-06T06:03:17.827Z" }, ] [[package]] @@ -386,6 +325,43 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/98/78/01c019cdb5d6498122777c1a43056ebb3ebfeef2076d9d026bfe15583b2b/click-8.3.1-py3-none-any.whl", hash = "sha256:981153a64e25f12d547d3426c367a4857371575ee7ad18df2a6183ab0545b2a6", size = 108274, upload-time = "2025-11-15T20:45:41.139Z" }, ] +[[package]] +name = "click-didyoumean" +version = "0.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/30/ce/217289b77c590ea1e7c24242d9ddd6e249e52c795ff10fac2c50062c48cb/click_didyoumean-0.3.1.tar.gz", hash = "sha256:4f82fdff0dbe64ef8ab2279bd6aa3f6a99c3b28c05aa09cbfc07c9d7fbb5a463", size = 3089, upload-time = "2024-03-24T08:22:07.499Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1b/5b/974430b5ffdb7a4f1941d13d83c64a0395114503cc357c6b9ae4ce5047ed/click_didyoumean-0.3.1-py3-none-any.whl", hash = "sha256:5c4bb6007cfea5f2fd6583a2fb6701a22a41eb98957e63d0fac41c10e7c3117c", size = 3631, upload-time = "2024-03-24T08:22:06.356Z" }, +] + +[[package]] +name = "click-plugins" +version = "1.1.1.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c3/a4/34847b59150da33690a36da3681d6bbc2ec14ee9a846bc30a6746e5984e4/click_plugins-1.1.1.2.tar.gz", hash = "sha256:d7af3984a99d243c131aa1a828331e7630f4a88a9741fd05c927b204bcf92261", size = 8343, upload-time = "2025-06-25T00:47:37.555Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3d/9a/2abecb28ae875e39c8cad711eb1186d8d14eab564705325e77e4e6ab9ae5/click_plugins-1.1.1.2-py2.py3-none-any.whl", hash = "sha256:008d65743833ffc1f5417bf0e78e8d2c23aab04d9745ba817bd3e71b0feb6aa6", size = 11051, upload-time = "2025-06-25T00:47:36.731Z" }, +] + +[[package]] +name = "click-repl" +version = "0.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "prompt-toolkit" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cb/a2/57f4ac79838cfae6912f997b4d1a64a858fb0c86d7fcaae6f7b58d267fca/click-repl-0.3.0.tar.gz", hash = "sha256:17849c23dba3d667247dc4defe1757fff98694e90fe37474f3feebb69ced26a9", size = 10449, upload-time = "2023-06-15T12:43:51.141Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/52/40/9d857001228658f0d59e97ebd4c346fe73e138c6de1bce61dc568a57c7f8/click_repl-0.3.0-py3-none-any.whl", hash = "sha256:fb7e06deb8da8de86180a33a9da97ac316751c094c6899382da7feeeeb51b812", size = 10289, upload-time = "2023-06-15T12:43:48.626Z" }, +] + [[package]] name = "codabench" version = "0.1.0" @@ -395,7 +371,6 @@ dependencies = [ { name = "argh" }, { name = "azure-storage-blob" }, { name = "azure-storage-common" }, - { name = "bleach" }, { name = "blessings" }, { name = "boto3" }, { name = "botocore" }, @@ -403,17 +378,14 @@ dependencies = [ { name = "celery" }, { name = "channels" }, { name = "channels-redis" }, - { name = "coreapi" }, { name = "dj-database-url" }, { name = "django" }, { name = "django-ajax-selects" }, - { name = "django-cors-middleware" }, - { name = "django-debug-toolbar" }, + { name = "django-cors-headers" }, { name = "django-enforce-host" }, { name = "django-extensions" }, { name = "django-filter" }, { name = "django-oauth-toolkit" }, - { name = "django-querycount" }, { name = "django-redis" }, { name = "django-storages", extra = ["azure"] }, { name = "django-su" }, @@ -430,16 +402,18 @@ dependencies = [ { name = "jinja2" }, { name = "loguru" }, { name = "markdown" }, + { name = "nh3" }, { name = "oyaml" }, { name = "pillow" }, { name = "psycopg2-binary" }, { name = "pygments" }, { name = "pyrabbit2" }, { name = "python-dateutil" }, + { name = "pytz" }, { name = "pyyaml" }, { name = "requests" }, { name = "s3transfer" }, - { name = "six" }, + { name = "setuptools" }, { name = "social-auth-app-django" }, { name = "social-auth-core" }, { name = "twisted" }, @@ -453,6 +427,8 @@ dependencies = [ [package.dev-dependencies] dev = [ + { name = "django-debug-toolbar" }, + { name = "django-querycount" }, { name = "flake8" }, { name = "pytest" }, { name = "pytest-django" }, @@ -460,71 +436,71 @@ dev = [ [package.metadata] requires-dist = [ - { name = "aiofiles", specifier = "==0.4.0" }, - { name = "argh", specifier = "==0.26.2" }, + { name = "aiofiles", specifier = "==25.1.0" }, + { name = "argh", specifier = "==0.31.3" }, { name = "azure-storage-blob", specifier = ">=12,<13" }, { name = "azure-storage-common", specifier = "==2.1.0" }, - { name = "bleach", specifier = ">=5.0.0" }, { name = "blessings", specifier = "==1.7" }, - { name = "boto3", specifier = "==1.26.76" }, - { name = "botocore", specifier = "==1.29.76" }, - { name = "bpython", specifier = ">=0.21.0,<0.22" }, - { name = "celery", specifier = "==4.4.7" }, - { name = "channels", specifier = "==4.2.0" }, + { name = "boto3", specifier = "==1.42.50" }, + { name = "botocore", specifier = "==1.42.50" }, + { name = "bpython", specifier = "==0.26" }, + { name = "celery", specifier = "==5.6.2" }, + { name = "channels", specifier = "==4.3.2" }, { name = "channels-redis", specifier = "==4.0.0" }, - { name = "coreapi", specifier = ">=2.3.3,<3" }, { name = "dj-database-url", specifier = "==0.4.2" }, - { name = "django", specifier = ">=4.2.0,<5" }, - { name = "django-ajax-selects", specifier = "==2.0.0" }, - { name = "django-cors-middleware", specifier = "==1.5.0" }, - { name = "django-debug-toolbar", specifier = "==3.2" }, - { name = "django-enforce-host", specifier = "==1.0.1" }, - { name = "django-extensions", specifier = ">=3.2,<4" }, - { name = "django-filter", specifier = "==2.4.0" }, + { name = "django", specifier = "==5.2.12" }, + { name = "django-ajax-selects", specifier = "==3.0.3" }, + { name = "django-cors-headers", specifier = "==4.9.0" }, + { name = "django-enforce-host", specifier = "==1.1.0" }, + { name = "django-extensions", specifier = "==4.1.0" }, + { name = "django-filter", specifier = "==25.1" }, { name = "django-oauth-toolkit", specifier = "==1.6.3" }, - { name = "django-querycount", specifier = "==0.7.0" }, - { name = "django-redis", specifier = "==4.12.1" }, + { name = "django-redis", specifier = "==6.0.0" }, { name = "django-storages", extras = ["azure"], specifier = ">=1.14.6,<2" }, { name = "django-su", specifier = ">=1.0.0,<2" }, - { name = "djangorestframework", specifier = ">=3.13.0" }, + { name = "djangorestframework", specifier = "==3.16.1" }, { name = "djangorestframework-csv", specifier = "==3.0.1" }, - { name = "drf-extensions", specifier = "==0.4.0" }, - { name = "drf-extra-fields", specifier = ">=3.5.0" }, + { name = "drf-extensions", specifier = "==0.8.0" }, + { name = "drf-extra-fields", specifier = "==3.7.0" }, { name = "drf-spectacular", specifier = ">=0.28.0,<0.29" }, - { name = "drf-writable-nested", specifier = "==0.6.2" }, - { name = "factory-boy", specifier = "==2.11.1" }, - { name = "flex", specifier = "==6.12.0" }, - { name = "gunicorn", specifier = "==22.0.0" }, - { name = "ipdb", specifier = "==0.13" }, - { name = "jinja2", specifier = "==3.1.4" }, + { name = "drf-writable-nested", specifier = "==0.7.2" }, + { name = "factory-boy", specifier = "==3.3.3" }, + { name = "flex", specifier = "==6.14.1" }, + { name = "gunicorn", specifier = "==23.0" }, + { name = "ipdb", specifier = "==0.13.13" }, + { name = "jinja2", specifier = "==3.1.6" }, { name = "loguru", specifier = ">=0.7.3,<0.8" }, - { name = "markdown", specifier = "==2.6.11" }, - { name = "oyaml", specifier = "==0.7" }, - { name = "pillow", specifier = "==10.3.0" }, + { name = "markdown", specifier = "==3.10.2" }, + { name = "nh3", specifier = "==0.3.3" }, + { name = "oyaml", specifier = "==1.0" }, + { name = "pillow", specifier = "==12.1.1" }, { name = "psycopg2-binary", specifier = ">=2.9.9,<3" }, - { name = "pygments", specifier = "==2.2.0" }, + { name = "pygments", specifier = "==2.19.2" }, { name = "pyrabbit2", specifier = "==1.0.7" }, - { name = "python-dateutil", specifier = "==2.7.3" }, - { name = "pyyaml", specifier = "==5.3.1" }, - { name = "requests", specifier = "==2.32.2" }, - { name = "s3transfer", specifier = "==0.6.0" }, - { name = "six", specifier = "==1.16.0" }, - { name = "social-auth-app-django", specifier = ">=5.0.0,<6" }, - { name = "social-auth-core", specifier = ">=4.1.0,<5" }, - { name = "twisted", specifier = "==24.7.0" }, + { name = "python-dateutil", specifier = "==2.9.0" }, + { name = "pytz", specifier = ">=2025.2" }, + { name = "pyyaml", specifier = "==6.0.3" }, + { name = "requests", specifier = "==2.32.5" }, + { name = "s3transfer", specifier = "==0.16.0" }, + { name = "setuptools", specifier = "==82.0.0" }, + { name = "social-auth-app-django", specifier = "==5.4.3" }, + { name = "social-auth-core", specifier = "==4.8.5" }, + { name = "twisted", specifier = "==25.5.0" }, { name = "tzdata", specifier = ">=2025.3" }, - { name = "urllib3", specifier = ">=1.25.4,<1.27" }, - { name = "uvicorn", specifier = ">=0.22.0,<0.23" }, - { name = "watchdog", specifier = "==2.1.1" }, - { name = "websockets", specifier = ">=10.4.0,<11" }, - { name = "whitenoise", specifier = "==5.2.0" }, + { name = "urllib3", specifier = "==2.6.3" }, + { name = "uvicorn", specifier = "==0.38" }, + { name = "watchdog", specifier = "==6.0.0" }, + { name = "websockets", specifier = "==16.0.0" }, + { name = "whitenoise", specifier = "==6.11.0" }, ] [package.metadata.requires-dev] dev = [ - { name = "flake8", specifier = ">=3.8.4" }, - { name = "pytest", specifier = "==7.4.4" }, - { name = "pytest-django", specifier = "==4.11.1" }, + { name = "django-debug-toolbar", specifier = "==6.2.0" }, + { name = "django-querycount", specifier = "==0.7.0" }, + { name = "flake8", specifier = "==7.3.0" }, + { name = "pytest", specifier = "==9.0.2" }, + { name = "pytest-django", specifier = "==4.12.0" }, ] [[package]] @@ -545,68 +521,43 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b8/40/c199d095151addf69efdb4b9ca3a4f20f70e20508d6222bffb9b76f58573/constantly-23.10.4-py3-none-any.whl", hash = "sha256:3fd9b4d1c3dc1ec9757f3c52aef7e53ad9323dbe39f51dfd4c43853b68dfa3f9", size = 13547, upload-time = "2023-10-28T23:18:23.038Z" }, ] -[[package]] -name = "coreapi" -version = "2.3.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "coreschema" }, - { name = "itypes" }, - { name = "requests" }, - { name = "uritemplate" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ca/f2/5fc0d91a0c40b477b016c0f77d9d419ba25fc47cc11a96c825875ddce5a6/coreapi-2.3.3.tar.gz", hash = "sha256:46145fcc1f7017c076a2ef684969b641d18a2991051fddec9458ad3f78ffc1cb", size = 18788, upload-time = "2017-10-05T14:04:38.221Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fc/3a/9dedaad22962770edd334222f2b3c3e7ad5e1c8cab1d6a7992c30329e2e5/coreapi-2.3.3-py2.py3-none-any.whl", hash = "sha256:bf39d118d6d3e171f10df9ede5666f63ad80bba9a29a8ec17726a66cf52ee6f3", size = 25636, upload-time = "2017-10-05T14:04:40.687Z" }, -] - -[[package]] -name = "coreschema" -version = "0.0.4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "jinja2" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/93/08/1d105a70104e078718421e6c555b8b293259e7fc92f7e9a04869947f198f/coreschema-0.0.4.tar.gz", hash = "sha256:9503506007d482ab0867ba14724b93c18a33b22b6d19fb419ef2d239dd4a1607", size = 10974, upload-time = "2017-02-08T12:23:49.42Z" } - [[package]] name = "cryptography" -version = "46.0.4" +version = "46.0.5" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, - { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/78/19/f748958276519adf6a0c1e79e7b8860b4830dda55ccdf29f2719b5fc499c/cryptography-46.0.4.tar.gz", hash = "sha256:bfd019f60f8abc2ed1b9be4ddc21cfef059c841d86d710bb69909a688cbb8f59", size = 749301, upload-time = "2026-01-28T00:24:37.379Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/8d/99/157aae7949a5f30d51fcb1a9851e8ebd5c74bf99b5285d8bb4b8b9ee641e/cryptography-46.0.4-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:281526e865ed4166009e235afadf3a4c4cba6056f99336a99efba65336fd5485", size = 7173686, upload-time = "2026-01-28T00:23:07.515Z" }, - { url = "https://files.pythonhosted.org/packages/87/91/874b8910903159043b5c6a123b7e79c4559ddd1896e38967567942635778/cryptography-46.0.4-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5f14fba5bf6f4390d7ff8f086c566454bff0411f6d8aa7af79c88b6f9267aecc", size = 4275871, upload-time = "2026-01-28T00:23:09.439Z" }, - { url = "https://files.pythonhosted.org/packages/c0/35/690e809be77896111f5b195ede56e4b4ed0435b428c2f2b6d35046fbb5e8/cryptography-46.0.4-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:47bcd19517e6389132f76e2d5303ded6cf3f78903da2158a671be8de024f4cd0", size = 4423124, upload-time = "2026-01-28T00:23:11.529Z" }, - { url = "https://files.pythonhosted.org/packages/1a/5b/a26407d4f79d61ca4bebaa9213feafdd8806dc69d3d290ce24996d3cfe43/cryptography-46.0.4-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:01df4f50f314fbe7009f54046e908d1754f19d0c6d3070df1e6268c5a4af09fa", size = 4277090, upload-time = "2026-01-28T00:23:13.123Z" }, - { url = "https://files.pythonhosted.org/packages/0c/d8/4bb7aec442a9049827aa34cee1aa83803e528fa55da9a9d45d01d1bb933e/cryptography-46.0.4-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:5aa3e463596b0087b3da0dbe2b2487e9fc261d25da85754e30e3b40637d61f81", size = 4947652, upload-time = "2026-01-28T00:23:14.554Z" }, - { url = "https://files.pythonhosted.org/packages/2b/08/f83e2e0814248b844265802d081f2fac2f1cbe6cd258e72ba14ff006823a/cryptography-46.0.4-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:0a9ad24359fee86f131836a9ac3bffc9329e956624a2d379b613f8f8abaf5255", size = 4455157, upload-time = "2026-01-28T00:23:16.443Z" }, - { url = "https://files.pythonhosted.org/packages/0a/05/19d849cf4096448779d2dcc9bb27d097457dac36f7273ffa875a93b5884c/cryptography-46.0.4-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:dc1272e25ef673efe72f2096e92ae39dea1a1a450dd44918b15351f72c5a168e", size = 3981078, upload-time = "2026-01-28T00:23:17.838Z" }, - { url = "https://files.pythonhosted.org/packages/e6/89/f7bac81d66ba7cde867a743ea5b37537b32b5c633c473002b26a226f703f/cryptography-46.0.4-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:de0f5f4ec8711ebc555f54735d4c673fc34b65c44283895f1a08c2b49d2fd99c", size = 4276213, upload-time = "2026-01-28T00:23:19.257Z" }, - { url = "https://files.pythonhosted.org/packages/da/9f/7133e41f24edd827020ad21b068736e792bc68eecf66d93c924ad4719fb3/cryptography-46.0.4-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:eeeb2e33d8dbcccc34d64651f00a98cb41b2dc69cef866771a5717e6734dfa32", size = 4912190, upload-time = "2026-01-28T00:23:21.244Z" }, - { url = "https://files.pythonhosted.org/packages/a6/f7/6d43cbaddf6f65b24816e4af187d211f0bc536a29961f69faedc48501d8e/cryptography-46.0.4-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:3d425eacbc9aceafd2cb429e42f4e5d5633c6f873f5e567077043ef1b9bbf616", size = 4454641, upload-time = "2026-01-28T00:23:22.866Z" }, - { url = "https://files.pythonhosted.org/packages/9e/4f/ebd0473ad656a0ac912a16bd07db0f5d85184924e14fc88feecae2492834/cryptography-46.0.4-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:91627ebf691d1ea3976a031b61fb7bac1ccd745afa03602275dda443e11c8de0", size = 4405159, upload-time = "2026-01-28T00:23:25.278Z" }, - { url = "https://files.pythonhosted.org/packages/d1/f7/7923886f32dc47e27adeff8246e976d77258fd2aa3efdd1754e4e323bf49/cryptography-46.0.4-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:2d08bc22efd73e8854b0b7caff402d735b354862f1145d7be3b9c0f740fef6a0", size = 4666059, upload-time = "2026-01-28T00:23:26.766Z" }, - { url = "https://files.pythonhosted.org/packages/eb/a7/0fca0fd3591dffc297278a61813d7f661a14243dd60f499a7a5b48acb52a/cryptography-46.0.4-cp311-abi3-win32.whl", hash = "sha256:82a62483daf20b8134f6e92898da70d04d0ef9a75829d732ea1018678185f4f5", size = 3026378, upload-time = "2026-01-28T00:23:28.317Z" }, - { url = "https://files.pythonhosted.org/packages/2d/12/652c84b6f9873f0909374864a57b003686c642ea48c84d6c7e2c515e6da5/cryptography-46.0.4-cp311-abi3-win_amd64.whl", hash = "sha256:6225d3ebe26a55dbc8ead5ad1265c0403552a63336499564675b29eb3184c09b", size = 3478614, upload-time = "2026-01-28T00:23:30.275Z" }, - { url = "https://files.pythonhosted.org/packages/56/f7/f648fdbb61d0d45902d3f374217451385edc7e7768d1b03ff1d0e5ffc17b/cryptography-46.0.4-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:a9556ba711f7c23f77b151d5798f3ac44a13455cc68db7697a1096e6d0563cab", size = 7169583, upload-time = "2026-01-28T00:23:56.558Z" }, - { url = "https://files.pythonhosted.org/packages/d8/cc/8f3224cbb2a928de7298d6ed4790f5ebc48114e02bdc9559196bfb12435d/cryptography-46.0.4-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8bf75b0259e87fa70bddc0b8b4078b76e7fd512fd9afae6c1193bcf440a4dbef", size = 4275419, upload-time = "2026-01-28T00:23:58.364Z" }, - { url = "https://files.pythonhosted.org/packages/17/43/4a18faa7a872d00e4264855134ba82d23546c850a70ff209e04ee200e76f/cryptography-46.0.4-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3c268a3490df22270955966ba236d6bc4a8f9b6e4ffddb78aac535f1a5ea471d", size = 4419058, upload-time = "2026-01-28T00:23:59.867Z" }, - { url = "https://files.pythonhosted.org/packages/ee/64/6651969409821d791ba12346a124f55e1b76f66a819254ae840a965d4b9c/cryptography-46.0.4-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:812815182f6a0c1d49a37893a303b44eaac827d7f0d582cecfc81b6427f22973", size = 4278151, upload-time = "2026-01-28T00:24:01.731Z" }, - { url = "https://files.pythonhosted.org/packages/20/0b/a7fce65ee08c3c02f7a8310cc090a732344066b990ac63a9dfd0a655d321/cryptography-46.0.4-cp38-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:a90e43e3ef65e6dcf969dfe3bb40cbf5aef0d523dff95bfa24256be172a845f4", size = 4939441, upload-time = "2026-01-28T00:24:03.175Z" }, - { url = "https://files.pythonhosted.org/packages/db/a7/20c5701e2cd3e1dfd7a19d2290c522a5f435dd30957d431dcb531d0f1413/cryptography-46.0.4-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:a05177ff6296644ef2876fce50518dffb5bcdf903c85250974fc8bc85d54c0af", size = 4451617, upload-time = "2026-01-28T00:24:05.403Z" }, - { url = "https://files.pythonhosted.org/packages/00/dc/3e16030ea9aa47b63af6524c354933b4fb0e352257c792c4deeb0edae367/cryptography-46.0.4-cp38-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:daa392191f626d50f1b136c9b4cf08af69ca8279d110ea24f5c2700054d2e263", size = 3977774, upload-time = "2026-01-28T00:24:06.851Z" }, - { url = "https://files.pythonhosted.org/packages/42/c8/ad93f14118252717b465880368721c963975ac4b941b7ef88f3c56bf2897/cryptography-46.0.4-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:e07ea39c5b048e085f15923511d8121e4a9dc45cee4e3b970ca4f0d338f23095", size = 4277008, upload-time = "2026-01-28T00:24:08.926Z" }, - { url = "https://files.pythonhosted.org/packages/00/cf/89c99698151c00a4631fbfcfcf459d308213ac29e321b0ff44ceeeac82f1/cryptography-46.0.4-cp38-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:d5a45ddc256f492ce42a4e35879c5e5528c09cd9ad12420828c972951d8e016b", size = 4903339, upload-time = "2026-01-28T00:24:12.009Z" }, - { url = "https://files.pythonhosted.org/packages/03/c3/c90a2cb358de4ac9309b26acf49b2a100957e1ff5cc1e98e6c4996576710/cryptography-46.0.4-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:6bb5157bf6a350e5b28aee23beb2d84ae6f5be390b2f8ee7ea179cda077e1019", size = 4451216, upload-time = "2026-01-28T00:24:13.975Z" }, - { url = "https://files.pythonhosted.org/packages/96/2c/8d7f4171388a10208671e181ca43cdc0e596d8259ebacbbcfbd16de593da/cryptography-46.0.4-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:dd5aba870a2c40f87a3af043e0dee7d9eb02d4aff88a797b48f2b43eff8c3ab4", size = 4404299, upload-time = "2026-01-28T00:24:16.169Z" }, - { url = "https://files.pythonhosted.org/packages/e9/23/cbb2036e450980f65c6e0a173b73a56ff3bccd8998965dea5cc9ddd424a5/cryptography-46.0.4-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:93d8291da8d71024379ab2cb0b5c57915300155ad42e07f76bea6ad838d7e59b", size = 4664837, upload-time = "2026-01-28T00:24:17.629Z" }, - { url = "https://files.pythonhosted.org/packages/0a/21/f7433d18fe6d5845329cbdc597e30caf983229c7a245bcf54afecc555938/cryptography-46.0.4-cp38-abi3-win32.whl", hash = "sha256:0563655cb3c6d05fb2afe693340bc050c30f9f34e15763361cf08e94749401fc", size = 3009779, upload-time = "2026-01-28T00:24:20.198Z" }, - { url = "https://files.pythonhosted.org/packages/3a/6a/bd2e7caa2facffedf172a45c1a02e551e6d7d4828658c9a245516a598d94/cryptography-46.0.4-cp38-abi3-win_amd64.whl", hash = "sha256:fa0900b9ef9c49728887d1576fd8d9e7e3ea872fa9b25ef9b64888adc434e976", size = 3466633, upload-time = "2026-01-28T00:24:21.851Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/60/04/ee2a9e8542e4fa2773b81771ff8349ff19cdd56b7258a0cc442639052edb/cryptography-46.0.5.tar.gz", hash = "sha256:abace499247268e3757271b2f1e244b36b06f8515cf27c4d49468fc9eb16e93d", size = 750064, upload-time = "2026-02-10T19:18:38.255Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f7/81/b0bb27f2ba931a65409c6b8a8b358a7f03c0e46eceacddff55f7c84b1f3b/cryptography-46.0.5-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:351695ada9ea9618b3500b490ad54c739860883df6c1f555e088eaf25b1bbaad", size = 7176289, upload-time = "2026-02-10T19:17:08.274Z" }, + { url = "https://files.pythonhosted.org/packages/ff/9e/6b4397a3e3d15123de3b1806ef342522393d50736c13b20ec4c9ea6693a6/cryptography-46.0.5-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c18ff11e86df2e28854939acde2d003f7984f721eba450b56a200ad90eeb0e6b", size = 4275637, upload-time = "2026-02-10T19:17:10.53Z" }, + { url = "https://files.pythonhosted.org/packages/63/e7/471ab61099a3920b0c77852ea3f0ea611c9702f651600397ac567848b897/cryptography-46.0.5-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4d7e3d356b8cd4ea5aff04f129d5f66ebdc7b6f8eae802b93739ed520c47c79b", size = 4424742, upload-time = "2026-02-10T19:17:12.388Z" }, + { url = "https://files.pythonhosted.org/packages/37/53/a18500f270342d66bf7e4d9f091114e31e5ee9e7375a5aba2e85a91e0044/cryptography-46.0.5-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:50bfb6925eff619c9c023b967d5b77a54e04256c4281b0e21336a130cd7fc263", size = 4277528, upload-time = "2026-02-10T19:17:13.853Z" }, + { url = "https://files.pythonhosted.org/packages/22/29/c2e812ebc38c57b40e7c583895e73c8c5adb4d1e4a0cc4c5a4fdab2b1acc/cryptography-46.0.5-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:803812e111e75d1aa73690d2facc295eaefd4439be1023fefc4995eaea2af90d", size = 4947993, upload-time = "2026-02-10T19:17:15.618Z" }, + { url = "https://files.pythonhosted.org/packages/6b/e7/237155ae19a9023de7e30ec64e5d99a9431a567407ac21170a046d22a5a3/cryptography-46.0.5-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3ee190460e2fbe447175cda91b88b84ae8322a104fc27766ad09428754a618ed", size = 4456855, upload-time = "2026-02-10T19:17:17.221Z" }, + { url = "https://files.pythonhosted.org/packages/2d/87/fc628a7ad85b81206738abbd213b07702bcbdada1dd43f72236ef3cffbb5/cryptography-46.0.5-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:f145bba11b878005c496e93e257c1e88f154d278d2638e6450d17e0f31e558d2", size = 3984635, upload-time = "2026-02-10T19:17:18.792Z" }, + { url = "https://files.pythonhosted.org/packages/84/29/65b55622bde135aedf4565dc509d99b560ee4095e56989e815f8fd2aa910/cryptography-46.0.5-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:e9251e3be159d1020c4030bd2e5f84d6a43fe54b6c19c12f51cde9542a2817b2", size = 4277038, upload-time = "2026-02-10T19:17:20.256Z" }, + { url = "https://files.pythonhosted.org/packages/bc/36/45e76c68d7311432741faf1fbf7fac8a196a0a735ca21f504c75d37e2558/cryptography-46.0.5-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:47fb8a66058b80e509c47118ef8a75d14c455e81ac369050f20ba0d23e77fee0", size = 4912181, upload-time = "2026-02-10T19:17:21.825Z" }, + { url = "https://files.pythonhosted.org/packages/6d/1a/c1ba8fead184d6e3d5afcf03d569acac5ad063f3ac9fb7258af158f7e378/cryptography-46.0.5-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:4c3341037c136030cb46e4b1e17b7418ea4cbd9dd207e4a6f3b2b24e0d4ac731", size = 4456482, upload-time = "2026-02-10T19:17:25.133Z" }, + { url = "https://files.pythonhosted.org/packages/f9/e5/3fb22e37f66827ced3b902cf895e6a6bc1d095b5b26be26bd13c441fdf19/cryptography-46.0.5-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:890bcb4abd5a2d3f852196437129eb3667d62630333aacc13dfd470fad3aaa82", size = 4405497, upload-time = "2026-02-10T19:17:26.66Z" }, + { url = "https://files.pythonhosted.org/packages/1a/df/9d58bb32b1121a8a2f27383fabae4d63080c7ca60b9b5c88be742be04ee7/cryptography-46.0.5-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:80a8d7bfdf38f87ca30a5391c0c9ce4ed2926918e017c29ddf643d0ed2778ea1", size = 4667819, upload-time = "2026-02-10T19:17:28.569Z" }, + { url = "https://files.pythonhosted.org/packages/ea/ed/325d2a490c5e94038cdb0117da9397ece1f11201f425c4e9c57fe5b9f08b/cryptography-46.0.5-cp311-abi3-win32.whl", hash = "sha256:60ee7e19e95104d4c03871d7d7dfb3d22ef8a9b9c6778c94e1c8fcc8365afd48", size = 3028230, upload-time = "2026-02-10T19:17:30.518Z" }, + { url = "https://files.pythonhosted.org/packages/e9/5a/ac0f49e48063ab4255d9e3b79f5def51697fce1a95ea1370f03dc9db76f6/cryptography-46.0.5-cp311-abi3-win_amd64.whl", hash = "sha256:38946c54b16c885c72c4f59846be9743d699eee2b69b6988e0a00a01f46a61a4", size = 3480909, upload-time = "2026-02-10T19:17:32.083Z" }, + { url = "https://files.pythonhosted.org/packages/e2/fa/a66aa722105ad6a458bebd64086ca2b72cdd361fed31763d20390f6f1389/cryptography-46.0.5-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:4108d4c09fbbf2789d0c926eb4152ae1760d5a2d97612b92d508d96c861e4d31", size = 7170514, upload-time = "2026-02-10T19:17:56.267Z" }, + { url = "https://files.pythonhosted.org/packages/0f/04/c85bdeab78c8bc77b701bf0d9bdcf514c044e18a46dcff330df5448631b0/cryptography-46.0.5-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7d1f30a86d2757199cb2d56e48cce14deddf1f9c95f1ef1b64ee91ea43fe2e18", size = 4275349, upload-time = "2026-02-10T19:17:58.419Z" }, + { url = "https://files.pythonhosted.org/packages/5c/32/9b87132a2f91ee7f5223b091dc963055503e9b442c98fc0b8a5ca765fab0/cryptography-46.0.5-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:039917b0dc418bb9f6edce8a906572d69e74bd330b0b3fea4f79dab7f8ddd235", size = 4420667, upload-time = "2026-02-10T19:18:00.619Z" }, + { url = "https://files.pythonhosted.org/packages/a1/a6/a7cb7010bec4b7c5692ca6f024150371b295ee1c108bdc1c400e4c44562b/cryptography-46.0.5-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:ba2a27ff02f48193fc4daeadf8ad2590516fa3d0adeeb34336b96f7fa64c1e3a", size = 4276980, upload-time = "2026-02-10T19:18:02.379Z" }, + { url = "https://files.pythonhosted.org/packages/8e/7c/c4f45e0eeff9b91e3f12dbd0e165fcf2a38847288fcfd889deea99fb7b6d/cryptography-46.0.5-cp38-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:61aa400dce22cb001a98014f647dc21cda08f7915ceb95df0c9eaf84b4b6af76", size = 4939143, upload-time = "2026-02-10T19:18:03.964Z" }, + { url = "https://files.pythonhosted.org/packages/37/19/e1b8f964a834eddb44fa1b9a9976f4e414cbb7aa62809b6760c8803d22d1/cryptography-46.0.5-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3ce58ba46e1bc2aac4f7d9290223cead56743fa6ab94a5d53292ffaac6a91614", size = 4453674, upload-time = "2026-02-10T19:18:05.588Z" }, + { url = "https://files.pythonhosted.org/packages/db/ed/db15d3956f65264ca204625597c410d420e26530c4e2943e05a0d2f24d51/cryptography-46.0.5-cp38-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:420d0e909050490d04359e7fdb5ed7e667ca5c3c402b809ae2563d7e66a92229", size = 3978801, upload-time = "2026-02-10T19:18:07.167Z" }, + { url = "https://files.pythonhosted.org/packages/41/e2/df40a31d82df0a70a0daf69791f91dbb70e47644c58581d654879b382d11/cryptography-46.0.5-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:582f5fcd2afa31622f317f80426a027f30dc792e9c80ffee87b993200ea115f1", size = 4276755, upload-time = "2026-02-10T19:18:09.813Z" }, + { url = "https://files.pythonhosted.org/packages/33/45/726809d1176959f4a896b86907b98ff4391a8aa29c0aaaf9450a8a10630e/cryptography-46.0.5-cp38-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:bfd56bb4b37ed4f330b82402f6f435845a5f5648edf1ad497da51a8452d5d62d", size = 4901539, upload-time = "2026-02-10T19:18:11.263Z" }, + { url = "https://files.pythonhosted.org/packages/99/0f/a3076874e9c88ecb2ecc31382f6e7c21b428ede6f55aafa1aa272613e3cd/cryptography-46.0.5-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:a3d507bb6a513ca96ba84443226af944b0f7f47dcc9a399d110cd6146481d24c", size = 4452794, upload-time = "2026-02-10T19:18:12.914Z" }, + { url = "https://files.pythonhosted.org/packages/02/ef/ffeb542d3683d24194a38f66ca17c0a4b8bf10631feef44a7ef64e631b1a/cryptography-46.0.5-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:9f16fbdf4da055efb21c22d81b89f155f02ba420558db21288b3d0035bafd5f4", size = 4404160, upload-time = "2026-02-10T19:18:14.375Z" }, + { url = "https://files.pythonhosted.org/packages/96/93/682d2b43c1d5f1406ed048f377c0fc9fc8f7b0447a478d5c65ab3d3a66eb/cryptography-46.0.5-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:ced80795227d70549a411a4ab66e8ce307899fad2220ce5ab2f296e687eacde9", size = 4667123, upload-time = "2026-02-10T19:18:15.886Z" }, + { url = "https://files.pythonhosted.org/packages/45/2d/9c5f2926cb5300a8eefc3f4f0b3f3df39db7f7ce40c8365444c49363cbda/cryptography-46.0.5-cp38-abi3-win32.whl", hash = "sha256:02f547fce831f5096c9a567fd41bc12ca8f11df260959ecc7c3202555cc47a72", size = 3010220, upload-time = "2026-02-10T19:18:17.361Z" }, + { url = "https://files.pythonhosted.org/packages/48/ef/0c2f4a8e31018a986949d34a01115dd057bf536905dca38897bacd21fac3/cryptography-46.0.5-cp38-abi3-win_amd64.whl", hash = "sha256:556e106ee01aa13484ce9b0239bca667be5004efb0aabbed28d353df86445595", size = 3467050, upload-time = "2026-02-10T19:18:18.899Z" }, ] [[package]] @@ -624,17 +575,24 @@ wheels = [ [[package]] name = "cwcwidth" -version = "0.1.11" +version = "0.1.12" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7f/bc/1746c7650e8c676e7799d40fc31d37d88882c18d92fbcdd1d014c8c8786c/cwcwidth-0.1.11.tar.gz", hash = "sha256:594d8855a6319cc3ef36e0b6374fae02e4f4fe17cd87d0debe8b6e00eb186c17", size = 71727, upload-time = "2025-10-28T08:22:08.186Z" } +sdist = { url = "https://files.pythonhosted.org/packages/86/5f/f5c3d1b4e9c8c541406ca0654efa1bfaa05414f8e7d1c14bc6e3fd0752f8/cwcwidth-0.1.12.tar.gz", hash = "sha256:bfc16531d1246dd2558eb9b3a63aa37a9978672b956860dc5426da2343ebf366", size = 72009, upload-time = "2025-11-01T17:48:53.683Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/ee/8073e18f9ec39195b7d44d153eea900f409324b973626c571ccc61b0b7f3/cwcwidth-0.1.11-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7bf37420fc4894ff21eedb069cd75f38a8f330a5c79501160a7bb21c79163ad9", size = 25105, upload-time = "2025-10-28T08:21:31.577Z" }, - { url = "https://files.pythonhosted.org/packages/f8/32/22d951c240200129e4b47849dcc6dd25f8222e5cf3812f08ad19dd1f0072/cwcwidth-0.1.11-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:fd61620714344d529250a6d7b5896f51261b65526c84299691cf062cbf4666ce", size = 93135, upload-time = "2025-10-28T08:21:33.009Z" }, - { url = "https://files.pythonhosted.org/packages/ab/d3/ef90bdf90a572dcad2eca0007752f452cd912ccec1a07b3bda3b95498d9e/cwcwidth-0.1.11-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ea4a44ce6101a9f47491dae881cb97a31930e9d7ebd77854a2b7ee79674b3859", size = 96992, upload-time = "2025-10-28T08:21:34.168Z" }, - { url = "https://files.pythonhosted.org/packages/a4/f8/efa7c8ee215617ca5ec8ddf469e4d7578e9aecbe819e877c830ab1a847af/cwcwidth-0.1.11-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d72185b2c20d85b90ef22eeec650c9e48a0652f8787811b806f2d54f1b2bbe39", size = 95306, upload-time = "2025-10-28T08:21:35.44Z" }, - { url = "https://files.pythonhosted.org/packages/e8/b2/72263ab2f036398d1babc1b4ab8a6f1c84ed2c630eb1fbf3c48e7b44d68f/cwcwidth-0.1.11-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e8e32df4db4a6c15770b885795f8e1bb709fc272337d4c0567691130f66ab83a", size = 94791, upload-time = "2025-10-28T08:21:36.436Z" }, - { url = "https://files.pythonhosted.org/packages/89/e5/47790bea7f0a7abd6f50eb844caed668058819bd3edff2464b1b09755494/cwcwidth-0.1.11-cp310-cp310-win32.whl", hash = "sha256:0be3ab3e9b0b7691dce2c7099b038319cb5bc1384f53ec4c7e84371a92670db4", size = 23608, upload-time = "2025-10-28T08:21:37.691Z" }, - { url = "https://files.pythonhosted.org/packages/fa/3d/4ea6783ac7e3807204d589a167c57c5d18571c3f4723b322f139175f44e1/cwcwidth-0.1.11-cp310-cp310-win_amd64.whl", hash = "sha256:bdc00d41885d9ec4ef201e7f1c09225f895b63dde2b913bb5a62e9ce805ecf31", size = 25819, upload-time = "2025-10-28T08:21:38.458Z" }, + { url = "https://files.pythonhosted.org/packages/eb/48/42998c088895974ee2a5ce58d3e9bec504ffb4e063dbadc9e325499220d1/cwcwidth-0.1.12-cp311-abi3-macosx_11_0_arm64.whl", hash = "sha256:a2c7ab3b9eb0abab9bb326fec751b36aca52e0cfe3987c0909f188b9f681042c", size = 24206, upload-time = "2025-11-01T17:48:17.749Z" }, + { url = "https://files.pythonhosted.org/packages/0d/09/4ca240f55596b9c0006d3ffc584bceed4973ee54a5ea68ce9751b712e869/cwcwidth-0.1.12-cp311-abi3-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:48ae48e69759e19eec41aeb6ba2217e5ac2885191b2d90c5ac426ac1aa61f38c", size = 83467, upload-time = "2025-11-01T17:48:18.705Z" }, + { url = "https://files.pythonhosted.org/packages/44/c0/f9cc45fda70866852dd3ea5ec9d95ae2f4f6eb0c37877f92a08f5f9c7dd9/cwcwidth-0.1.12-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7cf19286e0a388916c8af6b60a6174d641840d722e2870ccb327f67b10b531e8", size = 85763, upload-time = "2025-11-01T17:48:19.494Z" }, + { url = "https://files.pythonhosted.org/packages/86/84/ebb25d16e759915bffe77c684c9a359277f90f1a39423f4067bb47961e92/cwcwidth-0.1.12-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:2264b41d216d4cc8ac040a05d365f0221299a83ad8d45ab211c7b4301b19603a", size = 83632, upload-time = "2025-11-01T17:48:21.025Z" }, + { url = "https://files.pythonhosted.org/packages/ab/e7/45d6e1888a0240adf39634faacf3b2acd400309a83b4f33a2038851cb0ca/cwcwidth-0.1.12-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:3608d4d076428543975a84bec9205f40f2935410816e01ec75bdb9b1a064be87", size = 84366, upload-time = "2025-11-01T17:48:21.948Z" }, + { url = "https://files.pythonhosted.org/packages/9b/b6/d65a429130c746f96f851850166008c2a0e0cf9225fe0ab1a3b6637e53f4/cwcwidth-0.1.12-cp311-abi3-win32.whl", hash = "sha256:02b7caa2afce141132edf191c080ce1b1d1c2251285407975db1ba63b509ba58", size = 22934, upload-time = "2025-11-01T17:48:22.983Z" }, + { url = "https://files.pythonhosted.org/packages/7d/63/1c0f5d4380402a00a8f18912ae28f1606774c106599e7341e56aa2bf83b8/cwcwidth-0.1.12-cp311-abi3-win_amd64.whl", hash = "sha256:0481c93b7392b27deda8a709eb9e1a9c95fc5b30d5f3bd5f995fd27c960d4ced", size = 24733, upload-time = "2025-11-01T17:48:24.094Z" }, + { url = "https://files.pythonhosted.org/packages/01/03/a6babc103b81fee48efe047bb140320dca56b8bc90593e29f2469c66fdc6/cwcwidth-0.1.12-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c49e2ab07ea6a9d186748756c595b59ed010cfbd5b397e3c01151afbf97ead4e", size = 24962, upload-time = "2025-11-01T17:48:36.125Z" }, + { url = "https://files.pythonhosted.org/packages/80/e2/f86bc7cff13650ded3a65ed9e691c96630de6f78e13f5d15429370f8fdf4/cwcwidth-0.1.12-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:fe000f219b7c3d515c0a1da13c151e7d9a64d7b601c9ffe1bcd26b73137b29e9", size = 101741, upload-time = "2025-11-01T17:48:37.157Z" }, + { url = "https://files.pythonhosted.org/packages/24/93/15ecc0054ffe666e60b3d868ff9fbb26f5a348313d8b62517a61d5c75d0f/cwcwidth-0.1.12-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b92f1b789c47eeba01f50461fb98fddda601334647ee84dfeb47335416ff065d", size = 104039, upload-time = "2025-11-01T17:48:37.958Z" }, + { url = "https://files.pythonhosted.org/packages/50/76/4797386456638454b5a92e31b80878870fdde9f4126b02d8b428ac3a462a/cwcwidth-0.1.12-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cb298d0df5bc866fa2276e8790753627024c21038cd9509e164b857ea5f57c75", size = 101952, upload-time = "2025-11-01T17:48:39.148Z" }, + { url = "https://files.pythonhosted.org/packages/43/5f/a67ed84601f2b32fb5390a033e3201af1b281130367a138a39fc3f93722e/cwcwidth-0.1.12-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:51399b3cda019f488106a163a912723479677efd2b5a1fa456241d19cd0f7cda", size = 101749, upload-time = "2025-11-01T17:48:39.984Z" }, + { url = "https://files.pythonhosted.org/packages/7b/bc/d32f9134dce6a6ae4ddede438c3e1479ec5acea94cdaee441708b15279c3/cwcwidth-0.1.12-cp313-cp313-win32.whl", hash = "sha256:d5cbf6975956c9283dce2513d8a7c3604c20abeb7002dc9a7cdf2183cccebf64", size = 23434, upload-time = "2025-11-01T17:48:40.776Z" }, + { url = "https://files.pythonhosted.org/packages/6d/cc/94894321cb9bfe81811d605725fa99e9867e531becfcd2c81bf8cfed5874/cwcwidth-0.1.12-cp313-cp313-win_amd64.whl", hash = "sha256:0e622b8b470bd74c0e5225c5d21ffb16f3d413f970b46603e549620126c9e2ec", size = 25451, upload-time = "2025-11-01T17:48:41.48Z" }, ] [[package]] @@ -666,74 +624,87 @@ wheels = [ [[package]] name = "django" -version = "4.2.28" +version = "5.2.12" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "asgiref" }, { name = "sqlparse" }, { name = "tzdata", marker = "sys_platform == 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fa/a9/25b75b11a4c7a6efe1661c181afe504992e0659ca6eedb72a065cdd91a25/django-4.2.28.tar.gz", hash = "sha256:a4b9cd881991add394cafa8bb3b11ad1742d1e1470ba99c3ef53dc540316ccfe", size = 10464933, upload-time = "2026-02-03T13:55:27.686Z" } +sdist = { url = "https://files.pythonhosted.org/packages/bd/55/b9445fc0695b03746f355c05b2eecc54c34e05198c686f4fc4406b722b52/django-5.2.12.tar.gz", hash = "sha256:6b809af7165c73eff5ce1c87fdae75d4da6520d6667f86401ecf55b681eb1eeb", size = 10860574, upload-time = "2026-03-03T13:56:05.509Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/68/20/6d0808bc7500a6c654eae17b53f791a50af2c3f3ac4f328cbec324948c31/django-4.2.28-py3-none-any.whl", hash = "sha256:49a23c1b83ef31525f8d71a57b040f91d34660edb3f086280a8519855655ed3c", size = 7995543, upload-time = "2026-02-03T13:55:09.798Z" }, + { url = "https://files.pythonhosted.org/packages/4e/32/4b144e125678efccf5d5b61581de1c4088d6b0286e46096e3b8de0d556c8/django-5.2.12-py3-none-any.whl", hash = "sha256:4853482f395c3a151937f6991272540fcbf531464f254a347bf7c89f53c8cff7", size = 8310245, upload-time = "2026-03-03T13:56:01.174Z" }, ] [[package]] name = "django-ajax-selects" -version = "2.0.0" +version = "3.0.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a4/0e/d3199bb8bf2b4e86e68ed7fc79813113a20fd93e6bab67a339963d0b8018/django-ajax-selects-2.0.0.tar.gz", hash = "sha256:f87325b25cae6e9e53b1290356e8d0e17587de57d3d19682ab3912b6bde68cb5", size = 39025, upload-time = "2020-10-04T12:42:51.814Z" } +dependencies = [ + { name = "django" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/30/4a/bab3a28e94912f744d53624c2d9e192c73a6ae0fd8741edacd6d46ee09b5/django_ajax_selects-3.0.3.tar.gz", hash = "sha256:650071c78c333139059e00a41e9aeff21234e026f2076965429594f5c5327f35", size = 426986, upload-time = "2024-09-14T12:29:34.783Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/47/c4/f3fdc8d629912040dbe2744e1fa97cdb529b868d1e9c29e40b4dc3fd998c/django_ajax_selects-3.0.3-py3-none-any.whl", hash = "sha256:10c618dd3bbb2ca78b9d4625b1f64a225c00a6ad4bc13fbe87ad33f12a204e1b", size = 442976, upload-time = "2024-09-14T12:29:32.93Z" }, +] [[package]] -name = "django-cors-middleware" -version = "1.5.0" +name = "django-cors-headers" +version = "4.9.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/21/b9/1dea04e58f3e0b0d3c14499c27527464ef1e4e5e4e164c621927226f5ef5/django-cors-middleware-1.5.0.tar.gz", hash = "sha256:856dbe4d7aae65844ccc68acb49c6da7dbf7cbacaf5bcf37019f4c0c60b3be84", size = 8914, upload-time = "2019-12-09T19:42:02.961Z" } +dependencies = [ + { name = "asgiref" }, + { name = "django" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/21/39/55822b15b7ec87410f34cd16ce04065ff390e50f9e29f31d6d116fc80456/django_cors_headers-4.9.0.tar.gz", hash = "sha256:fe5d7cb59fdc2c8c646ce84b727ac2bca8912a247e6e68e1fb507372178e59e8", size = 21458, upload-time = "2025-09-18T10:40:52.326Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/99/3c/22c2f99afb6b5645c2bac806568b1c750b14a083fe65a75cdbca1d40afb1/django_cors_middleware-1.5.0-py3-none-any.whl", hash = "sha256:5bbdea85e22909d596e26f6e0dbc174d5521429fa3943ae02a2c6c48e76c88c7", size = 9195, upload-time = "2019-12-09T19:42:01.105Z" }, + { url = "https://files.pythonhosted.org/packages/30/d8/19ed1e47badf477d17fb177c1c19b5a21da0fd2d9f093f23be3fb86c5fab/django_cors_headers-4.9.0-py3-none-any.whl", hash = "sha256:15c7f20727f90044dcee2216a9fd7303741a864865f0c3657e28b7056f61b449", size = 12809, upload-time = "2025-09-18T10:40:50.843Z" }, ] [[package]] name = "django-debug-toolbar" -version = "3.2" +version = "6.2.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "django" }, { name = "sqlparse" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/06/2f/accc248441f1868e3ec3b5f036cde61064de3aa650649ef856dd9ee574b3/django-debug-toolbar-3.2.tar.gz", hash = "sha256:84e2607d900dbd571df0a2acf380b47c088efb787dce9805aefeb407341961d2", size = 115348, upload-time = "2020-12-03T08:16:13.529Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f1/4d/6acf660500d3d581bfc19460d9605cdf14c275640f35825da1329eaafafa/django_debug_toolbar-6.2.0.tar.gz", hash = "sha256:dc1c174d8fb0ea01435e02d9ceef735cf62daf37c1a6a5692d33b4127327679b", size = 313779, upload-time = "2026-01-20T12:38:25.268Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e2/57/7db3f8d53e1e66584e1e9ae13b327d59b5a8317db27365cea2a98b1e8ce0/django_debug_toolbar-3.2-py3-none-any.whl", hash = "sha256:9e5a25d0c965f7e686f6a8ba23613ca9ca30184daa26487706d4829f5cfb697a", size = 200405, upload-time = "2020-12-03T08:16:11.574Z" }, + { url = "https://files.pythonhosted.org/packages/88/04/e24611299a5ee0d4edfacf935b09cfb7d5d9cb653bd7b7883c3b43a6f90d/django_debug_toolbar-6.2.0-py3-none-any.whl", hash = "sha256:1575461954e6befa720e999dec13fe4f1cc8baf40b6c3ac2aec5f340c0f9c85f", size = 271354, upload-time = "2026-01-20T12:38:23.608Z" }, ] [[package]] name = "django-enforce-host" -version = "1.0.1" +version = "1.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ec/be/42be6c659757b47808d2e76bfbe1b40e9f48acd62eff63307cbdb0687204/django-enforce-host-1.0.1.tar.gz", hash = "sha256:40c4b4830e7fc27710c1606e8f3a91e82f8f1d5ae6c26aaec76f453b1407fc3d", size = 5778, upload-time = "2017-11-24T16:37:15.983Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a0/e3/eb3884ad23ac76b2ccbe9fc19a3cae657675791f600fb8506300292852a0/django-enforce-host-1.1.0.tar.gz", hash = "sha256:0b365f768e104666751c36d722c8f5c7649852b0e462ef6340c927e7324cebbd", size = 4229, upload-time = "2022-08-26T08:47:08.252Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fe/0d/f83f52b7a2e6eeb24cf28731779281f8ec668300943bd7c59945f44b6594/django_enforce_host-1.1.0-py3-none-any.whl", hash = "sha256:fb732b58aa78e107d1df5809a8addea33e82f66edd46d5a286ebae18e2af2402", size = 4192, upload-time = "2022-08-26T08:47:04.904Z" }, +] [[package]] name = "django-extensions" -version = "3.2.3" +version = "4.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "django" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/8a/f1/318684c9466968bf9a9c221663128206e460c1a67f595055be4b284cde8a/django-extensions-3.2.3.tar.gz", hash = "sha256:44d27919d04e23b3f40231c4ab7af4e61ce832ef46d610cc650d53e68328410a", size = 277216, upload-time = "2023-06-05T17:09:01.447Z" } +sdist = { url = "https://files.pythonhosted.org/packages/6d/b3/ed0f54ed706ec0b54fd251cc0364a249c6cd6c6ec97f04dc34be5e929eac/django_extensions-4.1.tar.gz", hash = "sha256:7b70a4d28e9b840f44694e3f7feb54f55d495f8b3fa6c5c0e5e12bcb2aa3cdeb", size = 283078, upload-time = "2025-04-11T01:15:39.617Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a7/7e/ba12b9660642663f5273141018d2bec0a1cae1711f4f6d1093920e157946/django_extensions-3.2.3-py3-none-any.whl", hash = "sha256:9600b7562f79a92cbf1fde6403c04fee314608fefbb595502e34383ae8203401", size = 229868, upload-time = "2023-06-05T17:08:58.197Z" }, + { url = "https://files.pythonhosted.org/packages/64/96/d967ca440d6a8e3861120f51985d8e5aec79b9a8bdda16041206adfe7adc/django_extensions-4.1-py3-none-any.whl", hash = "sha256:0699a7af28f2523bf8db309a80278519362cd4b6e1fd0a8cd4bf063e1e023336", size = 232980, upload-time = "2025-04-11T01:15:37.701Z" }, ] [[package]] name = "django-filter" -version = "2.4.0" +version = "25.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "django" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/7b/cf/adae3e55995ea27e1dceb493e0226557d4207d8819ddb99591df5204a471/django-filter-2.4.0.tar.gz", hash = "sha256:84e9d5bb93f237e451db814ed422a3a625751cbc9968b484ecc74964a8696b06", size = 146904, upload-time = "2020-09-27T09:08:58.079Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b5/40/c702a6fe8cccac9bf426b55724ebdf57d10a132bae80a17691d0cf0b9bac/django_filter-25.1.tar.gz", hash = "sha256:1ec9eef48fa8da1c0ac9b411744b16c3f4c31176c867886e4c48da369c407153", size = 143021, upload-time = "2025-02-14T16:30:53.238Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/71/2b/b2fe483c3095b6222725dd05f9ad9e6ed6cb7347c154fdbd80238d36f1a8/django_filter-2.4.0-py3-none-any.whl", hash = "sha256:e00d32cebdb3d54273c48f4f878f898dced8d5dfaad009438fe61ebdf535ace1", size = 73156, upload-time = "2020-09-27T09:08:52.69Z" }, + { url = "https://files.pythonhosted.org/packages/07/a6/70dcd68537c434ba7cb9277d403c5c829caf04f35baf5eb9458be251e382/django_filter-25.1-py3-none-any.whl", hash = "sha256:4fa48677cf5857b9b1347fed23e355ea792464e0fe07244d1fdfb8a806215b80", size = 94114, upload-time = "2025-02-14T16:30:50.435Z" }, ] [[package]] @@ -759,15 +730,15 @@ sdist = { url = "https://files.pythonhosted.org/packages/37/92/3adda1e9cafeb9823 [[package]] name = "django-redis" -version = "4.12.1" +version = "6.0.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "django" }, { name = "redis" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f9/3d/b2518821dee8ca518c27cfa1b67e29e21f0b23f9783ecdc2e1cc0f3516a8/django-redis-4.12.1.tar.gz", hash = "sha256:306589c7021e6468b2656edc89f62b8ba67e8d5a1c8877e2688042263daa7a63", size = 23350, upload-time = "2020-05-27T11:38:55.638Z" } +sdist = { url = "https://files.pythonhosted.org/packages/08/53/dbcfa1e528e0d6c39947092625b2c89274b5d88f14d357cee53c4d6dbbd4/django_redis-6.0.0.tar.gz", hash = "sha256:2d9cb12a20424a4c4dde082c6122f486628bae2d9c2bee4c0126a4de7fda00dd", size = 56904, upload-time = "2025-06-17T18:15:46.376Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c0/4c/9044b873ef1cc136b8057453ea1d75ba1c9f24f6e88c7bbf2c3d083e0caf/django_redis-4.12.1-py3-none-any.whl", hash = "sha256:1133b26b75baa3664164c3f44b9d5d133d1b8de45d94d79f38d1adc5b1d502e5", size = 19676, upload-time = "2020-05-27T11:38:54.109Z" }, + { url = "https://files.pythonhosted.org/packages/7e/79/055dfcc508cfe9f439d9f453741188d633efa9eab90fc78a67b0ab50b137/django_redis-6.0.0-py3-none-any.whl", hash = "sha256:20bf0063a8abee567eb5f77f375143c32810c8700c0674ced34737f8de4e36c0", size = 33687, upload-time = "2025-06-17T18:15:34.165Z" }, ] [[package]] @@ -823,14 +794,16 @@ wheels = [ [[package]] name = "drf-extensions" -version = "0.4.0" +version = "0.8.0" source = { registry = "https://pypi.org/simple" } dependencies = [ + { name = "django" }, { name = "djangorestframework" }, + { name = "packaging" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/48/c0/e0dbf7f671a3d899418e47ef7e4c0d3b9c671dd0fa882d89c0ab464ee5bb/drf-extensions-0.4.0.tar.gz", hash = "sha256:11223bc2e173233f4a108456df6433edebc895f65be0dcaa2a76f082fa3b91c3", size = 164609, upload-time = "2018-09-11T04:39:00.412Z" } +sdist = { url = "https://files.pythonhosted.org/packages/77/5a/57e3cc6f2bb4e1e84ad85eed0a12ddf22d5217b6b87c39e611d10e677a63/drf_extensions-0.8.0.tar.gz", hash = "sha256:c3f27bca74a2def53e8454a5c7b327595195df51e121743120b2f51ef5a52aaa", size = 173718, upload-time = "2025-04-10T07:50:05.139Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/07/2f/3088a685eb9e892005238cb08034a1d5bcfedc746d5505569b5bde35fd70/drf_extensions-0.4.0-py2.py3-none-any.whl", hash = "sha256:6638ced63fabfefaa18b81e288a9f459234825ca734ab8dc9942d788b6ee7af4", size = 21032, upload-time = "2018-09-11T04:47:32.538Z" }, + { url = "https://files.pythonhosted.org/packages/aa/c1/b9721c9239b465c0ceac32b33e732c08f6ea0afd8156700e417416a47733/drf_extensions-0.8.0-py2.py3-none-any.whl", hash = "sha256:ab7bd854c9061c27ab55233b66d758001e5c2d81aaa9d117cbbe1c9ea49c77ab", size = 21589, upload-time = "2025-04-10T07:50:02.573Z" }, ] [[package]] @@ -866,22 +839,10 @@ wheels = [ [[package]] name = "drf-writable-nested" -version = "0.6.2" +version = "0.7.2" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/73/31/8b337d8b40231567bdd432ae873bf147bbbcfb42fc5b2adcfd8f6311bf2e/drf_writable_nested-0.6.2-py3-none-any.whl", hash = "sha256:bb413286bd5ebf943460ba7c2dc177d572d6447d5287228cc763062c5a12e3d6", size = 8814, upload-time = "2020-10-29T16:29:11.074Z" }, -] - -[[package]] -name = "exceptiongroup" -version = "1.3.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/50/79/66800aadf48771f6b62f7eb014e352e5d06856655206165d775e675a02c9/exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219", size = 30371, upload-time = "2025-11-21T23:01:54.787Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/8a/0e/97c33bf5009bdbac74fd2beace167cab3f978feb69cc36f1ef79360d6c4e/exceptiongroup-1.3.1-py3-none-any.whl", hash = "sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577f82c773598", size = 16740, upload-time = "2025-11-21T23:01:53.443Z" }, + { url = "https://files.pythonhosted.org/packages/e8/57/df87d92fbfc3f0f2ef1a49c47f2a83389a4a13b7acf62b8bf7b223627d82/drf_writable_nested-0.7.2-py3-none-any.whl", hash = "sha256:4a3d2737c1cbfafa690e30236b169112e5b23cfe3d288f3992b0651a1b828c4d", size = 10570, upload-time = "2025-03-10T19:59:05.482Z" }, ] [[package]] @@ -895,26 +856,26 @@ wheels = [ [[package]] name = "factory-boy" -version = "2.11.1" +version = "3.3.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "faker" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d5/b4/649fc4bfd0daf308b5cd10bfa51c50bfa4c4c79e091ed301aca69ef6780e/factory_boy-2.11.1.tar.gz", hash = "sha256:6f25cc4761ac109efd503f096e2ad99421b1159f01a29dbb917359dcd68e08ca", size = 43254, upload-time = "2018-05-05T15:05:42.587Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ba/98/75cacae9945f67cfe323829fc2ac451f64517a8a330b572a06a323997065/factory_boy-3.3.3.tar.gz", hash = "sha256:866862d226128dfac7f2b4160287e899daf54f2612778327dd03d0e2cb1e3d03", size = 164146, upload-time = "2025-02-03T09:49:04.433Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/19/6c/b2ac85b3f0b48ac968af3741c4f020bf272ab9dabbd1643e9c719441099a/factory_boy-2.11.1-py2.py3-none-any.whl", hash = "sha256:d552cb872b310ae78bd7429bf318e42e1e903b1a109e899a523293dfa762ea4f", size = 36795, upload-time = "2018-05-05T15:05:40.728Z" }, + { url = "https://files.pythonhosted.org/packages/27/8d/2bc5f5546ff2ccb3f7de06742853483ab75bf74f36a92254702f8baecc79/factory_boy-3.3.3-py2.py3-none-any.whl", hash = "sha256:1c39e3289f7e667c4285433f305f8d506efc2fe9c73aaea4151ebd5cdea394fc", size = 37036, upload-time = "2025-02-03T09:49:01.659Z" }, ] [[package]] name = "faker" -version = "40.1.2" +version = "40.8.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "tzdata", marker = "sys_platform == 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/5e/77/1c3ff07b6739b9a1d23ca01ec0a90a309a33b78e345a3eb52f9ce9240e36/faker-40.1.2.tar.gz", hash = "sha256:b76a68163aa5f171d260fc24827a8349bc1db672f6a665359e8d0095e8135d30", size = 1949802, upload-time = "2026-01-13T20:51:49.917Z" } +sdist = { url = "https://files.pythonhosted.org/packages/70/03/14428edc541467c460d363f6e94bee9acc271f3e62470630fc9a647d0cf2/faker-40.8.0.tar.gz", hash = "sha256:936a3c9be6c004433f20aa4d99095df5dec82b8c7ad07459756041f8c1728875", size = 1956493, upload-time = "2026-03-04T16:18:48.161Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/46/ec/91a434c8a53d40c3598966621dea9c50512bec6ce8e76fa1751015e74cef/faker-40.1.2-py3-none-any.whl", hash = "sha256:93503165c165d330260e4379fd6dc07c94da90c611ed3191a0174d2ab9966a42", size = 1985633, upload-time = "2026-01-13T20:51:47.982Z" }, + { url = "https://files.pythonhosted.org/packages/4c/3b/c6348f1e285e75b069085b18110a4e6325b763a5d35d5e204356fc7c20b3/faker-40.8.0-py3-none-any.whl", hash = "sha256:eb21bdba18f7a8375382eb94fb436fce07046893dc94cb20817d28deb0c3d579", size = 1989124, upload-time = "2026-03-04T16:18:46.45Z" }, ] [[package]] @@ -928,21 +889,21 @@ wheels = [ [[package]] name = "flake8" -version = "3.8.4" +version = "7.3.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "mccabe" }, { name = "pycodestyle" }, { name = "pyflakes" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/71/6a/b3341ef7e7f3585add027d876a7d9837cdfe3320b6c6b5fd0cddfa9ceeac/flake8-3.8.4.tar.gz", hash = "sha256:aadae8761ec651813c24be05c6f7b4680857ef6afaae4651a4eccaef97ce6c3b", size = 163583, upload-time = "2020-10-02T23:34:03.958Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9b/af/fbfe3c4b5a657d79e5c47a2827a362f9e1b763336a52f926126aa6dc7123/flake8-7.3.0.tar.gz", hash = "sha256:fe044858146b9fc69b551a4b490d69cf960fcb78ad1edcb84e7fbb1b4a8e3872", size = 48326, upload-time = "2025-06-20T19:31:35.838Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d4/ca/3971802ee6251da1abead1a22831d7f4743781e2f743bd266bdd2f46c19b/flake8-3.8.4-py2.py3-none-any.whl", hash = "sha256:749dbbd6bfd0cf1318af27bf97a14e28e5ff548ef8e5b1566ccfb25a11e7c839", size = 72910, upload-time = "2020-10-02T23:34:01.861Z" }, + { url = "https://files.pythonhosted.org/packages/9f/56/13ab06b4f93ca7cac71078fbe37fcea175d3216f31f85c3168a6bbd0bb9a/flake8-7.3.0-py2.py3-none-any.whl", hash = "sha256:b9696257b9ce8beb888cdbe31cf885c90d31928fe202be0889a7cdafad32f01e", size = 57922, upload-time = "2025-06-20T19:31:34.425Z" }, ] [[package]] name = "flex" -version = "6.12.0" +version = "6.14.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "click" }, @@ -954,37 +915,35 @@ dependencies = [ { name = "strict-rfc3339" }, { name = "validate-email" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bc/03/d9d4bd3852bc259b31519ff939c3758b488136dfa65a6b02472c97a930a7/flex-6.12.0.tar.gz", hash = "sha256:c7713c55efca07aef81c93db639590b5df2c5bf1f2e29c089e57d3137330109e", size = 40629, upload-time = "2018-01-24T22:11:25.68Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/97/b6/5617010203a109d05d6a3406ad8091946b80f612bf238060a35dc57a4b32/flex-6.12.0-py3-none-any.whl", hash = "sha256:b12403eba2a0499fbbc9f39ea846a3a580c05620efd386e042055a26ec4c37b0", size = 77373, upload-time = "2018-01-24T22:11:27.35Z" }, -] +sdist = { url = "https://files.pythonhosted.org/packages/de/51/f3bf1779a12e92c3bf9f2d0ee242298775ef625adb596951090bdd24854f/flex-6.14.1.tar.gz", hash = "sha256:292ed6a37f1ac0a10ad8669f5ceb82e8ba3106c16c54090820927bac8b0b29eb", size = 40864, upload-time = "2019-09-14T20:20:22.288Z" } [[package]] name = "greenlet" -version = "3.3.1" +version = "3.3.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8a/99/1cd3411c56a410994669062bd73dd58270c00cc074cac15f385a1fd91f8a/greenlet-3.3.1.tar.gz", hash = "sha256:41848f3230b58c08bb43dee542e74a2a2e34d3c59dc3076cec9151aeeedcae98", size = 184690, upload-time = "2026-01-23T15:31:02.076Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a3/51/1664f6b78fc6ebbd98019a1fd730e83fa78f2db7058f72b1463d3612b8db/greenlet-3.3.2.tar.gz", hash = "sha256:2eaf067fc6d886931c7962e8c6bede15d2f01965560f3359b27c80bde2d151f2", size = 188267, upload-time = "2026-02-20T20:54:15.531Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fe/65/5b235b40581ad75ab97dcd8b4218022ae8e3ab77c13c919f1a1dfe9171fd/greenlet-3.3.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:04bee4775f40ecefcdaa9d115ab44736cd4b9c5fba733575bfe9379419582e13", size = 273723, upload-time = "2026-01-23T15:30:37.521Z" }, - { url = "https://files.pythonhosted.org/packages/ce/ad/eb4729b85cba2d29499e0a04ca6fbdd8f540afd7be142fd571eea43d712f/greenlet-3.3.1-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:50e1457f4fed12a50e427988a07f0f9df53cf0ee8da23fab16e6732c2ec909d4", size = 574874, upload-time = "2026-01-23T16:00:54.551Z" }, - { url = "https://files.pythonhosted.org/packages/87/32/57cad7fe4c8b82fdaa098c89498ef85ad92dfbb09d5eb713adedfc2ae1f5/greenlet-3.3.1-cp310-cp310-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:070472cd156f0656f86f92e954591644e158fd65aa415ffbe2d44ca77656a8f5", size = 586309, upload-time = "2026-01-23T16:05:25.18Z" }, - { url = "https://files.pythonhosted.org/packages/66/66/f041005cb87055e62b0d68680e88ec1a57f4688523d5e2fb305841bc8307/greenlet-3.3.1-cp310-cp310-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:1108b61b06b5224656121c3c8ee8876161c491cbe74e5c519e0634c837cf93d5", size = 597461, upload-time = "2026-01-23T16:15:51.943Z" }, - { url = "https://files.pythonhosted.org/packages/87/eb/8a1ec2da4d55824f160594a75a9d8354a5fe0a300fb1c48e7944265217e1/greenlet-3.3.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3a300354f27dd86bae5fbf7002e6dd2b3255cd372e9242c933faf5e859b703fe", size = 586985, upload-time = "2026-01-23T15:32:47.968Z" }, - { url = "https://files.pythonhosted.org/packages/15/1c/0621dd4321dd8c351372ee8f9308136acb628600658a49be1b7504208738/greenlet-3.3.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e84b51cbebf9ae573b5fbd15df88887815e3253fc000a7d0ff95170e8f7e9729", size = 1547271, upload-time = "2026-01-23T16:04:18.977Z" }, - { url = "https://files.pythonhosted.org/packages/9d/53/24047f8924c83bea7a59c8678d9571209c6bfe5f4c17c94a78c06024e9f2/greenlet-3.3.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e0093bd1a06d899892427217f0ff2a3c8f306182b8c754336d32e2d587c131b4", size = 1613427, upload-time = "2026-01-23T15:33:44.428Z" }, - { url = "https://files.pythonhosted.org/packages/ff/07/ac9bf1ec008916d1a3373cae212884c1dcff4a4ba0d41127ce81a8deb4e9/greenlet-3.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:7932f5f57609b6a3b82cc11877709aa7a98e3308983ed93552a1c377069b20c8", size = 226100, upload-time = "2026-01-23T15:30:56.957Z" }, + { url = "https://files.pythonhosted.org/packages/ac/48/f8b875fa7dea7dd9b33245e37f065af59df6a25af2f9561efa8d822fde51/greenlet-3.3.2-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:aa6ac98bdfd716a749b84d4034486863fd81c3abde9aa3cf8eff9127981a4ae4", size = 279120, upload-time = "2026-02-20T20:19:01.9Z" }, + { url = "https://files.pythonhosted.org/packages/49/8d/9771d03e7a8b1ee456511961e1b97a6d77ae1dea4a34a5b98eee706689d3/greenlet-3.3.2-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ab0c7e7901a00bc0a7284907273dc165b32e0d109a6713babd04471327ff7986", size = 603238, upload-time = "2026-02-20T20:47:32.873Z" }, + { url = "https://files.pythonhosted.org/packages/59/0e/4223c2bbb63cd5c97f28ffb2a8aee71bdfb30b323c35d409450f51b91e3e/greenlet-3.3.2-cp313-cp313-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:d248d8c23c67d2291ffd47af766e2a3aa9fa1c6703155c099feb11f526c63a92", size = 614219, upload-time = "2026-02-20T20:55:59.817Z" }, + { url = "https://files.pythonhosted.org/packages/94/2b/4d012a69759ac9d77210b8bfb128bc621125f5b20fc398bce3940d036b1c/greenlet-3.3.2-cp313-cp313-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:ccd21bb86944ca9be6d967cf7691e658e43417782bce90b5d2faeda0ff78a7dd", size = 628268, upload-time = "2026-02-20T21:02:48.024Z" }, + { url = "https://files.pythonhosted.org/packages/7a/34/259b28ea7a2a0c904b11cd36c79b8cef8019b26ee5dbe24e73b469dea347/greenlet-3.3.2-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b6997d360a4e6a4e936c0f9625b1c20416b8a0ea18a8e19cabbefc712e7397ab", size = 616774, upload-time = "2026-02-20T20:21:02.454Z" }, + { url = "https://files.pythonhosted.org/packages/0a/03/996c2d1689d486a6e199cb0f1cf9e4aa940c500e01bdf201299d7d61fa69/greenlet-3.3.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:64970c33a50551c7c50491671265d8954046cb6e8e2999aacdd60e439b70418a", size = 1571277, upload-time = "2026-02-20T20:49:34.795Z" }, + { url = "https://files.pythonhosted.org/packages/d9/c4/2570fc07f34a39f2caf0bf9f24b0a1a0a47bc2e8e465b2c2424821389dfc/greenlet-3.3.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:1a9172f5bf6bd88e6ba5a84e0a68afeac9dc7b6b412b245dd64f52d83c81e55b", size = 1640455, upload-time = "2026-02-20T20:21:10.261Z" }, + { url = "https://files.pythonhosted.org/packages/91/39/5ef5aa23bc545aa0d31e1b9b55822b32c8da93ba657295840b6b34124009/greenlet-3.3.2-cp313-cp313-win_amd64.whl", hash = "sha256:a7945dd0eab63ded0a48e4dcade82939783c172290a7903ebde9e184333ca124", size = 230961, upload-time = "2026-02-20T20:16:58.461Z" }, + { url = "https://files.pythonhosted.org/packages/62/6b/a89f8456dcb06becff288f563618e9f20deed8dd29beea14f9a168aef64b/greenlet-3.3.2-cp313-cp313-win_arm64.whl", hash = "sha256:394ead29063ee3515b4e775216cb756b2e3b4a7e55ae8fd884f17fa579e6b327", size = 230221, upload-time = "2026-02-20T20:17:37.152Z" }, ] [[package]] name = "gunicorn" -version = "22.0.0" +version = "23.0.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "packaging" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/1e/88/e2f93c5738a4c1f56a458fc7a5b1676fc31dcdbb182bef6b40a141c17d66/gunicorn-22.0.0.tar.gz", hash = "sha256:4a0b436239ff76fb33f11c07a16482c521a7e09c1ce3cc293c2330afe01bec63", size = 3639760, upload-time = "2024-04-16T22:58:19.218Z" } +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" } wheels = [ - { url = "https://files.pythonhosted.org/packages/29/97/6d610ae77b5633d24b69c2ff1ac3044e0e565ecbd1ec188f02c45073054c/gunicorn-22.0.0-py3-none-any.whl", hash = "sha256:350679f91b24062c86e386e198a15438d53a7a8207235a78ba1b53df4c4378d9", size = 84443, upload-time = "2024-04-16T22:58:15.233Z" }, + { url = "https://files.pythonhosted.org/packages/cb/7d/6dac2a6e1eba33ee43f318edbed4ff29151a49b5d37f080aad1e6469bca4/gunicorn-23.0.0-py3-none-any.whl", hash = "sha256:ec400d38950de4dfd418cff8328b2c8faed0edb0d517d3394e457c317908ca4d", size = 85029, upload-time = "2024-08-10T20:25:24.996Z" }, ] [[package]] @@ -1023,7 +982,6 @@ version = "24.11.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "packaging" }, - { name = "tomli" }, ] sdist = { url = "https://files.pythonhosted.org/packages/ef/3c/82e84109e02c492f382c711c58a3dd91badda6d746def81a1465f74dc9f5/incremental-24.11.0.tar.gz", hash = "sha256:87d3480dbb083c1d736222511a8cf380012a8176c2456d01ef483242abbbcf8c", size = 24000, upload-time = "2025-11-28T02:30:17.861Z" } wheels = [ @@ -1050,55 +1008,57 @@ wheels = [ [[package]] name = "ipdb" -version = "0.13.0" +version = "0.13.13" source = { registry = "https://pypi.org/simple" } dependencies = [ + { name = "decorator" }, { name = "ipython" }, - { name = "setuptools" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b1/a6/4347f7dd5621961bd6f9a1de3e25692b4231a615132347667ba603f65da6/ipdb-0.13.0.tar.gz", hash = "sha256:b90f1f661028af17c5043b4ea4534bc2f303d1f23b0c762a08923c7c454d7a59", size = 13840, upload-time = "2020-02-28T13:59:48.788Z" } +sdist = { url = "https://files.pythonhosted.org/packages/3d/1b/7e07e7b752017f7693a0f4d41c13e5ca29ce8cbcfdcc1fd6c4ad8c0a27a0/ipdb-0.13.13.tar.gz", hash = "sha256:e3ac6018ef05126d442af680aad863006ec19d02290561ac88b8b1c0b0cfc726", size = 17042, upload-time = "2023-03-09T15:40:57.487Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/4c/b075da0092003d9a55cf2ecc1cae9384a1ca4f650d51b00fc59875fe76f6/ipdb-0.13.13-py3-none-any.whl", hash = "sha256:45529994741c4ab6d2388bfa5d7b725c2cf7fe9deffabdb8a6113aa5ed449ed4", size = 12130, upload-time = "2023-03-09T15:40:55.021Z" }, +] [[package]] name = "ipython" -version = "8.0.1" +version = "9.11.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "appnope", marker = "sys_platform == 'darwin'" }, - { name = "backcall" }, - { name = "black" }, { name = "colorama", marker = "sys_platform == 'win32'" }, { name = "decorator" }, + { name = "ipython-pygments-lexers" }, { name = "jedi" }, { name = "matplotlib-inline" }, - { name = "pexpect", marker = "sys_platform != 'win32'" }, - { name = "pickleshare" }, + { name = "pexpect", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, { name = "prompt-toolkit" }, { name = "pygments" }, - { name = "setuptools" }, { name = "stack-data" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c2/4f/67e0c9ab885a5ba54b6dfe5f630df70b73a2de5ef04c402e0691c1936273/ipython-8.0.1.tar.gz", hash = "sha256:ab564d4521ea8ceaac26c3a2c6e5ddbca15c8848fd5a5cc325f960da88d42974", size = 5306811, upload-time = "2022-01-19T13:27:48.392Z" } +sdist = { url = "https://files.pythonhosted.org/packages/86/28/a4698eda5a8928a45d6b693578b135b753e14fa1c2b36ee9441e69a45576/ipython-9.11.0.tar.gz", hash = "sha256:2a94bc4406b22ecc7e4cb95b98450f3ea493a76bec8896cda11b78d7752a6667", size = 4427354, upload-time = "2026-03-05T08:57:30.549Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ef/88/3e505ba3accd31f464f92dcd8c229f2d0d7af14ead91c1899c52648336be/ipython-8.0.1-py3-none-any.whl", hash = "sha256:c503a0dd6ccac9c8c260b211f2dd4479c042b49636b097cc9a0d55fe62dff64c", size = 747494, upload-time = "2022-01-19T13:27:45.266Z" }, + { url = "https://files.pythonhosted.org/packages/b2/90/45c72becc57158facc6a6404f663b77bbcea2519ca57f760e2879ae1315d/ipython-9.11.0-py3-none-any.whl", hash = "sha256:6922d5bcf944c6e525a76a0a304451b60a2b6f875e86656d8bc2dfda5d710e19", size = 624222, upload-time = "2026-03-05T08:57:28.94Z" }, ] [[package]] -name = "isodate" -version = "0.7.2" +name = "ipython-pygments-lexers" +version = "1.1.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/54/4d/e940025e2ce31a8ce1202635910747e5a87cc3a6a6bb2d00973375014749/isodate-0.7.2.tar.gz", hash = "sha256:4cd1aa0f43ca76f4a6c6c0292a85f40b35ec2e43e315b59f06e6d32171a953e6", size = 29705, upload-time = "2024-10-08T23:04:11.5Z" } +dependencies = [ + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ef/4c/5dd1d8af08107f88c7f741ead7a40854b8ac24ddf9ae850afbcf698aa552/ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81", size = 8393, upload-time = "2025-01-17T11:24:34.505Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/15/aa/0aca39a37d3c7eb941ba736ede56d689e7be91cab5d9ca846bde3999eba6/isodate-0.7.2-py3-none-any.whl", hash = "sha256:28009937d8031054830160fce6d409ed342816b543597cece116d966c6d99e15", size = 22320, upload-time = "2024-10-08T23:04:09.501Z" }, + { url = "https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c", size = 8074, upload-time = "2025-01-17T11:24:33.271Z" }, ] [[package]] -name = "itypes" -version = "1.2.0" +name = "isodate" +version = "0.7.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0e/53/764524b3907d0af00523f8794daca181c08ca7cb32ceee25a0754d5e63a5/itypes-1.2.0.tar.gz", hash = "sha256:af886f129dea4a2a1e3d36595a2d139589e4dd287f5cab0b40e799ee81570ff1", size = 4355, upload-time = "2020-04-19T21:50:13.144Z" } +sdist = { url = "https://files.pythonhosted.org/packages/54/4d/e940025e2ce31a8ce1202635910747e5a87cc3a6a6bb2d00973375014749/isodate-0.7.2.tar.gz", hash = "sha256:4cd1aa0f43ca76f4a6c6c0292a85f40b35ec2e43e315b59f06e6d32171a953e6", size = 29705, upload-time = "2024-10-08T23:04:11.5Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/3f/bb/3bd99c7cd34d4a123b2903e16da364f6d2078b1c3a3530a8ad105c668104/itypes-1.2.0-py2.py3-none-any.whl", hash = "sha256:03da6872ca89d29aef62773672b2d408f490f80db48b23079a4b194c86dd04c6", size = 4756, upload-time = "2020-04-19T21:50:11.704Z" }, + { url = "https://files.pythonhosted.org/packages/15/aa/0aca39a37d3c7eb941ba736ede56d689e7be91cab5d9ca846bde3999eba6/isodate-0.7.2-py3-none-any.whl", hash = "sha256:28009937d8031054830160fce6d409ed342816b543597cece116d966c6d99e15", size = 22320, upload-time = "2024-10-08T23:04:09.501Z" }, ] [[package]] @@ -1115,14 +1075,14 @@ wheels = [ [[package]] name = "jinja2" -version = "3.1.4" +version = "3.1.6" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markupsafe" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ed/55/39036716d19cab0747a5020fc7e907f362fbf48c984b14e62127f7e68e5d/jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369", size = 240245, upload-time = "2024-05-05T23:42:02.455Z" } +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload-time = "2025-03-05T20:05:02.478Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/31/80/3a54838c3fb461f6fec263ebf3a3a41771bd05190238de3486aae8540c36/jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d", size = 133271, upload-time = "2024-05-05T23:41:59.928Z" }, + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" }, ] [[package]] @@ -1197,14 +1157,17 @@ wheels = [ [[package]] name = "kombu" -version = "4.6.11" +version = "5.6.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "amqp" }, + { name = "packaging" }, + { name = "tzdata" }, + { name = "vine" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/45/e1/00f2e3f6f5575aa2f7ee41e2fd884ce573f8146e136bde37daf45ef7ca5e/kombu-4.6.11.tar.gz", hash = "sha256:ca1b45faac8c0b18493d02a8571792f3c40291cf2bcf1f55afed3d8f3aa7ba74", size = 406968, upload-time = "2020-06-24T07:11:39.261Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b6/a5/607e533ed6c83ae1a696969b8e1c137dfebd5759a2e9682e26ff1b97740b/kombu-5.6.2.tar.gz", hash = "sha256:8060497058066c6f5aed7c26d7cd0d3b574990b09de842a8c5aaed0b92cc5a55", size = 472594, upload-time = "2025-12-29T20:30:07.779Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/9e/34/3eea6a3a9ff81b0c7ddbdceb22a1ffc1b5907d863f27ca19a68777d2211d/kombu-4.6.11-py2.py3-none-any.whl", hash = "sha256:be48cdffb54a2194d93ad6533d73f69408486483d189fe9f5990ee24255b0e0a", size = 184431, upload-time = "2020-06-24T07:11:18.413Z" }, + { url = "https://files.pythonhosted.org/packages/fb/0f/834427d8c03ff1d7e867d3db3d176470c64871753252b21b4f4897d1fa45/kombu-5.6.2-py3-none-any.whl", hash = "sha256:efcfc559da324d41d61ca311b0c64965ea35b4c55cc04ee36e55386145dace93", size = 214219, upload-time = "2025-12-29T20:30:05.74Z" }, ] [[package]] @@ -1222,11 +1185,11 @@ wheels = [ [[package]] name = "markdown" -version = "2.6.11" +version = "3.10.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b3/73/fc5c850f44af5889192dff783b7b0d8f3fe8d30b65c8e3f78f8f0265fecf/Markdown-2.6.11.tar.gz", hash = "sha256:a856869c7ff079ad84a3e19cd87a64998350c2b94e9e08e44270faef33400f81", size = 274132, upload-time = "2018-01-05T00:44:45.566Z" } +sdist = { url = "https://files.pythonhosted.org/packages/2b/f4/69fa6ed85ae003c2378ffa8f6d2e3234662abd02c10d216c0ba96081a238/markdown-3.10.2.tar.gz", hash = "sha256:994d51325d25ad8aa7ce4ebaec003febcce822c3f8c911e3b17c52f7f589f950", size = 368805, upload-time = "2026-02-09T14:57:26.942Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6d/7d/488b90f470b96531a3f5788cf12a93332f543dbab13c423a5e7ce96a0493/Markdown-2.6.11-py2.py3-none-any.whl", hash = "sha256:9ba587db9daee7ec761cfc656272be6aabe2ed300fece21208e4aab2e457bc8f", size = 78419, upload-time = "2018-01-05T00:44:43.316Z" }, + { url = "https://files.pythonhosted.org/packages/de/1f/77fa3081e4f66ca3576c896ae5d31c3002ac6607f9747d2e3aa49227e464/markdown-3.10.2-py3-none-any.whl", hash = "sha256:e91464b71ae3ee7afd3017d9f358ef0baf158fd9a298db92f1d4761133824c36", size = 108180, upload-time = "2026-02-09T14:57:25.787Z" }, ] [[package]] @@ -1235,17 +1198,28 @@ version = "3.0.3" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/7e/99/7690b6d4034fffd95959cbe0c02de8deb3098cc577c67bb6a24fe5d7caa7/markupsafe-3.0.3.tar.gz", hash = "sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698", size = 80313, upload-time = "2025-09-27T18:37:40.426Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e8/4b/3541d44f3937ba468b75da9eebcae497dcf67adb65caa16760b0a6807ebb/markupsafe-3.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2f981d352f04553a7171b8e44369f2af4055f888dfb147d55e42d29e29e74559", size = 11631, upload-time = "2025-09-27T18:36:05.558Z" }, - { url = "https://files.pythonhosted.org/packages/98/1b/fbd8eed11021cabd9226c37342fa6ca4e8a98d8188a8d9b66740494960e4/markupsafe-3.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e1c1493fb6e50ab01d20a22826e57520f1284df32f2d8601fdd90b6304601419", size = 12057, upload-time = "2025-09-27T18:36:07.165Z" }, - { url = "https://files.pythonhosted.org/packages/40/01/e560d658dc0bb8ab762670ece35281dec7b6c1b33f5fbc09ebb57a185519/markupsafe-3.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1ba88449deb3de88bd40044603fafffb7bc2b055d626a330323a9ed736661695", size = 22050, upload-time = "2025-09-27T18:36:08.005Z" }, - { url = "https://files.pythonhosted.org/packages/af/cd/ce6e848bbf2c32314c9b237839119c5a564a59725b53157c856e90937b7a/markupsafe-3.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f42d0984e947b8adf7dd6dde396e720934d12c506ce84eea8476409563607591", size = 20681, upload-time = "2025-09-27T18:36:08.881Z" }, - { url = "https://files.pythonhosted.org/packages/c9/2a/b5c12c809f1c3045c4d580b035a743d12fcde53cf685dbc44660826308da/markupsafe-3.0.3-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c0c0b3ade1c0b13b936d7970b1d37a57acde9199dc2aecc4c336773e1d86049c", size = 20705, upload-time = "2025-09-27T18:36:10.131Z" }, - { url = "https://files.pythonhosted.org/packages/cf/e3/9427a68c82728d0a88c50f890d0fc072a1484de2f3ac1ad0bfc1a7214fd5/markupsafe-3.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:0303439a41979d9e74d18ff5e2dd8c43ed6c6001fd40e5bf2e43f7bd9bbc523f", size = 21524, upload-time = "2025-09-27T18:36:11.324Z" }, - { url = "https://files.pythonhosted.org/packages/bc/36/23578f29e9e582a4d0278e009b38081dbe363c5e7165113fad546918a232/markupsafe-3.0.3-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:d2ee202e79d8ed691ceebae8e0486bd9a2cd4794cec4824e1c99b6f5009502f6", size = 20282, upload-time = "2025-09-27T18:36:12.573Z" }, - { url = "https://files.pythonhosted.org/packages/56/21/dca11354e756ebd03e036bd8ad58d6d7168c80ce1fe5e75218e4945cbab7/markupsafe-3.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:177b5253b2834fe3678cb4a5f0059808258584c559193998be2601324fdeafb1", size = 20745, upload-time = "2025-09-27T18:36:13.504Z" }, - { url = "https://files.pythonhosted.org/packages/87/99/faba9369a7ad6e4d10b6a5fbf71fa2a188fe4a593b15f0963b73859a1bbd/markupsafe-3.0.3-cp310-cp310-win32.whl", hash = "sha256:2a15a08b17dd94c53a1da0438822d70ebcd13f8c3a95abe3a9ef9f11a94830aa", size = 14571, upload-time = "2025-09-27T18:36:14.779Z" }, - { url = "https://files.pythonhosted.org/packages/d6/25/55dc3ab959917602c96985cb1253efaa4ff42f71194bddeb61eb7278b8be/markupsafe-3.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:c4ffb7ebf07cfe8931028e3e4c85f0357459a3f9f9490886198848f4fa002ec8", size = 15056, upload-time = "2025-09-27T18:36:16.125Z" }, - { url = "https://files.pythonhosted.org/packages/d0/9e/0a02226640c255d1da0b8d12e24ac2aa6734da68bff14c05dd53b94a0fc3/markupsafe-3.0.3-cp310-cp310-win_arm64.whl", hash = "sha256:e2103a929dfa2fcaf9bb4e7c091983a49c9ac3b19c9061b6d5427dd7d14d81a1", size = 13932, upload-time = "2025-09-27T18:36:17.311Z" }, + { url = "https://files.pythonhosted.org/packages/38/2f/907b9c7bbba283e68f20259574b13d005c121a0fa4c175f9bed27c4597ff/markupsafe-3.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e1cf1972137e83c5d4c136c43ced9ac51d0e124706ee1c8aa8532c1287fa8795", size = 11622, upload-time = "2025-09-27T18:36:41.777Z" }, + { url = "https://files.pythonhosted.org/packages/9c/d9/5f7756922cdd676869eca1c4e3c0cd0df60ed30199ffd775e319089cb3ed/markupsafe-3.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:116bb52f642a37c115f517494ea5feb03889e04df47eeff5b130b1808ce7c219", size = 12029, upload-time = "2025-09-27T18:36:43.257Z" }, + { url = "https://files.pythonhosted.org/packages/00/07/575a68c754943058c78f30db02ee03a64b3c638586fba6a6dd56830b30a3/markupsafe-3.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:133a43e73a802c5562be9bbcd03d090aa5a1fe899db609c29e8c8d815c5f6de6", size = 24374, upload-time = "2025-09-27T18:36:44.508Z" }, + { url = "https://files.pythonhosted.org/packages/a9/21/9b05698b46f218fc0e118e1f8168395c65c8a2c750ae2bab54fc4bd4e0e8/markupsafe-3.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfcd093f13f0f0b7fdd0f198b90053bf7b2f02a3927a30e63f3ccc9df56b676", size = 22980, upload-time = "2025-09-27T18:36:45.385Z" }, + { url = "https://files.pythonhosted.org/packages/7f/71/544260864f893f18b6827315b988c146b559391e6e7e8f7252839b1b846a/markupsafe-3.0.3-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:509fa21c6deb7a7a273d629cf5ec029bc209d1a51178615ddf718f5918992ab9", size = 21990, upload-time = "2025-09-27T18:36:46.916Z" }, + { url = "https://files.pythonhosted.org/packages/c2/28/b50fc2f74d1ad761af2f5dcce7492648b983d00a65b8c0e0cb457c82ebbe/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4afe79fb3de0b7097d81da19090f4df4f8d3a2b3adaa8764138aac2e44f3af1", size = 23784, upload-time = "2025-09-27T18:36:47.884Z" }, + { url = "https://files.pythonhosted.org/packages/ed/76/104b2aa106a208da8b17a2fb72e033a5a9d7073c68f7e508b94916ed47a9/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:795e7751525cae078558e679d646ae45574b47ed6e7771863fcc079a6171a0fc", size = 21588, upload-time = "2025-09-27T18:36:48.82Z" }, + { url = "https://files.pythonhosted.org/packages/b5/99/16a5eb2d140087ebd97180d95249b00a03aa87e29cc224056274f2e45fd6/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8485f406a96febb5140bfeca44a73e3ce5116b2501ac54fe953e488fb1d03b12", size = 23041, upload-time = "2025-09-27T18:36:49.797Z" }, + { url = "https://files.pythonhosted.org/packages/19/bc/e7140ed90c5d61d77cea142eed9f9c303f4c4806f60a1044c13e3f1471d0/markupsafe-3.0.3-cp313-cp313-win32.whl", hash = "sha256:bdd37121970bfd8be76c5fb069c7751683bdf373db1ed6c010162b2a130248ed", size = 14543, upload-time = "2025-09-27T18:36:51.584Z" }, + { url = "https://files.pythonhosted.org/packages/05/73/c4abe620b841b6b791f2edc248f556900667a5a1cf023a6646967ae98335/markupsafe-3.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:9a1abfdc021a164803f4d485104931fb8f8c1efd55bc6b748d2f5774e78b62c5", size = 15113, upload-time = "2025-09-27T18:36:52.537Z" }, + { url = "https://files.pythonhosted.org/packages/f0/3a/fa34a0f7cfef23cf9500d68cb7c32dd64ffd58a12b09225fb03dd37d5b80/markupsafe-3.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:7e68f88e5b8799aa49c85cd116c932a1ac15caaa3f5db09087854d218359e485", size = 13911, upload-time = "2025-09-27T18:36:53.513Z" }, + { url = "https://files.pythonhosted.org/packages/e4/d7/e05cd7efe43a88a17a37b3ae96e79a19e846f3f456fe79c57ca61356ef01/markupsafe-3.0.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:218551f6df4868a8d527e3062d0fb968682fe92054e89978594c28e642c43a73", size = 11658, upload-time = "2025-09-27T18:36:54.819Z" }, + { url = "https://files.pythonhosted.org/packages/99/9e/e412117548182ce2148bdeacdda3bb494260c0b0184360fe0d56389b523b/markupsafe-3.0.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3524b778fe5cfb3452a09d31e7b5adefeea8c5be1d43c4f810ba09f2ceb29d37", size = 12066, upload-time = "2025-09-27T18:36:55.714Z" }, + { url = "https://files.pythonhosted.org/packages/bc/e6/fa0ffcda717ef64a5108eaa7b4f5ed28d56122c9a6d70ab8b72f9f715c80/markupsafe-3.0.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4e885a3d1efa2eadc93c894a21770e4bc67899e3543680313b09f139e149ab19", size = 25639, upload-time = "2025-09-27T18:36:56.908Z" }, + { url = "https://files.pythonhosted.org/packages/96/ec/2102e881fe9d25fc16cb4b25d5f5cde50970967ffa5dddafdb771237062d/markupsafe-3.0.3-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8709b08f4a89aa7586de0aadc8da56180242ee0ada3999749b183aa23df95025", size = 23569, upload-time = "2025-09-27T18:36:57.913Z" }, + { url = "https://files.pythonhosted.org/packages/4b/30/6f2fce1f1f205fc9323255b216ca8a235b15860c34b6798f810f05828e32/markupsafe-3.0.3-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b8512a91625c9b3da6f127803b166b629725e68af71f8184ae7e7d54686a56d6", size = 23284, upload-time = "2025-09-27T18:36:58.833Z" }, + { url = "https://files.pythonhosted.org/packages/58/47/4a0ccea4ab9f5dcb6f79c0236d954acb382202721e704223a8aafa38b5c8/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9b79b7a16f7fedff2495d684f2b59b0457c3b493778c9eed31111be64d58279f", size = 24801, upload-time = "2025-09-27T18:36:59.739Z" }, + { url = "https://files.pythonhosted.org/packages/6a/70/3780e9b72180b6fecb83a4814d84c3bf4b4ae4bf0b19c27196104149734c/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:12c63dfb4a98206f045aa9563db46507995f7ef6d83b2f68eda65c307c6829eb", size = 22769, upload-time = "2025-09-27T18:37:00.719Z" }, + { url = "https://files.pythonhosted.org/packages/98/c5/c03c7f4125180fc215220c035beac6b9cb684bc7a067c84fc69414d315f5/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8f71bc33915be5186016f675cd83a1e08523649b0e33efdb898db577ef5bb009", size = 23642, upload-time = "2025-09-27T18:37:01.673Z" }, + { url = "https://files.pythonhosted.org/packages/80/d6/2d1b89f6ca4bff1036499b1e29a1d02d282259f3681540e16563f27ebc23/markupsafe-3.0.3-cp313-cp313t-win32.whl", hash = "sha256:69c0b73548bc525c8cb9a251cddf1931d1db4d2258e9599c28c07ef3580ef354", size = 14612, upload-time = "2025-09-27T18:37:02.639Z" }, + { url = "https://files.pythonhosted.org/packages/2b/98/e48a4bfba0a0ffcf9925fe2d69240bfaa19c6f7507b8cd09c70684a53c1e/markupsafe-3.0.3-cp313-cp313t-win_amd64.whl", hash = "sha256:1b4b79e8ebf6b55351f0d91fe80f893b4743f104bff22e90697db1590e47a218", size = 15200, upload-time = "2025-09-27T18:37:03.582Z" }, + { url = "https://files.pythonhosted.org/packages/0e/72/e3cc540f351f316e9ed0f092757459afbc595824ca724cbc5a5d4263713f/markupsafe-3.0.3-cp313-cp313t-win_arm64.whl", hash = "sha256:ad2cf8aa28b8c020ab2fc8287b0f823d0a7d8630784c31e9ee5edea20f406287", size = 13973, upload-time = "2025-09-27T18:37:04.929Z" }, ] [[package]] @@ -1262,11 +1236,11 @@ wheels = [ [[package]] name = "mccabe" -version = "0.6.1" +version = "0.7.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/06/18/fa675aa501e11d6d6ca0ae73a101b2f3571a565e0f7d38e062eec18a91ee/mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f", size = 8612, upload-time = "2017-01-26T22:13:15.699Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e7/ff/0ffefdcac38932a54d2b5eed4e0ba8a408f215002cd178ad1df0f2806ff8/mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325", size = 9658, upload-time = "2022-01-24T01:14:51.113Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/87/89/479dc97e18549e21354893e4ee4ef36db1d237534982482c3681ee6e7b57/mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42", size = 8556, upload-time = "2017-01-26T22:13:14.36Z" }, + { url = "https://files.pythonhosted.org/packages/27/1a/1f68f9ba0c207934b35b86a8ca3aad8395a3d6dd7921c0686e23853ff5a9/mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e", size = 7350, upload-time = "2022-01-24T01:14:49.62Z" }, ] [[package]] @@ -1275,23 +1249,39 @@ version = "1.1.2" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/4d/f2/bfb55a6236ed8725a96b0aa3acbd0ec17588e6a2c3b62a93eb513ed8783f/msgpack-1.1.2.tar.gz", hash = "sha256:3b60763c1373dd60f398488069bcdc703cd08a711477b5d480eecc9f9626f47e", size = 173581, upload-time = "2025-10-08T09:15:56.596Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f5/a2/3b68a9e769db68668b25c6108444a35f9bd163bb848c0650d516761a59c0/msgpack-1.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0051fffef5a37ca2cd16978ae4f0aef92f164df86823871b5162812bebecd8e2", size = 81318, upload-time = "2025-10-08T09:14:38.722Z" }, - { url = "https://files.pythonhosted.org/packages/5b/e1/2b720cc341325c00be44e1ed59e7cfeae2678329fbf5aa68f5bda57fe728/msgpack-1.1.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a605409040f2da88676e9c9e5853b3449ba8011973616189ea5ee55ddbc5bc87", size = 83786, upload-time = "2025-10-08T09:14:40.082Z" }, - { url = "https://files.pythonhosted.org/packages/71/e5/c2241de64bfceac456b140737812a2ab310b10538a7b34a1d393b748e095/msgpack-1.1.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8b696e83c9f1532b4af884045ba7f3aa741a63b2bc22617293a2c6a7c645f251", size = 398240, upload-time = "2025-10-08T09:14:41.151Z" }, - { url = "https://files.pythonhosted.org/packages/b7/09/2a06956383c0fdebaef5aa9246e2356776f12ea6f2a44bd1368abf0e46c4/msgpack-1.1.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:365c0bbe981a27d8932da71af63ef86acc59ed5c01ad929e09a0b88c6294e28a", size = 406070, upload-time = "2025-10-08T09:14:42.821Z" }, - { url = "https://files.pythonhosted.org/packages/0e/74/2957703f0e1ef20637d6aead4fbb314330c26f39aa046b348c7edcf6ca6b/msgpack-1.1.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:41d1a5d875680166d3ac5c38573896453bbbea7092936d2e107214daf43b1d4f", size = 393403, upload-time = "2025-10-08T09:14:44.38Z" }, - { url = "https://files.pythonhosted.org/packages/a5/09/3bfc12aa90f77b37322fc33e7a8a7c29ba7c8edeadfa27664451801b9860/msgpack-1.1.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:354e81bcdebaab427c3df4281187edc765d5d76bfb3a7c125af9da7a27e8458f", size = 398947, upload-time = "2025-10-08T09:14:45.56Z" }, - { url = "https://files.pythonhosted.org/packages/4b/4f/05fcebd3b4977cb3d840f7ef6b77c51f8582086de5e642f3fefee35c86fc/msgpack-1.1.2-cp310-cp310-win32.whl", hash = "sha256:e64c8d2f5e5d5fda7b842f55dec6133260ea8f53c4257d64494c534f306bf7a9", size = 64769, upload-time = "2025-10-08T09:14:47.334Z" }, - { url = "https://files.pythonhosted.org/packages/d0/3e/b4547e3a34210956382eed1c85935fff7e0f9b98be3106b3745d7dec9c5e/msgpack-1.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:db6192777d943bdaaafb6ba66d44bf65aa0e9c5616fa1d2da9bb08828c6b39aa", size = 71293, upload-time = "2025-10-08T09:14:48.665Z" }, + { url = "https://files.pythonhosted.org/packages/6b/31/b46518ecc604d7edf3a4f94cb3bf021fc62aa301f0cb849936968164ef23/msgpack-1.1.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4efd7b5979ccb539c221a4c4e16aac1a533efc97f3b759bb5a5ac9f6d10383bf", size = 81212, upload-time = "2025-10-08T09:15:14.552Z" }, + { url = "https://files.pythonhosted.org/packages/92/dc/c385f38f2c2433333345a82926c6bfa5ecfff3ef787201614317b58dd8be/msgpack-1.1.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:42eefe2c3e2af97ed470eec850facbe1b5ad1d6eacdbadc42ec98e7dcf68b4b7", size = 84315, upload-time = "2025-10-08T09:15:15.543Z" }, + { url = "https://files.pythonhosted.org/packages/d3/68/93180dce57f684a61a88a45ed13047558ded2be46f03acb8dec6d7c513af/msgpack-1.1.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1fdf7d83102bf09e7ce3357de96c59b627395352a4024f6e2458501f158bf999", size = 412721, upload-time = "2025-10-08T09:15:16.567Z" }, + { url = "https://files.pythonhosted.org/packages/5d/ba/459f18c16f2b3fc1a1ca871f72f07d70c07bf768ad0a507a698b8052ac58/msgpack-1.1.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fac4be746328f90caa3cd4bc67e6fe36ca2bf61d5c6eb6d895b6527e3f05071e", size = 424657, upload-time = "2025-10-08T09:15:17.825Z" }, + { url = "https://files.pythonhosted.org/packages/38/f8/4398c46863b093252fe67368b44edc6c13b17f4e6b0e4929dbf0bdb13f23/msgpack-1.1.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:fffee09044073e69f2bad787071aeec727183e7580443dfeb8556cbf1978d162", size = 402668, upload-time = "2025-10-08T09:15:19.003Z" }, + { url = "https://files.pythonhosted.org/packages/28/ce/698c1eff75626e4124b4d78e21cca0b4cc90043afb80a507626ea354ab52/msgpack-1.1.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5928604de9b032bc17f5099496417f113c45bc6bc21b5c6920caf34b3c428794", size = 419040, upload-time = "2025-10-08T09:15:20.183Z" }, + { url = "https://files.pythonhosted.org/packages/67/32/f3cd1667028424fa7001d82e10ee35386eea1408b93d399b09fb0aa7875f/msgpack-1.1.2-cp313-cp313-win32.whl", hash = "sha256:a7787d353595c7c7e145e2331abf8b7ff1e6673a6b974ded96e6d4ec09f00c8c", size = 65037, upload-time = "2025-10-08T09:15:21.416Z" }, + { url = "https://files.pythonhosted.org/packages/74/07/1ed8277f8653c40ebc65985180b007879f6a836c525b3885dcc6448ae6cb/msgpack-1.1.2-cp313-cp313-win_amd64.whl", hash = "sha256:a465f0dceb8e13a487e54c07d04ae3ba131c7c5b95e2612596eafde1dccf64a9", size = 72631, upload-time = "2025-10-08T09:15:22.431Z" }, + { url = "https://files.pythonhosted.org/packages/e5/db/0314e4e2db56ebcf450f277904ffd84a7988b9e5da8d0d61ab2d057df2b6/msgpack-1.1.2-cp313-cp313-win_arm64.whl", hash = "sha256:e69b39f8c0aa5ec24b57737ebee40be647035158f14ed4b40e6f150077e21a84", size = 64118, upload-time = "2025-10-08T09:15:23.402Z" }, ] [[package]] -name = "mypy-extensions" -version = "1.1.0" +name = "nh3" +version = "0.3.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343, upload-time = "2025-04-22T14:54:24.164Z" } +sdist = { url = "https://files.pythonhosted.org/packages/cc/37/ab55eb2b05e334ff9a1ad52c556ace1f9c20a3f63613a165d384d5387657/nh3-0.3.3.tar.gz", hash = "sha256:185ed41b88c910b9ca8edc89ca3b4be688a12cb9de129d84befa2f74a0039fee", size = 18968, upload-time = "2026-02-14T09:35:15.664Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963, upload-time = "2025-04-22T14:54:22.983Z" }, + { url = "https://files.pythonhosted.org/packages/13/3e/aef8cf8e0419b530c95e96ae93a5078e9b36c1e6613eeb1df03a80d5194e/nh3-0.3.3-cp38-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:e8ee96156f7dfc6e30ecda650e480c5ae0a7d38f0c6fafc3c1c655e2500421d9", size = 1448640, upload-time = "2026-02-14T09:34:49.316Z" }, + { url = "https://files.pythonhosted.org/packages/ca/43/d2011a4f6c0272cb122eeff40062ee06bb2b6e57eabc3a5e057df0d582df/nh3-0.3.3-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45fe0d6a607264910daec30360c8a3b5b1500fd832d21b2da608256287bcb92d", size = 839405, upload-time = "2026-02-14T09:34:50.779Z" }, + { url = "https://files.pythonhosted.org/packages/f8/f3/965048510c1caf2a34ed04411a46a04a06eb05563cd06f1aa57b71eb2bc8/nh3-0.3.3-cp38-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5bc1d4b30ba1ba896669d944b6003630592665974bd11a3dc2f661bde92798a7", size = 825849, upload-time = "2026-02-14T09:34:52.622Z" }, + { url = "https://files.pythonhosted.org/packages/78/99/b4bbc6ad16329d8db2c2c320423f00b549ca3b129c2b2f9136be2606dbb0/nh3-0.3.3-cp38-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:f433a2dd66545aad4a720ad1b2150edcdca75bfff6f4e6f378ade1ec138d5e77", size = 1068303, upload-time = "2026-02-14T09:34:54.179Z" }, + { url = "https://files.pythonhosted.org/packages/3f/34/3420d97065aab1b35f3e93ce9c96c8ebd423ce86fe84dee3126790421a2a/nh3-0.3.3-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:52e973cb742e95b9ae1b35822ce23992428750f4b46b619fe86eba4205255b30", size = 1029316, upload-time = "2026-02-14T09:34:56.186Z" }, + { url = "https://files.pythonhosted.org/packages/f1/9a/99eda757b14e596fdb2ca5f599a849d9554181aa899274d0d183faef4493/nh3-0.3.3-cp38-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4c730617bdc15d7092dcc0469dc2826b914c8f874996d105b4bc3842a41c1cd9", size = 919944, upload-time = "2026-02-14T09:34:57.886Z" }, + { url = "https://files.pythonhosted.org/packages/6f/84/c0dc75c7fb596135f999e59a410d9f45bdabb989f1cb911f0016d22b747b/nh3-0.3.3-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e98fa3dbfd54e25487e36ba500bc29bca3a4cab4ffba18cfb1a35a2d02624297", size = 811461, upload-time = "2026-02-14T09:34:59.65Z" }, + { url = "https://files.pythonhosted.org/packages/7e/ec/b1bf57cab6230eec910e4863528dc51dcf21b57aaf7c88ee9190d62c9185/nh3-0.3.3-cp38-abi3-manylinux_2_31_riscv64.whl", hash = "sha256:3a62b8ae7c235481715055222e54c682422d0495a5c73326807d4e44c5d14691", size = 840360, upload-time = "2026-02-14T09:35:01.444Z" }, + { url = "https://files.pythonhosted.org/packages/37/5e/326ae34e904dde09af1de51219a611ae914111f0970f2f111f4f0188f57e/nh3-0.3.3-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fc305a2264868ec8fa16548296f803d8fd9c1fa66cd28b88b605b1bd06667c0b", size = 859872, upload-time = "2026-02-14T09:35:03.348Z" }, + { url = "https://files.pythonhosted.org/packages/09/38/7eba529ce17ab4d3790205da37deabb4cb6edcba15f27b8562e467f2fc97/nh3-0.3.3-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:90126a834c18af03bfd6ff9a027bfa6bbf0e238527bc780a24de6bd7cc1041e2", size = 1023550, upload-time = "2026-02-14T09:35:04.829Z" }, + { url = "https://files.pythonhosted.org/packages/05/a2/556fdecd37c3681b1edee2cf795a6799c6ed0a5551b2822636960d7e7651/nh3-0.3.3-cp38-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:24769a428e9e971e4ccfb24628f83aaa7dc3c8b41b130c8ddc1835fa1c924489", size = 1105212, upload-time = "2026-02-14T09:35:06.821Z" }, + { url = "https://files.pythonhosted.org/packages/dd/e3/5db0b0ad663234967d83702277094687baf7c498831a2d3ad3451c11770f/nh3-0.3.3-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:b7a18ee057761e455d58b9d31445c3e4b2594cff4ddb84d2e331c011ef46f462", size = 1069970, upload-time = "2026-02-14T09:35:08.504Z" }, + { url = "https://files.pythonhosted.org/packages/79/b2/2ea21b79c6e869581ce5f51549b6e185c4762233591455bf2a326fb07f3b/nh3-0.3.3-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5a4b2c1f3e6f3cbe7048e17f4fefad3f8d3e14cc0fd08fb8599e0d5653f6b181", size = 1047588, upload-time = "2026-02-14T09:35:09.911Z" }, + { url = "https://files.pythonhosted.org/packages/e2/92/2e434619e658c806d9c096eed2cdff9a883084299b7b19a3f0824eb8e63d/nh3-0.3.3-cp38-abi3-win32.whl", hash = "sha256:e974850b131fdffa75e7ad8e0d9c7a855b96227b093417fdf1bd61656e530f37", size = 616179, upload-time = "2026-02-14T09:35:11.366Z" }, + { url = "https://files.pythonhosted.org/packages/73/88/1ce287ef8649dc51365b5094bd3713b76454838140a32ab4f8349973883c/nh3-0.3.3-cp38-abi3-win_amd64.whl", hash = "sha256:2efd17c0355d04d39e6d79122b42662277ac10a17ea48831d90b46e5ef7e4fc0", size = 631159, upload-time = "2026-02-14T09:35:12.77Z" }, + { url = "https://files.pythonhosted.org/packages/31/f1/b4835dbde4fb06f29db89db027576d6014081cd278d9b6751facc3e69e43/nh3-0.3.3-cp38-abi3-win_arm64.whl", hash = "sha256:b838e619f483531483d26d889438e53a880510e832d2aafe73f93b7b1ac2bce2", size = 616645, upload-time = "2026-02-14T09:35:14.062Z" }, ] [[package]] @@ -1305,14 +1295,14 @@ wheels = [ [[package]] name = "oyaml" -version = "0.7" +version = "1.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/4d/e4/10a6f3d73affb5d59a1ee2b7663619dd84a8326b4ced38a261cd722dea02/oyaml-0.7.tar.gz", hash = "sha256:a0359138057aba8650f81d4456c553f145773c4a172d27c606429ca45e31f8d9", size = 2466, upload-time = "2018-09-13T15:49:24.147Z" } +sdist = { url = "https://files.pythonhosted.org/packages/00/71/c721b9a524f6fe6f73469c90ec44784f0b2b1b23c438da7cc7daac1ede76/oyaml-1.0.tar.gz", hash = "sha256:ed8fc096811f4763e1907dce29c35895d6d5936c4d0400fe843a91133d4744ed", size = 2914, upload-time = "2020-08-18T04:37:43.397Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7c/31/fb610d5c7a84f7100a31287726f10b6de532b2fc6d72ec89214c0736c5bf/oyaml-0.7-py2.py3-none-any.whl", hash = "sha256:1a81fbb1d5c3158bf6410577f11daf2b741a1b4eea2a47064e7ecd1fb2699425", size = 2841, upload-time = "2018-09-13T15:49:22.614Z" }, + { url = "https://files.pythonhosted.org/packages/37/aa/111610d8bf5b1bb7a295a048fc648cec346347a8b0be5881defd2d1b4a52/oyaml-1.0-py2.py3-none-any.whl", hash = "sha256:3a378747b7fb2425533d1ce41962d6921cda075d46bb480a158d45242d156323", size = 2992, upload-time = "2020-08-18T04:37:38.263Z" }, ] [[package]] @@ -1326,20 +1316,11 @@ wheels = [ [[package]] name = "parso" -version = "0.8.5" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d4/de/53e0bcf53d13e005bd8c92e7855142494f41171b34c2536b86187474184d/parso-0.8.5.tar.gz", hash = "sha256:034d7354a9a018bdce352f48b2a8a450f05e9d6ee85db84764e9b6bd96dafe5a", size = 401205, upload-time = "2025-08-23T15:15:28.028Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/16/32/f8e3c85d1d5250232a5d3477a2a28cc291968ff175caeadaf3cc19ce0e4a/parso-0.8.5-py2.py3-none-any.whl", hash = "sha256:646204b5ee239c396d040b90f9e272e9a8017c630092bf59980beb62fd033887", size = 106668, upload-time = "2025-08-23T15:15:25.663Z" }, -] - -[[package]] -name = "pathspec" -version = "1.0.4" +version = "0.8.6" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/fa/36/e27608899f9b8d4dff0617b2d9ab17ca5608956ca44461ac14ac48b44015/pathspec-1.0.4.tar.gz", hash = "sha256:0210e2ae8a21a9137c0d470578cb0e595af87edaa6ebf12ff176f14a02e0e645", size = 131200, upload-time = "2026-01-27T03:59:46.938Z" } +sdist = { url = "https://files.pythonhosted.org/packages/81/76/a1e769043c0c0c9fe391b702539d594731a4362334cdf4dc25d0c09761e7/parso-0.8.6.tar.gz", hash = "sha256:2b9a0332696df97d454fa67b81618fd69c35a7b90327cbe6ba5c92d2c68a7bfd", size = 401621, upload-time = "2026-02-09T15:45:24.425Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ef/3c/2c197d226f9ea224a9ab8d197933f9da0ae0aac5b6e0f884e2b8d9c8e9f7/pathspec-1.0.4-py3-none-any.whl", hash = "sha256:fb6ae2fd4e7c921a165808a552060e722767cfa526f99ca5156ed2ce45a5c723", size = 55206, upload-time = "2026-01-27T03:59:45.137Z" }, + { url = "https://files.pythonhosted.org/packages/b6/61/fae042894f4296ec49e3f193aff5d7c18440da9e48102c3315e1bc4519a7/parso-0.8.6-py2.py3-none-any.whl", hash = "sha256:2c549f800b70a5c4952197248825584cb00f033b29c692671d3bf08bf380baff", size = 106894, upload-time = "2026-02-09T15:45:21.391Z" }, ] [[package]] @@ -1354,48 +1335,37 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772, upload-time = "2023-11-25T06:56:14.81Z" }, ] -[[package]] -name = "pickleshare" -version = "0.7.5" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d8/b6/df3c1c9b616e9c0edbc4fbab6ddd09df9535849c64ba51fcb6531c32d4d8/pickleshare-0.7.5.tar.gz", hash = "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca", size = 6161, upload-time = "2018-09-25T19:17:37.249Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9a/41/220f49aaea88bc6fa6cba8d05ecf24676326156c23b991e80b3f2fc24c77/pickleshare-0.7.5-py2.py3-none-any.whl", hash = "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56", size = 6877, upload-time = "2018-09-25T19:17:35.817Z" }, -] - [[package]] name = "pillow" -version = "10.3.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ef/43/c50c17c5f7d438e836c169e343695534c38c77f60e7c90389bd77981bc21/pillow-10.3.0.tar.gz", hash = "sha256:9d2455fbf44c914840c793e89aa82d0e1763a14253a000743719ae5946814b2d", size = 46572854, upload-time = "2024-04-01T12:19:40.048Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e3/a4/cd3e60cda9ff7aa35eeb88325f8fb06898fb49523e367bacc35a5546317a/pillow-10.3.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:90b9e29824800e90c84e4022dd5cc16eb2d9605ee13f05d47641eb183cd73d45", size = 3528879, upload-time = "2024-04-01T12:17:01.553Z" }, - { url = "https://files.pythonhosted.org/packages/d4/0e/e344d6532f30b3b8de3d7a36fd05d5a43e4164afd1b41882529e766ef959/pillow-10.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a2c405445c79c3f5a124573a051062300936b0281fee57637e706453e452746c", size = 3352905, upload-time = "2024-04-01T12:17:05.1Z" }, - { url = "https://files.pythonhosted.org/packages/bb/a5/7958a4c0941b611a7706db510b9a85939346990df55ea05ecdfffb2b050c/pillow-10.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78618cdbccaa74d3f88d0ad6cb8ac3007f1a6fa5c6f19af64b55ca170bfa1edf", size = 4309181, upload-time = "2024-04-01T12:17:07.378Z" }, - { url = "https://files.pythonhosted.org/packages/01/d7/0d3021e6c2da8f2a5d6f7e97ebf0bf540e69ebe3d0384c207401bfe88ef5/pillow-10.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:261ddb7ca91fcf71757979534fb4c128448b5b4c55cb6152d280312062f69599", size = 4420421, upload-time = "2024-04-01T12:17:09.822Z" }, - { url = "https://files.pythonhosted.org/packages/88/3c/708d0fc162f3c7099254b488b80ec4aba2a7fbdb958c03279390cf6e1140/pillow-10.3.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:ce49c67f4ea0609933d01c0731b34b8695a7a748d6c8d186f95e7d085d2fe475", size = 4333092, upload-time = "2024-04-01T12:17:12.454Z" }, - { url = "https://files.pythonhosted.org/packages/b5/a2/7a09695dc636bf8d0a1b63022f58701177b7dc6fad30f6d6bc343e5473a4/pillow-10.3.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:b14f16f94cbc61215115b9b1236f9c18403c15dd3c52cf629072afa9d54c1cbf", size = 4499372, upload-time = "2024-04-01T12:17:15.022Z" }, - { url = "https://files.pythonhosted.org/packages/dd/b8/ff0e2a7f4bba4d0121bfcd06387ea28660d7497ea038f99640bb10015125/pillow-10.3.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d33891be6df59d93df4d846640f0e46f1a807339f09e79a8040bc887bdcd7ed3", size = 4528038, upload-time = "2024-04-01T12:17:18.102Z" }, - { url = "https://files.pythonhosted.org/packages/d5/9f/f19b94322353ca97e3b653255bf26b385ded07582f33eb6cd17f44d2b2bc/pillow-10.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b50811d664d392f02f7761621303eba9d1b056fb1868c8cdf4231279645c25f5", size = 4592192, upload-time = "2024-04-01T12:17:20.336Z" }, - { url = "https://files.pythonhosted.org/packages/51/ed/d419981dd1a5db1b594af2637d9cb1c7b09857c72465fbd26644ff385bfb/pillow-10.3.0-cp310-cp310-win32.whl", hash = "sha256:ca2870d5d10d8726a27396d3ca4cf7976cec0f3cb706debe88e3a5bd4610f7d2", size = 2217272, upload-time = "2024-04-01T12:17:22.281Z" }, - { url = "https://files.pythonhosted.org/packages/75/4c/2a850f886a2de7fbd25eedd2c40afec56db872b3e52491d8953698080505/pillow-10.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:f0d0591a0aeaefdaf9a5e545e7485f89910c977087e7de2b6c388aec32011e9f", size = 2531321, upload-time = "2024-04-01T12:17:24.267Z" }, - { url = "https://files.pythonhosted.org/packages/8d/9a/29ed468c7b6d10b14447e58a457fd77a9d3dbf4cb921768f3ab7d42833b5/pillow-10.3.0-cp310-cp310-win_arm64.whl", hash = "sha256:ccce24b7ad89adb5a1e34a6ba96ac2530046763912806ad4c247356a8f33a67b", size = 2229533, upload-time = "2024-04-01T12:17:26.837Z" }, - { url = "https://files.pythonhosted.org/packages/67/75/8264c4c1a25b4868050c4c1a923e4aae0bcce2f4032de6ec416decf37dee/pillow-10.3.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:6b02471b72526ab8a18c39cb7967b72d194ec53c1fd0a70b050565a0f366d355", size = 3482638, upload-time = "2024-04-01T12:19:07.399Z" }, - { url = "https://files.pythonhosted.org/packages/93/59/475343cdbc035cc5d7056c4c37cb1aaad5af05c9ae762508b6f8e8f27bf1/pillow-10.3.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8ab74c06ffdab957d7670c2a5a6e1a70181cd10b727cd788c4dd9005b6a8acd9", size = 3324189, upload-time = "2024-04-01T12:19:09.771Z" }, - { url = "https://files.pythonhosted.org/packages/73/9f/cf2523a1c3a98afd0052b11d12d866453a60151bfc5876620e88cd5be55c/pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:048eeade4c33fdf7e08da40ef402e748df113fd0b4584e32c4af74fe78baaeb2", size = 3414179, upload-time = "2024-04-01T12:19:11.781Z" }, - { url = "https://files.pythonhosted.org/packages/12/d1/010dca4eaaaeb9da9edb702d2f663b6dac98ff5e84ce09e9d82f96c6a9f3/pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e2ec1e921fd07c7cda7962bad283acc2f2a9ccc1b971ee4b216b75fad6f0463", size = 3468521, upload-time = "2024-04-01T12:19:14.105Z" }, - { url = "https://files.pythonhosted.org/packages/ff/4c/8c7e9830ccca3219cdf4c1bdd3b0664025c91034a29242aedec5a997cbfe/pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:4c8e73e99da7db1b4cad7f8d682cf6abad7844da39834c288fbfa394a47bbced", size = 3455893, upload-time = "2024-04-01T12:19:16.175Z" }, - { url = "https://files.pythonhosted.org/packages/aa/e3/a84acfed7c3ccb23ff58fa68ae9f3ec071d63cfb7885edb6eb48bbc907f7/pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:16563993329b79513f59142a6b02055e10514c1a8e86dca8b48a893e33cf91e3", size = 3557538, upload-time = "2024-04-01T12:19:18.778Z" }, - { url = "https://files.pythonhosted.org/packages/a9/f7/ff318e659997961f3b513d98c336a9aecc5432524610399f5aa7bf9d511e/pillow-10.3.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:dd78700f5788ae180b5ee8902c6aea5a5726bac7c364b202b4b3e3ba2d293170", size = 2531671, upload-time = "2024-04-01T12:19:21.075Z" }, -] - -[[package]] -name = "platformdirs" -version = "4.5.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/cf/86/0248f086a84f01b37aaec0fa567b397df1a119f73c16f6c7a9aac73ea309/platformdirs-4.5.1.tar.gz", hash = "sha256:61d5cdcc6065745cdd94f0f878977f8de9437be93de97c1c12f853c9c0cdcbda", size = 21715, upload-time = "2025-12-05T13:52:58.638Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/cb/28/3bfe2fa5a7b9c46fe7e13c97bda14c895fb10fa2ebf1d0abb90e0cea7ee1/platformdirs-4.5.1-py3-none-any.whl", hash = "sha256:d03afa3963c806a9bed9d5125c8f4cb2fdaf74a55ab60e5d59b3fde758104d31", size = 18731, upload-time = "2025-12-05T13:52:56.823Z" }, +version = "12.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1f/42/5c74462b4fd957fcd7b13b04fb3205ff8349236ea74c7c375766d6c82288/pillow-12.1.1.tar.gz", hash = "sha256:9ad8fa5937ab05218e2b6a4cff30295ad35afd2f83ac592e68c0d871bb0fdbc4", size = 46980264, upload-time = "2026-02-11T04:23:07.146Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d5/11/6db24d4bd7685583caeae54b7009584e38da3c3d4488ed4cd25b439de486/pillow-12.1.1-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:d242e8ac078781f1de88bf823d70c1a9b3c7950a44cdf4b7c012e22ccbcd8e4e", size = 4062689, upload-time = "2026-02-11T04:21:06.804Z" }, + { url = "https://files.pythonhosted.org/packages/33/c0/ce6d3b1fe190f0021203e0d9b5b99e57843e345f15f9ef22fcd43842fd21/pillow-12.1.1-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:02f84dfad02693676692746df05b89cf25597560db2857363a208e393429f5e9", size = 4138535, upload-time = "2026-02-11T04:21:08.452Z" }, + { url = "https://files.pythonhosted.org/packages/a0/c6/d5eb6a4fb32a3f9c21a8c7613ec706534ea1cf9f4b3663e99f0d83f6fca8/pillow-12.1.1-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:e65498daf4b583091ccbb2556c7000abf0f3349fcd57ef7adc9a84a394ed29f6", size = 3601364, upload-time = "2026-02-11T04:21:10.194Z" }, + { url = "https://files.pythonhosted.org/packages/14/a1/16c4b823838ba4c9c52c0e6bbda903a3fe5a1bdbf1b8eb4fff7156f3e318/pillow-12.1.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:6c6db3b84c87d48d0088943bf33440e0c42370b99b1c2a7989216f7b42eede60", size = 5262561, upload-time = "2026-02-11T04:21:11.742Z" }, + { url = "https://files.pythonhosted.org/packages/bb/ad/ad9dc98ff24f485008aa5cdedaf1a219876f6f6c42a4626c08bc4e80b120/pillow-12.1.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:8b7e5304e34942bf62e15184219a7b5ad4ff7f3bb5cca4d984f37df1a0e1aee2", size = 4657460, upload-time = "2026-02-11T04:21:13.786Z" }, + { url = "https://files.pythonhosted.org/packages/9e/1b/f1a4ea9a895b5732152789326202a82464d5254759fbacae4deea3069334/pillow-12.1.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:18e5bddd742a44b7e6b1e773ab5db102bd7a94c32555ba656e76d319d19c3850", size = 6232698, upload-time = "2026-02-11T04:21:15.949Z" }, + { url = "https://files.pythonhosted.org/packages/95/f4/86f51b8745070daf21fd2e5b1fe0eb35d4db9ca26e6d58366562fb56a743/pillow-12.1.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fc44ef1f3de4f45b50ccf9136999d71abb99dca7706bc75d222ed350b9fd2289", size = 8041706, upload-time = "2026-02-11T04:21:17.723Z" }, + { url = "https://files.pythonhosted.org/packages/29/9b/d6ecd956bb1266dd1045e995cce9b8d77759e740953a1c9aad9502a0461e/pillow-12.1.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5a8eb7ed8d4198bccbd07058416eeec51686b498e784eda166395a23eb99138e", size = 6346621, upload-time = "2026-02-11T04:21:19.547Z" }, + { url = "https://files.pythonhosted.org/packages/71/24/538bff45bde96535d7d998c6fed1a751c75ac7c53c37c90dc2601b243893/pillow-12.1.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:47b94983da0c642de92ced1702c5b6c292a84bd3a8e1d1702ff923f183594717", size = 7038069, upload-time = "2026-02-11T04:21:21.378Z" }, + { url = "https://files.pythonhosted.org/packages/94/0e/58cb1a6bc48f746bc4cb3adb8cabff73e2742c92b3bf7a220b7cf69b9177/pillow-12.1.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:518a48c2aab7ce596d3bf79d0e275661b846e86e4d0e7dec34712c30fe07f02a", size = 6460040, upload-time = "2026-02-11T04:21:23.148Z" }, + { url = "https://files.pythonhosted.org/packages/6c/57/9045cb3ff11eeb6c1adce3b2d60d7d299d7b273a2e6c8381a524abfdc474/pillow-12.1.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a550ae29b95c6dc13cf69e2c9dc5747f814c54eeb2e32d683e5e93af56caa029", size = 7164523, upload-time = "2026-02-11T04:21:25.01Z" }, + { url = "https://files.pythonhosted.org/packages/73/f2/9be9cb99f2175f0d4dbadd6616ce1bf068ee54a28277ea1bf1fbf729c250/pillow-12.1.1-cp313-cp313-win32.whl", hash = "sha256:a003d7422449f6d1e3a34e3dd4110c22148336918ddbfc6a32581cd54b2e0b2b", size = 6332552, upload-time = "2026-02-11T04:21:27.238Z" }, + { url = "https://files.pythonhosted.org/packages/3f/eb/b0834ad8b583d7d9d42b80becff092082a1c3c156bb582590fcc973f1c7c/pillow-12.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:344cf1e3dab3be4b1fa08e449323d98a2a3f819ad20f4b22e77a0ede31f0faa1", size = 7040108, upload-time = "2026-02-11T04:21:29.462Z" }, + { url = "https://files.pythonhosted.org/packages/d5/7d/fc09634e2aabdd0feabaff4a32f4a7d97789223e7c2042fd805ea4b4d2c2/pillow-12.1.1-cp313-cp313-win_arm64.whl", hash = "sha256:5c0dd1636633e7e6a0afe7bf6a51a14992b7f8e60de5789018ebbdfae55b040a", size = 2453712, upload-time = "2026-02-11T04:21:31.072Z" }, + { url = "https://files.pythonhosted.org/packages/19/2a/b9d62794fc8a0dd14c1943df68347badbd5511103e0d04c035ffe5cf2255/pillow-12.1.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0330d233c1a0ead844fc097a7d16c0abff4c12e856c0b325f231820fee1f39da", size = 5264880, upload-time = "2026-02-11T04:21:32.865Z" }, + { url = "https://files.pythonhosted.org/packages/26/9d/e03d857d1347fa5ed9247e123fcd2a97b6220e15e9cb73ca0a8d91702c6e/pillow-12.1.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5dae5f21afb91322f2ff791895ddd8889e5e947ff59f71b46041c8ce6db790bc", size = 4660616, upload-time = "2026-02-11T04:21:34.97Z" }, + { url = "https://files.pythonhosted.org/packages/f7/ec/8a6d22afd02570d30954e043f09c32772bfe143ba9285e2fdb11284952cd/pillow-12.1.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2e0c664be47252947d870ac0d327fea7e63985a08794758aa8af5b6cb6ec0c9c", size = 6269008, upload-time = "2026-02-11T04:21:36.623Z" }, + { url = "https://files.pythonhosted.org/packages/3d/1d/6d875422c9f28a4a361f495a5f68d9de4a66941dc2c619103ca335fa6446/pillow-12.1.1-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:691ab2ac363b8217f7d31b3497108fb1f50faab2f75dfb03284ec2f217e87bf8", size = 8073226, upload-time = "2026-02-11T04:21:38.585Z" }, + { url = "https://files.pythonhosted.org/packages/a1/cd/134b0b6ee5eda6dc09e25e24b40fdafe11a520bc725c1d0bbaa5e00bf95b/pillow-12.1.1-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e9e8064fb1cc019296958595f6db671fba95209e3ceb0c4734c9baf97de04b20", size = 6380136, upload-time = "2026-02-11T04:21:40.562Z" }, + { url = "https://files.pythonhosted.org/packages/7a/a9/7628f013f18f001c1b98d8fffe3452f306a70dc6aba7d931019e0492f45e/pillow-12.1.1-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:472a8d7ded663e6162dafdf20015c486a7009483ca671cece7a9279b512fcb13", size = 7067129, upload-time = "2026-02-11T04:21:42.521Z" }, + { url = "https://files.pythonhosted.org/packages/1e/f8/66ab30a2193b277785601e82ee2d49f68ea575d9637e5e234faaa98efa4c/pillow-12.1.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:89b54027a766529136a06cfebeecb3a04900397a3590fd252160b888479517bf", size = 6491807, upload-time = "2026-02-11T04:21:44.22Z" }, + { url = "https://files.pythonhosted.org/packages/da/0b/a877a6627dc8318fdb84e357c5e1a758c0941ab1ddffdafd231983788579/pillow-12.1.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:86172b0831b82ce4f7877f280055892b31179e1576aa00d0df3bb1bbf8c3e524", size = 7190954, upload-time = "2026-02-11T04:21:46.114Z" }, + { url = "https://files.pythonhosted.org/packages/83/43/6f732ff85743cf746b1361b91665d9f5155e1483817f693f8d57ea93147f/pillow-12.1.1-cp313-cp313t-win32.whl", hash = "sha256:44ce27545b6efcf0fdbdceb31c9a5bdea9333e664cda58a7e674bb74608b3986", size = 6336441, upload-time = "2026-02-11T04:21:48.22Z" }, + { url = "https://files.pythonhosted.org/packages/3b/44/e865ef3986611bb75bfabdf94a590016ea327833f434558801122979cd0e/pillow-12.1.1-cp313-cp313t-win_amd64.whl", hash = "sha256:a285e3eb7a5a45a2ff504e31f4a8d1b12ef62e84e5411c6804a42197c1cf586c", size = 7045383, upload-time = "2026-02-11T04:21:50.015Z" }, + { url = "https://files.pythonhosted.org/packages/a8/c6/f4fb24268d0c6908b9f04143697ea18b0379490cb74ba9e8d41b898bd005/pillow-12.1.1-cp313-cp313t-win_arm64.whl", hash = "sha256:cc7d296b5ea4d29e6570dabeaed58d31c3fea35a633a69679fb03d7664f43fb3", size = 2456104, upload-time = "2026-02-11T04:21:51.633Z" }, ] [[package]] @@ -1425,17 +1395,17 @@ version = "2.9.11" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/ac/6c/8767aaa597ba424643dc87348c6f1754dd9f48e80fdc1b9f7ca5c3a7c213/psycopg2-binary-2.9.11.tar.gz", hash = "sha256:b6aed9e096bf63f9e75edf2581aa9a7e7186d97ab5c177aa6c87797cd591236c", size = 379620, upload-time = "2025-10-10T11:14:48.041Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6a/f2/8e377d29c2ecf99f6062d35ea606b036e8800720eccfec5fe3dd672c2b24/psycopg2_binary-2.9.11-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d6fe6b47d0b42ce1c9f1fa3e35bb365011ca22e39db37074458f27921dca40f2", size = 3756506, upload-time = "2025-10-10T11:10:30.144Z" }, - { url = "https://files.pythonhosted.org/packages/24/cc/dc143ea88e4ec9d386106cac05023b69668bd0be20794c613446eaefafe5/psycopg2_binary-2.9.11-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a6c0e4262e089516603a09474ee13eabf09cb65c332277e39af68f6233911087", size = 3863943, upload-time = "2025-10-10T11:10:34.586Z" }, - { url = "https://files.pythonhosted.org/packages/8c/df/16848771155e7c419c60afeb24950b8aaa3ab09c0a091ec3ccca26a574d0/psycopg2_binary-2.9.11-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c47676e5b485393f069b4d7a811267d3168ce46f988fa602658b8bb901e9e64d", size = 4410873, upload-time = "2025-10-10T11:10:38.951Z" }, - { url = "https://files.pythonhosted.org/packages/43/79/5ef5f32621abd5a541b89b04231fe959a9b327c874a1d41156041c75494b/psycopg2_binary-2.9.11-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:a28d8c01a7b27a1e3265b11250ba7557e5f72b5ee9e5f3a2fa8d2949c29bf5d2", size = 4468016, upload-time = "2025-10-10T11:10:43.319Z" }, - { url = "https://files.pythonhosted.org/packages/f0/9b/d7542d0f7ad78f57385971f426704776d7b310f5219ed58da5d605b1892e/psycopg2_binary-2.9.11-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5f3f2732cf504a1aa9e9609d02f79bea1067d99edf844ab92c247bbca143303b", size = 4164996, upload-time = "2025-10-10T11:10:46.705Z" }, - { url = "https://files.pythonhosted.org/packages/14/ed/e409388b537fa7414330687936917c522f6a77a13474e4238219fcfd9a84/psycopg2_binary-2.9.11-cp310-cp310-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:865f9945ed1b3950d968ec4690ce68c55019d79e4497366d36e090327ce7db14", size = 3981881, upload-time = "2025-10-30T02:54:57.182Z" }, - { url = "https://files.pythonhosted.org/packages/bf/30/50e330e63bb05efc6fa7c1447df3e08954894025ca3dcb396ecc6739bc26/psycopg2_binary-2.9.11-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:91537a8df2bde69b1c1db01d6d944c831ca793952e4f57892600e96cee95f2cd", size = 3650857, upload-time = "2025-10-10T11:10:50.112Z" }, - { url = "https://files.pythonhosted.org/packages/f0/e0/4026e4c12bb49dd028756c5b0bc4c572319f2d8f1c9008e0dad8cc9addd7/psycopg2_binary-2.9.11-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:4dca1f356a67ecb68c81a7bc7809f1569ad9e152ce7fd02c2f2036862ca9f66b", size = 3296063, upload-time = "2025-10-10T11:10:54.089Z" }, - { url = "https://files.pythonhosted.org/packages/2c/34/eb172be293c886fef5299fe5c3fcf180a05478be89856067881007934a7c/psycopg2_binary-2.9.11-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:0da4de5c1ac69d94ed4364b6cbe7190c1a70d325f112ba783d83f8440285f152", size = 3043464, upload-time = "2025-10-30T02:55:02.483Z" }, - { url = "https://files.pythonhosted.org/packages/18/1c/532c5d2cb11986372f14b798a95f2eaafe5779334f6a80589a68b5fcf769/psycopg2_binary-2.9.11-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:37d8412565a7267f7d79e29ab66876e55cb5e8e7b3bbf94f8206f6795f8f7e7e", size = 3345378, upload-time = "2025-10-10T11:11:01.039Z" }, - { url = "https://files.pythonhosted.org/packages/70/e7/de420e1cf16f838e1fa17b1120e83afff374c7c0130d088dba6286fcf8ea/psycopg2_binary-2.9.11-cp310-cp310-win_amd64.whl", hash = "sha256:c665f01ec8ab273a61c62beeb8cce3014c214429ced8a308ca1fc410ecac3a39", size = 2713904, upload-time = "2025-10-10T11:11:04.81Z" }, + { url = "https://files.pythonhosted.org/packages/ff/a8/a2709681b3ac11b0b1786def10006b8995125ba268c9a54bea6f5ae8bd3e/psycopg2_binary-2.9.11-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b8fb3db325435d34235b044b199e56cdf9ff41223a4b9752e8576465170bb38c", size = 3756572, upload-time = "2025-10-10T11:12:32.873Z" }, + { url = "https://files.pythonhosted.org/packages/62/e1/c2b38d256d0dafd32713e9f31982a5b028f4a3651f446be70785f484f472/psycopg2_binary-2.9.11-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:366df99e710a2acd90efed3764bb1e28df6c675d33a7fb40df9b7281694432ee", size = 3864529, upload-time = "2025-10-10T11:12:36.791Z" }, + { url = "https://files.pythonhosted.org/packages/11/32/b2ffe8f3853c181e88f0a157c5fb4e383102238d73c52ac6d93a5c8bffe6/psycopg2_binary-2.9.11-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8c55b385daa2f92cb64b12ec4536c66954ac53654c7f15a203578da4e78105c0", size = 4411242, upload-time = "2025-10-10T11:12:42.388Z" }, + { url = "https://files.pythonhosted.org/packages/10/04/6ca7477e6160ae258dc96f67c371157776564679aefd247b66f4661501a2/psycopg2_binary-2.9.11-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:c0377174bf1dd416993d16edc15357f6eb17ac998244cca19bc67cdc0e2e5766", size = 4468258, upload-time = "2025-10-10T11:12:48.654Z" }, + { url = "https://files.pythonhosted.org/packages/3c/7e/6a1a38f86412df101435809f225d57c1a021307dd0689f7a5e7fe83588b1/psycopg2_binary-2.9.11-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5c6ff3335ce08c75afaed19e08699e8aacf95d4a260b495a4a8545244fe2ceb3", size = 4166295, upload-time = "2025-10-10T11:12:52.525Z" }, + { url = "https://files.pythonhosted.org/packages/f2/7d/c07374c501b45f3579a9eb761cbf2604ddef3d96ad48679112c2c5aa9c25/psycopg2_binary-2.9.11-cp313-cp313-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:84011ba3109e06ac412f95399b704d3d6950e386b7994475b231cf61eec2fc1f", size = 3983133, upload-time = "2025-10-30T02:55:24.329Z" }, + { url = "https://files.pythonhosted.org/packages/82/56/993b7104cb8345ad7d4516538ccf8f0d0ac640b1ebd8c754a7b024e76878/psycopg2_binary-2.9.11-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ba34475ceb08cccbdd98f6b46916917ae6eeb92b5ae111df10b544c3a4621dc4", size = 3652383, upload-time = "2025-10-10T11:12:56.387Z" }, + { url = "https://files.pythonhosted.org/packages/2d/ac/eaeb6029362fd8d454a27374d84c6866c82c33bfc24587b4face5a8e43ef/psycopg2_binary-2.9.11-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:b31e90fdd0f968c2de3b26ab014314fe814225b6c324f770952f7d38abf17e3c", size = 3298168, upload-time = "2025-10-10T11:13:00.403Z" }, + { url = "https://files.pythonhosted.org/packages/2b/39/50c3facc66bded9ada5cbc0de867499a703dc6bca6be03070b4e3b65da6c/psycopg2_binary-2.9.11-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:d526864e0f67f74937a8fce859bd56c979f5e2ec57ca7c627f5f1071ef7fee60", size = 3044712, upload-time = "2025-10-30T02:55:27.975Z" }, + { url = "https://files.pythonhosted.org/packages/9c/8e/b7de019a1f562f72ada81081a12823d3c1590bedc48d7d2559410a2763fe/psycopg2_binary-2.9.11-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:04195548662fa544626c8ea0f06561eb6203f1984ba5b4562764fbeb4c3d14b1", size = 3347549, upload-time = "2025-10-10T11:13:03.971Z" }, + { url = "https://files.pythonhosted.org/packages/80/2d/1bb683f64737bbb1f86c82b7359db1eb2be4e2c0c13b947f80efefa7d3e5/psycopg2_binary-2.9.11-cp313-cp313-win_amd64.whl", hash = "sha256:efff12b432179443f54e230fdf60de1f6cc726b6c832db8701227d089310e8aa", size = 2714215, upload-time = "2025-10-10T11:13:07.14Z" }, ] [[package]] @@ -1458,11 +1428,11 @@ wheels = [ [[package]] name = "pycodestyle" -version = "2.6.0" +version = "2.14.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bb/82/0df047a5347d607be504ad5faa255caa7919562962b934f9372b157e8a70/pycodestyle-2.6.0.tar.gz", hash = "sha256:c58a7d2815e0e8d7972bf1803331fb0152f867bd89adf8a01dfd55085434192e", size = 100213, upload-time = "2020-05-11T20:02:55.636Z" } +sdist = { url = "https://files.pythonhosted.org/packages/11/e0/abfd2a0d2efe47670df87f3e3a0e2edda42f055053c85361f19c0e2c1ca8/pycodestyle-2.14.0.tar.gz", hash = "sha256:c4b5b517d278089ff9d0abdec919cd97262a3367449ea1c8b49b91529167b783", size = 39472, upload-time = "2025-06-20T18:49:48.75Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/10/5b/88879fb861ab79aef45c7e199cae3ef7af487b5603dcb363517a50602dd7/pycodestyle-2.6.0-py2.py3-none-any.whl", hash = "sha256:2295e7b2f6b5bd100585ebcb1f616591b652db8a741695b3d8f5d28bdc934367", size = 41364, upload-time = "2020-05-11T20:02:52.968Z" }, + { url = "https://files.pythonhosted.org/packages/d7/27/a58ddaf8c588a3ef080db9d0b7e0b97215cee3a45df74f3a94dbbf5c893a/pycodestyle-2.14.0-py2.py3-none-any.whl", hash = "sha256:dd6bf7cb4ee77f8e016f9c8e74a35ddd9f67e1d5fd4184d86c3b98e07099f42d", size = 31594, upload-time = "2025-06-20T18:49:47.491Z" }, ] [[package]] @@ -1476,20 +1446,20 @@ wheels = [ [[package]] name = "pyflakes" -version = "2.2.0" +version = "3.4.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f1/e2/e02fc89959619590eec0c35f366902535ade2728479fc3082c8af8840013/pyflakes-2.2.0.tar.gz", hash = "sha256:35b2d75ee967ea93b55750aa9edbbf72813e06a66ba54438df2cfac9e3c27fc8", size = 65307, upload-time = "2020-04-10T03:52:19.335Z" } +sdist = { url = "https://files.pythonhosted.org/packages/45/dc/fd034dc20b4b264b3d015808458391acbf9df40b1e54750ef175d39180b1/pyflakes-3.4.0.tar.gz", hash = "sha256:b24f96fafb7d2ab0ec5075b7350b3d2d2218eab42003821c06344973d3ea2f58", size = 64669, upload-time = "2025-06-20T18:45:27.834Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/69/5b/fd01b0c696f2f9a6d2c839883b642493b431f28fa32b29abc465ef675473/pyflakes-2.2.0-py2.py3-none-any.whl", hash = "sha256:0d94e0e05a19e57a99444b6ddcf9a6eb2e5c68d3ca1e98e90707af8152c90a92", size = 66950, upload-time = "2020-04-10T03:52:17.62Z" }, + { url = "https://files.pythonhosted.org/packages/c2/2f/81d580a0fb83baeb066698975cb14a618bdbed7720678566f1b046a95fe8/pyflakes-3.4.0-py2.py3-none-any.whl", hash = "sha256:f742a7dbd0d9cb9ea41e9a24a918996e8170c799fa528688d40dd582c8265f4f", size = 63551, upload-time = "2025-06-20T18:45:26.937Z" }, ] [[package]] name = "pygments" -version = "2.2.0" +version = "2.19.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/71/2a/2e4e77803a8bd6408a2903340ac498cb0a2181811af7c9ec92cb70b0308a/Pygments-2.2.0.tar.gz", hash = "sha256:dbae1046def0efb574852fab9e90209b23f556367b5a320c0bcb871c77c3e8cc", size = 2113944, upload-time = "2017-01-22T21:22:59.952Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631, upload-time = "2025-06-21T13:39:12.283Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/02/ee/b6e02dc6529e82b75bb06823ff7d005b141037cb1416b10c6f00fc419dca/Pygments-2.2.0-py2.py3-none-any.whl", hash = "sha256:78f3f434bcc5d6ee09020f92ba487f95ba50f1e3ef83ae96b9d5ffa1bab25c5d", size = 841734, upload-time = "2017-01-22T21:22:37.819Z" }, + { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload-time = "2025-06-21T13:39:07.939Z" }, ] [[package]] @@ -1501,6 +1471,11 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/6f/01/c26ce75ba460d5cd503da9e13b21a33804d38c2165dec7b716d06b13010c/pyjwt-2.11.0-py3-none-any.whl", hash = "sha256:94a6bde30eb5c8e04fee991062b534071fd1439ef58d2adc9ccb823e7bcd0469", size = 28224, upload-time = "2026-01-30T19:59:54.539Z" }, ] +[package.optional-dependencies] +crypto = [ + { name = "cryptography" }, +] + [[package]] name = "pyrabbit2" version = "1.0.7" @@ -1515,43 +1490,42 @@ wheels = [ [[package]] name = "pytest" -version = "7.4.4" +version = "9.0.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, - { name = "exceptiongroup" }, { name = "iniconfig" }, { name = "packaging" }, { name = "pluggy" }, - { name = "tomli" }, + { name = "pygments" }, ] -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" } +sdist = { url = "https://files.pythonhosted.org/packages/d1/db/7ef3487e0fb0049ddb5ce41d3a49c235bf9ad299b6a25d5780a89f19230f/pytest-9.0.2.tar.gz", hash = "sha256:75186651a92bd89611d1d9fc20f0b4345fd827c41ccd5c299a868a05d70edf11", size = 1568901, upload-time = "2025-12-06T21:30:51.014Z" } wheels = [ - { 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" }, + { url = "https://files.pythonhosted.org/packages/3b/ab/b3226f0bd7cdcf710fbede2b3548584366da3b19b5021e74f5bde2a8fa3f/pytest-9.0.2-py3-none-any.whl", hash = "sha256:711ffd45bf766d5264d487b917733b453d917afd2b0ad65223959f59089f875b", size = 374801, upload-time = "2025-12-06T21:30:49.154Z" }, ] [[package]] name = "pytest-django" -version = "4.11.1" +version = "4.12.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pytest" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b1/fb/55d580352db26eb3d59ad50c64321ddfe228d3d8ac107db05387a2fadf3a/pytest_django-4.11.1.tar.gz", hash = "sha256:a949141a1ee103cb0e7a20f1451d355f83f5e4a5d07bdd4dcfdd1fd0ff227991", size = 86202, upload-time = "2025-04-03T18:56:09.338Z" } +sdist = { url = "https://files.pythonhosted.org/packages/13/2b/db9a193df89e5660137f5428063bcc2ced7ad790003b26974adf5c5ceb3b/pytest_django-4.12.0.tar.gz", hash = "sha256:df94ec819a83c8979c8f6de13d9cdfbe76e8c21d39473cfe2b40c9fc9be3c758", size = 91156, upload-time = "2026-02-14T18:40:49.235Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/be/ac/bd0608d229ec808e51a21044f3f2f27b9a37e7a0ebaca7247882e67876af/pytest_django-4.11.1-py3-none-any.whl", hash = "sha256:1b63773f648aa3d8541000c26929c1ea63934be1cfa674c76436966d73fe6a10", size = 25281, upload-time = "2025-04-03T18:56:07.678Z" }, + { url = "https://files.pythonhosted.org/packages/83/a5/41d091f697c09609e7ef1d5d61925494e0454ebf51de7de05f0f0a728f1d/pytest_django-4.12.0-py3-none-any.whl", hash = "sha256:3ff300c49f8350ba2953b90297d23bf5f589db69545f56f1ec5f8cff5da83e85", size = 26123, upload-time = "2026-02-14T18:40:47.381Z" }, ] [[package]] name = "python-dateutil" -version = "2.7.3" +version = "2.9.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "six" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a0/b0/a4e3241d2dee665fea11baec21389aec6886655cd4db7647ddf96c3fad15/python-dateutil-2.7.3.tar.gz", hash = "sha256:e27001de32f627c22380a688bcc43ce83504a7bc5da472209b4c70f02829f0b8", size = 302871, upload-time = "2018-05-10T12:02:18.124Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d9/77/bd458a2e387e98f71de86dcc2ca2cab64489736004c80bc12b70da8b5488/python-dateutil-2.9.0.tar.gz", hash = "sha256:78e73e19c63f5b20ffa567001531680d939dc042bf7850431877645523c66709", size = 342990, upload-time = "2024-03-01T03:52:54.963Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cf/f5/af2b09c957ace60dcfac112b669c45c8c97e32f94aa8b56da4c6d1682825/python_dateutil-2.7.3-py2.py3-none-any.whl", hash = "sha256:1adb80e7a782c12e52ef9a8182bebeb73f1d7e24e374397af06fb4956c8dc5c0", size = 211414, upload-time = "2018-05-10T12:02:16.089Z" }, + { url = "https://files.pythonhosted.org/packages/13/7f/98d6f9ca8b731506c85785bbb8806c01f5966a4df6d68c0d1cf3b16967e1/python_dateutil-2.9.0-py2.py3-none-any.whl", hash = "sha256:cbf2f1da5e6083ac2fbfd4da39a25f34312230110440f424a14c7558bb85d82e", size = 230495, upload-time = "2024-03-01T03:52:51.479Z" }, ] [[package]] @@ -1566,27 +1540,13 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e0/a5/c6ba13860bdf5525f1ab01e01cc667578d6f1efc8a1dba355700fb04c29b/python3_openid-3.2.0-py3-none-any.whl", hash = "sha256:6626f771e0417486701e0b4daff762e7212e820ca5b29fcc0d05f6f8736dfa6b", size = 133681, upload-time = "2020-06-29T12:15:47.502Z" }, ] -[[package]] -name = "pytokens" -version = "0.4.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b6/34/b4e015b99031667a7b960f888889c5bd34ef585c85e1cb56a594b92836ac/pytokens-0.4.1.tar.gz", hash = "sha256:292052fe80923aae2260c073f822ceba21f3872ced9a68bb7953b348e561179a", size = 23015, upload-time = "2026-01-30T01:03:45.924Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/42/24/f206113e05cb8ef51b3850e7ef88f20da6f4bf932190ceb48bd3da103e10/pytokens-0.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2a44ed93ea23415c54f3face3b65ef2b844d96aeb3455b8a69b3df6beab6acc5", size = 161522, upload-time = "2026-01-30T01:02:50.393Z" }, - { url = "https://files.pythonhosted.org/packages/d4/e9/06a6bf1b90c2ed81a9c7d2544232fe5d2891d1cd480e8a1809ca354a8eb2/pytokens-0.4.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:add8bf86b71a5d9fb5b89f023a80b791e04fba57960aa790cc6125f7f1d39dfe", size = 246945, upload-time = "2026-01-30T01:02:52.399Z" }, - { url = "https://files.pythonhosted.org/packages/69/66/f6fb1007a4c3d8b682d5d65b7c1fb33257587a5f782647091e3408abe0b8/pytokens-0.4.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:670d286910b531c7b7e3c0b453fd8156f250adb140146d234a82219459b9640c", size = 259525, upload-time = "2026-01-30T01:02:53.737Z" }, - { url = "https://files.pythonhosted.org/packages/04/92/086f89b4d622a18418bac74ab5db7f68cf0c21cf7cc92de6c7b919d76c88/pytokens-0.4.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:4e691d7f5186bd2842c14813f79f8884bb03f5995f0575272009982c5ac6c0f7", size = 262693, upload-time = "2026-01-30T01:02:54.871Z" }, - { url = "https://files.pythonhosted.org/packages/b4/7b/8b31c347cf94a3f900bdde750b2e9131575a61fdb620d3d3c75832262137/pytokens-0.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:27b83ad28825978742beef057bfe406ad6ed524b2d28c252c5de7b4a6dd48fa2", size = 103567, upload-time = "2026-01-30T01:02:56.414Z" }, - { url = "https://files.pythonhosted.org/packages/c6/78/397db326746f0a342855b81216ae1f0a32965deccfd7c830a2dbc66d2483/pytokens-0.4.1-py3-none-any.whl", hash = "sha256:26cef14744a8385f35d0e095dc8b3a7583f6c953c2e3d269c7f82484bf5ad2de", size = 13729, upload-time = "2026-01-30T01:03:45.029Z" }, -] - [[package]] name = "pytz" -version = "2025.2" +version = "2026.1.post1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884, upload-time = "2025-03-25T02:25:00.538Z" } +sdist = { url = "https://files.pythonhosted.org/packages/56/db/b8721d71d945e6a8ac63c0fc900b2067181dbb50805958d4d4661cf7d277/pytz-2026.1.post1.tar.gz", hash = "sha256:3378dde6a0c3d26719182142c56e60c7f9af7e968076f31aae569d72a0358ee1", size = 321088, upload-time = "2026-03-03T07:47:50.683Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225, upload-time = "2025-03-25T02:24:58.468Z" }, + { url = "https://files.pythonhosted.org/packages/10/99/781fe0c827be2742bcc775efefccb3b048a3a9c6ce9aec0cbf4a101677e5/pytz-2026.1.post1-py2.py3-none-any.whl", hash = "sha256:f2fd16142fda348286a75e1a524be810bb05d444e5a081f37f7affc635035f7a", size = 510489, upload-time = "2026-03-03T07:47:49.167Z" }, ] [[package]] @@ -1600,20 +1560,29 @@ wheels = [ [[package]] name = "pyyaml" -version = "5.3.1" +version = "6.0.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/64/c2/b80047c7ac2478f9501676c988a5411ed5572f35d1beff9cae07d321512c/PyYAML-5.3.1.tar.gz", hash = "sha256:b8eac752c5e14d3eca0e6dd9199cd627518cb5ec06add0de9d32baeee6fe645d", size = 269377, upload-time = "2020-03-18T21:41:21.618Z" } +sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/11/0fd08f8192109f7169db964b5707a2f1e8b745d4e239b784a5a1dd80d1db/pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8", size = 181669, upload-time = "2025-09-25T21:32:23.673Z" }, + { url = "https://files.pythonhosted.org/packages/b1/16/95309993f1d3748cd644e02e38b75d50cbc0d9561d21f390a76242ce073f/pyyaml-6.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1", size = 173252, upload-time = "2025-09-25T21:32:25.149Z" }, + { url = "https://files.pythonhosted.org/packages/50/31/b20f376d3f810b9b2371e72ef5adb33879b25edb7a6d072cb7ca0c486398/pyyaml-6.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c", size = 767081, upload-time = "2025-09-25T21:32:26.575Z" }, + { url = "https://files.pythonhosted.org/packages/49/1e/a55ca81e949270d5d4432fbbd19dfea5321eda7c41a849d443dc92fd1ff7/pyyaml-6.0.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5", size = 841159, upload-time = "2025-09-25T21:32:27.727Z" }, + { url = "https://files.pythonhosted.org/packages/74/27/e5b8f34d02d9995b80abcef563ea1f8b56d20134d8f4e5e81733b1feceb2/pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6", size = 801626, upload-time = "2025-09-25T21:32:28.878Z" }, + { url = "https://files.pythonhosted.org/packages/f9/11/ba845c23988798f40e52ba45f34849aa8a1f2d4af4b798588010792ebad6/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6", size = 753613, upload-time = "2025-09-25T21:32:30.178Z" }, + { url = "https://files.pythonhosted.org/packages/3d/e0/7966e1a7bfc0a45bf0a7fb6b98ea03fc9b8d84fa7f2229e9659680b69ee3/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be", size = 794115, upload-time = "2025-09-25T21:32:31.353Z" }, + { url = "https://files.pythonhosted.org/packages/de/94/980b50a6531b3019e45ddeada0626d45fa85cbe22300844a7983285bed3b/pyyaml-6.0.3-cp313-cp313-win32.whl", hash = "sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26", size = 137427, upload-time = "2025-09-25T21:32:32.58Z" }, + { url = "https://files.pythonhosted.org/packages/97/c9/39d5b874e8b28845e4ec2202b5da735d0199dbe5b8fb85f91398814a9a46/pyyaml-6.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c", size = 154090, upload-time = "2025-09-25T21:32:33.659Z" }, + { url = "https://files.pythonhosted.org/packages/73/e8/2bdf3ca2090f68bb3d75b44da7bbc71843b19c9f2b9cb9b0f4ab7a5a4329/pyyaml-6.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb", size = 140246, upload-time = "2025-09-25T21:32:34.663Z" }, +] [[package]] name = "redis" -version = "7.1.0" +version = "7.3.0" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "async-timeout" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/43/c8/983d5c6579a411d8a99bc5823cc5712768859b5ce2c8afe1a65b37832c81/redis-7.1.0.tar.gz", hash = "sha256:b1cc3cfa5a2cb9c2ab3ba700864fb0ad75617b41f01352ce5779dabf6d5f9c3c", size = 4796669, upload-time = "2025-11-19T15:54:39.961Z" } +sdist = { url = "https://files.pythonhosted.org/packages/da/82/4d1a5279f6c1251d3d2a603a798a1137c657de9b12cfc1fba4858232c4d2/redis-7.3.0.tar.gz", hash = "sha256:4d1b768aafcf41b01022410b3cc4f15a07d9b3d6fe0c66fc967da2c88e551034", size = 4928081, upload-time = "2026-03-06T18:18:16.287Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/89/f0/8956f8a86b20d7bb9d6ac0187cf4cd54d8065bc9a1a09eb8011d4d326596/redis-7.1.0-py3-none-any.whl", hash = "sha256:23c52b208f92b56103e17c5d06bdc1a6c2c0b3106583985a76a18f83b265de2b", size = 354159, upload-time = "2025-11-19T15:54:38.064Z" }, + { url = "https://files.pythonhosted.org/packages/f0/28/84e57fce7819e81ec5aa1bd31c42b89607241f4fb1a3ea5b0d2dbeaea26c/redis-7.3.0-py3-none-any.whl", hash = "sha256:9d4fcb002a12a5e3c3fbe005d59c48a2cc231f87fbb2f6b70c2d89bb64fec364", size = 404379, upload-time = "2026-03-06T18:18:14.583Z" }, ] [[package]] @@ -1623,7 +1592,6 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "attrs" }, { name = "rpds-py" }, - { name = "typing-extensions" }, ] 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 = [ @@ -1632,7 +1600,7 @@ wheels = [ [[package]] name = "requests" -version = "2.32.2" +version = "2.32.5" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "certifi" }, @@ -1640,9 +1608,9 @@ dependencies = [ { name = "idna" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/86/ec/535bf6f9bd280de6a4637526602a146a68fde757100ecf8c9333173392db/requests-2.32.2.tar.gz", hash = "sha256:dd951ff5ecf3e3b3aa26b40703ba77495dab41da839ae72ef3c8e5d8e2433289", size = 130327, upload-time = "2024-05-21T18:51:32.819Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c9/74/b3ff8e6c8446842c3f5c837e9c3dfcfe2018ea6ecef224c710c85ef728f4/requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf", size = 134517, upload-time = "2025-08-18T20:46:02.573Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c3/20/748e38b466e0819491f0ce6e90ebe4184966ee304fe483e2c414b0f4ef07/requests-2.32.2-py3-none-any.whl", hash = "sha256:fc06670dd0ed212426dfeb94fc1b983d917c4f9847c863f313c9dfaaffb7c23c", size = 63902, upload-time = "2024-05-21T18:51:29.562Z" }, + { url = "https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6", size = 64738, upload-time = "2025-08-18T20:46:00.542Z" }, ] [[package]] @@ -1673,50 +1641,65 @@ version = "0.30.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/20/af/3f2f423103f1113b36230496629986e0ef7e199d2aa8392452b484b38ced/rpds_py-0.30.0.tar.gz", hash = "sha256:dd8ff7cf90014af0c0f787eea34794ebf6415242ee1d6fa91eaba725cc441e84", size = 69469, upload-time = "2025-11-30T20:24:38.837Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/06/0c/0c411a0ec64ccb6d104dcabe0e713e05e153a9a2c3c2bd2b32ce412166fe/rpds_py-0.30.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:679ae98e00c0e8d68a7fda324e16b90fd5260945b45d3b824c892cec9eea3288", size = 370490, upload-time = "2025-11-30T20:21:33.256Z" }, - { url = "https://files.pythonhosted.org/packages/19/6a/4ba3d0fb7297ebae71171822554abe48d7cab29c28b8f9f2c04b79988c05/rpds_py-0.30.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4cc2206b76b4f576934f0ed374b10d7ca5f457858b157ca52064bdfc26b9fc00", size = 359751, upload-time = "2025-11-30T20:21:34.591Z" }, - { url = "https://files.pythonhosted.org/packages/cd/7c/e4933565ef7f7a0818985d87c15d9d273f1a649afa6a52ea35ad011195ea/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:389a2d49eded1896c3d48b0136ead37c48e221b391c052fba3f4055c367f60a6", size = 389696, upload-time = "2025-11-30T20:21:36.122Z" }, - { url = "https://files.pythonhosted.org/packages/5e/01/6271a2511ad0815f00f7ed4390cf2567bec1d4b1da39e2c27a41e6e3b4de/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:32c8528634e1bf7121f3de08fa85b138f4e0dc47657866630611b03967f041d7", size = 403136, upload-time = "2025-11-30T20:21:37.728Z" }, - { url = "https://files.pythonhosted.org/packages/55/64/c857eb7cd7541e9b4eee9d49c196e833128a55b89a9850a9c9ac33ccf897/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f207f69853edd6f6700b86efb84999651baf3789e78a466431df1331608e5324", size = 524699, upload-time = "2025-11-30T20:21:38.92Z" }, - { url = "https://files.pythonhosted.org/packages/9c/ed/94816543404078af9ab26159c44f9e98e20fe47e2126d5d32c9d9948d10a/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:67b02ec25ba7a9e8fa74c63b6ca44cf5707f2fbfadae3ee8e7494297d56aa9df", size = 412022, upload-time = "2025-11-30T20:21:40.407Z" }, - { url = "https://files.pythonhosted.org/packages/61/b5/707f6cf0066a6412aacc11d17920ea2e19e5b2f04081c64526eb35b5c6e7/rpds_py-0.30.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c0e95f6819a19965ff420f65578bacb0b00f251fefe2c8b23347c37174271f3", size = 390522, upload-time = "2025-11-30T20:21:42.17Z" }, - { url = "https://files.pythonhosted.org/packages/13/4e/57a85fda37a229ff4226f8cbcf09f2a455d1ed20e802ce5b2b4a7f5ed053/rpds_py-0.30.0-cp310-cp310-manylinux_2_31_riscv64.whl", hash = "sha256:a452763cc5198f2f98898eb98f7569649fe5da666c2dc6b5ddb10fde5a574221", size = 404579, upload-time = "2025-11-30T20:21:43.769Z" }, - { url = "https://files.pythonhosted.org/packages/f9/da/c9339293513ec680a721e0e16bf2bac3db6e5d7e922488de471308349bba/rpds_py-0.30.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e0b65193a413ccc930671c55153a03ee57cecb49e6227204b04fae512eb657a7", size = 421305, upload-time = "2025-11-30T20:21:44.994Z" }, - { url = "https://files.pythonhosted.org/packages/f9/be/522cb84751114f4ad9d822ff5a1aa3c98006341895d5f084779b99596e5c/rpds_py-0.30.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:858738e9c32147f78b3ac24dc0edb6610000e56dc0f700fd5f651d0a0f0eb9ff", size = 572503, upload-time = "2025-11-30T20:21:46.91Z" }, - { url = "https://files.pythonhosted.org/packages/a2/9b/de879f7e7ceddc973ea6e4629e9b380213a6938a249e94b0cdbcc325bb66/rpds_py-0.30.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:da279aa314f00acbb803da1e76fa18666778e8a8f83484fba94526da5de2cba7", size = 598322, upload-time = "2025-11-30T20:21:48.709Z" }, - { url = "https://files.pythonhosted.org/packages/48/ac/f01fc22efec3f37d8a914fc1b2fb9bcafd56a299edbe96406f3053edea5a/rpds_py-0.30.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7c64d38fb49b6cdeda16ab49e35fe0da2e1e9b34bc38bd78386530f218b37139", size = 560792, upload-time = "2025-11-30T20:21:50.024Z" }, - { url = "https://files.pythonhosted.org/packages/e2/da/4e2b19d0f131f35b6146425f846563d0ce036763e38913d917187307a671/rpds_py-0.30.0-cp310-cp310-win32.whl", hash = "sha256:6de2a32a1665b93233cde140ff8b3467bdb9e2af2b91079f0333a0974d12d464", size = 221901, upload-time = "2025-11-30T20:21:51.32Z" }, - { url = "https://files.pythonhosted.org/packages/96/cb/156d7a5cf4f78a7cc571465d8aec7a3c447c94f6749c5123f08438bcf7bc/rpds_py-0.30.0-cp310-cp310-win_amd64.whl", hash = "sha256:1726859cd0de969f88dc8673bdd954185b9104e05806be64bcd87badbe313169", size = 235823, upload-time = "2025-11-30T20:21:52.505Z" }, + { url = "https://files.pythonhosted.org/packages/ed/dc/d61221eb88ff410de3c49143407f6f3147acf2538c86f2ab7ce65ae7d5f9/rpds_py-0.30.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:f83424d738204d9770830d35290ff3273fbb02b41f919870479fab14b9d303b2", size = 374887, upload-time = "2025-11-30T20:22:41.812Z" }, + { url = "https://files.pythonhosted.org/packages/fd/32/55fb50ae104061dbc564ef15cc43c013dc4a9f4527a1f4d99baddf56fe5f/rpds_py-0.30.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e7536cd91353c5273434b4e003cbda89034d67e7710eab8761fd918ec6c69cf8", size = 358904, upload-time = "2025-11-30T20:22:43.479Z" }, + { url = "https://files.pythonhosted.org/packages/58/70/faed8186300e3b9bdd138d0273109784eea2396c68458ed580f885dfe7ad/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2771c6c15973347f50fece41fc447c054b7ac2ae0502388ce3b6738cd366e3d4", size = 389945, upload-time = "2025-11-30T20:22:44.819Z" }, + { url = "https://files.pythonhosted.org/packages/bd/a8/073cac3ed2c6387df38f71296d002ab43496a96b92c823e76f46b8af0543/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0a59119fc6e3f460315fe9d08149f8102aa322299deaa5cab5b40092345c2136", size = 407783, upload-time = "2025-11-30T20:22:46.103Z" }, + { url = "https://files.pythonhosted.org/packages/77/57/5999eb8c58671f1c11eba084115e77a8899d6e694d2a18f69f0ba471ec8b/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:76fec018282b4ead0364022e3c54b60bf368b9d926877957a8624b58419169b7", size = 515021, upload-time = "2025-11-30T20:22:47.458Z" }, + { url = "https://files.pythonhosted.org/packages/e0/af/5ab4833eadc36c0a8ed2bc5c0de0493c04f6c06de223170bd0798ff98ced/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:692bef75a5525db97318e8cd061542b5a79812d711ea03dbc1f6f8dbb0c5f0d2", size = 414589, upload-time = "2025-11-30T20:22:48.872Z" }, + { url = "https://files.pythonhosted.org/packages/b7/de/f7192e12b21b9e9a68a6d0f249b4af3fdcdff8418be0767a627564afa1f1/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9027da1ce107104c50c81383cae773ef5c24d296dd11c99e2629dbd7967a20c6", size = 394025, upload-time = "2025-11-30T20:22:50.196Z" }, + { url = "https://files.pythonhosted.org/packages/91/c4/fc70cd0249496493500e7cc2de87504f5aa6509de1e88623431fec76d4b6/rpds_py-0.30.0-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:9cf69cdda1f5968a30a359aba2f7f9aa648a9ce4b580d6826437f2b291cfc86e", size = 408895, upload-time = "2025-11-30T20:22:51.87Z" }, + { url = "https://files.pythonhosted.org/packages/58/95/d9275b05ab96556fefff73a385813eb66032e4c99f411d0795372d9abcea/rpds_py-0.30.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a4796a717bf12b9da9d3ad002519a86063dcac8988b030e405704ef7d74d2d9d", size = 422799, upload-time = "2025-11-30T20:22:53.341Z" }, + { url = "https://files.pythonhosted.org/packages/06/c1/3088fc04b6624eb12a57eb814f0d4997a44b0d208d6cace713033ff1a6ba/rpds_py-0.30.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5d4c2aa7c50ad4728a094ebd5eb46c452e9cb7edbfdb18f9e1221f597a73e1e7", size = 572731, upload-time = "2025-11-30T20:22:54.778Z" }, + { url = "https://files.pythonhosted.org/packages/d8/42/c612a833183b39774e8ac8fecae81263a68b9583ee343db33ab571a7ce55/rpds_py-0.30.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ba81a9203d07805435eb06f536d95a266c21e5b2dfbf6517748ca40c98d19e31", size = 599027, upload-time = "2025-11-30T20:22:56.212Z" }, + { url = "https://files.pythonhosted.org/packages/5f/60/525a50f45b01d70005403ae0e25f43c0384369ad24ffe46e8d9068b50086/rpds_py-0.30.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:945dccface01af02675628334f7cf49c2af4c1c904748efc5cf7bbdf0b579f95", size = 563020, upload-time = "2025-11-30T20:22:58.2Z" }, + { url = "https://files.pythonhosted.org/packages/0b/5d/47c4655e9bcd5ca907148535c10e7d489044243cc9941c16ed7cd53be91d/rpds_py-0.30.0-cp313-cp313-win32.whl", hash = "sha256:b40fb160a2db369a194cb27943582b38f79fc4887291417685f3ad693c5a1d5d", size = 223139, upload-time = "2025-11-30T20:23:00.209Z" }, + { url = "https://files.pythonhosted.org/packages/f2/e1/485132437d20aa4d3e1d8b3fb5a5e65aa8139f1e097080c2a8443201742c/rpds_py-0.30.0-cp313-cp313-win_amd64.whl", hash = "sha256:806f36b1b605e2d6a72716f321f20036b9489d29c51c91f4dd29a3e3afb73b15", size = 240224, upload-time = "2025-11-30T20:23:02.008Z" }, + { url = "https://files.pythonhosted.org/packages/24/95/ffd128ed1146a153d928617b0ef673960130be0009c77d8fbf0abe306713/rpds_py-0.30.0-cp313-cp313-win_arm64.whl", hash = "sha256:d96c2086587c7c30d44f31f42eae4eac89b60dabbac18c7669be3700f13c3ce1", size = 230645, upload-time = "2025-11-30T20:23:03.43Z" }, + { url = "https://files.pythonhosted.org/packages/ff/1b/b10de890a0def2a319a2626334a7f0ae388215eb60914dbac8a3bae54435/rpds_py-0.30.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:eb0b93f2e5c2189ee831ee43f156ed34e2a89a78a66b98cadad955972548be5a", size = 364443, upload-time = "2025-11-30T20:23:04.878Z" }, + { url = "https://files.pythonhosted.org/packages/0d/bf/27e39f5971dc4f305a4fb9c672ca06f290f7c4e261c568f3dea16a410d47/rpds_py-0.30.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:922e10f31f303c7c920da8981051ff6d8c1a56207dbdf330d9047f6d30b70e5e", size = 353375, upload-time = "2025-11-30T20:23:06.342Z" }, + { url = "https://files.pythonhosted.org/packages/40/58/442ada3bba6e8e6615fc00483135c14a7538d2ffac30e2d933ccf6852232/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cdc62c8286ba9bf7f47befdcea13ea0e26bf294bda99758fd90535cbaf408000", size = 383850, upload-time = "2025-11-30T20:23:07.825Z" }, + { url = "https://files.pythonhosted.org/packages/14/14/f59b0127409a33c6ef6f5c1ebd5ad8e32d7861c9c7adfa9a624fc3889f6c/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:47f9a91efc418b54fb8190a6b4aa7813a23fb79c51f4bb84e418f5476c38b8db", size = 392812, upload-time = "2025-11-30T20:23:09.228Z" }, + { url = "https://files.pythonhosted.org/packages/b3/66/e0be3e162ac299b3a22527e8913767d869e6cc75c46bd844aa43fb81ab62/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1f3587eb9b17f3789ad50824084fa6f81921bbf9a795826570bda82cb3ed91f2", size = 517841, upload-time = "2025-11-30T20:23:11.186Z" }, + { url = "https://files.pythonhosted.org/packages/3d/55/fa3b9cf31d0c963ecf1ba777f7cf4b2a2c976795ac430d24a1f43d25a6ba/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:39c02563fc592411c2c61d26b6c5fe1e51eaa44a75aa2c8735ca88b0d9599daa", size = 408149, upload-time = "2025-11-30T20:23:12.864Z" }, + { url = "https://files.pythonhosted.org/packages/60/ca/780cf3b1a32b18c0f05c441958d3758f02544f1d613abf9488cd78876378/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51a1234d8febafdfd33a42d97da7a43f5dcb120c1060e352a3fbc0c6d36e2083", size = 383843, upload-time = "2025-11-30T20:23:14.638Z" }, + { url = "https://files.pythonhosted.org/packages/82/86/d5f2e04f2aa6247c613da0c1dd87fcd08fa17107e858193566048a1e2f0a/rpds_py-0.30.0-cp313-cp313t-manylinux_2_31_riscv64.whl", hash = "sha256:eb2c4071ab598733724c08221091e8d80e89064cd472819285a9ab0f24bcedb9", size = 396507, upload-time = "2025-11-30T20:23:16.105Z" }, + { url = "https://files.pythonhosted.org/packages/4b/9a/453255d2f769fe44e07ea9785c8347edaf867f7026872e76c1ad9f7bed92/rpds_py-0.30.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6bdfdb946967d816e6adf9a3d8201bfad269c67efe6cefd7093ef959683c8de0", size = 414949, upload-time = "2025-11-30T20:23:17.539Z" }, + { url = "https://files.pythonhosted.org/packages/a3/31/622a86cdc0c45d6df0e9ccb6becdba5074735e7033c20e401a6d9d0e2ca0/rpds_py-0.30.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c77afbd5f5250bf27bf516c7c4a016813eb2d3e116139aed0096940c5982da94", size = 565790, upload-time = "2025-11-30T20:23:19.029Z" }, + { url = "https://files.pythonhosted.org/packages/1c/5d/15bbf0fb4a3f58a3b1c67855ec1efcc4ceaef4e86644665fff03e1b66d8d/rpds_py-0.30.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:61046904275472a76c8c90c9ccee9013d70a6d0f73eecefd38c1ae7c39045a08", size = 590217, upload-time = "2025-11-30T20:23:20.885Z" }, + { url = "https://files.pythonhosted.org/packages/6d/61/21b8c41f68e60c8cc3b2e25644f0e3681926020f11d06ab0b78e3c6bbff1/rpds_py-0.30.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4c5f36a861bc4b7da6516dbdf302c55313afa09b81931e8280361a4f6c9a2d27", size = 555806, upload-time = "2025-11-30T20:23:22.488Z" }, + { url = "https://files.pythonhosted.org/packages/f9/39/7e067bb06c31de48de3eb200f9fc7c58982a4d3db44b07e73963e10d3be9/rpds_py-0.30.0-cp313-cp313t-win32.whl", hash = "sha256:3d4a69de7a3e50ffc214ae16d79d8fbb0922972da0356dcf4d0fdca2878559c6", size = 211341, upload-time = "2025-11-30T20:23:24.449Z" }, + { url = "https://files.pythonhosted.org/packages/0a/4d/222ef0b46443cf4cf46764d9c630f3fe4abaa7245be9417e56e9f52b8f65/rpds_py-0.30.0-cp313-cp313t-win_amd64.whl", hash = "sha256:f14fc5df50a716f7ece6a80b6c78bb35ea2ca47c499e422aa4463455dd96d56d", size = 225768, upload-time = "2025-11-30T20:23:25.908Z" }, ] [[package]] name = "s3transfer" -version = "0.6.0" +version = "0.16.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "botocore" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e1/eb/e57c93d5cd5edf8c1d124c831ef916601540db70acd96fa21fe60cef1365/s3transfer-0.6.0.tar.gz", hash = "sha256:2ed07d3866f523cc561bf4a00fc5535827981b117dd7876f036b0c1aca42c947", size = 134871, upload-time = "2022-05-31T19:44:53.132Z" } +sdist = { url = "https://files.pythonhosted.org/packages/05/04/74127fc843314818edfa81b5540e26dd537353b123a4edc563109d8f17dd/s3transfer-0.16.0.tar.gz", hash = "sha256:8e990f13268025792229cd52fa10cb7163744bf56e719e0b9cb925ab79abf920", size = 153827, upload-time = "2025-12-01T02:30:59.114Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5e/c6/af903b5fab3f9b5b1e883f49a770066314c6dcceb589cf938d48c89556c1/s3transfer-0.6.0-py3-none-any.whl", hash = "sha256:06176b74f3a15f61f1b4f25a1fc29a4429040b7647133a463da8fa5bd28d5ecd", size = 79568, upload-time = "2022-05-31T19:44:50.831Z" }, + { url = "https://files.pythonhosted.org/packages/fc/51/727abb13f44c1fcf6d145979e1535a35794db0f6e450a0cb46aa24732fe2/s3transfer-0.16.0-py3-none-any.whl", hash = "sha256:18e25d66fed509e3868dc1572b3f427ff947dd2c56f844a5bf09481ad3f3b2fe", size = 86830, upload-time = "2025-12-01T02:30:57.729Z" }, ] [[package]] name = "setuptools" -version = "80.10.2" +version = "82.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/76/95/faf61eb8363f26aa7e1d762267a8d602a1b26d4f3a1e758e92cb3cb8b054/setuptools-80.10.2.tar.gz", hash = "sha256:8b0e9d10c784bf7d262c4e5ec5d4ec94127ce206e8738f29a437945fbc219b70", size = 1200343, upload-time = "2026-01-25T22:38:17.252Z" } +sdist = { url = "https://files.pythonhosted.org/packages/82/f3/748f4d6f65d1756b9ae577f329c951cda23fb900e4de9f70900ced962085/setuptools-82.0.0.tar.gz", hash = "sha256:22e0a2d69474c6ae4feb01951cb69d515ed23728cf96d05513d36e42b62b37cb", size = 1144893, upload-time = "2026-02-08T15:08:40.206Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/94/b8/f1f62a5e3c0ad2ff1d189590bfa4c46b4f3b6e49cef6f26c6ee4e575394d/setuptools-80.10.2-py3-none-any.whl", hash = "sha256:95b30ddfb717250edb492926c92b5221f7ef3fbcc2b07579bcd4a27da21d0173", size = 1064234, upload-time = "2026-01-25T22:38:15.216Z" }, + { url = "https://files.pythonhosted.org/packages/e1/c6/76dc613121b793286a3f91621d7b75a2b493e0390ddca50f11993eadf192/setuptools-82.0.0-py3-none-any.whl", hash = "sha256:70b18734b607bd1da571d097d236cfcfacaf01de45717d59e6e04b96877532e0", size = 1003468, upload-time = "2026-02-08T15:08:38.723Z" }, ] [[package]] name = "six" -version = "1.16.0" +version = "1.17.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/71/39/171f1c67cd00715f190ba0b100d606d440a28c93c7714febeca8b79af85e/six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", size = 34041, upload-time = "2021-05-05T14:18:18.379Z" } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d9/5a/e7c31adbe875f2abbb91bd84cf2dc52d792b5a01506781dbcf25c91daf11/six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254", size = 11053, upload-time = "2021-05-05T14:18:17.237Z" }, + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, ] [[package]] @@ -1734,20 +1717,19 @@ wheels = [ [[package]] name = "social-auth-core" -version = "4.7.0" +version = "4.8.5" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "cryptography" }, { name = "defusedxml" }, { name = "oauthlib" }, - { name = "pyjwt" }, + { name = "pyjwt", extra = ["crypto"] }, { name = "python3-openid" }, { name = "requests" }, { name = "requests-oauthlib" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/87/c0/466383c22767604c573f15aff3ea2c37aacf3c10281f31199c02ac0017ef/social_auth_core-4.7.0.tar.gz", hash = "sha256:2bba127c7b7166a81085ddb0c248d93751b3bc3cdab8569f62d9f70c6bc4ed40", size = 230894, upload-time = "2025-06-27T06:34:27.15Z" } +sdist = { url = "https://files.pythonhosted.org/packages/bc/a3/87381698a6d671e07d17ef9b89cb30d02b2cb4a9470d530da245ec4e2bd2/social_auth_core-4.8.5.tar.gz", hash = "sha256:fd10d44bff681a128d127f665f203c496658d5bbfc993ad1b5bbaed589eab573", size = 244501, upload-time = "2026-02-10T09:06:16.902Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e3/3e/1b1ed868b840ecf5e7b02fc8ab20718ac24e184b90057815fee2ebbc107d/social_auth_core-4.7.0-py3-none-any.whl", hash = "sha256:9eef9b49c332d1a3265b37dcc698a7ace97c3fc59df2d874b51576d11d31f6a6", size = 427867, upload-time = "2025-06-27T06:34:25.715Z" }, + { url = "https://files.pythonhosted.org/packages/f8/7e/7c30fcf6ebcbef6163a5be0514f5cdc551d276cd03eae92b524f46c4eb2a/social_auth_core-4.8.5-py3-none-any.whl", hash = "sha256:2591c2ce71127ad410e7ca9581bd88658031fdf7b209e05be5920d0bcc1c005a", size = 447336, upload-time = "2026-02-10T09:06:18.399Z" }, ] [[package]] @@ -1779,15 +1761,6 @@ version = "0.7" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/56/e4/879ef1dbd6ddea1c77c0078cd59b503368b0456bcca7d063a870ca2119d3/strict-rfc3339-0.7.tar.gz", hash = "sha256:5cad17bedfc3af57b399db0fed32771f18fc54bbd917e85546088607ac5e1277", size = 17552, upload-time = "2016-04-24T04:24:04.403Z" } -[[package]] -name = "tomli" -version = "2.4.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/82/30/31573e9457673ab10aa432461bee537ce6cef177667deca369efb79df071/tomli-2.4.0.tar.gz", hash = "sha256:aa89c3f6c277dd275d8e243ad24f3b5e701491a860d5121f2cdd399fbb31fc9c", size = 17477, upload-time = "2026-01-11T11:22:38.165Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/23/d1/136eb2cb77520a31e1f64cbae9d33ec6df0d78bdf4160398e86eec8a8754/tomli-2.4.0-py3-none-any.whl", hash = "sha256:1f776e7d669ebceb01dee46484485f43a4048746235e683bcdffacdf1fb4785a", size = 14477, upload-time = "2026-01-11T11:22:37.446Z" }, -] - [[package]] name = "traitlets" version = "5.14.3" @@ -1799,7 +1772,7 @@ wheels = [ [[package]] name = "twisted" -version = "24.7.0" +version = "25.5.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "attrs" }, @@ -1810,9 +1783,9 @@ dependencies = [ { name = "typing-extensions" }, { name = "zope-interface" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/8b/bf/f30eb89bcd14a21a36b4cd3d96658432d4c590af3c24bbe08ea77fa7bbbb/twisted-24.7.0.tar.gz", hash = "sha256:5a60147f044187a127ec7da96d170d49bcce50c6fd36f594e60f4587eff4d394", size = 3516844, upload-time = "2024-08-10T13:27:08.278Z" } +sdist = { url = "https://files.pythonhosted.org/packages/13/0f/82716ed849bf7ea4984c21385597c949944f0f9b428b5710f79d0afc084d/twisted-25.5.0.tar.gz", hash = "sha256:1deb272358cb6be1e3e8fc6f9c8b36f78eb0fa7c2233d2dbe11ec6fee04ea316", size = 3545725, upload-time = "2025-06-07T09:52:24.858Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/49/d2/7b3e869b983fbf29d770fc2893f8df7c1739c6ff03a2b926b4fc43e4263e/twisted-24.7.0-py3-none-any.whl", hash = "sha256:734832ef98108136e222b5230075b1079dad8a3fc5637319615619a7725b0c81", size = 3181556, upload-time = "2024-08-10T13:27:04.649Z" }, + { url = "https://files.pythonhosted.org/packages/eb/66/ab7efd8941f0bc7b2bd555b0f0471bff77df4c88e0cc31120c82737fec77/twisted-25.5.0-py3-none-any.whl", hash = "sha256:8559f654d01a54a8c3efe66d533d43f383531ebf8d81d9f9ab4769d91ca15df7", size = 3204767, upload-time = "2025-06-07T09:52:21.428Z" }, ] [[package]] @@ -1833,6 +1806,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/c7/b0/003792df09decd6849a5e39c28b513c06e84436a54440380862b5aeff25d/tzdata-2025.3-py2.py3-none-any.whl", hash = "sha256:06a47e5700f3081aab02b2e513160914ff0694bce9947d6b76ebd6bf57cfc5d1", size = 348521, upload-time = "2025-12-13T17:45:33.889Z" }, ] +[[package]] +name = "tzlocal" +version = "5.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { 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 = [ + { url = "https://files.pythonhosted.org/packages/c2/14/e2a54fabd4f08cd7af1c07030603c3356b74da07f7cc056e600436edfa17/tzlocal-5.3.1-py3-none-any.whl", hash = "sha256:eb1a66c3ef5847adf7a834f1be0800581b683b5608e74f86ecbcef8ab91bb85d", size = 18026, upload-time = "2025-03-05T21:17:39.857Z" }, +] + [[package]] name = "uritemplate" version = "4.2.0" @@ -1844,24 +1829,24 @@ wheels = [ [[package]] name = "urllib3" -version = "1.26.20" +version = "2.6.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e4/e8/6ff5e6bc22095cfc59b6ea711b687e2b7ed4bdb373f7eeec370a97d7392f/urllib3-1.26.20.tar.gz", hash = "sha256:40c2dc0c681e47eb8f90e7e27bf6ff7df2e677421fd46756da1161c39ca70d32", size = 307380, upload-time = "2024-08-29T15:43:11.37Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c7/24/5f1b3bdffd70275f6661c76461e25f024d5a38a46f04aaca912426a2b1d3/urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed", size = 435556, upload-time = "2026-01-07T16:24:43.925Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/33/cf/8435d5a7159e2a9c83a95896ed596f68cf798005fe107cc655b5c5c14704/urllib3-1.26.20-py2.py3-none-any.whl", hash = "sha256:0ed14ccfbf1c30a9072c7ca157e4319b70d65f623e91e7b32fadb2853431016e", size = 144225, upload-time = "2024-08-29T15:43:08.921Z" }, + { url = "https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4", size = 131584, upload-time = "2026-01-07T16:24:42.685Z" }, ] [[package]] name = "uvicorn" -version = "0.22.0" +version = "0.38.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "click" }, { name = "h11" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c6/dd/0d3bab50ab4ef8bec849f89fec2adc2fabcc397018c30e57d9f0d4009c5e/uvicorn-0.22.0.tar.gz", hash = "sha256:79277ae03db57ce7d9aa0567830bbb51d7a612f54d6e1e3e92da3ef24c2c8ed8", size = 37688, upload-time = "2023-04-28T00:53:40.158Z" } +sdist = { url = "https://files.pythonhosted.org/packages/cb/ce/f06b84e2697fef4688ca63bdb2fdf113ca0a3be33f94488f2cadb690b0cf/uvicorn-0.38.0.tar.gz", hash = "sha256:fd97093bdd120a2609fc0d3afe931d4d4ad688b6e75f0f929fde1bc36fe0e91d", size = 80605, upload-time = "2025-10-18T13:46:44.63Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ad/bd/d47ee02312640fcf26c7e1c807402d5c5eab468571153a94ec8f7ada0e46/uvicorn-0.22.0-py3-none-any.whl", hash = "sha256:e9434d3bbf05f310e762147f769c9f21235ee118ba2d2bf1155a7196448bd996", size = 58345, upload-time = "2023-04-28T00:53:38.517Z" }, + { url = "https://files.pythonhosted.org/packages/ee/d9/d88e73ca598f4f6ff671fb5fde8a32925c2e08a637303a1d12883c7305fa/uvicorn-0.38.0-py3-none-any.whl", hash = "sha256:48c0afd214ceb59340075b4a052ea1ee91c16fbc2a9b1469cca0e54566977b02", size = 68109, upload-time = "2025-10-18T13:46:42.958Z" }, ] [[package]] @@ -1872,75 +1857,68 @@ sdist = { url = "https://files.pythonhosted.org/packages/84/a0/cb53fb64b52123513 [[package]] name = "vine" -version = "1.3.0" +version = "5.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/1c/e1/79fb8046e607dd6c2ad05c9b8ebac9d0bd31d086a08f02699e96fc5b3046/vine-1.3.0.tar.gz", hash = "sha256:133ee6d7a9016f177ddeaf191c1f58421a1dcc6ee9a42c58b34bed40e1d2cd87", size = 51953, upload-time = "2019-03-19T08:56:37.426Z" } +sdist = { url = "https://files.pythonhosted.org/packages/bd/e4/d07b5f29d283596b9727dd5275ccbceb63c44a1a82aa9e4bfd20426762ac/vine-5.1.0.tar.gz", hash = "sha256:8b62e981d35c41049211cf62a0a1242d8c1ee9bd15bb196ce38aefd6799e61e0", size = 48980, upload-time = "2023-11-05T08:46:53.857Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7f/60/82c03047396126c8331ceb64da1dc52d4f1317209f32e8fe286d0c07365a/vine-1.3.0-py2.py3-none-any.whl", hash = "sha256:ea4947cc56d1fd6f2095c8d543ee25dad966f78692528e68b4fada11ba3f98af", size = 14174, upload-time = "2019-03-19T08:56:34.951Z" }, + { url = "https://files.pythonhosted.org/packages/03/ff/7c0c86c43b3cbb927e0ccc0255cb4057ceba4799cd44ae95174ce8e8b5b2/vine-5.1.0-py3-none-any.whl", hash = "sha256:40fdf3c48b2cfe1c38a49e9ae2da6fda88e4794c810050a728bd7413811fb1dc", size = 9636, upload-time = "2023-11-05T08:46:51.205Z" }, ] [[package]] name = "watchdog" -version = "2.1.1" +version = "6.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/23/7c/82cafb290b818c331192e52609af8d41c34b55f468957ba5bd0a8d2cb776/watchdog-2.1.1.tar.gz", hash = "sha256:2894440b4ea95a6ef4c5d152deedbe270cae46092682710b7028a04d6a6980f6", size = 105882, upload-time = "2021-05-10T13:51:02.629Z" } +sdist = { url = "https://files.pythonhosted.org/packages/db/7d/7f3d619e951c88ed75c6037b246ddcf2d322812ee8ea189be89511721d54/watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282", size = 131220, upload-time = "2024-11-01T14:07:13.037Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/bc/27/6f250c6a534b8811dcd0efcd5f9574dd2b8c077571aa66544947b0b76d0c/watchdog-2.1.1-py3-none-manylinux2014_aarch64.whl", hash = "sha256:aa59afc87a892ed92d7d88d09f4b736f1336fc35540b403da7ee00c3be74bd07", size = 74713, upload-time = "2021-05-10T13:50:46.671Z" }, - { url = "https://files.pythonhosted.org/packages/ad/5f/3813b46bd10efa4870798850af2685cc3cce6e989d5a3397df0ee1cfe0e6/watchdog-2.1.1-py3-none-manylinux2014_armv7l.whl", hash = "sha256:a1b3f76e2a0713b406348dd5b9df2aa02bdd741a6ddf54f4c6410b395e077502", size = 74715, upload-time = "2021-05-10T13:50:48.086Z" }, - { url = "https://files.pythonhosted.org/packages/81/29/6abfafa77d6c6ead43ba92fd5537fd2fc33f7dc916460457d06cba45a398/watchdog-2.1.1-py3-none-manylinux2014_i686.whl", hash = "sha256:9f1b124fe2d4a1f37b7068f6289c2b1eba44859eb790bf6bd709adff224a5469", size = 74710, upload-time = "2021-05-10T13:50:49.983Z" }, - { url = "https://files.pythonhosted.org/packages/34/87/5298db4bf7bef093254bedd48fee54a3fc63f30185b0f2359d0bb8f213a4/watchdog-2.1.1-py3-none-manylinux2014_ppc64.whl", hash = "sha256:a9005f968220b715101d5fcdde5f5deda54f0d1873f618724f547797171f5e97", size = 74711, upload-time = "2021-05-10T13:50:51.297Z" }, - { url = "https://files.pythonhosted.org/packages/0d/5a/629a27cdb7c76744402598c76c0170d9298ecb61bb9238143811d1089897/watchdog-2.1.1-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:027c532e2fd3367d55fe235510fc304381a6cc88d0dcd619403e57ffbd83c1d2", size = 74714, upload-time = "2021-05-10T13:50:52.802Z" }, - { url = "https://files.pythonhosted.org/packages/fb/ef/5d2a010e6dea46260103a0615e7f433833a37dcee851e743cbf039a85b82/watchdog-2.1.1-py3-none-manylinux2014_s390x.whl", hash = "sha256:4d83c89ba24bd67b7a7d5752a4ef953ec40db69d4d30582bd1f27d3ecb6b61b0", size = 74714, upload-time = "2021-05-10T13:50:54.87Z" }, - { url = "https://files.pythonhosted.org/packages/58/f6/6b538562aaa62294ca0a1d18b59d9fcb1a43fe166fa5b3a258f445d64119/watchdog-2.1.1-py3-none-manylinux2014_x86_64.whl", hash = "sha256:67c645b1e500cc74d550e9aad4829309c5084dc55e8dc4e1c25d5da23e5be239", size = 74714, upload-time = "2021-05-10T13:50:56.916Z" }, - { url = "https://files.pythonhosted.org/packages/73/8f/cb225682a508d2c43f6a1f4cfe274a75a2e156ec2d73af055d5d47542f26/watchdog-2.1.1-py3-none-win32.whl", hash = "sha256:12645d41d7307601b318c48861e776ce7a9fdcad9f74961013ec39037050582c", size = 74698, upload-time = "2021-05-10T13:50:58.739Z" }, - { url = "https://files.pythonhosted.org/packages/85/64/592c43792c0f6b18b031d5944ba1c36d4a2775d72cb06c4088050ab4834a/watchdog-2.1.1-py3-none-win_amd64.whl", hash = "sha256:16078cd241a95124acd4d8d3efba2140faec9300674b12413cc08be11b825d56", size = 74701, upload-time = "2021-05-10T13:50:59.987Z" }, - { url = "https://files.pythonhosted.org/packages/49/5c/69074682ce2e5dbe701755d778cdf5480448462e901ea088cc7e6e2c8261/watchdog-2.1.1-py3-none-win_ia64.whl", hash = "sha256:20d4cabfa2ad7239995d81a0163bc0264a3e104a64f33c6f0a21ad75a0d915d9", size = 74701, upload-time = "2021-05-10T13:51:01.299Z" }, + { url = "https://files.pythonhosted.org/packages/68/98/b0345cabdce2041a01293ba483333582891a3bd5769b08eceb0d406056ef/watchdog-6.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:490ab2ef84f11129844c23fb14ecf30ef3d8a6abafd3754a6f75ca1e6654136c", size = 96480, upload-time = "2024-11-01T14:06:42.952Z" }, + { url = "https://files.pythonhosted.org/packages/85/83/cdf13902c626b28eedef7ec4f10745c52aad8a8fe7eb04ed7b1f111ca20e/watchdog-6.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:76aae96b00ae814b181bb25b1b98076d5fc84e8a53cd8885a318b42b6d3a5134", size = 88451, upload-time = "2024-11-01T14:06:45.084Z" }, + { url = "https://files.pythonhosted.org/packages/fe/c4/225c87bae08c8b9ec99030cd48ae9c4eca050a59bf5c2255853e18c87b50/watchdog-6.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a175f755fc2279e0b7312c0035d52e27211a5bc39719dd529625b1930917345b", size = 89057, upload-time = "2024-11-01T14:06:47.324Z" }, + { url = "https://files.pythonhosted.org/packages/a9/c7/ca4bf3e518cb57a686b2feb4f55a1892fd9a3dd13f470fca14e00f80ea36/watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13", size = 79079, upload-time = "2024-11-01T14:06:59.472Z" }, + { url = "https://files.pythonhosted.org/packages/5c/51/d46dc9332f9a647593c947b4b88e2381c8dfc0942d15b8edc0310fa4abb1/watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379", size = 79078, upload-time = "2024-11-01T14:07:01.431Z" }, + { url = "https://files.pythonhosted.org/packages/d4/57/04edbf5e169cd318d5f07b4766fee38e825d64b6913ca157ca32d1a42267/watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e", size = 79076, upload-time = "2024-11-01T14:07:02.568Z" }, + { url = "https://files.pythonhosted.org/packages/ab/cc/da8422b300e13cb187d2203f20b9253e91058aaf7db65b74142013478e66/watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f", size = 79077, upload-time = "2024-11-01T14:07:03.893Z" }, + { url = "https://files.pythonhosted.org/packages/2c/3b/b8964e04ae1a025c44ba8e4291f86e97fac443bca31de8bd98d3263d2fcf/watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26", size = 79078, upload-time = "2024-11-01T14:07:05.189Z" }, + { url = "https://files.pythonhosted.org/packages/62/ae/a696eb424bedff7407801c257d4b1afda455fe40821a2be430e173660e81/watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c", size = 79077, upload-time = "2024-11-01T14:07:06.376Z" }, + { url = "https://files.pythonhosted.org/packages/b5/e8/dbf020b4d98251a9860752a094d09a65e1b436ad181faf929983f697048f/watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2", size = 79078, upload-time = "2024-11-01T14:07:07.547Z" }, + { url = "https://files.pythonhosted.org/packages/07/f6/d0e5b343768e8bcb4cda79f0f2f55051bf26177ecd5651f84c07567461cf/watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a", size = 79065, upload-time = "2024-11-01T14:07:09.525Z" }, + { url = "https://files.pythonhosted.org/packages/db/d9/c495884c6e548fce18a8f40568ff120bc3a4b7b99813081c8ac0c936fa64/watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680", size = 79070, upload-time = "2024-11-01T14:07:10.686Z" }, + { url = "https://files.pythonhosted.org/packages/33/e8/e40370e6d74ddba47f002a32919d91310d6074130fe4e17dabcafc15cbf1/watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f", size = 79067, upload-time = "2024-11-01T14:07:11.845Z" }, ] [[package]] name = "wcwidth" -version = "0.5.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c2/62/a7c072fbfefb2980a00f99ca994279cb9ecf310cb2e6b2a4d2a28fe192b3/wcwidth-0.5.3.tar.gz", hash = "sha256:53123b7af053c74e9fe2e92ac810301f6139e64379031f7124574212fb3b4091", size = 157587, upload-time = "2026-01-31T03:52:10.92Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3c/c1/d73f12f8cdb1891334a2ccf7389eed244d3941e74d80dd220badb937f3fb/wcwidth-0.5.3-py3-none-any.whl", hash = "sha256:d584eff31cd4753e1e5ff6c12e1edfdb324c995713f75d26c29807bb84bf649e", size = 92981, upload-time = "2026-01-31T03:52:09.14Z" }, -] - -[[package]] -name = "webencodings" -version = "0.5.1" +version = "0.6.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0b/02/ae6ceac1baeda530866a85075641cec12989bd8d31af6d5ab4a3e8c92f47/webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923", size = 9721, upload-time = "2017-04-05T20:21:34.189Z" } +sdist = { url = "https://files.pythonhosted.org/packages/35/a2/8e3becb46433538a38726c948d3399905a4c7cabd0df578ede5dc51f0ec2/wcwidth-0.6.0.tar.gz", hash = "sha256:cdc4e4262d6ef9a1a57e018384cbeb1208d8abbc64176027e2c2455c81313159", size = 159684, upload-time = "2026-02-06T19:19:40.919Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", size = 11774, upload-time = "2017-04-05T20:21:32.581Z" }, + { url = "https://files.pythonhosted.org/packages/68/5a/199c59e0a824a3db2b89c5d2dade7ab5f9624dbf6448dc291b46d5ec94d3/wcwidth-0.6.0-py3-none-any.whl", hash = "sha256:1a3a1e510b553315f8e146c54764f4fb6264ffad731b3d78088cdb1478ffbdad", size = 94189, upload-time = "2026-02-06T19:19:39.646Z" }, ] [[package]] name = "websockets" -version = "10.4" +version = "16.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/85/dc/549a807a53c13fd4a8dac286f117a7a71260defea9ec0c05d6027f2ae273/websockets-10.4.tar.gz", hash = "sha256:eef610b23933c54d5d921c92578ae5f89813438fded840c2e9809d378dc765d3", size = 84877, upload-time = "2022-10-25T20:12:37.712Z" } +sdist = { url = "https://files.pythonhosted.org/packages/04/24/4b2031d72e840ce4c1ccb255f693b15c334757fc50023e4db9537080b8c4/websockets-16.0.tar.gz", hash = "sha256:5f6261a5e56e8d5c42a4497b364ea24d94d9563e8fbd44e78ac40879c60179b5", size = 179346, upload-time = "2026-01-10T09:23:47.181Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/14/88/81c08fb3418c5aedf3776333f29443599729509a4f673d6598dd769d3d6b/websockets-10.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d58804e996d7d2307173d56c297cf7bc132c52df27a3efaac5e8d43e36c21c48", size = 100633, upload-time = "2022-10-25T20:10:29.571Z" }, - { url = "https://files.pythonhosted.org/packages/68/bd/c8bd8354fc629863a2db39c9182d40297f47dfb2ed3e178bc83041ce044b/websockets-10.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bc0b82d728fe21a0d03e65f81980abbbcb13b5387f733a1a870672c5be26edab", size = 97870, upload-time = "2022-10-25T20:10:33.577Z" }, - { url = "https://files.pythonhosted.org/packages/20/7a/bd0ce7ac1cfafc76c84d6e8051bcbd0f7def8e45207230833bd6ff77a41d/websockets-10.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ba089c499e1f4155d2a3c2a05d2878a3428cf321c848f2b5a45ce55f0d7d310c", size = 97945, upload-time = "2022-10-25T20:10:34.736Z" }, - { url = "https://files.pythonhosted.org/packages/25/a7/4e32f8edfc26339d8d170fe539e0b83a329c42d974dacfe07a0566390aef/websockets-10.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33d69ca7612f0ddff3316b0c7b33ca180d464ecac2d115805c044bf0a3b0d032", size = 107446, upload-time = "2022-10-25T20:10:36.154Z" }, - { url = "https://files.pythonhosted.org/packages/1c/4b/cab8fed34c3a29d4594ff77234f6e6b45feb35331f1c12fccf92ca5486dd/websockets-10.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62e627f6b6d4aed919a2052efc408da7a545c606268d5ab5bfab4432734b82b4", size = 106455, upload-time = "2022-10-25T20:10:37.774Z" }, - { url = "https://files.pythonhosted.org/packages/4d/6f/2388f9304cdaa0215b6388f837c6dbfe6d63ac1bba8c196e3b14eea1831e/websockets-10.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38ea7b82bfcae927eeffc55d2ffa31665dc7fec7b8dc654506b8e5a518eb4d50", size = 106763, upload-time = "2022-10-25T20:10:39.035Z" }, - { url = "https://files.pythonhosted.org/packages/0c/56/b2d373ed19b4e7b6c5c7630d598ba10473fa6131e67e69590214ab18bc09/websockets-10.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e0cb5cc6ece6ffa75baccfd5c02cffe776f3f5c8bf486811f9d3ea3453676ce8", size = 111489, upload-time = "2022-10-25T20:10:40.132Z" }, - { url = "https://files.pythonhosted.org/packages/a1/f6/83da14582fbb0496c47a4c039bd6e802886a0c300e9795c0f839fd1498e3/websockets-10.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:ae5e95cfb53ab1da62185e23b3130e11d64431179debac6dc3c6acf08760e9b1", size = 110721, upload-time = "2022-10-25T20:10:41.174Z" }, - { url = "https://files.pythonhosted.org/packages/37/02/ef21ca4698c2fd950250e5ac397fd07b0c9f16bbd073d0ea64c25baef9c1/websockets-10.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7c584f366f46ba667cfa66020344886cf47088e79c9b9d39c84ce9ea98aaa331", size = 111343, upload-time = "2022-10-25T20:10:42.463Z" }, - { url = "https://files.pythonhosted.org/packages/a1/6f/60e5f6e114b6077683d74da5df0d4af647a9e6d2a18b4698f577b2cb7c14/websockets-10.4-cp310-cp310-win32.whl", hash = "sha256:b029fb2032ae4724d8ae8d4f6b363f2cc39e4c7b12454df8df7f0f563ed3e61a", size = 100918, upload-time = "2022-10-25T20:10:43.785Z" }, - { url = "https://files.pythonhosted.org/packages/1e/76/163a18626001465a309bf74b6aeb301d7092e304637fe00f89d7efc75c44/websockets-10.4-cp310-cp310-win_amd64.whl", hash = "sha256:8dc96f64ae43dde92530775e9cb169979f414dcf5cff670455d81a6823b42089", size = 101442, upload-time = "2022-10-25T20:10:45.003Z" }, + { url = "https://files.pythonhosted.org/packages/cc/9c/baa8456050d1c1b08dd0ec7346026668cbc6f145ab4e314d707bb845bf0d/websockets-16.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:878b336ac47938b474c8f982ac2f7266a540adc3fa4ad74ae96fea9823a02cc9", size = 177364, upload-time = "2026-01-10T09:22:59.333Z" }, + { url = "https://files.pythonhosted.org/packages/7e/0c/8811fc53e9bcff68fe7de2bcbe75116a8d959ac699a3200f4847a8925210/websockets-16.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:52a0fec0e6c8d9a784c2c78276a48a2bdf099e4ccc2a4cad53b27718dbfd0230", size = 175039, upload-time = "2026-01-10T09:23:01.171Z" }, + { url = "https://files.pythonhosted.org/packages/aa/82/39a5f910cb99ec0b59e482971238c845af9220d3ab9fa76dd9162cda9d62/websockets-16.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e6578ed5b6981005df1860a56e3617f14a6c307e6a71b4fff8c48fdc50f3ed2c", size = 175323, upload-time = "2026-01-10T09:23:02.341Z" }, + { url = "https://files.pythonhosted.org/packages/bd/28/0a25ee5342eb5d5f297d992a77e56892ecb65e7854c7898fb7d35e9b33bd/websockets-16.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:95724e638f0f9c350bb1c2b0a7ad0e83d9cc0c9259f3ea94e40d7b02a2179ae5", size = 184975, upload-time = "2026-01-10T09:23:03.756Z" }, + { url = "https://files.pythonhosted.org/packages/f9/66/27ea52741752f5107c2e41fda05e8395a682a1e11c4e592a809a90c6a506/websockets-16.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c0204dc62a89dc9d50d682412c10b3542d748260d743500a85c13cd1ee4bde82", size = 186203, upload-time = "2026-01-10T09:23:05.01Z" }, + { url = "https://files.pythonhosted.org/packages/37/e5/8e32857371406a757816a2b471939d51c463509be73fa538216ea52b792a/websockets-16.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:52ac480f44d32970d66763115edea932f1c5b1312de36df06d6b219f6741eed8", size = 185653, upload-time = "2026-01-10T09:23:06.301Z" }, + { url = "https://files.pythonhosted.org/packages/9b/67/f926bac29882894669368dc73f4da900fcdf47955d0a0185d60103df5737/websockets-16.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6e5a82b677f8f6f59e8dfc34ec06ca6b5b48bc4fcda346acd093694cc2c24d8f", size = 184920, upload-time = "2026-01-10T09:23:07.492Z" }, + { url = "https://files.pythonhosted.org/packages/3c/a1/3d6ccdcd125b0a42a311bcd15a7f705d688f73b2a22d8cf1c0875d35d34a/websockets-16.0-cp313-cp313-win32.whl", hash = "sha256:abf050a199613f64c886ea10f38b47770a65154dc37181bfaff70c160f45315a", size = 178255, upload-time = "2026-01-10T09:23:09.245Z" }, + { url = "https://files.pythonhosted.org/packages/6b/ae/90366304d7c2ce80f9b826096a9e9048b4bb760e44d3b873bb272cba696b/websockets-16.0-cp313-cp313-win_amd64.whl", hash = "sha256:3425ac5cf448801335d6fdc7ae1eb22072055417a96cc6b31b3861f455fbc156", size = 178689, upload-time = "2026-01-10T09:23:10.483Z" }, + { url = "https://files.pythonhosted.org/packages/6f/28/258ebab549c2bf3e64d2b0217b973467394a9cea8c42f70418ca2c5d0d2e/websockets-16.0-py3-none-any.whl", hash = "sha256:1637db62fad1dc833276dded54215f2c7fa46912301a24bd94d45d46a011ceec", size = 171598, upload-time = "2026-01-10T09:23:45.395Z" }, ] [[package]] name = "whitenoise" -version = "5.2.0" +version = "6.11.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ac/8a/cd6346ffd78f5ff9aa9ce750f3e8d75cde7c60fbe197ac10bdea49d61cff/whitenoise-5.2.0.tar.gz", hash = "sha256:05ce0be39ad85740a78750c86a93485c40f08ad8c62a6006de0233765996e5c7", size = 45096, upload-time = "2020-08-04T09:33:38.557Z" } +sdist = { url = "https://files.pythonhosted.org/packages/15/95/8c81ec6b6ebcbf8aca2de7603070ccf37dbb873b03f20708e0f7c1664bc6/whitenoise-6.11.0.tar.gz", hash = "sha256:0f5bfce6061ae6611cd9396a8231e088722e4fc67bc13a111be74c738d99375f", size = 26432, upload-time = "2025-09-18T09:16:10.995Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/50/83/5d91949e370e52578a99ef6391c3b3e19f9fd1f5b4f58d5cbd6e2862d4a8/whitenoise-5.2.0-py2.py3-none-any.whl", hash = "sha256:05d00198c777028d72d8b0bbd234db605ef6d60e9410125124002518a48e515d", size = 19775, upload-time = "2020-08-04T09:33:41.561Z" }, + { url = "https://files.pythonhosted.org/packages/6c/e9/4366332f9295fe0647d7d3251ce18f5615fbcb12d02c79a26f8dba9221b3/whitenoise-6.11.0-py3-none-any.whl", hash = "sha256:b2aeb45950597236f53b5342b3121c5de69c8da0109362aee506ce88e022d258", size = 20197, upload-time = "2025-09-18T09:16:09.754Z" }, ] [[package]] @@ -1958,10 +1936,10 @@ version = "8.2" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/86/a4/77daa5ba398996d16bb43fc721599d27d03eae68fe3c799de1963c72e228/zope_interface-8.2.tar.gz", hash = "sha256:afb20c371a601d261b4f6edb53c3c418c249db1a9717b0baafc9a9bb39ba1224", size = 254019, upload-time = "2026-01-09T07:51:07.253Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b1/fa/6d9eb3a33998a3019d7eb4fa1802d01d6602fad90e0aea443e6e0fe8e49a/zope_interface-8.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:788c293f3165964ec6527b2d861072c68eef53425213f36d3893ebee89a89623", size = 207541, upload-time = "2026-01-09T08:04:55.378Z" }, - { url = "https://files.pythonhosted.org/packages/19/8c/ad23c96fdee84cb1f768f6695dac187cc26e9038e01c69713ba0f7dc46ab/zope_interface-8.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9a4e785097e741a1c953b3970ce28f2823bd63c00adc5d276f2981dd66c96c15", size = 208075, upload-time = "2026-01-09T08:04:57.118Z" }, - { url = "https://files.pythonhosted.org/packages/dd/35/1bfd5fec31a307f0cf4065ee74ade63858ded3e2a71e248f1508118fcc95/zope_interface-8.2-cp310-cp310-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:16c69da19a06566664ddd4785f37cad5693a51d48df1515d264c20d005d322e2", size = 249528, upload-time = "2026-01-09T08:04:59.074Z" }, - { url = "https://files.pythonhosted.org/packages/c6/3a/5d50b5fdb0f8226a2edff6adb7efdd3762ec95dff827dbab1761cb9a9e85/zope_interface-8.2-cp310-cp310-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:c31acfa3d7cde48bec45701b0e1f4698daffc378f559bfb296837d8c834732f6", size = 254646, upload-time = "2026-01-09T08:05:00.964Z" }, - { url = "https://files.pythonhosted.org/packages/2f/2a/ee7d675e151578eaf77828b8faac2b7ed9a69fead350bf5cf0e4afe7c73d/zope_interface-8.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0723507127f8269b8f3f22663168f717e9c9742107d1b6c9f419df561b71aa6d", size = 255083, upload-time = "2026-01-09T08:05:02.857Z" }, - { url = "https://files.pythonhosted.org/packages/5d/07/99e2342f976c3700e142eddc01524e375a9e9078869a6885d9c72f3a3659/zope_interface-8.2-cp310-cp310-win_amd64.whl", hash = "sha256:3bf73a910bb27344def2d301a03329c559a79b308e1e584686b74171d736be4e", size = 211924, upload-time = "2026-01-09T08:05:04.702Z" }, + { url = "https://files.pythonhosted.org/packages/66/47/45188fb101fa060b20e6090e500682398ab415e516a0c228fbb22bc7def2/zope_interface-8.2-cp313-cp313-macosx_10_9_x86_64.whl", hash = "sha256:6068322004a0158c80dfd4708dfb103a899635408c67c3b10e9acec4dbacefec", size = 209170, upload-time = "2026-01-09T08:05:26.616Z" }, + { url = "https://files.pythonhosted.org/packages/09/03/f6b9336c03c2b48403c4eb73a1ec961d94dc2fb5354c583dfb5fa05fd41f/zope_interface-8.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2499de92e8275d0dd68f84425b3e19e9268cd1fa8507997900fa4175f157733c", size = 209229, upload-time = "2026-01-09T08:05:28.521Z" }, + { url = "https://files.pythonhosted.org/packages/07/b1/65fe1dca708569f302ade02e6cdca309eab6752bc9f80105514f5b708651/zope_interface-8.2-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:f777e68c76208503609c83ca021a6864902b646530a1a39abb9ed310d1100664", size = 259393, upload-time = "2026-01-09T08:05:29.897Z" }, + { url = "https://files.pythonhosted.org/packages/eb/a5/97b49cfceb6ed53d3dcfb3f3ebf24d83b5553194f0337fbbb3a9fec6cf78/zope_interface-8.2-cp313-cp313-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:9b05a919fdb0ed6ea942e5a7800e09a8b6cdae6f98fee1bef1c9d1a3fc43aaa0", size = 264863, upload-time = "2026-01-09T08:05:31.501Z" }, + { url = "https://files.pythonhosted.org/packages/cb/02/0b7a77292810efe3a0586a505b077ebafd5114e10c6e6e659f0c8e387e1f/zope_interface-8.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ccc62b5712dd7bd64cfba3ee63089fb11e840f5914b990033beeae3b2180b6cb", size = 264369, upload-time = "2026-01-09T08:05:32.941Z" }, + { url = "https://files.pythonhosted.org/packages/fb/1d/0d1ff3846302ed1b5bbf659316d8084b30106770a5f346b7ff4e9f540f80/zope_interface-8.2-cp313-cp313-win_amd64.whl", hash = "sha256:34f877d1d3bb7565c494ed93828fa6417641ca26faf6e8f044e0d0d500807028", size = 212447, upload-time = "2026-01-09T08:05:35.064Z" }, ] From c3d31c2abc12058f822d957216e798f0d33b6f77 Mon Sep 17 00:00:00 2001 From: didayolo Date: Tue, 10 Mar 2026 16:02:26 +0100 Subject: [PATCH 06/77] Add instructions for 1.24 --- .../Upgrading_Codabench/Postgres-18.md | 66 +++++++++++++++++++ documentation/mkdocs.yml | 1 + 2 files changed, 67 insertions(+) create mode 100644 documentation/docs/Developers_and_Administrators/Upgrading_Codabench/Postgres-18.md diff --git a/documentation/docs/Developers_and_Administrators/Upgrading_Codabench/Postgres-18.md b/documentation/docs/Developers_and_Administrators/Upgrading_Codabench/Postgres-18.md new file mode 100644 index 000000000..d64359d91 --- /dev/null +++ b/documentation/docs/Developers_and_Administrators/Upgrading_Codabench/Postgres-18.md @@ -0,0 +1,66 @@ +!!! note "After upgrading from Codabench <1.24.0, you will need to perform important manual interventions." + +## Rabbit (#2061) +We also need to log into the RabbitMQ interface and enable the flags it wants us to enable after upgrading. + +RabbitMQ port, username and password to access the interface are defined in the `.env` file. + +Capture d’écran 2026-02-25 à 12 50 32 + +More information about feature flags [here](https://www.rabbitmq.com/docs/feature-flags) + + +## Database (Postgres 12 -> 18) (#2091) +### 1. Maintenance mode on to avoid update on the database during the upgrade: + +```sh +touch maintenance_mode/maintenance.on +git pull +``` + +### 2. Create the new `postgres.conf` file from the sample: + +```sh +cp my-postgres_sample.conf my-postgres.conf +``` + +### 3. Rebuild docker containers to take into account the new images: + +```sh +docker compose build --no-cache +``` + +### 4. Dump the database, remove it and reload it on the new configuration: + +```sh +# Dump database +docker compose exec db bash -lc 'PGPASSWORD="$DB_PASSWORD" pg_dump -Fc -U "$DB_USERNAME" -d "$DB_NAME" -f /app/backups/upgrade-1.24.dump' +``` + +```sh +# Check that dump file is not empty +docker compose exec db bash -lc 'ls -lh /app/backups/upgrade-1.24.dump && pg_restore -l /app/backups/upgrade-1.24.dump | head' +``` + +**/!\ Dangerous operation here: confirm that your dump worked before removing the database!** + +```sh +# Remove database +sudo rm -rf var/postgres +``` + +```sh +# Launch the new containers (containing the updated databse image and Restore from backup) +docker compose up -d db +docker compose exec db bash -lc 'PGPASSWORD="$DB_PASSWORD" pg_restore --verbose --clean --no-acl --no-owner -h $DB_HOST -U "$DB_USERNAME" -d "$DB_NAME" /app/backups/upgrade-1.24.dump' +``` + +_See [this](https://www.postgresql.org/docs/18/upgrading.html) for more details._ + +### 5 Restart the rest of the services and disable maintenance mode: + +```sh +docker compose up -d +rm maintenance_mode/maintenance.on +``` + diff --git a/documentation/mkdocs.yml b/documentation/mkdocs.yml index b452cf2fb..341169c8f 100644 --- a/documentation/mkdocs.yml +++ b/documentation/mkdocs.yml @@ -166,6 +166,7 @@ nav: - Minio Image Upgrade (version < 1.21.0): Developers_and_Administrators/Upgrading_Codabench/Minio-image.md - Docker-Py (version < 1.22.0): Developers_and_Administrators/Upgrading_Codabench/Docker-py.md - Django 4 Upgrades (version < 1.23.0): Developers_and_Administrators/Upgrading_Codabench/Django-4.md + - Postgres 18 upgrade (version < 1.24.0): Developers_and_Administrators/Upgrading_Codabench/Postgres-18.md - Newsletters Archive: - 2024: Newsletters_Archive/CodaLab-in-2024.md - 2025: Newsletters_Archive/CodaLab-in-2025.md From e91062e13bbdd2d4ff65c8bf6c78504df6d14f75 Mon Sep 17 00:00:00 2001 From: didayolo Date: Tue, 10 Mar 2026 16:03:59 +0100 Subject: [PATCH 07/77] remove github numbers --- .../Upgrading_Codabench/Postgres-18.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/documentation/docs/Developers_and_Administrators/Upgrading_Codabench/Postgres-18.md b/documentation/docs/Developers_and_Administrators/Upgrading_Codabench/Postgres-18.md index d64359d91..2a5efdddc 100644 --- a/documentation/docs/Developers_and_Administrators/Upgrading_Codabench/Postgres-18.md +++ b/documentation/docs/Developers_and_Administrators/Upgrading_Codabench/Postgres-18.md @@ -1,6 +1,6 @@ !!! note "After upgrading from Codabench <1.24.0, you will need to perform important manual interventions." -## Rabbit (#2061) +## Rabbit We also need to log into the RabbitMQ interface and enable the flags it wants us to enable after upgrading. RabbitMQ port, username and password to access the interface are defined in the `.env` file. @@ -10,7 +10,7 @@ RabbitMQ port, username and password to access the interface are defined in the More information about feature flags [here](https://www.rabbitmq.com/docs/feature-flags) -## Database (Postgres 12 -> 18) (#2091) +## Database (Postgres 12 -> 18) ### 1. Maintenance mode on to avoid update on the database during the upgrade: ```sh From 3554b3bdb2905b8cae7256a55a834eedcc669966 Mon Sep 17 00:00:00 2001 From: didayolo Date: Tue, 10 Mar 2026 16:08:40 +0100 Subject: [PATCH 08/77] Fix screenshot --- .../Upgrading_Codabench/Postgres-18.md | 2 +- ...36-6659efd8-e953-42dd-b885-629c41beb1c7.png | Bin 0 -> 279695 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 documentation/docs/Developers_and_Administrators/_attachments/554725936-6659efd8-e953-42dd-b885-629c41beb1c7.png diff --git a/documentation/docs/Developers_and_Administrators/Upgrading_Codabench/Postgres-18.md b/documentation/docs/Developers_and_Administrators/Upgrading_Codabench/Postgres-18.md index 2a5efdddc..a872e8629 100644 --- a/documentation/docs/Developers_and_Administrators/Upgrading_Codabench/Postgres-18.md +++ b/documentation/docs/Developers_and_Administrators/Upgrading_Codabench/Postgres-18.md @@ -5,7 +5,7 @@ We also need to log into the RabbitMQ interface and enable the flags it wants us RabbitMQ port, username and password to access the interface are defined in the `.env` file. -Capture d’écran 2026-02-25 à 12 50 32 +![Rabbit-screenshot](../_attachments/554725936-6659efd8-e953-42dd-b885-629c41beb1c7.png) More information about feature flags [here](https://www.rabbitmq.com/docs/feature-flags) diff --git a/documentation/docs/Developers_and_Administrators/_attachments/554725936-6659efd8-e953-42dd-b885-629c41beb1c7.png b/documentation/docs/Developers_and_Administrators/_attachments/554725936-6659efd8-e953-42dd-b885-629c41beb1c7.png new file mode 100644 index 0000000000000000000000000000000000000000..d383aabd866479d3ad1af5d476338b55305e8146 GIT binary patch literal 279695 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%0Ab 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
  • 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%0DBHFD`xa3^ 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

    )P8jznN+tV^%?k@}tTI$a2yDP4YER7L4 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 literal 0 HcmV?d00001 From 89ffda3c773621bef4d1f1651e21938f1e6d3562 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 13 Mar 2026 14:20:26 +0000 Subject: [PATCH 09/77] Bump social-auth-app-django from 5.4.3 to 5.6.0 Bumps [social-auth-app-django](https://github.com/python-social-auth/social-app-django) from 5.4.3 to 5.6.0. - [Release notes](https://github.com/python-social-auth/social-app-django/releases) - [Changelog](https://github.com/python-social-auth/social-app-django/blob/master/CHANGELOG.md) - [Commits](https://github.com/python-social-auth/social-app-django/compare/5.4.3...5.6.0) --- updated-dependencies: - dependency-name: social-auth-app-django dependency-version: 5.6.0 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- pyproject.toml | 2 +- uv.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index d12809e07..dab7e9f7b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,7 +13,7 @@ dependencies = [ "django==5.2.12", "django-oauth-toolkit==1.6.3", "social-auth-core==4.8.5", - "social-auth-app-django==5.4.3", + "social-auth-app-django==5.6.0", "django-extensions==4.1.0", "channels==4.3.2", "channels-redis==4.0.0", diff --git a/uv.lock b/uv.lock index 0ca8733b1..5ff09ea1e 100644 --- a/uv.lock +++ b/uv.lock @@ -483,7 +483,7 @@ requires-dist = [ { name = "requests", specifier = "==2.32.5" }, { name = "s3transfer", specifier = "==0.16.0" }, { name = "setuptools", specifier = "==82.0.0" }, - { name = "social-auth-app-django", specifier = "==5.4.3" }, + { name = "social-auth-app-django", specifier = "==5.6.0" }, { name = "social-auth-core", specifier = "==4.8.5" }, { name = "twisted", specifier = "==25.5.0" }, { name = "tzdata", specifier = ">=2025.3" }, @@ -1704,15 +1704,15 @@ wheels = [ [[package]] name = "social-auth-app-django" -version = "5.4.3" +version = "5.6.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "django" }, { name = "social-auth-core" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/2a/07/bb2465e4116d4761b028bd07b99087009caa81c1511c886d74c4ccece3a2/social_auth_app_django-5.4.3.tar.gz", hash = "sha256:d1f4286d5ca1e512c9b2f686e7ecb2a0128148f1a33d853b69dc07b58508362e", size = 24860, upload-time = "2025-02-13T13:07:34.557Z" } +sdist = { url = "https://files.pythonhosted.org/packages/4e/7d/cd7e0958db16e478ecdf2137621a46aa95bfd7d3991d29cf15f2bdf18b0a/social_auth_app_django-5.6.0.tar.gz", hash = "sha256:c695501fcbf6fe87f68f5a79e379abe853662f5129e7ec6cb758a75d5b28c888", size = 29195, upload-time = "2025-10-09T11:56:08.48Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e0/cd/43a25dabdf7689109b01ac866848c984594769ec3cbc5ce4c261b4895237/social_auth_app_django-5.4.3-py3-none-any.whl", hash = "sha256:db70b972faeb10ee1ec83d0dc7dbd0558d5f5830417bba317b712b10ff58d031", size = 26241, upload-time = "2025-02-13T13:07:32.787Z" }, + { url = "https://files.pythonhosted.org/packages/1d/02/738d8c89d6d67a25a568fc6a7744949ddf037153705c6d5c676ce25b9812/social_auth_app_django-5.6.0-py3-none-any.whl", hash = "sha256:43ca88cc5cd9161710896165ced58b3155e8aafaaff847e859879194770f138d", size = 28708, upload-time = "2025-10-09T11:56:07.633Z" }, ] [[package]] From db42cbf7278b5628e373b8fb653be85a2d039958 Mon Sep 17 00:00:00 2001 From: didayolo Date: Fri, 27 Feb 2026 21:30:49 +0100 Subject: [PATCH 10/77] Update profile page --- src/apps/profiles/views.py | 15 +- src/static/riot/competitions/public-list.tag | 1 - .../riot/profiles/organization_create.tag | 2 +- .../riot/profiles/organization_edit.tag | 2 +- .../riot/profiles/organization_invite.tag | 2 +- src/static/riot/profiles/profile_account.tag | 2 +- src/static/riot/profiles/profile_detail.tag | 167 +++++++++++++++--- src/static/riot/profiles/profile_edit.tag | 2 +- 8 files changed, 166 insertions(+), 27 deletions(-) diff --git a/src/apps/profiles/views.py b/src/apps/profiles/views.py index 39db7f614..6a20ef535 100644 --- a/src/apps/profiles/views.py +++ b/src/apps/profiles/views.py @@ -19,6 +19,7 @@ from api.serializers.profiles import UserSerializer, OrganizationDetailSerializer, OrganizationEditSerializer, \ UserNotificationSerializer +from api.serializers.competitions import CompetitionSerializerSimple from .forms import SignUpForm, LoginForm, ActivationForm from .models import User, DeletedUser, Organization, Membership from oidc_configurations.models import Auth_Organization @@ -67,7 +68,19 @@ class UserDetailView(LoginRequiredMixin, DetailView): def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) - context['serialized_user'] = json.dumps(UserSerializer(self.get_object()).data) + user = self.get_object() + user_data = UserSerializer(user).data + # Fetch competitions organized by this user + organized_qs = ( + Competition.objects + .filter(created_by=user, published=True) + .order_by("-created_when") + ) + # Serialize into the same shape your public-list cards expect + user_data["competitions_organized"] = CompetitionSerializerSimple( + organized_qs, many=True, context={"request": self.request} + ).data + context["serialized_user"] = json.dumps(user_data).replace(" @@ -253,5 +295,90 @@ .value font-size 15px margin-left 10px + + /* Competition cards (from public-list.tag) */ + .link-no-deco + all unset + text-decoration none + cursor pointer + width 100% + + .tile-wrapper + border solid 1px gainsboro + display inline-flex + background-color #fff + transition all 75ms ease-in-out + color #909090 + width 100% + margin-bottom 6px + + .tile-wrapper:hover + box-shadow 0 3px 4px -1px #cac9c9ff + transition all 75ms ease-in-out + background-color #e6edf2 + border solid 1px #a5b7c5 + + .comp-stats + background-color #344d5e + transition background-color 75ms ease-in-out + + .img-wrapper + padding 5px + align-self center + + .img-wrapper img + max-height 60px !important + max-width 60px !important + margin 0 auto + + .comp-info + flex 1 + padding 0 10px + + .comp-info .heading + text-align left + padding 5px + color #1b1b1b + margin-bottom 0 + + .comp-info .comp-description + text-align left + font-size 13px + line-height 1.15em + margin 0.35em + + .organizer + font-size 13px + text-align left + margin 0.35em + + .comp-stats + background #405e73 + color #e8e8e8 + padding 10px + text-align center + font-size 12px + width 140px + + .loading-indicator + display flex + align-items center + padding 10px 0 + width 100% + margin 0 auto + + .spinner + border 4px solid rgba(0,0,0,.1) + width 28px + height 28px + border-radius 50% + border-top-color #3498db + animation spin 1s ease-in-out infinite + + @keyframes spin + 0% + transform rotate(0deg) + 100% + transform rotate(360deg) diff --git a/src/static/riot/profiles/profile_edit.tag b/src/static/riot/profiles/profile_edit.tag index 7d3dd1bd3..8b3f76d70 100644 --- a/src/static/riot/profiles/profile_edit.tag +++ b/src/static/riot/profiles/profile_edit.tag @@ -73,7 +73,7 @@