From fc2f5e6fd60d4c969e5ad9b207dc0ba5bc0d1b41 Mon Sep 17 00:00:00 2001 From: dereknorrbom Date: Fri, 24 Apr 2026 08:56:18 -0700 Subject: [PATCH 01/11] fix(security): remediate snyk code high findings --- features/steps/dspy_lm_steps.py | 24 +++--- ..._bb3106fe-370b-468e-99a3-4e2f0f8d603f.json | 12 +++ ..._119def15-da75-4cfd-8821-11ff368701e8.json | 12 +++ ..._fe10eb73-79f9-443e-b829-644908da2587.json | 12 +++ ..._4d4990a3-80f7-4614-ba48-80c610a82332.json | 12 +++ ..._0c698d81-7b0f-48c3-96a8-d98dd17b251c.json | 12 +++ ..._409222ef-d7ce-4ed7-9e2f-57aed3fb964c.json | 12 +++ ..._f9e710be-32a0-4617-96ef-f31e94878b42.json | 12 +++ ..._386afea7-fa85-4945-844c-928465a6c369.json | 12 +++ ..._1f0c06ae-f840-4c5a-9ae1-4b94dff21e59.json | 12 +++ ..._0646e9b9-84e8-4038-8cbe-c7c5e2d7e185.json | 12 +++ ..._79cc3b71-d847-41ec-bd50-cbbe5bc3a97d.json | 12 +++ ..._57d04b4c-c2d2-4453-89b2-4ef27303fa3f.json | 12 +++ ..._df954597-0b0e-44ff-9fa3-9f83665c8138.json | 12 +++ ..._e30dcbf4-7e85-4896-80be-56e480bf1695.json | 12 +++ ..._6e20d6e7-d2be-4832-89b2-30c6abf89aa0.json | 12 +++ ..._6135d82e-d50b-4859-8de3-f1470c2f7dc0.json | 12 +++ ..._6eceed3a-ff9e-4a2d-8ae6-4f8cb1bcb1df.json | 12 +++ ..._b2788a6a-b69b-4116-8e8e-14940de60983.json | 12 +++ ..._7513bba8-c923-43df-85a0-858205fe8c82.json | 12 +++ ..._a17aa439-9fd1-467f-89f5-7dae9e68c0d8.json | 12 +++ ..._f75c409a-1627-4ea9-8641-9794b7691b49.json | 12 +++ ..._e70372af-6bfb-4274-a0d4-f9140a530d89.json | 12 +++ ..._72870199-4c20-4efb-a83d-d014cca244b3.json | 12 +++ ..._61deca96-943f-4869-b6a7-f504fcc56475.json | 12 +++ ..._2260ce6e-cfba-4542-abbc-0ccd55a0f83f.json | 12 +++ ..._f4c502bd-043e-4838-a6c7-e443121fb99d.json | 12 +++ ..._d03afa25-5238-4135-9fba-af0e73f24778.json | 12 +++ ..._9a670c09-7d90-453f-bda9-71fcc48c50f5.json | 12 +++ ..._903bd32f-47b0-447b-ac00-804a15e0a93c.json | 12 +++ ..._2759a49f-6870-4de4-abfa-277ed45672c6.json | 12 +++ ..._dc86f7ca-a880-4c20-a7be-36b9af03966b.json | 12 +++ ..._092797f5-5e23-4f52-ac31-d39137fb0845.json | 12 +++ ..._73cbfbaf-affd-4348-9f0e-d16d0abb874c.json | 12 +++ ..._b834751d-ffeb-4ec9-a0d0-04cec76a1270.json | 12 +++ ..._da2f9ca6-5d76-48fc-ae4c-f079f86102f2.json | 12 +++ ..._2eef9c4e-7c66-42a5-a5c6-92ee81745b7d.json | 12 +++ ..._c2181e80-1e98-4568-ae9a-fe3793f4cd06.json | 12 +++ ..._7f0ceba2-9e90-4f01-86d1-d33d396ca1ba.json | 12 +++ ..._8f7d5daa-d91f-495a-954e-597eb886c0c7.json | 12 +++ ..._19e149b7-64d2-44e5-addf-ba31eac72cd3.json | 12 +++ ..._1241202c-e6e9-4973-811e-f07294dce5a0.json | 12 +++ ..._191b393f-2356-4b09-baa7-cdc84ecf7cf3.json | 12 +++ ..._7f415d26-15b3-41c1-bbb9-37ae8728499b.json | 12 +++ ..._efcb3ad6-4b02-4137-9f96-fdf11725a5b1.json | 12 +++ ...-0ca0ee24-65b2-48a9-9a28-bd1c2a47dd20.json | 15 +++- ...-1ae97c97-8459-44a8-a10f-b8efa59a1f45.json | 15 +++- ...-2a84b3ec-8dda-4c72-a8d6-0263b6360cbc.json | 15 +++- ...-2b5834a5-00e9-44bf-9ac8-31982ba771ad.json | 15 +++- ...-4601d213-3f8d-492c-9dc9-1d797ed5b870.json | 15 +++- ...-484c4a71-38fd-4833-80e8-d0c13331a89b.json | 15 +++- ...-523bd9d1-0403-4eed-b520-e237514ba87c.json | 15 +++- ...-5ea4f3f3-0672-4d12-81dc-2f3ee48a5aab.json | 15 +++- ...-6cd25489-78ce-4f56-bbd5-d64408799e4a.json | 15 +++- ...-764532d2-bf4c-4bb8-9e1f-2181c5e10147.json | 15 +++- ...-7b7b4cc5-1f85-49d4-8f10-19769c488495.json | 15 +++- ...-7c5100eb-69dd-41cc-a82e-93e37453712e.json | 15 +++- ...-83a0a0b7-5838-4bbd-8da2-104b6f69895a.json | 15 +++- ...-a8688de4-69e7-4dfa-b19e-cea54c9d8ac6.json | 21 ++++- ...-b318c60d-2286-4ce3-975c-8ea6eb121687.json | 15 +++- ...-bd629431-d583-495d-b53c-e7774216dec5.json | 15 +++- ...-bd86f3f8-4463-4150-bb2f-af9f3c9f76ce.json | 15 +++- ...-d3316263-f772-41ad-9f6c-1e75c8e5f040.json | 15 +++- ...-d43a43c2-c6cb-418f-aa17-773ae8496ac5.json | 15 +++- ...-e9440747-1ad9-4895-bf6c-fcf500b78f39.json | 15 +++- ...-edd46058-29ce-45f5-be39-8cc5239d6534.json | 15 +++- tactus/ide/server.py | 81 +++++++++++-------- tests/ide_backend/test_ide_server.py | 5 +- .../ide_backend/test_ide_server_additional.py | 7 -- .../test_ide_server_error_branches.py | 5 +- 70 files changed, 829 insertions(+), 142 deletions(-) create mode 100644 project/events/2026-04-24T15:50:15.437Z__bb3106fe-370b-468e-99a3-4e2f0f8d603f.json create mode 100644 project/events/2026-04-24T15:50:15.447Z__119def15-da75-4cfd-8821-11ff368701e8.json create mode 100644 project/events/2026-04-24T15:56:07.424Z__fe10eb73-79f9-443e-b829-644908da2587.json create mode 100644 project/events/2026-04-24T15:56:07.436Z__4d4990a3-80f7-4614-ba48-80c610a82332.json create mode 100644 project/events/2026-04-24T15:56:07.447Z__0c698d81-7b0f-48c3-96a8-d98dd17b251c.json create mode 100644 project/events/2026-04-24T15:56:07.458Z__409222ef-d7ce-4ed7-9e2f-57aed3fb964c.json create mode 100644 project/events/2026-04-24T15:56:07.470Z__f9e710be-32a0-4617-96ef-f31e94878b42.json create mode 100644 project/events/2026-04-24T15:56:07.481Z__386afea7-fa85-4945-844c-928465a6c369.json create mode 100644 project/events/2026-04-24T15:56:07.492Z__1f0c06ae-f840-4c5a-9ae1-4b94dff21e59.json create mode 100644 project/events/2026-04-24T15:56:07.513Z__0646e9b9-84e8-4038-8cbe-c7c5e2d7e185.json create mode 100644 project/events/2026-04-24T15:56:07.535Z__79cc3b71-d847-41ec-bd50-cbbe5bc3a97d.json create mode 100644 project/events/2026-04-24T15:56:07.555Z__57d04b4c-c2d2-4453-89b2-4ef27303fa3f.json create mode 100644 project/events/2026-04-24T15:56:07.566Z__df954597-0b0e-44ff-9fa3-9f83665c8138.json create mode 100644 project/events/2026-04-24T15:56:07.576Z__e30dcbf4-7e85-4896-80be-56e480bf1695.json create mode 100644 project/events/2026-04-24T15:56:07.587Z__6e20d6e7-d2be-4832-89b2-30c6abf89aa0.json create mode 100644 project/events/2026-04-24T15:56:07.597Z__6135d82e-d50b-4859-8de3-f1470c2f7dc0.json create mode 100644 project/events/2026-04-24T15:56:07.609Z__6eceed3a-ff9e-4a2d-8ae6-4f8cb1bcb1df.json create mode 100644 project/events/2026-04-24T15:56:07.622Z__b2788a6a-b69b-4116-8e8e-14940de60983.json create mode 100644 project/events/2026-04-24T15:56:07.634Z__7513bba8-c923-43df-85a0-858205fe8c82.json create mode 100644 project/events/2026-04-24T15:56:07.648Z__a17aa439-9fd1-467f-89f5-7dae9e68c0d8.json create mode 100644 project/events/2026-04-24T15:56:07.659Z__f75c409a-1627-4ea9-8641-9794b7691b49.json create mode 100644 project/events/2026-04-24T15:56:07.671Z__e70372af-6bfb-4274-a0d4-f9140a530d89.json create mode 100644 project/events/2026-04-24T15:56:07.684Z__72870199-4c20-4efb-a83d-d014cca244b3.json create mode 100644 project/events/2026-04-24T15:56:07.695Z__61deca96-943f-4869-b6a7-f504fcc56475.json create mode 100644 project/events/2026-04-24T15:56:07.708Z__2260ce6e-cfba-4542-abbc-0ccd55a0f83f.json create mode 100644 project/events/2026-04-24T15:56:07.721Z__f4c502bd-043e-4838-a6c7-e443121fb99d.json create mode 100644 project/events/2026-04-24T15:56:07.733Z__d03afa25-5238-4135-9fba-af0e73f24778.json create mode 100644 project/events/2026-04-24T15:56:07.745Z__9a670c09-7d90-453f-bda9-71fcc48c50f5.json create mode 100644 project/events/2026-04-24T15:56:07.758Z__903bd32f-47b0-447b-ac00-804a15e0a93c.json create mode 100644 project/events/2026-04-24T15:56:07.770Z__2759a49f-6870-4de4-abfa-277ed45672c6.json create mode 100644 project/events/2026-04-24T15:56:07.783Z__dc86f7ca-a880-4c20-a7be-36b9af03966b.json create mode 100644 project/events/2026-04-24T15:56:07.794Z__092797f5-5e23-4f52-ac31-d39137fb0845.json create mode 100644 project/events/2026-04-24T15:56:07.806Z__73cbfbaf-affd-4348-9f0e-d16d0abb874c.json create mode 100644 project/events/2026-04-24T15:56:07.818Z__b834751d-ffeb-4ec9-a0d0-04cec76a1270.json create mode 100644 project/events/2026-04-24T15:56:07.833Z__da2f9ca6-5d76-48fc-ae4c-f079f86102f2.json create mode 100644 project/events/2026-04-24T15:56:07.845Z__2eef9c4e-7c66-42a5-a5c6-92ee81745b7d.json create mode 100644 project/events/2026-04-24T15:56:07.857Z__c2181e80-1e98-4568-ae9a-fe3793f4cd06.json create mode 100644 project/events/2026-04-24T15:56:07.874Z__7f0ceba2-9e90-4f01-86d1-d33d396ca1ba.json create mode 100644 project/events/2026-04-24T15:56:07.885Z__8f7d5daa-d91f-495a-954e-597eb886c0c7.json create mode 100644 project/events/2026-04-24T15:56:07.898Z__19e149b7-64d2-44e5-addf-ba31eac72cd3.json create mode 100644 project/events/2026-04-24T15:56:07.910Z__1241202c-e6e9-4973-811e-f07294dce5a0.json create mode 100644 project/events/2026-04-24T15:56:07.923Z__191b393f-2356-4b09-baa7-cdc84ecf7cf3.json create mode 100644 project/events/2026-04-24T15:56:07.934Z__7f415d26-15b3-41c1-bbb9-37ae8728499b.json create mode 100644 project/events/2026-04-24T15:56:07.944Z__efcb3ad6-4b02-4137-9f96-fdf11725a5b1.json diff --git a/features/steps/dspy_lm_steps.py b/features/steps/dspy_lm_steps.py index 38cc0bba..18c0ab30 100644 --- a/features/steps/dspy_lm_steps.py +++ b/features/steps/dspy_lm_steps.py @@ -1,9 +1,15 @@ """Step definitions for DSPy Language Model configuration.""" import os +import uuid from behave import given, when, then +def _test_api_credential() -> str: + """Return a non-secret credential value for test-only LM configuration.""" + return os.environ.get("TACTUS_TEST_API_CREDENTIAL") or f"test-{uuid.uuid4()}" + + @given("dspy is installed as a dependency") def step_dspy_installed(context): """Verify DSPy is installed.""" @@ -20,7 +26,7 @@ def step_lm_configured_with_model(context, model): """Configure an LM with specified model.""" from tactus.dspy import configure_lm - context.lm = configure_lm(model, api_key="test-key") + context.lm = configure_lm(model, api_key=_test_api_credential()) @when('I configure an LM with model "{model}" and temperature {temperature:f}') @@ -28,7 +34,7 @@ def step_configure_lm_with_temperature(context, model, temperature): """Configure an LM with custom temperature.""" from tactus.dspy import configure_lm - context.lm = configure_lm(model, temperature=temperature, api_key="test-key") + context.lm = configure_lm(model, temperature=temperature, api_key=_test_api_credential()) context.lm_temperature = temperature @@ -37,7 +43,7 @@ def step_configure_lm_with_max_tokens(context, model, max_tokens): """Configure an LM with max_tokens parameter.""" from tactus.dspy import configure_lm - context.lm = configure_lm(model, max_tokens=max_tokens, api_key="test-key") + context.lm = configure_lm(model, max_tokens=max_tokens, api_key=_test_api_credential()) context.lm_max_tokens = max_tokens @@ -82,7 +88,7 @@ def step_configure_another_lm(context, model): """Configure another LM, replacing the current one.""" from tactus.dspy import configure_lm - context.lm = configure_lm(model, api_key="test-key") + context.lm = configure_lm(model, api_key=_test_api_credential()) context.current_model = model @@ -231,7 +237,7 @@ def step_configure_lm_with_api_base(context, model, api_base): """Configure LM with custom API base URL.""" from tactus.dspy import configure_lm - context.lm = configure_lm(model, api_base=api_base, api_key="test-key") + context.lm = configure_lm(model, api_base=api_base, api_key=_test_api_credential()) context.lm_api_base = api_base @@ -278,7 +284,7 @@ def step_configure_lm_with_region(context, model, region): """Configure LM with AWS region for Bedrock.""" from tactus.dspy import configure_lm - context.lm = configure_lm(model, region=region, api_key="test-key") + context.lm = configure_lm(model, region=region, api_key=_test_api_credential()) context.lm_region = region @@ -317,7 +323,7 @@ def step_try_configure_invalid_lm(context, model): from tactus.dspy import configure_lm try: - context.lm = configure_lm(model, api_key="test-key") + context.lm = configure_lm(model, api_key=_test_api_credential()) # Force error for clearly invalid models if "invalid" in model.lower() or "/" not in model: raise ValueError(f"Invalid model: {model}") @@ -334,7 +340,7 @@ def step_try_configure_no_model(context): try: # Try to call with no model - should fail - context.lm = configure_lm(None, api_key="test-key") + context.lm = configure_lm(None, api_key=_test_api_credential()) context.error = None except Exception as e: context.error = e @@ -348,4 +354,4 @@ def step_configure_lm_simple(context, model): """Configure an LM with the given model (basic form - catches anything not matched above).""" from tactus.dspy import configure_lm - context.lm = configure_lm(model, api_key="test-key") + context.lm = configure_lm(model, api_key=_test_api_credential()) diff --git a/project/events/2026-04-24T15:50:15.437Z__bb3106fe-370b-468e-99a3-4e2f0f8d603f.json b/project/events/2026-04-24T15:50:15.437Z__bb3106fe-370b-468e-99a3-4e2f0f8d603f.json new file mode 100644 index 00000000..68e2235e --- /dev/null +++ b/project/events/2026-04-24T15:50:15.437Z__bb3106fe-370b-468e-99a3-4e2f0f8d603f.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "bb3106fe-370b-468e-99a3-4e2f0f8d603f", + "issue_id": "tcts-a8688de4-69e7-4dfa-b19e-cea54c9d8ac6", + "event_type": "state_transition", + "occurred_at": "2026-04-24T15:50:15.437Z", + "actor_id": "derek.norrbom", + "payload": { + "from_status": "open", + "to_status": "in_progress" + } +} \ No newline at end of file diff --git a/project/events/2026-04-24T15:50:15.447Z__119def15-da75-4cfd-8821-11ff368701e8.json b/project/events/2026-04-24T15:50:15.447Z__119def15-da75-4cfd-8821-11ff368701e8.json new file mode 100644 index 00000000..6b0c5576 --- /dev/null +++ b/project/events/2026-04-24T15:50:15.447Z__119def15-da75-4cfd-8821-11ff368701e8.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "119def15-da75-4cfd-8821-11ff368701e8", + "issue_id": "tcts-a8688de4-69e7-4dfa-b19e-cea54c9d8ac6", + "event_type": "comment_added", + "occurred_at": "2026-04-24T15:50:15.447Z", + "actor_id": "derek.norrbom", + "payload": { + "comment_author": "derek.norrbom", + "comment_id": "b7cb533d-a069-4682-aebd-b669ea1dc502" + } +} \ No newline at end of file diff --git a/project/events/2026-04-24T15:56:07.424Z__fe10eb73-79f9-443e-b829-644908da2587.json b/project/events/2026-04-24T15:56:07.424Z__fe10eb73-79f9-443e-b829-644908da2587.json new file mode 100644 index 00000000..a0c71622 --- /dev/null +++ b/project/events/2026-04-24T15:56:07.424Z__fe10eb73-79f9-443e-b829-644908da2587.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "fe10eb73-79f9-443e-b829-644908da2587", + "issue_id": "tcts-0ca0ee24-65b2-48a9-9a28-bd1c2a47dd20", + "event_type": "comment_added", + "occurred_at": "2026-04-24T15:56:07.424Z", + "actor_id": "derek.norrbom", + "payload": { + "comment_author": "derek.norrbom", + "comment_id": "e11072e3-7c1d-436f-809a-bb239374635c" + } +} \ No newline at end of file diff --git a/project/events/2026-04-24T15:56:07.436Z__4d4990a3-80f7-4614-ba48-80c610a82332.json b/project/events/2026-04-24T15:56:07.436Z__4d4990a3-80f7-4614-ba48-80c610a82332.json new file mode 100644 index 00000000..889215ab --- /dev/null +++ b/project/events/2026-04-24T15:56:07.436Z__4d4990a3-80f7-4614-ba48-80c610a82332.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "4d4990a3-80f7-4614-ba48-80c610a82332", + "issue_id": "tcts-0ca0ee24-65b2-48a9-9a28-bd1c2a47dd20", + "event_type": "state_transition", + "occurred_at": "2026-04-24T15:56:07.436Z", + "actor_id": "derek.norrbom", + "payload": { + "from_status": "open", + "to_status": "closed" + } +} \ No newline at end of file diff --git a/project/events/2026-04-24T15:56:07.447Z__0c698d81-7b0f-48c3-96a8-d98dd17b251c.json b/project/events/2026-04-24T15:56:07.447Z__0c698d81-7b0f-48c3-96a8-d98dd17b251c.json new file mode 100644 index 00000000..5c035074 --- /dev/null +++ b/project/events/2026-04-24T15:56:07.447Z__0c698d81-7b0f-48c3-96a8-d98dd17b251c.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "0c698d81-7b0f-48c3-96a8-d98dd17b251c", + "issue_id": "tcts-1ae97c97-8459-44a8-a10f-b8efa59a1f45", + "event_type": "comment_added", + "occurred_at": "2026-04-24T15:56:07.447Z", + "actor_id": "derek.norrbom", + "payload": { + "comment_author": "derek.norrbom", + "comment_id": "07775d3f-e8cc-4834-b41d-95eaff7d2f1b" + } +} \ No newline at end of file diff --git a/project/events/2026-04-24T15:56:07.458Z__409222ef-d7ce-4ed7-9e2f-57aed3fb964c.json b/project/events/2026-04-24T15:56:07.458Z__409222ef-d7ce-4ed7-9e2f-57aed3fb964c.json new file mode 100644 index 00000000..00b9b2ef --- /dev/null +++ b/project/events/2026-04-24T15:56:07.458Z__409222ef-d7ce-4ed7-9e2f-57aed3fb964c.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "409222ef-d7ce-4ed7-9e2f-57aed3fb964c", + "issue_id": "tcts-1ae97c97-8459-44a8-a10f-b8efa59a1f45", + "event_type": "state_transition", + "occurred_at": "2026-04-24T15:56:07.458Z", + "actor_id": "derek.norrbom", + "payload": { + "from_status": "open", + "to_status": "closed" + } +} \ No newline at end of file diff --git a/project/events/2026-04-24T15:56:07.470Z__f9e710be-32a0-4617-96ef-f31e94878b42.json b/project/events/2026-04-24T15:56:07.470Z__f9e710be-32a0-4617-96ef-f31e94878b42.json new file mode 100644 index 00000000..eaaabfa8 --- /dev/null +++ b/project/events/2026-04-24T15:56:07.470Z__f9e710be-32a0-4617-96ef-f31e94878b42.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "f9e710be-32a0-4617-96ef-f31e94878b42", + "issue_id": "tcts-2b5834a5-00e9-44bf-9ac8-31982ba771ad", + "event_type": "comment_added", + "occurred_at": "2026-04-24T15:56:07.470Z", + "actor_id": "derek.norrbom", + "payload": { + "comment_author": "derek.norrbom", + "comment_id": "10298aac-635e-43c9-897c-3b31238eb4a5" + } +} \ No newline at end of file diff --git a/project/events/2026-04-24T15:56:07.481Z__386afea7-fa85-4945-844c-928465a6c369.json b/project/events/2026-04-24T15:56:07.481Z__386afea7-fa85-4945-844c-928465a6c369.json new file mode 100644 index 00000000..dee21635 --- /dev/null +++ b/project/events/2026-04-24T15:56:07.481Z__386afea7-fa85-4945-844c-928465a6c369.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "386afea7-fa85-4945-844c-928465a6c369", + "issue_id": "tcts-2b5834a5-00e9-44bf-9ac8-31982ba771ad", + "event_type": "state_transition", + "occurred_at": "2026-04-24T15:56:07.481Z", + "actor_id": "derek.norrbom", + "payload": { + "from_status": "open", + "to_status": "closed" + } +} \ No newline at end of file diff --git a/project/events/2026-04-24T15:56:07.492Z__1f0c06ae-f840-4c5a-9ae1-4b94dff21e59.json b/project/events/2026-04-24T15:56:07.492Z__1f0c06ae-f840-4c5a-9ae1-4b94dff21e59.json new file mode 100644 index 00000000..e72c740c --- /dev/null +++ b/project/events/2026-04-24T15:56:07.492Z__1f0c06ae-f840-4c5a-9ae1-4b94dff21e59.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "1f0c06ae-f840-4c5a-9ae1-4b94dff21e59", + "issue_id": "tcts-4601d213-3f8d-492c-9dc9-1d797ed5b870", + "event_type": "comment_added", + "occurred_at": "2026-04-24T15:56:07.492Z", + "actor_id": "derek.norrbom", + "payload": { + "comment_author": "derek.norrbom", + "comment_id": "b8dfed56-6d4f-41a7-b83f-9a3223a779a8" + } +} \ No newline at end of file diff --git a/project/events/2026-04-24T15:56:07.513Z__0646e9b9-84e8-4038-8cbe-c7c5e2d7e185.json b/project/events/2026-04-24T15:56:07.513Z__0646e9b9-84e8-4038-8cbe-c7c5e2d7e185.json new file mode 100644 index 00000000..1914ac92 --- /dev/null +++ b/project/events/2026-04-24T15:56:07.513Z__0646e9b9-84e8-4038-8cbe-c7c5e2d7e185.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "0646e9b9-84e8-4038-8cbe-c7c5e2d7e185", + "issue_id": "tcts-4601d213-3f8d-492c-9dc9-1d797ed5b870", + "event_type": "state_transition", + "occurred_at": "2026-04-24T15:56:07.513Z", + "actor_id": "derek.norrbom", + "payload": { + "from_status": "open", + "to_status": "closed" + } +} \ No newline at end of file diff --git a/project/events/2026-04-24T15:56:07.535Z__79cc3b71-d847-41ec-bd50-cbbe5bc3a97d.json b/project/events/2026-04-24T15:56:07.535Z__79cc3b71-d847-41ec-bd50-cbbe5bc3a97d.json new file mode 100644 index 00000000..fbaa54d2 --- /dev/null +++ b/project/events/2026-04-24T15:56:07.535Z__79cc3b71-d847-41ec-bd50-cbbe5bc3a97d.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "79cc3b71-d847-41ec-bd50-cbbe5bc3a97d", + "issue_id": "tcts-484c4a71-38fd-4833-80e8-d0c13331a89b", + "event_type": "comment_added", + "occurred_at": "2026-04-24T15:56:07.535Z", + "actor_id": "derek.norrbom", + "payload": { + "comment_author": "derek.norrbom", + "comment_id": "3ef1508e-2594-4052-808b-32551057b39d" + } +} \ No newline at end of file diff --git a/project/events/2026-04-24T15:56:07.555Z__57d04b4c-c2d2-4453-89b2-4ef27303fa3f.json b/project/events/2026-04-24T15:56:07.555Z__57d04b4c-c2d2-4453-89b2-4ef27303fa3f.json new file mode 100644 index 00000000..6e5c0224 --- /dev/null +++ b/project/events/2026-04-24T15:56:07.555Z__57d04b4c-c2d2-4453-89b2-4ef27303fa3f.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "57d04b4c-c2d2-4453-89b2-4ef27303fa3f", + "issue_id": "tcts-484c4a71-38fd-4833-80e8-d0c13331a89b", + "event_type": "state_transition", + "occurred_at": "2026-04-24T15:56:07.555Z", + "actor_id": "derek.norrbom", + "payload": { + "from_status": "open", + "to_status": "closed" + } +} \ No newline at end of file diff --git a/project/events/2026-04-24T15:56:07.566Z__df954597-0b0e-44ff-9fa3-9f83665c8138.json b/project/events/2026-04-24T15:56:07.566Z__df954597-0b0e-44ff-9fa3-9f83665c8138.json new file mode 100644 index 00000000..8fba740f --- /dev/null +++ b/project/events/2026-04-24T15:56:07.566Z__df954597-0b0e-44ff-9fa3-9f83665c8138.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "df954597-0b0e-44ff-9fa3-9f83665c8138", + "issue_id": "tcts-523bd9d1-0403-4eed-b520-e237514ba87c", + "event_type": "comment_added", + "occurred_at": "2026-04-24T15:56:07.566Z", + "actor_id": "derek.norrbom", + "payload": { + "comment_author": "derek.norrbom", + "comment_id": "65e3d04b-4e71-40cd-8727-6ef7b685b595" + } +} \ No newline at end of file diff --git a/project/events/2026-04-24T15:56:07.576Z__e30dcbf4-7e85-4896-80be-56e480bf1695.json b/project/events/2026-04-24T15:56:07.576Z__e30dcbf4-7e85-4896-80be-56e480bf1695.json new file mode 100644 index 00000000..dce3ad2b --- /dev/null +++ b/project/events/2026-04-24T15:56:07.576Z__e30dcbf4-7e85-4896-80be-56e480bf1695.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "e30dcbf4-7e85-4896-80be-56e480bf1695", + "issue_id": "tcts-523bd9d1-0403-4eed-b520-e237514ba87c", + "event_type": "state_transition", + "occurred_at": "2026-04-24T15:56:07.576Z", + "actor_id": "derek.norrbom", + "payload": { + "from_status": "open", + "to_status": "closed" + } +} \ No newline at end of file diff --git a/project/events/2026-04-24T15:56:07.587Z__6e20d6e7-d2be-4832-89b2-30c6abf89aa0.json b/project/events/2026-04-24T15:56:07.587Z__6e20d6e7-d2be-4832-89b2-30c6abf89aa0.json new file mode 100644 index 00000000..1afa880b --- /dev/null +++ b/project/events/2026-04-24T15:56:07.587Z__6e20d6e7-d2be-4832-89b2-30c6abf89aa0.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "6e20d6e7-d2be-4832-89b2-30c6abf89aa0", + "issue_id": "tcts-5ea4f3f3-0672-4d12-81dc-2f3ee48a5aab", + "event_type": "comment_added", + "occurred_at": "2026-04-24T15:56:07.587Z", + "actor_id": "derek.norrbom", + "payload": { + "comment_author": "derek.norrbom", + "comment_id": "00674525-a633-499d-ab6e-e5cbe872b021" + } +} \ No newline at end of file diff --git a/project/events/2026-04-24T15:56:07.597Z__6135d82e-d50b-4859-8de3-f1470c2f7dc0.json b/project/events/2026-04-24T15:56:07.597Z__6135d82e-d50b-4859-8de3-f1470c2f7dc0.json new file mode 100644 index 00000000..44308d23 --- /dev/null +++ b/project/events/2026-04-24T15:56:07.597Z__6135d82e-d50b-4859-8de3-f1470c2f7dc0.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "6135d82e-d50b-4859-8de3-f1470c2f7dc0", + "issue_id": "tcts-5ea4f3f3-0672-4d12-81dc-2f3ee48a5aab", + "event_type": "state_transition", + "occurred_at": "2026-04-24T15:56:07.597Z", + "actor_id": "derek.norrbom", + "payload": { + "from_status": "open", + "to_status": "closed" + } +} \ No newline at end of file diff --git a/project/events/2026-04-24T15:56:07.609Z__6eceed3a-ff9e-4a2d-8ae6-4f8cb1bcb1df.json b/project/events/2026-04-24T15:56:07.609Z__6eceed3a-ff9e-4a2d-8ae6-4f8cb1bcb1df.json new file mode 100644 index 00000000..215de8f2 --- /dev/null +++ b/project/events/2026-04-24T15:56:07.609Z__6eceed3a-ff9e-4a2d-8ae6-4f8cb1bcb1df.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "6eceed3a-ff9e-4a2d-8ae6-4f8cb1bcb1df", + "issue_id": "tcts-6cd25489-78ce-4f56-bbd5-d64408799e4a", + "event_type": "comment_added", + "occurred_at": "2026-04-24T15:56:07.609Z", + "actor_id": "derek.norrbom", + "payload": { + "comment_author": "derek.norrbom", + "comment_id": "da554d70-6690-4c43-9ee7-ab09504d0e05" + } +} \ No newline at end of file diff --git a/project/events/2026-04-24T15:56:07.622Z__b2788a6a-b69b-4116-8e8e-14940de60983.json b/project/events/2026-04-24T15:56:07.622Z__b2788a6a-b69b-4116-8e8e-14940de60983.json new file mode 100644 index 00000000..db915549 --- /dev/null +++ b/project/events/2026-04-24T15:56:07.622Z__b2788a6a-b69b-4116-8e8e-14940de60983.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "b2788a6a-b69b-4116-8e8e-14940de60983", + "issue_id": "tcts-6cd25489-78ce-4f56-bbd5-d64408799e4a", + "event_type": "state_transition", + "occurred_at": "2026-04-24T15:56:07.622Z", + "actor_id": "derek.norrbom", + "payload": { + "from_status": "open", + "to_status": "closed" + } +} \ No newline at end of file diff --git a/project/events/2026-04-24T15:56:07.634Z__7513bba8-c923-43df-85a0-858205fe8c82.json b/project/events/2026-04-24T15:56:07.634Z__7513bba8-c923-43df-85a0-858205fe8c82.json new file mode 100644 index 00000000..52c9b481 --- /dev/null +++ b/project/events/2026-04-24T15:56:07.634Z__7513bba8-c923-43df-85a0-858205fe8c82.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "7513bba8-c923-43df-85a0-858205fe8c82", + "issue_id": "tcts-764532d2-bf4c-4bb8-9e1f-2181c5e10147", + "event_type": "comment_added", + "occurred_at": "2026-04-24T15:56:07.634Z", + "actor_id": "derek.norrbom", + "payload": { + "comment_author": "derek.norrbom", + "comment_id": "c7f53f7d-fbd2-4d59-8e31-c470ddd1dcb8" + } +} \ No newline at end of file diff --git a/project/events/2026-04-24T15:56:07.648Z__a17aa439-9fd1-467f-89f5-7dae9e68c0d8.json b/project/events/2026-04-24T15:56:07.648Z__a17aa439-9fd1-467f-89f5-7dae9e68c0d8.json new file mode 100644 index 00000000..8c5c7e35 --- /dev/null +++ b/project/events/2026-04-24T15:56:07.648Z__a17aa439-9fd1-467f-89f5-7dae9e68c0d8.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "a17aa439-9fd1-467f-89f5-7dae9e68c0d8", + "issue_id": "tcts-764532d2-bf4c-4bb8-9e1f-2181c5e10147", + "event_type": "state_transition", + "occurred_at": "2026-04-24T15:56:07.648Z", + "actor_id": "derek.norrbom", + "payload": { + "from_status": "open", + "to_status": "closed" + } +} \ No newline at end of file diff --git a/project/events/2026-04-24T15:56:07.659Z__f75c409a-1627-4ea9-8641-9794b7691b49.json b/project/events/2026-04-24T15:56:07.659Z__f75c409a-1627-4ea9-8641-9794b7691b49.json new file mode 100644 index 00000000..b2b09390 --- /dev/null +++ b/project/events/2026-04-24T15:56:07.659Z__f75c409a-1627-4ea9-8641-9794b7691b49.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "f75c409a-1627-4ea9-8641-9794b7691b49", + "issue_id": "tcts-7b7b4cc5-1f85-49d4-8f10-19769c488495", + "event_type": "comment_added", + "occurred_at": "2026-04-24T15:56:07.659Z", + "actor_id": "derek.norrbom", + "payload": { + "comment_author": "derek.norrbom", + "comment_id": "c549cd05-fa19-4935-b4fe-947419e13a63" + } +} \ No newline at end of file diff --git a/project/events/2026-04-24T15:56:07.671Z__e70372af-6bfb-4274-a0d4-f9140a530d89.json b/project/events/2026-04-24T15:56:07.671Z__e70372af-6bfb-4274-a0d4-f9140a530d89.json new file mode 100644 index 00000000..311bfcdd --- /dev/null +++ b/project/events/2026-04-24T15:56:07.671Z__e70372af-6bfb-4274-a0d4-f9140a530d89.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "e70372af-6bfb-4274-a0d4-f9140a530d89", + "issue_id": "tcts-7b7b4cc5-1f85-49d4-8f10-19769c488495", + "event_type": "state_transition", + "occurred_at": "2026-04-24T15:56:07.671Z", + "actor_id": "derek.norrbom", + "payload": { + "from_status": "open", + "to_status": "closed" + } +} \ No newline at end of file diff --git a/project/events/2026-04-24T15:56:07.684Z__72870199-4c20-4efb-a83d-d014cca244b3.json b/project/events/2026-04-24T15:56:07.684Z__72870199-4c20-4efb-a83d-d014cca244b3.json new file mode 100644 index 00000000..f042ffa5 --- /dev/null +++ b/project/events/2026-04-24T15:56:07.684Z__72870199-4c20-4efb-a83d-d014cca244b3.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "72870199-4c20-4efb-a83d-d014cca244b3", + "issue_id": "tcts-7c5100eb-69dd-41cc-a82e-93e37453712e", + "event_type": "comment_added", + "occurred_at": "2026-04-24T15:56:07.684Z", + "actor_id": "derek.norrbom", + "payload": { + "comment_author": "derek.norrbom", + "comment_id": "ed6d3349-7647-4a96-aca8-f5fe43bfabdd" + } +} \ No newline at end of file diff --git a/project/events/2026-04-24T15:56:07.695Z__61deca96-943f-4869-b6a7-f504fcc56475.json b/project/events/2026-04-24T15:56:07.695Z__61deca96-943f-4869-b6a7-f504fcc56475.json new file mode 100644 index 00000000..04e39952 --- /dev/null +++ b/project/events/2026-04-24T15:56:07.695Z__61deca96-943f-4869-b6a7-f504fcc56475.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "61deca96-943f-4869-b6a7-f504fcc56475", + "issue_id": "tcts-7c5100eb-69dd-41cc-a82e-93e37453712e", + "event_type": "state_transition", + "occurred_at": "2026-04-24T15:56:07.695Z", + "actor_id": "derek.norrbom", + "payload": { + "from_status": "open", + "to_status": "closed" + } +} \ No newline at end of file diff --git a/project/events/2026-04-24T15:56:07.708Z__2260ce6e-cfba-4542-abbc-0ccd55a0f83f.json b/project/events/2026-04-24T15:56:07.708Z__2260ce6e-cfba-4542-abbc-0ccd55a0f83f.json new file mode 100644 index 00000000..a14bb110 --- /dev/null +++ b/project/events/2026-04-24T15:56:07.708Z__2260ce6e-cfba-4542-abbc-0ccd55a0f83f.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "2260ce6e-cfba-4542-abbc-0ccd55a0f83f", + "issue_id": "tcts-83a0a0b7-5838-4bbd-8da2-104b6f69895a", + "event_type": "comment_added", + "occurred_at": "2026-04-24T15:56:07.708Z", + "actor_id": "derek.norrbom", + "payload": { + "comment_author": "derek.norrbom", + "comment_id": "dd760653-e237-404d-a147-9a735de4c37e" + } +} \ No newline at end of file diff --git a/project/events/2026-04-24T15:56:07.721Z__f4c502bd-043e-4838-a6c7-e443121fb99d.json b/project/events/2026-04-24T15:56:07.721Z__f4c502bd-043e-4838-a6c7-e443121fb99d.json new file mode 100644 index 00000000..2c559f40 --- /dev/null +++ b/project/events/2026-04-24T15:56:07.721Z__f4c502bd-043e-4838-a6c7-e443121fb99d.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "f4c502bd-043e-4838-a6c7-e443121fb99d", + "issue_id": "tcts-83a0a0b7-5838-4bbd-8da2-104b6f69895a", + "event_type": "state_transition", + "occurred_at": "2026-04-24T15:56:07.721Z", + "actor_id": "derek.norrbom", + "payload": { + "from_status": "open", + "to_status": "closed" + } +} \ No newline at end of file diff --git a/project/events/2026-04-24T15:56:07.733Z__d03afa25-5238-4135-9fba-af0e73f24778.json b/project/events/2026-04-24T15:56:07.733Z__d03afa25-5238-4135-9fba-af0e73f24778.json new file mode 100644 index 00000000..ac4b97da --- /dev/null +++ b/project/events/2026-04-24T15:56:07.733Z__d03afa25-5238-4135-9fba-af0e73f24778.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "d03afa25-5238-4135-9fba-af0e73f24778", + "issue_id": "tcts-b318c60d-2286-4ce3-975c-8ea6eb121687", + "event_type": "comment_added", + "occurred_at": "2026-04-24T15:56:07.733Z", + "actor_id": "derek.norrbom", + "payload": { + "comment_author": "derek.norrbom", + "comment_id": "c7e159e1-8b10-4d00-9b94-c4660505e518" + } +} \ No newline at end of file diff --git a/project/events/2026-04-24T15:56:07.745Z__9a670c09-7d90-453f-bda9-71fcc48c50f5.json b/project/events/2026-04-24T15:56:07.745Z__9a670c09-7d90-453f-bda9-71fcc48c50f5.json new file mode 100644 index 00000000..d2d80f3e --- /dev/null +++ b/project/events/2026-04-24T15:56:07.745Z__9a670c09-7d90-453f-bda9-71fcc48c50f5.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "9a670c09-7d90-453f-bda9-71fcc48c50f5", + "issue_id": "tcts-b318c60d-2286-4ce3-975c-8ea6eb121687", + "event_type": "state_transition", + "occurred_at": "2026-04-24T15:56:07.745Z", + "actor_id": "derek.norrbom", + "payload": { + "from_status": "open", + "to_status": "closed" + } +} \ No newline at end of file diff --git a/project/events/2026-04-24T15:56:07.758Z__903bd32f-47b0-447b-ac00-804a15e0a93c.json b/project/events/2026-04-24T15:56:07.758Z__903bd32f-47b0-447b-ac00-804a15e0a93c.json new file mode 100644 index 00000000..c68688c8 --- /dev/null +++ b/project/events/2026-04-24T15:56:07.758Z__903bd32f-47b0-447b-ac00-804a15e0a93c.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "903bd32f-47b0-447b-ac00-804a15e0a93c", + "issue_id": "tcts-bd629431-d583-495d-b53c-e7774216dec5", + "event_type": "comment_added", + "occurred_at": "2026-04-24T15:56:07.758Z", + "actor_id": "derek.norrbom", + "payload": { + "comment_author": "derek.norrbom", + "comment_id": "4f30d299-2d14-44f7-94ce-48d7111cf069" + } +} \ No newline at end of file diff --git a/project/events/2026-04-24T15:56:07.770Z__2759a49f-6870-4de4-abfa-277ed45672c6.json b/project/events/2026-04-24T15:56:07.770Z__2759a49f-6870-4de4-abfa-277ed45672c6.json new file mode 100644 index 00000000..895c2d35 --- /dev/null +++ b/project/events/2026-04-24T15:56:07.770Z__2759a49f-6870-4de4-abfa-277ed45672c6.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "2759a49f-6870-4de4-abfa-277ed45672c6", + "issue_id": "tcts-bd629431-d583-495d-b53c-e7774216dec5", + "event_type": "state_transition", + "occurred_at": "2026-04-24T15:56:07.770Z", + "actor_id": "derek.norrbom", + "payload": { + "from_status": "open", + "to_status": "closed" + } +} \ No newline at end of file diff --git a/project/events/2026-04-24T15:56:07.783Z__dc86f7ca-a880-4c20-a7be-36b9af03966b.json b/project/events/2026-04-24T15:56:07.783Z__dc86f7ca-a880-4c20-a7be-36b9af03966b.json new file mode 100644 index 00000000..e56f4c8a --- /dev/null +++ b/project/events/2026-04-24T15:56:07.783Z__dc86f7ca-a880-4c20-a7be-36b9af03966b.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "dc86f7ca-a880-4c20-a7be-36b9af03966b", + "issue_id": "tcts-bd86f3f8-4463-4150-bb2f-af9f3c9f76ce", + "event_type": "comment_added", + "occurred_at": "2026-04-24T15:56:07.783Z", + "actor_id": "derek.norrbom", + "payload": { + "comment_author": "derek.norrbom", + "comment_id": "d8dc5c7e-8fb3-4b29-8c5b-1aff1872290f" + } +} \ No newline at end of file diff --git a/project/events/2026-04-24T15:56:07.794Z__092797f5-5e23-4f52-ac31-d39137fb0845.json b/project/events/2026-04-24T15:56:07.794Z__092797f5-5e23-4f52-ac31-d39137fb0845.json new file mode 100644 index 00000000..826c4cd2 --- /dev/null +++ b/project/events/2026-04-24T15:56:07.794Z__092797f5-5e23-4f52-ac31-d39137fb0845.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "092797f5-5e23-4f52-ac31-d39137fb0845", + "issue_id": "tcts-bd86f3f8-4463-4150-bb2f-af9f3c9f76ce", + "event_type": "state_transition", + "occurred_at": "2026-04-24T15:56:07.794Z", + "actor_id": "derek.norrbom", + "payload": { + "from_status": "open", + "to_status": "closed" + } +} \ No newline at end of file diff --git a/project/events/2026-04-24T15:56:07.806Z__73cbfbaf-affd-4348-9f0e-d16d0abb874c.json b/project/events/2026-04-24T15:56:07.806Z__73cbfbaf-affd-4348-9f0e-d16d0abb874c.json new file mode 100644 index 00000000..6b36e61f --- /dev/null +++ b/project/events/2026-04-24T15:56:07.806Z__73cbfbaf-affd-4348-9f0e-d16d0abb874c.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "73cbfbaf-affd-4348-9f0e-d16d0abb874c", + "issue_id": "tcts-d3316263-f772-41ad-9f6c-1e75c8e5f040", + "event_type": "comment_added", + "occurred_at": "2026-04-24T15:56:07.806Z", + "actor_id": "derek.norrbom", + "payload": { + "comment_author": "derek.norrbom", + "comment_id": "34f392d4-910b-4548-b6ae-e9dfba46dbf4" + } +} \ No newline at end of file diff --git a/project/events/2026-04-24T15:56:07.818Z__b834751d-ffeb-4ec9-a0d0-04cec76a1270.json b/project/events/2026-04-24T15:56:07.818Z__b834751d-ffeb-4ec9-a0d0-04cec76a1270.json new file mode 100644 index 00000000..d7c995d4 --- /dev/null +++ b/project/events/2026-04-24T15:56:07.818Z__b834751d-ffeb-4ec9-a0d0-04cec76a1270.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "b834751d-ffeb-4ec9-a0d0-04cec76a1270", + "issue_id": "tcts-d3316263-f772-41ad-9f6c-1e75c8e5f040", + "event_type": "state_transition", + "occurred_at": "2026-04-24T15:56:07.818Z", + "actor_id": "derek.norrbom", + "payload": { + "from_status": "open", + "to_status": "closed" + } +} \ No newline at end of file diff --git a/project/events/2026-04-24T15:56:07.833Z__da2f9ca6-5d76-48fc-ae4c-f079f86102f2.json b/project/events/2026-04-24T15:56:07.833Z__da2f9ca6-5d76-48fc-ae4c-f079f86102f2.json new file mode 100644 index 00000000..c85b6f07 --- /dev/null +++ b/project/events/2026-04-24T15:56:07.833Z__da2f9ca6-5d76-48fc-ae4c-f079f86102f2.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "da2f9ca6-5d76-48fc-ae4c-f079f86102f2", + "issue_id": "tcts-d43a43c2-c6cb-418f-aa17-773ae8496ac5", + "event_type": "comment_added", + "occurred_at": "2026-04-24T15:56:07.833Z", + "actor_id": "derek.norrbom", + "payload": { + "comment_author": "derek.norrbom", + "comment_id": "d7a10236-ad10-46ae-b838-518a5aae1efb" + } +} \ No newline at end of file diff --git a/project/events/2026-04-24T15:56:07.845Z__2eef9c4e-7c66-42a5-a5c6-92ee81745b7d.json b/project/events/2026-04-24T15:56:07.845Z__2eef9c4e-7c66-42a5-a5c6-92ee81745b7d.json new file mode 100644 index 00000000..14edf8cb --- /dev/null +++ b/project/events/2026-04-24T15:56:07.845Z__2eef9c4e-7c66-42a5-a5c6-92ee81745b7d.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "2eef9c4e-7c66-42a5-a5c6-92ee81745b7d", + "issue_id": "tcts-d43a43c2-c6cb-418f-aa17-773ae8496ac5", + "event_type": "state_transition", + "occurred_at": "2026-04-24T15:56:07.845Z", + "actor_id": "derek.norrbom", + "payload": { + "from_status": "open", + "to_status": "closed" + } +} \ No newline at end of file diff --git a/project/events/2026-04-24T15:56:07.857Z__c2181e80-1e98-4568-ae9a-fe3793f4cd06.json b/project/events/2026-04-24T15:56:07.857Z__c2181e80-1e98-4568-ae9a-fe3793f4cd06.json new file mode 100644 index 00000000..7186edf6 --- /dev/null +++ b/project/events/2026-04-24T15:56:07.857Z__c2181e80-1e98-4568-ae9a-fe3793f4cd06.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "c2181e80-1e98-4568-ae9a-fe3793f4cd06", + "issue_id": "tcts-e9440747-1ad9-4895-bf6c-fcf500b78f39", + "event_type": "comment_added", + "occurred_at": "2026-04-24T15:56:07.857Z", + "actor_id": "derek.norrbom", + "payload": { + "comment_author": "derek.norrbom", + "comment_id": "bb42a32d-29ef-41e3-86f3-b2d637b58cfb" + } +} \ No newline at end of file diff --git a/project/events/2026-04-24T15:56:07.874Z__7f0ceba2-9e90-4f01-86d1-d33d396ca1ba.json b/project/events/2026-04-24T15:56:07.874Z__7f0ceba2-9e90-4f01-86d1-d33d396ca1ba.json new file mode 100644 index 00000000..f015ed02 --- /dev/null +++ b/project/events/2026-04-24T15:56:07.874Z__7f0ceba2-9e90-4f01-86d1-d33d396ca1ba.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "7f0ceba2-9e90-4f01-86d1-d33d396ca1ba", + "issue_id": "tcts-e9440747-1ad9-4895-bf6c-fcf500b78f39", + "event_type": "state_transition", + "occurred_at": "2026-04-24T15:56:07.874Z", + "actor_id": "derek.norrbom", + "payload": { + "from_status": "open", + "to_status": "closed" + } +} \ No newline at end of file diff --git a/project/events/2026-04-24T15:56:07.885Z__8f7d5daa-d91f-495a-954e-597eb886c0c7.json b/project/events/2026-04-24T15:56:07.885Z__8f7d5daa-d91f-495a-954e-597eb886c0c7.json new file mode 100644 index 00000000..e6cd6962 --- /dev/null +++ b/project/events/2026-04-24T15:56:07.885Z__8f7d5daa-d91f-495a-954e-597eb886c0c7.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "8f7d5daa-d91f-495a-954e-597eb886c0c7", + "issue_id": "tcts-edd46058-29ce-45f5-be39-8cc5239d6534", + "event_type": "comment_added", + "occurred_at": "2026-04-24T15:56:07.885Z", + "actor_id": "derek.norrbom", + "payload": { + "comment_author": "derek.norrbom", + "comment_id": "2f945264-e3a9-45ba-a9b0-7b8c465b5937" + } +} \ No newline at end of file diff --git a/project/events/2026-04-24T15:56:07.898Z__19e149b7-64d2-44e5-addf-ba31eac72cd3.json b/project/events/2026-04-24T15:56:07.898Z__19e149b7-64d2-44e5-addf-ba31eac72cd3.json new file mode 100644 index 00000000..f4a3ade7 --- /dev/null +++ b/project/events/2026-04-24T15:56:07.898Z__19e149b7-64d2-44e5-addf-ba31eac72cd3.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "19e149b7-64d2-44e5-addf-ba31eac72cd3", + "issue_id": "tcts-edd46058-29ce-45f5-be39-8cc5239d6534", + "event_type": "state_transition", + "occurred_at": "2026-04-24T15:56:07.898Z", + "actor_id": "derek.norrbom", + "payload": { + "from_status": "open", + "to_status": "closed" + } +} \ No newline at end of file diff --git a/project/events/2026-04-24T15:56:07.910Z__1241202c-e6e9-4973-811e-f07294dce5a0.json b/project/events/2026-04-24T15:56:07.910Z__1241202c-e6e9-4973-811e-f07294dce5a0.json new file mode 100644 index 00000000..d59855cc --- /dev/null +++ b/project/events/2026-04-24T15:56:07.910Z__1241202c-e6e9-4973-811e-f07294dce5a0.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "1241202c-e6e9-4973-811e-f07294dce5a0", + "issue_id": "tcts-a8688de4-69e7-4dfa-b19e-cea54c9d8ac6", + "event_type": "comment_added", + "occurred_at": "2026-04-24T15:56:07.910Z", + "actor_id": "derek.norrbom", + "payload": { + "comment_author": "derek.norrbom", + "comment_id": "80d0b587-5db5-4be4-8a14-e3dc8f1e2406" + } +} \ No newline at end of file diff --git a/project/events/2026-04-24T15:56:07.923Z__191b393f-2356-4b09-baa7-cdc84ecf7cf3.json b/project/events/2026-04-24T15:56:07.923Z__191b393f-2356-4b09-baa7-cdc84ecf7cf3.json new file mode 100644 index 00000000..405e9de8 --- /dev/null +++ b/project/events/2026-04-24T15:56:07.923Z__191b393f-2356-4b09-baa7-cdc84ecf7cf3.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "191b393f-2356-4b09-baa7-cdc84ecf7cf3", + "issue_id": "tcts-a8688de4-69e7-4dfa-b19e-cea54c9d8ac6", + "event_type": "state_transition", + "occurred_at": "2026-04-24T15:56:07.923Z", + "actor_id": "derek.norrbom", + "payload": { + "from_status": "in_progress", + "to_status": "closed" + } +} \ No newline at end of file diff --git a/project/events/2026-04-24T15:56:07.934Z__7f415d26-15b3-41c1-bbb9-37ae8728499b.json b/project/events/2026-04-24T15:56:07.934Z__7f415d26-15b3-41c1-bbb9-37ae8728499b.json new file mode 100644 index 00000000..4dbe8d80 --- /dev/null +++ b/project/events/2026-04-24T15:56:07.934Z__7f415d26-15b3-41c1-bbb9-37ae8728499b.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "7f415d26-15b3-41c1-bbb9-37ae8728499b", + "issue_id": "tcts-2a84b3ec-8dda-4c72-a8d6-0263b6360cbc", + "event_type": "comment_added", + "occurred_at": "2026-04-24T15:56:07.934Z", + "actor_id": "derek.norrbom", + "payload": { + "comment_author": "derek.norrbom", + "comment_id": "acfab151-1707-4727-9e3f-5167f34f5cd2" + } +} \ No newline at end of file diff --git a/project/events/2026-04-24T15:56:07.944Z__efcb3ad6-4b02-4137-9f96-fdf11725a5b1.json b/project/events/2026-04-24T15:56:07.944Z__efcb3ad6-4b02-4137-9f96-fdf11725a5b1.json new file mode 100644 index 00000000..c335ac7a --- /dev/null +++ b/project/events/2026-04-24T15:56:07.944Z__efcb3ad6-4b02-4137-9f96-fdf11725a5b1.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "efcb3ad6-4b02-4137-9f96-fdf11725a5b1", + "issue_id": "tcts-2a84b3ec-8dda-4c72-a8d6-0263b6360cbc", + "event_type": "state_transition", + "occurred_at": "2026-04-24T15:56:07.944Z", + "actor_id": "derek.norrbom", + "payload": { + "from_status": "open", + "to_status": "closed" + } +} \ No newline at end of file diff --git a/project/issues/tcts-0ca0ee24-65b2-48a9-9a28-bd1c2a47dd20.json b/project/issues/tcts-0ca0ee24-65b2-48a9-9a28-bd1c2a47dd20.json index 8c7274a8..22672933 100644 --- a/project/issues/tcts-0ca0ee24-65b2-48a9-9a28-bd1c2a47dd20.json +++ b/project/issues/tcts-0ca0ee24-65b2-48a9-9a28-bd1c2a47dd20.json @@ -3,7 +3,7 @@ "title": "[Snyk Code] Path Traversal", "description": "## Path Traversal\n\n**Severity:** high\n**Project:** `AnthusAI/Tactus`\n**File:** `tactus/ide/server.py`\n**Location:** line 1691, column 41 to line 1691, column 64\n**Classes:** CWE-CWE-23\n### Snippet (tactus/ide/server.py:1689-1693)\n```\n1689 | # Validate and extract evaluations\n1690 | validator = TactusValidator()\n1691 | validation_result = validator.validate_file(str(path))\n1692 | \n1693 | if not validation_result.valid:\n```\n\n**Issue Key:** b36cc938-5811-4742-a009-66c1e7fefd62\n\n### Details\nPath Traversal\n\n**Fix:** Review and remediate in code.", "type": "sub-task", - "status": "open", + "status": "closed", "priority": 1, "assignee": null, "creator": null, @@ -13,10 +13,17 @@ "snyk" ], "dependencies": [], - "comments": [], + "comments": [ + { + "id": "e11072e3-7c1d-436f-809a-bb239374635c", + "author": "derek.norrbom", + "text": "Closing as remediated: fresh Snyk Code high-threshold scan now reports zero open issues in this repository.", + "created_at": "2026-04-24T15:56:07.424326Z" + } + ], "created_at": "2026-04-14T17:12:28.830445Z", - "updated_at": "2026-04-14T17:12:28.830445Z", - "closed_at": null, + "updated_at": "2026-04-24T15:56:07.436198Z", + "closed_at": "2026-04-24T15:56:07.436198Z", "custom": { "snyk_column": 41, "snyk_end_column": 64, diff --git a/project/issues/tcts-1ae97c97-8459-44a8-a10f-b8efa59a1f45.json b/project/issues/tcts-1ae97c97-8459-44a8-a10f-b8efa59a1f45.json index 9861683b..1095619c 100644 --- a/project/issues/tcts-1ae97c97-8459-44a8-a10f-b8efa59a1f45.json +++ b/project/issues/tcts-1ae97c97-8459-44a8-a10f-b8efa59a1f45.json @@ -3,7 +3,7 @@ "title": "[Snyk Code] Hardcoded Non-Cryptographic Secret", "description": "## Hardcoded Non-Cryptographic Secret\n\n**Severity:** high\n**Project:** `AnthusAI/Tactus`\n**File:** `features/steps/dspy_lm_steps.py`\n**Location:** line 85, column 38 to line 85, column 45\n**Classes:** CWE-CWE-547\n### Snippet (features/steps/dspy_lm_steps.py:83-87)\n```\n 83 | from tactus.dspy import configure_lm\n 84 | \n 85 | context.lm = configure_lm(model, api_key=\"test-key\")\n 86 | context.current_model = model\n 87 | \n```\n\n**Issue Key:** f9449924-661f-425b-826b-3cec2ce920ed\n\n### Details\nHardcoded Non-Cryptographic Secret\n\n**Fix:** Review and remediate in code.", "type": "sub-task", - "status": "open", + "status": "closed", "priority": 1, "assignee": null, "creator": null, @@ -13,10 +13,17 @@ "snyk" ], "dependencies": [], - "comments": [], + "comments": [ + { + "id": "07775d3f-e8cc-4834-b41d-95eaff7d2f1b", + "author": "derek.norrbom", + "text": "Closing as remediated: fresh Snyk Code high-threshold scan now reports zero open issues in this repository.", + "created_at": "2026-04-24T15:56:07.446816Z" + } + ], "created_at": "2026-04-14T17:12:28.832507Z", - "updated_at": "2026-04-14T17:12:28.832507Z", - "closed_at": null, + "updated_at": "2026-04-24T15:56:07.458329Z", + "closed_at": "2026-04-24T15:56:07.458329Z", "custom": { "snyk_column": 38, "snyk_end_column": 45, diff --git a/project/issues/tcts-2a84b3ec-8dda-4c72-a8d6-0263b6360cbc.json b/project/issues/tcts-2a84b3ec-8dda-4c72-a8d6-0263b6360cbc.json index 76e7a532..1e599292 100644 --- a/project/issues/tcts-2a84b3ec-8dda-4c72-a8d6-0263b6360cbc.json +++ b/project/issues/tcts-2a84b3ec-8dda-4c72-a8d6-0263b6360cbc.json @@ -3,7 +3,7 @@ "title": "Snyk Code Vulnerabilities", "description": "Security vulnerabilities imported from Snyk.", "type": "epic", - "status": "open", + "status": "closed", "priority": 1, "assignee": null, "creator": null, @@ -14,10 +14,17 @@ "code" ], "dependencies": [], - "comments": [], + "comments": [ + { + "id": "acfab151-1707-4727-9e3f-5167f34f5cd2", + "author": "derek.norrbom", + "text": "Closing epic as complete for this branch scope: Snyk Code high-severity findings under child task tcts-a8688d have been remediated and verified clean by Snyk Code scan.", + "created_at": "2026-04-24T15:56:07.933925Z" + } + ], "created_at": "2026-04-14T17:12:28.828700Z", - "updated_at": "2026-04-14T17:12:28.828700Z", - "closed_at": null, + "updated_at": "2026-04-24T15:56:07.944127Z", + "closed_at": "2026-04-24T15:56:07.944127Z", "custom": { "snyk_category": "code" } diff --git a/project/issues/tcts-2b5834a5-00e9-44bf-9ac8-31982ba771ad.json b/project/issues/tcts-2b5834a5-00e9-44bf-9ac8-31982ba771ad.json index b05abb1d..ce2fb488 100644 --- a/project/issues/tcts-2b5834a5-00e9-44bf-9ac8-31982ba771ad.json +++ b/project/issues/tcts-2b5834a5-00e9-44bf-9ac8-31982ba771ad.json @@ -3,7 +3,7 @@ "title": "[Snyk Code] Path Traversal", "description": "## Path Traversal\n\n**Severity:** high\n**Project:** `AnthusAI/Tactus`\n**File:** `tactus/ide/server.py`\n**Location:** line 1240, column 38 to line 1240, column 69\n**Classes:** CWE-CWE-23\n### Snippet (tactus/ide/server.py:1238-1242)\n```\n1238 | from pathlib import Path as PathLib\n1239 | \n1240 | events_dir = PathLib(storage_dir) / \"events\"\n1241 | events_dir.mkdir(parents=True, exist_ok=True)\n1242 | events_file = events_dir / f\"{run_id}.json\"\n```\n\n**Issue Key:** 65d68101-a5ea-4eac-8a14-73a68f60ac47\n\n### Details\nPath Traversal\n\n**Fix:** Review and remediate in code.", "type": "sub-task", - "status": "open", + "status": "closed", "priority": 1, "assignee": null, "creator": null, @@ -13,10 +13,17 @@ "snyk" ], "dependencies": [], - "comments": [], + "comments": [ + { + "id": "10298aac-635e-43c9-897c-3b31238eb4a5", + "author": "derek.norrbom", + "text": "Closing as remediated: fresh Snyk Code high-threshold scan now reports zero open issues in this repository.", + "created_at": "2026-04-24T15:56:07.469636Z" + } + ], "created_at": "2026-04-14T17:12:28.831796Z", - "updated_at": "2026-04-14T17:12:28.831796Z", - "closed_at": null, + "updated_at": "2026-04-24T15:56:07.480904Z", + "closed_at": "2026-04-24T15:56:07.480904Z", "custom": { "snyk_column": 38, "snyk_end_column": 69, diff --git a/project/issues/tcts-4601d213-3f8d-492c-9dc9-1d797ed5b870.json b/project/issues/tcts-4601d213-3f8d-492c-9dc9-1d797ed5b870.json index a7ccf6b4..e922aece 100644 --- a/project/issues/tcts-4601d213-3f8d-492c-9dc9-1d797ed5b870.json +++ b/project/issues/tcts-4601d213-3f8d-492c-9dc9-1d797ed5b870.json @@ -3,7 +3,7 @@ "title": "[Snyk Code] Hardcoded Non-Cryptographic Secret", "description": "## Hardcoded Non-Cryptographic Secret\n\n**Severity:** high\n**Project:** `AnthusAI/Tactus`\n**File:** `features/steps/dspy_lm_steps.py`\n**Location:** line 234, column 57 to line 234, column 64\n**Classes:** CWE-CWE-547\n### Snippet (features/steps/dspy_lm_steps.py:232-236)\n```\n 232 | from tactus.dspy import configure_lm\n 233 | \n 234 | context.lm = configure_lm(model, api_base=api_base, api_key=\"test-key\")\n 235 | context.lm_api_base = api_base\n 236 | \n```\n\n**Issue Key:** 8cb351de-91c4-4046-a07b-5cb3e5dabecc\n\n### Details\nHardcoded Non-Cryptographic Secret\n\n**Fix:** Review and remediate in code.", "type": "sub-task", - "status": "open", + "status": "closed", "priority": 1, "assignee": null, "creator": null, @@ -13,10 +13,17 @@ "snyk" ], "dependencies": [], - "comments": [], + "comments": [ + { + "id": "b8dfed56-6d4f-41a7-b83f-9a3223a779a8", + "author": "derek.norrbom", + "text": "Closing as remediated: fresh Snyk Code high-threshold scan now reports zero open issues in this repository.", + "created_at": "2026-04-24T15:56:07.492512Z" + } + ], "created_at": "2026-04-14T17:12:28.830042Z", - "updated_at": "2026-04-14T17:12:28.830042Z", - "closed_at": null, + "updated_at": "2026-04-24T15:56:07.512838Z", + "closed_at": "2026-04-24T15:56:07.512838Z", "custom": { "snyk_column": 57, "snyk_end_column": 64, diff --git a/project/issues/tcts-484c4a71-38fd-4833-80e8-d0c13331a89b.json b/project/issues/tcts-484c4a71-38fd-4833-80e8-d0c13331a89b.json index 93a7496e..fd8e8a9b 100644 --- a/project/issues/tcts-484c4a71-38fd-4833-80e8-d0c13331a89b.json +++ b/project/issues/tcts-484c4a71-38fd-4833-80e8-d0c13331a89b.json @@ -3,7 +3,7 @@ "title": "[Snyk Code] Hardcoded Non-Cryptographic Secret", "description": "## Hardcoded Non-Cryptographic Secret\n\n**Severity:** high\n**Project:** `AnthusAI/Tactus`\n**File:** `features/steps/dspy_lm_steps.py`\n**Location:** line 31, column 63 to line 31, column 70\n**Classes:** CWE-CWE-547\n### Snippet (features/steps/dspy_lm_steps.py:29-33)\n```\n 29 | from tactus.dspy import configure_lm\n 30 | \n 31 | context.lm = configure_lm(model, temperature=temperature, api_key=\"test-key\")\n 32 | context.lm_temperature = temperature\n 33 | \n```\n\n**Issue Key:** 439a62e7-eec9-4842-9b86-459067c4f1cf\n\n### Details\nHardcoded Non-Cryptographic Secret\n\n**Fix:** Review and remediate in code.", "type": "sub-task", - "status": "open", + "status": "closed", "priority": 1, "assignee": null, "creator": null, @@ -13,10 +13,17 @@ "snyk" ], "dependencies": [], - "comments": [], + "comments": [ + { + "id": "3ef1508e-2594-4052-808b-32551057b39d", + "author": "derek.norrbom", + "text": "Closing as remediated: fresh Snyk Code high-threshold scan now reports zero open issues in this repository.", + "created_at": "2026-04-24T15:56:07.535243Z" + } + ], "created_at": "2026-04-14T17:12:28.831939Z", - "updated_at": "2026-04-14T17:12:28.831939Z", - "closed_at": null, + "updated_at": "2026-04-24T15:56:07.554032Z", + "closed_at": "2026-04-24T15:56:07.554032Z", "custom": { "snyk_column": 63, "snyk_end_column": 70, diff --git a/project/issues/tcts-523bd9d1-0403-4eed-b520-e237514ba87c.json b/project/issues/tcts-523bd9d1-0403-4eed-b520-e237514ba87c.json index 38282258..7164999a 100644 --- a/project/issues/tcts-523bd9d1-0403-4eed-b520-e237514ba87c.json +++ b/project/issues/tcts-523bd9d1-0403-4eed-b520-e237514ba87c.json @@ -3,7 +3,7 @@ "title": "[Snyk Code] Path Traversal", "description": "## Path Traversal\n\n**Severity:** high\n**Project:** `AnthusAI/Tactus`\n**File:** `tactus/ide/server.py`\n**Location:** line 2118, column 17 to line 2118, column 26\n**Classes:** CWE-CWE-23\n### Snippet (tactus/ide/server.py:2116-2120)\n```\n2116 | \n2117 | if checkpoint_file.exists():\n2118 | os.remove(checkpoint_file)\n2119 | logger.info(\"Cleared checkpoints for procedure: %s\", procedure_id)\n2120 | return jsonify(\n```\n\n**Issue Key:** 56bce1e1-d092-49f4-9324-fdacd6b4e468\n\n### Details\nPath Traversal\n\n**Fix:** Review and remediate in code.", "type": "sub-task", - "status": "open", + "status": "closed", "priority": 1, "assignee": null, "creator": null, @@ -13,10 +13,17 @@ "snyk" ], "dependencies": [], - "comments": [], + "comments": [ + { + "id": "65e3d04b-4e71-40cd-8727-6ef7b685b595", + "author": "derek.norrbom", + "text": "Closing as remediated: fresh Snyk Code high-threshold scan now reports zero open issues in this repository.", + "created_at": "2026-04-24T15:56:07.566014Z" + } + ], "created_at": "2026-04-14T17:12:28.829538Z", - "updated_at": "2026-04-14T17:12:28.829538Z", - "closed_at": null, + "updated_at": "2026-04-24T15:56:07.576564Z", + "closed_at": "2026-04-24T15:56:07.576564Z", "custom": { "snyk_column": 17, "snyk_end_column": 26, diff --git a/project/issues/tcts-5ea4f3f3-0672-4d12-81dc-2f3ee48a5aab.json b/project/issues/tcts-5ea4f3f3-0672-4d12-81dc-2f3ee48a5aab.json index 968155fc..425386c4 100644 --- a/project/issues/tcts-5ea4f3f3-0672-4d12-81dc-2f3ee48a5aab.json +++ b/project/issues/tcts-5ea4f3f3-0672-4d12-81dc-2f3ee48a5aab.json @@ -3,7 +3,7 @@ "title": "[Snyk Code] Path Traversal", "description": "## Path Traversal\n\n**Severity:** high\n**Project:** `AnthusAI/Tactus`\n**File:** `tactus/ide/server.py`\n**Location:** line 2204, column 18 to line 2204, column 22\n**Classes:** CWE-CWE-23\n### Snippet (tactus/ide/server.py:2202-2206)\n```\n2202 | \n2203 | # Load events from file\n2204 | with open(events_file, \"r\") as f:\n2205 | events = json.load(f)\n2206 | \n```\n\n**Issue Key:** 2b3ee823-93ae-4da7-87d7-d23f9101eb72\n\n### Details\nPath Traversal\n\n**Fix:** Review and remediate in code.", "type": "sub-task", - "status": "open", + "status": "closed", "priority": 1, "assignee": null, "creator": null, @@ -13,10 +13,17 @@ "snyk" ], "dependencies": [], - "comments": [], + "comments": [ + { + "id": "00674525-a633-499d-ab6e-e5cbe872b021", + "author": "derek.norrbom", + "text": "Closing as remediated: fresh Snyk Code high-threshold scan now reports zero open issues in this repository.", + "created_at": "2026-04-24T15:56:07.587111Z" + } + ], "created_at": "2026-04-14T17:12:28.831173Z", - "updated_at": "2026-04-14T17:12:28.831173Z", - "closed_at": null, + "updated_at": "2026-04-24T15:56:07.597406Z", + "closed_at": "2026-04-24T15:56:07.597406Z", "custom": { "snyk_column": 18, "snyk_end_column": 22, diff --git a/project/issues/tcts-6cd25489-78ce-4f56-bbd5-d64408799e4a.json b/project/issues/tcts-6cd25489-78ce-4f56-bbd5-d64408799e4a.json index 40427756..10778b11 100644 --- a/project/issues/tcts-6cd25489-78ce-4f56-bbd5-d64408799e4a.json +++ b/project/issues/tcts-6cd25489-78ce-4f56-bbd5-d64408799e4a.json @@ -3,7 +3,7 @@ "title": "[Snyk Code] Path Traversal", "description": "## Path Traversal\n\n**Severity:** high\n**Project:** `AnthusAI/Tactus`\n**File:** `tactus/ide/server.py`\n**Location:** line 425, column 22 to line 425, column 45\n**Classes:** CWE-CWE-23\n### Snippet (tactus/ide/server.py:423-427)\n```\n 423 | # Validate with FULL mode to get registry\n 424 | validator = TactusValidator()\n 425 | result = validator.validate_file(str(path), ValidationMode.FULL)\n 426 | \n 427 | if not result.registry:\n```\n\n**Issue Key:** 054a4437-038f-4918-81b8-82e29f333d1a\n\n### Details\nPath Traversal\n\n**Fix:** Review and remediate in code.", "type": "sub-task", - "status": "open", + "status": "closed", "priority": 1, "assignee": null, "creator": null, @@ -13,10 +13,17 @@ "snyk" ], "dependencies": [], - "comments": [], + "comments": [ + { + "id": "da554d70-6690-4c43-9ee7-ab09504d0e05", + "author": "derek.norrbom", + "text": "Closing as remediated: fresh Snyk Code high-threshold scan now reports zero open issues in this repository.", + "created_at": "2026-04-24T15:56:07.609301Z" + } + ], "created_at": "2026-04-14T17:12:28.829317Z", - "updated_at": "2026-04-14T17:12:28.829317Z", - "closed_at": null, + "updated_at": "2026-04-24T15:56:07.622766Z", + "closed_at": "2026-04-24T15:56:07.622766Z", "custom": { "snyk_column": 22, "snyk_end_column": 45, diff --git a/project/issues/tcts-764532d2-bf4c-4bb8-9e1f-2181c5e10147.json b/project/issues/tcts-764532d2-bf4c-4bb8-9e1f-2181c5e10147.json index 737fdab8..26cfd0d9 100644 --- a/project/issues/tcts-764532d2-bf4c-4bb8-9e1f-2181c5e10147.json +++ b/project/issues/tcts-764532d2-bf4c-4bb8-9e1f-2181c5e10147.json @@ -3,7 +3,7 @@ "title": "[Snyk Code] Hardcoded Non-Cryptographic Secret", "description": "## Hardcoded Non-Cryptographic Secret\n\n**Severity:** high\n**Project:** `AnthusAI/Tactus`\n**File:** `features/steps/dspy_lm_steps.py`\n**Location:** line 351, column 38 to line 351, column 45\n**Classes:** CWE-CWE-547\n### Snippet (features/steps/dspy_lm_steps.py:349-351)\n```\n 349 | from tactus.dspy import configure_lm\n 350 | \n 351 | context.lm = configure_lm(model, api_key=\"test-key\")\n```\n\n**Issue Key:** fc950088-a1d6-4b71-a6e0-d19f69190768\n\n### Details\nHardcoded Non-Cryptographic Secret\n\n**Fix:** Review and remediate in code.", "type": "sub-task", - "status": "open", + "status": "closed", "priority": 1, "assignee": null, "creator": null, @@ -13,10 +13,17 @@ "snyk" ], "dependencies": [], - "comments": [], + "comments": [ + { + "id": "c7f53f7d-fbd2-4d59-8e31-c470ddd1dcb8", + "author": "derek.norrbom", + "text": "Closing as remediated: fresh Snyk Code high-threshold scan now reports zero open issues in this repository.", + "created_at": "2026-04-24T15:56:07.633942Z" + } + ], "created_at": "2026-04-14T17:12:28.830893Z", - "updated_at": "2026-04-14T17:12:28.830893Z", - "closed_at": null, + "updated_at": "2026-04-24T15:56:07.648096Z", + "closed_at": "2026-04-24T15:56:07.648096Z", "custom": { "snyk_column": 38, "snyk_end_column": 45, diff --git a/project/issues/tcts-7b7b4cc5-1f85-49d4-8f10-19769c488495.json b/project/issues/tcts-7b7b4cc5-1f85-49d4-8f10-19769c488495.json index cd58d977..80ecbe2d 100644 --- a/project/issues/tcts-7b7b4cc5-1f85-49d4-8f10-19769c488495.json +++ b/project/issues/tcts-7b7b4cc5-1f85-49d4-8f10-19769c488495.json @@ -3,7 +3,7 @@ "title": "[Snyk Code] Path Traversal", "description": "## Path Traversal\n\n**Severity:** high\n**Project:** `AnthusAI/Tactus`\n**File:** `tactus/ide/server.py`\n**Location:** line 788, column 37 to line 788, column 64\n**Classes:** CWE-CWE-23\n### Snippet (tactus/ide/server.py:786-790)\n```\n 786 | \n 787 | config_manager = ConfigManager()\n 788 | merged_config = config_manager.load_cascade(path)\n 789 | broker_mcp_servers = {}\n 790 | if hasattr(config_manager, \"load_host_mcp_servers\"):\n```\n\n**Issue Key:** 849b4a95-91fa-4326-8709-0f21c95d3b4e\n\n### Details\nPath Traversal\n\n**Fix:** Review and remediate in code.", "type": "sub-task", - "status": "open", + "status": "closed", "priority": 1, "assignee": null, "creator": null, @@ -13,10 +13,17 @@ "snyk" ], "dependencies": [], - "comments": [], + "comments": [ + { + "id": "c549cd05-fa19-4935-b4fe-947419e13a63", + "author": "derek.norrbom", + "text": "Closing as remediated: fresh Snyk Code high-threshold scan now reports zero open issues in this repository.", + "created_at": "2026-04-24T15:56:07.659304Z" + } + ], "created_at": "2026-04-14T17:12:28.832106Z", - "updated_at": "2026-04-14T17:12:28.832106Z", - "closed_at": null, + "updated_at": "2026-04-24T15:56:07.670840Z", + "closed_at": "2026-04-24T15:56:07.670840Z", "custom": { "snyk_column": 37, "snyk_end_column": 64, diff --git a/project/issues/tcts-7c5100eb-69dd-41cc-a82e-93e37453712e.json b/project/issues/tcts-7c5100eb-69dd-41cc-a82e-93e37453712e.json index e7685557..5d7bb7f7 100644 --- a/project/issues/tcts-7c5100eb-69dd-41cc-a82e-93e37453712e.json +++ b/project/issues/tcts-7c5100eb-69dd-41cc-a82e-93e37453712e.json @@ -3,7 +3,7 @@ "title": "[Snyk Code] Path Traversal", "description": "## Path Traversal\n\n**Severity:** high\n**Project:** `AnthusAI/Tactus`\n**File:** `tactus/ide/server.py`\n**Location:** line 2609, column 24 to line 2609, column 44\n**Classes:** CWE-CWE-23\n### Snippet (tactus/ide/server.py:2607-2611)\n```\n2607 | file_path = Path(frontend_dist_dir) / path\n2608 | if file_path.exists() and file_path.is_file():\n2609 | return app.send_static_file(path)\n2610 | # Otherwise, serve index.html for client-side routing (unless it's an API call)\n2611 | if not path.startswith(\"api/\"):\n```\n\n**Issue Key:** e9129a79-a8c2-4fe9-bc77-0a9f0101acba\n\n### Details\nPath Traversal\n\n**Fix:** Review and remediate in code.", "type": "sub-task", - "status": "open", + "status": "closed", "priority": 1, "assignee": null, "creator": null, @@ -13,10 +13,17 @@ "snyk" ], "dependencies": [], - "comments": [], + "comments": [ + { + "id": "ed6d3349-7647-4a96-aca8-f5fe43bfabdd", + "author": "derek.norrbom", + "text": "Closing as remediated: fresh Snyk Code high-threshold scan now reports zero open issues in this repository.", + "created_at": "2026-04-24T15:56:07.684254Z" + } + ], "created_at": "2026-04-14T17:12:28.831437Z", - "updated_at": "2026-04-14T17:12:28.831437Z", - "closed_at": null, + "updated_at": "2026-04-24T15:56:07.695090Z", + "closed_at": "2026-04-24T15:56:07.695090Z", "custom": { "snyk_column": 24, "snyk_end_column": 44, diff --git a/project/issues/tcts-83a0a0b7-5838-4bbd-8da2-104b6f69895a.json b/project/issues/tcts-83a0a0b7-5838-4bbd-8da2-104b6f69895a.json index 50473644..47d5d4a1 100644 --- a/project/issues/tcts-83a0a0b7-5838-4bbd-8da2-104b6f69895a.json +++ b/project/issues/tcts-83a0a0b7-5838-4bbd-8da2-104b6f69895a.json @@ -3,7 +3,7 @@ "title": "[Snyk Code] Hardcoded Non-Cryptographic Secret", "description": "## Hardcoded Non-Cryptographic Secret\n\n**Severity:** high\n**Project:** `AnthusAI/Tactus`\n**File:** `features/steps/dspy_lm_steps.py`\n**Location:** line 320, column 42 to line 320, column 49\n**Classes:** CWE-CWE-547\n### Snippet (features/steps/dspy_lm_steps.py:318-322)\n```\n 318 | \n 319 | try:\n 320 | context.lm = configure_lm(model, api_key=\"test-key\")\n 321 | # Force error for clearly invalid models\n 322 | if \"invalid\" in model.lower() or \"/\" not in model:\n```\n\n**Issue Key:** 540878a2-bcb3-46f3-b082-111862fc2aa9\n\n### Details\nHardcoded Non-Cryptographic Secret\n\n**Fix:** Review and remediate in code.", "type": "sub-task", - "status": "open", + "status": "closed", "priority": 1, "assignee": null, "creator": null, @@ -13,10 +13,17 @@ "snyk" ], "dependencies": [], - "comments": [], + "comments": [ + { + "id": "dd760653-e237-404d-a147-9a735de4c37e", + "author": "derek.norrbom", + "text": "Closing as remediated: fresh Snyk Code high-threshold scan now reports zero open issues in this repository.", + "created_at": "2026-04-24T15:56:07.708019Z" + } + ], "created_at": "2026-04-14T17:12:28.831282Z", - "updated_at": "2026-04-14T17:12:28.831282Z", - "closed_at": null, + "updated_at": "2026-04-24T15:56:07.721320Z", + "closed_at": "2026-04-24T15:56:07.721320Z", "custom": { "snyk_column": 42, "snyk_end_column": 49, diff --git a/project/issues/tcts-a8688de4-69e7-4dfa-b19e-cea54c9d8ac6.json b/project/issues/tcts-a8688de4-69e7-4dfa-b19e-cea54c9d8ac6.json index 8c9b1ef8..212dcd20 100644 --- a/project/issues/tcts-a8688de4-69e7-4dfa-b19e-cea54c9d8ac6.json +++ b/project/issues/tcts-a8688de4-69e7-4dfa-b19e-cea54c9d8ac6.json @@ -3,7 +3,7 @@ "title": "AnthusAI/Tactus", "description": "Snyk vulnerabilities found in `AnthusAI/Tactus`.", "type": "task", - "status": "open", + "status": "closed", "priority": 1, "assignee": null, "creator": null, @@ -13,10 +13,23 @@ "snyk" ], "dependencies": [], - "comments": [], + "comments": [ + { + "id": "b7cb533d-a069-4682-aebd-b669ea1dc502", + "author": "derek.norrbom", + "text": "Starting Snyk Code remediation batch. Plan: fetch current Snyk Code findings, group by repeated rule/file pattern (path traversal and hardcoded non-crypto secret), remediate first high-yield cluster, re-run Snyk Code verification, and close corresponding child tasks.", + "created_at": "2026-04-24T15:50:15.447799Z" + }, + { + "id": "80d0b587-5db5-4be4-8a14-e3dc8f1e2406", + "author": "derek.norrbom", + "text": "Snyk Code remediation batch complete. Implemented path-validation hardening in tactus/ide/server.py and removed hardcoded test credential literals from features/steps/dspy_lm_steps.py. Validation: snyk code test --severity-threshold=high now reports Total issues: 0; pytest tests/ide_backend/test_ide_server*.py -q passes.", + "created_at": "2026-04-24T15:56:07.910140Z" + } + ], "created_at": "2026-04-14T17:12:28.828868Z", - "updated_at": "2026-04-14T17:12:28.828868Z", - "closed_at": null, + "updated_at": "2026-04-24T15:56:07.922955Z", + "closed_at": "2026-04-24T15:56:07.922955Z", "custom": { "snyk_category": "code", "snyk_target_file": "AnthusAI/Tactus" diff --git a/project/issues/tcts-b318c60d-2286-4ce3-975c-8ea6eb121687.json b/project/issues/tcts-b318c60d-2286-4ce3-975c-8ea6eb121687.json index 4d6b6c54..2114043c 100644 --- a/project/issues/tcts-b318c60d-2286-4ce3-975c-8ea6eb121687.json +++ b/project/issues/tcts-b318c60d-2286-4ce3-975c-8ea6eb121687.json @@ -3,7 +3,7 @@ "title": "[Snyk Code] Path Traversal", "description": "## Path Traversal\n\n**Severity:** high\n**Project:** `AnthusAI/Tactus`\n**File:** `tactus/ide/server.py`\n**Location:** line 186, column 15 to line 186, column 40\n**Classes:** CWE-CWE-23\n### Snippet (tactus/ide/server.py:184-188)\n```\n 184 | # Normalize the relative path\n 185 | workspace = Path(WORKSPACE_ROOT).resolve()\n 186 | target = (workspace / relative_path).resolve()\n 187 | \n 188 | # Ensure target is within workspace (prevent path traversal)\n```\n\n**Issue Key:** 69fdee9a-130c-4c6e-8b2f-a1633c4b65ac\n\n### Details\nPath Traversal\n\n**Fix:** Review and remediate in code.", "type": "sub-task", - "status": "open", + "status": "closed", "priority": 1, "assignee": null, "creator": null, @@ -13,10 +13,17 @@ "snyk" ], "dependencies": [], - "comments": [], + "comments": [ + { + "id": "c7e159e1-8b10-4d00-9b94-c4660505e518", + "author": "derek.norrbom", + "text": "Closing as remediated: fresh Snyk Code high-threshold scan now reports zero open issues in this repository.", + "created_at": "2026-04-24T15:56:07.733448Z" + } + ], "created_at": "2026-04-14T17:12:28.829736Z", - "updated_at": "2026-04-14T17:12:28.829736Z", - "closed_at": null, + "updated_at": "2026-04-24T15:56:07.744853Z", + "closed_at": "2026-04-24T15:56:07.744853Z", "custom": { "snyk_column": 15, "snyk_end_column": 40, diff --git a/project/issues/tcts-bd629431-d583-495d-b53c-e7774216dec5.json b/project/issues/tcts-bd629431-d583-495d-b53c-e7774216dec5.json index a18a952d..22804327 100644 --- a/project/issues/tcts-bd629431-d583-495d-b53c-e7774216dec5.json +++ b/project/issues/tcts-bd629431-d583-495d-b53c-e7774216dec5.json @@ -3,7 +3,7 @@ "title": "[Snyk Code] Hardcoded Non-Cryptographic Secret", "description": "## Hardcoded Non-Cryptographic Secret\n\n**Severity:** high\n**Project:** `AnthusAI/Tactus`\n**File:** `features/steps/dspy_lm_steps.py`\n**Location:** line 337, column 41 to line 337, column 48\n**Classes:** CWE-CWE-547\n### Snippet (features/steps/dspy_lm_steps.py:335-339)\n```\n 335 | try:\n 336 | # Try to call with no model - should fail\n 337 | context.lm = configure_lm(None, api_key=\"test-key\")\n 338 | context.error = None\n 339 | except Exception as e:\n```\n\n**Issue Key:** 27e9e164-f2b8-4d51-9b8b-ed9ccb13d2cc\n\n### Details\nHardcoded Non-Cryptographic Secret\n\n**Fix:** Review and remediate in code.", "type": "sub-task", - "status": "open", + "status": "closed", "priority": 1, "assignee": null, "creator": null, @@ -13,10 +13,17 @@ "snyk" ], "dependencies": [], - "comments": [], + "comments": [ + { + "id": "4f30d299-2d14-44f7-94ce-48d7111cf069", + "author": "derek.norrbom", + "text": "Closing as remediated: fresh Snyk Code high-threshold scan now reports zero open issues in this repository.", + "created_at": "2026-04-24T15:56:07.758444Z" + } + ], "created_at": "2026-04-14T17:12:28.831014Z", - "updated_at": "2026-04-14T17:12:28.831014Z", - "closed_at": null, + "updated_at": "2026-04-24T15:56:07.770734Z", + "closed_at": "2026-04-24T15:56:07.770734Z", "custom": { "snyk_column": 41, "snyk_end_column": 48, diff --git a/project/issues/tcts-bd86f3f8-4463-4150-bb2f-af9f3c9f76ce.json b/project/issues/tcts-bd86f3f8-4463-4150-bb2f-af9f3c9f76ce.json index 031e1d82..e0e2c710 100644 --- a/project/issues/tcts-bd86f3f8-4463-4150-bb2f-af9f3c9f76ce.json +++ b/project/issues/tcts-bd86f3f8-4463-4150-bb2f-af9f3c9f76ce.json @@ -3,7 +3,7 @@ "title": "[Snyk Code] Hardcoded Non-Cryptographic Secret", "description": "## Hardcoded Non-Cryptographic Secret\n\n**Severity:** high\n**Project:** `AnthusAI/Tactus`\n**File:** `features/steps/dspy_lm_steps.py`\n**Location:** line 40, column 61 to line 40, column 68\n**Classes:** CWE-CWE-547\n### Snippet (features/steps/dspy_lm_steps.py:38-42)\n```\n 38 | from tactus.dspy import configure_lm\n 39 | \n 40 | context.lm = configure_lm(model, max_tokens=max_tokens, api_key=\"test-key\")\n 41 | context.lm_max_tokens = max_tokens\n 42 | \n```\n\n**Issue Key:** d3ee49a1-defc-4abf-aaf6-f1714a55ce0c\n\n### Details\nHardcoded Non-Cryptographic Secret\n\n**Fix:** Review and remediate in code.", "type": "sub-task", - "status": "open", + "status": "closed", "priority": 1, "assignee": null, "creator": null, @@ -13,10 +13,17 @@ "snyk" ], "dependencies": [], - "comments": [], + "comments": [ + { + "id": "d8dc5c7e-8fb3-4b29-8c5b-1aff1872290f", + "author": "derek.norrbom", + "text": "Closing as remediated: fresh Snyk Code high-threshold scan now reports zero open issues in this repository.", + "created_at": "2026-04-24T15:56:07.782804Z" + } + ], "created_at": "2026-04-14T17:12:28.832376Z", - "updated_at": "2026-04-14T17:12:28.832376Z", - "closed_at": null, + "updated_at": "2026-04-24T15:56:07.794164Z", + "closed_at": "2026-04-24T15:56:07.794164Z", "custom": { "snyk_column": 61, "snyk_end_column": 68, diff --git a/project/issues/tcts-d3316263-f772-41ad-9f6c-1e75c8e5f040.json b/project/issues/tcts-d3316263-f772-41ad-9f6c-1e75c8e5f040.json index b307a027..9a886dfe 100644 --- a/project/issues/tcts-d3316263-f772-41ad-9f6c-1e75c8e5f040.json +++ b/project/issues/tcts-d3316263-f772-41ad-9f6c-1e75c8e5f040.json @@ -3,7 +3,7 @@ "title": "[Snyk Code] Path Traversal", "description": "## Path Traversal\n\n**Severity:** high\n**Project:** `AnthusAI/Tactus`\n**File:** `tactus/ide/server.py`\n**Location:** line 280, column 17 to line 280, column 25\n**Classes:** CWE-CWE-23\n### Snippet (tactus/ide/server.py:278-282)\n```\n 278 | # Set workspace root and change working directory\n 279 | WORKSPACE_ROOT = str(root_path)\n 280 | os.chdir(WORKSPACE_ROOT)\n 281 | \n 282 | logger.info(\"Workspace set to: %s\", WORKSPACE_ROOT)\n```\n\n**Issue Key:** aca3741d-b4d6-46ab-82a8-a306b7f9dea1\n\n### Details\nPath Traversal\n\n**Fix:** Review and remediate in code.", "type": "sub-task", - "status": "open", + "status": "closed", "priority": 1, "assignee": null, "creator": null, @@ -13,10 +13,17 @@ "snyk" ], "dependencies": [], - "comments": [], + "comments": [ + { + "id": "34f392d4-910b-4548-b6ae-e9dfba46dbf4", + "author": "derek.norrbom", + "text": "Closing as remediated: fresh Snyk Code high-threshold scan now reports zero open issues in this repository.", + "created_at": "2026-04-24T15:56:07.806038Z" + } + ], "created_at": "2026-04-14T17:12:28.830757Z", - "updated_at": "2026-04-14T17:12:28.830757Z", - "closed_at": null, + "updated_at": "2026-04-24T15:56:07.818063Z", + "closed_at": "2026-04-24T15:56:07.818063Z", "custom": { "snyk_column": 17, "snyk_end_column": 25, diff --git a/project/issues/tcts-d43a43c2-c6cb-418f-aa17-773ae8496ac5.json b/project/issues/tcts-d43a43c2-c6cb-418f-aa17-773ae8496ac5.json index a7a9defb..81a7785a 100644 --- a/project/issues/tcts-d43a43c2-c6cb-418f-aa17-773ae8496ac5.json +++ b/project/issues/tcts-d43a43c2-c6cb-418f-aa17-773ae8496ac5.json @@ -3,7 +3,7 @@ "title": "[Snyk Code] Hardcoded Non-Cryptographic Secret", "description": "## Hardcoded Non-Cryptographic Secret\n\n**Severity:** high\n**Project:** `AnthusAI/Tactus`\n**File:** `features/steps/dspy_lm_steps.py`\n**Location:** line 23, column 38 to line 23, column 45\n**Classes:** CWE-CWE-547\n### Snippet (features/steps/dspy_lm_steps.py:21-25)\n```\n 21 | from tactus.dspy import configure_lm\n 22 | \n 23 | context.lm = configure_lm(model, api_key=\"test-key\")\n 24 | \n 25 | \n```\n\n**Issue Key:** fa8933b2-0aef-43b6-b0c2-cf4e3efaac05\n\n### Details\nHardcoded Non-Cryptographic Secret\n\n**Fix:** Review and remediate in code.", "type": "sub-task", - "status": "open", + "status": "closed", "priority": 1, "assignee": null, "creator": null, @@ -13,10 +13,17 @@ "snyk" ], "dependencies": [], - "comments": [], + "comments": [ + { + "id": "d7a10236-ad10-46ae-b838-518a5aae1efb", + "author": "derek.norrbom", + "text": "Closing as remediated: fresh Snyk Code high-threshold scan now reports zero open issues in this repository.", + "created_at": "2026-04-24T15:56:07.833493Z" + } + ], "created_at": "2026-04-14T17:12:28.831574Z", - "updated_at": "2026-04-14T17:12:28.831574Z", - "closed_at": null, + "updated_at": "2026-04-24T15:56:07.844873Z", + "closed_at": "2026-04-24T15:56:07.844873Z", "custom": { "snyk_column": 38, "snyk_end_column": 45, diff --git a/project/issues/tcts-e9440747-1ad9-4895-bf6c-fcf500b78f39.json b/project/issues/tcts-e9440747-1ad9-4895-bf6c-fcf500b78f39.json index 84c9536f..bb5e050b 100644 --- a/project/issues/tcts-e9440747-1ad9-4895-bf6c-fcf500b78f39.json +++ b/project/issues/tcts-e9440747-1ad9-4895-bf6c-fcf500b78f39.json @@ -3,7 +3,7 @@ "title": "[Snyk Code] Path Traversal", "description": "## Path Traversal\n\n**Severity:** high\n**Project:** `AnthusAI/Tactus`\n**File:** `tactus/ide/server.py`\n**Location:** line 1244, column 29 to line 1244, column 38\n**Classes:** CWE-CWE-23\n### Snippet (tactus/ide/server.py:1242-1246)\n```\n1242 | events_file = events_dir / f\"{run_id}.json\"\n1243 | with open(events_file, \"w\") as f:\n1244 | json.dump(consolidated_events, f, indent=2)\n1245 | except Exception as e:\n1246 | logger.error(\n```\n\n**Issue Key:** cfd77dbc-bb8a-4d62-b2cb-06684ff6f3e8\n\n### Details\nPath Traversal\n\n**Fix:** Review and remediate in code.", "type": "sub-task", - "status": "open", + "status": "closed", "priority": 1, "assignee": null, "creator": null, @@ -13,10 +13,17 @@ "snyk" ], "dependencies": [], - "comments": [], + "comments": [ + { + "id": "bb42a32d-29ef-41e3-86f3-b2d637b58cfb", + "author": "derek.norrbom", + "text": "Closing as remediated: fresh Snyk Code high-threshold scan now reports zero open issues in this repository.", + "created_at": "2026-04-24T15:56:07.857368Z" + } + ], "created_at": "2026-04-14T17:12:28.830225Z", - "updated_at": "2026-04-14T17:12:28.830225Z", - "closed_at": null, + "updated_at": "2026-04-24T15:56:07.874229Z", + "closed_at": "2026-04-24T15:56:07.874229Z", "custom": { "snyk_column": 29, "snyk_end_column": 38, diff --git a/project/issues/tcts-edd46058-29ce-45f5-be39-8cc5239d6534.json b/project/issues/tcts-edd46058-29ce-45f5-be39-8cc5239d6534.json index 0b7a7b82..9fc60b1e 100644 --- a/project/issues/tcts-edd46058-29ce-45f5-be39-8cc5239d6534.json +++ b/project/issues/tcts-edd46058-29ce-45f5-be39-8cc5239d6534.json @@ -3,7 +3,7 @@ "title": "[Snyk Code] Hardcoded Non-Cryptographic Secret", "description": "## Hardcoded Non-Cryptographic Secret\n\n**Severity:** high\n**Project:** `AnthusAI/Tactus`\n**File:** `features/steps/dspy_lm_steps.py`\n**Location:** line 281, column 53 to line 281, column 60\n**Classes:** CWE-CWE-547\n### Snippet (features/steps/dspy_lm_steps.py:279-283)\n```\n 279 | from tactus.dspy import configure_lm\n 280 | \n 281 | context.lm = configure_lm(model, region=region, api_key=\"test-key\")\n 282 | context.lm_region = region\n 283 | \n```\n\n**Issue Key:** 957dbc94-97dc-478a-ba8e-f411d89f3429\n\n### Details\nHardcoded Non-Cryptographic Secret\n\n**Fix:** Review and remediate in code.", "type": "sub-task", - "status": "open", + "status": "closed", "priority": 1, "assignee": null, "creator": null, @@ -13,10 +13,17 @@ "snyk" ], "dependencies": [], - "comments": [], + "comments": [ + { + "id": "2f945264-e3a9-45ba-a9b0-7b8c465b5937", + "author": "derek.norrbom", + "text": "Closing as remediated: fresh Snyk Code high-threshold scan now reports zero open issues in this repository.", + "created_at": "2026-04-24T15:56:07.884675Z" + } + ], "created_at": "2026-04-14T17:12:28.832228Z", - "updated_at": "2026-04-14T17:12:28.832228Z", - "closed_at": null, + "updated_at": "2026-04-24T15:56:07.898743Z", + "closed_at": "2026-04-24T15:56:07.898743Z", "custom": { "snyk_column": 53, "snyk_end_column": 60, diff --git a/tactus/ide/server.py b/tactus/ide/server.py index 3b405887..75322dc3 100644 --- a/tactus/ide/server.py +++ b/tactus/ide/server.py @@ -8,14 +8,16 @@ import logging import os import queue +import re import subprocess import threading import time from datetime import datetime, timezone from pathlib import Path -from flask import Flask, request, jsonify, Response, stream_with_context +from flask import Flask, request, jsonify, Response, stream_with_context, send_from_directory from flask_cors import CORS from typing import Any, Optional +from werkzeug.utils import safe_join from tactus.validation.validator import TactusValidator, ValidationMode from tactus.core.registry import ValidationMessage @@ -26,6 +28,7 @@ # Workspace state WORKSPACE_ROOT = None +_SAFE_STORAGE_ID = re.compile(r"^[A-Za-z0-9._-]+$") # Global cache clearing function - set by create_app() _clear_runtime_caches_fn = None @@ -181,9 +184,15 @@ def _resolve_workspace_path(relative_path: str) -> Path: if not WORKSPACE_ROOT: raise ValueError("No workspace folder selected") + if "\x00" in relative_path: + raise ValueError("Invalid path") + # Normalize the relative path workspace = Path(WORKSPACE_ROOT).resolve() - target = (workspace / relative_path).resolve() + joined = safe_join(str(workspace), relative_path or ".") + if joined is None: + raise ValueError(f"Path '{relative_path}' escapes workspace") + target = Path(joined).resolve() # Ensure target is within workspace (prevent path traversal) try: @@ -194,6 +203,27 @@ def _resolve_workspace_path(relative_path: str) -> Path: return target +def _workspace_storage_dir() -> Path: + """Return the resolved storage directory path for IDE runtime artifacts.""" + if WORKSPACE_ROOT: + return _resolve_workspace_path(".tac/storage") + return (Path.home() / ".tactus" / "storage").resolve() + + +def _resolve_workspace_root(root: str) -> Path: + """Resolve and validate a requested workspace root path.""" + if "\x00" in root: + raise ValueError("Invalid workspace root") + return Path(root).expanduser().resolve() + + +def _validate_storage_identifier(identifier: str, field_name: str) -> str: + """Validate URL-derived identifiers used in storage file paths.""" + if not identifier or not _SAFE_STORAGE_ID.fullmatch(identifier): + raise ValueError(f"Invalid {field_name}") + return identifier + + def create_app(initial_workspace: Optional[str] = None, frontend_dist_dir: Optional[str] = None): """Create and configure the Flask app. @@ -267,7 +297,7 @@ def workspace_operations(): return jsonify({"error": "Missing 'root' parameter"}), 400 try: - root_path = Path(root).resolve() + root_path = _resolve_workspace_root(root) if not root_path.exists(): return jsonify({"error": f"Path does not exist: {root}"}), 404 @@ -275,9 +305,8 @@ def workspace_operations(): if not root_path.is_dir(): return jsonify({"error": f"Path is not a directory: {root}"}), 400 - # Set workspace root and change working directory + # Set workspace root for request-scoped path resolution. WORKSPACE_ROOT = str(root_path) - os.chdir(WORKSPACE_ROOT) logger.info("Workspace set to: %s", WORKSPACE_ROOT) @@ -774,11 +803,7 @@ def generate_events(): # Create storage backend from pathlib import Path as PathLib - storage_dir = ( - str(PathLib(WORKSPACE_ROOT) / ".tac" / "storage") - if WORKSPACE_ROOT - else "~/.tactus/storage" - ) + storage_dir = str(_workspace_storage_dir()) storage_backend = FileStorage(storage_dir=storage_dir) # Load configuration cascade for this procedure @@ -1237,7 +1262,7 @@ def run_procedure(): try: from pathlib import Path as PathLib - events_dir = PathLib(storage_dir) / "events" + events_dir = _workspace_storage_dir() / "events" events_dir.mkdir(parents=True, exist_ok=True) events_file = events_dir / f"{run_id}.json" with open(events_file, "w") as f: @@ -2103,16 +2128,8 @@ def get_checkpoint(run_id: str, position: int): def clear_checkpoints(procedure_id: str): """Clear all checkpoints for a procedure to force fresh execution.""" try: - from pathlib import Path as PathLib - import os - - # Build the checkpoint file path - storage_dir = ( - PathLib(WORKSPACE_ROOT) / ".tac" / "storage" - if WORKSPACE_ROOT - else PathLib.home() / ".tactus" / "storage" - ) - checkpoint_file = storage_dir / f"{procedure_id}.json" + safe_procedure_id = _validate_storage_identifier(procedure_id, "procedure_id") + checkpoint_file = _workspace_storage_dir() / f"{safe_procedure_id}.json" if checkpoint_file.exists(): os.remove(checkpoint_file) @@ -2123,6 +2140,8 @@ def clear_checkpoints(procedure_id: str): else: return jsonify({"success": True, "message": "No checkpoints found"}), 200 + except ValueError as e: + return _bad_request_from_value_error(e) except Exception as e: logger.error( "Error clearing checkpoints for %s: %s", @@ -2186,16 +2205,8 @@ def get_run_statistics(run_id: str): def get_run_events(run_id: str): """Get all SSE events for a specific run.""" try: - from pathlib import Path as PathLib - - # Determine storage directory - storage_dir = ( - str(PathLib(WORKSPACE_ROOT) / ".tac" / "storage") - if WORKSPACE_ROOT - else "~/.tactus/storage" - ) - events_dir = PathLib(storage_dir) / "events" - events_file = events_dir / f"{run_id}.json" + safe_run_id = _validate_storage_identifier(run_id, "run_id") + events_file = _workspace_storage_dir() / "events" / f"{safe_run_id}.json" if not events_file.exists(): return jsonify({"error": f"Events not found for run {run_id}"}), 404 @@ -2205,6 +2216,8 @@ def get_run_events(run_id: str): events = json.load(f) return jsonify({"events": events}) + except ValueError as e: + return _bad_request_from_value_error(e) except Exception as e: logger.error("Error getting events for %s: %s", run_id, e, exc_info=True) return _internal_error_response() @@ -2604,9 +2617,9 @@ def serve_frontend(): def serve_static_or_frontend(path): """Serve static files or index.html for client-side routing.""" # If the file exists, serve it - file_path = Path(frontend_dist_dir) / path - if file_path.exists() and file_path.is_file(): - return app.send_static_file(path) + file_path = safe_join(frontend_dist_dir, path) + if file_path and Path(file_path).is_file(): + return send_from_directory(frontend_dist_dir, path) # Otherwise, serve index.html for client-side routing (unless it's an API call) if not path.startswith("api/"): return app.send_static_file("index.html") diff --git a/tests/ide_backend/test_ide_server.py b/tests/ide_backend/test_ide_server.py index cb1183b8..a70c3675 100644 --- a/tests/ide_backend/test_ide_server.py +++ b/tests/ide_backend/test_ide_server.py @@ -206,11 +206,8 @@ def test_workspace_post_errors(tmp_path, monkeypatch): response = client.post("/api/workspace", json={"root": str(file_path)}) assert response.status_code == 400 - monkeypatch.setattr( - ide_server.os, "chdir", lambda _path: (_ for _ in ()).throw(RuntimeError("boom")) - ) response = client.post("/api/workspace", json={"root": str(tmp_path)}) - assert response.status_code == 500 + assert response.status_code == 200 def test_workspace_post_success(tmp_path): diff --git a/tests/ide_backend/test_ide_server_additional.py b/tests/ide_backend/test_ide_server_additional.py index eaa16af6..61281c7a 100644 --- a/tests/ide_backend/test_ide_server_additional.py +++ b/tests/ide_backend/test_ide_server_additional.py @@ -7,13 +7,7 @@ def test_workspace_post_success_sets_root(tmp_path, monkeypatch): workspace = tmp_path / "workspace" workspace.mkdir() - recorded = {} - - def fake_chdir(path): - recorded["cwd"] = path - monkeypatch.setattr(ide_server, "WORKSPACE_ROOT", None) - monkeypatch.setattr(ide_server.os, "chdir", fake_chdir) app = ide_server.create_app() client = app.test_client() @@ -23,7 +17,6 @@ def fake_chdir(path): assert payload["success"] is True assert payload["root"] == str(workspace) - assert recorded["cwd"] == str(workspace) def test_tree_requires_workspace(tmp_path, monkeypatch): diff --git a/tests/ide_backend/test_ide_server_error_branches.py b/tests/ide_backend/test_ide_server_error_branches.py index 7fda8310..ea4d5777 100644 --- a/tests/ide_backend/test_ide_server_error_branches.py +++ b/tests/ide_backend/test_ide_server_error_branches.py @@ -198,14 +198,11 @@ def test_workspace_post_handles_exception(tmp_path, monkeypatch): workspace = tmp_path / "workspace" workspace.mkdir() - monkeypatch.setattr( - ide_server.os, "chdir", lambda _path: (_ for _ in ()).throw(RuntimeError("boom")) - ) app = ide_server.create_app() client = app.test_client() response = client.post("/api/workspace", json={"root": str(workspace)}) - assert response.status_code == 500 + assert response.status_code == 200 def test_run_procedure_without_workspace_returns_error(monkeypatch): From ceec631c6377490968b0b515aa9f8ab5c3d7d45c Mon Sep 17 00:00:00 2001 From: dereknorrbom Date: Fri, 24 Apr 2026 09:16:45 -0700 Subject: [PATCH 02/11] chore(deps): isolate fastmcp env and unblock litellm upgrade --- .github/workflows/release.yml | 8 + Makefile | 12 +- poetry.lock | 957 +------- ..._27457ad9-9646-4c53-9778-4cf1ddd1f36f.json | 18 + ..._f747feef-d726-40f8-810e-d58085124b2d.json | 12 + ..._f7652ebd-7806-4c0a-8598-04157ff12bef.json | 12 + ..._c3ca2e15-9c08-4185-8d02-e215e18b565c.json | 12 + ..._f0d8d027-dd5b-4d26-a2e6-a022a5bb00a7.json | 12 + ..._ebf8f895-bcf5-4070-828b-444dd2a9d819.json | 12 + ..._13e03c66-4ba3-4c73-8f50-8ebe4be00668.json | 12 + ..._5b8c8cd3-ce5b-432a-9da1-3aa1b5402a97.json | 12 + ...-9f90547a-e362-4f52-b005-8590ca111cb3.json | 31 + ...-b82842f2-1508-4d45-98ef-1017d09e100a.json | 8 +- pyproject.toml | 3 +- tools/mcp-fixtures/README.md | 17 + tools/mcp-fixtures/poetry.lock | 2052 +++++++++++++++++ tools/mcp-fixtures/pyproject.toml | 13 + 17 files changed, 2294 insertions(+), 909 deletions(-) create mode 100644 project/events/2026-04-24T16:14:16.002Z__27457ad9-9646-4c53-9778-4cf1ddd1f36f.json create mode 100644 project/events/2026-04-24T16:14:24.363Z__f747feef-d726-40f8-810e-d58085124b2d.json create mode 100644 project/events/2026-04-24T16:14:24.377Z__f7652ebd-7806-4c0a-8598-04157ff12bef.json create mode 100644 project/events/2026-04-24T16:14:24.403Z__c3ca2e15-9c08-4185-8d02-e215e18b565c.json create mode 100644 project/events/2026-04-24T16:16:25.765Z__f0d8d027-dd5b-4d26-a2e6-a022a5bb00a7.json create mode 100644 project/events/2026-04-24T16:16:25.776Z__ebf8f895-bcf5-4070-828b-444dd2a9d819.json create mode 100644 project/events/2026-04-24T16:16:25.788Z__13e03c66-4ba3-4c73-8f50-8ebe4be00668.json create mode 100644 project/events/2026-04-24T16:16:25.798Z__5b8c8cd3-ce5b-432a-9da1-3aa1b5402a97.json create mode 100644 project/issues/tcts-9f90547a-e362-4f52-b005-8590ca111cb3.json create mode 100644 tools/mcp-fixtures/README.md create mode 100644 tools/mcp-fixtures/poetry.lock create mode 100644 tools/mcp-fixtures/pyproject.toml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6a74e341..4ffaade4 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -42,6 +42,14 @@ jobs: python -m pip install poetry python -m poetry install --extras "dev ml" + - name: Validate isolated MCP fixture environment + if: matrix.python-version == '3.12' + run: | + cd tools/mcp-fixtures + python -m poetry lock --no-update + python -m poetry install + python -m poetry run python -c "import fastmcp; print(fastmcp.__version__)" + - name: Run ruff linting run: python -m poetry run ruff check tactus/ tests/ features/steps/ diff --git a/Makefile b/Makefile index ca1026fe..b54442c4 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ .PHONY: help generate-parsers generate-python-parser generate-typescript-parser test-parsers clean-generated dev-ide test-examples test-examples-fast test-examples-parallel test-examples-bdd -.PHONY: test-docker-sandbox +.PHONY: test-docker-sandbox mcp-fixtures-install mcp-fixtures-smoke help: @echo "Tactus Parser Generation and Testing" @@ -21,6 +21,10 @@ help: @echo "Docker Sandbox Testing:" @echo " test-docker-sandbox - Run opt-in Docker sandbox smoke tests" @echo "" + @echo "MCP Fixtures:" + @echo " mcp-fixtures-install - Install isolated MCP fixture dependencies" + @echo " mcp-fixtures-smoke - Verify isolated MCP fixture environment" + @echo "" @echo "Requirements:" @echo " - Docker must be running (for parser generation)" @echo " - Python 3.10+ with dependencies installed" @@ -130,4 +134,10 @@ test-docker-sandbox: @echo "Pre-req: tactus sandbox rebuild --force" TACTUS_RUN_DOCKER_TESTS=1 python3 -m poetry run pytest -m docker -v --tb=short +# Isolated MCP fixture dependency environment (separate from root lock) +mcp-fixtures-install: + cd tools/mcp-fixtures && python3 -m poetry install + +mcp-fixtures-smoke: mcp-fixtures-install + cd tools/mcp-fixtures && python3 -m poetry run python -c "import fastmcp; print(fastmcp.__version__)" diff --git a/poetry.lock b/poetry.lock index 051a9d9b..a6a21b9b 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,21 +1,5 @@ # This file is automatically @generated by Poetry 2.3.2 and should not be changed by hand. -[[package]] -name = "aiofile" -version = "3.9.0" -description = "Asynchronous file operations." -optional = true -python-versions = "<4,>=3.8" -groups = ["main"] -markers = "extra == \"dev\"" -files = [ - {file = "aiofile-3.9.0-py3-none-any.whl", hash = "sha256:ce2f6c1571538cbdfa0143b04e16b208ecb0e9cb4148e528af8a640ed51cc8aa"}, - {file = "aiofile-3.9.0.tar.gz", hash = "sha256:e5ad718bb148b265b6df1b3752c4d1d83024b93da9bd599df74b9d9ffcf7919b"}, -] - -[package.dependencies] -caio = ">=0.9.0,<0.10.0" - [[package]] name = "aiohappyeyeballs" version = "2.6.1" @@ -413,22 +397,6 @@ files = [ {file = "audioop_lts-0.2.2.tar.gz", hash = "sha256:64d0c62d88e67b98a1a5e71987b7aa7b5bcffc7dcee65b635823dbdd0a8dbbd0"}, ] -[[package]] -name = "authlib" -version = "1.6.9" -description = "The ultimate Python library in building OAuth and OpenID Connect servers and clients." -optional = true -python-versions = ">=3.9" -groups = ["main"] -markers = "extra == \"dev\"" -files = [ - {file = "authlib-1.6.9-py2.py3-none-any.whl", hash = "sha256:f08b4c14e08f0861dc18a32357b33fbcfd2ea86cfe3fe149484b4d764c4a0ac3"}, - {file = "authlib-1.6.9.tar.gz", hash = "sha256:d8f2421e7e5980cc1ddb4e32d3f5fa659cfaf60d8eaf3281ebed192e4ab74f04"}, -] - -[package.dependencies] -cryptography = "*" - [[package]] name = "babel" version = "2.18.0" @@ -458,44 +426,6 @@ files = [ {file = "backports_asyncio_runner-1.2.0.tar.gz", hash = "sha256:a5aa7b2b7d8f8bfcaa2b57313f70792df84e32a2a746f585213373f900b42162"}, ] -[[package]] -name = "backports-tarfile" -version = "1.2.0" -description = "Backport of CPython tarfile module" -optional = true -python-versions = ">=3.8" -groups = ["main"] -markers = "python_version < \"3.12\" and extra == \"dev\"" -files = [ - {file = "backports.tarfile-1.2.0-py3-none-any.whl", hash = "sha256:77e284d754527b01fb1e6fa8a1afe577858ebe4e9dad8919e34c862cb399bc34"}, - {file = "backports_tarfile-1.2.0.tar.gz", hash = "sha256:d75e02c268746e1b8144c278978b6e98e85de6ad16f8e4b0844a154557eca991"}, -] - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["jaraco.test", "pytest (!=8.0.*)", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)"] - -[[package]] -name = "beartype" -version = "0.22.9" -description = "Unbearably fast near-real-time pure-Python runtime-static type-checker." -optional = true -python-versions = ">=3.10" -groups = ["main"] -markers = "extra == \"dev\"" -files = [ - {file = "beartype-0.22.9-py3-none-any.whl", hash = "sha256:d16c9bbc61ea14637596c5f6fbff2ee99cbe3573e46a716401734ef50c3060c2"}, - {file = "beartype-0.22.9.tar.gz", hash = "sha256:8f82b54aa723a2848a56008d18875f91c1db02c32ef6a62319a002e3e25a975f"}, -] - -[package.extras] -dev = ["autoapi (>=0.9.0)", "celery", "click", "coverage (>=5.5)", "docutils (>=0.22.0)", "equinox ; sys_platform == \"linux\" and python_version < \"3.15.0\"", "fastmcp ; python_version < \"3.14.0\"", "jax[cpu] ; sys_platform == \"linux\" and python_version < \"3.15.0\"", "jaxtyping ; sys_platform == \"linux\"", "langchain ; python_version < \"3.14.0\" and sys_platform != \"darwin\" and platform_python_implementation != \"PyPy\"", "mypy (>=0.800) ; platform_python_implementation != \"PyPy\"", "nuitka (>=1.2.6) ; sys_platform == \"linux\" and python_version < \"3.14.0\"", "numba ; python_version < \"3.14.0\"", "numpy ; python_version < \"3.15.0\" and sys_platform != \"darwin\" and platform_python_implementation != \"PyPy\"", "pandera (>=0.26.0) ; python_version < \"3.14.0\"", "poetry", "polars ; python_version < \"3.14.0\"", "pydata-sphinx-theme (<=0.7.2)", "pygments", "pyinstaller", "pyright (>=1.1.370)", "pytest (>=6.2.0)", "redis", "rich-click", "setuptools", "sphinx", "sphinx (>=4.2.0,<6.0.0)", "sphinxext-opengraph (>=0.7.5)", "sqlalchemy", "torch ; sys_platform == \"linux\" and python_version < \"3.14.0\"", "tox (>=3.20.1)", "typer", "typing-extensions (>=3.10.0.0)", "xarray ; python_version < \"3.15.0\""] -doc-ghp = ["mkdocs-material[imaging] (>=9.6.0)", "mkdocstrings-python (>=1.16.0)", "mkdocstrings-python-xref (>=1.16.0)"] -doc-rtd = ["autoapi (>=0.9.0)", "pydata-sphinx-theme (<=0.7.2)", "setuptools", "sphinx (>=4.2.0,<6.0.0)", "sphinxext-opengraph (>=0.7.5)"] -test = ["celery", "click", "coverage (>=5.5)", "docutils (>=0.22.0)", "equinox ; sys_platform == \"linux\" and python_version < \"3.15.0\"", "fastmcp ; python_version < \"3.14.0\"", "jax[cpu] ; sys_platform == \"linux\" and python_version < \"3.15.0\"", "jaxtyping ; sys_platform == \"linux\"", "langchain ; python_version < \"3.14.0\" and sys_platform != \"darwin\" and platform_python_implementation != \"PyPy\"", "mypy (>=0.800) ; platform_python_implementation != \"PyPy\"", "nuitka (>=1.2.6) ; sys_platform == \"linux\" and python_version < \"3.14.0\"", "numba ; python_version < \"3.14.0\"", "numpy ; python_version < \"3.15.0\" and sys_platform != \"darwin\" and platform_python_implementation != \"PyPy\"", "pandera (>=0.26.0) ; python_version < \"3.14.0\"", "poetry", "polars ; python_version < \"3.14.0\"", "pygments", "pyinstaller", "pyright (>=1.1.370)", "pytest (>=6.2.0)", "redis", "rich-click", "sphinx", "sqlalchemy", "torch ; sys_platform == \"linux\" and python_version < \"3.14.0\"", "tox (>=3.20.1)", "typer", "typing-extensions (>=3.10.0.0)", "xarray ; python_version < \"3.15.0\""] -test-tox = ["celery", "click", "docutils (>=0.22.0)", "equinox ; sys_platform == \"linux\" and python_version < \"3.15.0\"", "fastmcp ; python_version < \"3.14.0\"", "jax[cpu] ; sys_platform == \"linux\" and python_version < \"3.15.0\"", "jaxtyping ; sys_platform == \"linux\"", "langchain ; python_version < \"3.14.0\" and sys_platform != \"darwin\" and platform_python_implementation != \"PyPy\"", "mypy (>=0.800) ; platform_python_implementation != \"PyPy\"", "nuitka (>=1.2.6) ; sys_platform == \"linux\" and python_version < \"3.14.0\"", "numba ; python_version < \"3.14.0\"", "numpy ; python_version < \"3.15.0\" and sys_platform != \"darwin\" and platform_python_implementation != \"PyPy\"", "pandera (>=0.26.0) ; python_version < \"3.14.0\"", "poetry", "polars ; python_version < \"3.14.0\"", "pygments", "pyinstaller", "pyright (>=1.1.370)", "pytest (>=6.2.0)", "redis", "rich-click", "sphinx", "sqlalchemy", "torch ; sys_platform == \"linux\" and python_version < \"3.14.0\"", "typer", "typing-extensions (>=3.10.0.0)", "xarray ; python_version < \"3.15.0\""] -test-tox-coverage = ["coverage (>=5.5)"] - [[package]] name = "behave" version = "1.3.3" @@ -675,48 +605,12 @@ description = "Extensible memoizing collections and decorators" optional = false python-versions = ">=3.10" groups = ["main"] -markers = "extra == \"dev\" or python_version < \"3.15\"" +markers = "python_version < \"3.15\" or extra == \"dev\"" files = [ {file = "cachetools-7.0.5-py3-none-any.whl", hash = "sha256:46bc8ebefbe485407621d0a4264b23c080cedd913921bad7ac3ed2f26c183114"}, {file = "cachetools-7.0.5.tar.gz", hash = "sha256:0cd042c24377200c1dcd225f8b7b12b0ca53cc2c961b43757e774ebe190fd990"}, ] -[[package]] -name = "caio" -version = "0.9.25" -description = "Asynchronous file IO for Linux MacOS or Windows." -optional = true -python-versions = ">=3.10" -groups = ["main"] -markers = "extra == \"dev\"" -files = [ - {file = "caio-0.9.25-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ca6c8ecda611478b6016cb94d23fd3eb7124852b985bdec7ecaad9f3116b9619"}, - {file = "caio-0.9.25-cp310-cp310-manylinux2010_x86_64.manylinux2014_x86_64.manylinux_2_12_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:db9b5681e4af8176159f0d6598e73b2279bb661e718c7ac23342c550bd78c241"}, - {file = "caio-0.9.25-cp310-cp310-manylinux_2_34_aarch64.whl", hash = "sha256:bf61d7d0c4fd10ffdd98ca47f7e8db4d7408e74649ffaf4bef40b029ada3c21b"}, - {file = "caio-0.9.25-cp310-cp310-manylinux_2_34_x86_64.whl", hash = "sha256:ab52e5b643f8bbd64a0605d9412796cd3464cb8ca88593b13e95a0f0b10508ae"}, - {file = "caio-0.9.25-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d6956d9e4a27021c8bd6c9677f3a59eb1d820cc32d0343cea7961a03b1371965"}, - {file = "caio-0.9.25-cp311-cp311-manylinux2010_x86_64.manylinux2014_x86_64.manylinux_2_12_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:bf84bfa039f25ad91f4f52944452a5f6f405e8afab4d445450978cd6241d1478"}, - {file = "caio-0.9.25-cp311-cp311-manylinux_2_34_aarch64.whl", hash = "sha256:ae3d62587332bce600f861a8de6256b1014d6485cfd25d68c15caf1611dd1f7c"}, - {file = "caio-0.9.25-cp311-cp311-manylinux_2_34_x86_64.whl", hash = "sha256:fc220b8533dcf0f238a6b1a4a937f92024c71e7b10b5a2dfc1c73604a25709bc"}, - {file = "caio-0.9.25-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:fb7ff95af4c31ad3f03179149aab61097a71fd85e05f89b4786de0359dffd044"}, - {file = "caio-0.9.25-cp312-cp312-manylinux2010_x86_64.manylinux2014_x86_64.manylinux_2_12_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:97084e4e30dfa598449d874c4d8e0c8d5ea17d2f752ef5e48e150ff9d240cd64"}, - {file = "caio-0.9.25-cp312-cp312-manylinux_2_34_aarch64.whl", hash = "sha256:4fa69eba47e0f041b9d4f336e2ad40740681c43e686b18b191b6c5f4c5544bfb"}, - {file = "caio-0.9.25-cp312-cp312-manylinux_2_34_x86_64.whl", hash = "sha256:6bebf6f079f1341d19f7386db9b8b1f07e8cc15ae13bfdaff573371ba0575d69"}, - {file = "caio-0.9.25-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:d6c2a3411af97762a2b03840c3cec2f7f728921ff8adda53d7ea2315a8563451"}, - {file = "caio-0.9.25-cp313-cp313-manylinux2010_x86_64.manylinux2014_x86_64.manylinux_2_12_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0998210a4d5cd5cb565b32ccfe4e53d67303f868a76f212e002a8554692870e6"}, - {file = "caio-0.9.25-cp313-cp313-manylinux_2_34_aarch64.whl", hash = "sha256:1a177d4777141b96f175fe2c37a3d96dec7911ed9ad5f02bac38aaa1c936611f"}, - {file = "caio-0.9.25-cp313-cp313-manylinux_2_34_x86_64.whl", hash = "sha256:9ed3cfb28c0e99fec5e208c934e5c157d0866aa9c32aa4dc5e9b6034af6286b7"}, - {file = "caio-0.9.25-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:fab6078b9348e883c80a5e14b382e6ad6aabbc4429ca034e76e730cf464269db"}, - {file = "caio-0.9.25-cp314-cp314-manylinux2010_x86_64.manylinux2014_x86_64.manylinux_2_12_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:44a6b58e52d488c75cfaa5ecaa404b2b41cc965e6c417e03251e868ecd5b6d77"}, - {file = "caio-0.9.25-cp314-cp314-manylinux_2_34_aarch64.whl", hash = "sha256:628a630eb7fb22381dd8e3c8ab7f59e854b9c806639811fc3f4310c6bd711d79"}, - {file = "caio-0.9.25-cp314-cp314-manylinux_2_34_x86_64.whl", hash = "sha256:0ba16aa605ccb174665357fc729cf500679c2d94d5f1458a6f0d5ca48f2060a7"}, - {file = "caio-0.9.25-py3-none-any.whl", hash = "sha256:06c0bb02d6b929119b1cfbe1ca403c768b2013a369e2db46bfa2a5761cf82e40"}, - {file = "caio-0.9.25.tar.gz", hash = "sha256:16498e7f81d1d0f5a4c0ad3f2540e65fe25691376e0a5bd367f558067113ed10"}, -] - -[package.extras] -develop = ["aiomisc-pytest", "coveralls", "pylama[toml]", "pytest", "pytest-cov", "setuptools"] - [[package]] name = "certifi" version = "2026.2.25" @@ -1491,36 +1385,6 @@ files = [ docs = ["ipython", "matplotlib", "numpydoc", "sphinx"] tests = ["pytest", "pytest-cov", "pytest-xdist"] -[[package]] -name = "cyclopts" -version = "4.9.0" -description = "Intuitive, easy CLIs based on type hints." -optional = true -python-versions = ">=3.10" -groups = ["main"] -markers = "extra == \"dev\"" -files = [ - {file = "cyclopts-4.9.0-py3-none-any.whl", hash = "sha256:583ea4090a040c92f9303bc0da26bca7b681c81bcea34097ace279e1acef22c1"}, - {file = "cyclopts-4.9.0.tar.gz", hash = "sha256:f292868e4be33a3e622d8cf95d89f49222e987b1ccdbf40caf6514e19dd99a63"}, -] - -[package.dependencies] -attrs = ">=23.1.0" -docstring-parser = ">=0.15,<4.0" -rich = ">=13.6.0" -rich-rst = ">=1.3.1,<2.0.0" -tomli = {version = ">=2.0.0", markers = "python_version < \"3.11\""} -typing-extensions = {version = ">=4.8.0", markers = "python_version < \"3.11\""} - -[package.extras] -debug = ["ipdb (>=0.13.9)", "line-profiler (>=3.5.1)"] -dev = ["coverage[toml] (>=5.1)", "mkdocs (>=1.4.0)", "pre-commit (>=2.16.0)", "pydantic (>=2.11.2,<3.0.0)", "pytest (>=8.2.0)", "pytest-cov (>=3.0.0)", "pytest-mock (>=3.7.0)", "pyyaml (>=6.0.1)", "syrupy (>=4.0.0)", "toml (>=0.10.2,<1.0.0)", "trio (>=0.10.0)"] -docs = ["gitpython (>=3.1.31)", "myst-parser[linkify] (>=3.0.1,<5.0.0)", "sphinx (>=7.4.7,<8.2.0)", "sphinx-autodoc-typehints (>=1.25.2,<4.0.0)", "sphinx-copybutton (>=0.5,<1.0)", "sphinx-rtd-dark-mode (>=1.3.0,<2.0.0)", "sphinx-rtd-theme (>=3.0.0,<4.0.0)"] -mkdocs = ["markdown (>=3.3)", "mkdocs (>=1.4.0)", "pymdown-extensions (>=10.0)"] -toml = ["tomli (>=2.0.0) ; python_version < \"3.11\""] -trio = ["trio (>=0.10.0)"] -yaml = ["pyyaml (>=6.0.1)"] - [[package]] name = "databricks-sdk" version = "0.99.0" @@ -1674,28 +1538,6 @@ files = [ {file = "distro-1.9.0.tar.gz", hash = "sha256:2fa77c6fd8940f116ee1d6b94a2f90b13b5ea8d019b98bc8bafdcabcdd9bdbed"}, ] -[[package]] -name = "dnspython" -version = "2.8.0" -description = "DNS toolkit" -optional = true -python-versions = ">=3.10" -groups = ["main"] -markers = "extra == \"dev\"" -files = [ - {file = "dnspython-2.8.0-py3-none-any.whl", hash = "sha256:01d9bbc4a2d76bf0db7c1f729812ded6d912bd318d3b1cf81d30c0f845dbf3af"}, - {file = "dnspython-2.8.0.tar.gz", hash = "sha256:181d3c6996452cb1189c4046c61599b84a5a86e099562ffde77d26984ff26d0f"}, -] - -[package.extras] -dev = ["black (>=25.1.0)", "coverage (>=7.0)", "flake8 (>=7)", "hypercorn (>=0.17.0)", "mypy (>=1.17)", "pylint (>=3)", "pytest (>=8.4)", "pytest-cov (>=6.2.0)", "quart-trio (>=0.12.0)", "sphinx (>=8.2.0)", "sphinx-rtd-theme (>=3.0.0)", "twine (>=6.1.0)", "wheel (>=0.45.0)"] -dnssec = ["cryptography (>=45)"] -doh = ["h2 (>=4.2.0)", "httpcore (>=1.0.0)", "httpx (>=0.28.0)"] -doq = ["aioquic (>=1.2.0)"] -idna = ["idna (>=3.10)"] -trio = ["trio (>=0.30)"] -wmi = ["wmi (>=1.5.1) ; platform_system == \"Windows\""] - [[package]] name = "docker" version = "7.1.0" @@ -1720,24 +1562,6 @@ docs = ["myst-parser (==0.18.0)", "sphinx (==5.1.1)"] ssh = ["paramiko (>=2.4.3)"] websockets = ["websocket-client (>=1.3.0)"] -[[package]] -name = "docstring-parser" -version = "0.17.0" -description = "Parse Python docstrings in reST, Google and Numpydoc format" -optional = true -python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"dev\"" -files = [ - {file = "docstring_parser-0.17.0-py3-none-any.whl", hash = "sha256:cf2569abd23dce8099b300f9b4fa8191e9582dda731fd533daf54c4551658708"}, - {file = "docstring_parser-0.17.0.tar.gz", hash = "sha256:583de4a309722b3315439bb31d64ba3eebada841f2e2cee23b99df001434c912"}, -] - -[package.extras] -dev = ["pre-commit (>=2.16.0) ; python_version >= \"3.9\"", "pydoctor (>=25.4.0)", "pytest"] -docs = ["pydoctor (>=25.4.0)"] -test = ["pytest"] - [[package]] name = "docutils" version = "0.22.4" @@ -1745,7 +1569,7 @@ description = "Docutils -- Python Documentation Utilities" optional = true python-versions = ">=3.9" groups = ["main"] -markers = "extra == \"dev\"" +markers = "python_version >= \"3.11\" and extra == \"dev\"" files = [ {file = "docutils-0.22.4-py3-none-any.whl", hash = "sha256:d0013f540772d1420576855455d050a2180186c91c15779301ac2ccb3eeb68de"}, {file = "docutils-0.22.4.tar.gz", hash = "sha256:4db53b1fde9abecbb74d91230d32ab626d94f6badfc575d6db9194a49df29968"}, @@ -1824,23 +1648,6 @@ mcp = ["mcp ; python_version >= \"3.10\""] test-extras = ["datasets (>=2.14.6)", "langchain_core", "mcp ; python_version >= \"3.10\"", "optuna (>=3.4.0)", "pandas (>=2.1.1)"] weaviate = ["weaviate-client (>=4.5.4,<4.6.0)"] -[[package]] -name = "email-validator" -version = "2.3.0" -description = "A robust email address syntax and deliverability validation library." -optional = true -python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"dev\"" -files = [ - {file = "email_validator-2.3.0-py3-none-any.whl", hash = "sha256:80f13f623413e6b197ae73bb10bf4eb0908faf509ad8362c5edeb0be7fd450b4"}, - {file = "email_validator-2.3.0.tar.gz", hash = "sha256:9fc05c37f2f6cf439ff414f8fc46d917929974a82244c20eb10231ba60c54426"}, -] - -[package.dependencies] -dnspython = ">=2.0.0" -idna = ">=2.0.0" - [[package]] name = "et-xmlfile" version = "2.0.0" @@ -1860,7 +1667,7 @@ description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" groups = ["main"] -markers = "extra == \"dev\" or python_version == \"3.10\"" +markers = "python_version == \"3.10\"" files = [ {file = "exceptiongroup-1.3.1-py3-none-any.whl", hash = "sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577f82c773598"}, {file = "exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219"}, @@ -1928,51 +1735,6 @@ all = ["email-validator (>=2.0.0)", "fastapi-cli[standard] (>=0.0.8)", "httpx (> standard = ["email-validator (>=2.0.0)", "fastapi-cli[standard] (>=0.0.8)", "httpx (>=0.23.0,<1.0.0)", "jinja2 (>=3.1.5)", "pydantic-extra-types (>=2.0.0)", "pydantic-settings (>=2.0.0)", "python-multipart (>=0.0.18)", "uvicorn[standard] (>=0.12.0)"] standard-no-fastapi-cloud-cli = ["email-validator (>=2.0.0)", "fastapi-cli[standard-no-fastapi-cloud-cli] (>=0.0.8)", "httpx (>=0.23.0,<1.0.0)", "jinja2 (>=3.1.5)", "pydantic-extra-types (>=2.0.0)", "pydantic-settings (>=2.0.0)", "python-multipart (>=0.0.18)", "uvicorn[standard] (>=0.12.0)"] -[[package]] -name = "fastmcp" -version = "3.1.0" -description = "The fast, Pythonic way to build MCP servers and clients." -optional = true -python-versions = ">=3.10" -groups = ["main"] -markers = "extra == \"dev\"" -files = [ - {file = "fastmcp-3.1.0-py3-none-any.whl", hash = "sha256:b1f73b56fd3b0cb2bd9e2a144fc650d5cc31587ed129d996db7710e464ae8010"}, - {file = "fastmcp-3.1.0.tar.gz", hash = "sha256:e25264794c734b9977502a51466961eeecff92a0c2f3b49c40c070993628d6d0"}, -] - -[package.dependencies] -authlib = ">=1.6.5" -cyclopts = ">=4.0.0" -exceptiongroup = ">=1.2.2" -httpx = ">=0.28.1,<1.0" -jsonref = ">=1.1.0" -jsonschema-path = ">=0.3.4" -mcp = ">=1.24.0,<2.0" -openapi-pydantic = ">=0.5.1" -opentelemetry-api = ">=1.20.0" -packaging = ">=24.0" -platformdirs = ">=4.0.0" -py-key-value-aio = {version = ">=0.4.4,<0.5.0", extras = ["filetree", "keyring", "memory"]} -pydantic = {version = ">=2.11.7", extras = ["email"]} -pyperclip = ">=1.9.0" -python-dotenv = ">=1.1.0" -pyyaml = ">=6.0,<7.0" -rich = ">=13.9.4" -uncalled-for = ">=0.2.0" -uvicorn = ">=0.35" -watchfiles = ">=1.0.0" -websockets = ">=15.0.1" - -[package.extras] -anthropic = ["anthropic (>=0.40.0)"] -apps = ["prefab-ui (>=0.6.0)"] -azure = ["azure-identity (>=1.16.0)"] -code-mode = ["pydantic-monty (>=0.0.7)"] -gemini = ["google-genai (>=1.18.0)"] -openai = ["openai (>=1.102.0)"] -tasks = ["pydocket (>=0.18.0)"] - [[package]] name = "fastuuid" version = "0.14.0" @@ -2824,19 +2586,6 @@ http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] zstd = ["zstandard (>=0.18.0)"] -[[package]] -name = "httpx-sse" -version = "0.4.3" -description = "Consume Server-Sent Event (SSE) messages with HTTPX." -optional = true -python-versions = ">=3.9" -groups = ["main"] -markers = "extra == \"dev\"" -files = [ - {file = "httpx_sse-0.4.3-py3-none-any.whl", hash = "sha256:0ac1c9fe3c0afad2e0ebb25a934a59f4c7823b60792691f779fad2c5568830fc"}, - {file = "httpx_sse-0.4.3.tar.gz", hash = "sha256:9b1ed0127459a66014aec3c56bebd93da3c1bc8bb6618c8082039a44889a755d"}, -] - [[package]] name = "huey" version = "2.6.0" @@ -2935,14 +2684,14 @@ files = [ [[package]] name = "importlib-metadata" -version = "8.7.1" +version = "8.5.0" description = "Read metadata from Python packages" optional = false -python-versions = ">=3.9" +python-versions = ">=3.8" groups = ["main"] files = [ - {file = "importlib_metadata-8.7.1-py3-none-any.whl", hash = "sha256:5a1f80bf1daa489495071efbb095d75a634cf28a8bc299581244063b53176151"}, - {file = "importlib_metadata-8.7.1.tar.gz", hash = "sha256:49fef1ae6440c182052f407c8d34a68f72efc36db9ca90dc0113398f2fdde8bb"}, + {file = "importlib_metadata-8.5.0-py3-none-any.whl", hash = "sha256:45e54197d28b7a7f1559e60b95e7c567032b602131fbd588f1497f47880aa68b"}, + {file = "importlib_metadata-8.5.0.tar.gz", hash = "sha256:71522656f0abace1d072b9e5481a48f07c138e00f079c38c8f883823f9c26bd7"}, ] [package.dependencies] @@ -2952,10 +2701,10 @@ zipp = ">=3.20" check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -enabler = ["pytest-enabler (>=3.4)"] +enabler = ["pytest-enabler (>=2.2)"] perf = ["ipython"] -test = ["flufl.flake8", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-perf (>=0.9.2)"] -type = ["mypy (<1.19) ; platform_python_implementation == \"PyPy\"", "pytest-mypy (>=1.0.1)"] +test = ["flufl.flake8", "importlib-resources (>=1.3) ; python_version < \"3.9\"", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-perf (>=0.9.2)"] +type = ["pytest-mypy"] [[package]] name = "importlib-resources" @@ -3016,91 +2765,6 @@ files = [ {file = "itsdangerous-2.2.0.tar.gz", hash = "sha256:e0050c0b7da1eea53ffaf149c0cfbb5c6e2e2b69c4bef22c81fa6eb73e5f6173"}, ] -[[package]] -name = "jaraco-classes" -version = "3.4.0" -description = "Utility functions for Python class constructs" -optional = true -python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"dev\"" -files = [ - {file = "jaraco.classes-3.4.0-py3-none-any.whl", hash = "sha256:f662826b6bed8cace05e7ff873ce0f9283b5c924470fe664fff1c2f00f581790"}, - {file = "jaraco.classes-3.4.0.tar.gz", hash = "sha256:47a024b51d0239c0dd8c8540c6c7f484be3b8fcf0b2d85c13825780d3b3f3acd"}, -] - -[package.dependencies] -more-itertools = "*" - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-ruff (>=0.2.1)"] - -[[package]] -name = "jaraco-context" -version = "6.1.1" -description = "Useful decorators and context managers" -optional = true -python-versions = ">=3.9" -groups = ["main"] -markers = "extra == \"dev\"" -files = [ - {file = "jaraco_context-6.1.1-py3-none-any.whl", hash = "sha256:0df6a0287258f3e364072c3e40d5411b20cafa30cb28c4839d24319cecf9f808"}, - {file = "jaraco_context-6.1.1.tar.gz", hash = "sha256:bc046b2dc94f1e5532bd02402684414575cc11f565d929b6563125deb0a6e581"}, -] - -[package.dependencies] -"backports.tarfile" = {version = "*", markers = "python_version < \"3.12\""} - -[package.extras] -check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] -cover = ["pytest-cov"] -doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -enabler = ["pytest-enabler (>=3.4)"] -test = ["jaraco.test (>=5.6.0)", "portend", "pytest (>=6,!=8.1.*)"] -type = ["mypy (<1.19) ; platform_python_implementation == \"PyPy\"", "pytest-mypy (>=1.0.1)"] - -[[package]] -name = "jaraco-functools" -version = "4.4.0" -description = "Functools like those found in stdlib" -optional = true -python-versions = ">=3.9" -groups = ["main"] -markers = "extra == \"dev\"" -files = [ - {file = "jaraco_functools-4.4.0-py3-none-any.whl", hash = "sha256:9eec1e36f45c818d9bf307c8948eb03b2b56cd44087b3cdc989abca1f20b9176"}, - {file = "jaraco_functools-4.4.0.tar.gz", hash = "sha256:da21933b0417b89515562656547a77b4931f98176eb173644c0d35032a33d6bb"}, -] - -[package.dependencies] -more_itertools = "*" - -[package.extras] -check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] -cover = ["pytest-cov"] -doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -enabler = ["pytest-enabler (>=3.4)"] -test = ["jaraco.classes", "pytest (>=6,!=8.1.*)"] -type = ["mypy (<1.19) ; platform_python_implementation == \"PyPy\"", "pytest-mypy (>=1.0.1)"] - -[[package]] -name = "jeepney" -version = "0.9.0" -description = "Low-level, pure Python DBus protocol wrapper." -optional = true -python-versions = ">=3.7" -groups = ["main"] -markers = "extra == \"dev\" and sys_platform == \"linux\"" -files = [ - {file = "jeepney-0.9.0-py3-none-any.whl", hash = "sha256:97e5714520c16fc0a45695e5365a2e11b81ea79bba796e26f9f1d178cb182683"}, - {file = "jeepney-0.9.0.tar.gz", hash = "sha256:cf0e9e845622b81e4a28df94c40345400256ec608d0e55bb8a3feaa9163f5732"}, -] - -[package.extras] -test = ["async-timeout ; python_version < \"3.11\"", "pytest", "pytest-asyncio (>=0.17)", "pytest-trio", "testpath", "trio"] -trio = ["trio"] - [[package]] name = "jinja2" version = "3.1.6" @@ -3272,61 +2936,27 @@ files = [ [package.extras] schema = ["jsonschema (>=4.21)", "pydantic (>=2)"] -[[package]] -name = "jsonref" -version = "1.1.0" -description = "jsonref is a library for automatic dereferencing of JSON Reference objects for Python." -optional = true -python-versions = ">=3.7" -groups = ["main"] -markers = "extra == \"dev\"" -files = [ - {file = "jsonref-1.1.0-py3-none-any.whl", hash = "sha256:590dc7773df6c21cbf948b5dac07a72a251db28b0238ceecce0a2abfa8ec30a9"}, - {file = "jsonref-1.1.0.tar.gz", hash = "sha256:32fe8e1d85af0fdefbebce950af85590b22b60f9e95443176adbde4e1ecea552"}, -] - [[package]] name = "jsonschema" -version = "4.26.0" +version = "4.23.0" description = "An implementation of JSON Schema validation for Python" optional = false -python-versions = ">=3.10" +python-versions = ">=3.8" groups = ["main"] files = [ - {file = "jsonschema-4.26.0-py3-none-any.whl", hash = "sha256:d489f15263b8d200f8387e64b4c3a75f06629559fb73deb8fdfb525f2dab50ce"}, - {file = "jsonschema-4.26.0.tar.gz", hash = "sha256:0c26707e2efad8aa1bfc5b7ce170f3fccc2e4918ff85989ba9ffa9facb2be326"}, + {file = "jsonschema-4.23.0-py3-none-any.whl", hash = "sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566"}, + {file = "jsonschema-4.23.0.tar.gz", hash = "sha256:d71497fef26351a33265337fa77ffeb82423f3ea21283cd9467bb03999266bc4"}, ] [package.dependencies] attrs = ">=22.2.0" jsonschema-specifications = ">=2023.3.6" referencing = ">=0.28.4" -rpds-py = ">=0.25.0" +rpds-py = ">=0.7.1" [package.extras] format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"] -format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "rfc3987-syntax (>=1.1.0)", "uri-template", "webcolors (>=24.6.0)"] - -[[package]] -name = "jsonschema-path" -version = "0.4.5" -description = "JSONSchema Spec with object-oriented paths" -optional = true -python-versions = "<4.0.0,>=3.10" -groups = ["main"] -markers = "extra == \"dev\"" -files = [ - {file = "jsonschema_path-0.4.5-py3-none-any.whl", hash = "sha256:7d77a2c3f3ec569a40efe5c5f942c44c1af2a6f96fe0866794c9ef5b8f87fd65"}, - {file = "jsonschema_path-0.4.5.tar.gz", hash = "sha256:c6cd7d577ae290c7defd4f4029e86fdb248ca1bd41a07557795b3c95e5144918"}, -] - -[package.dependencies] -pathable = ">=0.5.0,<0.6.0" -PyYAML = ">=5.1" -referencing = "<0.38.0" - -[package.extras] -requests = ["requests (>=2.31.0,<3.0.0)"] +format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=24.6.0)"] [[package]] name = "jsonschema-specifications" @@ -3372,37 +3002,6 @@ requests = "*" ruff = "*" sphinx = "*" -[[package]] -name = "keyring" -version = "25.7.0" -description = "Store and access your passwords safely." -optional = true -python-versions = ">=3.9" -groups = ["main"] -markers = "extra == \"dev\"" -files = [ - {file = "keyring-25.7.0-py3-none-any.whl", hash = "sha256:be4a0b195f149690c166e850609a477c532ddbfbaed96a404d4e43f8d5e2689f"}, - {file = "keyring-25.7.0.tar.gz", hash = "sha256:fe01bd85eb3f8fb3dd0405defdeac9a5b4f6f0439edbb3149577f244a2e8245b"}, -] - -[package.dependencies] -importlib_metadata = {version = ">=4.11.4", markers = "python_version < \"3.12\""} -"jaraco.classes" = "*" -"jaraco.context" = "*" -"jaraco.functools" = "*" -jeepney = {version = ">=0.4.2", markers = "sys_platform == \"linux\""} -pywin32-ctypes = {version = ">=0.2.0", markers = "sys_platform == \"win32\""} -SecretStorage = {version = ">=3.2", markers = "sys_platform == \"linux\""} - -[package.extras] -check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] -completion = ["shtab (>=1.1.0)"] -cover = ["pytest-cov"] -doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -enabler = ["pytest-enabler (>=3.4)"] -test = ["pyfakefs", "pytest (>=6,!=8.1.*)"] -type = ["pygobject-stubs", "pytest-mypy (>=1.0.1)", "shtab", "types-pywin32"] - [[package]] name = "kiwisolver" version = "1.5.0" @@ -3533,39 +3132,39 @@ files = [ [[package]] name = "litellm" -version = "1.83.0" +version = "1.83.7" description = "Library to easily interface with LLM API providers" optional = false python-versions = "<4.0,>=3.9" groups = ["main"] files = [ - {file = "litellm-1.83.0-py3-none-any.whl", hash = "sha256:88c536d339248f3987571493015784671ba3f193a328e1ea6780dbebaa2094a8"}, - {file = "litellm-1.83.0.tar.gz", hash = "sha256:860bebc76c4bb27b4cf90b4a77acd66dba25aced37e3db98750de8a1766bfb7a"}, + {file = "litellm-1.83.7-py3-none-any.whl", hash = "sha256:5784a1d9a9a4a8acd6ca1e347003a5e2e1b3c749b4d41e7da4904577adade111"}, + {file = "litellm-1.83.7.tar.gz", hash = "sha256:e2f2cb99df2e2b2eab63f1354faa45c88dd7c8d40c18eb648afb1b349c689633"}, ] [package.dependencies] -aiohttp = ">=3.10" -click = "*" -fastuuid = ">=0.13.0" -httpx = ">=0.23.0" -importlib-metadata = ">=6.8.0" -jinja2 = ">=3.1.2,<4.0.0" -jsonschema = ">=4.23.0,<5.0.0" -openai = ">=2.8.0" -pydantic = ">=2.5.0,<3.0.0" -python-dotenv = ">=0.2.0" -tiktoken = ">=0.7.0" -tokenizers = "*" - -[package.extras] -caching = ["diskcache (>=5.6.1,<6.0.0)"] -extra-proxy = ["a2a-sdk (>=0.3.22,<0.4.0) ; python_version >= \"3.10\"", "azure-identity (>=1.15.0,<2.0.0) ; python_version >= \"3.9\"", "azure-keyvault-secrets (>=4.8.0,<5.0.0)", "google-cloud-iam (>=2.19.1,<3.0.0)", "google-cloud-kms (>=2.21.3,<3.0.0)", "prisma (>=0.11.0,<0.12.0)", "redisvl (>=0.4.1,<0.5.0) ; python_version >= \"3.9\" and python_version < \"3.14\"", "resend (>=0.8.0)"] -google = ["google-cloud-aiplatform (>=1.38.0)"] -grpc = ["grpcio (>=1.62.3,<1.68.dev0 || >1.71.0,!=1.71.1,!=1.72.0,!=1.72.1,!=1.73.0) ; python_version < \"3.14\"", "grpcio (>=1.75.0) ; python_version >= \"3.14\""] -mlflow = ["mlflow (>3.1.4) ; python_version >= \"3.10\""] -proxy = ["PyJWT (>=2.12.0,<3.0.0) ; python_version >= \"3.9\"", "apscheduler (>=3.10.4,<4.0.0)", "azure-identity (>=1.15.0,<2.0.0) ; python_version >= \"3.9\"", "azure-storage-blob (>=12.25.1,<13.0.0)", "backoff", "boto3 (>=1.40.76,<2.0.0)", "cryptography", "fastapi (>=0.120.1)", "fastapi-sso (>=0.16.0,<0.17.0)", "gunicorn (>=23.0.0,<24.0.0)", "litellm-enterprise (==0.1.35)", "litellm-proxy-extras (>=0.4.62,<0.5.0)", "mcp (>=1.25.0,<2.0.0) ; python_version >= \"3.10\"", "orjson (>=3.9.7,<4.0.0)", "polars (>=1.31.0,<2.0.0) ; python_version >= \"3.10\"", "pynacl (>=1.5.0,<2.0.0)", "pyroscope-io (>=0.8,<0.9) ; sys_platform != \"win32\"", "python-multipart (>=0.0.20)", "pyyaml (>=6.0.1,<7.0.0)", "rich (>=13.7.1,<14.0.0)", "rq", "soundfile (>=0.12.1,<0.13.0)", "uvicorn (>=0.32.1,<1.0.0)", "uvloop (>=0.21.0,<0.22.0) ; sys_platform != \"win32\"", "websockets (>=15.0.1,<16.0.0)"] -semantic-router = ["semantic-router (>=0.1.12) ; python_version >= \"3.9\" and python_version < \"3.14\""] -utils = ["numpydoc"] +aiohttp = "3.13.5" +click = "8.1.8" +fastuuid = "0.14.0" +httpx = "0.28.1" +importlib-metadata = "8.5.0" +jinja2 = "3.1.6" +jsonschema = "4.23.0" +openai = "2.30.0" +pydantic = "2.12.5" +python-dotenv = "1.0.1" +tiktoken = "0.12.0" +tokenizers = "0.22.2" + +[package.extras] +caching = ["diskcache (==5.6.3)"] +extra-proxy = ["a2a-sdk (==0.3.25) ; python_version >= \"3.10\"", "azure-identity (==1.25.3) ; python_version >= \"3.9\"", "azure-keyvault-secrets (==4.10.0)", "google-cloud-iam (==2.19.1)", "google-cloud-kms (==2.24.2)", "prisma (==0.11.0)", "redisvl (==0.4.1) ; python_version >= \"3.9\" and python_version < \"3.14\"", "resend (==2.23.0)"] +google = ["google-cloud-aiplatform (==1.133.0)"] +grpc = ["grpcio (==1.80.0)"] +mlflow = ["mlflow (==3.9.0) ; python_version >= \"3.10\""] +proxy = ["PyJWT (==2.12.1) ; python_version >= \"3.9\"", "apscheduler (==3.11.2)", "azure-identity (==1.25.3) ; python_version >= \"3.9\"", "azure-storage-blob (==12.28.0)", "backoff (==2.2.1)", "boto3 (==1.42.80)", "cryptography (==43.0.3)", "fastapi (==0.124.4)", "fastapi-sso (==0.16.0)", "gunicorn (==23.0.0)", "litellm-enterprise (==0.1.37)", "litellm-proxy-extras (==0.4.65)", "mcp (==1.26.0) ; python_version >= \"3.10\"", "orjson (==3.10.15)", "polars (==1.39.3) ; python_version >= \"3.10\"", "pynacl (==1.6.2)", "pyroscope-io (==0.8.16) ; sys_platform != \"win32\"", "python-multipart (==0.0.20)", "pyyaml (==6.0.3)", "rich (==13.9.4)", "rq (==2.7.0)", "soundfile (==0.12.1)", "uvicorn (==0.33.0)", "uvloop (==0.21.0) ; sys_platform != \"win32\"", "websockets (==15.0.1)"] +semantic-router = ["semantic-router (==0.1.12) ; python_version >= \"3.9\" and python_version < \"3.14\""] +utils = ["numpydoc (==1.8.0)"] [[package]] name = "logfire" @@ -3945,40 +3544,6 @@ python-dateutil = ">=2.7" [package.extras] dev = ["meson-python (>=0.13.1,<0.17.0)", "pybind11 (>=2.13.2,!=2.13.3)", "setuptools (>=64)", "setuptools_scm (>=7)"] -[[package]] -name = "mcp" -version = "1.26.0" -description = "Model Context Protocol SDK" -optional = true -python-versions = ">=3.10" -groups = ["main"] -markers = "extra == \"dev\"" -files = [ - {file = "mcp-1.26.0-py3-none-any.whl", hash = "sha256:904a21c33c25aa98ddbeb47273033c435e595bbacfdb177f4bd87f6dceebe1ca"}, - {file = "mcp-1.26.0.tar.gz", hash = "sha256:db6e2ef491eecc1a0d93711a76f28dec2e05999f93afd48795da1c1137142c66"}, -] - -[package.dependencies] -anyio = ">=4.5" -httpx = ">=0.27.1" -httpx-sse = ">=0.4" -jsonschema = ">=4.20.0" -pydantic = ">=2.11.0,<3.0.0" -pydantic-settings = ">=2.5.2" -pyjwt = {version = ">=2.10.1", extras = ["crypto"]} -python-multipart = ">=0.0.9" -pywin32 = {version = ">=310", markers = "sys_platform == \"win32\""} -sse-starlette = ">=1.6.1" -starlette = ">=0.27" -typing-extensions = ">=4.9.0" -typing-inspection = ">=0.4.1" -uvicorn = {version = ">=0.31.1", markers = "sys_platform != \"emscripten\""} - -[package.extras] -cli = ["python-dotenv (>=1.0.0)", "typer (>=0.16.0)"] -rich = ["rich (>=13.9.4)"] -ws = ["websockets (>=15.0.1)"] - [[package]] name = "mdurl" version = "0.1.2" @@ -4110,19 +3675,6 @@ packaging = "<27" protobuf = ">=3.12.0,<7" pydantic = ">=2.0.0,<3" -[[package]] -name = "more-itertools" -version = "10.8.0" -description = "More routines for operating on iterables, beyond itertools" -optional = true -python-versions = ">=3.9" -groups = ["main"] -markers = "extra == \"dev\"" -files = [ - {file = "more_itertools-10.8.0-py3-none-any.whl", hash = "sha256:52d4362373dcf7c52546bc4af9a86ee7c4579df9a8dc268be0a2f949d376cc9b"}, - {file = "more_itertools-10.8.0.tar.gz", hash = "sha256:f638ddf8a1a0d134181275fb5d58b086ead7c6a72429ad725c67503f13ba30bd"}, -] - [[package]] name = "moto" version = "5.1.22" @@ -5081,14 +4633,14 @@ files = [ [[package]] name = "openai" -version = "2.28.0" +version = "2.30.0" description = "The official Python library for the openai API" optional = false python-versions = ">=3.9" groups = ["main"] files = [ - {file = "openai-2.28.0-py3-none-any.whl", hash = "sha256:79aa5c45dba7fef84085701c235cf13ba88485e1ef4f8dfcedc44fc2a698fc1d"}, - {file = "openai-2.28.0.tar.gz", hash = "sha256:bb7fdff384d2a787fa82e8822d1dd3c02e8cf901d60f1df523b7da03cbb6d48d"}, + {file = "openai-2.30.0-py3-none-any.whl", hash = "sha256:9a5ae616888eb2748ec5e0c5b955a51592e0b201a11f4262db920f2a78c5231d"}, + {file = "openai-2.30.0.tar.gz", hash = "sha256:92f7661c990bda4b22a941806c83eabe4896c3094465030dd882a71abe80c885"}, ] [package.dependencies] @@ -5099,7 +4651,7 @@ jiter = ">=0.10.0,<1" pydantic = ">=1.9.0,<3" sniffio = "*" tqdm = ">4" -typing-extensions = ">=4.11,<5" +typing-extensions = ">=4.14,<5" [package.extras] aiohttp = ["aiohttp", "httpx-aiohttp (>=0.1.9)"] @@ -5107,22 +4659,6 @@ datalib = ["numpy (>=1)", "pandas (>=1.2.3)", "pandas-stubs (>=1.1.0.11)"] realtime = ["websockets (>=13,<16)"] voice-helpers = ["numpy (>=2.0.2)", "sounddevice (>=0.5.1)"] -[[package]] -name = "openapi-pydantic" -version = "0.5.1" -description = "Pydantic OpenAPI schema implementation" -optional = true -python-versions = "<4.0,>=3.8" -groups = ["main"] -markers = "extra == \"dev\"" -files = [ - {file = "openapi_pydantic-0.5.1-py3-none-any.whl", hash = "sha256:a3a09ef4586f5bd760a8df7f43028b60cafb6d9f61de2acba9574766255ab146"}, - {file = "openapi_pydantic-0.5.1.tar.gz", hash = "sha256:ff6835af6bde7a459fb93eb93bb92b8749b754fc6e51b2f1590a19dc3005ee0d"}, -] - -[package.dependencies] -pydantic = ">=1.8" - [[package]] name = "openpyxl" version = "3.1.5" @@ -5534,19 +5070,6 @@ develop = ["build (>=0.5.1)", "coverage (>=4.4)", "pylint", "pytest (<5.0) ; pyt docs = ["Sphinx (>=1.6)", "sphinx_bootstrap_theme (>=0.6.0)"] testing = ["pytest (<5.0) ; python_version < \"3.0\"", "pytest (>=5.0) ; python_version >= \"3.0\"", "pytest-html (>=1.19.0)"] -[[package]] -name = "pathable" -version = "0.5.0" -description = "Object-oriented paths" -optional = true -python-versions = "<4.0,>=3.10" -groups = ["main"] -markers = "extra == \"dev\"" -files = [ - {file = "pathable-0.5.0-py3-none-any.whl", hash = "sha256:646e3d09491a6351a0c82632a09c02cdf70a252e73196b36d8a15ba0a114f0a6"}, - {file = "pathable-0.5.0.tar.gz", hash = "sha256:d81938348a1cacb525e7c75166270644782c0fb9c8cecc16be033e71427e0ef1"}, -] - [[package]] name = "pathspec" version = "1.0.4" @@ -5877,51 +5400,6 @@ files = [ {file = "protobuf-6.33.5.tar.gz", hash = "sha256:6ddcac2a081f8b7b9642c09406bc6a4290128fce5f471cddd165960bb9119e5c"}, ] -[[package]] -name = "py-key-value-aio" -version = "0.4.4" -description = "Async Key-Value Store - A pluggable interface for KV Stores" -optional = true -python-versions = ">=3.10" -groups = ["main"] -markers = "extra == \"dev\"" -files = [ - {file = "py_key_value_aio-0.4.4-py3-none-any.whl", hash = "sha256:18e17564ecae61b987f909fc2cd41ee2012c84b4b1dcb8c055cf8b4bc1bf3f5d"}, - {file = "py_key_value_aio-0.4.4.tar.gz", hash = "sha256:e3012e6243ed7cc09bb05457bd4d03b1ba5c2b1ca8700096b3927db79ffbbe55"}, -] - -[package.dependencies] -aiofile = {version = ">=3.5.0", optional = true, markers = "extra == \"filetree\""} -anyio = {version = ">=4.4.0", optional = true, markers = "extra == \"filetree\""} -beartype = ">=0.20.0" -cachetools = {version = ">=5.0.0", optional = true, markers = "extra == \"memory\""} -keyring = {version = ">=25.6.0", optional = true, markers = "extra == \"keyring\""} -typing-extensions = ">=4.15.0" - -[package.extras] -aerospike = ["aerospike (>=16.0.0)"] -disk = ["diskcache (>=5.0.0)", "pathvalidate (>=3.3.1)"] -docs = ["mkdocs (>=1.6.0)", "mkdocs-material (>=9.5.0)", "mkdocstrings-python (>=1.10.0)", "mkdocstrings[python] (>=0.30.0)"] -duckdb = ["duckdb (>=1.1.1)", "pytz (>=2025.2)"] -dynamodb = ["aioboto3 (>=13.3.0)", "types-aiobotocore-dynamodb (>=2.16.0)"] -elasticsearch = ["aiohttp (>=3.12)", "elasticsearch (>=8.0.0)"] -filetree = ["aiofile (>=3.5.0)", "anyio (>=4.4.0)"] -firestore = ["google-auth (>=2.24.0)", "google-cloud-firestore (>=2.13.0)"] -keyring = ["keyring (>=25.6.0)"] -keyring-linux = ["dbus-python (>=1.4.0)", "keyring (>=25.6.0)"] -memcached = ["aiomcache (>=0.8.0)"] -memory = ["cachetools (>=5.0.0)"] -mongodb = ["pymongo (>=4.0.0)"] -opensearch = ["opensearch-py[async] (>=2.0.0)"] -postgresql = ["asyncpg (>=0.30.0)"] -pydantic = ["pydantic (>=2.11.9)"] -redis = ["redis (>=4.3.0)"] -rocksdb = ["rocksdict (>=0.3.2) ; python_full_version < \"3.12.0\"", "rocksdict (>=0.3.24) ; python_full_version >= \"3.12.0\""] -s3 = ["aioboto3 (>=13.3.0)", "types-aiobotocore-s3 (>=2.16.0)"] -valkey = ["valkey-glide (>=2.1.0)"] -vault = ["hvac (>=2.3.0)", "types-hvac (>=2.3.0)"] -wrappers-encryption = ["cryptography (>=45.0.0)"] - [[package]] name = "pyarrow" version = "23.0.1" @@ -6038,7 +5516,6 @@ files = [ [package.dependencies] annotated-types = ">=0.6.0" -email-validator = {version = ">=2.0.0", optional = true, markers = "extra == \"email\""} pydantic-core = "2.41.5" typing-extensions = ">=4.14.1" typing-inspection = ">=0.4.2" @@ -6288,7 +5765,7 @@ description = "Settings management using Pydantic" optional = true python-versions = ">=3.10" groups = ["main"] -markers = "extra == \"dev\"" +markers = "python_version >= \"3.11\" and extra == \"dev\"" files = [ {file = "pydantic_settings-2.13.1-py3-none-any.whl", hash = "sha256:d56fd801823dbeae7f0975e1f8c8e25c258eb75d278ea7abb5d9cebb01b56237"}, {file = "pydantic_settings-2.13.1.tar.gz", hash = "sha256:b4c11847b15237fb0171e1462bf540e294affb9b86db4d9aa5c01730bdbe4025"}, @@ -6321,29 +5798,6 @@ files = [ [package.extras] windows-terminal = ["colorama (>=0.4.6)"] -[[package]] -name = "pyjwt" -version = "2.12.1" -description = "JSON Web Token implementation in Python" -optional = true -python-versions = ">=3.9" -groups = ["main"] -markers = "extra == \"dev\"" -files = [ - {file = "pyjwt-2.12.1-py3-none-any.whl", hash = "sha256:28ca37c070cad8ba8cd9790cd940535d40274d22f80ab87f3ac6a713e6e8454c"}, - {file = "pyjwt-2.12.1.tar.gz", hash = "sha256:c74a7a2adf861c04d002db713dd85f84beb242228e671280bf709d765b03672b"}, -] - -[package.dependencies] -cryptography = {version = ">=3.4.0", optional = true, markers = "extra == \"crypto\""} -typing_extensions = {version = ">=4.0", markers = "python_version < \"3.11\""} - -[package.extras] -crypto = ["cryptography (>=3.4.0)"] -dev = ["coverage[toml] (==7.10.7)", "cryptography (>=3.4.0)", "pre-commit", "pytest (>=8.4.2,<9.0.0)", "sphinx", "sphinx-rtd-theme", "zope.interface"] -docs = ["sphinx", "sphinx-rtd-theme", "zope.interface"] -tests = ["coverage[toml] (==7.10.7)", "pytest (>=8.4.2,<9.0.0)"] - [[package]] name = "pyparsing" version = "3.3.2" @@ -6383,19 +5837,6 @@ docs = ["myst_parser", "sphinx", "sphinx_rtd_theme"] full = ["Pillow (>=8.0.0)", "cryptography"] image = ["Pillow (>=8.0.0)"] -[[package]] -name = "pyperclip" -version = "1.11.0" -description = "A cross-platform clipboard module for Python. (Only handles plain text for now.)" -optional = true -python-versions = "*" -groups = ["main"] -markers = "extra == \"dev\"" -files = [ - {file = "pyperclip-1.11.0-py3-none-any.whl", hash = "sha256:299403e9ff44581cb9ba2ffeed69c7aa96a008622ad0c46cb575ca75b5b84273"}, - {file = "pyperclip-1.11.0.tar.gz", hash = "sha256:244035963e4428530d9e3a6101a1ef97209c6825edab1567beac148ccc1db1b6"}, -] - [[package]] name = "pytest" version = "9.0.2" @@ -6482,14 +5923,14 @@ six = ">=1.5" [[package]] name = "python-dotenv" -version = "1.2.2" +version = "1.0.1" description = "Read key-value pairs from a .env file and set them as environment variables" optional = false -python-versions = ">=3.10" +python-versions = ">=3.8" groups = ["main"] files = [ - {file = "python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a"}, - {file = "python_dotenv-1.2.2.tar.gz", hash = "sha256:2c371a91fbd7ba082c2c1dc1f8bf89ca22564a087c2c287cd9b662adde799cf3"}, + {file = "python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca"}, + {file = "python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a"}, ] [package.extras] @@ -6517,19 +5958,6 @@ autocompletion = ["argcomplete (>=1.10.0,<3)"] graphql = ["gql[httpx] (>=3.5.0,<4)"] yaml = ["PyYaml (>=6.0.1)"] -[[package]] -name = "python-multipart" -version = "0.0.22" -description = "A streaming multipart parser for Python" -optional = true -python-versions = ">=3.10" -groups = ["main"] -markers = "extra == \"dev\"" -files = [ - {file = "python_multipart-0.0.22-py3-none-any.whl", hash = "sha256:2b2cd894c83d21bf49d702499531c7bafd057d730c201782048f7945d82de155"}, - {file = "python_multipart-0.0.22.tar.gz", hash = "sha256:7340bef99a7e0032613f56dc36027b959fd3b30a787ed62d310e951f7c3a3a58"}, -] - [[package]] name = "python-semantic-release" version = "10.5.3" @@ -6665,19 +6093,6 @@ files = [ {file = "pywin32-311-cp39-cp39-win_arm64.whl", hash = "sha256:62ea666235135fee79bb154e695f3ff67370afefd71bd7fea7512fc70ef31e3d"}, ] -[[package]] -name = "pywin32-ctypes" -version = "0.2.3" -description = "A (partial) reimplementation of pywin32 using ctypes/cffi" -optional = true -python-versions = ">=3.6" -groups = ["main"] -markers = "extra == \"dev\" and sys_platform == \"win32\"" -files = [ - {file = "pywin32-ctypes-0.2.3.tar.gz", hash = "sha256:d162dc04946d704503b2edc4d55f3dba5c1d539ead017afa00142c38b9885755"}, - {file = "pywin32_ctypes-0.2.3-py3-none-any.whl", hash = "sha256:8a1513379d709975552d202d942d9837758905c8d01eb82b8bcc30918929e7b8"}, -] - [[package]] name = "pyyaml" version = "6.0.3" @@ -7076,26 +6491,6 @@ pygments = ">=2.13.0,<3.0.0" [package.extras] jupyter = ["ipywidgets (>=7.5.1,<9)"] -[[package]] -name = "rich-rst" -version = "1.3.2" -description = "A beautiful reStructuredText renderer for rich" -optional = true -python-versions = "*" -groups = ["main"] -markers = "extra == \"dev\"" -files = [ - {file = "rich_rst-1.3.2-py3-none-any.whl", hash = "sha256:a99b4907cbe118cf9d18b0b44de272efa61f15117c61e39ebdc431baf5df722a"}, - {file = "rich_rst-1.3.2.tar.gz", hash = "sha256:a1196fdddf1e364b02ec68a05e8ff8f6914fee10fbca2e6b6735f166bb0da8d4"}, -] - -[package.dependencies] -docutils = "*" -rich = ">=12.0.0" - -[package.extras] -docs = ["sphinx"] - [[package]] name = "roman-numerals" version = "4.1.0" @@ -7594,23 +6989,6 @@ dev = ["click (<8.3.0)", "cython-lint (>=0.12.2)", "mypy (==1.10.0)", "pycodesty doc = ["intersphinx_registry", "jupyterlite-pyodide-kernel", "jupyterlite-sphinx (>=0.19.1)", "jupytext", "linkify-it-py", "matplotlib (>=3.5)", "myst-nb (>=1.2.0)", "numpydoc", "pooch", "pydata-sphinx-theme (>=0.15.2)", "sphinx (>=5.0.0,<8.2.0)", "sphinx-copybutton", "sphinx-design (>=0.4.0)", "tabulate"] test = ["Cython", "array-api-strict (>=2.3.1)", "asv", "gmpy2", "hypothesis (>=6.30)", "meson", "mpmath", "ninja ; sys_platform != \"emscripten\"", "pooch", "pytest (>=8.0.0)", "pytest-cov", "pytest-timeout", "pytest-xdist", "scikit-umfpack", "threadpoolctl"] -[[package]] -name = "secretstorage" -version = "3.5.0" -description = "Python bindings to FreeDesktop.org Secret Service API" -optional = true -python-versions = ">=3.10" -groups = ["main"] -markers = "extra == \"dev\" and sys_platform == \"linux\"" -files = [ - {file = "secretstorage-3.5.0-py3-none-any.whl", hash = "sha256:0ce65888c0725fcb2c5bc0fdb8e5438eece02c523557ea40ce0703c266248137"}, - {file = "secretstorage-3.5.0.tar.gz", hash = "sha256:f04b8e4689cbce351744d5537bf6b1329c6fc68f91fa666f60a380edddcd11be"}, -] - -[package.dependencies] -cryptography = ">=2.0" -jeepney = ">=0.6" - [[package]] name = "setuptools" version = "82.0.1" @@ -8024,29 +7402,6 @@ files = [ dev = ["build"] doc = ["sphinx"] -[[package]] -name = "sse-starlette" -version = "3.3.2" -description = "SSE plugin for Starlette" -optional = true -python-versions = ">=3.10" -groups = ["main"] -markers = "extra == \"dev\"" -files = [ - {file = "sse_starlette-3.3.2-py3-none-any.whl", hash = "sha256:5c3ea3dad425c601236726af2f27689b74494643f57017cafcb6f8c9acfbb862"}, - {file = "sse_starlette-3.3.2.tar.gz", hash = "sha256:678fca55a1945c734d8472a6cad186a55ab02840b4f6786f5ee8770970579dcd"}, -] - -[package.dependencies] -anyio = ">=4.7.0" -starlette = ">=0.49.1" - -[package.extras] -daphne = ["daphne (>=4.2.0)"] -examples = ["aiosqlite (>=0.21.0)", "fastapi (>=0.115.12)", "sqlalchemy[asyncio] (>=2.0.41)", "uvicorn (>=0.34.0)"] -granian = ["granian (>=2.3.1)"] -uvicorn = ["uvicorn (>=0.34.0)"] - [[package]] name = "starlette" version = "0.52.1" @@ -8657,19 +8012,6 @@ files = [ {file = "tzdata-2025.3.tar.gz", hash = "sha256:de39c2ca5dc7b0344f2eba86f49d614019d29f060fc4ebc8a417896a620b56a7"}, ] -[[package]] -name = "uncalled-for" -version = "0.2.0" -description = "Async dependency injection for Python functions" -optional = true -python-versions = ">=3.10" -groups = ["main"] -markers = "extra == \"dev\"" -files = [ - {file = "uncalled_for-0.2.0-py3-none-any.whl", hash = "sha256:2c0bd338faff5f930918f79e7eb9ff48290df2cb05fcc0b40a7f334e55d4d85f"}, - {file = "uncalled_for-0.2.0.tar.gz", hash = "sha256:b4f8fdbcec328c5a113807d653e041c5094473dd4afa7c34599ace69ccb7e69f"}, -] - [[package]] name = "urllib3" version = "2.6.3" @@ -8726,129 +8068,6 @@ files = [ docs = ["Sphinx (>=1.8.1)", "docutils", "pylons-sphinx-themes (>=1.0.9)"] testing = ["coverage (>=7.6.0)", "pytest", "pytest-cov"] -[[package]] -name = "watchfiles" -version = "1.1.1" -description = "Simple, modern and high performance file watching and code reload in python." -optional = true -python-versions = ">=3.9" -groups = ["main"] -markers = "extra == \"dev\"" -files = [ - {file = "watchfiles-1.1.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:eef58232d32daf2ac67f42dea51a2c80f0d03379075d44a587051e63cc2e368c"}, - {file = "watchfiles-1.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:03fa0f5237118a0c5e496185cafa92878568b652a2e9a9382a5151b1a0380a43"}, - {file = "watchfiles-1.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8ca65483439f9c791897f7db49202301deb6e15fe9f8fe2fed555bf986d10c31"}, - {file = "watchfiles-1.1.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f0ab1c1af0cb38e3f598244c17919fb1a84d1629cc08355b0074b6d7f53138ac"}, - {file = "watchfiles-1.1.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3bc570d6c01c206c46deb6e935a260be44f186a2f05179f52f7fcd2be086a94d"}, - {file = "watchfiles-1.1.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e84087b432b6ac94778de547e08611266f1f8ffad28c0ee4c82e028b0fc5966d"}, - {file = "watchfiles-1.1.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:620bae625f4cb18427b1bb1a2d9426dc0dd5a5ba74c7c2cdb9de405f7b129863"}, - {file = "watchfiles-1.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:544364b2b51a9b0c7000a4b4b02f90e9423d97fbbf7e06689236443ebcad81ab"}, - {file = "watchfiles-1.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:bbe1ef33d45bc71cf21364df962af171f96ecaeca06bd9e3d0b583efb12aec82"}, - {file = "watchfiles-1.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1a0bb430adb19ef49389e1ad368450193a90038b5b752f4ac089ec6942c4dff4"}, - {file = "watchfiles-1.1.1-cp310-cp310-win32.whl", hash = "sha256:3f6d37644155fb5beca5378feb8c1708d5783145f2a0f1c4d5a061a210254844"}, - {file = "watchfiles-1.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:a36d8efe0f290835fd0f33da35042a1bb5dc0e83cbc092dcf69bce442579e88e"}, - {file = "watchfiles-1.1.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:f57b396167a2565a4e8b5e56a5a1c537571733992b226f4f1197d79e94cf0ae5"}, - {file = "watchfiles-1.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:421e29339983e1bebc281fab40d812742268ad057db4aee8c4d2bce0af43b741"}, - {file = "watchfiles-1.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e43d39a741e972bab5d8100b5cdacf69db64e34eb19b6e9af162bccf63c5cc6"}, - {file = "watchfiles-1.1.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f537afb3276d12814082a2e9b242bdcf416c2e8fd9f799a737990a1dbe906e5b"}, - {file = "watchfiles-1.1.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b2cd9e04277e756a2e2d2543d65d1e2166d6fd4c9b183f8808634fda23f17b14"}, - {file = "watchfiles-1.1.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5f3f58818dc0b07f7d9aa7fe9eb1037aecb9700e63e1f6acfed13e9fef648f5d"}, - {file = "watchfiles-1.1.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9bb9f66367023ae783551042d31b1d7fd422e8289eedd91f26754a66f44d5cff"}, - {file = "watchfiles-1.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aebfd0861a83e6c3d1110b78ad54704486555246e542be3e2bb94195eabb2606"}, - {file = "watchfiles-1.1.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:5fac835b4ab3c6487b5dbad78c4b3724e26bcc468e886f8ba8cc4306f68f6701"}, - {file = "watchfiles-1.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:399600947b170270e80134ac854e21b3ccdefa11a9529a3decc1327088180f10"}, - {file = "watchfiles-1.1.1-cp311-cp311-win32.whl", hash = "sha256:de6da501c883f58ad50db3a32ad397b09ad29865b5f26f64c24d3e3281685849"}, - {file = "watchfiles-1.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:35c53bd62a0b885bf653ebf6b700d1bf05debb78ad9292cf2a942b23513dc4c4"}, - {file = "watchfiles-1.1.1-cp311-cp311-win_arm64.whl", hash = "sha256:57ca5281a8b5e27593cb7d82c2ac927ad88a96ed406aa446f6344e4328208e9e"}, - {file = "watchfiles-1.1.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:8c89f9f2f740a6b7dcc753140dd5e1ab9215966f7a3530d0c0705c83b401bd7d"}, - {file = "watchfiles-1.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bd404be08018c37350f0d6e34676bd1e2889990117a2b90070b3007f172d0610"}, - {file = "watchfiles-1.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8526e8f916bb5b9a0a777c8317c23ce65de259422bba5b31325a6fa6029d33af"}, - {file = "watchfiles-1.1.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2edc3553362b1c38d9f06242416a5d8e9fe235c204a4072e988ce2e5bb1f69f6"}, - {file = "watchfiles-1.1.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:30f7da3fb3f2844259cba4720c3fc7138eb0f7b659c38f3bfa65084c7fc7abce"}, - {file = "watchfiles-1.1.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f8979280bdafff686ba5e4d8f97840f929a87ed9cdf133cbbd42f7766774d2aa"}, - {file = "watchfiles-1.1.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dcc5c24523771db3a294c77d94771abcfcb82a0e0ee8efd910c37c59ec1b31bb"}, - {file = "watchfiles-1.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1db5d7ae38ff20153d542460752ff397fcf5c96090c1230803713cf3147a6803"}, - {file = "watchfiles-1.1.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:28475ddbde92df1874b6c5c8aaeb24ad5be47a11f87cde5a28ef3835932e3e94"}, - {file = "watchfiles-1.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:36193ed342f5b9842edd3532729a2ad55c4160ffcfa3700e0d54be496b70dd43"}, - {file = "watchfiles-1.1.1-cp312-cp312-win32.whl", hash = "sha256:859e43a1951717cc8de7f4c77674a6d389b106361585951d9e69572823f311d9"}, - {file = "watchfiles-1.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:91d4c9a823a8c987cce8fa2690923b069966dabb196dd8d137ea2cede885fde9"}, - {file = "watchfiles-1.1.1-cp312-cp312-win_arm64.whl", hash = "sha256:a625815d4a2bdca61953dbba5a39d60164451ef34c88d751f6c368c3ea73d404"}, - {file = "watchfiles-1.1.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:130e4876309e8686a5e37dba7d5e9bc77e6ed908266996ca26572437a5271e18"}, - {file = "watchfiles-1.1.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5f3bde70f157f84ece3765b42b4a52c6ac1a50334903c6eaf765362f6ccca88a"}, - {file = "watchfiles-1.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:14e0b1fe858430fc0251737ef3824c54027bedb8c37c38114488b8e131cf8219"}, - {file = "watchfiles-1.1.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f27db948078f3823a6bb3b465180db8ebecf26dd5dae6f6180bd87383b6b4428"}, - {file = "watchfiles-1.1.1-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:059098c3a429f62fc98e8ec62b982230ef2c8df68c79e826e37b895bc359a9c0"}, - {file = "watchfiles-1.1.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bfb5862016acc9b869bb57284e6cb35fdf8e22fe59f7548858e2f971d045f150"}, - {file = "watchfiles-1.1.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:319b27255aacd9923b8a276bb14d21a5f7ff82564c744235fc5eae58d95422ae"}, - {file = "watchfiles-1.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c755367e51db90e75b19454b680903631d41f9e3607fbd941d296a020c2d752d"}, - {file = "watchfiles-1.1.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c22c776292a23bfc7237a98f791b9ad3144b02116ff10d820829ce62dff46d0b"}, - {file = "watchfiles-1.1.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:3a476189be23c3686bc2f4321dd501cb329c0a0469e77b7b534ee10129ae6374"}, - {file = "watchfiles-1.1.1-cp313-cp313-win32.whl", hash = "sha256:bf0a91bfb5574a2f7fc223cf95eeea79abfefa404bf1ea5e339c0c1560ae99a0"}, - {file = "watchfiles-1.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:52e06553899e11e8074503c8e716d574adeeb7e68913115c4b3653c53f9bae42"}, - {file = "watchfiles-1.1.1-cp313-cp313-win_arm64.whl", hash = "sha256:ac3cc5759570cd02662b15fbcd9d917f7ecd47efe0d6b40474eafd246f91ea18"}, - {file = "watchfiles-1.1.1-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:563b116874a9a7ce6f96f87cd0b94f7faf92d08d0021e837796f0a14318ef8da"}, - {file = "watchfiles-1.1.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3ad9fe1dae4ab4212d8c91e80b832425e24f421703b5a42ef2e4a1e215aff051"}, - {file = "watchfiles-1.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce70f96a46b894b36eba678f153f052967a0d06d5b5a19b336ab0dbbd029f73e"}, - {file = "watchfiles-1.1.1-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:cb467c999c2eff23a6417e58d75e5828716f42ed8289fe6b77a7e5a91036ca70"}, - {file = "watchfiles-1.1.1-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:836398932192dae4146c8f6f737d74baeac8b70ce14831a239bdb1ca882fc261"}, - {file = "watchfiles-1.1.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:743185e7372b7bc7c389e1badcc606931a827112fbbd37f14c537320fca08620"}, - {file = "watchfiles-1.1.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:afaeff7696e0ad9f02cbb8f56365ff4686ab205fcf9c4c5b6fdfaaa16549dd04"}, - {file = "watchfiles-1.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f7eb7da0eb23aa2ba036d4f616d46906013a68caf61b7fdbe42fc8b25132e77"}, - {file = "watchfiles-1.1.1-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:831a62658609f0e5c64178211c942ace999517f5770fe9436be4c2faeba0c0ef"}, - {file = "watchfiles-1.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:f9a2ae5c91cecc9edd47e041a930490c31c3afb1f5e6d71de3dc671bfaca02bf"}, - {file = "watchfiles-1.1.1-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:d1715143123baeeaeadec0528bb7441103979a1d5f6fd0e1f915383fea7ea6d5"}, - {file = "watchfiles-1.1.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:39574d6370c4579d7f5d0ad940ce5b20db0e4117444e39b6d8f99db5676c52fd"}, - {file = "watchfiles-1.1.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7365b92c2e69ee952902e8f70f3ba6360d0d596d9299d55d7d386df84b6941fb"}, - {file = "watchfiles-1.1.1-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bfff9740c69c0e4ed32416f013f3c45e2ae42ccedd1167ef2d805c000b6c71a5"}, - {file = "watchfiles-1.1.1-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b27cf2eb1dda37b2089e3907d8ea92922b673c0c427886d4edc6b94d8dfe5db3"}, - {file = "watchfiles-1.1.1-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:526e86aced14a65a5b0ec50827c745597c782ff46b571dbfe46192ab9e0b3c33"}, - {file = "watchfiles-1.1.1-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:04e78dd0b6352db95507fd8cb46f39d185cf8c74e4cf1e4fbad1d3df96faf510"}, - {file = "watchfiles-1.1.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5c85794a4cfa094714fb9c08d4a218375b2b95b8ed1666e8677c349906246c05"}, - {file = "watchfiles-1.1.1-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:74d5012b7630714b66be7b7b7a78855ef7ad58e8650c73afc4c076a1f480a8d6"}, - {file = "watchfiles-1.1.1-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:8fbe85cb3201c7d380d3d0b90e63d520f15d6afe217165d7f98c9c649654db81"}, - {file = "watchfiles-1.1.1-cp314-cp314-win32.whl", hash = "sha256:3fa0b59c92278b5a7800d3ee7733da9d096d4aabcfabb9a928918bd276ef9b9b"}, - {file = "watchfiles-1.1.1-cp314-cp314-win_amd64.whl", hash = "sha256:c2047d0b6cea13b3316bdbafbfa0c4228ae593d995030fda39089d36e64fc03a"}, - {file = "watchfiles-1.1.1-cp314-cp314-win_arm64.whl", hash = "sha256:842178b126593addc05acf6fce960d28bc5fae7afbaa2c6c1b3a7b9460e5be02"}, - {file = "watchfiles-1.1.1-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:88863fbbc1a7312972f1c511f202eb30866370ebb8493aef2812b9ff28156a21"}, - {file = "watchfiles-1.1.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:55c7475190662e202c08c6c0f4d9e345a29367438cf8e8037f3155e10a88d5a5"}, - {file = "watchfiles-1.1.1-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f53fa183d53a1d7a8852277c92b967ae99c2d4dcee2bfacff8868e6e30b15f7"}, - {file = "watchfiles-1.1.1-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6aae418a8b323732fa89721d86f39ec8f092fc2af67f4217a2b07fd3e93c6101"}, - {file = "watchfiles-1.1.1-cp314-cp314t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f096076119da54a6080e8920cbdaac3dbee667eb91dcc5e5b78840b87415bd44"}, - {file = "watchfiles-1.1.1-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:00485f441d183717038ed2e887a7c868154f216877653121068107b227a2f64c"}, - {file = "watchfiles-1.1.1-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a55f3e9e493158d7bfdb60a1165035f1cf7d320914e7b7ea83fe22c6023b58fc"}, - {file = "watchfiles-1.1.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c91ed27800188c2ae96d16e3149f199d62f86c7af5f5f4d2c61a3ed8cd3666c"}, - {file = "watchfiles-1.1.1-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:311ff15a0bae3714ffb603e6ba6dbfba4065ab60865d15a6ec544133bdb21099"}, - {file = "watchfiles-1.1.1-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:a916a2932da8f8ab582f242c065f5c81bed3462849ca79ee357dd9551b0e9b01"}, - {file = "watchfiles-1.1.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:c882d69f6903ef6092bedfb7be973d9319940d56b8427ab9187d1ecd73438a70"}, - {file = "watchfiles-1.1.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d6ff426a7cb54f310d51bfe83fe9f2bbe40d540c741dc974ebc30e6aa238f52e"}, - {file = "watchfiles-1.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79ff6c6eadf2e3fc0d7786331362e6ef1e51125892c75f1004bd6b52155fb956"}, - {file = "watchfiles-1.1.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c1f5210f1b8fc91ead1283c6fd89f70e76fb07283ec738056cf34d51e9c1d62c"}, - {file = "watchfiles-1.1.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b9c4702f29ca48e023ffd9b7ff6b822acdf47cb1ff44cb490a3f1d5ec8987e9c"}, - {file = "watchfiles-1.1.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:acb08650863767cbc58bca4813b92df4d6c648459dcaa3d4155681962b2aa2d3"}, - {file = "watchfiles-1.1.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08af70fd77eee58549cd69c25055dc344f918d992ff626068242259f98d598a2"}, - {file = "watchfiles-1.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c3631058c37e4a0ec440bf583bc53cdbd13e5661bb6f465bc1d88ee9a0a4d02"}, - {file = "watchfiles-1.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:cf57a27fb986c6243d2ee78392c503826056ffe0287e8794503b10fb51b881be"}, - {file = "watchfiles-1.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d7e7067c98040d646982daa1f37a33d3544138ea155536c2e0e63e07ff8a7e0f"}, - {file = "watchfiles-1.1.1-cp39-cp39-win32.whl", hash = "sha256:6c9c9262f454d1c4d8aaa7050121eb4f3aea197360553699520767daebf2180b"}, - {file = "watchfiles-1.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:74472234c8370669850e1c312490f6026d132ca2d396abfad8830b4f1c096957"}, - {file = "watchfiles-1.1.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:17ef139237dfced9da49fb7f2232c86ca9421f666d78c264c7ffca6601d154c3"}, - {file = "watchfiles-1.1.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:672b8adf25b1a0d35c96b5888b7b18699d27d4194bac8beeae75be4b7a3fc9b2"}, - {file = "watchfiles-1.1.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77a13aea58bc2b90173bc69f2a90de8e282648939a00a602e1dc4ee23e26b66d"}, - {file = "watchfiles-1.1.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b495de0bb386df6a12b18335a0285dda90260f51bdb505503c02bcd1ce27a8b"}, - {file = "watchfiles-1.1.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:db476ab59b6765134de1d4fe96a1a9c96ddf091683599be0f26147ea1b2e4b88"}, - {file = "watchfiles-1.1.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:89eef07eee5e9d1fda06e38822ad167a044153457e6fd997f8a858ab7564a336"}, - {file = "watchfiles-1.1.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce19e06cbda693e9e7686358af9cd6f5d61312ab8b00488bc36f5aabbaf77e24"}, - {file = "watchfiles-1.1.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3e6f39af2eab0118338902798b5aa6664f46ff66bc0280de76fca67a7f262a49"}, - {file = "watchfiles-1.1.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:cdab464fee731e0884c35ae3588514a9bcf718d0e2c82169c1c4a85cc19c3c7f"}, - {file = "watchfiles-1.1.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:3dbd8cbadd46984f802f6d479b7e3afa86c42d13e8f0f322d669d79722c8ec34"}, - {file = "watchfiles-1.1.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5524298e3827105b61951a29c3512deb9578586abf3a7c5da4a8069df247cccc"}, - {file = "watchfiles-1.1.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b943d3668d61cfa528eb949577479d3b077fd25fb83c641235437bc0b5bc60e"}, - {file = "watchfiles-1.1.1.tar.gz", hash = "sha256:a173cb5c16c4f40ab19cecf48a534c409f7ea983ab8fed0741304a1c0a31b3f2"}, -] - -[package.dependencies] -anyio = ">=3.0.0" - [[package]] name = "wcwidth" version = "0.6.0" @@ -8862,78 +8081,6 @@ files = [ {file = "wcwidth-0.6.0.tar.gz", hash = "sha256:cdc4e4262d6ef9a1a57e018384cbeb1208d8abbc64176027e2c2455c81313159"}, ] -[[package]] -name = "websockets" -version = "16.0" -description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" -optional = true -python-versions = ">=3.10" -groups = ["main"] -markers = "extra == \"dev\"" -files = [ - {file = "websockets-16.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:04cdd5d2d1dacbad0a7bf36ccbcd3ccd5a30ee188f2560b7a62a30d14107b31a"}, - {file = "websockets-16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8ff32bb86522a9e5e31439a58addbb0166f0204d64066fb955265c4e214160f0"}, - {file = "websockets-16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:583b7c42688636f930688d712885cf1531326ee05effd982028212ccc13e5957"}, - {file = "websockets-16.0-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:7d837379b647c0c4c2355c2499723f82f1635fd2c26510e1f587d89bc2199e72"}, - {file = "websockets-16.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:df57afc692e517a85e65b72e165356ed1df12386ecb879ad5693be08fac65dde"}, - {file = "websockets-16.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:2b9f1e0d69bc60a4a87349d50c09a037a2607918746f07de04df9e43252c77a3"}, - {file = "websockets-16.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:335c23addf3d5e6a8633f9f8eda77efad001671e80b95c491dd0924587ece0b3"}, - {file = "websockets-16.0-cp310-cp310-win32.whl", hash = "sha256:37b31c1623c6605e4c00d466c9d633f9b812ea430c11c8a278774a1fde1acfa9"}, - {file = "websockets-16.0-cp310-cp310-win_amd64.whl", hash = "sha256:8e1dab317b6e77424356e11e99a432b7cb2f3ec8c5ab4dabbcee6add48f72b35"}, - {file = "websockets-16.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:31a52addea25187bde0797a97d6fc3d2f92b6f72a9370792d65a6e84615ac8a8"}, - {file = "websockets-16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:417b28978cdccab24f46400586d128366313e8a96312e4b9362a4af504f3bbad"}, - {file = "websockets-16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:af80d74d4edfa3cb9ed973a0a5ba2b2a549371f8a741e0800cb07becdd20f23d"}, - {file = "websockets-16.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:08d7af67b64d29823fed316505a89b86705f2b7981c07848fb5e3ea3020c1abe"}, - {file = "websockets-16.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7be95cfb0a4dae143eaed2bcba8ac23f4892d8971311f1b06f3c6b78952ee70b"}, - {file = "websockets-16.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d6297ce39ce5c2e6feb13c1a996a2ded3b6832155fcfc920265c76f24c7cceb5"}, - {file = "websockets-16.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1c1b30e4f497b0b354057f3467f56244c603a79c0d1dafce1d16c283c25f6e64"}, - {file = "websockets-16.0-cp311-cp311-win32.whl", hash = "sha256:5f451484aeb5cafee1ccf789b1b66f535409d038c56966d6101740c1614b86c6"}, - {file = "websockets-16.0-cp311-cp311-win_amd64.whl", hash = "sha256:8d7f0659570eefb578dacde98e24fb60af35350193e4f56e11190787bee77dac"}, - {file = "websockets-16.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:71c989cbf3254fbd5e84d3bff31e4da39c43f884e64f2551d14bb3c186230f00"}, - {file = "websockets-16.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:8b6e209ffee39ff1b6d0fa7bfef6de950c60dfb91b8fcead17da4ee539121a79"}, - {file = "websockets-16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:86890e837d61574c92a97496d590968b23c2ef0aeb8a9bc9421d174cd378ae39"}, - {file = "websockets-16.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:9b5aca38b67492ef518a8ab76851862488a478602229112c4b0d58d63a7a4d5c"}, - {file = "websockets-16.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e0334872c0a37b606418ac52f6ab9cfd17317ac26365f7f65e203e2d0d0d359f"}, - {file = "websockets-16.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a0b31e0b424cc6b5a04b8838bbaec1688834b2383256688cf47eb97412531da1"}, - {file = "websockets-16.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:485c49116d0af10ac698623c513c1cc01c9446c058a4e61e3bf6c19dff7335a2"}, - {file = "websockets-16.0-cp312-cp312-win32.whl", hash = "sha256:eaded469f5e5b7294e2bdca0ab06becb6756ea86894a47806456089298813c89"}, - {file = "websockets-16.0-cp312-cp312-win_amd64.whl", hash = "sha256:5569417dc80977fc8c2d43a86f78e0a5a22fee17565d78621b6bb264a115d4ea"}, - {file = "websockets-16.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:878b336ac47938b474c8f982ac2f7266a540adc3fa4ad74ae96fea9823a02cc9"}, - {file = "websockets-16.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:52a0fec0e6c8d9a784c2c78276a48a2bdf099e4ccc2a4cad53b27718dbfd0230"}, - {file = "websockets-16.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e6578ed5b6981005df1860a56e3617f14a6c307e6a71b4fff8c48fdc50f3ed2c"}, - {file = "websockets-16.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:95724e638f0f9c350bb1c2b0a7ad0e83d9cc0c9259f3ea94e40d7b02a2179ae5"}, - {file = "websockets-16.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c0204dc62a89dc9d50d682412c10b3542d748260d743500a85c13cd1ee4bde82"}, - {file = "websockets-16.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:52ac480f44d32970d66763115edea932f1c5b1312de36df06d6b219f6741eed8"}, - {file = "websockets-16.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6e5a82b677f8f6f59e8dfc34ec06ca6b5b48bc4fcda346acd093694cc2c24d8f"}, - {file = "websockets-16.0-cp313-cp313-win32.whl", hash = "sha256:abf050a199613f64c886ea10f38b47770a65154dc37181bfaff70c160f45315a"}, - {file = "websockets-16.0-cp313-cp313-win_amd64.whl", hash = "sha256:3425ac5cf448801335d6fdc7ae1eb22072055417a96cc6b31b3861f455fbc156"}, - {file = "websockets-16.0-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:8cc451a50f2aee53042ac52d2d053d08bf89bcb31ae799cb4487587661c038a0"}, - {file = "websockets-16.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:daa3b6ff70a9241cf6c7fc9e949d41232d9d7d26fd3522b1ad2b4d62487e9904"}, - {file = "websockets-16.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:fd3cb4adb94a2a6e2b7c0d8d05cb94e6f1c81a0cf9dc2694fb65c7e8d94c42e4"}, - {file = "websockets-16.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:781caf5e8eee67f663126490c2f96f40906594cb86b408a703630f95550a8c3e"}, - {file = "websockets-16.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:caab51a72c51973ca21fa8a18bd8165e1a0183f1ac7066a182ff27107b71e1a4"}, - {file = "websockets-16.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:19c4dc84098e523fd63711e563077d39e90ec6702aff4b5d9e344a60cb3c0cb1"}, - {file = "websockets-16.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:a5e18a238a2b2249c9a9235466b90e96ae4795672598a58772dd806edc7ac6d3"}, - {file = "websockets-16.0-cp314-cp314-win32.whl", hash = "sha256:a069d734c4a043182729edd3e9f247c3b2a4035415a9172fd0f1b71658a320a8"}, - {file = "websockets-16.0-cp314-cp314-win_amd64.whl", hash = "sha256:c0ee0e63f23914732c6d7e0cce24915c48f3f1512ec1d079ed01fc629dab269d"}, - {file = "websockets-16.0-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:a35539cacc3febb22b8f4d4a99cc79b104226a756aa7400adc722e83b0d03244"}, - {file = "websockets-16.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:b784ca5de850f4ce93ec85d3269d24d4c82f22b7212023c974c401d4980ebc5e"}, - {file = "websockets-16.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:569d01a4e7fba956c5ae4fc988f0d4e187900f5497ce46339c996dbf24f17641"}, - {file = "websockets-16.0-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:50f23cdd8343b984957e4077839841146f67a3d31ab0d00e6b824e74c5b2f6e8"}, - {file = "websockets-16.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:152284a83a00c59b759697b7f9e9cddf4e3c7861dd0d964b472b70f78f89e80e"}, - {file = "websockets-16.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:bc59589ab64b0022385f429b94697348a6a234e8ce22544e3681b2e9331b5944"}, - {file = "websockets-16.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:32da954ffa2814258030e5a57bc73a3635463238e797c7375dc8091327434206"}, - {file = "websockets-16.0-cp314-cp314t-win32.whl", hash = "sha256:5a4b4cc550cb665dd8a47f868c8d04c8230f857363ad3c9caf7a0c3bf8c61ca6"}, - {file = "websockets-16.0-cp314-cp314t-win_amd64.whl", hash = "sha256:b14dc141ed6d2dde437cddb216004bcac6a1df0935d79656387bd41632ba0bbd"}, - {file = "websockets-16.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:349f83cd6c9a415428ee1005cadb5c2c56f4389bc06a9af16103c3bc3dcc8b7d"}, - {file = "websockets-16.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:4a1aba3340a8dca8db6eb5a7986157f52eb9e436b74813764241981ca4888f03"}, - {file = "websockets-16.0-pp311-pypy311_pp73-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:f4a32d1bd841d4bcbffdcb3d2ce50c09c3909fbead375ab28d0181af89fd04da"}, - {file = "websockets-16.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0298d07ee155e2e9fda5be8a9042200dd2e3bb0b8a38482156576f863a9d457c"}, - {file = "websockets-16.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:a653aea902e0324b52f1613332ddf50b00c06fdaf7e92624fbf8c77c78fa5767"}, - {file = "websockets-16.0-py3-none-any.whl", hash = "sha256:1637db62fad1dc833276dded54215f2c7fa46912301a24bd94d45d46a011ceec"}, - {file = "websockets-16.0.tar.gz", hash = "sha256:5f6261a5e56e8d5c42a4497b364ea24d94d9563e8fbd44e78ac40879c60179b5"}, -] - [[package]] name = "werkzeug" version = "3.1.6" @@ -9374,7 +8521,7 @@ test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more_it type = ["pytest-mypy"] [extras] -dev = ["antlr4-tools", "behave", "black", "black", "click-option-group", "coverage", "fastmcp", "kanbus", "mlflow", "moto", "pydantic-evals", "pytest", "pytest-asyncio", "pytest-xdist", "python-semantic-release", "ruff", "typer"] +dev = ["antlr4-tools", "behave", "black", "black", "click-option-group", "coverage", "kanbus", "mlflow", "moto", "pydantic-evals", "pytest", "pytest-asyncio", "pytest-xdist", "python-semantic-release", "ruff", "typer"] discord = ["discord.py"] email = ["aiosmtplib"] hf = ["datasets", "torch", "transformers"] @@ -9385,4 +8532,4 @@ slack = ["slack-sdk"] [metadata] lock-version = "2.1" python-versions = ">=3.10,<4.0" -content-hash = "bd15ac985213ffc9a7148234a59d5686d6c761cc04ea9d9495f336b3a2b4c6fd" +content-hash = "5c32adc3efcb48419f5d202f95ab9896bff161272a07e58d9cd4ba6c6bac579c" diff --git a/project/events/2026-04-24T16:14:16.002Z__27457ad9-9646-4c53-9778-4cf1ddd1f36f.json b/project/events/2026-04-24T16:14:16.002Z__27457ad9-9646-4c53-9778-4cf1ddd1f36f.json new file mode 100644 index 00000000..ca270d79 --- /dev/null +++ b/project/events/2026-04-24T16:14:16.002Z__27457ad9-9646-4c53-9778-4cf1ddd1f36f.json @@ -0,0 +1,18 @@ +{ + "schema_version": 1, + "event_id": "27457ad9-9646-4c53-9778-4cf1ddd1f36f", + "issue_id": "tcts-9f90547a-e362-4f52-b005-8590ca111cb3", + "event_type": "issue_created", + "occurred_at": "2026-04-24T16:14:16.002Z", + "actor_id": "derek.norrbom", + "payload": { + "assignee": null, + "description": "", + "issue_type": "sub-task", + "labels": [], + "parent": "tcts-b82842f2-1508-4d45-98ef-1017d09e100a", + "priority": 2, + "status": "open", + "title": "Isolate fastmcp into separate locked tooling env to unblock litellm upgrades" + } +} \ No newline at end of file diff --git a/project/events/2026-04-24T16:14:24.363Z__f747feef-d726-40f8-810e-d58085124b2d.json b/project/events/2026-04-24T16:14:24.363Z__f747feef-d726-40f8-810e-d58085124b2d.json new file mode 100644 index 00000000..d1269a09 --- /dev/null +++ b/project/events/2026-04-24T16:14:24.363Z__f747feef-d726-40f8-810e-d58085124b2d.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "f747feef-d726-40f8-810e-d58085124b2d", + "issue_id": "tcts-9f90547a-e362-4f52-b005-8590ca111cb3", + "event_type": "state_transition", + "occurred_at": "2026-04-24T16:14:24.363Z", + "actor_id": "derek.norrbom", + "payload": { + "from_status": "open", + "to_status": "in_progress" + } +} \ No newline at end of file diff --git a/project/events/2026-04-24T16:14:24.377Z__f7652ebd-7806-4c0a-8598-04157ff12bef.json b/project/events/2026-04-24T16:14:24.377Z__f7652ebd-7806-4c0a-8598-04157ff12bef.json new file mode 100644 index 00000000..a213f175 --- /dev/null +++ b/project/events/2026-04-24T16:14:24.377Z__f7652ebd-7806-4c0a-8598-04157ff12bef.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "f7652ebd-7806-4c0a-8598-04157ff12bef", + "issue_id": "tcts-b82842f2-1508-4d45-98ef-1017d09e100a", + "event_type": "state_transition", + "occurred_at": "2026-04-24T16:14:24.377Z", + "actor_id": "derek.norrbom", + "payload": { + "from_status": "blocked", + "to_status": "in_progress" + } +} \ No newline at end of file diff --git a/project/events/2026-04-24T16:14:24.403Z__c3ca2e15-9c08-4185-8d02-e215e18b565c.json b/project/events/2026-04-24T16:14:24.403Z__c3ca2e15-9c08-4185-8d02-e215e18b565c.json new file mode 100644 index 00000000..ac9e42a3 --- /dev/null +++ b/project/events/2026-04-24T16:14:24.403Z__c3ca2e15-9c08-4185-8d02-e215e18b565c.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "c3ca2e15-9c08-4185-8d02-e215e18b565c", + "issue_id": "tcts-9f90547a-e362-4f52-b005-8590ca111cb3", + "event_type": "comment_added", + "occurred_at": "2026-04-24T16:14:24.403Z", + "actor_id": "derek.norrbom", + "payload": { + "comment_author": "derek.norrbom", + "comment_id": "6b53a7e7-5ced-4c29-980a-509fca120527" + } +} \ No newline at end of file diff --git a/project/events/2026-04-24T16:16:25.765Z__f0d8d027-dd5b-4d26-a2e6-a022a5bb00a7.json b/project/events/2026-04-24T16:16:25.765Z__f0d8d027-dd5b-4d26-a2e6-a022a5bb00a7.json new file mode 100644 index 00000000..89ee863d --- /dev/null +++ b/project/events/2026-04-24T16:16:25.765Z__f0d8d027-dd5b-4d26-a2e6-a022a5bb00a7.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "f0d8d027-dd5b-4d26-a2e6-a022a5bb00a7", + "issue_id": "tcts-9f90547a-e362-4f52-b005-8590ca111cb3", + "event_type": "comment_added", + "occurred_at": "2026-04-24T16:16:25.765Z", + "actor_id": "derek.norrbom", + "payload": { + "comment_author": "derek.norrbom", + "comment_id": "130d60b8-9af1-46dc-99d0-1baee0101387" + } +} \ No newline at end of file diff --git a/project/events/2026-04-24T16:16:25.776Z__ebf8f895-bcf5-4070-828b-444dd2a9d819.json b/project/events/2026-04-24T16:16:25.776Z__ebf8f895-bcf5-4070-828b-444dd2a9d819.json new file mode 100644 index 00000000..16c24ff0 --- /dev/null +++ b/project/events/2026-04-24T16:16:25.776Z__ebf8f895-bcf5-4070-828b-444dd2a9d819.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "ebf8f895-bcf5-4070-828b-444dd2a9d819", + "issue_id": "tcts-9f90547a-e362-4f52-b005-8590ca111cb3", + "event_type": "state_transition", + "occurred_at": "2026-04-24T16:16:25.776Z", + "actor_id": "derek.norrbom", + "payload": { + "from_status": "in_progress", + "to_status": "closed" + } +} \ No newline at end of file diff --git a/project/events/2026-04-24T16:16:25.788Z__13e03c66-4ba3-4c73-8f50-8ebe4be00668.json b/project/events/2026-04-24T16:16:25.788Z__13e03c66-4ba3-4c73-8f50-8ebe4be00668.json new file mode 100644 index 00000000..eae3f205 --- /dev/null +++ b/project/events/2026-04-24T16:16:25.788Z__13e03c66-4ba3-4c73-8f50-8ebe4be00668.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "13e03c66-4ba3-4c73-8f50-8ebe4be00668", + "issue_id": "tcts-b82842f2-1508-4d45-98ef-1017d09e100a", + "event_type": "comment_added", + "occurred_at": "2026-04-24T16:16:25.788Z", + "actor_id": "derek.norrbom", + "payload": { + "comment_author": "derek.norrbom", + "comment_id": "892f64b9-111d-4795-ae40-46830edf25fd" + } +} \ No newline at end of file diff --git a/project/events/2026-04-24T16:16:25.798Z__5b8c8cd3-ce5b-432a-9da1-3aa1b5402a97.json b/project/events/2026-04-24T16:16:25.798Z__5b8c8cd3-ce5b-432a-9da1-3aa1b5402a97.json new file mode 100644 index 00000000..d954413d --- /dev/null +++ b/project/events/2026-04-24T16:16:25.798Z__5b8c8cd3-ce5b-432a-9da1-3aa1b5402a97.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "5b8c8cd3-ce5b-432a-9da1-3aa1b5402a97", + "issue_id": "tcts-b82842f2-1508-4d45-98ef-1017d09e100a", + "event_type": "state_transition", + "occurred_at": "2026-04-24T16:16:25.798Z", + "actor_id": "derek.norrbom", + "payload": { + "from_status": "in_progress", + "to_status": "blocked" + } +} \ No newline at end of file diff --git a/project/issues/tcts-9f90547a-e362-4f52-b005-8590ca111cb3.json b/project/issues/tcts-9f90547a-e362-4f52-b005-8590ca111cb3.json new file mode 100644 index 00000000..8d3aad2b --- /dev/null +++ b/project/issues/tcts-9f90547a-e362-4f52-b005-8590ca111cb3.json @@ -0,0 +1,31 @@ +{ + "id": "tcts-9f90547a-e362-4f52-b005-8590ca111cb3", + "title": "Isolate fastmcp into separate locked tooling env to unblock litellm upgrades", + "description": "", + "type": "sub-task", + "status": "closed", + "priority": 2, + "assignee": null, + "creator": null, + "parent": "tcts-b82842f2-1508-4d45-98ef-1017d09e100a", + "labels": [], + "dependencies": [], + "comments": [ + { + "id": "6b53a7e7-5ced-4c29-980a-509fca120527", + "author": "derek.norrbom", + "text": "Implementing dependency-domain split: move fastmcp out of root dev extras into a separate locked tooling project, then upgrade root litellm to fixed version and verify with Snyk. Aim is to remove resolver conflict while preserving CI behavior.", + "created_at": "2026-04-24T16:14:24.402841Z" + }, + { + "id": "130d60b8-9af1-46dc-99d0-1baee0101387", + "author": "derek.norrbom", + "text": "Completed: fastmcp is now isolated in tools/mcp-fixtures with its own Poetry lock, removed from root dev extras, and CI gets a dedicated isolated validation step. Root litellm successfully upgraded to 1.83.7 after split. Validation: make mcp-fixtures-smoke, snyk test (high), pytest tests/dspy/test_config.py -q.", + "created_at": "2026-04-24T16:16:25.765107Z" + } + ], + "created_at": "2026-04-24T16:14:16.002334Z", + "updated_at": "2026-04-24T16:16:25.776395Z", + "closed_at": "2026-04-24T16:16:25.776395Z", + "custom": {} +} \ No newline at end of file diff --git a/project/issues/tcts-b82842f2-1508-4d45-98ef-1017d09e100a.json b/project/issues/tcts-b82842f2-1508-4d45-98ef-1017d09e100a.json index e38d2308..7667ec95 100644 --- a/project/issues/tcts-b82842f2-1508-4d45-98ef-1017d09e100a.json +++ b/project/issues/tcts-b82842f2-1508-4d45-98ef-1017d09e100a.json @@ -73,10 +73,16 @@ "author": "derek.norrbom", "text": "Medium-severity pass complete using parent-first upgrades in pyproject/lock: bumped direct dependency pypdf to >=6.10.2 in pyproject.toml and refreshed lock for pypdf, requests, and pygments (now pypdf 6.10.2, requests 2.33.1, pygments 2.20.0). Fresh Snyk low-threshold scan no longer reports medium findings; remaining issues are the known high blockers (litellm advisory with dotenv conflict and diskcache via dspy).", "created_at": "2026-04-23T22:38:17.341659Z" + }, + { + "id": "892f64b9-111d-4795-ae40-46830edf25fd", + "author": "derek.norrbom", + "text": "Update after fastmcp isolation: root litellm upgrade is now unblocked and applied (1.83.0 -> 1.83.7). Fresh Snyk high scan now reports only no-patch findings: diskcache via dspy (tracked in tcts-2fadc6) and litellm arbitrary-code-injection advisory with no direct patch path. Keeping parent task blocked pending mitigation/risk-acceptance decision for no-patch issues.", + "created_at": "2026-04-24T16:16:25.787823Z" } ], "created_at": "2026-04-14T17:12:28.832621Z", - "updated_at": "2026-04-23T22:38:17.352262Z", + "updated_at": "2026-04-24T16:16:25.797928Z", "closed_at": null, "custom": { "snyk_category": "dependency", diff --git a/pyproject.toml b/pyproject.toml index 4caa1433..74b5bddd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,7 +32,7 @@ dependencies = [ "pydantic-ai-slim==1.56.0", "griffe<2", "logfire>=4.20.0", - "litellm==1.83.0", + "litellm==1.83.7", "aiohttp>=3.13.4", "opentelemetry-api>=1.39.1", "opentelemetry-sdk>=1.39.1", @@ -84,7 +84,6 @@ dev = [ # Reduce resolver search by pinning transitive CLI deps "click-option-group>=0.5.8,<0.6", "antlr4-tools>=0.2.1", - "fastmcp>=3.1.0,<3.2.0; python_version >= '3.10'", "pydantic-evals==1.56.0", "moto>=5.0", "typer>=0.12", diff --git a/tools/mcp-fixtures/README.md b/tools/mcp-fixtures/README.md new file mode 100644 index 00000000..16424751 --- /dev/null +++ b/tools/mcp-fixtures/README.md @@ -0,0 +1,17 @@ +# MCP Fixtures Environment + +This directory contains an isolated Python dependency environment for MCP test fixtures. + +Why this exists: +- `fastmcp` currently requires `python-dotenv>=1.1.0` +- root `litellm` security-fixed versions require `python-dotenv==1.0.1` +- keeping `fastmcp` outside the root lock avoids resolver conflicts and lets root security remediation proceed + +Usage: +```bash +cd tools/mcp-fixtures +python3 -m poetry install +python3 -m poetry run python -c "import fastmcp; print(fastmcp.__version__)" +``` + +The root project should not depend on this environment for standard runtime/release installs. diff --git a/tools/mcp-fixtures/poetry.lock b/tools/mcp-fixtures/poetry.lock new file mode 100644 index 00000000..6140b1b3 --- /dev/null +++ b/tools/mcp-fixtures/poetry.lock @@ -0,0 +1,2052 @@ +# This file is automatically @generated by Poetry 2.3.3 and should not be changed by hand. + +[[package]] +name = "aiofile" +version = "3.9.0" +description = "Asynchronous file operations." +optional = false +python-versions = "<4,>=3.8" +groups = ["main"] +files = [ + {file = "aiofile-3.9.0-py3-none-any.whl", hash = "sha256:ce2f6c1571538cbdfa0143b04e16b208ecb0e9cb4148e528af8a640ed51cc8aa"}, + {file = "aiofile-3.9.0.tar.gz", hash = "sha256:e5ad718bb148b265b6df1b3752c4d1d83024b93da9bd599df74b9d9ffcf7919b"}, +] + +[package.dependencies] +caio = ">=0.9.0,<0.10.0" + +[[package]] +name = "annotated-types" +version = "0.7.0" +description = "Reusable constraint types to use with typing.Annotated" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, + {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, +] + +[[package]] +name = "anyio" +version = "4.13.0" +description = "High-level concurrency and networking framework on top of asyncio or Trio" +optional = false +python-versions = ">=3.10" +groups = ["main"] +files = [ + {file = "anyio-4.13.0-py3-none-any.whl", hash = "sha256:08b310f9e24a9594186fd75b4f73f4a4152069e3853f1ed8bfbf58369f4ad708"}, + {file = "anyio-4.13.0.tar.gz", hash = "sha256:334b70e641fd2221c1505b3890c69882fe4a2df910cba14d97019b90b24439dc"}, +] + +[package.dependencies] +exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} +idna = ">=2.8" +typing_extensions = {version = ">=4.5", markers = "python_version < \"3.13\""} + +[package.extras] +trio = ["trio (>=0.32.0)"] + +[[package]] +name = "attrs" +version = "26.1.0" +description = "Classes Without Boilerplate" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "attrs-26.1.0-py3-none-any.whl", hash = "sha256:c647aa4a12dfbad9333ca4e71fe62ddc36f4e63b2d260a37a8b83d2f043ac309"}, + {file = "attrs-26.1.0.tar.gz", hash = "sha256:d03ceb89cb322a8fd706d4fb91940737b6642aa36998fe130a9bc96c985eff32"}, +] + +[[package]] +name = "authlib" +version = "1.7.0" +description = "The ultimate Python library in building OAuth and OpenID Connect servers and clients." +optional = false +python-versions = ">=3.10" +groups = ["main"] +files = [ + {file = "authlib-1.7.0-py2.py3-none-any.whl", hash = "sha256:e36817afb02f6f0b6bf55f150782499ddd6ddf44b402bb055d3263cc65ac9ae0"}, + {file = "authlib-1.7.0.tar.gz", hash = "sha256:b3e326c9aa9cc3ea95fe7d89fd880722d3608da4d00e8a27e061e64b48d801d5"}, +] + +[package.dependencies] +cryptography = "*" +joserfc = ">=1.6.0" + +[[package]] +name = "backports-tarfile" +version = "1.2.0" +description = "Backport of CPython tarfile module" +optional = false +python-versions = ">=3.8" +groups = ["main"] +markers = "python_version < \"3.12\"" +files = [ + {file = "backports.tarfile-1.2.0-py3-none-any.whl", hash = "sha256:77e284d754527b01fb1e6fa8a1afe577858ebe4e9dad8919e34c862cb399bc34"}, + {file = "backports_tarfile-1.2.0.tar.gz", hash = "sha256:d75e02c268746e1b8144c278978b6e98e85de6ad16f8e4b0844a154557eca991"}, +] + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9.3)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["jaraco.test", "pytest (!=8.0.*)", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)"] + +[[package]] +name = "beartype" +version = "0.22.9" +description = "Unbearably fast near-real-time pure-Python runtime-static type-checker." +optional = false +python-versions = ">=3.10" +groups = ["main"] +files = [ + {file = "beartype-0.22.9-py3-none-any.whl", hash = "sha256:d16c9bbc61ea14637596c5f6fbff2ee99cbe3573e46a716401734ef50c3060c2"}, + {file = "beartype-0.22.9.tar.gz", hash = "sha256:8f82b54aa723a2848a56008d18875f91c1db02c32ef6a62319a002e3e25a975f"}, +] + +[package.extras] +dev = ["autoapi (>=0.9.0)", "celery", "click", "coverage (>=5.5)", "docutils (>=0.22.0)", "equinox ; sys_platform == \"linux\" and python_version < \"3.15.0\"", "fastmcp ; python_version < \"3.14.0\"", "jax[cpu] ; sys_platform == \"linux\" and python_version < \"3.15.0\"", "jaxtyping ; sys_platform == \"linux\"", "langchain ; python_version < \"3.14.0\" and sys_platform != \"darwin\" and platform_python_implementation != \"PyPy\"", "mypy (>=0.800) ; platform_python_implementation != \"PyPy\"", "nuitka (>=1.2.6) ; sys_platform == \"linux\" and python_version < \"3.14.0\"", "numba ; python_version < \"3.14.0\"", "numpy ; python_version < \"3.15.0\" and sys_platform != \"darwin\" and platform_python_implementation != \"PyPy\"", "pandera (>=0.26.0) ; python_version < \"3.14.0\"", "poetry", "polars ; python_version < \"3.14.0\"", "pydata-sphinx-theme (<=0.7.2)", "pygments", "pyinstaller", "pyright (>=1.1.370)", "pytest (>=6.2.0)", "redis", "rich-click", "setuptools", "sphinx", "sphinx (>=4.2.0,<6.0.0)", "sphinxext-opengraph (>=0.7.5)", "sqlalchemy", "torch ; sys_platform == \"linux\" and python_version < \"3.14.0\"", "tox (>=3.20.1)", "typer", "typing-extensions (>=3.10.0.0)", "xarray ; python_version < \"3.15.0\""] +doc-ghp = ["mkdocs-material[imaging] (>=9.6.0)", "mkdocstrings-python (>=1.16.0)", "mkdocstrings-python-xref (>=1.16.0)"] +doc-rtd = ["autoapi (>=0.9.0)", "pydata-sphinx-theme (<=0.7.2)", "setuptools", "sphinx (>=4.2.0,<6.0.0)", "sphinxext-opengraph (>=0.7.5)"] +test = ["celery", "click", "coverage (>=5.5)", "docutils (>=0.22.0)", "equinox ; sys_platform == \"linux\" and python_version < \"3.15.0\"", "fastmcp ; python_version < \"3.14.0\"", "jax[cpu] ; sys_platform == \"linux\" and python_version < \"3.15.0\"", "jaxtyping ; sys_platform == \"linux\"", "langchain ; python_version < \"3.14.0\" and sys_platform != \"darwin\" and platform_python_implementation != \"PyPy\"", "mypy (>=0.800) ; platform_python_implementation != \"PyPy\"", "nuitka (>=1.2.6) ; sys_platform == \"linux\" and python_version < \"3.14.0\"", "numba ; python_version < \"3.14.0\"", "numpy ; python_version < \"3.15.0\" and sys_platform != \"darwin\" and platform_python_implementation != \"PyPy\"", "pandera (>=0.26.0) ; python_version < \"3.14.0\"", "poetry", "polars ; python_version < \"3.14.0\"", "pygments", "pyinstaller", "pyright (>=1.1.370)", "pytest (>=6.2.0)", "redis", "rich-click", "sphinx", "sqlalchemy", "torch ; sys_platform == \"linux\" and python_version < \"3.14.0\"", "tox (>=3.20.1)", "typer", "typing-extensions (>=3.10.0.0)", "xarray ; python_version < \"3.15.0\""] +test-tox = ["celery", "click", "docutils (>=0.22.0)", "equinox ; sys_platform == \"linux\" and python_version < \"3.15.0\"", "fastmcp ; python_version < \"3.14.0\"", "jax[cpu] ; sys_platform == \"linux\" and python_version < \"3.15.0\"", "jaxtyping ; sys_platform == \"linux\"", "langchain ; python_version < \"3.14.0\" and sys_platform != \"darwin\" and platform_python_implementation != \"PyPy\"", "mypy (>=0.800) ; platform_python_implementation != \"PyPy\"", "nuitka (>=1.2.6) ; sys_platform == \"linux\" and python_version < \"3.14.0\"", "numba ; python_version < \"3.14.0\"", "numpy ; python_version < \"3.15.0\" and sys_platform != \"darwin\" and platform_python_implementation != \"PyPy\"", "pandera (>=0.26.0) ; python_version < \"3.14.0\"", "poetry", "polars ; python_version < \"3.14.0\"", "pygments", "pyinstaller", "pyright (>=1.1.370)", "pytest (>=6.2.0)", "redis", "rich-click", "sphinx", "sqlalchemy", "torch ; sys_platform == \"linux\" and python_version < \"3.14.0\"", "typer", "typing-extensions (>=3.10.0.0)", "xarray ; python_version < \"3.15.0\""] +test-tox-coverage = ["coverage (>=5.5)"] + +[[package]] +name = "cachetools" +version = "7.0.6" +description = "Extensible memoizing collections and decorators" +optional = false +python-versions = ">=3.10" +groups = ["main"] +files = [ + {file = "cachetools-7.0.6-py3-none-any.whl", hash = "sha256:4e94956cfdd3086f12042cdd29318f5ced3893014f7d0d059bf3ead3f85b7f8b"}, + {file = "cachetools-7.0.6.tar.gz", hash = "sha256:e5d524d36d65703a87243a26ff08ad84f73352adbeafb1cde81e207b456aaf24"}, +] + +[[package]] +name = "caio" +version = "0.9.25" +description = "Asynchronous file IO for Linux MacOS or Windows." +optional = false +python-versions = ">=3.10" +groups = ["main"] +files = [ + {file = "caio-0.9.25-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ca6c8ecda611478b6016cb94d23fd3eb7124852b985bdec7ecaad9f3116b9619"}, + {file = "caio-0.9.25-cp310-cp310-manylinux2010_x86_64.manylinux2014_x86_64.manylinux_2_12_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:db9b5681e4af8176159f0d6598e73b2279bb661e718c7ac23342c550bd78c241"}, + {file = "caio-0.9.25-cp310-cp310-manylinux_2_34_aarch64.whl", hash = "sha256:bf61d7d0c4fd10ffdd98ca47f7e8db4d7408e74649ffaf4bef40b029ada3c21b"}, + {file = "caio-0.9.25-cp310-cp310-manylinux_2_34_x86_64.whl", hash = "sha256:ab52e5b643f8bbd64a0605d9412796cd3464cb8ca88593b13e95a0f0b10508ae"}, + {file = "caio-0.9.25-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d6956d9e4a27021c8bd6c9677f3a59eb1d820cc32d0343cea7961a03b1371965"}, + {file = "caio-0.9.25-cp311-cp311-manylinux2010_x86_64.manylinux2014_x86_64.manylinux_2_12_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:bf84bfa039f25ad91f4f52944452a5f6f405e8afab4d445450978cd6241d1478"}, + {file = "caio-0.9.25-cp311-cp311-manylinux_2_34_aarch64.whl", hash = "sha256:ae3d62587332bce600f861a8de6256b1014d6485cfd25d68c15caf1611dd1f7c"}, + {file = "caio-0.9.25-cp311-cp311-manylinux_2_34_x86_64.whl", hash = "sha256:fc220b8533dcf0f238a6b1a4a937f92024c71e7b10b5a2dfc1c73604a25709bc"}, + {file = "caio-0.9.25-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:fb7ff95af4c31ad3f03179149aab61097a71fd85e05f89b4786de0359dffd044"}, + {file = "caio-0.9.25-cp312-cp312-manylinux2010_x86_64.manylinux2014_x86_64.manylinux_2_12_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:97084e4e30dfa598449d874c4d8e0c8d5ea17d2f752ef5e48e150ff9d240cd64"}, + {file = "caio-0.9.25-cp312-cp312-manylinux_2_34_aarch64.whl", hash = "sha256:4fa69eba47e0f041b9d4f336e2ad40740681c43e686b18b191b6c5f4c5544bfb"}, + {file = "caio-0.9.25-cp312-cp312-manylinux_2_34_x86_64.whl", hash = "sha256:6bebf6f079f1341d19f7386db9b8b1f07e8cc15ae13bfdaff573371ba0575d69"}, + {file = "caio-0.9.25-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:d6c2a3411af97762a2b03840c3cec2f7f728921ff8adda53d7ea2315a8563451"}, + {file = "caio-0.9.25-cp313-cp313-manylinux2010_x86_64.manylinux2014_x86_64.manylinux_2_12_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0998210a4d5cd5cb565b32ccfe4e53d67303f868a76f212e002a8554692870e6"}, + {file = "caio-0.9.25-cp313-cp313-manylinux_2_34_aarch64.whl", hash = "sha256:1a177d4777141b96f175fe2c37a3d96dec7911ed9ad5f02bac38aaa1c936611f"}, + {file = "caio-0.9.25-cp313-cp313-manylinux_2_34_x86_64.whl", hash = "sha256:9ed3cfb28c0e99fec5e208c934e5c157d0866aa9c32aa4dc5e9b6034af6286b7"}, + {file = "caio-0.9.25-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:fab6078b9348e883c80a5e14b382e6ad6aabbc4429ca034e76e730cf464269db"}, + {file = "caio-0.9.25-cp314-cp314-manylinux2010_x86_64.manylinux2014_x86_64.manylinux_2_12_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:44a6b58e52d488c75cfaa5ecaa404b2b41cc965e6c417e03251e868ecd5b6d77"}, + {file = "caio-0.9.25-cp314-cp314-manylinux_2_34_aarch64.whl", hash = "sha256:628a630eb7fb22381dd8e3c8ab7f59e854b9c806639811fc3f4310c6bd711d79"}, + {file = "caio-0.9.25-cp314-cp314-manylinux_2_34_x86_64.whl", hash = "sha256:0ba16aa605ccb174665357fc729cf500679c2d94d5f1458a6f0d5ca48f2060a7"}, + {file = "caio-0.9.25-py3-none-any.whl", hash = "sha256:06c0bb02d6b929119b1cfbe1ca403c768b2013a369e2db46bfa2a5761cf82e40"}, + {file = "caio-0.9.25.tar.gz", hash = "sha256:16498e7f81d1d0f5a4c0ad3f2540e65fe25691376e0a5bd367f558067113ed10"}, +] + +[package.extras] +develop = ["aiomisc-pytest", "coveralls", "pylama[toml]", "pytest", "pytest-cov", "setuptools"] + +[[package]] +name = "certifi" +version = "2026.4.22" +description = "Python package for providing Mozilla's CA Bundle." +optional = false +python-versions = ">=3.7" +groups = ["main"] +files = [ + {file = "certifi-2026.4.22-py3-none-any.whl", hash = "sha256:3cb2210c8f88ba2318d29b0388d1023c8492ff72ecdde4ebdaddbb13a31b1c4a"}, + {file = "certifi-2026.4.22.tar.gz", hash = "sha256:8d455352a37b71bf76a79caa83a3d6c25afee4a385d632127b6afb3963f1c580"}, +] + +[[package]] +name = "cffi" +version = "2.0.0" +description = "Foreign Function Interface for Python calling C code." +optional = false +python-versions = ">=3.9" +groups = ["main"] +markers = "platform_python_implementation != \"PyPy\"" +files = [ + {file = "cffi-2.0.0-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:0cf2d91ecc3fcc0625c2c530fe004f82c110405f101548512cce44322fa8ac44"}, + {file = "cffi-2.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f73b96c41e3b2adedc34a7356e64c8eb96e03a3782b535e043a986276ce12a49"}, + {file = "cffi-2.0.0-cp310-cp310-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:53f77cbe57044e88bbd5ed26ac1d0514d2acf0591dd6bb02a3ae37f76811b80c"}, + {file = "cffi-2.0.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3e837e369566884707ddaf85fc1744b47575005c0a229de3327f8f9a20f4efeb"}, + {file = "cffi-2.0.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:5eda85d6d1879e692d546a078b44251cdd08dd1cfb98dfb77b670c97cee49ea0"}, + {file = "cffi-2.0.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:9332088d75dc3241c702d852d4671613136d90fa6881da7d770a483fd05248b4"}, + {file = "cffi-2.0.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fc7de24befaeae77ba923797c7c87834c73648a05a4bde34b3b7e5588973a453"}, + {file = "cffi-2.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cf364028c016c03078a23b503f02058f1814320a56ad535686f90565636a9495"}, + {file = "cffi-2.0.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e11e82b744887154b182fd3e7e8512418446501191994dbf9c9fc1f32cc8efd5"}, + {file = "cffi-2.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8ea985900c5c95ce9db1745f7933eeef5d314f0565b27625d9a10ec9881e1bfb"}, + {file = "cffi-2.0.0-cp310-cp310-win32.whl", hash = "sha256:1f72fb8906754ac8a2cc3f9f5aaa298070652a0ffae577e0ea9bd480dc3c931a"}, + {file = "cffi-2.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:b18a3ed7d5b3bd8d9ef7a8cb226502c6bf8308df1525e1cc676c3680e7176739"}, + {file = "cffi-2.0.0-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:b4c854ef3adc177950a8dfc81a86f5115d2abd545751a304c5bcf2c2c7283cfe"}, + {file = "cffi-2.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2de9a304e27f7596cd03d16f1b7c72219bd944e99cc52b84d0145aefb07cbd3c"}, + {file = "cffi-2.0.0-cp311-cp311-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:baf5215e0ab74c16e2dd324e8ec067ef59e41125d3eade2b863d294fd5035c92"}, + {file = "cffi-2.0.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:730cacb21e1bdff3ce90babf007d0a0917cc3e6492f336c2f0134101e0944f93"}, + {file = "cffi-2.0.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:6824f87845e3396029f3820c206e459ccc91760e8fa24422f8b0c3d1731cbec5"}, + {file = "cffi-2.0.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:9de40a7b0323d889cf8d23d1ef214f565ab154443c42737dfe52ff82cf857664"}, + {file = "cffi-2.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8941aaadaf67246224cee8c3803777eed332a19d909b47e29c9842ef1e79ac26"}, + {file = "cffi-2.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a05d0c237b3349096d3981b727493e22147f934b20f6f125a3eba8f994bec4a9"}, + {file = "cffi-2.0.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:94698a9c5f91f9d138526b48fe26a199609544591f859c870d477351dc7b2414"}, + {file = "cffi-2.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:5fed36fccc0612a53f1d4d9a816b50a36702c28a2aa880cb8a122b3466638743"}, + {file = "cffi-2.0.0-cp311-cp311-win32.whl", hash = "sha256:c649e3a33450ec82378822b3dad03cc228b8f5963c0c12fc3b1e0ab940f768a5"}, + {file = "cffi-2.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:66f011380d0e49ed280c789fbd08ff0d40968ee7b665575489afa95c98196ab5"}, + {file = "cffi-2.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:c6638687455baf640e37344fe26d37c404db8b80d037c3d29f58fe8d1c3b194d"}, + {file = "cffi-2.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d02d6655b0e54f54c4ef0b94eb6be0607b70853c45ce98bd278dc7de718be5d"}, + {file = "cffi-2.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8eca2a813c1cb7ad4fb74d368c2ffbbb4789d377ee5bb8df98373c2cc0dee76c"}, + {file = "cffi-2.0.0-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:21d1152871b019407d8ac3985f6775c079416c282e431a4da6afe7aefd2bccbe"}, + {file = "cffi-2.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b21e08af67b8a103c71a250401c78d5e0893beff75e28c53c98f4de42f774062"}, + {file = "cffi-2.0.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:1e3a615586f05fc4065a8b22b8152f0c1b00cdbc60596d187c2a74f9e3036e4e"}, + {file = "cffi-2.0.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:81afed14892743bbe14dacb9e36d9e0e504cd204e0b165062c488942b9718037"}, + {file = "cffi-2.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba"}, + {file = "cffi-2.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3925dd22fa2b7699ed2617149842d2e6adde22b262fcbfada50e3d195e4b3a94"}, + {file = "cffi-2.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2c8f814d84194c9ea681642fd164267891702542f028a15fc97d4674b6206187"}, + {file = "cffi-2.0.0-cp312-cp312-win32.whl", hash = "sha256:da902562c3e9c550df360bfa53c035b2f241fed6d9aef119048073680ace4a18"}, + {file = "cffi-2.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:da68248800ad6320861f129cd9c1bf96ca849a2771a59e0344e88681905916f5"}, + {file = "cffi-2.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:4671d9dd5ec934cb9a73e7ee9676f9362aba54f7f34910956b84d727b0d73fb6"}, + {file = "cffi-2.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb"}, + {file = "cffi-2.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca"}, + {file = "cffi-2.0.0-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b"}, + {file = "cffi-2.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b"}, + {file = "cffi-2.0.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2"}, + {file = "cffi-2.0.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3"}, + {file = "cffi-2.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26"}, + {file = "cffi-2.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c"}, + {file = "cffi-2.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b"}, + {file = "cffi-2.0.0-cp313-cp313-win32.whl", hash = "sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27"}, + {file = "cffi-2.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75"}, + {file = "cffi-2.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91"}, + {file = "cffi-2.0.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fc33c5141b55ed366cfaad382df24fe7dcbc686de5be719b207bb248e3053dc5"}, + {file = "cffi-2.0.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c654de545946e0db659b3400168c9ad31b5d29593291482c43e3564effbcee13"}, + {file = "cffi-2.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:24b6f81f1983e6df8db3adc38562c83f7d4a0c36162885ec7f7b77c7dcbec97b"}, + {file = "cffi-2.0.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:12873ca6cb9b0f0d3a0da705d6086fe911591737a59f28b7936bdfed27c0d47c"}, + {file = "cffi-2.0.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:d9b97165e8aed9272a6bb17c01e3cc5871a594a446ebedc996e2397a1c1ea8ef"}, + {file = "cffi-2.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:afb8db5439b81cf9c9d0c80404b60c3cc9c3add93e114dcae767f1477cb53775"}, + {file = "cffi-2.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:737fe7d37e1a1bffe70bd5754ea763a62a066dc5913ca57e957824b72a85e205"}, + {file = "cffi-2.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:38100abb9d1b1435bc4cc340bb4489635dc2f0da7456590877030c9b3d40b0c1"}, + {file = "cffi-2.0.0-cp314-cp314-win32.whl", hash = "sha256:087067fa8953339c723661eda6b54bc98c5625757ea62e95eb4898ad5e776e9f"}, + {file = "cffi-2.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:203a48d1fb583fc7d78a4c6655692963b860a417c0528492a6bc21f1aaefab25"}, + {file = "cffi-2.0.0-cp314-cp314-win_arm64.whl", hash = "sha256:dbd5c7a25a7cb98f5ca55d258b103a2054f859a46ae11aaf23134f9cc0d356ad"}, + {file = "cffi-2.0.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9a67fc9e8eb39039280526379fb3a70023d77caec1852002b4da7e8b270c4dd9"}, + {file = "cffi-2.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7a66c7204d8869299919db4d5069a82f1561581af12b11b3c9f48c584eb8743d"}, + {file = "cffi-2.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7cc09976e8b56f8cebd752f7113ad07752461f48a58cbba644139015ac24954c"}, + {file = "cffi-2.0.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:92b68146a71df78564e4ef48af17551a5ddd142e5190cdf2c5624d0c3ff5b2e8"}, + {file = "cffi-2.0.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:b1e74d11748e7e98e2f426ab176d4ed720a64412b6a15054378afdb71e0f37dc"}, + {file = "cffi-2.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:28a3a209b96630bca57cce802da70c266eb08c6e97e5afd61a75611ee6c64592"}, + {file = "cffi-2.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:7553fb2090d71822f02c629afe6042c299edf91ba1bf94951165613553984512"}, + {file = "cffi-2.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6c6c373cfc5c83a975506110d17457138c8c63016b563cc9ed6e056a82f13ce4"}, + {file = "cffi-2.0.0-cp314-cp314t-win32.whl", hash = "sha256:1fc9ea04857caf665289b7a75923f2c6ed559b8298a1b8c49e59f7dd95c8481e"}, + {file = "cffi-2.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:d68b6cef7827e8641e8ef16f4494edda8b36104d79773a334beaa1e3521430f6"}, + {file = "cffi-2.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9"}, + {file = "cffi-2.0.0-cp39-cp39-macosx_10_13_x86_64.whl", hash = "sha256:fe562eb1a64e67dd297ccc4f5addea2501664954f2692b69a76449ec7913ecbf"}, + {file = "cffi-2.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:de8dad4425a6ca6e4e5e297b27b5c824ecc7581910bf9aee86cb6835e6812aa7"}, + {file = "cffi-2.0.0-cp39-cp39-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:4647afc2f90d1ddd33441e5b0e85b16b12ddec4fca55f0d9671fef036ecca27c"}, + {file = "cffi-2.0.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3f4d46d8b35698056ec29bca21546e1551a205058ae1a181d871e278b0b28165"}, + {file = "cffi-2.0.0-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:e6e73b9e02893c764e7e8d5bb5ce277f1a009cd5243f8228f75f842bf937c534"}, + {file = "cffi-2.0.0-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:cb527a79772e5ef98fb1d700678fe031e353e765d1ca2d409c92263c6d43e09f"}, + {file = "cffi-2.0.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:61d028e90346df14fedc3d1e5441df818d095f3b87d286825dfcbd6459b7ef63"}, + {file = "cffi-2.0.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:0f6084a0ea23d05d20c3edcda20c3d006f9b6f3fefeac38f59262e10cef47ee2"}, + {file = "cffi-2.0.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:1cd13c99ce269b3ed80b417dcd591415d3372bcac067009b6e0f59c7d4015e65"}, + {file = "cffi-2.0.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:89472c9762729b5ae1ad974b777416bfda4ac5642423fa93bd57a09204712322"}, + {file = "cffi-2.0.0-cp39-cp39-win32.whl", hash = "sha256:2081580ebb843f759b9f617314a24ed5738c51d2aee65d31e02f6f7a2b97707a"}, + {file = "cffi-2.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:b882b3df248017dba09d6b16defe9b5c407fe32fc7c65a9c69798e6175601be9"}, + {file = "cffi-2.0.0.tar.gz", hash = "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529"}, +] + +[package.dependencies] +pycparser = {version = "*", markers = "implementation_name != \"PyPy\""} + +[[package]] +name = "click" +version = "8.3.3" +description = "Composable command line interface toolkit" +optional = false +python-versions = ">=3.10" +groups = ["main"] +files = [ + {file = "click-8.3.3-py3-none-any.whl", hash = "sha256:a2bf429bb3033c89fa4936ffb35d5cb471e3719e1f3c8a7c3fff0b8314305613"}, + {file = "click-8.3.3.tar.gz", hash = "sha256:398329ad4837b2ff7cbe1dd166a4c0f8900c3ca3a218de04466f38f6497f18a2"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[[package]] +name = "colorama" +version = "0.4.6" +description = "Cross-platform colored terminal text." +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +groups = ["main", "dev"] +files = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] +markers = {main = "platform_system == \"Windows\"", dev = "sys_platform == \"win32\""} + +[[package]] +name = "cryptography" +version = "46.0.7" +description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." +optional = false +python-versions = "!=3.9.0,!=3.9.1,>=3.8" +groups = ["main"] +files = [ + {file = "cryptography-46.0.7-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:ea42cbe97209df307fdc3b155f1b6fa2577c0defa8f1f7d3be7d31d189108ad4"}, + {file = "cryptography-46.0.7-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b36a4695e29fe69215d75960b22577197aca3f7a25b9cf9d165dcfe9d80bc325"}, + {file = "cryptography-46.0.7-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5ad9ef796328c5e3c4ceed237a183f5d41d21150f972455a9d926593a1dcb308"}, + {file = "cryptography-46.0.7-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:73510b83623e080a2c35c62c15298096e2a5dc8d51c3b4e1740211839d0dea77"}, + {file = "cryptography-46.0.7-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:cbd5fb06b62bd0721e1170273d3f4d5a277044c47ca27ee257025146c34cbdd1"}, + {file = "cryptography-46.0.7-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:420b1e4109cc95f0e5700eed79908cef9268265c773d3a66f7af1eef53d409ef"}, + {file = "cryptography-46.0.7-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:24402210aa54baae71d99441d15bb5a1919c195398a87b563df84468160a65de"}, + {file = "cryptography-46.0.7-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:8a469028a86f12eb7d2fe97162d0634026d92a21f3ae0ac87ed1c4a447886c83"}, + {file = "cryptography-46.0.7-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:9694078c5d44c157ef3162e3bf3946510b857df5a3955458381d1c7cfc143ddb"}, + {file = "cryptography-46.0.7-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:42a1e5f98abb6391717978baf9f90dc28a743b7d9be7f0751a6f56a75d14065b"}, + {file = "cryptography-46.0.7-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:91bbcb08347344f810cbe49065914fe048949648f6bd5c2519f34619142bbe85"}, + {file = "cryptography-46.0.7-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5d1c02a14ceb9148cc7816249f64f623fbfee39e8c03b3650d842ad3f34d637e"}, + {file = "cryptography-46.0.7-cp311-abi3-win32.whl", hash = "sha256:d23c8ca48e44ee015cd0a54aeccdf9f09004eba9fc96f38c911011d9ff1bd457"}, + {file = "cryptography-46.0.7-cp311-abi3-win_amd64.whl", hash = "sha256:397655da831414d165029da9bc483bed2fe0e75dde6a1523ec2fe63f3c46046b"}, + {file = "cryptography-46.0.7-cp314-cp314t-macosx_10_9_universal2.whl", hash = "sha256:d151173275e1728cf7839aaa80c34fe550c04ddb27b34f48c232193df8db5842"}, + {file = "cryptography-46.0.7-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:db0f493b9181c7820c8134437eb8b0b4792085d37dbb24da050476ccb664e59c"}, + {file = "cryptography-46.0.7-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ebd6daf519b9f189f85c479427bbd6e9c9037862cf8fe89ee35503bd209ed902"}, + {file = "cryptography-46.0.7-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:b7b412817be92117ec5ed95f880defe9cf18a832e8cafacf0a22337dc1981b4d"}, + {file = "cryptography-46.0.7-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:fbfd0e5f273877695cb93baf14b185f4878128b250cc9f8e617ea0c025dfb022"}, + {file = "cryptography-46.0.7-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:ffca7aa1d00cf7d6469b988c581598f2259e46215e0140af408966a24cf086ce"}, + {file = "cryptography-46.0.7-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:60627cf07e0d9274338521205899337c5d18249db56865f943cbe753aa96f40f"}, + {file = "cryptography-46.0.7-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:80406c3065e2c55d7f49a9550fe0c49b3f12e5bfff5dedb727e319e1afb9bf99"}, + {file = "cryptography-46.0.7-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:c5b1ccd1239f48b7151a65bc6dd54bcfcc15e028c8ac126d3fada09db0e07ef1"}, + {file = "cryptography-46.0.7-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:d5f7520159cd9c2154eb61eb67548ca05c5774d39e9c2c4339fd793fe7d097b2"}, + {file = "cryptography-46.0.7-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:fcd8eac50d9138c1d7fc53a653ba60a2bee81a505f9f8850b6b2888555a45d0e"}, + {file = "cryptography-46.0.7-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:65814c60f8cc400c63131584e3e1fad01235edba2614b61fbfbfa954082db0ee"}, + {file = "cryptography-46.0.7-cp314-cp314t-win32.whl", hash = "sha256:fdd1736fed309b4300346f88f74cd120c27c56852c3838cab416e7a166f67298"}, + {file = "cryptography-46.0.7-cp314-cp314t-win_amd64.whl", hash = "sha256:e06acf3c99be55aa3b516397fe42f5855597f430add9c17fa46bf2e0fb34c9bb"}, + {file = "cryptography-46.0.7-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:462ad5cb1c148a22b2e3bcc5ad52504dff325d17daf5df8d88c17dda1f75f2a4"}, + {file = "cryptography-46.0.7-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:84d4cced91f0f159a7ddacad249cc077e63195c36aac40b4150e7a57e84fffe7"}, + {file = "cryptography-46.0.7-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:128c5edfe5e5938b86b03941e94fac9ee793a94452ad1365c9fc3f4f62216832"}, + {file = "cryptography-46.0.7-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:5e51be372b26ef4ba3de3c167cd3d1022934bc838ae9eaad7e644986d2a3d163"}, + {file = "cryptography-46.0.7-cp38-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:cdf1a610ef82abb396451862739e3fc93b071c844399e15b90726ef7470eeaf2"}, + {file = "cryptography-46.0.7-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:1d25aee46d0c6f1a501adcddb2d2fee4b979381346a78558ed13e50aa8a59067"}, + {file = "cryptography-46.0.7-cp38-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:cdfbe22376065ffcf8be74dc9a909f032df19bc58a699456a21712d6e5eabfd0"}, + {file = "cryptography-46.0.7-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:abad9dac36cbf55de6eb49badd4016806b3165d396f64925bf2999bcb67837ba"}, + {file = "cryptography-46.0.7-cp38-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:935ce7e3cfdb53e3536119a542b839bb94ec1ad081013e9ab9b7cfd478b05006"}, + {file = "cryptography-46.0.7-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:35719dc79d4730d30f1c2b6474bd6acda36ae2dfae1e3c16f2051f215df33ce0"}, + {file = "cryptography-46.0.7-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:7bbc6ccf49d05ac8f7d7b5e2e2c33830d4fe2061def88210a126d130d7f71a85"}, + {file = "cryptography-46.0.7-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a1529d614f44b863a7b480c6d000fe93b59acee9c82ffa027cfadc77521a9f5e"}, + {file = "cryptography-46.0.7-cp38-abi3-win32.whl", hash = "sha256:f247c8c1a1fb45e12586afbb436ef21ff1e80670b2861a90353d9b025583d246"}, + {file = "cryptography-46.0.7-cp38-abi3-win_amd64.whl", hash = "sha256:506c4ff91eff4f82bdac7633318a526b1d1309fc07ca76a3ad182cb5b686d6d3"}, + {file = "cryptography-46.0.7-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:fc9ab8856ae6cf7c9358430e49b368f3108f050031442eaeb6b9d87e4dcf4e4f"}, + {file = "cryptography-46.0.7-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:d3b99c535a9de0adced13d159c5a9cf65c325601aa30f4be08afd680643e9c15"}, + {file = "cryptography-46.0.7-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:d02c738dacda7dc2a74d1b2b3177042009d5cab7c7079db74afc19e56ca1b455"}, + {file = "cryptography-46.0.7-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:04959522f938493042d595a736e7dbdff6eb6cc2339c11465b3ff89343b65f65"}, + {file = "cryptography-46.0.7-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:3986ac1dee6def53797289999eabe84798ad7817f3e97779b5061a95b0ee4968"}, + {file = "cryptography-46.0.7-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:258514877e15963bd43b558917bc9f54cf7cf866c38aa576ebf47a77ddbc43a4"}, + {file = "cryptography-46.0.7.tar.gz", hash = "sha256:e4cfd68c5f3e0bfdad0d38e023239b96a2fe84146481852dffbcca442c245aa5"}, +] + +[package.dependencies] +cffi = {version = ">=2.0.0", markers = "python_full_version >= \"3.9.0\" and platform_python_implementation != \"PyPy\""} +typing-extensions = {version = ">=4.13.2", markers = "python_full_version < \"3.11.0\""} + +[package.extras] +docs = ["sphinx (>=5.3.0)", "sphinx-inline-tabs", "sphinx-rtd-theme (>=3.0.0)"] +docstest = ["pyenchant (>=3)", "readme-renderer (>=30.0)", "sphinxcontrib-spelling (>=7.3.1)"] +nox = ["nox[uv] (>=2024.4.15)"] +pep8test = ["check-sdist", "click (>=8.0.1)", "mypy (>=1.14)", "ruff (>=0.11.11)"] +sdist = ["build (>=1.0.0)"] +ssh = ["bcrypt (>=3.1.5)"] +test = ["certifi (>=2024)", "cryptography-vectors (==46.0.7)", "pretend (>=0.7)", "pytest (>=7.4.0)", "pytest-benchmark (>=4.0)", "pytest-cov (>=2.10.1)", "pytest-xdist (>=3.5.0)"] +test-randomorder = ["pytest-randomly"] + +[[package]] +name = "cyclopts" +version = "4.11.0" +description = "Intuitive, easy CLIs based on type hints." +optional = false +python-versions = ">=3.10" +groups = ["main"] +files = [ + {file = "cyclopts-4.11.0-py3-none-any.whl", hash = "sha256:34318e3823b44b5baa754a5e37ec70a5c17dc81c65e4295ed70e17bc1aeae50d"}, + {file = "cyclopts-4.11.0.tar.gz", hash = "sha256:1ffcb9990dbd56b90da19980d31596de9e99019980a215a5d76cf88fe452e94d"}, +] + +[package.dependencies] +attrs = ">=23.1.0" +docstring-parser = ">=0.15,<4.0" +rich = ">=13.6.0" +rich-rst = ">=1.3.1,<2.0.0" +tomli = {version = ">=2.0.0", markers = "python_version < \"3.11\""} +typing-extensions = {version = ">=4.8.0", markers = "python_version < \"3.11\""} + +[package.extras] +debug = ["ipdb (>=0.13.9)", "line-profiler (>=3.5.1)"] +dev = ["coverage[toml] (>=5.1)", "mkdocs (>=1.4.0)", "pre-commit (>=2.16.0)", "pydantic (>=2.11.2,<3.0.0)", "pytest (>=8.2.0)", "pytest-cov (>=3.0.0)", "pytest-mock (>=3.7.0)", "pyyaml (>=6.0.1)", "syrupy (>=4.0.0)", "toml (>=0.10.2,<1.0.0)", "trio (>=0.10.0)"] +docs = ["gitpython (>=3.1.31)", "myst-parser[linkify] (>=3.0.1,<5.0.0)", "sphinx (>=7.4.7,<8.2.0)", "sphinx-autodoc-typehints (>=1.25.2,<4.0.0)", "sphinx-copybutton (>=0.5,<1.0)", "sphinx-rtd-dark-mode (>=1.3.0,<2.0.0)", "sphinx-rtd-theme (>=3.0.0,<4.0.0)"] +mkdocs = ["markdown (>=3.3)", "mkdocs (>=1.4.0)", "pymdown-extensions (>=10.0)"] +toml = ["tomli (>=2.0.0) ; python_version < \"3.11\""] +trio = ["trio (>=0.10.0)"] +yaml = ["pyyaml (>=6.0.1)"] + +[[package]] +name = "dnspython" +version = "2.8.0" +description = "DNS toolkit" +optional = false +python-versions = ">=3.10" +groups = ["main"] +files = [ + {file = "dnspython-2.8.0-py3-none-any.whl", hash = "sha256:01d9bbc4a2d76bf0db7c1f729812ded6d912bd318d3b1cf81d30c0f845dbf3af"}, + {file = "dnspython-2.8.0.tar.gz", hash = "sha256:181d3c6996452cb1189c4046c61599b84a5a86e099562ffde77d26984ff26d0f"}, +] + +[package.extras] +dev = ["black (>=25.1.0)", "coverage (>=7.0)", "flake8 (>=7)", "hypercorn (>=0.17.0)", "mypy (>=1.17)", "pylint (>=3)", "pytest (>=8.4)", "pytest-cov (>=6.2.0)", "quart-trio (>=0.12.0)", "sphinx (>=8.2.0)", "sphinx-rtd-theme (>=3.0.0)", "twine (>=6.1.0)", "wheel (>=0.45.0)"] +dnssec = ["cryptography (>=45)"] +doh = ["h2 (>=4.2.0)", "httpcore (>=1.0.0)", "httpx (>=0.28.0)"] +doq = ["aioquic (>=1.2.0)"] +idna = ["idna (>=3.10)"] +trio = ["trio (>=0.30)"] +wmi = ["wmi (>=1.5.1) ; platform_system == \"Windows\""] + +[[package]] +name = "docstring-parser" +version = "0.18.0" +description = "Parse Python docstrings in reST, Google and Numpydoc format" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "docstring_parser-0.18.0-py3-none-any.whl", hash = "sha256:b3fcbed555c47d8479be0796ef7e19c2670d428d72e96da63f3a40122860374b"}, + {file = "docstring_parser-0.18.0.tar.gz", hash = "sha256:292510982205c12b1248696f44959db3cdd1740237a968ea1e2e7a900eeb2015"}, +] + +[package.extras] +dev = ["pre-commit (>=2.16.0) ; python_version >= \"3.9\"", "pydoctor (>=25.4.0)", "pytest"] +docs = ["pydoctor (>=25.4.0)"] +test = ["pytest"] + +[[package]] +name = "docutils" +version = "0.22.4" +description = "Docutils -- Python Documentation Utilities" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "docutils-0.22.4-py3-none-any.whl", hash = "sha256:d0013f540772d1420576855455d050a2180186c91c15779301ac2ccb3eeb68de"}, + {file = "docutils-0.22.4.tar.gz", hash = "sha256:4db53b1fde9abecbb74d91230d32ab626d94f6badfc575d6db9194a49df29968"}, +] + +[[package]] +name = "email-validator" +version = "2.3.0" +description = "A robust email address syntax and deliverability validation library." +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "email_validator-2.3.0-py3-none-any.whl", hash = "sha256:80f13f623413e6b197ae73bb10bf4eb0908faf509ad8362c5edeb0be7fd450b4"}, + {file = "email_validator-2.3.0.tar.gz", hash = "sha256:9fc05c37f2f6cf439ff414f8fc46d917929974a82244c20eb10231ba60c54426"}, +] + +[package.dependencies] +dnspython = ">=2.0.0" +idna = ">=2.0.0" + +[[package]] +name = "exceptiongroup" +version = "1.3.1" +description = "Backport of PEP 654 (exception groups)" +optional = false +python-versions = ">=3.7" +groups = ["main", "dev"] +files = [ + {file = "exceptiongroup-1.3.1-py3-none-any.whl", hash = "sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577f82c773598"}, + {file = "exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219"}, +] +markers = {dev = "python_version == \"3.10\""} + +[package.dependencies] +typing-extensions = {version = ">=4.6.0", markers = "python_version < \"3.13\""} + +[package.extras] +test = ["pytest (>=6)"] + +[[package]] +name = "fastmcp" +version = "3.1.1" +description = "The fast, Pythonic way to build MCP servers and clients." +optional = false +python-versions = ">=3.10" +groups = ["main"] +files = [ + {file = "fastmcp-3.1.1-py3-none-any.whl", hash = "sha256:8132ba069d89f14566b3266919d6d72e2ec23dd45d8944622dca407e9beda7eb"}, + {file = "fastmcp-3.1.1.tar.gz", hash = "sha256:db184b5391a31199323766a3abf3a8bfbb8010479f77eca84c0e554f18655c48"}, +] + +[package.dependencies] +authlib = ">=1.6.5" +cyclopts = ">=4.0.0" +exceptiongroup = ">=1.2.2" +httpx = ">=0.28.1,<1.0" +jsonref = ">=1.1.0" +jsonschema-path = ">=0.3.4" +mcp = ">=1.24.0,<2.0" +openapi-pydantic = ">=0.5.1" +opentelemetry-api = ">=1.20.0" +packaging = ">=24.0" +platformdirs = ">=4.0.0" +py-key-value-aio = {version = ">=0.4.4,<0.5.0", extras = ["filetree", "keyring", "memory"]} +pydantic = {version = ">=2.11.7", extras = ["email"]} +pyperclip = ">=1.9.0" +python-dotenv = ">=1.1.0" +pyyaml = ">=6.0,<7.0" +rich = ">=13.9.4" +uncalled-for = ">=0.2.0" +uvicorn = ">=0.35" +watchfiles = ">=1.0.0" +websockets = ">=15.0.1" + +[package.extras] +anthropic = ["anthropic (>=0.40.0)"] +apps = ["prefab-ui (>=0.6.0)"] +azure = ["azure-identity (>=1.16.0)"] +code-mode = ["pydantic-monty (>=0.0.7,<0.0.8)"] +gemini = ["google-genai (>=1.18.0)"] +openai = ["openai (>=1.102.0)"] +tasks = ["pydocket (>=0.18.0)"] + +[[package]] +name = "h11" +version = "0.16.0" +description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86"}, + {file = "h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1"}, +] + +[[package]] +name = "httpcore" +version = "1.0.9" +description = "A minimal low-level HTTP client." +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55"}, + {file = "httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8"}, +] + +[package.dependencies] +certifi = "*" +h11 = ">=0.16" + +[package.extras] +asyncio = ["anyio (>=4.0,<5.0)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] +trio = ["trio (>=0.22.0,<1.0)"] + +[[package]] +name = "httpx" +version = "0.28.1" +description = "The next generation HTTP client." +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad"}, + {file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc"}, +] + +[package.dependencies] +anyio = "*" +certifi = "*" +httpcore = "==1.*" +idna = "*" + +[package.extras] +brotli = ["brotli ; platform_python_implementation == \"CPython\"", "brotlicffi ; platform_python_implementation != \"CPython\""] +cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] +zstd = ["zstandard (>=0.18.0)"] + +[[package]] +name = "httpx-sse" +version = "0.4.3" +description = "Consume Server-Sent Event (SSE) messages with HTTPX." +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "httpx_sse-0.4.3-py3-none-any.whl", hash = "sha256:0ac1c9fe3c0afad2e0ebb25a934a59f4c7823b60792691f779fad2c5568830fc"}, + {file = "httpx_sse-0.4.3.tar.gz", hash = "sha256:9b1ed0127459a66014aec3c56bebd93da3c1bc8bb6618c8082039a44889a755d"}, +] + +[[package]] +name = "idna" +version = "3.13" +description = "Internationalized Domain Names in Applications (IDNA)" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "idna-3.13-py3-none-any.whl", hash = "sha256:892ea0cde124a99ce773decba204c5552b69c3c67ffd5f232eb7696135bc8bb3"}, + {file = "idna-3.13.tar.gz", hash = "sha256:585ea8fe5d69b9181ec1afba340451fba6ba764af97026f92a91d4eef164a242"}, +] + +[package.extras] +all = ["mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] + +[[package]] +name = "importlib-metadata" +version = "8.7.1" +description = "Read metadata from Python packages" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "importlib_metadata-8.7.1-py3-none-any.whl", hash = "sha256:5a1f80bf1daa489495071efbb095d75a634cf28a8bc299581244063b53176151"}, + {file = "importlib_metadata-8.7.1.tar.gz", hash = "sha256:49fef1ae6440c182052f407c8d34a68f72efc36db9ca90dc0113398f2fdde8bb"}, +] + +[package.dependencies] +zipp = ">=3.20" + +[package.extras] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] +cover = ["pytest-cov"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +enabler = ["pytest-enabler (>=3.4)"] +perf = ["ipython"] +test = ["flufl.flake8", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-perf (>=0.9.2)"] +type = ["mypy (<1.19) ; platform_python_implementation == \"PyPy\"", "pytest-mypy (>=1.0.1)"] + +[[package]] +name = "iniconfig" +version = "2.3.0" +description = "brain-dead simple config-ini parsing" +optional = false +python-versions = ">=3.10" +groups = ["dev"] +files = [ + {file = "iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12"}, + {file = "iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730"}, +] + +[[package]] +name = "jaraco-classes" +version = "3.4.0" +description = "Utility functions for Python class constructs" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "jaraco.classes-3.4.0-py3-none-any.whl", hash = "sha256:f662826b6bed8cace05e7ff873ce0f9283b5c924470fe664fff1c2f00f581790"}, + {file = "jaraco.classes-3.4.0.tar.gz", hash = "sha256:47a024b51d0239c0dd8c8540c6c7f484be3b8fcf0b2d85c13825780d3b3f3acd"}, +] + +[package.dependencies] +more-itertools = "*" + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-ruff (>=0.2.1)"] + +[[package]] +name = "jaraco-context" +version = "6.1.2" +description = "Useful decorators and context managers" +optional = false +python-versions = ">=3.10" +groups = ["main"] +files = [ + {file = "jaraco_context-6.1.2-py3-none-any.whl", hash = "sha256:bf8150b79a2d5d91ae48629d8b427a8f7ba0e1097dd6202a9059f29a36379535"}, + {file = "jaraco_context-6.1.2.tar.gz", hash = "sha256:f1a6c9d391e661cc5b8d39861ff077a7dc24dc23833ccee564b234b81c82dfe3"}, +] + +[package.dependencies] +"backports.tarfile" = {version = "*", markers = "python_version < \"3.12\""} + +[package.extras] +check = ["pytest-checkdocs (>=2.14)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] +cover = ["pytest-cov"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +enabler = ["pytest-enabler (>=3.4)"] +test = ["jaraco.test (>=5.6.0)", "portend", "pytest (>=6,!=8.1.*)"] +type = ["pytest-mypy (>=1.0.1) ; platform_python_implementation != \"PyPy\""] + +[[package]] +name = "jaraco-functools" +version = "4.4.0" +description = "Functools like those found in stdlib" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "jaraco_functools-4.4.0-py3-none-any.whl", hash = "sha256:9eec1e36f45c818d9bf307c8948eb03b2b56cd44087b3cdc989abca1f20b9176"}, + {file = "jaraco_functools-4.4.0.tar.gz", hash = "sha256:da21933b0417b89515562656547a77b4931f98176eb173644c0d35032a33d6bb"}, +] + +[package.dependencies] +more_itertools = "*" + +[package.extras] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] +cover = ["pytest-cov"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +enabler = ["pytest-enabler (>=3.4)"] +test = ["jaraco.classes", "pytest (>=6,!=8.1.*)"] +type = ["mypy (<1.19) ; platform_python_implementation == \"PyPy\"", "pytest-mypy (>=1.0.1)"] + +[[package]] +name = "jeepney" +version = "0.9.0" +description = "Low-level, pure Python DBus protocol wrapper." +optional = false +python-versions = ">=3.7" +groups = ["main"] +markers = "sys_platform == \"linux\"" +files = [ + {file = "jeepney-0.9.0-py3-none-any.whl", hash = "sha256:97e5714520c16fc0a45695e5365a2e11b81ea79bba796e26f9f1d178cb182683"}, + {file = "jeepney-0.9.0.tar.gz", hash = "sha256:cf0e9e845622b81e4a28df94c40345400256ec608d0e55bb8a3feaa9163f5732"}, +] + +[package.extras] +test = ["async-timeout ; python_version < \"3.11\"", "pytest", "pytest-asyncio (>=0.17)", "pytest-trio", "testpath", "trio"] +trio = ["trio"] + +[[package]] +name = "joserfc" +version = "1.6.4" +description = "The ultimate Python library for JOSE RFCs, including JWS, JWE, JWK, JWA, JWT" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "joserfc-1.6.4-py3-none-any.whl", hash = "sha256:3e4a22b509b41908989237a045e25c8308d5fd47ab96bdae2dd8057c6451003a"}, + {file = "joserfc-1.6.4.tar.gz", hash = "sha256:34ce5f499bfcc5e9ad4cc75077f9278ab3227b71da9aaf28f9ab705f8a560d3c"}, +] + +[package.dependencies] +cryptography = ">=45.0.1" + +[package.extras] +drafts = ["pycryptodome"] + +[[package]] +name = "jsonref" +version = "1.1.0" +description = "jsonref is a library for automatic dereferencing of JSON Reference objects for Python." +optional = false +python-versions = ">=3.7" +groups = ["main"] +files = [ + {file = "jsonref-1.1.0-py3-none-any.whl", hash = "sha256:590dc7773df6c21cbf948b5dac07a72a251db28b0238ceecce0a2abfa8ec30a9"}, + {file = "jsonref-1.1.0.tar.gz", hash = "sha256:32fe8e1d85af0fdefbebce950af85590b22b60f9e95443176adbde4e1ecea552"}, +] + +[[package]] +name = "jsonschema" +version = "4.26.0" +description = "An implementation of JSON Schema validation for Python" +optional = false +python-versions = ">=3.10" +groups = ["main"] +files = [ + {file = "jsonschema-4.26.0-py3-none-any.whl", hash = "sha256:d489f15263b8d200f8387e64b4c3a75f06629559fb73deb8fdfb525f2dab50ce"}, + {file = "jsonschema-4.26.0.tar.gz", hash = "sha256:0c26707e2efad8aa1bfc5b7ce170f3fccc2e4918ff85989ba9ffa9facb2be326"}, +] + +[package.dependencies] +attrs = ">=22.2.0" +jsonschema-specifications = ">=2023.3.6" +referencing = ">=0.28.4" +rpds-py = ">=0.25.0" + +[package.extras] +format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"] +format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "rfc3987-syntax (>=1.1.0)", "uri-template", "webcolors (>=24.6.0)"] + +[[package]] +name = "jsonschema-path" +version = "0.4.5" +description = "JSONSchema Spec with object-oriented paths" +optional = false +python-versions = "<4.0.0,>=3.10" +groups = ["main"] +files = [ + {file = "jsonschema_path-0.4.5-py3-none-any.whl", hash = "sha256:7d77a2c3f3ec569a40efe5c5f942c44c1af2a6f96fe0866794c9ef5b8f87fd65"}, + {file = "jsonschema_path-0.4.5.tar.gz", hash = "sha256:c6cd7d577ae290c7defd4f4029e86fdb248ca1bd41a07557795b3c95e5144918"}, +] + +[package.dependencies] +pathable = ">=0.5.0,<0.6.0" +PyYAML = ">=5.1" +referencing = "<0.38.0" + +[package.extras] +requests = ["requests (>=2.31.0,<3.0.0)"] + +[[package]] +name = "jsonschema-specifications" +version = "2025.9.1" +description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "jsonschema_specifications-2025.9.1-py3-none-any.whl", hash = "sha256:98802fee3a11ee76ecaca44429fda8a41bff98b00a0f2838151b113f210cc6fe"}, + {file = "jsonschema_specifications-2025.9.1.tar.gz", hash = "sha256:b540987f239e745613c7a9176f3edb72b832a4ac465cf02712288397832b5e8d"}, +] + +[package.dependencies] +referencing = ">=0.31.0" + +[[package]] +name = "keyring" +version = "25.7.0" +description = "Store and access your passwords safely." +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "keyring-25.7.0-py3-none-any.whl", hash = "sha256:be4a0b195f149690c166e850609a477c532ddbfbaed96a404d4e43f8d5e2689f"}, + {file = "keyring-25.7.0.tar.gz", hash = "sha256:fe01bd85eb3f8fb3dd0405defdeac9a5b4f6f0439edbb3149577f244a2e8245b"}, +] + +[package.dependencies] +importlib_metadata = {version = ">=4.11.4", markers = "python_version < \"3.12\""} +"jaraco.classes" = "*" +"jaraco.context" = "*" +"jaraco.functools" = "*" +jeepney = {version = ">=0.4.2", markers = "sys_platform == \"linux\""} +pywin32-ctypes = {version = ">=0.2.0", markers = "sys_platform == \"win32\""} +SecretStorage = {version = ">=3.2", markers = "sys_platform == \"linux\""} + +[package.extras] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] +completion = ["shtab (>=1.1.0)"] +cover = ["pytest-cov"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +enabler = ["pytest-enabler (>=3.4)"] +test = ["pyfakefs", "pytest (>=6,!=8.1.*)"] +type = ["pygobject-stubs", "pytest-mypy (>=1.0.1)", "shtab", "types-pywin32"] + +[[package]] +name = "markdown-it-py" +version = "4.0.0" +description = "Python port of markdown-it. Markdown parsing, done right!" +optional = false +python-versions = ">=3.10" +groups = ["main"] +files = [ + {file = "markdown_it_py-4.0.0-py3-none-any.whl", hash = "sha256:87327c59b172c5011896038353a81343b6754500a08cd7a4973bb48c6d578147"}, + {file = "markdown_it_py-4.0.0.tar.gz", hash = "sha256:cb0a2b4aa34f932c007117b194e945bd74e0ec24133ceb5bac59009cda1cb9f3"}, +] + +[package.dependencies] +mdurl = ">=0.1,<1.0" + +[package.extras] +benchmarking = ["psutil", "pytest", "pytest-benchmark"] +compare = ["commonmark (>=0.9,<1.0)", "markdown (>=3.4,<4.0)", "markdown-it-pyrs", "mistletoe (>=1.0,<2.0)", "mistune (>=3.0,<4.0)", "panflute (>=2.3,<3.0)"] +linkify = ["linkify-it-py (>=1,<3)"] +plugins = ["mdit-py-plugins (>=0.5.0)"] +profiling = ["gprof2dot"] +rtd = ["ipykernel", "jupyter_sphinx", "mdit-py-plugins (>=0.5.0)", "myst-parser", "pyyaml", "sphinx", "sphinx-book-theme (>=1.0,<2.0)", "sphinx-copybutton", "sphinx-design"] +testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions", "requests"] + +[[package]] +name = "mcp" +version = "1.27.0" +description = "Model Context Protocol SDK" +optional = false +python-versions = ">=3.10" +groups = ["main"] +files = [ + {file = "mcp-1.27.0-py3-none-any.whl", hash = "sha256:5ce1fa81614958e267b21fb2aa34e0aea8e2c6ede60d52aba45fd47246b4d741"}, + {file = "mcp-1.27.0.tar.gz", hash = "sha256:d3dc35a7eec0d458c1da4976a48f982097ddaab87e278c5511d5a4a56e852b83"}, +] + +[package.dependencies] +anyio = ">=4.5" +httpx = ">=0.27.1" +httpx-sse = ">=0.4" +jsonschema = ">=4.20.0" +pydantic = ">=2.11.0,<3.0.0" +pydantic-settings = ">=2.5.2" +pyjwt = {version = ">=2.10.1", extras = ["crypto"]} +python-multipart = ">=0.0.9" +pywin32 = {version = ">=310", markers = "sys_platform == \"win32\""} +sse-starlette = ">=1.6.1" +starlette = ">=0.27" +typing-extensions = ">=4.9.0" +typing-inspection = ">=0.4.1" +uvicorn = {version = ">=0.31.1", markers = "sys_platform != \"emscripten\""} + +[package.extras] +cli = ["python-dotenv (>=1.0.0)", "typer (>=0.16.0)"] +rich = ["rich (>=13.9.4)"] +ws = ["websockets (>=15.0.1)"] + +[[package]] +name = "mdurl" +version = "0.1.2" +description = "Markdown URL utilities" +optional = false +python-versions = ">=3.7" +groups = ["main"] +files = [ + {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, + {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, +] + +[[package]] +name = "more-itertools" +version = "11.0.2" +description = "More routines for operating on iterables, beyond itertools" +optional = false +python-versions = ">=3.10" +groups = ["main"] +files = [ + {file = "more_itertools-11.0.2-py3-none-any.whl", hash = "sha256:6e35b35f818b01f691643c6c611bc0902f2e92b46c18fffa77ae1e7c46e912e4"}, + {file = "more_itertools-11.0.2.tar.gz", hash = "sha256:392a9e1e362cbc106a2457d37cabf9b36e5e12efd4ebff1654630e76597df804"}, +] + +[[package]] +name = "openapi-pydantic" +version = "0.5.1" +description = "Pydantic OpenAPI schema implementation" +optional = false +python-versions = "<4.0,>=3.8" +groups = ["main"] +files = [ + {file = "openapi_pydantic-0.5.1-py3-none-any.whl", hash = "sha256:a3a09ef4586f5bd760a8df7f43028b60cafb6d9f61de2acba9574766255ab146"}, + {file = "openapi_pydantic-0.5.1.tar.gz", hash = "sha256:ff6835af6bde7a459fb93eb93bb92b8749b754fc6e51b2f1590a19dc3005ee0d"}, +] + +[package.dependencies] +pydantic = ">=1.8" + +[[package]] +name = "opentelemetry-api" +version = "1.41.1" +description = "OpenTelemetry Python API" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "opentelemetry_api-1.41.1-py3-none-any.whl", hash = "sha256:a22df900e75c76dc08440710e51f52f1aa6b451b429298896023e60db5b3139f"}, + {file = "opentelemetry_api-1.41.1.tar.gz", hash = "sha256:0ad1814d73b875f84494387dae86ce0b12c68556331ce6ce8fe789197c949621"}, +] + +[package.dependencies] +importlib-metadata = ">=6.0,<8.8.0" +typing-extensions = ">=4.5.0" + +[[package]] +name = "packaging" +version = "26.1" +description = "Core utilities for Python packages" +optional = false +python-versions = ">=3.8" +groups = ["main", "dev"] +files = [ + {file = "packaging-26.1-py3-none-any.whl", hash = "sha256:5d9c0669c6285e491e0ced2eee587eaf67b670d94a19e94e3984a481aba6802f"}, + {file = "packaging-26.1.tar.gz", hash = "sha256:f042152b681c4bfac5cae2742a55e103d27ab2ec0f3d88037136b6bfe7c9c5de"}, +] + +[[package]] +name = "pathable" +version = "0.5.0" +description = "Object-oriented paths" +optional = false +python-versions = "<4.0,>=3.10" +groups = ["main"] +files = [ + {file = "pathable-0.5.0-py3-none-any.whl", hash = "sha256:646e3d09491a6351a0c82632a09c02cdf70a252e73196b36d8a15ba0a114f0a6"}, + {file = "pathable-0.5.0.tar.gz", hash = "sha256:d81938348a1cacb525e7c75166270644782c0fb9c8cecc16be033e71427e0ef1"}, +] + +[[package]] +name = "platformdirs" +version = "4.9.6" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." +optional = false +python-versions = ">=3.10" +groups = ["main"] +files = [ + {file = "platformdirs-4.9.6-py3-none-any.whl", hash = "sha256:e61adb1d5e5cb3441b4b7710bea7e4c12250ca49439228cc1021c00dcfac0917"}, + {file = "platformdirs-4.9.6.tar.gz", hash = "sha256:3bfa75b0ad0db84096ae777218481852c0ebc6c727b3168c1b9e0118e458cf0a"}, +] + +[[package]] +name = "pluggy" +version = "1.6.0" +description = "plugin and hook calling mechanisms for python" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + {file = "pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746"}, + {file = "pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3"}, +] + +[package.extras] +dev = ["pre-commit", "tox"] +testing = ["coverage", "pytest", "pytest-benchmark"] + +[[package]] +name = "py-key-value-aio" +version = "0.4.4" +description = "Async Key-Value Store - A pluggable interface for KV Stores" +optional = false +python-versions = ">=3.10" +groups = ["main"] +files = [ + {file = "py_key_value_aio-0.4.4-py3-none-any.whl", hash = "sha256:18e17564ecae61b987f909fc2cd41ee2012c84b4b1dcb8c055cf8b4bc1bf3f5d"}, + {file = "py_key_value_aio-0.4.4.tar.gz", hash = "sha256:e3012e6243ed7cc09bb05457bd4d03b1ba5c2b1ca8700096b3927db79ffbbe55"}, +] + +[package.dependencies] +aiofile = {version = ">=3.5.0", optional = true, markers = "extra == \"filetree\""} +anyio = {version = ">=4.4.0", optional = true, markers = "extra == \"filetree\""} +beartype = ">=0.20.0" +cachetools = {version = ">=5.0.0", optional = true, markers = "extra == \"memory\""} +keyring = {version = ">=25.6.0", optional = true, markers = "extra == \"keyring\""} +typing-extensions = ">=4.15.0" + +[package.extras] +aerospike = ["aerospike (>=16.0.0)"] +disk = ["diskcache (>=5.0.0)", "pathvalidate (>=3.3.1)"] +docs = ["mkdocs (>=1.6.0)", "mkdocs-material (>=9.5.0)", "mkdocstrings-python (>=1.10.0)", "mkdocstrings[python] (>=0.30.0)"] +duckdb = ["duckdb (>=1.1.1)", "pytz (>=2025.2)"] +dynamodb = ["aioboto3 (>=13.3.0)", "types-aiobotocore-dynamodb (>=2.16.0)"] +elasticsearch = ["aiohttp (>=3.12)", "elasticsearch (>=8.0.0)"] +filetree = ["aiofile (>=3.5.0)", "anyio (>=4.4.0)"] +firestore = ["google-auth (>=2.24.0)", "google-cloud-firestore (>=2.13.0)"] +keyring = ["keyring (>=25.6.0)"] +keyring-linux = ["dbus-python (>=1.4.0)", "keyring (>=25.6.0)"] +memcached = ["aiomcache (>=0.8.0)"] +memory = ["cachetools (>=5.0.0)"] +mongodb = ["pymongo (>=4.0.0)"] +opensearch = ["opensearch-py[async] (>=2.0.0)"] +postgresql = ["asyncpg (>=0.30.0)"] +pydantic = ["pydantic (>=2.11.9)"] +redis = ["redis (>=4.3.0)"] +rocksdb = ["rocksdict (>=0.3.2) ; python_full_version < \"3.12.0\"", "rocksdict (>=0.3.24) ; python_full_version >= \"3.12.0\""] +s3 = ["aioboto3 (>=13.3.0)", "types-aiobotocore-s3 (>=2.16.0)"] +valkey = ["valkey-glide (>=2.1.0)"] +vault = ["hvac (>=2.3.0)", "types-hvac (>=2.3.0)"] +wrappers-encryption = ["cryptography (>=45.0.0)"] + +[[package]] +name = "pycparser" +version = "3.0" +description = "C parser in Python" +optional = false +python-versions = ">=3.10" +groups = ["main"] +markers = "platform_python_implementation != \"PyPy\" and implementation_name != \"PyPy\"" +files = [ + {file = "pycparser-3.0-py3-none-any.whl", hash = "sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992"}, + {file = "pycparser-3.0.tar.gz", hash = "sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29"}, +] + +[[package]] +name = "pydantic" +version = "2.13.3" +description = "Data validation using Python type hints" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "pydantic-2.13.3-py3-none-any.whl", hash = "sha256:6db14ac8dfc9a1e57f87ea2c0de670c251240f43cb0c30a5130e9720dc612927"}, + {file = "pydantic-2.13.3.tar.gz", hash = "sha256:af09e9d1d09f4e7fe37145c1f577e1d61ceb9a41924bf0094a36506285d0a84d"}, +] + +[package.dependencies] +annotated-types = ">=0.6.0" +email-validator = {version = ">=2.0.0", optional = true, markers = "extra == \"email\""} +pydantic-core = "2.46.3" +typing-extensions = ">=4.14.1" +typing-inspection = ">=0.4.2" + +[package.extras] +email = ["email-validator (>=2.0.0)"] +timezone = ["tzdata ; python_version >= \"3.9\" and platform_system == \"Windows\""] + +[[package]] +name = "pydantic-core" +version = "2.46.3" +description = "Core functionality for Pydantic validation and serialization" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "pydantic_core-2.46.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:1da3786b8018e60349680720158cc19161cc3b4bdd815beb0a321cd5ce1ad5b1"}, + {file = "pydantic_core-2.46.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:cc0988cb29d21bf4a9d5cf2ef970b5c0e38d8d8e107a493278c05dc6c1dda69f"}, + {file = "pydantic_core-2.46.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:27f9067c3bfadd04c55484b89c0d267981b2f3512850f6f66e1e74204a4e4ce3"}, + {file = "pydantic_core-2.46.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a642ac886ecf6402d9882d10c405dcf4b902abeb2972cd5fb4a48c83cd59279a"}, + {file = "pydantic_core-2.46.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:79f561438481f28681584b89e2effb22855e2179880314bcddbf5968e935e807"}, + {file = "pydantic_core-2.46.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57a973eae4665352a47cf1a99b4ee864620f2fe663a217d7a8da68a1f3a5bfda"}, + {file = "pydantic_core-2.46.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:83d002b97072a53ea150d63e0a3adfae5670cef5aa8a6e490240e482d3b22e57"}, + {file = "pydantic_core-2.46.3-cp310-cp310-manylinux_2_31_riscv64.whl", hash = "sha256:b40ddd51e7c44b28cfaef746c9d3c506d658885e0a46f9eeef2ee815cbf8e045"}, + {file = "pydantic_core-2.46.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ac5ec7fb9b87f04ee839af2d53bcadea57ded7d229719f56c0ed895bff987943"}, + {file = "pydantic_core-2.46.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:a3b11c812f61b3129c4905781a2601dfdfdea5fe1e6c1cfb696b55d14e9c054f"}, + {file = "pydantic_core-2.46.3-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:1108da631e602e5b3c38d6d04fe5bb3bfa54349e6918e3ca6cf570b2e2b2f9d4"}, + {file = "pydantic_core-2.46.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:de885175515bcfa98ae618c1df7a072f13d179f81376c8007112af20567fd08a"}, + {file = "pydantic_core-2.46.3-cp310-cp310-win32.whl", hash = "sha256:d11058e3201527d41bc6b545c79187c9e4bf85e15a236a6007f0e991518882b7"}, + {file = "pydantic_core-2.46.3-cp310-cp310-win_amd64.whl", hash = "sha256:3612edf65c8ea67ac13616c4d23af12faef1ae435a8a93e5934c2a0cbbdd1fd6"}, + {file = "pydantic_core-2.46.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:ab124d49d0459b2373ecf54118a45c28a1e6d4192a533fbc915e70f556feb8e5"}, + {file = "pydantic_core-2.46.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:cca67d52a5c7a16aed2b3999e719c4bcf644074eac304a5d3d62dd70ae7d4b2c"}, + {file = "pydantic_core-2.46.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c024e08c0ba23e6fd68c771a521e9d6a792f2ebb0fa734296b36394dc30390e"}, + {file = "pydantic_core-2.46.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6645ce7eec4928e29a1e3b3d5c946621d105d3e79f0c9cddf07c2a9770949287"}, + {file = "pydantic_core-2.46.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a712c7118e6c5ea96562f7b488435172abb94a3c53c22c9efc1412264a45cbbe"}, + {file = "pydantic_core-2.46.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:69a868ef3ff206343579021c40faf3b1edc64b1cc508ff243a28b0a514ccb050"}, + {file = "pydantic_core-2.46.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc7e8c32db809aa0f6ea1d6869ebc8518a65d5150fdfad8bcae6a49ae32a22e2"}, + {file = "pydantic_core-2.46.3-cp311-cp311-manylinux_2_31_riscv64.whl", hash = "sha256:3481bd1341dc85779ee506bc8e1196a277ace359d89d28588a9468c3ecbe63fa"}, + {file = "pydantic_core-2.46.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8690eba565c6d68ffd3a8655525cbdd5246510b44a637ee2c6c03a7ebfe64d3c"}, + {file = "pydantic_core-2.46.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4de88889d7e88d50d40ee5b39d5dac0bcaef9ba91f7e536ac064e6b2834ecccf"}, + {file = "pydantic_core-2.46.3-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:e480080975c1ef7f780b8f99ed72337e7cc5efea2e518a20a692e8e7b278eb8b"}, + {file = "pydantic_core-2.46.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:de3a5c376f8cd94da9a1b8fd3dd1c16c7a7b216ed31dc8ce9fd7a22bf13b836e"}, + {file = "pydantic_core-2.46.3-cp311-cp311-win32.whl", hash = "sha256:fc331a5314ffddd5385b9ee9d0d2fee0b13c27e0e02dad71b1ae5d6561f51eeb"}, + {file = "pydantic_core-2.46.3-cp311-cp311-win_amd64.whl", hash = "sha256:b5b9c6cf08a8a5e502698f5e153056d12c34b8fb30317e0c5fd06f45162a6346"}, + {file = "pydantic_core-2.46.3-cp311-cp311-win_arm64.whl", hash = "sha256:5dfd51cf457482f04ec49491811a2b8fd5b843b64b11eecd2d7a1ee596ea78a6"}, + {file = "pydantic_core-2.46.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:b11b59b3eee90a80a36701ddb4576d9ae31f93f05cb9e277ceaa09e6bf074a67"}, + {file = "pydantic_core-2.46.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:af8653713055ea18a3abc1537fe2ebc42f5b0bbb768d1eb79fd74eb47c0ac089"}, + {file = "pydantic_core-2.46.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:75a519dab6d63c514f3a81053e5266c549679e4aa88f6ec57f2b7b854aceb1b0"}, + {file = "pydantic_core-2.46.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a6cd87cb1575b1ad05ba98894c5b5c96411ef678fa2f6ed2576607095b8d9789"}, + {file = "pydantic_core-2.46.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f80a55484b8d843c8ada81ebf70a682f3f00a3d40e378c06cf17ecb44d280d7d"}, + {file = "pydantic_core-2.46.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3861f1731b90c50a3266316b9044f5c9b405eecb8e299b0a7120596334e4fe9c"}, + {file = "pydantic_core-2.46.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb528e295ed31570ac3dcc9bfdd6e0150bc11ce6168ac87a8082055cf1a67395"}, + {file = "pydantic_core-2.46.3-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:367508faa4973b992b271ba1494acaab36eb7e8739d1e47be5035fb1ea225396"}, + {file = "pydantic_core-2.46.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5ad3c826fe523e4becf4fe39baa44286cff85ef137c729a2c5e269afbfd0905d"}, + {file = "pydantic_core-2.46.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ec638c5d194ef8af27db69f16c954a09797c0dc25015ad6123eb2c73a4d271ca"}, + {file = "pydantic_core-2.46.3-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:28ed528c45446062ee66edb1d33df5d88828ae167de76e773a3c7f64bd14e976"}, + {file = "pydantic_core-2.46.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:aed19d0c783886d5bd86d80ae5030006b45e28464218747dcf83dabfdd092c7b"}, + {file = "pydantic_core-2.46.3-cp312-cp312-win32.whl", hash = "sha256:06d5d8820cbbdb4147578c1fe7ffcd5b83f34508cb9f9ab76e807be7db6ff0a4"}, + {file = "pydantic_core-2.46.3-cp312-cp312-win_amd64.whl", hash = "sha256:c3212fda0ee959c1dd04c60b601ec31097aaa893573a3a1abd0a47bcac2968c1"}, + {file = "pydantic_core-2.46.3-cp312-cp312-win_arm64.whl", hash = "sha256:f1f8338dd7a7f31761f1f1a3c47503a9a3b34eea3c8b01fa6ee96408affb5e72"}, + {file = "pydantic_core-2.46.3-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:12bc98de041458b80c86c56b24df1d23832f3e166cbaff011f25d187f5c62c37"}, + {file = "pydantic_core-2.46.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:85348b8f89d2c3508b65b16c3c33a4da22b8215138d8b996912bb1532868885f"}, + {file = "pydantic_core-2.46.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1105677a6df914b1fb71a81b96c8cce7726857e1717d86001f29be06a25ee6f8"}, + {file = "pydantic_core-2.46.3-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:87082cd65669a33adeba5470769e9704c7cf026cc30afb9cc77fd865578ebaad"}, + {file = "pydantic_core-2.46.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:60e5f66e12c4f5212d08522963380eaaeac5ebd795826cfd19b2dfb0c7a52b9c"}, + {file = "pydantic_core-2.46.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b6cdf19bf84128d5e7c37e8a73a0c5c10d51103a650ac585d42dd6ae233f2b7f"}, + {file = "pydantic_core-2.46.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:031bb17f4885a43773c8c763089499f242aee2ea85cf17154168775dccdecf35"}, + {file = "pydantic_core-2.46.3-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:bcf2a8b2982a6673693eae7348ef3d8cf3979c1d63b54fca7c397a635cc68687"}, + {file = "pydantic_core-2.46.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:28e8cf2f52d72ced402a137145923a762cbb5081e48b34312f7a0c8f55928ec3"}, + {file = "pydantic_core-2.46.3-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:17eaface65d9fc5abb940003020309c1bf7a211f5f608d7870297c367e6f9022"}, + {file = "pydantic_core-2.46.3-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:93fd339f23408a07e98950a89644f92c54d8729719a40b30c0a30bb9ebc55d23"}, + {file = "pydantic_core-2.46.3-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:23cbdb3aaa74dfe0837975dbf69b469753bbde8eacace524519ffdb6b6e89eb7"}, + {file = "pydantic_core-2.46.3-cp313-cp313-win32.whl", hash = "sha256:610eda2e3838f401105e6326ca304f5da1e15393ae25dacae5c5c63f2c275b13"}, + {file = "pydantic_core-2.46.3-cp313-cp313-win_amd64.whl", hash = "sha256:68cc7866ed863db34351294187f9b729964c371ba33e31c26f478471c52e1ed0"}, + {file = "pydantic_core-2.46.3-cp313-cp313-win_arm64.whl", hash = "sha256:f64b5537ac62b231572879cd08ec05600308636a5d63bcbdb15063a466977bec"}, + {file = "pydantic_core-2.46.3-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:afa3aa644f74e290cdede48a7b0bee37d1c35e71b05105f6b340d484af536d9b"}, + {file = "pydantic_core-2.46.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ced3310e51aa425f7f77da8bbbb5212616655bedbe82c70944320bc1dbe5e018"}, + {file = "pydantic_core-2.46.3-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e29908922ce9da1a30b4da490bd1d3d82c01dcfdf864d2a74aacee674d0bfa34"}, + {file = "pydantic_core-2.46.3-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0c9ff69140423eea8ed2d5477df3ba037f671f5e897d206d921bc9fdc39613e7"}, + {file = "pydantic_core-2.46.3-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b675ab0a0d5b1c8fdb81195dc5bcefea3f3c240871cdd7ff9a2de8aa50772eb2"}, + {file = "pydantic_core-2.46.3-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0087084960f209a9a4af50ecd1fb063d9ad3658c07bb81a7a53f452dacbfb2ba"}, + {file = "pydantic_core-2.46.3-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed42e6cc8e1b0e2b9b96e2276bad70ae625d10d6d524aed0c93de974ae029f9f"}, + {file = "pydantic_core-2.46.3-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:f1771ce258afb3e4201e67d154edbbae712a76a6081079fe247c2f53c6322c22"}, + {file = "pydantic_core-2.46.3-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a7610b6a5242a6c736d8ad47fd5fff87fcfe8f833b281b1c409c3d6835d9227f"}, + {file = "pydantic_core-2.46.3-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:ff5e7783bcc5476e1db448bf268f11cb257b1c276d3e89f00b5727be86dd0127"}, + {file = "pydantic_core-2.46.3-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:9d2e32edcc143bc01e95300671915d9ca052d4f745aa0a49c48d4803f8a85f2c"}, + {file = "pydantic_core-2.46.3-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:6e42d83d1c6b87fa56b521479cff237e626a292f3b31b6345c15a99121b454c1"}, + {file = "pydantic_core-2.46.3-cp314-cp314-win32.whl", hash = "sha256:07bc6d2a28c3adb4f7c6ae46aa4f2d2929af127f587ed44057af50bf1ce0f505"}, + {file = "pydantic_core-2.46.3-cp314-cp314-win_amd64.whl", hash = "sha256:8940562319bc621da30714617e6a7eaa6b98c84e8c685bcdc02d7ed5e7c7c44e"}, + {file = "pydantic_core-2.46.3-cp314-cp314-win_arm64.whl", hash = "sha256:5dcbbcf4d22210ced8f837c96db941bdb078f419543472aca5d9a0bb7cddc7df"}, + {file = "pydantic_core-2.46.3-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:d0fe3dce1e836e418f912c1ad91c73357d03e556a4d286f441bf34fed2dbeecf"}, + {file = "pydantic_core-2.46.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:9ce92e58abc722dac1bf835a6798a60b294e48eb0e625ec9fd994b932ac5feee"}, + {file = "pydantic_core-2.46.3-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a03e6467f0f5ab796a486146d1b887b2dc5e5f9b3288898c1b1c3ad974e53e4a"}, + {file = "pydantic_core-2.46.3-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2798b6ba041b9d70acfb9071a2ea13c8456dd1e6a5555798e41ba7b0790e329c"}, + {file = "pydantic_core-2.46.3-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9be3e221bdc6d69abf294dcf7aff6af19c31a5cdcc8f0aa3b14be29df4bd03b1"}, + {file = "pydantic_core-2.46.3-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f13936129ce841f2a5ddf6f126fea3c43cd128807b5a59588c37cf10178c2e64"}, + {file = "pydantic_core-2.46.3-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28b5f2ef03416facccb1c6ef744c69793175fd27e44ef15669201601cf423acb"}, + {file = "pydantic_core-2.46.3-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:830d1247d77ad23852314f069e9d7ddafeec5f684baf9d7e7065ed46a049c4e6"}, + {file = "pydantic_core-2.46.3-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d0793c90c1a3c74966e7975eaef3ed30ebdff3260a0f815a62a22adc17e4c01c"}, + {file = "pydantic_core-2.46.3-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:d2d0aead851b66f5245ec0c4fb2612ef457f8bbafefdf65a2bf9d6bac6140f47"}, + {file = "pydantic_core-2.46.3-cp314-cp314t-musllinux_1_1_armv7l.whl", hash = "sha256:2f40e4246676beb31c5ce77c38a55ca4e465c6b38d11ea1bd935420568e0b1ab"}, + {file = "pydantic_core-2.46.3-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:cf489cf8986c543939aeee17a09c04d6ffb43bfef8ca16fcbcc5cfdcbed24dba"}, + {file = "pydantic_core-2.46.3-cp314-cp314t-win32.whl", hash = "sha256:ffe0883b56cfc05798bf994164d2b2ff03efe2d22022a2bb080f3b626176dd56"}, + {file = "pydantic_core-2.46.3-cp314-cp314t-win_amd64.whl", hash = "sha256:706d9d0ce9cf4593d07270d8e9f53b161f90c57d315aeec4fb4fd7a8b10240d8"}, + {file = "pydantic_core-2.46.3-cp314-cp314t-win_arm64.whl", hash = "sha256:77706aeb41df6a76568434701e0917da10692da28cb69d5fb6919ce5fdb07374"}, + {file = "pydantic_core-2.46.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:fa3eb7c2995aa443687a825bc30395c8521b7c6ec201966e55debfd1128bcceb"}, + {file = "pydantic_core-2.46.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3d08782c4045f90724b44c95d35ebec0d67edb8a957a2ac81d5a8e4b8a200495"}, + {file = "pydantic_core-2.46.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:831eb19aa789a97356979e94c981e5667759301fb708d1c0d5adf1bc0098b873"}, + {file = "pydantic_core-2.46.3-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4335e87c7afa436a0dfa899e138d57a72f8aad542e2cf19c36fb428461caabd0"}, + {file = "pydantic_core-2.46.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99421e7684a60f7f3550a1d159ade5fdff1954baedb6bdd407cba6a307c9f27d"}, + {file = "pydantic_core-2.46.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd81f6907932ebac3abbe41378dac64b2380db1287e2aa64d8d88f78d170f51a"}, + {file = "pydantic_core-2.46.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f247596366f4221af52beddd65af1218797771d6989bc891a0b86ccaa019168"}, + {file = "pydantic_core-2.46.3-cp39-cp39-manylinux_2_31_riscv64.whl", hash = "sha256:6dff8cc884679df229ebc6d8eb2321ea6f8e091bc7d4886d4dc2e0e71452843c"}, + {file = "pydantic_core-2.46.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:68ef2f623dda6d5a9067ac014e406c020c780b2a358930a7e5c1b73702900720"}, + {file = "pydantic_core-2.46.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d56bdb4af1767cc15b0386b3c581fdfe659bb9ee4a4f776e92c1cd9d074000d6"}, + {file = "pydantic_core-2.46.3-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:91249bcb7c165c2fb2a2f852dbc5c91636e2e218e75d96dfdd517e4078e173dd"}, + {file = "pydantic_core-2.46.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4b068543bdb707f5d935dab765d99227aa2545ef2820935f2e5dd801795c7dbd"}, + {file = "pydantic_core-2.46.3-cp39-cp39-win32.whl", hash = "sha256:dcda6583921c05a40533f982321532f2d8db29326c7b95c4026941fa5074bd79"}, + {file = "pydantic_core-2.46.3-cp39-cp39-win_amd64.whl", hash = "sha256:a35cc284c8dd7edae8a31533713b4d2467dfe7c4f1b5587dd4031f28f90d1d13"}, + {file = "pydantic_core-2.46.3-graalpy311-graalpy242_311_native-macosx_10_12_x86_64.whl", hash = "sha256:9715525891ed524a0a1eb6d053c74d4d4ad5017677fb00af0b7c2644a31bae46"}, + {file = "pydantic_core-2.46.3-graalpy311-graalpy242_311_native-macosx_11_0_arm64.whl", hash = "sha256:9d2f400712a99a013aff420ef1eb9be077f8189a36c1e3ef87660b4e1088a874"}, + {file = "pydantic_core-2.46.3-graalpy311-graalpy242_311_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd2aab0e2e9dc2daf36bd2686c982535d5e7b1d930a1344a7bb6e82baab42a76"}, + {file = "pydantic_core-2.46.3-graalpy311-graalpy242_311_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e9d76736da5f362fabfeea6a69b13b7f2be405c6d6966f06b2f6bfff7e64531"}, + {file = "pydantic_core-2.46.3-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:b12dd51f1187c2eb489af8e20f880362db98e954b54ab792fa5d92e8bcc6b803"}, + {file = "pydantic_core-2.46.3-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:f00a0961b125f1a47af7bcc17f00782e12f4cd056f83416006b30111d941dfa3"}, + {file = "pydantic_core-2.46.3-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:57697d7c056aca4bbb680200f96563e841a6386ac1129370a0102592f4dddff5"}, + {file = "pydantic_core-2.46.3-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd35aa21299def8db7ef4fe5c4ff862941a9a158ca7b63d61e66fe67d30416b4"}, + {file = "pydantic_core-2.46.3-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:13afdd885f3d71280cf286b13b310ee0f7ccfefd1dbbb661514a474b726e2f25"}, + {file = "pydantic_core-2.46.3-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:f91c0aff3e3ee0928edd1232c57f643a7a003e6edf1860bc3afcdc749cb513f3"}, + {file = "pydantic_core-2.46.3-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6529d1d128321a58d30afcc97b49e98836542f68dd41b33c2e972bb9e5290536"}, + {file = "pydantic_core-2.46.3-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:975c267cff4f7e7272eacbe50f6cc03ca9a3da4c4fbd66fffd89c94c1e311aa1"}, + {file = "pydantic_core-2.46.3-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:2b8e4f2bbdf71415c544b4b1138b8060db7b6611bc927e8064c769f64bed651c"}, + {file = "pydantic_core-2.46.3-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:e61ea8e9fff9606d09178f577ff8ccdd7206ff73d6552bcec18e1033c4254b85"}, + {file = "pydantic_core-2.46.3-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:b504bda01bafc69b6d3c7a0c7f039dcf60f47fab70e06fe23f57b5c75bdc82b8"}, + {file = "pydantic_core-2.46.3-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:b00b76f7142fc60c762ce579bd29c8fa44aaa56592dd3c54fab3928d0d4ca6ff"}, + {file = "pydantic_core-2.46.3.tar.gz", hash = "sha256:41c178f65b8c29807239d47e6050262eb6bf84eb695e41101e62e38df4a5bc2c"}, +] + +[package.dependencies] +typing-extensions = ">=4.14.1" + +[[package]] +name = "pydantic-settings" +version = "2.14.0" +description = "Settings management using Pydantic" +optional = false +python-versions = ">=3.10" +groups = ["main"] +files = [ + {file = "pydantic_settings-2.14.0-py3-none-any.whl", hash = "sha256:fc8d5d692eb7092e43c8647c1c35a3ecd00e040fcf02ed86f4cb5458ca62182e"}, + {file = "pydantic_settings-2.14.0.tar.gz", hash = "sha256:24285fd4b0e0c06507dd9fdfd331ee23794305352aaec8fc4eb92d4047aeb67d"}, +] + +[package.dependencies] +pydantic = ">=2.7.0" +python-dotenv = ">=0.21.0" +typing-inspection = ">=0.4.0" + +[package.extras] +aws-secrets-manager = ["boto3 (>=1.35.0)", "types-boto3[secretsmanager]"] +azure-key-vault = ["azure-identity (>=1.16.0)", "azure-keyvault-secrets (>=4.8.0)"] +gcp-secret-manager = ["google-cloud-secret-manager (>=2.23.1)"] +toml = ["tomli (>=2.0.1)"] +yaml = ["pyyaml (>=6.0.1)"] + +[[package]] +name = "pygments" +version = "2.20.0" +description = "Pygments is a syntax highlighting package written in Python." +optional = false +python-versions = ">=3.9" +groups = ["main", "dev"] +files = [ + {file = "pygments-2.20.0-py3-none-any.whl", hash = "sha256:81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176"}, + {file = "pygments-2.20.0.tar.gz", hash = "sha256:6757cd03768053ff99f3039c1a36d6c0aa0b263438fcab17520b30a303a82b5f"}, +] + +[package.extras] +windows-terminal = ["colorama (>=0.4.6)"] + +[[package]] +name = "pyjwt" +version = "2.12.1" +description = "JSON Web Token implementation in Python" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "pyjwt-2.12.1-py3-none-any.whl", hash = "sha256:28ca37c070cad8ba8cd9790cd940535d40274d22f80ab87f3ac6a713e6e8454c"}, + {file = "pyjwt-2.12.1.tar.gz", hash = "sha256:c74a7a2adf861c04d002db713dd85f84beb242228e671280bf709d765b03672b"}, +] + +[package.dependencies] +cryptography = {version = ">=3.4.0", optional = true, markers = "extra == \"crypto\""} +typing_extensions = {version = ">=4.0", markers = "python_version < \"3.11\""} + +[package.extras] +crypto = ["cryptography (>=3.4.0)"] +dev = ["coverage[toml] (==7.10.7)", "cryptography (>=3.4.0)", "pre-commit", "pytest (>=8.4.2,<9.0.0)", "sphinx", "sphinx-rtd-theme", "zope.interface"] +docs = ["sphinx", "sphinx-rtd-theme", "zope.interface"] +tests = ["coverage[toml] (==7.10.7)", "pytest (>=8.4.2,<9.0.0)"] + +[[package]] +name = "pyperclip" +version = "1.11.0" +description = "A cross-platform clipboard module for Python. (Only handles plain text for now.)" +optional = false +python-versions = "*" +groups = ["main"] +files = [ + {file = "pyperclip-1.11.0-py3-none-any.whl", hash = "sha256:299403e9ff44581cb9ba2ffeed69c7aa96a008622ad0c46cb575ca75b5b84273"}, + {file = "pyperclip-1.11.0.tar.gz", hash = "sha256:244035963e4428530d9e3a6101a1ef97209c6825edab1567beac148ccc1db1b6"}, +] + +[[package]] +name = "pytest" +version = "9.0.3" +description = "pytest: simple powerful testing with Python" +optional = false +python-versions = ">=3.10" +groups = ["dev"] +files = [ + {file = "pytest-9.0.3-py3-none-any.whl", hash = "sha256:2c5efc453d45394fdd706ade797c0a81091eccd1d6e4bccfcd476e2b8e0ab5d9"}, + {file = "pytest-9.0.3.tar.gz", hash = "sha256:b86ada508af81d19edeb213c681b1d48246c1a91d304c6c81a427674c17eb91c"}, +] + +[package.dependencies] +colorama = {version = ">=0.4", markers = "sys_platform == \"win32\""} +exceptiongroup = {version = ">=1", markers = "python_version < \"3.11\""} +iniconfig = ">=1.0.1" +packaging = ">=22" +pluggy = ">=1.5,<2" +pygments = ">=2.7.2" +tomli = {version = ">=1", markers = "python_version < \"3.11\""} + +[package.extras] +dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "requests", "setuptools", "xmlschema"] + +[[package]] +name = "python-dotenv" +version = "1.2.2" +description = "Read key-value pairs from a .env file and set them as environment variables" +optional = false +python-versions = ">=3.10" +groups = ["main"] +files = [ + {file = "python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a"}, + {file = "python_dotenv-1.2.2.tar.gz", hash = "sha256:2c371a91fbd7ba082c2c1dc1f8bf89ca22564a087c2c287cd9b662adde799cf3"}, +] + +[package.extras] +cli = ["click (>=5.0)"] + +[[package]] +name = "python-multipart" +version = "0.0.26" +description = "A streaming multipart parser for Python" +optional = false +python-versions = ">=3.10" +groups = ["main"] +files = [ + {file = "python_multipart-0.0.26-py3-none-any.whl", hash = "sha256:c0b169f8c4484c13b0dcf2ef0ec3a4adb255c4b7d18d8e420477d2b1dd03f185"}, + {file = "python_multipart-0.0.26.tar.gz", hash = "sha256:08fadc45918cd615e26846437f50c5d6d23304da32c341f289a617127b081f17"}, +] + +[[package]] +name = "pywin32" +version = "311" +description = "Python for Window Extensions" +optional = false +python-versions = "*" +groups = ["main"] +markers = "sys_platform == \"win32\"" +files = [ + {file = "pywin32-311-cp310-cp310-win32.whl", hash = "sha256:d03ff496d2a0cd4a5893504789d4a15399133fe82517455e78bad62efbb7f0a3"}, + {file = "pywin32-311-cp310-cp310-win_amd64.whl", hash = "sha256:797c2772017851984b97180b0bebe4b620bb86328e8a884bb626156295a63b3b"}, + {file = "pywin32-311-cp310-cp310-win_arm64.whl", hash = "sha256:0502d1facf1fed4839a9a51ccbcc63d952cf318f78ffc00a7e78528ac27d7a2b"}, + {file = "pywin32-311-cp311-cp311-win32.whl", hash = "sha256:184eb5e436dea364dcd3d2316d577d625c0351bf237c4e9a5fabbcfa5a58b151"}, + {file = "pywin32-311-cp311-cp311-win_amd64.whl", hash = "sha256:3ce80b34b22b17ccbd937a6e78e7225d80c52f5ab9940fe0506a1a16f3dab503"}, + {file = "pywin32-311-cp311-cp311-win_arm64.whl", hash = "sha256:a733f1388e1a842abb67ffa8e7aad0e70ac519e09b0f6a784e65a136ec7cefd2"}, + {file = "pywin32-311-cp312-cp312-win32.whl", hash = "sha256:750ec6e621af2b948540032557b10a2d43b0cee2ae9758c54154d711cc852d31"}, + {file = "pywin32-311-cp312-cp312-win_amd64.whl", hash = "sha256:b8c095edad5c211ff31c05223658e71bf7116daa0ecf3ad85f3201ea3190d067"}, + {file = "pywin32-311-cp312-cp312-win_arm64.whl", hash = "sha256:e286f46a9a39c4a18b319c28f59b61de793654af2f395c102b4f819e584b5852"}, + {file = "pywin32-311-cp313-cp313-win32.whl", hash = "sha256:f95ba5a847cba10dd8c4d8fefa9f2a6cf283b8b88ed6178fa8a6c1ab16054d0d"}, + {file = "pywin32-311-cp313-cp313-win_amd64.whl", hash = "sha256:718a38f7e5b058e76aee1c56ddd06908116d35147e133427e59a3983f703a20d"}, + {file = "pywin32-311-cp313-cp313-win_arm64.whl", hash = "sha256:7b4075d959648406202d92a2310cb990fea19b535c7f4a78d3f5e10b926eeb8a"}, + {file = "pywin32-311-cp314-cp314-win32.whl", hash = "sha256:b7a2c10b93f8986666d0c803ee19b5990885872a7de910fc460f9b0c2fbf92ee"}, + {file = "pywin32-311-cp314-cp314-win_amd64.whl", hash = "sha256:3aca44c046bd2ed8c90de9cb8427f581c479e594e99b5c0bb19b29c10fd6cb87"}, + {file = "pywin32-311-cp314-cp314-win_arm64.whl", hash = "sha256:a508e2d9025764a8270f93111a970e1d0fbfc33f4153b388bb649b7eec4f9b42"}, + {file = "pywin32-311-cp38-cp38-win32.whl", hash = "sha256:6c6f2969607b5023b0d9ce2541f8d2cbb01c4f46bc87456017cf63b73f1e2d8c"}, + {file = "pywin32-311-cp38-cp38-win_amd64.whl", hash = "sha256:c8015b09fb9a5e188f83b7b04de91ddca4658cee2ae6f3bc483f0b21a77ef6cd"}, + {file = "pywin32-311-cp39-cp39-win32.whl", hash = "sha256:aba8f82d551a942cb20d4a83413ccbac30790b50efb89a75e4f586ac0bb8056b"}, + {file = "pywin32-311-cp39-cp39-win_amd64.whl", hash = "sha256:e0c4cfb0621281fe40387df582097fd796e80430597cb9944f0ae70447bacd91"}, + {file = "pywin32-311-cp39-cp39-win_arm64.whl", hash = "sha256:62ea666235135fee79bb154e695f3ff67370afefd71bd7fea7512fc70ef31e3d"}, +] + +[[package]] +name = "pywin32-ctypes" +version = "0.2.3" +description = "A (partial) reimplementation of pywin32 using ctypes/cffi" +optional = false +python-versions = ">=3.6" +groups = ["main"] +markers = "sys_platform == \"win32\"" +files = [ + {file = "pywin32-ctypes-0.2.3.tar.gz", hash = "sha256:d162dc04946d704503b2edc4d55f3dba5c1d539ead017afa00142c38b9885755"}, + {file = "pywin32_ctypes-0.2.3-py3-none-any.whl", hash = "sha256:8a1513379d709975552d202d942d9837758905c8d01eb82b8bcc30918929e7b8"}, +] + +[[package]] +name = "pyyaml" +version = "6.0.3" +description = "YAML parser and emitter for Python" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "PyYAML-6.0.3-cp38-cp38-macosx_10_13_x86_64.whl", hash = "sha256:c2514fceb77bc5e7a2f7adfaa1feb2fb311607c9cb518dbc378688ec73d8292f"}, + {file = "PyYAML-6.0.3-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9c57bb8c96f6d1808c030b1687b9b5fb476abaa47f0db9c0101f5e9f394e97f4"}, + {file = "PyYAML-6.0.3-cp38-cp38-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:efd7b85f94a6f21e4932043973a7ba2613b059c4a000551892ac9f1d11f5baf3"}, + {file = "PyYAML-6.0.3-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:22ba7cfcad58ef3ecddc7ed1db3409af68d023b7f940da23c6c2a1890976eda6"}, + {file = "PyYAML-6.0.3-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:6344df0d5755a2c9a276d4473ae6b90647e216ab4757f8426893b5dd2ac3f369"}, + {file = "PyYAML-6.0.3-cp38-cp38-win32.whl", hash = "sha256:3ff07ec89bae51176c0549bc4c63aa6202991da2d9a6129d7aef7f1407d3f295"}, + {file = "PyYAML-6.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:5cf4e27da7e3fbed4d6c3d8e797387aaad68102272f8f9752883bc32d61cb87b"}, + {file = "pyyaml-6.0.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b"}, + {file = "pyyaml-6.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956"}, + {file = "pyyaml-6.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b30236e45cf30d2b8e7b3e85881719e98507abed1011bf463a8fa23e9c3e98a8"}, + {file = "pyyaml-6.0.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:66291b10affd76d76f54fad28e22e51719ef9ba22b29e1d7d03d6777a9174198"}, + {file = "pyyaml-6.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9c7708761fccb9397fe64bbc0395abcae8c4bf7b0eac081e12b809bf47700d0b"}, + {file = "pyyaml-6.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:418cf3f2111bc80e0933b2cd8cd04f286338bb88bdc7bc8e6dd775ebde60b5e0"}, + {file = "pyyaml-6.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e0b74767e5f8c593e8c9b5912019159ed0533c70051e9cce3e8b6aa699fcd69"}, + {file = "pyyaml-6.0.3-cp310-cp310-win32.whl", hash = "sha256:28c8d926f98f432f88adc23edf2e6d4921ac26fb084b028c733d01868d19007e"}, + {file = "pyyaml-6.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:bdb2c67c6c1390b63c6ff89f210c8fd09d9a1217a465701eac7316313c915e4c"}, + {file = "pyyaml-6.0.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:44edc647873928551a01e7a563d7452ccdebee747728c1080d881d68af7b997e"}, + {file = "pyyaml-6.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:652cb6edd41e718550aad172851962662ff2681490a8a711af6a4d288dd96824"}, + {file = "pyyaml-6.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:10892704fc220243f5305762e276552a0395f7beb4dbf9b14ec8fd43b57f126c"}, + {file = "pyyaml-6.0.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:850774a7879607d3a6f50d36d04f00ee69e7fc816450e5f7e58d7f17f1ae5c00"}, + {file = "pyyaml-6.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b8bb0864c5a28024fac8a632c443c87c5aa6f215c0b126c449ae1a150412f31d"}, + {file = "pyyaml-6.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1d37d57ad971609cf3c53ba6a7e365e40660e3be0e5175fa9f2365a379d6095a"}, + {file = "pyyaml-6.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:37503bfbfc9d2c40b344d06b2199cf0e96e97957ab1c1b546fd4f87e53e5d3e4"}, + {file = "pyyaml-6.0.3-cp311-cp311-win32.whl", hash = "sha256:8098f252adfa6c80ab48096053f512f2321f0b998f98150cea9bd23d83e1467b"}, + {file = "pyyaml-6.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:9f3bfb4965eb874431221a3ff3fdcddc7e74e3b07799e0e84ca4a0f867d449bf"}, + {file = "pyyaml-6.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196"}, + {file = "pyyaml-6.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0"}, + {file = "pyyaml-6.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9149cad251584d5fb4981be1ecde53a1ca46c891a79788c0df828d2f166bda28"}, + {file = "pyyaml-6.0.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5fdec68f91a0c6739b380c83b951e2c72ac0197ace422360e6d5a959d8d97b2c"}, + {file = "pyyaml-6.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc"}, + {file = "pyyaml-6.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8dc52c23056b9ddd46818a57b78404882310fb473d63f17b07d5c40421e47f8e"}, + {file = "pyyaml-6.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41715c910c881bc081f1e8872880d3c650acf13dfa8214bad49ed4cede7c34ea"}, + {file = "pyyaml-6.0.3-cp312-cp312-win32.whl", hash = "sha256:96b533f0e99f6579b3d4d4995707cf36df9100d67e0c8303a0c55b27b5f99bc5"}, + {file = "pyyaml-6.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b"}, + {file = "pyyaml-6.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:64386e5e707d03a7e172c0701abfb7e10f0fb753ee1d773128192742712a98fd"}, + {file = "pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8"}, + {file = "pyyaml-6.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1"}, + {file = "pyyaml-6.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c"}, + {file = "pyyaml-6.0.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5"}, + {file = "pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6"}, + {file = "pyyaml-6.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6"}, + {file = "pyyaml-6.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be"}, + {file = "pyyaml-6.0.3-cp313-cp313-win32.whl", hash = "sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26"}, + {file = "pyyaml-6.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c"}, + {file = "pyyaml-6.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb"}, + {file = "pyyaml-6.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:8d1fab6bb153a416f9aeb4b8763bc0f22a5586065f86f7664fc23339fc1c1fac"}, + {file = "pyyaml-6.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:34d5fcd24b8445fadc33f9cf348c1047101756fd760b4dacb5c3e99755703310"}, + {file = "pyyaml-6.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:501a031947e3a9025ed4405a168e6ef5ae3126c59f90ce0cd6f2bfc477be31b7"}, + {file = "pyyaml-6.0.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b3bc83488de33889877a0f2543ade9f70c67d66d9ebb4ac959502e12de895788"}, + {file = "pyyaml-6.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c458b6d084f9b935061bc36216e8a69a7e293a2f1e68bf956dcd9e6cbcd143f5"}, + {file = "pyyaml-6.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7c6610def4f163542a622a73fb39f534f8c101d690126992300bf3207eab9764"}, + {file = "pyyaml-6.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5190d403f121660ce8d1d2c1bb2ef1bd05b5f68533fc5c2ea899bd15f4399b35"}, + {file = "pyyaml-6.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:4a2e8cebe2ff6ab7d1050ecd59c25d4c8bd7e6f400f5f82b96557ac0abafd0ac"}, + {file = "pyyaml-6.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:93dda82c9c22deb0a405ea4dc5f2d0cda384168e466364dec6255b293923b2f3"}, + {file = "pyyaml-6.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:02893d100e99e03eda1c8fd5c441d8c60103fd175728e23e431db1b589cf5ab3"}, + {file = "pyyaml-6.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c1ff362665ae507275af2853520967820d9124984e0f7466736aea23d8611fba"}, + {file = "pyyaml-6.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6adc77889b628398debc7b65c073bcb99c4a0237b248cacaf3fe8a557563ef6c"}, + {file = "pyyaml-6.0.3-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a80cb027f6b349846a3bf6d73b5e95e782175e52f22108cfa17876aaeff93702"}, + {file = "pyyaml-6.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:00c4bdeba853cc34e7dd471f16b4114f4162dc03e6b7afcc2128711f0eca823c"}, + {file = "pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:66e1674c3ef6f541c35191caae2d429b967b99e02040f5ba928632d9a7f0f065"}, + {file = "pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:16249ee61e95f858e83976573de0f5b2893b3677ba71c9dd36b9cf8be9ac6d65"}, + {file = "pyyaml-6.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4ad1906908f2f5ae4e5a8ddfce73c320c2a1429ec52eafd27138b7f1cbe341c9"}, + {file = "pyyaml-6.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b"}, + {file = "pyyaml-6.0.3-cp39-cp39-macosx_10_13_x86_64.whl", hash = "sha256:b865addae83924361678b652338317d1bd7e79b1f4596f96b96c77a5a34b34da"}, + {file = "pyyaml-6.0.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c3355370a2c156cffb25e876646f149d5d68f5e0a3ce86a5084dd0b64a994917"}, + {file = "pyyaml-6.0.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3c5677e12444c15717b902a5798264fa7909e41153cdf9ef7ad571b704a63dd9"}, + {file = "pyyaml-6.0.3-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5ed875a24292240029e4483f9d4a4b8a1ae08843b9c54f43fcc11e404532a8a5"}, + {file = "pyyaml-6.0.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0150219816b6a1fa26fb4699fb7daa9caf09eb1999f3b70fb6e786805e80375a"}, + {file = "pyyaml-6.0.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:fa160448684b4e94d80416c0fa4aac48967a969efe22931448d853ada8baf926"}, + {file = "pyyaml-6.0.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:27c0abcb4a5dac13684a37f76e701e054692a9b2d3064b70f5e4eb54810553d7"}, + {file = "pyyaml-6.0.3-cp39-cp39-win32.whl", hash = "sha256:1ebe39cb5fc479422b83de611d14e2c0d3bb2a18bbcb01f229ab3cfbd8fee7a0"}, + {file = "pyyaml-6.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:2e71d11abed7344e42a8849600193d15b6def118602c4c176f748e4583246007"}, + {file = "pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f"}, +] + +[[package]] +name = "referencing" +version = "0.37.0" +description = "JSON Referencing + Python" +optional = false +python-versions = ">=3.10" +groups = ["main"] +files = [ + {file = "referencing-0.37.0-py3-none-any.whl", hash = "sha256:381329a9f99628c9069361716891d34ad94af76e461dcb0335825aecc7692231"}, + {file = "referencing-0.37.0.tar.gz", hash = "sha256:44aefc3142c5b842538163acb373e24cce6632bd54bdb01b21ad5863489f50d8"}, +] + +[package.dependencies] +attrs = ">=22.2.0" +rpds-py = ">=0.7.0" +typing-extensions = {version = ">=4.4.0", markers = "python_version < \"3.13\""} + +[[package]] +name = "rich" +version = "15.0.0" +description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" +optional = false +python-versions = ">=3.9.0" +groups = ["main"] +files = [ + {file = "rich-15.0.0-py3-none-any.whl", hash = "sha256:33bd4ef74232fb73fe9279a257718407f169c09b78a87ad3d296f548e27de0bb"}, + {file = "rich-15.0.0.tar.gz", hash = "sha256:edd07a4824c6b40189fb7ac9bc4c52536e9780fbbfbddf6f1e2502c31b068c36"}, +] + +[package.dependencies] +markdown-it-py = ">=2.2.0" +pygments = ">=2.13.0,<3.0.0" + +[package.extras] +jupyter = ["ipywidgets (>=7.5.1,<9)"] + +[[package]] +name = "rich-rst" +version = "1.3.2" +description = "A beautiful reStructuredText renderer for rich" +optional = false +python-versions = "*" +groups = ["main"] +files = [ + {file = "rich_rst-1.3.2-py3-none-any.whl", hash = "sha256:a99b4907cbe118cf9d18b0b44de272efa61f15117c61e39ebdc431baf5df722a"}, + {file = "rich_rst-1.3.2.tar.gz", hash = "sha256:a1196fdddf1e364b02ec68a05e8ff8f6914fee10fbca2e6b6735f166bb0da8d4"}, +] + +[package.dependencies] +docutils = "*" +rich = ">=12.0.0" + +[package.extras] +docs = ["sphinx"] + +[[package]] +name = "rpds-py" +version = "0.30.0" +description = "Python bindings to Rust's persistent data structures (rpds)" +optional = false +python-versions = ">=3.10" +groups = ["main"] +files = [ + {file = "rpds_py-0.30.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:679ae98e00c0e8d68a7fda324e16b90fd5260945b45d3b824c892cec9eea3288"}, + {file = "rpds_py-0.30.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4cc2206b76b4f576934f0ed374b10d7ca5f457858b157ca52064bdfc26b9fc00"}, + {file = "rpds_py-0.30.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:389a2d49eded1896c3d48b0136ead37c48e221b391c052fba3f4055c367f60a6"}, + {file = "rpds_py-0.30.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:32c8528634e1bf7121f3de08fa85b138f4e0dc47657866630611b03967f041d7"}, + {file = "rpds_py-0.30.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f207f69853edd6f6700b86efb84999651baf3789e78a466431df1331608e5324"}, + {file = "rpds_py-0.30.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:67b02ec25ba7a9e8fa74c63b6ca44cf5707f2fbfadae3ee8e7494297d56aa9df"}, + {file = "rpds_py-0.30.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c0e95f6819a19965ff420f65578bacb0b00f251fefe2c8b23347c37174271f3"}, + {file = "rpds_py-0.30.0-cp310-cp310-manylinux_2_31_riscv64.whl", hash = "sha256:a452763cc5198f2f98898eb98f7569649fe5da666c2dc6b5ddb10fde5a574221"}, + {file = "rpds_py-0.30.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e0b65193a413ccc930671c55153a03ee57cecb49e6227204b04fae512eb657a7"}, + {file = "rpds_py-0.30.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:858738e9c32147f78b3ac24dc0edb6610000e56dc0f700fd5f651d0a0f0eb9ff"}, + {file = "rpds_py-0.30.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:da279aa314f00acbb803da1e76fa18666778e8a8f83484fba94526da5de2cba7"}, + {file = "rpds_py-0.30.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7c64d38fb49b6cdeda16ab49e35fe0da2e1e9b34bc38bd78386530f218b37139"}, + {file = "rpds_py-0.30.0-cp310-cp310-win32.whl", hash = "sha256:6de2a32a1665b93233cde140ff8b3467bdb9e2af2b91079f0333a0974d12d464"}, + {file = "rpds_py-0.30.0-cp310-cp310-win_amd64.whl", hash = "sha256:1726859cd0de969f88dc8673bdd954185b9104e05806be64bcd87badbe313169"}, + {file = "rpds_py-0.30.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:a2bffea6a4ca9f01b3f8e548302470306689684e61602aa3d141e34da06cf425"}, + {file = "rpds_py-0.30.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dc4f992dfe1e2bc3ebc7444f6c7051b4bc13cd8e33e43511e8ffd13bf407010d"}, + {file = "rpds_py-0.30.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:422c3cb9856d80b09d30d2eb255d0754b23e090034e1deb4083f8004bd0761e4"}, + {file = "rpds_py-0.30.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:07ae8a593e1c3c6b82ca3292efbe73c30b61332fd612e05abee07c79359f292f"}, + {file = "rpds_py-0.30.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:12f90dd7557b6bd57f40abe7747e81e0c0b119bef015ea7726e69fe550e394a4"}, + {file = "rpds_py-0.30.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:99b47d6ad9a6da00bec6aabe5a6279ecd3c06a329d4aa4771034a21e335c3a97"}, + {file = "rpds_py-0.30.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:33f559f3104504506a44bb666b93a33f5d33133765b0c216a5bf2f1e1503af89"}, + {file = "rpds_py-0.30.0-cp311-cp311-manylinux_2_31_riscv64.whl", hash = "sha256:946fe926af6e44f3697abbc305ea168c2c31d3e3ef1058cf68f379bf0335a78d"}, + {file = "rpds_py-0.30.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:495aeca4b93d465efde585977365187149e75383ad2684f81519f504f5c13038"}, + {file = "rpds_py-0.30.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d9a0ca5da0386dee0655b4ccdf46119df60e0f10da268d04fe7cc87886872ba7"}, + {file = "rpds_py-0.30.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8d6d1cc13664ec13c1b84241204ff3b12f9bb82464b8ad6e7a5d3486975c2eed"}, + {file = "rpds_py-0.30.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3896fa1be39912cf0757753826bc8bdc8ca331a28a7c4ae46b7a21280b06bb85"}, + {file = "rpds_py-0.30.0-cp311-cp311-win32.whl", hash = "sha256:55f66022632205940f1827effeff17c4fa7ae1953d2b74a8581baaefb7d16f8c"}, + {file = "rpds_py-0.30.0-cp311-cp311-win_amd64.whl", hash = "sha256:a51033ff701fca756439d641c0ad09a41d9242fa69121c7d8769604a0a629825"}, + {file = "rpds_py-0.30.0-cp311-cp311-win_arm64.whl", hash = "sha256:47b0ef6231c58f506ef0b74d44e330405caa8428e770fec25329ed2cb971a229"}, + {file = "rpds_py-0.30.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a161f20d9a43006833cd7068375a94d035714d73a172b681d8881820600abfad"}, + {file = "rpds_py-0.30.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6abc8880d9d036ecaafe709079969f56e876fcf107f7a8e9920ba6d5a3878d05"}, + {file = "rpds_py-0.30.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca28829ae5f5d569bb62a79512c842a03a12576375d5ece7d2cadf8abe96ec28"}, + {file = "rpds_py-0.30.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a1010ed9524c73b94d15919ca4d41d8780980e1765babf85f9a2f90d247153dd"}, + {file = "rpds_py-0.30.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f8d1736cfb49381ba528cd5baa46f82fdc65c06e843dab24dd70b63d09121b3f"}, + {file = "rpds_py-0.30.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d948b135c4693daff7bc2dcfc4ec57237a29bd37e60c2fabf5aff2bbacf3e2f1"}, + {file = "rpds_py-0.30.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47f236970bccb2233267d89173d3ad2703cd36a0e2a6e92d0560d333871a3d23"}, + {file = "rpds_py-0.30.0-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:2e6ecb5a5bcacf59c3f912155044479af1d0b6681280048b338b28e364aca1f6"}, + {file = "rpds_py-0.30.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a8fa71a2e078c527c3e9dc9fc5a98c9db40bcc8a92b4e8858e36d329f8684b51"}, + {file = "rpds_py-0.30.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:73c67f2db7bc334e518d097c6d1e6fed021bbc9b7d678d6cc433478365d1d5f5"}, + {file = "rpds_py-0.30.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:5ba103fb455be00f3b1c2076c9d4264bfcb037c976167a6047ed82f23153f02e"}, + {file = "rpds_py-0.30.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7cee9c752c0364588353e627da8a7e808a66873672bcb5f52890c33fd965b394"}, + {file = "rpds_py-0.30.0-cp312-cp312-win32.whl", hash = "sha256:1ab5b83dbcf55acc8b08fc62b796ef672c457b17dbd7820a11d6c52c06839bdf"}, + {file = "rpds_py-0.30.0-cp312-cp312-win_amd64.whl", hash = "sha256:a090322ca841abd453d43456ac34db46e8b05fd9b3b4ac0c78bcde8b089f959b"}, + {file = "rpds_py-0.30.0-cp312-cp312-win_arm64.whl", hash = "sha256:669b1805bd639dd2989b281be2cfd951c6121b65e729d9b843e9639ef1fd555e"}, + {file = "rpds_py-0.30.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:f83424d738204d9770830d35290ff3273fbb02b41f919870479fab14b9d303b2"}, + {file = "rpds_py-0.30.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e7536cd91353c5273434b4e003cbda89034d67e7710eab8761fd918ec6c69cf8"}, + {file = "rpds_py-0.30.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2771c6c15973347f50fece41fc447c054b7ac2ae0502388ce3b6738cd366e3d4"}, + {file = "rpds_py-0.30.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0a59119fc6e3f460315fe9d08149f8102aa322299deaa5cab5b40092345c2136"}, + {file = "rpds_py-0.30.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:76fec018282b4ead0364022e3c54b60bf368b9d926877957a8624b58419169b7"}, + {file = "rpds_py-0.30.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:692bef75a5525db97318e8cd061542b5a79812d711ea03dbc1f6f8dbb0c5f0d2"}, + {file = "rpds_py-0.30.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9027da1ce107104c50c81383cae773ef5c24d296dd11c99e2629dbd7967a20c6"}, + {file = "rpds_py-0.30.0-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:9cf69cdda1f5968a30a359aba2f7f9aa648a9ce4b580d6826437f2b291cfc86e"}, + {file = "rpds_py-0.30.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a4796a717bf12b9da9d3ad002519a86063dcac8988b030e405704ef7d74d2d9d"}, + {file = "rpds_py-0.30.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5d4c2aa7c50ad4728a094ebd5eb46c452e9cb7edbfdb18f9e1221f597a73e1e7"}, + {file = "rpds_py-0.30.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ba81a9203d07805435eb06f536d95a266c21e5b2dfbf6517748ca40c98d19e31"}, + {file = "rpds_py-0.30.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:945dccface01af02675628334f7cf49c2af4c1c904748efc5cf7bbdf0b579f95"}, + {file = "rpds_py-0.30.0-cp313-cp313-win32.whl", hash = "sha256:b40fb160a2db369a194cb27943582b38f79fc4887291417685f3ad693c5a1d5d"}, + {file = "rpds_py-0.30.0-cp313-cp313-win_amd64.whl", hash = "sha256:806f36b1b605e2d6a72716f321f20036b9489d29c51c91f4dd29a3e3afb73b15"}, + {file = "rpds_py-0.30.0-cp313-cp313-win_arm64.whl", hash = "sha256:d96c2086587c7c30d44f31f42eae4eac89b60dabbac18c7669be3700f13c3ce1"}, + {file = "rpds_py-0.30.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:eb0b93f2e5c2189ee831ee43f156ed34e2a89a78a66b98cadad955972548be5a"}, + {file = "rpds_py-0.30.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:922e10f31f303c7c920da8981051ff6d8c1a56207dbdf330d9047f6d30b70e5e"}, + {file = "rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cdc62c8286ba9bf7f47befdcea13ea0e26bf294bda99758fd90535cbaf408000"}, + {file = "rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:47f9a91efc418b54fb8190a6b4aa7813a23fb79c51f4bb84e418f5476c38b8db"}, + {file = "rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1f3587eb9b17f3789ad50824084fa6f81921bbf9a795826570bda82cb3ed91f2"}, + {file = "rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:39c02563fc592411c2c61d26b6c5fe1e51eaa44a75aa2c8735ca88b0d9599daa"}, + {file = "rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51a1234d8febafdfd33a42d97da7a43f5dcb120c1060e352a3fbc0c6d36e2083"}, + {file = "rpds_py-0.30.0-cp313-cp313t-manylinux_2_31_riscv64.whl", hash = "sha256:eb2c4071ab598733724c08221091e8d80e89064cd472819285a9ab0f24bcedb9"}, + {file = "rpds_py-0.30.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6bdfdb946967d816e6adf9a3d8201bfad269c67efe6cefd7093ef959683c8de0"}, + {file = "rpds_py-0.30.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c77afbd5f5250bf27bf516c7c4a016813eb2d3e116139aed0096940c5982da94"}, + {file = "rpds_py-0.30.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:61046904275472a76c8c90c9ccee9013d70a6d0f73eecefd38c1ae7c39045a08"}, + {file = "rpds_py-0.30.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4c5f36a861bc4b7da6516dbdf302c55313afa09b81931e8280361a4f6c9a2d27"}, + {file = "rpds_py-0.30.0-cp313-cp313t-win32.whl", hash = "sha256:3d4a69de7a3e50ffc214ae16d79d8fbb0922972da0356dcf4d0fdca2878559c6"}, + {file = "rpds_py-0.30.0-cp313-cp313t-win_amd64.whl", hash = "sha256:f14fc5df50a716f7ece6a80b6c78bb35ea2ca47c499e422aa4463455dd96d56d"}, + {file = "rpds_py-0.30.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:68f19c879420aa08f61203801423f6cd5ac5f0ac4ac82a2368a9fcd6a9a075e0"}, + {file = "rpds_py-0.30.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ec7c4490c672c1a0389d319b3a9cfcd098dcdc4783991553c332a15acf7249be"}, + {file = "rpds_py-0.30.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f251c812357a3fed308d684a5079ddfb9d933860fc6de89f2b7ab00da481e65f"}, + {file = "rpds_py-0.30.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ac98b175585ecf4c0348fd7b29c3864bda53b805c773cbf7bfdaffc8070c976f"}, + {file = "rpds_py-0.30.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3e62880792319dbeb7eb866547f2e35973289e7d5696c6e295476448f5b63c87"}, + {file = "rpds_py-0.30.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4e7fc54e0900ab35d041b0601431b0a0eb495f0851a0639b6ef90f7741b39a18"}, + {file = "rpds_py-0.30.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47e77dc9822d3ad616c3d5759ea5631a75e5809d5a28707744ef79d7a1bcfcad"}, + {file = "rpds_py-0.30.0-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:b4dc1a6ff022ff85ecafef7979a2c6eb423430e05f1165d6688234e62ba99a07"}, + {file = "rpds_py-0.30.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4559c972db3a360808309e06a74628b95eaccbf961c335c8fe0d590cf587456f"}, + {file = "rpds_py-0.30.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:0ed177ed9bded28f8deb6ab40c183cd1192aa0de40c12f38be4d59cd33cb5c65"}, + {file = "rpds_py-0.30.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:ad1fa8db769b76ea911cb4e10f049d80bf518c104f15b3edb2371cc65375c46f"}, + {file = "rpds_py-0.30.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:46e83c697b1f1c72b50e5ee5adb4353eef7406fb3f2043d64c33f20ad1c2fc53"}, + {file = "rpds_py-0.30.0-cp314-cp314-win32.whl", hash = "sha256:ee454b2a007d57363c2dfd5b6ca4a5d7e2c518938f8ed3b706e37e5d470801ed"}, + {file = "rpds_py-0.30.0-cp314-cp314-win_amd64.whl", hash = "sha256:95f0802447ac2d10bcc69f6dc28fe95fdf17940367b21d34e34c737870758950"}, + {file = "rpds_py-0.30.0-cp314-cp314-win_arm64.whl", hash = "sha256:613aa4771c99f03346e54c3f038e4cc574ac09a3ddfb0e8878487335e96dead6"}, + {file = "rpds_py-0.30.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:7e6ecfcb62edfd632e56983964e6884851786443739dbfe3582947e87274f7cb"}, + {file = "rpds_py-0.30.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:a1d0bc22a7cdc173fedebb73ef81e07faef93692b8c1ad3733b67e31e1b6e1b8"}, + {file = "rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d08f00679177226c4cb8c5265012eea897c8ca3b93f429e546600c971bcbae7"}, + {file = "rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5965af57d5848192c13534f90f9dd16464f3c37aaf166cc1da1cae1fd5a34898"}, + {file = "rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9a4e86e34e9ab6b667c27f3211ca48f73dba7cd3d90f8d5b11be56e5dbc3fb4e"}, + {file = "rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e5d3e6b26f2c785d65cc25ef1e5267ccbe1b069c5c21b8cc724efee290554419"}, + {file = "rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:626a7433c34566535b6e56a1b39a7b17ba961e97ce3b80ec62e6f1312c025551"}, + {file = "rpds_py-0.30.0-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:acd7eb3f4471577b9b5a41baf02a978e8bdeb08b4b355273994f8b87032000a8"}, + {file = "rpds_py-0.30.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fe5fa731a1fa8a0a56b0977413f8cacac1768dad38d16b3a296712709476fbd5"}, + {file = "rpds_py-0.30.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:74a3243a411126362712ee1524dfc90c650a503502f135d54d1b352bd01f2404"}, + {file = "rpds_py-0.30.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:3e8eeb0544f2eb0d2581774be4c3410356eba189529a6b3e36bbbf9696175856"}, + {file = "rpds_py-0.30.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:dbd936cde57abfee19ab3213cf9c26be06d60750e60a8e4dd85d1ab12c8b1f40"}, + {file = "rpds_py-0.30.0-cp314-cp314t-win32.whl", hash = "sha256:dc824125c72246d924f7f796b4f63c1e9dc810c7d9e2355864b3c3a73d59ade0"}, + {file = "rpds_py-0.30.0-cp314-cp314t-win_amd64.whl", hash = "sha256:27f4b0e92de5bfbc6f86e43959e6edd1425c33b5e69aab0984a72047f2bcf1e3"}, + {file = "rpds_py-0.30.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c2262bdba0ad4fc6fb5545660673925c2d2a5d9e2e0fb603aad545427be0fc58"}, + {file = "rpds_py-0.30.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:ee6af14263f25eedc3bb918a3c04245106a42dfd4f5c2285ea6f997b1fc3f89a"}, + {file = "rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3adbb8179ce342d235c31ab8ec511e66c73faa27a47e076ccc92421add53e2bb"}, + {file = "rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:250fa00e9543ac9b97ac258bd37367ff5256666122c2d0f2bc97577c60a1818c"}, + {file = "rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9854cf4f488b3d57b9aaeb105f06d78e5529d3145b1e4a41750167e8c213c6d3"}, + {file = "rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:993914b8e560023bc0a8bf742c5f303551992dcb85e247b1e5c7f4a7d145bda5"}, + {file = "rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58edca431fb9b29950807e301826586e5bbf24163677732429770a697ffe6738"}, + {file = "rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_31_riscv64.whl", hash = "sha256:dea5b552272a944763b34394d04577cf0f9bd013207bc32323b5a89a53cf9c2f"}, + {file = "rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ba3af48635eb83d03f6c9735dfb21785303e73d22ad03d489e88adae6eab8877"}, + {file = "rpds_py-0.30.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:dff13836529b921e22f15cb099751209a60009731a68519630a24d61f0b1b30a"}, + {file = "rpds_py-0.30.0-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:1b151685b23929ab7beec71080a8889d4d6d9fa9a983d213f07121205d48e2c4"}, + {file = "rpds_py-0.30.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:ac37f9f516c51e5753f27dfdef11a88330f04de2d564be3991384b2f3535d02e"}, + {file = "rpds_py-0.30.0.tar.gz", hash = "sha256:dd8ff7cf90014af0c0f787eea34794ebf6415242ee1d6fa91eaba725cc441e84"}, +] + +[[package]] +name = "secretstorage" +version = "3.5.0" +description = "Python bindings to FreeDesktop.org Secret Service API" +optional = false +python-versions = ">=3.10" +groups = ["main"] +markers = "sys_platform == \"linux\"" +files = [ + {file = "secretstorage-3.5.0-py3-none-any.whl", hash = "sha256:0ce65888c0725fcb2c5bc0fdb8e5438eece02c523557ea40ce0703c266248137"}, + {file = "secretstorage-3.5.0.tar.gz", hash = "sha256:f04b8e4689cbce351744d5537bf6b1329c6fc68f91fa666f60a380edddcd11be"}, +] + +[package.dependencies] +cryptography = ">=2.0" +jeepney = ">=0.6" + +[[package]] +name = "sse-starlette" +version = "3.3.4" +description = "SSE plugin for Starlette" +optional = false +python-versions = ">=3.10" +groups = ["main"] +files = [ + {file = "sse_starlette-3.3.4-py3-none-any.whl", hash = "sha256:84bb06e58939a8b38d8341f1bc9792f06c2b53f48c608dd207582b664fc8f3c1"}, + {file = "sse_starlette-3.3.4.tar.gz", hash = "sha256:aaf92fc067af8a5427192895ac028e947b484ac01edbc3caf00e7e7137c7bef1"}, +] + +[package.dependencies] +anyio = ">=4.7.0" +starlette = ">=0.49.1" + +[package.extras] +daphne = ["daphne (>=4.2.0)"] +examples = ["aiosqlite (>=0.21.0)", "fastapi (>=0.115.12)", "sqlalchemy[asyncio] (>=2.0.41)", "uvicorn (>=0.34.0)"] +granian = ["granian (>=2.3.1)"] +uvicorn = ["uvicorn (>=0.34.0)"] + +[[package]] +name = "starlette" +version = "1.0.0" +description = "The little ASGI library that shines." +optional = false +python-versions = ">=3.10" +groups = ["main"] +files = [ + {file = "starlette-1.0.0-py3-none-any.whl", hash = "sha256:d3ec55e0bb321692d275455ddfd3df75fff145d009685eb40dc91fc66b03d38b"}, + {file = "starlette-1.0.0.tar.gz", hash = "sha256:6a4beaf1f81bb472fd19ea9b918b50dc3a77a6f2e190a12954b25e6ed5eea149"}, +] + +[package.dependencies] +anyio = ">=3.6.2,<5" +typing-extensions = {version = ">=4.10.0", markers = "python_version < \"3.13\""} + +[package.extras] +full = ["httpx (>=0.27.0,<0.29.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.18)", "pyyaml"] + +[[package]] +name = "tomli" +version = "2.4.1" +description = "A lil' TOML parser" +optional = false +python-versions = ">=3.8" +groups = ["main", "dev"] +markers = "python_version == \"3.10\"" +files = [ + {file = "tomli-2.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f8f0fc26ec2cc2b965b7a3b87cd19c5c6b8c5e5f436b984e85f486d652285c30"}, + {file = "tomli-2.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4ab97e64ccda8756376892c53a72bd1f964e519c77236368527f758fbc36a53a"}, + {file = "tomli-2.4.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:96481a5786729fd470164b47cdb3e0e58062a496f455ee41b4403be77cb5a076"}, + {file = "tomli-2.4.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5a881ab208c0baf688221f8cecc5401bd291d67e38a1ac884d6736cbcd8247e9"}, + {file = "tomli-2.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:47149d5bd38761ac8be13a84864bf0b7b70bc051806bc3669ab1cbc56216b23c"}, + {file = "tomli-2.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ec9bfaf3ad2df51ace80688143a6a4ebc09a248f6ff781a9945e51937008fcbc"}, + {file = "tomli-2.4.1-cp311-cp311-win32.whl", hash = "sha256:ff2983983d34813c1aeb0fa89091e76c3a22889ee83ab27c5eeb45100560c049"}, + {file = "tomli-2.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:5ee18d9ebdb417e384b58fe414e8d6af9f4e7a0ae761519fb50f721de398dd4e"}, + {file = "tomli-2.4.1-cp311-cp311-win_arm64.whl", hash = "sha256:c2541745709bad0264b7d4705ad453b76ccd191e64aa6f0fc66b69a293a45ece"}, + {file = "tomli-2.4.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c742f741d58a28940ce01d58f0ab2ea3ced8b12402f162f4d534dfe18ba1cd6a"}, + {file = "tomli-2.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7f86fd587c4ed9dd76f318225e7d9b29cfc5a9d43de44e5754db8d1128487085"}, + {file = "tomli-2.4.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ff18e6a727ee0ab0388507b89d1bc6a22b138d1e2fa56d1ad494586d61d2eae9"}, + {file = "tomli-2.4.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:136443dbd7e1dee43c68ac2694fde36b2849865fa258d39bf822c10e8068eac5"}, + {file = "tomli-2.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5e262d41726bc187e69af7825504c933b6794dc3fbd5945e41a79bb14c31f585"}, + {file = "tomli-2.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5cb41aa38891e073ee49d55fbc7839cfdb2bc0e600add13874d048c94aadddd1"}, + {file = "tomli-2.4.1-cp312-cp312-win32.whl", hash = "sha256:da25dc3563bff5965356133435b757a795a17b17d01dbc0f42fb32447ddfd917"}, + {file = "tomli-2.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:52c8ef851d9a240f11a88c003eacb03c31fc1c9c4ec64a99a0f922b93874fda9"}, + {file = "tomli-2.4.1-cp312-cp312-win_arm64.whl", hash = "sha256:f758f1b9299d059cc3f6546ae2af89670cb1c4d48ea29c3cacc4fe7de3058257"}, + {file = "tomli-2.4.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:36d2bd2ad5fb9eaddba5226aa02c8ec3fa4f192631e347b3ed28186d43be6b54"}, + {file = "tomli-2.4.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:eb0dc4e38e6a1fd579e5d50369aa2e10acfc9cace504579b2faabb478e76941a"}, + {file = "tomli-2.4.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c7f2c7f2b9ca6bdeef8f0fa897f8e05085923eb091721675170254cbc5b02897"}, + {file = "tomli-2.4.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f3c6818a1a86dd6dca7ddcaaf76947d5ba31aecc28cb1b67009a5877c9a64f3f"}, + {file = "tomli-2.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d312ef37c91508b0ab2cee7da26ec0b3ed2f03ce12bd87a588d771ae15dcf82d"}, + {file = "tomli-2.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:51529d40e3ca50046d7606fa99ce3956a617f9b36380da3b7f0dd3dd28e68cb5"}, + {file = "tomli-2.4.1-cp313-cp313-win32.whl", hash = "sha256:2190f2e9dd7508d2a90ded5ed369255980a1bcdd58e52f7fe24b8162bf9fedbd"}, + {file = "tomli-2.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:8d65a2fbf9d2f8352685bc1364177ee3923d6baf5e7f43ea4959d7d8bc326a36"}, + {file = "tomli-2.4.1-cp313-cp313-win_arm64.whl", hash = "sha256:4b605484e43cdc43f0954ddae319fb75f04cc10dd80d830540060ee7cd0243cd"}, + {file = "tomli-2.4.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:fd0409a3653af6c147209d267a0e4243f0ae46b011aa978b1080359fddc9b6cf"}, + {file = "tomli-2.4.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:a120733b01c45e9a0c34aeef92bf0cf1d56cfe81ed9d47d562f9ed591a9828ac"}, + {file = "tomli-2.4.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:559db847dc486944896521f68d8190be1c9e719fced785720d2216fe7022b662"}, + {file = "tomli-2.4.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:01f520d4f53ef97964a240a035ec2a869fe1a37dde002b57ebc4417a27ccd853"}, + {file = "tomli-2.4.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7f94b27a62cfad8496c8d2513e1a222dd446f095fca8987fceef261225538a15"}, + {file = "tomli-2.4.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:ede3e6487c5ef5d28634ba3f31f989030ad6af71edfb0055cbbd14189ff240ba"}, + {file = "tomli-2.4.1-cp314-cp314-win32.whl", hash = "sha256:3d48a93ee1c9b79c04bb38772ee1b64dcf18ff43085896ea460ca8dec96f35f6"}, + {file = "tomli-2.4.1-cp314-cp314-win_amd64.whl", hash = "sha256:88dceee75c2c63af144e456745e10101eb67361050196b0b6af5d717254dddf7"}, + {file = "tomli-2.4.1-cp314-cp314-win_arm64.whl", hash = "sha256:b8c198f8c1805dc42708689ed6864951fd2494f924149d3e4bce7710f8eb5232"}, + {file = "tomli-2.4.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:d4d8fe59808a54658fcc0160ecfb1b30f9089906c50b23bcb4c69eddc19ec2b4"}, + {file = "tomli-2.4.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7008df2e7655c495dd12d2a4ad038ff878d4ca4b81fccaf82b714e07eae4402c"}, + {file = "tomli-2.4.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1d8591993e228b0c930c4bb0db464bdad97b3289fb981255d6c9a41aedc84b2d"}, + {file = "tomli-2.4.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:734e20b57ba95624ecf1841e72b53f6e186355e216e5412de414e3c51e5e3c41"}, + {file = "tomli-2.4.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8a650c2dbafa08d42e51ba0b62740dae4ecb9338eefa093aa5c78ceb546fcd5c"}, + {file = "tomli-2.4.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:504aa796fe0569bb43171066009ead363de03675276d2d121ac1a4572397870f"}, + {file = "tomli-2.4.1-cp314-cp314t-win32.whl", hash = "sha256:b1d22e6e9387bf4739fbe23bfa80e93f6b0373a7f1b96c6227c32bef95a4d7a8"}, + {file = "tomli-2.4.1-cp314-cp314t-win_amd64.whl", hash = "sha256:2c1c351919aca02858f740c6d33adea0c5deea37f9ecca1cc1ef9e884a619d26"}, + {file = "tomli-2.4.1-cp314-cp314t-win_arm64.whl", hash = "sha256:eab21f45c7f66c13f2a9e0e1535309cee140182a9cdae1e041d02e47291e8396"}, + {file = "tomli-2.4.1-py3-none-any.whl", hash = "sha256:0d85819802132122da43cb86656f8d1f8c6587d54ae7dcaf30e90533028b49fe"}, + {file = "tomli-2.4.1.tar.gz", hash = "sha256:7c7e1a961a0b2f2472c1ac5b69affa0ae1132c39adcb67aba98568702b9cc23f"}, +] + +[[package]] +name = "typing-extensions" +version = "4.15.0" +description = "Backported and Experimental Type Hints for Python 3.9+" +optional = false +python-versions = ">=3.9" +groups = ["main", "dev"] +files = [ + {file = "typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548"}, + {file = "typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466"}, +] +markers = {dev = "python_version == \"3.10\""} + +[[package]] +name = "typing-inspection" +version = "0.4.2" +description = "Runtime typing introspection tools" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7"}, + {file = "typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464"}, +] + +[package.dependencies] +typing-extensions = ">=4.12.0" + +[[package]] +name = "uncalled-for" +version = "0.3.1" +description = "Async dependency injection for Python functions" +optional = false +python-versions = ">=3.10" +groups = ["main"] +files = [ + {file = "uncalled_for-0.3.1-py3-none-any.whl", hash = "sha256:074cdc92da8356278f93d0ded6f2a66dd883dbecaf9bc89437646ee2289cc200"}, + {file = "uncalled_for-0.3.1.tar.gz", hash = "sha256:5e412ac6708f04b56bef5867b5dcf6690ebce4eb7316058d9c50787492bb4bca"}, +] + +[[package]] +name = "uvicorn" +version = "0.46.0" +description = "The lightning-fast ASGI server." +optional = false +python-versions = ">=3.10" +groups = ["main"] +files = [ + {file = "uvicorn-0.46.0-py3-none-any.whl", hash = "sha256:bbebbcbed972d162afca128605223022bedd345b7bc7855ce66deb31487a9048"}, + {file = "uvicorn-0.46.0.tar.gz", hash = "sha256:fb9da0926999cc6cb22dc7cd71a94a632f078e6ae47ff683c5c420750fb7413d"}, +] + +[package.dependencies] +click = ">=7.0" +h11 = ">=0.8" +typing-extensions = {version = ">=4.0", markers = "python_version < \"3.11\""} + +[package.extras] +standard = ["colorama (>=0.4) ; sys_platform == \"win32\"", "httptools (>=0.6.3)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.15.1) ; sys_platform != \"win32\" and sys_platform != \"cygwin\" and platform_python_implementation != \"PyPy\"", "watchfiles (>=0.20)", "websockets (>=10.4)"] + +[[package]] +name = "watchfiles" +version = "1.1.1" +description = "Simple, modern and high performance file watching and code reload in python." +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "watchfiles-1.1.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:eef58232d32daf2ac67f42dea51a2c80f0d03379075d44a587051e63cc2e368c"}, + {file = "watchfiles-1.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:03fa0f5237118a0c5e496185cafa92878568b652a2e9a9382a5151b1a0380a43"}, + {file = "watchfiles-1.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8ca65483439f9c791897f7db49202301deb6e15fe9f8fe2fed555bf986d10c31"}, + {file = "watchfiles-1.1.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f0ab1c1af0cb38e3f598244c17919fb1a84d1629cc08355b0074b6d7f53138ac"}, + {file = "watchfiles-1.1.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3bc570d6c01c206c46deb6e935a260be44f186a2f05179f52f7fcd2be086a94d"}, + {file = "watchfiles-1.1.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e84087b432b6ac94778de547e08611266f1f8ffad28c0ee4c82e028b0fc5966d"}, + {file = "watchfiles-1.1.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:620bae625f4cb18427b1bb1a2d9426dc0dd5a5ba74c7c2cdb9de405f7b129863"}, + {file = "watchfiles-1.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:544364b2b51a9b0c7000a4b4b02f90e9423d97fbbf7e06689236443ebcad81ab"}, + {file = "watchfiles-1.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:bbe1ef33d45bc71cf21364df962af171f96ecaeca06bd9e3d0b583efb12aec82"}, + {file = "watchfiles-1.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1a0bb430adb19ef49389e1ad368450193a90038b5b752f4ac089ec6942c4dff4"}, + {file = "watchfiles-1.1.1-cp310-cp310-win32.whl", hash = "sha256:3f6d37644155fb5beca5378feb8c1708d5783145f2a0f1c4d5a061a210254844"}, + {file = "watchfiles-1.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:a36d8efe0f290835fd0f33da35042a1bb5dc0e83cbc092dcf69bce442579e88e"}, + {file = "watchfiles-1.1.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:f57b396167a2565a4e8b5e56a5a1c537571733992b226f4f1197d79e94cf0ae5"}, + {file = "watchfiles-1.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:421e29339983e1bebc281fab40d812742268ad057db4aee8c4d2bce0af43b741"}, + {file = "watchfiles-1.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e43d39a741e972bab5d8100b5cdacf69db64e34eb19b6e9af162bccf63c5cc6"}, + {file = "watchfiles-1.1.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f537afb3276d12814082a2e9b242bdcf416c2e8fd9f799a737990a1dbe906e5b"}, + {file = "watchfiles-1.1.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b2cd9e04277e756a2e2d2543d65d1e2166d6fd4c9b183f8808634fda23f17b14"}, + {file = "watchfiles-1.1.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5f3f58818dc0b07f7d9aa7fe9eb1037aecb9700e63e1f6acfed13e9fef648f5d"}, + {file = "watchfiles-1.1.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9bb9f66367023ae783551042d31b1d7fd422e8289eedd91f26754a66f44d5cff"}, + {file = "watchfiles-1.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aebfd0861a83e6c3d1110b78ad54704486555246e542be3e2bb94195eabb2606"}, + {file = "watchfiles-1.1.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:5fac835b4ab3c6487b5dbad78c4b3724e26bcc468e886f8ba8cc4306f68f6701"}, + {file = "watchfiles-1.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:399600947b170270e80134ac854e21b3ccdefa11a9529a3decc1327088180f10"}, + {file = "watchfiles-1.1.1-cp311-cp311-win32.whl", hash = "sha256:de6da501c883f58ad50db3a32ad397b09ad29865b5f26f64c24d3e3281685849"}, + {file = "watchfiles-1.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:35c53bd62a0b885bf653ebf6b700d1bf05debb78ad9292cf2a942b23513dc4c4"}, + {file = "watchfiles-1.1.1-cp311-cp311-win_arm64.whl", hash = "sha256:57ca5281a8b5e27593cb7d82c2ac927ad88a96ed406aa446f6344e4328208e9e"}, + {file = "watchfiles-1.1.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:8c89f9f2f740a6b7dcc753140dd5e1ab9215966f7a3530d0c0705c83b401bd7d"}, + {file = "watchfiles-1.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bd404be08018c37350f0d6e34676bd1e2889990117a2b90070b3007f172d0610"}, + {file = "watchfiles-1.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8526e8f916bb5b9a0a777c8317c23ce65de259422bba5b31325a6fa6029d33af"}, + {file = "watchfiles-1.1.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2edc3553362b1c38d9f06242416a5d8e9fe235c204a4072e988ce2e5bb1f69f6"}, + {file = "watchfiles-1.1.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:30f7da3fb3f2844259cba4720c3fc7138eb0f7b659c38f3bfa65084c7fc7abce"}, + {file = "watchfiles-1.1.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f8979280bdafff686ba5e4d8f97840f929a87ed9cdf133cbbd42f7766774d2aa"}, + {file = "watchfiles-1.1.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dcc5c24523771db3a294c77d94771abcfcb82a0e0ee8efd910c37c59ec1b31bb"}, + {file = "watchfiles-1.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1db5d7ae38ff20153d542460752ff397fcf5c96090c1230803713cf3147a6803"}, + {file = "watchfiles-1.1.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:28475ddbde92df1874b6c5c8aaeb24ad5be47a11f87cde5a28ef3835932e3e94"}, + {file = "watchfiles-1.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:36193ed342f5b9842edd3532729a2ad55c4160ffcfa3700e0d54be496b70dd43"}, + {file = "watchfiles-1.1.1-cp312-cp312-win32.whl", hash = "sha256:859e43a1951717cc8de7f4c77674a6d389b106361585951d9e69572823f311d9"}, + {file = "watchfiles-1.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:91d4c9a823a8c987cce8fa2690923b069966dabb196dd8d137ea2cede885fde9"}, + {file = "watchfiles-1.1.1-cp312-cp312-win_arm64.whl", hash = "sha256:a625815d4a2bdca61953dbba5a39d60164451ef34c88d751f6c368c3ea73d404"}, + {file = "watchfiles-1.1.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:130e4876309e8686a5e37dba7d5e9bc77e6ed908266996ca26572437a5271e18"}, + {file = "watchfiles-1.1.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5f3bde70f157f84ece3765b42b4a52c6ac1a50334903c6eaf765362f6ccca88a"}, + {file = "watchfiles-1.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:14e0b1fe858430fc0251737ef3824c54027bedb8c37c38114488b8e131cf8219"}, + {file = "watchfiles-1.1.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f27db948078f3823a6bb3b465180db8ebecf26dd5dae6f6180bd87383b6b4428"}, + {file = "watchfiles-1.1.1-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:059098c3a429f62fc98e8ec62b982230ef2c8df68c79e826e37b895bc359a9c0"}, + {file = "watchfiles-1.1.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bfb5862016acc9b869bb57284e6cb35fdf8e22fe59f7548858e2f971d045f150"}, + {file = "watchfiles-1.1.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:319b27255aacd9923b8a276bb14d21a5f7ff82564c744235fc5eae58d95422ae"}, + {file = "watchfiles-1.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c755367e51db90e75b19454b680903631d41f9e3607fbd941d296a020c2d752d"}, + {file = "watchfiles-1.1.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c22c776292a23bfc7237a98f791b9ad3144b02116ff10d820829ce62dff46d0b"}, + {file = "watchfiles-1.1.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:3a476189be23c3686bc2f4321dd501cb329c0a0469e77b7b534ee10129ae6374"}, + {file = "watchfiles-1.1.1-cp313-cp313-win32.whl", hash = "sha256:bf0a91bfb5574a2f7fc223cf95eeea79abfefa404bf1ea5e339c0c1560ae99a0"}, + {file = "watchfiles-1.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:52e06553899e11e8074503c8e716d574adeeb7e68913115c4b3653c53f9bae42"}, + {file = "watchfiles-1.1.1-cp313-cp313-win_arm64.whl", hash = "sha256:ac3cc5759570cd02662b15fbcd9d917f7ecd47efe0d6b40474eafd246f91ea18"}, + {file = "watchfiles-1.1.1-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:563b116874a9a7ce6f96f87cd0b94f7faf92d08d0021e837796f0a14318ef8da"}, + {file = "watchfiles-1.1.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3ad9fe1dae4ab4212d8c91e80b832425e24f421703b5a42ef2e4a1e215aff051"}, + {file = "watchfiles-1.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce70f96a46b894b36eba678f153f052967a0d06d5b5a19b336ab0dbbd029f73e"}, + {file = "watchfiles-1.1.1-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:cb467c999c2eff23a6417e58d75e5828716f42ed8289fe6b77a7e5a91036ca70"}, + {file = "watchfiles-1.1.1-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:836398932192dae4146c8f6f737d74baeac8b70ce14831a239bdb1ca882fc261"}, + {file = "watchfiles-1.1.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:743185e7372b7bc7c389e1badcc606931a827112fbbd37f14c537320fca08620"}, + {file = "watchfiles-1.1.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:afaeff7696e0ad9f02cbb8f56365ff4686ab205fcf9c4c5b6fdfaaa16549dd04"}, + {file = "watchfiles-1.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f7eb7da0eb23aa2ba036d4f616d46906013a68caf61b7fdbe42fc8b25132e77"}, + {file = "watchfiles-1.1.1-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:831a62658609f0e5c64178211c942ace999517f5770fe9436be4c2faeba0c0ef"}, + {file = "watchfiles-1.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:f9a2ae5c91cecc9edd47e041a930490c31c3afb1f5e6d71de3dc671bfaca02bf"}, + {file = "watchfiles-1.1.1-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:d1715143123baeeaeadec0528bb7441103979a1d5f6fd0e1f915383fea7ea6d5"}, + {file = "watchfiles-1.1.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:39574d6370c4579d7f5d0ad940ce5b20db0e4117444e39b6d8f99db5676c52fd"}, + {file = "watchfiles-1.1.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7365b92c2e69ee952902e8f70f3ba6360d0d596d9299d55d7d386df84b6941fb"}, + {file = "watchfiles-1.1.1-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bfff9740c69c0e4ed32416f013f3c45e2ae42ccedd1167ef2d805c000b6c71a5"}, + {file = "watchfiles-1.1.1-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b27cf2eb1dda37b2089e3907d8ea92922b673c0c427886d4edc6b94d8dfe5db3"}, + {file = "watchfiles-1.1.1-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:526e86aced14a65a5b0ec50827c745597c782ff46b571dbfe46192ab9e0b3c33"}, + {file = "watchfiles-1.1.1-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:04e78dd0b6352db95507fd8cb46f39d185cf8c74e4cf1e4fbad1d3df96faf510"}, + {file = "watchfiles-1.1.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5c85794a4cfa094714fb9c08d4a218375b2b95b8ed1666e8677c349906246c05"}, + {file = "watchfiles-1.1.1-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:74d5012b7630714b66be7b7b7a78855ef7ad58e8650c73afc4c076a1f480a8d6"}, + {file = "watchfiles-1.1.1-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:8fbe85cb3201c7d380d3d0b90e63d520f15d6afe217165d7f98c9c649654db81"}, + {file = "watchfiles-1.1.1-cp314-cp314-win32.whl", hash = "sha256:3fa0b59c92278b5a7800d3ee7733da9d096d4aabcfabb9a928918bd276ef9b9b"}, + {file = "watchfiles-1.1.1-cp314-cp314-win_amd64.whl", hash = "sha256:c2047d0b6cea13b3316bdbafbfa0c4228ae593d995030fda39089d36e64fc03a"}, + {file = "watchfiles-1.1.1-cp314-cp314-win_arm64.whl", hash = "sha256:842178b126593addc05acf6fce960d28bc5fae7afbaa2c6c1b3a7b9460e5be02"}, + {file = "watchfiles-1.1.1-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:88863fbbc1a7312972f1c511f202eb30866370ebb8493aef2812b9ff28156a21"}, + {file = "watchfiles-1.1.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:55c7475190662e202c08c6c0f4d9e345a29367438cf8e8037f3155e10a88d5a5"}, + {file = "watchfiles-1.1.1-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f53fa183d53a1d7a8852277c92b967ae99c2d4dcee2bfacff8868e6e30b15f7"}, + {file = "watchfiles-1.1.1-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6aae418a8b323732fa89721d86f39ec8f092fc2af67f4217a2b07fd3e93c6101"}, + {file = "watchfiles-1.1.1-cp314-cp314t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f096076119da54a6080e8920cbdaac3dbee667eb91dcc5e5b78840b87415bd44"}, + {file = "watchfiles-1.1.1-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:00485f441d183717038ed2e887a7c868154f216877653121068107b227a2f64c"}, + {file = "watchfiles-1.1.1-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a55f3e9e493158d7bfdb60a1165035f1cf7d320914e7b7ea83fe22c6023b58fc"}, + {file = "watchfiles-1.1.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c91ed27800188c2ae96d16e3149f199d62f86c7af5f5f4d2c61a3ed8cd3666c"}, + {file = "watchfiles-1.1.1-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:311ff15a0bae3714ffb603e6ba6dbfba4065ab60865d15a6ec544133bdb21099"}, + {file = "watchfiles-1.1.1-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:a916a2932da8f8ab582f242c065f5c81bed3462849ca79ee357dd9551b0e9b01"}, + {file = "watchfiles-1.1.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:c882d69f6903ef6092bedfb7be973d9319940d56b8427ab9187d1ecd73438a70"}, + {file = "watchfiles-1.1.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d6ff426a7cb54f310d51bfe83fe9f2bbe40d540c741dc974ebc30e6aa238f52e"}, + {file = "watchfiles-1.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79ff6c6eadf2e3fc0d7786331362e6ef1e51125892c75f1004bd6b52155fb956"}, + {file = "watchfiles-1.1.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c1f5210f1b8fc91ead1283c6fd89f70e76fb07283ec738056cf34d51e9c1d62c"}, + {file = "watchfiles-1.1.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b9c4702f29ca48e023ffd9b7ff6b822acdf47cb1ff44cb490a3f1d5ec8987e9c"}, + {file = "watchfiles-1.1.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:acb08650863767cbc58bca4813b92df4d6c648459dcaa3d4155681962b2aa2d3"}, + {file = "watchfiles-1.1.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08af70fd77eee58549cd69c25055dc344f918d992ff626068242259f98d598a2"}, + {file = "watchfiles-1.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c3631058c37e4a0ec440bf583bc53cdbd13e5661bb6f465bc1d88ee9a0a4d02"}, + {file = "watchfiles-1.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:cf57a27fb986c6243d2ee78392c503826056ffe0287e8794503b10fb51b881be"}, + {file = "watchfiles-1.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d7e7067c98040d646982daa1f37a33d3544138ea155536c2e0e63e07ff8a7e0f"}, + {file = "watchfiles-1.1.1-cp39-cp39-win32.whl", hash = "sha256:6c9c9262f454d1c4d8aaa7050121eb4f3aea197360553699520767daebf2180b"}, + {file = "watchfiles-1.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:74472234c8370669850e1c312490f6026d132ca2d396abfad8830b4f1c096957"}, + {file = "watchfiles-1.1.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:17ef139237dfced9da49fb7f2232c86ca9421f666d78c264c7ffca6601d154c3"}, + {file = "watchfiles-1.1.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:672b8adf25b1a0d35c96b5888b7b18699d27d4194bac8beeae75be4b7a3fc9b2"}, + {file = "watchfiles-1.1.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77a13aea58bc2b90173bc69f2a90de8e282648939a00a602e1dc4ee23e26b66d"}, + {file = "watchfiles-1.1.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b495de0bb386df6a12b18335a0285dda90260f51bdb505503c02bcd1ce27a8b"}, + {file = "watchfiles-1.1.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:db476ab59b6765134de1d4fe96a1a9c96ddf091683599be0f26147ea1b2e4b88"}, + {file = "watchfiles-1.1.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:89eef07eee5e9d1fda06e38822ad167a044153457e6fd997f8a858ab7564a336"}, + {file = "watchfiles-1.1.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce19e06cbda693e9e7686358af9cd6f5d61312ab8b00488bc36f5aabbaf77e24"}, + {file = "watchfiles-1.1.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3e6f39af2eab0118338902798b5aa6664f46ff66bc0280de76fca67a7f262a49"}, + {file = "watchfiles-1.1.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:cdab464fee731e0884c35ae3588514a9bcf718d0e2c82169c1c4a85cc19c3c7f"}, + {file = "watchfiles-1.1.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:3dbd8cbadd46984f802f6d479b7e3afa86c42d13e8f0f322d669d79722c8ec34"}, + {file = "watchfiles-1.1.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5524298e3827105b61951a29c3512deb9578586abf3a7c5da4a8069df247cccc"}, + {file = "watchfiles-1.1.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b943d3668d61cfa528eb949577479d3b077fd25fb83c641235437bc0b5bc60e"}, + {file = "watchfiles-1.1.1.tar.gz", hash = "sha256:a173cb5c16c4f40ab19cecf48a534c409f7ea983ab8fed0741304a1c0a31b3f2"}, +] + +[package.dependencies] +anyio = ">=3.0.0" + +[[package]] +name = "websockets" +version = "16.0" +description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" +optional = false +python-versions = ">=3.10" +groups = ["main"] +files = [ + {file = "websockets-16.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:04cdd5d2d1dacbad0a7bf36ccbcd3ccd5a30ee188f2560b7a62a30d14107b31a"}, + {file = "websockets-16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8ff32bb86522a9e5e31439a58addbb0166f0204d64066fb955265c4e214160f0"}, + {file = "websockets-16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:583b7c42688636f930688d712885cf1531326ee05effd982028212ccc13e5957"}, + {file = "websockets-16.0-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:7d837379b647c0c4c2355c2499723f82f1635fd2c26510e1f587d89bc2199e72"}, + {file = "websockets-16.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:df57afc692e517a85e65b72e165356ed1df12386ecb879ad5693be08fac65dde"}, + {file = "websockets-16.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:2b9f1e0d69bc60a4a87349d50c09a037a2607918746f07de04df9e43252c77a3"}, + {file = "websockets-16.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:335c23addf3d5e6a8633f9f8eda77efad001671e80b95c491dd0924587ece0b3"}, + {file = "websockets-16.0-cp310-cp310-win32.whl", hash = "sha256:37b31c1623c6605e4c00d466c9d633f9b812ea430c11c8a278774a1fde1acfa9"}, + {file = "websockets-16.0-cp310-cp310-win_amd64.whl", hash = "sha256:8e1dab317b6e77424356e11e99a432b7cb2f3ec8c5ab4dabbcee6add48f72b35"}, + {file = "websockets-16.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:31a52addea25187bde0797a97d6fc3d2f92b6f72a9370792d65a6e84615ac8a8"}, + {file = "websockets-16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:417b28978cdccab24f46400586d128366313e8a96312e4b9362a4af504f3bbad"}, + {file = "websockets-16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:af80d74d4edfa3cb9ed973a0a5ba2b2a549371f8a741e0800cb07becdd20f23d"}, + {file = "websockets-16.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:08d7af67b64d29823fed316505a89b86705f2b7981c07848fb5e3ea3020c1abe"}, + {file = "websockets-16.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7be95cfb0a4dae143eaed2bcba8ac23f4892d8971311f1b06f3c6b78952ee70b"}, + {file = "websockets-16.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d6297ce39ce5c2e6feb13c1a996a2ded3b6832155fcfc920265c76f24c7cceb5"}, + {file = "websockets-16.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1c1b30e4f497b0b354057f3467f56244c603a79c0d1dafce1d16c283c25f6e64"}, + {file = "websockets-16.0-cp311-cp311-win32.whl", hash = "sha256:5f451484aeb5cafee1ccf789b1b66f535409d038c56966d6101740c1614b86c6"}, + {file = "websockets-16.0-cp311-cp311-win_amd64.whl", hash = "sha256:8d7f0659570eefb578dacde98e24fb60af35350193e4f56e11190787bee77dac"}, + {file = "websockets-16.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:71c989cbf3254fbd5e84d3bff31e4da39c43f884e64f2551d14bb3c186230f00"}, + {file = "websockets-16.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:8b6e209ffee39ff1b6d0fa7bfef6de950c60dfb91b8fcead17da4ee539121a79"}, + {file = "websockets-16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:86890e837d61574c92a97496d590968b23c2ef0aeb8a9bc9421d174cd378ae39"}, + {file = "websockets-16.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:9b5aca38b67492ef518a8ab76851862488a478602229112c4b0d58d63a7a4d5c"}, + {file = "websockets-16.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e0334872c0a37b606418ac52f6ab9cfd17317ac26365f7f65e203e2d0d0d359f"}, + {file = "websockets-16.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a0b31e0b424cc6b5a04b8838bbaec1688834b2383256688cf47eb97412531da1"}, + {file = "websockets-16.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:485c49116d0af10ac698623c513c1cc01c9446c058a4e61e3bf6c19dff7335a2"}, + {file = "websockets-16.0-cp312-cp312-win32.whl", hash = "sha256:eaded469f5e5b7294e2bdca0ab06becb6756ea86894a47806456089298813c89"}, + {file = "websockets-16.0-cp312-cp312-win_amd64.whl", hash = "sha256:5569417dc80977fc8c2d43a86f78e0a5a22fee17565d78621b6bb264a115d4ea"}, + {file = "websockets-16.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:878b336ac47938b474c8f982ac2f7266a540adc3fa4ad74ae96fea9823a02cc9"}, + {file = "websockets-16.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:52a0fec0e6c8d9a784c2c78276a48a2bdf099e4ccc2a4cad53b27718dbfd0230"}, + {file = "websockets-16.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e6578ed5b6981005df1860a56e3617f14a6c307e6a71b4fff8c48fdc50f3ed2c"}, + {file = "websockets-16.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:95724e638f0f9c350bb1c2b0a7ad0e83d9cc0c9259f3ea94e40d7b02a2179ae5"}, + {file = "websockets-16.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c0204dc62a89dc9d50d682412c10b3542d748260d743500a85c13cd1ee4bde82"}, + {file = "websockets-16.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:52ac480f44d32970d66763115edea932f1c5b1312de36df06d6b219f6741eed8"}, + {file = "websockets-16.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6e5a82b677f8f6f59e8dfc34ec06ca6b5b48bc4fcda346acd093694cc2c24d8f"}, + {file = "websockets-16.0-cp313-cp313-win32.whl", hash = "sha256:abf050a199613f64c886ea10f38b47770a65154dc37181bfaff70c160f45315a"}, + {file = "websockets-16.0-cp313-cp313-win_amd64.whl", hash = "sha256:3425ac5cf448801335d6fdc7ae1eb22072055417a96cc6b31b3861f455fbc156"}, + {file = "websockets-16.0-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:8cc451a50f2aee53042ac52d2d053d08bf89bcb31ae799cb4487587661c038a0"}, + {file = "websockets-16.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:daa3b6ff70a9241cf6c7fc9e949d41232d9d7d26fd3522b1ad2b4d62487e9904"}, + {file = "websockets-16.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:fd3cb4adb94a2a6e2b7c0d8d05cb94e6f1c81a0cf9dc2694fb65c7e8d94c42e4"}, + {file = "websockets-16.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:781caf5e8eee67f663126490c2f96f40906594cb86b408a703630f95550a8c3e"}, + {file = "websockets-16.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:caab51a72c51973ca21fa8a18bd8165e1a0183f1ac7066a182ff27107b71e1a4"}, + {file = "websockets-16.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:19c4dc84098e523fd63711e563077d39e90ec6702aff4b5d9e344a60cb3c0cb1"}, + {file = "websockets-16.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:a5e18a238a2b2249c9a9235466b90e96ae4795672598a58772dd806edc7ac6d3"}, + {file = "websockets-16.0-cp314-cp314-win32.whl", hash = "sha256:a069d734c4a043182729edd3e9f247c3b2a4035415a9172fd0f1b71658a320a8"}, + {file = "websockets-16.0-cp314-cp314-win_amd64.whl", hash = "sha256:c0ee0e63f23914732c6d7e0cce24915c48f3f1512ec1d079ed01fc629dab269d"}, + {file = "websockets-16.0-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:a35539cacc3febb22b8f4d4a99cc79b104226a756aa7400adc722e83b0d03244"}, + {file = "websockets-16.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:b784ca5de850f4ce93ec85d3269d24d4c82f22b7212023c974c401d4980ebc5e"}, + {file = "websockets-16.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:569d01a4e7fba956c5ae4fc988f0d4e187900f5497ce46339c996dbf24f17641"}, + {file = "websockets-16.0-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:50f23cdd8343b984957e4077839841146f67a3d31ab0d00e6b824e74c5b2f6e8"}, + {file = "websockets-16.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:152284a83a00c59b759697b7f9e9cddf4e3c7861dd0d964b472b70f78f89e80e"}, + {file = "websockets-16.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:bc59589ab64b0022385f429b94697348a6a234e8ce22544e3681b2e9331b5944"}, + {file = "websockets-16.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:32da954ffa2814258030e5a57bc73a3635463238e797c7375dc8091327434206"}, + {file = "websockets-16.0-cp314-cp314t-win32.whl", hash = "sha256:5a4b4cc550cb665dd8a47f868c8d04c8230f857363ad3c9caf7a0c3bf8c61ca6"}, + {file = "websockets-16.0-cp314-cp314t-win_amd64.whl", hash = "sha256:b14dc141ed6d2dde437cddb216004bcac6a1df0935d79656387bd41632ba0bbd"}, + {file = "websockets-16.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:349f83cd6c9a415428ee1005cadb5c2c56f4389bc06a9af16103c3bc3dcc8b7d"}, + {file = "websockets-16.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:4a1aba3340a8dca8db6eb5a7986157f52eb9e436b74813764241981ca4888f03"}, + {file = "websockets-16.0-pp311-pypy311_pp73-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:f4a32d1bd841d4bcbffdcb3d2ce50c09c3909fbead375ab28d0181af89fd04da"}, + {file = "websockets-16.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0298d07ee155e2e9fda5be8a9042200dd2e3bb0b8a38482156576f863a9d457c"}, + {file = "websockets-16.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:a653aea902e0324b52f1613332ddf50b00c06fdaf7e92624fbf8c77c78fa5767"}, + {file = "websockets-16.0-py3-none-any.whl", hash = "sha256:1637db62fad1dc833276dded54215f2c7fa46912301a24bd94d45d46a011ceec"}, + {file = "websockets-16.0.tar.gz", hash = "sha256:5f6261a5e56e8d5c42a4497b364ea24d94d9563e8fbd44e78ac40879c60179b5"}, +] + +[[package]] +name = "zipp" +version = "3.23.1" +description = "Backport of pathlib-compatible object wrapper for zip files" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "zipp-3.23.1-py3-none-any.whl", hash = "sha256:0b3596c50a5c700c9cb40ba8d86d9f2cc4807e9bedb06bcdf7fac85633e444dc"}, + {file = "zipp-3.23.1.tar.gz", hash = "sha256:32120e378d32cd9714ad503c1d024619063ec28aad2248dc6672ad13edfa5110"}, +] + +[package.extras] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] +cover = ["pytest-cov"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +enabler = ["pytest-enabler (>=2.2)"] +test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more_itertools", "pytest (>=6,!=8.1.*)", "pytest-ignore-flaky"] +type = ["pytest-mypy"] + +[metadata] +lock-version = "2.1" +python-versions = ">=3.10,<4.0" +content-hash = "45d928d273824b59ddd52eb9f310c615cc974bd9a3e182761b97e3a4c9f057be" diff --git a/tools/mcp-fixtures/pyproject.toml b/tools/mcp-fixtures/pyproject.toml new file mode 100644 index 00000000..05203ed7 --- /dev/null +++ b/tools/mcp-fixtures/pyproject.toml @@ -0,0 +1,13 @@ +[tool.poetry] +name = "tactus-mcp-fixtures" +version = "0.1.0" +description = "Isolated tooling environment for MCP test fixtures used by Tactus." +authors = ["Anthus "] +package-mode = false + +[tool.poetry.dependencies] +python = ">=3.10,<4.0" +fastmcp = ">=3.1.0,<3.2.0" + +[tool.poetry.group.dev.dependencies] +pytest = ">=8.0" From d70a04625b464f75aeedf038221ac6302c9109f5 Mon Sep 17 00:00:00 2001 From: dereknorrbom Date: Fri, 24 Apr 2026 09:18:39 -0700 Subject: [PATCH 03/11] ci: remove unsupported poetry lock --no-update from mcp-fixtures step --- .github/workflows/release.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 4ffaade4..159a6a86 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -46,7 +46,6 @@ jobs: if: matrix.python-version == '3.12' run: | cd tools/mcp-fixtures - python -m poetry lock --no-update python -m poetry install python -m poetry run python -c "import fastmcp; print(fastmcp.__version__)" From 4c7d772d4506d41f8d57e264d8064b85b53eb973 Mon Sep 17 00:00:00 2001 From: dereknorrbom Date: Fri, 24 Apr 2026 09:21:09 -0700 Subject: [PATCH 04/11] fix(lint): remove unused imports in ide server --- tactus/ide/server.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/tactus/ide/server.py b/tactus/ide/server.py index 75322dc3..846a5e6e 100644 --- a/tactus/ide/server.py +++ b/tactus/ide/server.py @@ -801,8 +801,6 @@ def generate_events(): log_handler = IDELogHandler() # Create storage backend - from pathlib import Path as PathLib - storage_dir = str(_workspace_storage_dir()) storage_backend = FileStorage(storage_dir=storage_dir) @@ -1260,8 +1258,6 @@ def run_procedure(): # Save consolidated events to disk try: - from pathlib import Path as PathLib - events_dir = _workspace_storage_dir() / "events" events_dir.mkdir(parents=True, exist_ok=True) events_file = events_dir / f"{run_id}.json" From 45c511056dd35fdd0843cb91936399ff85873a44 Mon Sep 17 00:00:00 2001 From: dereknorrbom Date: Wed, 29 Apr 2026 10:25:02 -0700 Subject: [PATCH 05/11] chore(deps): bump litellm and fastmcp constraints --- poetry.lock | 305 +++++++++--------- ..._56f85a21-34f0-4f52-9e15-03fc6109f84f.json | 12 + ..._9f1d4b1f-b318-4891-87da-be6e8c456173.json | 12 + ...-b82842f2-1508-4d45-98ef-1017d09e100a.json | 20 +- pyproject.toml | 2 +- tools/mcp-fixtures/poetry.lock | 36 ++- tools/mcp-fixtures/pyproject.toml | 2 +- 7 files changed, 232 insertions(+), 157 deletions(-) create mode 100644 project/events/2026-04-29T17:15:25.069Z__56f85a21-34f0-4f52-9e15-03fc6109f84f.json create mode 100644 project/events/2026-04-29T17:16:27.812Z__9f1d4b1f-b318-4891-87da-be6e8c456173.json diff --git a/poetry.lock b/poetry.lock index f7fb3738..d41ce375 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 2.3.4 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.3.2 and should not be changed by hand. [[package]] name = "aiohappyeyeballs" @@ -14,132 +14,132 @@ files = [ [[package]] name = "aiohttp" -version = "3.13.5" +version = "3.13.4" description = "Async http client/server framework (asyncio)" optional = false python-versions = ">=3.9" groups = ["main"] files = [ - {file = "aiohttp-3.13.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:02222e7e233295f40e011c1b00e3b0bd451f22cf853a0304c3595633ee47da4b"}, - {file = "aiohttp-3.13.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bace460460ed20614fa6bc8cb09966c0b8517b8c58ad8046828c6078d25333b5"}, - {file = "aiohttp-3.13.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f546a4dc1e6a5edbb9fd1fd6ad18134550e096a5a43f4ad74acfbd834fc6670"}, - {file = "aiohttp-3.13.5-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c86969d012e51b8e415a8c6ce96f7857d6a87d6207303ab02d5d11ef0cad2274"}, - {file = "aiohttp-3.13.5-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:b6f6cd1560c5fa427e3b6074bb24d2c64e225afbb7165008903bd42e4e33e28a"}, - {file = "aiohttp-3.13.5-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:636bc362f0c5bbc7372bc3ae49737f9e3030dbce469f0f422c8f38079780363d"}, - {file = "aiohttp-3.13.5-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:6a7cbeb06d1070f1d14895eeeed4dac5913b22d7b456f2eb969f11f4b3993796"}, - {file = "aiohttp-3.13.5-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bca9ef7517fd7874a1a08970ae88f497bf5c984610caa0bf40bd7e8450852b95"}, - {file = "aiohttp-3.13.5-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:019a67772e034a0e6b9b17c13d0a8fe56ad9fb150fc724b7f3ffd3724288d9e5"}, - {file = "aiohttp-3.13.5-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f34ecee82858e41dd217734f0c41a532bd066bcaab636ad830f03a30b2a96f2a"}, - {file = "aiohttp-3.13.5-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:4eac02d9af4813ee289cd63a361576da36dba57f5a1ab36377bc2600db0cbb73"}, - {file = "aiohttp-3.13.5-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:4beac52e9fe46d6abf98b0176a88154b742e878fdf209d2248e99fcdf73cd297"}, - {file = "aiohttp-3.13.5-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:c180f480207a9b2475f2b8d8bd7204e47aec952d084b2a2be58a782ffcf96074"}, - {file = "aiohttp-3.13.5-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2837fb92951564d6339cedae4a7231692aa9f73cbc4fb2e04263b96844e03b4e"}, - {file = "aiohttp-3.13.5-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d9010032a0b9710f58012a1e9c222528763d860ba2ee1422c03473eab47703e7"}, - {file = "aiohttp-3.13.5-cp310-cp310-win32.whl", hash = "sha256:7c4b6668b2b2b9027f209ddf647f2a4407784b5d88b8be4efcc72036f365baf9"}, - {file = "aiohttp-3.13.5-cp310-cp310-win_amd64.whl", hash = "sha256:cd3db5927bf9167d5a6157ddb2f036f6b6b0ad001ac82355d43e97a4bde76d76"}, - {file = "aiohttp-3.13.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7ab7229b6f9b5c1ba4910d6c41a9eb11f543eadb3f384df1b4c293f4e73d44d6"}, - {file = "aiohttp-3.13.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8f14c50708bb156b3a3ca7230b3d820199d56a48e3af76fa21c2d6087190fe3d"}, - {file = "aiohttp-3.13.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e7d2f8616f0ff60bd332022279011776c3ac0faa0f1b463f7bb12326fbc97a1c"}, - {file = "aiohttp-3.13.5-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a2567b72e1ffc3ab25510db43f355b29eeada56c0a622e58dcdb19530eb0a3cb"}, - {file = "aiohttp-3.13.5-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:fb0540c854ac9c0c5ad495908fdfd3e332d553ec731698c0e29b1877ba0d2ec6"}, - {file = "aiohttp-3.13.5-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c9883051c6972f58bfc4ebb2116345ee2aa151178e99c3f2b2bbe2af712abd13"}, - {file = "aiohttp-3.13.5-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2294172ce08a82fb7c7273485895de1fa1186cc8294cfeb6aef4af42ad261174"}, - {file = "aiohttp-3.13.5-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3a807cabd5115fb55af198b98178997a5e0e57dead43eb74a93d9c07d6d4a7dc"}, - {file = "aiohttp-3.13.5-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:aa6d0d932e0f39c02b80744273cd5c388a2d9bc07760a03164f229c8e02662f6"}, - {file = "aiohttp-3.13.5-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:60869c7ac4aaabe7110f26499f3e6e5696eae98144735b12a9c3d9eae2b51a49"}, - {file = "aiohttp-3.13.5-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:26d2f8546f1dfa75efa50c3488215a903c0168d253b75fba4210f57ab77a0fb8"}, - {file = "aiohttp-3.13.5-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f1162a1492032c82f14271e831c8f4b49f2b6078f4f5fc74de2c912fa225d51d"}, - {file = "aiohttp-3.13.5-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:8b14eb3262fad0dc2f89c1a43b13727e709504972186ff6a99a3ecaa77102b6c"}, - {file = "aiohttp-3.13.5-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:ca9ac61ac6db4eb6c2a0cd1d0f7e1357647b638ccc92f7e9d8d133e71ed3c6ac"}, - {file = "aiohttp-3.13.5-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:7996023b2ed59489ae4762256c8516df9820f751cf2c5da8ed2fb20ee50abab3"}, - {file = "aiohttp-3.13.5-cp311-cp311-win32.whl", hash = "sha256:77dfa48c9f8013271011e51c00f8ada19851f013cde2c48fca1ba5e0caf5bb06"}, - {file = "aiohttp-3.13.5-cp311-cp311-win_amd64.whl", hash = "sha256:d3a4834f221061624b8887090637db9ad4f61752001eae37d56c52fddade2dc8"}, - {file = "aiohttp-3.13.5-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:023ecba036ddd840b0b19bf195bfae970083fd7024ce1ac22e9bba90464620e9"}, - {file = "aiohttp-3.13.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:15c933ad7920b7d9a20de151efcd05a6e38302cbf0e10c9b2acb9a42210a2416"}, - {file = "aiohttp-3.13.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ab2899f9fa2f9f741896ebb6fa07c4c883bfa5c7f2ddd8cf2aafa86fa981b2d2"}, - {file = "aiohttp-3.13.5-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a60eaa2d440cd4707696b52e40ed3e2b0f73f65be07fd0ef23b6b539c9c0b0b4"}, - {file = "aiohttp-3.13.5-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:55b3bdd3292283295774ab585160c4004f4f2f203946997f49aac032c84649e9"}, - {file = "aiohttp-3.13.5-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c2b2355dc094e5f7d45a7bb262fe7207aa0460b37a0d87027dcf21b5d890e7d5"}, - {file = "aiohttp-3.13.5-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b38765950832f7d728297689ad78f5f2cf79ff82487131c4d26fe6ceecdc5f8e"}, - {file = "aiohttp-3.13.5-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b18f31b80d5a33661e08c89e202edabf1986e9b49c42b4504371daeaa11b47c1"}, - {file = "aiohttp-3.13.5-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:33add2463dde55c4f2d9635c6ab33ce154e5ecf322bd26d09af95c5f81cfa286"}, - {file = "aiohttp-3.13.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:327cc432fdf1356fb4fbc6fe833ad4e9f6aacb71a8acaa5f1855e4b25910e4a9"}, - {file = "aiohttp-3.13.5-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:7c35b0bf0b48a70b4cb4fc5d7bed9b932532728e124874355de1a0af8ec4bc88"}, - {file = "aiohttp-3.13.5-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:df23d57718f24badef8656c49743e11a89fd6f5358fa8a7b96e728fda2abf7d3"}, - {file = "aiohttp-3.13.5-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:02e048037a6501a5ec1f6fc9736135aec6eb8a004ce48838cb951c515f32c80b"}, - {file = "aiohttp-3.13.5-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:31cebae8b26f8a615d2b546fee45d5ffb76852ae6450e2a03f42c9102260d6fe"}, - {file = "aiohttp-3.13.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:888e78eb5ca55a615d285c3c09a7a91b42e9dd6fc699b166ebd5dee87c9ccf14"}, - {file = "aiohttp-3.13.5-cp312-cp312-win32.whl", hash = "sha256:8bd3ec6376e68a41f9f95f5ed170e2fcf22d4eb27a1f8cb361d0508f6e0557f3"}, - {file = "aiohttp-3.13.5-cp312-cp312-win_amd64.whl", hash = "sha256:110e448e02c729bcebb18c60b9214a87ba33bac4a9fa5e9a5f139938b56c6cb1"}, - {file = "aiohttp-3.13.5-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a5029cc80718bbd545123cd8fe5d15025eccaaaace5d0eeec6bd556ad6163d61"}, - {file = "aiohttp-3.13.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4bb6bf5811620003614076bdc807ef3b5e38244f9d25ca5fe888eaccea2a9832"}, - {file = "aiohttp-3.13.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a84792f8631bf5a94e52d9cc881c0b824ab42717165a5579c760b830d9392ac9"}, - {file = "aiohttp-3.13.5-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:57653eac22c6a4c13eb22ecf4d673d64a12f266e72785ab1c8b8e5940d0e8090"}, - {file = "aiohttp-3.13.5-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e5e5f7debc7a57af53fdf5c5009f9391d9f4c12867049d509bf7bb164a6e295b"}, - {file = "aiohttp-3.13.5-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c719f65bebcdf6716f10e9eff80d27567f7892d8988c06de12bbbd39307c6e3a"}, - {file = "aiohttp-3.13.5-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d97f93fdae594d886c5a866636397e2bcab146fd7a132fd6bb9ce182224452f8"}, - {file = "aiohttp-3.13.5-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3df334e39d4c2f899a914f1dba283c1aadc311790733f705182998c6f7cae665"}, - {file = "aiohttp-3.13.5-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:fe6970addfea9e5e081401bcbadf865d2b6da045472f58af08427e108d618540"}, - {file = "aiohttp-3.13.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7becdf835feff2f4f335d7477f121af787e3504b48b449ff737afb35869ba7bb"}, - {file = "aiohttp-3.13.5-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:676e5651705ad5d8a70aeb8eb6936c436d8ebbd56e63436cb7dd9bb36d2a9a46"}, - {file = "aiohttp-3.13.5-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:9b16c653d38eb1a611cc898c41e76859ca27f119d25b53c12875fd0474ae31a8"}, - {file = "aiohttp-3.13.5-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:999802d5fa0389f58decd24b537c54aa63c01c3219ce17d1214cbda3c2b22d2d"}, - {file = "aiohttp-3.13.5-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:ec707059ee75732b1ba130ed5f9580fe10ff75180c812bc267ded039db5128c6"}, - {file = "aiohttp-3.13.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:2d6d44a5b48132053c2f6cd5c8cb14bc67e99a63594e336b0f2af81e94d5530c"}, - {file = "aiohttp-3.13.5-cp313-cp313-win32.whl", hash = "sha256:329f292ed14d38a6c4c435e465f48bebb47479fd676a0411936cc371643225cc"}, - {file = "aiohttp-3.13.5-cp313-cp313-win_amd64.whl", hash = "sha256:69f571de7500e0557801c0b51f4780482c0ec5fe2ac851af5a92cfce1af1cb83"}, - {file = "aiohttp-3.13.5-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:eb4639f32fd4a9904ab8fb45bf3383ba71137f3d9d4ba25b3b3f3109977c5b8c"}, - {file = "aiohttp-3.13.5-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:7e5dc4311bd5ac493886c63cbf76ab579dbe4641268e7c74e48e774c74b6f2be"}, - {file = "aiohttp-3.13.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:756c3c304d394977519824449600adaf2be0ccee76d206ee339c5e76b70ded25"}, - {file = "aiohttp-3.13.5-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ecc26751323224cf8186efcf7fbcbc30f4e1d8c7970659daf25ad995e4032a56"}, - {file = "aiohttp-3.13.5-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:10a75acfcf794edf9d8db50e5a7ec5fc818b2a8d3f591ce93bc7b1210df016d2"}, - {file = "aiohttp-3.13.5-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:0f7a18f258d124cd678c5fe072fe4432a4d5232b0657fca7c1847f599233c83a"}, - {file = "aiohttp-3.13.5-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:df6104c009713d3a89621096f3e3e88cc323fd269dbd7c20afe18535094320be"}, - {file = "aiohttp-3.13.5-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:241a94f7de7c0c3b616627aaad530fe2cb620084a8b144d3be7b6ecfe95bae3b"}, - {file = "aiohttp-3.13.5-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c974fb66180e58709b6fc402846f13791240d180b74de81d23913abe48e96d94"}, - {file = "aiohttp-3.13.5-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:6e27ea05d184afac78aabbac667450c75e54e35f62238d44463131bd3f96753d"}, - {file = "aiohttp-3.13.5-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:a79a6d399cef33a11b6f004c67bb07741d91f2be01b8d712d52c75711b1e07c7"}, - {file = "aiohttp-3.13.5-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:c632ce9c0b534fbe25b52c974515ed674937c5b99f549a92127c85f771a78772"}, - {file = "aiohttp-3.13.5-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:fceedde51fbd67ee2bcc8c0b33d0126cc8b51ef3bbde2f86662bd6d5a6f10ec5"}, - {file = "aiohttp-3.13.5-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:f92995dfec9420bb69ae629abf422e516923ba79ba4403bc750d94fb4a6c68c1"}, - {file = "aiohttp-3.13.5-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:20ae0ff08b1f2c8788d6fb85afcb798654ae6ba0b747575f8562de738078457b"}, - {file = "aiohttp-3.13.5-cp314-cp314-win32.whl", hash = "sha256:b20df693de16f42b2472a9c485e1c948ee55524786a0a34345511afdd22246f3"}, - {file = "aiohttp-3.13.5-cp314-cp314-win_amd64.whl", hash = "sha256:f85c6f327bf0b8c29da7d93b1cabb6363fb5e4e160a32fa241ed2dce21b73162"}, - {file = "aiohttp-3.13.5-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:1efb06900858bb618ff5cee184ae2de5828896c448403d51fb633f09e109be0a"}, - {file = "aiohttp-3.13.5-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:fee86b7c4bd29bdaf0d53d14739b08a106fdda809ca5fe032a15f52fae5fe254"}, - {file = "aiohttp-3.13.5-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:20058e23909b9e65f9da62b396b77dfa95965cbe840f8def6e572538b1d32e36"}, - {file = "aiohttp-3.13.5-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8cf20a8d6868cb15a73cab329ffc07291ba8c22b1b88176026106ae39aa6df0f"}, - {file = "aiohttp-3.13.5-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:330f5da04c987f1d5bdb8ae189137c77139f36bd1cb23779ca1a354a4b027800"}, - {file = "aiohttp-3.13.5-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:6f1cbf0c7926d315c3c26c2da41fd2b5d2fe01ac0e157b78caefc51a782196cf"}, - {file = "aiohttp-3.13.5-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:53fc049ed6390d05423ba33103ded7281fe897cf97878f369a527070bd95795b"}, - {file = "aiohttp-3.13.5-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:898703aa2667e3c5ca4c54ca36cd73f58b7a38ef87a5606414799ebce4d3fd3a"}, - {file = "aiohttp-3.13.5-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:0494a01ca9584eea1e5fbd6d748e61ecff218c51b576ee1999c23db7066417d8"}, - {file = "aiohttp-3.13.5-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:6cf81fe010b8c17b09495cbd15c1d35afbc8fb405c0c9cf4738e5ae3af1d65be"}, - {file = "aiohttp-3.13.5-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:c564dd5f09ddc9d8f2c2d0a301cd30a79a2cc1b46dd1a73bef8f0038863d016b"}, - {file = "aiohttp-3.13.5-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:2994be9f6e51046c4f864598fd9abeb4fba6e88f0b2152422c9666dcd4aea9c6"}, - {file = "aiohttp-3.13.5-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:157826e2fa245d2ef46c83ea8a5faf77ca19355d278d425c29fda0beb3318037"}, - {file = "aiohttp-3.13.5-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:a8aca50daa9493e9e13c0f566201a9006f080e7c50e5e90d0b06f53146a54500"}, - {file = "aiohttp-3.13.5-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:3b13560160d07e047a93f23aaa30718606493036253d5430887514715b67c9d9"}, - {file = "aiohttp-3.13.5-cp314-cp314t-win32.whl", hash = "sha256:9a0f4474b6ea6818b41f82172d799e4b3d29e22c2c520ce4357856fced9af2f8"}, - {file = "aiohttp-3.13.5-cp314-cp314t-win_amd64.whl", hash = "sha256:18a2f6c1182c51baa1d28d68fea51513cb2a76612f038853c0ad3c145423d3d9"}, - {file = "aiohttp-3.13.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:347542f0ea3f95b2a955ee6656461fa1c776e401ac50ebce055a6c38454a0adf"}, - {file = "aiohttp-3.13.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:178c7b5e62b454c2bc790786e6058c3cc968613b4419251b478c153a4aec32b1"}, - {file = "aiohttp-3.13.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:af545c2cffdb0967a96b6249e6f5f7b0d92cdfd267f9d5238d5b9ca63e8edb10"}, - {file = "aiohttp-3.13.5-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:206b7b3ef96e4ce211754f0cd003feb28b7d81f0ad26b8d077a5d5161436067f"}, - {file = "aiohttp-3.13.5-cp39-cp39-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:ee5e86776273de1795947d17bddd6bb19e0365fd2af4289c0d2c5454b6b1d36b"}, - {file = "aiohttp-3.13.5-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:95d14ca7abefde230f7639ec136ade282655431fd5db03c343b19dda72dd1643"}, - {file = "aiohttp-3.13.5-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:912d4b6af530ddb1338a66229dac3a25ff11d4448be3ec3d6340583995f56031"}, - {file = "aiohttp-3.13.5-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e999f0c88a458c836d5fb521814e92ed2172c649200336a6df514987c1488258"}, - {file = "aiohttp-3.13.5-cp39-cp39-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:39380e12bd1f2fdab4285b6e055ad48efbaed5c836433b142ed4f5b9be71036a"}, - {file = "aiohttp-3.13.5-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:9efcc0f11d850cefcafdd9275b9576ad3bfb539bed96807663b32ad99c4d4b88"}, - {file = "aiohttp-3.13.5-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:147b4f501d0292077f29d5268c16bb7c864a1f054d7001c4c1812c0421ea1ed0"}, - {file = "aiohttp-3.13.5-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:d147004fede1b12f6013a6dbb2a26a986a671a03c6ea740ddc76500e5f1c399f"}, - {file = "aiohttp-3.13.5-cp39-cp39-musllinux_1_2_riscv64.whl", hash = "sha256:9277145d36a01653863899c665243871434694bcc3431922c3b35c978061bdb8"}, - {file = "aiohttp-3.13.5-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:4e704c52438f66fdd89588346183d898bb42167cf88f8b7ff1c0f9fc957c348f"}, - {file = "aiohttp-3.13.5-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a8a4d3427e8de1312ddf309cc482186466c79895b3a139fed3259fc01dfa9a5b"}, - {file = "aiohttp-3.13.5-cp39-cp39-win32.whl", hash = "sha256:6f497a6876aa4b1a102b04996ce4c1170c7040d83faa9387dd921c16e30d5c83"}, - {file = "aiohttp-3.13.5-cp39-cp39-win_amd64.whl", hash = "sha256:cb979826071c0986a5f08333a36104153478ce6018c58cba7f9caddaf63d5d67"}, - {file = "aiohttp-3.13.5.tar.gz", hash = "sha256:9d98cc980ecc96be6eb4c1994ce35d28d8b1f5e5208a23b421187d1209dbb7d1"}, + {file = "aiohttp-3.13.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6290fe12fe8cefa6ea3c1c5b969d32c010dfe191d4392ff9b599a3f473cbe722"}, + {file = "aiohttp-3.13.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7520d92c0e8fbbe63f36f20a5762db349ff574ad38ad7bc7732558a650439845"}, + {file = "aiohttp-3.13.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d2710ae1e1b81d0f187883b6e9d66cecf8794b50e91aa1e73fc78bfb5503b5d9"}, + {file = "aiohttp-3.13.4-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:717d17347567ded1e273aa09918650dfd6fd06f461549204570c7973537d4123"}, + {file = "aiohttp-3.13.4-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:383880f7b8de5ac208fa829c7038d08e66377283b2de9e791b71e06e803153c2"}, + {file = "aiohttp-3.13.4-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1867087e2c1963db1216aedf001efe3b129835ed2b05d97d058176a6d08b5726"}, + {file = "aiohttp-3.13.4-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:6234bf416a38d687c3ab7f79934d7fb2a42117a5b9813aca07de0a5398489023"}, + {file = "aiohttp-3.13.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3cdd3393130bf6588962441ffd5bde1d3ea2d63a64afa7119b3f3ba349cebbe7"}, + {file = "aiohttp-3.13.4-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:0d0dbc6c76befa76865373d6aa303e480bb8c3486e7763530f7f6e527b471118"}, + {file = "aiohttp-3.13.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:10fb7b53262cf4144a083c9db0d2b4d22823d6708270a9970c4627b248c6064c"}, + {file = "aiohttp-3.13.4-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:eb10ce8c03850e77f4d9518961c227be569e12f71525a7e90d17bca04299921d"}, + {file = "aiohttp-3.13.4-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:7c65738ac5ae32b8feef699a4ed0dc91a0c8618b347781b7461458bbcaaac7eb"}, + {file = "aiohttp-3.13.4-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:6b335919ffbaf98df8ff3c74f7a6decb8775882632952fd1810a017e38f15aee"}, + {file = "aiohttp-3.13.4-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:ec75fc18cb9f4aca51c2cbace20cf6716e36850f44189644d2d69a875d5e0532"}, + {file = "aiohttp-3.13.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:463fa18a95c5a635d2b8c09babe240f9d7dbf2a2010a6c0b35d8c4dff2a0e819"}, + {file = "aiohttp-3.13.4-cp310-cp310-win32.whl", hash = "sha256:13168f5645d9045522c6cef818f54295376257ed8d02513a37c2ef3046fc7a97"}, + {file = "aiohttp-3.13.4-cp310-cp310-win_amd64.whl", hash = "sha256:a7058af1f53209fdf07745579ced525d38d481650a989b7aa4a3b484b901cdab"}, + {file = "aiohttp-3.13.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8ea0c64d1bcbf201b285c2246c51a0c035ba3bbd306640007bc5844a3b4658c1"}, + {file = "aiohttp-3.13.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6f742e1fa45c0ed522b00ede565e18f97e4cf8d1883a712ac42d0339dfb0cce7"}, + {file = "aiohttp-3.13.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6dcfb50ee25b3b7a1222a9123be1f9f89e56e67636b561441f0b304e25aaef8f"}, + {file = "aiohttp-3.13.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3262386c4ff370849863ea93b9ea60fd59c6cf56bf8f93beac625cf4d677c04d"}, + {file = "aiohttp-3.13.4-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:473bb5aa4218dd254e9ae4834f20e31f5a0083064ac0136a01a62ddbae2eaa42"}, + {file = "aiohttp-3.13.4-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:e56423766399b4c77b965f6aaab6c9546617b8994a956821cc507d00b91d978c"}, + {file = "aiohttp-3.13.4-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:8af249343fafd5ad90366a16d230fc265cf1149f26075dc9fe93cfd7c7173942"}, + {file = "aiohttp-3.13.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0bc0a5cf4f10ef5a2c94fdde488734b582a3a7a000b131263e27c9295bd682d9"}, + {file = "aiohttp-3.13.4-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:5c7ff1028e3c9fc5123a865ce17df1cb6424d180c503b8517afbe89aa566e6be"}, + {file = "aiohttp-3.13.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ba5cf98b5dcb9bddd857da6713a503fa6d341043258ca823f0f5ab7ab4a94ee8"}, + {file = "aiohttp-3.13.4-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:d85965d3ba21ee4999e83e992fecb86c4614d6920e40705501c0a1f80a583c12"}, + {file = "aiohttp-3.13.4-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:49f0b18a9b05d79f6f37ddd567695943fcefb834ef480f17a4211987302b2dc7"}, + {file = "aiohttp-3.13.4-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:7f78cb080c86fbf765920e5f1ef35af3f24ec4314d6675d0a21eaf41f6f2679c"}, + {file = "aiohttp-3.13.4-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:67a3ec705534a614b68bbf1c70efa777a21c3da3895d1c44510a41f5a7ae0453"}, + {file = "aiohttp-3.13.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d6630ec917e85c5356b2295744c8a97d40f007f96a1c76bf1928dc2e27465393"}, + {file = "aiohttp-3.13.4-cp311-cp311-win32.whl", hash = "sha256:54049021bc626f53a5394c29e8c444f726ee5a14b6e89e0ad118315b1f90f5e3"}, + {file = "aiohttp-3.13.4-cp311-cp311-win_amd64.whl", hash = "sha256:c033f2bc964156030772d31cbf7e5defea181238ce1f87b9455b786de7d30145"}, + {file = "aiohttp-3.13.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:ee62d4471ce86b108b19c3364db4b91180d13fe3510144872d6bad5401957360"}, + {file = "aiohttp-3.13.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c0fd8f41b54b58636402eb493afd512c23580456f022c1ba2db0f810c959ed0d"}, + {file = "aiohttp-3.13.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4baa48ce49efd82d6b1a0be12d6a36b35e5594d1dd42f8bfba96ea9f8678b88c"}, + {file = "aiohttp-3.13.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d738ebab9f71ee652d9dbd0211057690022201b11197f9a7324fd4dba128aa97"}, + {file = "aiohttp-3.13.4-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:0ce692c3468fa831af7dceed52edf51ac348cebfc8d3feb935927b63bd3e8576"}, + {file = "aiohttp-3.13.4-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:8e08abcfe752a454d2cb89ff0c08f2d1ecd057ae3e8cc6d84638de853530ebab"}, + {file = "aiohttp-3.13.4-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5977f701b3fff36367a11087f30ea73c212e686d41cd363c50c022d48b011d8d"}, + {file = "aiohttp-3.13.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:54203e10405c06f8b6020bd1e076ae0fe6c194adcee12a5a78af3ffa3c57025e"}, + {file = "aiohttp-3.13.4-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:358a6af0145bc4dda037f13167bef3cce54b132087acc4c295c739d05d16b1c3"}, + {file = "aiohttp-3.13.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:898ea1850656d7d61832ef06aa9846ab3ddb1621b74f46de78fbc5e1a586ba83"}, + {file = "aiohttp-3.13.4-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:7bc30cceb710cf6a44e9617e43eebb6e3e43ad855a34da7b4b6a73537d8a6763"}, + {file = "aiohttp-3.13.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:4a31c0c587a8a038f19a4c7e60654a6c899c9de9174593a13e7cc6e15ff271f9"}, + {file = "aiohttp-3.13.4-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:2062f675f3fe6e06d6113eb74a157fb9df58953ffed0cdb4182554b116545758"}, + {file = "aiohttp-3.13.4-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:3d1ba8afb847ff80626d5e408c1fdc99f942acc877d0702fe137015903a220a9"}, + {file = "aiohttp-3.13.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b08149419994cdd4d5eecf7fd4bc5986b5a9380285bcd01ab4c0d6bfca47b79d"}, + {file = "aiohttp-3.13.4-cp312-cp312-win32.whl", hash = "sha256:fc432f6a2c4f720180959bc19aa37259651c1a4ed8af8afc84dd41c60f15f791"}, + {file = "aiohttp-3.13.4-cp312-cp312-win_amd64.whl", hash = "sha256:6148c9ae97a3e8bff9a1fc9c757fa164116f86c100468339730e717590a3fb77"}, + {file = "aiohttp-3.13.4-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:63dd5e5b1e43b8fb1e91b79b7ceba1feba588b317d1edff385084fcc7a0a4538"}, + {file = "aiohttp-3.13.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:746ac3cc00b5baea424dacddea3ec2c2702f9590de27d837aa67004db1eebc6e"}, + {file = "aiohttp-3.13.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bda8f16ea99d6a6705e5946732e48487a448be874e54a4f73d514660ff7c05d3"}, + {file = "aiohttp-3.13.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4b061e7b5f840391e3f64d0ddf672973e45c4cfff7a0feea425ea24e51530fc2"}, + {file = "aiohttp-3.13.4-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:b252e8d5cd66184b570d0d010de742736e8a4fab22c58299772b0c5a466d4b21"}, + {file = "aiohttp-3.13.4-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:20af8aad61d1803ff11152a26146d8d81c266aa8c5aa9b4504432abb965c36a0"}, + {file = "aiohttp-3.13.4-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:13a5cc924b59859ad2adb1478e31f410a7ed46e92a2a619d6d1dd1a63c1a855e"}, + {file = "aiohttp-3.13.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:534913dfb0a644d537aebb4123e7d466d94e3be5549205e6a31f72368980a81a"}, + {file = "aiohttp-3.13.4-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:320e40192a2dcc1cf4b5576936e9652981ab596bf81eb309535db7e2f5b5672f"}, + {file = "aiohttp-3.13.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9e587fcfce2bcf06526a43cb705bdee21ac089096f2e271d75de9c339db3100c"}, + {file = "aiohttp-3.13.4-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:9eb9c2eea7278206b5c6c1441fdd9dc420c278ead3f3b2cc87f9b693698cc500"}, + {file = "aiohttp-3.13.4-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:29be00c51972b04bf9d5c8f2d7f7314f48f96070ca40a873a53056e652e805f7"}, + {file = "aiohttp-3.13.4-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:90c06228a6c3a7c9f776fe4fc0b7ff647fffd3bed93779a6913c804ae00c1073"}, + {file = "aiohttp-3.13.4-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:a533ec132f05fd9a1d959e7f34184cd7d5e8511584848dab85faefbaac573069"}, + {file = "aiohttp-3.13.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:1c946f10f413836f82ea4cfb90200d2a59578c549f00857e03111cf45ad01ca5"}, + {file = "aiohttp-3.13.4-cp313-cp313-win32.whl", hash = "sha256:48708e2706106da6967eff5908c78ca3943f005ed6bcb75da2a7e4da94ef8c70"}, + {file = "aiohttp-3.13.4-cp313-cp313-win_amd64.whl", hash = "sha256:74a2eb058da44fa3a877a49e2095b591d4913308bb424c418b77beb160c55ce3"}, + {file = "aiohttp-3.13.4-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:e0a2c961fc92abeff61d6444f2ce6ad35bb982db9fc8ff8a47455beacf454a57"}, + {file = "aiohttp-3.13.4-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:153274535985a0ff2bff1fb6c104ed547cec898a09213d21b0f791a44b14d933"}, + {file = "aiohttp-3.13.4-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:351f3171e2458da3d731ce83f9e6b9619e325c45cbd534c7759750cabf453ad7"}, + {file = "aiohttp-3.13.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f989ac8bc5595ff761a5ccd32bdb0768a117f36dd1504b1c2c074ed5d3f4df9c"}, + {file = "aiohttp-3.13.4-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:d36fc1709110ec1e87a229b201dd3ddc32aa01e98e7868083a794609b081c349"}, + {file = "aiohttp-3.13.4-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:42adaeea83cbdf069ab94f5103ce0787c21fb1a0153270da76b59d5578302329"}, + {file = "aiohttp-3.13.4-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:92deb95469928cc41fd4b42a95d8012fa6df93f6b1c0a83af0ffbc4a5e218cde"}, + {file = "aiohttp-3.13.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0c0c7c07c4257ef3a1df355f840bc62d133bcdef5c1c5ba75add3c08553e2eed"}, + {file = "aiohttp-3.13.4-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f062c45de8a1098cb137a1898819796a2491aec4e637a06b03f149315dff4d8f"}, + {file = "aiohttp-3.13.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:76093107c531517001114f0ebdb4f46858ce818590363e3e99a4a2280334454a"}, + {file = "aiohttp-3.13.4-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:6f6ec32162d293b82f8b63a16edc80769662fbd5ae6fbd4936d3206a2c2cc63b"}, + {file = "aiohttp-3.13.4-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:5903e2db3d202a00ad9f0ec35a122c005e85d90c9836ab4cda628f01edf425e2"}, + {file = "aiohttp-3.13.4-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:2d5bea57be7aca98dbbac8da046d99b5557c5cf4e28538c4c786313078aca09e"}, + {file = "aiohttp-3.13.4-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:bcf0c9902085976edc0232b75006ef38f89686901249ce14226b6877f88464fb"}, + {file = "aiohttp-3.13.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:c3295f98bfeed2e867cab588f2a146a9db37a85e3ae9062abf46ba062bd29165"}, + {file = "aiohttp-3.13.4-cp314-cp314-win32.whl", hash = "sha256:a598a5c5767e1369d8f5b08695cab1d8160040f796c4416af76fd773d229b3c9"}, + {file = "aiohttp-3.13.4-cp314-cp314-win_amd64.whl", hash = "sha256:c555db4bc7a264bead5a7d63d92d41a1122fcd39cc62a4db815f45ad46f9c2c8"}, + {file = "aiohttp-3.13.4-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:45abbbf09a129825d13c18c7d3182fecd46d9da3cfc383756145394013604ac1"}, + {file = "aiohttp-3.13.4-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:74c80b2bc2c2adb7b3d1941b2b60701ee2af8296fc8aad8b8bc48bc25767266c"}, + {file = "aiohttp-3.13.4-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c97989ae40a9746650fa196894f317dafc12227c808c774929dda0ff873a5954"}, + {file = "aiohttp-3.13.4-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:dae86be9811493f9990ef44fff1685f5c1a3192e9061a71a109d527944eed551"}, + {file = "aiohttp-3.13.4-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:1db491abe852ca2fa6cc48a3341985b0174b3741838e1341b82ac82c8bd9e871"}, + {file = "aiohttp-3.13.4-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:0e5d701c0aad02a7dce72eef6b93226cf3734330f1a31d69ebbf69f33b86666e"}, + {file = "aiohttp-3.13.4-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:8ac32a189081ae0a10ba18993f10f338ec94341f0d5df8fff348043962f3c6f8"}, + {file = "aiohttp-3.13.4-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:98e968cdaba43e45c73c3f306fca418c8009a957733bac85937c9f9cf3f4de27"}, + {file = "aiohttp-3.13.4-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ca114790c9144c335d538852612d3e43ea0f075288f4849cf4b05d6cd2238ce7"}, + {file = "aiohttp-3.13.4-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:ea2e071661ba9cfe11eabbc81ac5376eaeb3061f6e72ec4cc86d7cdd1ffbdbbb"}, + {file = "aiohttp-3.13.4-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:34e89912b6c20e0fd80e07fa401fd218a410aa1ce9f1c2f1dad6db1bd0ce0927"}, + {file = "aiohttp-3.13.4-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:0e217cf9f6a42908c52b46e42c568bd57adc39c9286ced31aaace614b6087965"}, + {file = "aiohttp-3.13.4-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:0c296f1221e21ba979f5ac1964c3b78cfde15c5c5f855ffd2caab337e9cd9182"}, + {file = "aiohttp-3.13.4-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:d99a9d168ebaffb74f36d011750e490085ac418f4db926cce3989c8fe6cb6b1b"}, + {file = "aiohttp-3.13.4-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:cb19177205d93b881f3f89e6081593676043a6828f59c78c17a0fd6c1fbed2ba"}, + {file = "aiohttp-3.13.4-cp314-cp314t-win32.whl", hash = "sha256:c606aa5656dab6552e52ca368e43869c916338346bfaf6304e15c58fb113ea30"}, + {file = "aiohttp-3.13.4-cp314-cp314t-win_amd64.whl", hash = "sha256:014dcc10ec8ab8db681f0d68e939d1e9286a5aa2b993cbbdb0db130853e02144"}, + {file = "aiohttp-3.13.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b3f00bb9403728b08eb3951e982ca0a409c7a871d709684623daeab79465b181"}, + {file = "aiohttp-3.13.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:cb15595eb52870f84248d7cc97013a76f52ab02ff74d394be093b1d9b8b82bc0"}, + {file = "aiohttp-3.13.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:907ad36b6a65cff7d88d7aca0f77c650546ba850a4f92c92ecb83590d4613249"}, + {file = "aiohttp-3.13.4-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5539ec0d6a3a5c6799b661b7e79166ad1b7ae71ccb59a92fcb6b4ef89295bc94"}, + {file = "aiohttp-3.13.4-cp39-cp39-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3b4e07d8803a70dd886b5f38588e5b49f894995ca8e132b06c31a2583ae2ef6e"}, + {file = "aiohttp-3.13.4-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ce7320a945aac4bf0bb8901600e4f9409eb602f25ce3ef4d275b48f6d704a862"}, + {file = "aiohttp-3.13.4-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:26ed03f7d3d6453634729e2c7600d7255d65e879559c5a48fe1bb78355cde74b"}, + {file = "aiohttp-3.13.4-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4c3f733916e85506b8000dddc071c6b82f8c68f56c99adb328d6550017db062d"}, + {file = "aiohttp-3.13.4-cp39-cp39-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b3d525648fe7c8b4977e460c18098f9f81d7991d72edfdc2f13cf96068f279bc"}, + {file = "aiohttp-3.13.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:4e2e68085730a03704beb2cff035fa8648f62c9f93758d7e6d70add7f7bb5b3b"}, + {file = "aiohttp-3.13.4-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:797613182ffaaca0b9ad5f3b3d3ce5d21242c768f75e66c750b8292bd97c9de3"}, + {file = "aiohttp-3.13.4-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:2d15e7e4f1099d9e4d863eaf77a8eee5dcb002b7d7188061b0fbee37f845899e"}, + {file = "aiohttp-3.13.4-cp39-cp39-musllinux_1_2_riscv64.whl", hash = "sha256:19f60011ad60e40a01d242238bb335399e3a4d8df958c63cbb835add8d5c3b5a"}, + {file = "aiohttp-3.13.4-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:c344c47e85678e410b064fc2ace14db86bb69db7ed5520c234bf13aed603ec30"}, + {file = "aiohttp-3.13.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:d904084985ca66459e93797e5e05985c048a9c0633655331144c089943e53d12"}, + {file = "aiohttp-3.13.4-cp39-cp39-win32.whl", hash = "sha256:1746338dc2a33cf706cd7446575d13d451f28f9860bebc908c7632b22e71ae3f"}, + {file = "aiohttp-3.13.4-cp39-cp39-win_amd64.whl", hash = "sha256:a5444dce2e6fba0a1dc2d58d026e674f25f21de178c6f844342629bcef019f2f"}, + {file = "aiohttp-3.13.4.tar.gz", hash = "sha256:d97a6d09c66087890c2ab5d49069e1e570583f7ac0314ecf98294c1b6aaebd38"}, ] [package.dependencies] @@ -1578,6 +1578,7 @@ description = "Distro - an OS platform information API" optional = false python-versions = ">=3.6" groups = ["main"] +markers = "python_version < \"3.15\"" files = [ {file = "distro-1.9.0-py3-none-any.whl", hash = "sha256:7bffd925d65168f85027d8da9af6bddab658135b840670a223589bc0c8ef02b2"}, {file = "distro-1.9.0.tar.gz", hash = "sha256:2fa77c6fd8940f116ee1d6b94a2f90b13b5ea8d019b98bc8bafdcabcdd9bdbed"}, @@ -1787,6 +1788,7 @@ description = "Python bindings to Rust's UUID library." optional = false python-versions = ">=3.8" groups = ["main"] +markers = "python_version < \"3.15\"" files = [ {file = "fastuuid-0.14.0-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:6e6243d40f6c793c3e2ee14c13769e341b90be5ef0c23c82fa6515a96145181a"}, {file = "fastuuid-0.14.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:13ec4f2c3b04271f62be2e1ce7e95ad2dd1cf97e94503a3760db739afbd48f00"}, @@ -1875,6 +1877,7 @@ description = "A platform independent file lock." optional = false python-versions = ">=3.10" groups = ["main"] +markers = "python_version < \"3.15\" or extra == \"hf\" or extra == \"ml\"" files = [ {file = "filelock-3.25.2-py3-none-any.whl", hash = "sha256:ca8afb0da15f229774c9ad1b455ed96e85a81373065fb10446672f64444ddf70"}, {file = "filelock-3.25.2.tar.gz", hash = "sha256:b64ece2b38f4ca29dd3e810287aa8c48182bbecd1ae6e9ae126c9b35f1382694"}, @@ -2141,6 +2144,7 @@ description = "File-system specification" optional = false python-versions = ">=3.10" groups = ["main"] +markers = "python_version < \"3.15\" or extra == \"hf\" or extra == \"ml\"" files = [ {file = "fsspec-2026.2.0-py3-none-any.whl", hash = "sha256:98de475b5cb3bd66bedd5c4679e87b4fdfe1a3bf4d707b151b3c07e58c9a2437"}, {file = "fsspec-2026.2.0.tar.gz", hash = "sha256:6544e34b16869f5aacd5b90bdf1a71acb37792ea3ddf6125ee69a22a53fb8bff"}, @@ -2552,7 +2556,7 @@ description = "Fast transfer of large files with the Hugging Face Hub." optional = false python-versions = ">=3.8" groups = ["main"] -markers = "platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"arm64\" or platform_machine == \"aarch64\"" +markers = "(python_version < \"3.15\" or extra == \"hf\" or extra == \"ml\") and (platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"arm64\" or platform_machine == \"aarch64\")" files = [ {file = "hf_xet-1.4.2-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:ac8202ae1e664b2c15cdfc7298cbb25e80301ae596d602ef7870099a126fcad4"}, {file = "hf_xet-1.4.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:6d2f8ee39fa9fba9af929f8c0d0482f8ee6e209179ad14a909b6ad78ffcb7c81"}, @@ -2654,6 +2658,7 @@ description = "Client library to download and publish models, datasets and other optional = false python-versions = ">=3.8.0" groups = ["main"] +markers = "python_version < \"3.15\" or extra == \"hf\" or extra == \"ml\"" files = [ {file = "huggingface_hub-0.36.2-py3-none-any.whl", hash = "sha256:48f0c8eac16145dfce371e9d2d7772854a4f591bcb56c9cf548accf531d54270"}, {file = "huggingface_hub-0.36.2.tar.gz", hash = "sha256:1934304d2fb224f8afa3b87007d58501acfda9215b334eed53072dd5e815ff7a"}, @@ -2835,6 +2840,7 @@ description = "Fast iterable JSON parser." optional = false python-versions = ">=3.9" groups = ["main"] +markers = "python_version < \"3.15\"" files = [ {file = "jiter-0.13.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2ffc63785fd6c7977defe49b9824ae6ce2b2e2b77ce539bdaf006c26da06342e"}, {file = "jiter-0.13.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4a638816427006c1e3f0013eb66d391d7a3acda99a7b0cf091eff4497ccea33a"}, @@ -2988,6 +2994,7 @@ description = "An implementation of JSON Schema validation for Python" optional = false python-versions = ">=3.8" groups = ["main"] +markers = "python_version < \"3.15\"" files = [ {file = "jsonschema-4.23.0-py3-none-any.whl", hash = "sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566"}, {file = "jsonschema-4.23.0.tar.gz", hash = "sha256:d71497fef26351a33265337fa77ffeb82423f3ea21283cd9467bb03999266bc4"}, @@ -3010,6 +3017,7 @@ description = "The JSON Schema meta-schemas and vocabularies, exposed as a Regis optional = false python-versions = ">=3.9" groups = ["main"] +markers = "python_version < \"3.15\"" files = [ {file = "jsonschema_specifications-2025.9.1-py3-none-any.whl", hash = "sha256:98802fee3a11ee76ecaca44429fda8a41bff98b00a0f2838151b113f210cc6fe"}, {file = "jsonschema_specifications-2025.9.1.tar.gz", hash = "sha256:b540987f239e745613c7a9176f3edb72b832a4ac465cf02712288397832b5e8d"}, @@ -3177,38 +3185,40 @@ files = [ [[package]] name = "litellm" -version = "1.83.7" +version = "1.83.14" description = "Library to easily interface with LLM API providers" optional = false -python-versions = "<4.0,>=3.9" +python-versions = "<3.14,>=3.10" groups = ["main"] +markers = "python_version < \"3.15\"" files = [ - {file = "litellm-1.83.7-py3-none-any.whl", hash = "sha256:5784a1d9a9a4a8acd6ca1e347003a5e2e1b3c749b4d41e7da4904577adade111"}, - {file = "litellm-1.83.7.tar.gz", hash = "sha256:e2f2cb99df2e2b2eab63f1354faa45c88dd7c8d40c18eb648afb1b349c689633"}, + {file = "litellm-1.83.14-py3-none-any.whl", hash = "sha256:92b11ba2a32cf80707ddf388d18526696c7999a21b418c5e3b6eda1243d2cfdb"}, + {file = "litellm-1.83.14.tar.gz", hash = "sha256:24aef9b47cdc424c833e32f3727f411741c690832cd1fe4405e0077144fe09c9"}, ] [package.dependencies] -aiohttp = "3.13.5" +aiohttp = "3.13.4" click = "8.1.8" fastuuid = "0.14.0" httpx = "0.28.1" importlib-metadata = "8.5.0" jinja2 = "3.1.6" jsonschema = "4.23.0" -openai = "2.30.0" +openai = "2.24.0" pydantic = "2.12.5" -python-dotenv = "1.0.1" +python-dotenv = "1.2.2" tiktoken = "0.12.0" tokenizers = "0.22.2" [package.extras] caching = ["diskcache (==5.6.3)"] -extra-proxy = ["a2a-sdk (==0.3.25) ; python_version >= \"3.10\"", "azure-identity (==1.25.3) ; python_version >= \"3.9\"", "azure-keyvault-secrets (==4.10.0)", "google-cloud-iam (==2.19.1)", "google-cloud-kms (==2.24.2)", "prisma (==0.11.0)", "redisvl (==0.4.1) ; python_version >= \"3.9\" and python_version < \"3.14\"", "resend (==2.23.0)"] +extra-proxy = ["a2a-sdk (==0.3.24)", "azure-identity (==1.25.2)", "azure-keyvault-secrets (==4.10.0)", "google-cloud-iam (==2.19.1)", "google-cloud-kms (==2.24.2)", "prisma (==0.11.0)", "redisvl (==0.4.1) ; python_full_version < \"3.14.0\"", "resend (==2.23.0)"] google = ["google-cloud-aiplatform (==1.133.0)"] -grpc = ["grpcio (==1.80.0)"] -mlflow = ["mlflow (==3.9.0) ; python_version >= \"3.10\""] -proxy = ["PyJWT (==2.12.1) ; python_version >= \"3.9\"", "apscheduler (==3.11.2)", "azure-identity (==1.25.3) ; python_version >= \"3.9\"", "azure-storage-blob (==12.28.0)", "backoff (==2.2.1)", "boto3 (==1.42.80)", "cryptography (==43.0.3)", "fastapi (==0.124.4)", "fastapi-sso (==0.16.0)", "gunicorn (==23.0.0)", "litellm-enterprise (==0.1.37)", "litellm-proxy-extras (==0.4.65)", "mcp (==1.26.0) ; python_version >= \"3.10\"", "orjson (==3.10.15)", "polars (==1.39.3) ; python_version >= \"3.10\"", "pynacl (==1.6.2)", "pyroscope-io (==0.8.16) ; sys_platform != \"win32\"", "python-multipart (==0.0.20)", "pyyaml (==6.0.3)", "rich (==13.9.4)", "rq (==2.7.0)", "soundfile (==0.12.1)", "uvicorn (==0.33.0)", "uvloop (==0.21.0) ; sys_platform != \"win32\"", "websockets (==15.0.1)"] -semantic-router = ["semantic-router (==0.1.12) ; python_version >= \"3.9\" and python_version < \"3.14\""] +grpc = ["grpcio (==1.78.0)"] +mlflow = ["mlflow (==3.11.1)"] +proxy = ["apscheduler (==3.11.2)", "azure-identity (==1.25.2)", "azure-storage-blob (==12.28.0)", "backoff (==2.2.1)", "boto3 (==1.42.59)", "cryptography (==46.0.7)", "fastapi (==0.124.4)", "fastapi-sso (==0.19.0)", "gunicorn (==23.0.0)", "litellm-enterprise (==0.1.39)", "litellm-proxy-extras (==0.4.69)", "mcp (==1.26.0)", "orjson (==3.11.6)", "polars (==1.38.1)", "pyjwt (==2.12.0)", "pynacl (==1.6.2)", "pyroscope-io (==0.8.16) ; sys_platform != \"win32\"", "python-multipart (==0.0.26)", "pyyaml (==6.0.3)", "restrictedpython (==8.1)", "rich (==13.9.4)", "rq (==2.7.0)", "soundfile (==0.12.1)", "uvicorn (==0.33.0)", "uvloop (==0.21.0) ; sys_platform != \"win32\"", "websockets (==15.0.1)"] +proxy-runtime = ["anthropic[vertex] (==0.84.0)", "azure-ai-contentsafety (==1.0.0)", "azure-storage-file-datalake (==12.20.0)", "ddtrace (==2.19.0)", "detect-secrets (==1.5.0)", "google-cloud-aiplatform (==1.133.0)", "google-genai (==1.37.0)", "grpcio (==1.78.0)", "langfuse (==2.59.7)", "llm-sandbox (==0.3.39)", "mangum (==0.17.0)", "opentelemetry-api (==1.28.0)", "opentelemetry-exporter-otlp (==1.28.0)", "opentelemetry-sdk (==1.28.0)", "prometheus-client (==0.20.0)", "pypdf (==6.10.2) ; python_full_version < \"3.14.0\"", "sentry-sdk (==2.21.0)"] +semantic-router = ["aurelio-sdk (==0.0.19) ; python_full_version < \"3.14.0\"", "semantic-router (==0.1.12) ; python_full_version < \"3.14.0\""] utils = ["numpydoc (==1.8.0)"] [[package]] @@ -4678,14 +4688,15 @@ files = [ [[package]] name = "openai" -version = "2.30.0" +version = "2.24.0" description = "The official Python library for the openai API" optional = false python-versions = ">=3.9" groups = ["main"] +markers = "python_version < \"3.15\"" files = [ - {file = "openai-2.30.0-py3-none-any.whl", hash = "sha256:9a5ae616888eb2748ec5e0c5b955a51592e0b201a11f4262db920f2a78c5231d"}, - {file = "openai-2.30.0.tar.gz", hash = "sha256:92f7661c990bda4b22a941806c83eabe4896c3094465030dd882a71abe80c885"}, + {file = "openai-2.24.0-py3-none-any.whl", hash = "sha256:fed30480d7d6c884303287bde864980a4b137b60553ffbcf9ab4a233b7a73d94"}, + {file = "openai-2.24.0.tar.gz", hash = "sha256:1e5769f540dbd01cb33bc4716a23e67b9d695161a734aff9c5f925e2bf99a673"}, ] [package.dependencies] @@ -4696,7 +4707,7 @@ jiter = ">=0.10.0,<1" pydantic = ">=1.9.0,<3" sniffio = "*" tqdm = ">4" -typing-extensions = ">=4.14,<5" +typing-extensions = ">=4.11,<5" [package.extras] aiohttp = ["aiohttp", "httpx-aiohttp (>=0.1.9)"] @@ -5968,14 +5979,14 @@ six = ">=1.5" [[package]] name = "python-dotenv" -version = "1.0.1" +version = "1.2.2" description = "Read key-value pairs from a .env file and set them as environment variables" optional = false -python-versions = ">=3.8" +python-versions = ">=3.10" groups = ["main"] files = [ - {file = "python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca"}, - {file = "python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a"}, + {file = "python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a"}, + {file = "python_dotenv-1.2.2.tar.gz", hash = "sha256:2c371a91fbd7ba082c2c1dc1f8bf89ca22564a087c2c287cd9b662adde799cf3"}, ] [package.extras] @@ -6324,6 +6335,7 @@ description = "JSON Referencing + Python" optional = false python-versions = ">=3.10" groups = ["main"] +markers = "python_version < \"3.15\"" files = [ {file = "referencing-0.37.0-py3-none-any.whl", hash = "sha256:381329a9f99628c9069361716891d34ad94af76e461dcb0335825aecc7692231"}, {file = "referencing-0.37.0.tar.gz", hash = "sha256:44aefc3142c5b842538163acb373e24cce6632bd54bdb01b21ad5863489f50d8"}, @@ -6341,6 +6353,7 @@ description = "Alternative regular expression module, to replace re." optional = false python-versions = ">=3.10" groups = ["main"] +markers = "python_version < \"3.15\" or extra == \"hf\"" files = [ {file = "regex-2026.2.28-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:fc48c500838be6882b32748f60a15229d2dea96e59ef341eaa96ec83538f498d"}, {file = "regex-2026.2.28-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2afa673660928d0b63d84353c6c08a8a476ddfc4a47e11742949d182e6863ce8"}, @@ -6556,6 +6569,7 @@ description = "Python bindings to Rust's persistent data structures (rpds)" optional = false python-versions = ">=3.10" groups = ["main"] +markers = "python_version < \"3.15\"" files = [ {file = "rpds_py-0.30.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:679ae98e00c0e8d68a7fda324e16b90fd5260945b45d3b824c892cec9eea3288"}, {file = "rpds_py-0.30.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4cc2206b76b4f576934f0ed374b10d7ca5f457858b157ca52064bdfc26b9fc00"}, @@ -7523,6 +7537,7 @@ description = "tiktoken is a fast BPE tokeniser for use with OpenAI's models" optional = false python-versions = ">=3.9" groups = ["main"] +markers = "python_version < \"3.15\"" files = [ {file = "tiktoken-0.12.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3de02f5a491cfd179aec916eddb70331814bd6bf764075d39e21d5862e533970"}, {file = "tiktoken-0.12.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b6cfb6d9b7b54d20af21a912bfe63a2727d9cfa8fbda642fd8322c70340aad16"}, @@ -7597,6 +7612,7 @@ description = "" optional = false python-versions = ">=3.9" groups = ["main"] +markers = "python_version < \"3.15\" or extra == \"hf\"" files = [ {file = "tokenizers-0.22.2-cp39-abi3-macosx_10_12_x86_64.whl", hash = "sha256:544dd704ae7238755d790de45ba8da072e9af3eea688f698b137915ae959281c"}, {file = "tokenizers-0.22.2-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:1e418a55456beedca4621dbab65a318981467a2b188e982a23e117f115ce5001"}, @@ -7853,6 +7869,7 @@ description = "Fast, Extensible Progress Meter" optional = false python-versions = ">=3.7" groups = ["main"] +markers = "python_version < \"3.15\" or extra == \"hf\" or extra == \"ml\"" files = [ {file = "tqdm-4.67.3-py3-none-any.whl", hash = "sha256:ee1e4c0e59148062281c49d80b25b67771a127c85fc9676d3be5f243206826bf"}, {file = "tqdm-4.67.3.tar.gz", hash = "sha256:7d825f03f89244ef73f1d4ce193cb1774a8179fd96f31d7e1dcde62092b960bb"}, @@ -8577,4 +8594,4 @@ slack = ["slack-sdk"] [metadata] lock-version = "2.1" python-versions = ">=3.10,<4.0" -content-hash = "784940ec78b316b4b963186bbe9e0c1d12a18d4c412c340018f547f6542472eb" +content-hash = "45c8f4b06bd7c221e1fd5c2cea1e07b378f1b819168fbf93a0da256416bf8626" diff --git a/project/events/2026-04-29T17:15:25.069Z__56f85a21-34f0-4f52-9e15-03fc6109f84f.json b/project/events/2026-04-29T17:15:25.069Z__56f85a21-34f0-4f52-9e15-03fc6109f84f.json new file mode 100644 index 00000000..b4d614ae --- /dev/null +++ b/project/events/2026-04-29T17:15:25.069Z__56f85a21-34f0-4f52-9e15-03fc6109f84f.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "56f85a21-34f0-4f52-9e15-03fc6109f84f", + "issue_id": "tcts-b82842f2-1508-4d45-98ef-1017d09e100a", + "event_type": "comment_added", + "occurred_at": "2026-04-29T17:15:25.069Z", + "actor_id": "derek.norrbom", + "payload": { + "comment_author": "derek.norrbom", + "comment_id": "351ba75d-3496-4c34-8cd9-1ac548304465" + } +} \ No newline at end of file diff --git a/project/events/2026-04-29T17:16:27.812Z__9f1d4b1f-b318-4891-87da-be6e8c456173.json b/project/events/2026-04-29T17:16:27.812Z__9f1d4b1f-b318-4891-87da-be6e8c456173.json new file mode 100644 index 00000000..668dd2e3 --- /dev/null +++ b/project/events/2026-04-29T17:16:27.812Z__9f1d4b1f-b318-4891-87da-be6e8c456173.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "9f1d4b1f-b318-4891-87da-be6e8c456173", + "issue_id": "tcts-b82842f2-1508-4d45-98ef-1017d09e100a", + "event_type": "comment_added", + "occurred_at": "2026-04-29T17:16:27.812Z", + "actor_id": "derek.norrbom", + "payload": { + "comment_author": "derek.norrbom", + "comment_id": "538411d0-680c-4ac1-8bba-30a63ccc5bd3" + } +} \ No newline at end of file diff --git a/project/issues/tcts-b82842f2-1508-4d45-98ef-1017d09e100a.json b/project/issues/tcts-b82842f2-1508-4d45-98ef-1017d09e100a.json index e6083995..f2ceec76 100644 --- a/project/issues/tcts-b82842f2-1508-4d45-98ef-1017d09e100a.json +++ b/project/issues/tcts-b82842f2-1508-4d45-98ef-1017d09e100a.json @@ -85,10 +85,28 @@ "author": "derek.norrbom", "text": "Starting dependency refresh cycle: first step is merging latest develop into fix/snyk-remediation to rebase remediation work on current baseline.", "created_at": "2026-04-29T17:14:51.849649Z" + }, + { + "id": "351ba75d-3496-4c34-8cd9-1ac548304465", + "author": "derek.norrbom", + "text": "Merged latest origin/develop into fix/snyk-remediation and pushed merge commit 590a4b1c. Branch is now rebased to current baseline; ready for litellm/fastmcp remediation changes.", + "created_at": "2026-04-29T17:15:25.069391Z" + }, + { + "id": "538411d0-680c-4ac1-8bba-30a63ccc5bd3", + "author": "derek.norrbom", + "text": "Implementing dependency remediation now: plan is to apply a Python marker for litellm (<3.14), upgrade litellm and fastmcp, regenerate poetry.lock, then validate with lint/tests/Snyk and CI.", + "created_at": "2026-04-29T17:16:27.812627Z" + }, + { + "id": "b17ce4e2-e1f9-4c69-ab94-53b1d192403a", + "author": "derek.norrbom", + "text": "Implemented dependency updates on fix/snyk-remediation: litellm now 1.83.14 with python_version <3.14 marker in root, and tools/mcp-fixtures fastmcp upgraded to 3.2.4 (<3.3.0). Regenerated both lockfiles. Validation: ruff/black passed, behave passed, mcp-fixtures install+import smoke passed. Local test-ci still fails due environment extras not loading under Python 3.14 (missing pydantic-evals/mlflow/scikit-learn), consistent with pre-existing local env behavior. Snyk results: root still shows 2 high issues with no patch path (diskcache via dspy, litellm 1.83.14 advisory); mcp-fixtures scan is clean.", + "created_at": "2026-04-29T17:24:58.822383Z" } ], "created_at": "2026-04-14T17:12:28.832621Z", - "updated_at": "2026-04-29T17:14:51.849649Z", + "updated_at": "2026-04-29T17:24:58.822383Z", "closed_at": null, "custom": { "snyk_category": "dependency", diff --git a/pyproject.toml b/pyproject.toml index 09803a0f..50c9e6cc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,7 +32,7 @@ dependencies = [ "pydantic-ai-slim==1.56.0", "griffe<2", "logfire>=4.20.0", - "litellm==1.83.7", + "litellm==1.83.14; python_version < '3.14'", "aiohttp>=3.13.4", "opentelemetry-api>=1.39.1", "opentelemetry-sdk>=1.39.1", diff --git a/tools/mcp-fixtures/poetry.lock b/tools/mcp-fixtures/poetry.lock index 6140b1b3..80da53f1 100644 --- a/tools/mcp-fixtures/poetry.lock +++ b/tools/mcp-fixtures/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 2.3.3 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.3.2 and should not be changed by hand. [[package]] name = "aiofile" @@ -486,20 +486,21 @@ test = ["pytest (>=6)"] [[package]] name = "fastmcp" -version = "3.1.1" +version = "3.2.4" description = "The fast, Pythonic way to build MCP servers and clients." optional = false python-versions = ">=3.10" groups = ["main"] files = [ - {file = "fastmcp-3.1.1-py3-none-any.whl", hash = "sha256:8132ba069d89f14566b3266919d6d72e2ec23dd45d8944622dca407e9beda7eb"}, - {file = "fastmcp-3.1.1.tar.gz", hash = "sha256:db184b5391a31199323766a3abf3a8bfbb8010479f77eca84c0e554f18655c48"}, + {file = "fastmcp-3.2.4-py3-none-any.whl", hash = "sha256:e6c9c429171041455e47ab94bb3f83c4657622a0ec28922f6940053959bd58a9"}, + {file = "fastmcp-3.2.4.tar.gz", hash = "sha256:083ecb75b44a4169e7fc0f632f94b781bdb0ff877c6b35b9877cbb566fd4d4d1"}, ] [package.dependencies] authlib = ">=1.6.5" cyclopts = ">=4.0.0" exceptiongroup = ">=1.2.2" +griffelib = ">=2.0.0" httpx = ">=0.28.1,<1.0" jsonref = ">=1.1.0" jsonschema-path = ">=0.3.4" @@ -520,13 +521,28 @@ watchfiles = ">=1.0.0" websockets = ">=15.0.1" [package.extras] -anthropic = ["anthropic (>=0.40.0)"] -apps = ["prefab-ui (>=0.6.0)"] -azure = ["azure-identity (>=1.16.0)"] -code-mode = ["pydantic-monty (>=0.0.7,<0.0.8)"] +anthropic = ["anthropic (>=0.48.0)"] +apps = ["prefab-ui (>=0.18.0)"] +azure = ["azure-identity (>=1.16.0)", "pyjwt (>=2.12.0)"] +code-mode = ["pydantic-monty (==0.0.11)"] gemini = ["google-genai (>=1.18.0)"] openai = ["openai (>=1.102.0)"] -tasks = ["pydocket (>=0.18.0)"] +tasks = ["pydocket (>=0.19.0)"] + +[[package]] +name = "griffelib" +version = "2.0.2" +description = "Signatures for entire Python programs. Extract the structure, the frame, the skeleton of your project, to generate API documentation or find breaking changes in your API." +optional = false +python-versions = ">=3.10" +groups = ["main"] +files = [ + {file = "griffelib-2.0.2-py3-none-any.whl", hash = "sha256:925c857658fb1ba40c0772c37acbc2ab650bd794d9c1b9726922e36ea4117ea1"}, + {file = "griffelib-2.0.2.tar.gz", hash = "sha256:3cf20b3bc470e83763ffbf236e0076b1211bac1bc67de13daf494640f2de707e"}, +] + +[package.extras] +pypi = ["pip (>=24.0)", "platformdirs (>=4.2)", "wheel (>=0.42)"] [[package]] name = "h11" @@ -2049,4 +2065,4 @@ type = ["pytest-mypy"] [metadata] lock-version = "2.1" python-versions = ">=3.10,<4.0" -content-hash = "45d928d273824b59ddd52eb9f310c615cc974bd9a3e182761b97e3a4c9f057be" +content-hash = "3f661e097be3fc93f0671d52f8a294d6ab1a7a36466822672a8acce664de953d" diff --git a/tools/mcp-fixtures/pyproject.toml b/tools/mcp-fixtures/pyproject.toml index 05203ed7..a07b79ee 100644 --- a/tools/mcp-fixtures/pyproject.toml +++ b/tools/mcp-fixtures/pyproject.toml @@ -7,7 +7,7 @@ package-mode = false [tool.poetry.dependencies] python = ">=3.10,<4.0" -fastmcp = ">=3.1.0,<3.2.0" +fastmcp = ">=3.2.4,<3.3.0" [tool.poetry.group.dev.dependencies] pytest = ">=8.0" From 1bbc0b05b858387a160bfad9943f95629e265f46 Mon Sep 17 00:00:00 2001 From: dereknorrbom Date: Wed, 29 Apr 2026 10:25:08 -0700 Subject: [PATCH 06/11] chore(kanbus): sync artifacts --- ...8.822Z__ac3c4861-162c-417c-82f3-16a03d610cd1.json | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 project/events/2026-04-29T17:24:58.822Z__ac3c4861-162c-417c-82f3-16a03d610cd1.json diff --git a/project/events/2026-04-29T17:24:58.822Z__ac3c4861-162c-417c-82f3-16a03d610cd1.json b/project/events/2026-04-29T17:24:58.822Z__ac3c4861-162c-417c-82f3-16a03d610cd1.json new file mode 100644 index 00000000..c3b7d8f2 --- /dev/null +++ b/project/events/2026-04-29T17:24:58.822Z__ac3c4861-162c-417c-82f3-16a03d610cd1.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "ac3c4861-162c-417c-82f3-16a03d610cd1", + "issue_id": "tcts-b82842f2-1508-4d45-98ef-1017d09e100a", + "event_type": "comment_added", + "occurred_at": "2026-04-29T17:24:58.822Z", + "actor_id": "derek.norrbom", + "payload": { + "comment_author": "derek.norrbom", + "comment_id": "b17ce4e2-e1f9-4c69-ab94-53b1d192403a" + } +} \ No newline at end of file From ba628431ac23ee3e52f08159094b7078de6bc4e9 Mon Sep 17 00:00:00 2001 From: dereknorrbom Date: Wed, 29 Apr 2026 10:50:47 -0700 Subject: [PATCH 07/11] fix: remediate snyk findings From a7cb15c66198dabde03ed1fccec5f10502aea3e0 Mon Sep 17 00:00:00 2001 From: dereknorrbom Date: Wed, 29 Apr 2026 11:23:20 -0700 Subject: [PATCH 08/11] chore(kanbus): close tcts-b82842 --- ...2.819Z__e596daf4-3c52-4229-8c6b-2de44cc066fc.json | 12 ++++++++++++ ...2.829Z__0ce978dc-28b0-4d41-8624-d34034d5dcc7.json | 12 ++++++++++++ .../tcts-b82842f2-1508-4d45-98ef-1017d09e100a.json | 12 +++++++++--- 3 files changed, 33 insertions(+), 3 deletions(-) create mode 100644 project/events/2026-04-29T18:23:12.819Z__e596daf4-3c52-4229-8c6b-2de44cc066fc.json create mode 100644 project/events/2026-04-29T18:23:12.829Z__0ce978dc-28b0-4d41-8624-d34034d5dcc7.json diff --git a/project/events/2026-04-29T18:23:12.819Z__e596daf4-3c52-4229-8c6b-2de44cc066fc.json b/project/events/2026-04-29T18:23:12.819Z__e596daf4-3c52-4229-8c6b-2de44cc066fc.json new file mode 100644 index 00000000..6a8cbd50 --- /dev/null +++ b/project/events/2026-04-29T18:23:12.819Z__e596daf4-3c52-4229-8c6b-2de44cc066fc.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "e596daf4-3c52-4229-8c6b-2de44cc066fc", + "issue_id": "tcts-b82842f2-1508-4d45-98ef-1017d09e100a", + "event_type": "comment_added", + "occurred_at": "2026-04-29T18:23:12.819Z", + "actor_id": "derek.norrbom", + "payload": { + "comment_author": "derek.norrbom", + "comment_id": "1b80876d-c0d9-4821-9323-ef6d244fb139" + } +} \ No newline at end of file diff --git a/project/events/2026-04-29T18:23:12.829Z__0ce978dc-28b0-4d41-8624-d34034d5dcc7.json b/project/events/2026-04-29T18:23:12.829Z__0ce978dc-28b0-4d41-8624-d34034d5dcc7.json new file mode 100644 index 00000000..5073556d --- /dev/null +++ b/project/events/2026-04-29T18:23:12.829Z__0ce978dc-28b0-4d41-8624-d34034d5dcc7.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "0ce978dc-28b0-4d41-8624-d34034d5dcc7", + "issue_id": "tcts-b82842f2-1508-4d45-98ef-1017d09e100a", + "event_type": "state_transition", + "occurred_at": "2026-04-29T18:23:12.829Z", + "actor_id": "derek.norrbom", + "payload": { + "from_status": "in_progress", + "to_status": "closed" + } +} \ No newline at end of file diff --git a/project/issues/tcts-b82842f2-1508-4d45-98ef-1017d09e100a.json b/project/issues/tcts-b82842f2-1508-4d45-98ef-1017d09e100a.json index f2ceec76..118e4013 100644 --- a/project/issues/tcts-b82842f2-1508-4d45-98ef-1017d09e100a.json +++ b/project/issues/tcts-b82842f2-1508-4d45-98ef-1017d09e100a.json @@ -3,7 +3,7 @@ "title": "pyproject.toml", "description": "Snyk vulnerabilities found in `pyproject.toml`.", "type": "task", - "status": "in_progress", + "status": "closed", "priority": 0, "assignee": null, "creator": null, @@ -103,11 +103,17 @@ "author": "derek.norrbom", "text": "Implemented dependency updates on fix/snyk-remediation: litellm now 1.83.14 with python_version <3.14 marker in root, and tools/mcp-fixtures fastmcp upgraded to 3.2.4 (<3.3.0). Regenerated both lockfiles. Validation: ruff/black passed, behave passed, mcp-fixtures install+import smoke passed. Local test-ci still fails due environment extras not loading under Python 3.14 (missing pydantic-evals/mlflow/scikit-learn), consistent with pre-existing local env behavior. Snyk results: root still shows 2 high issues with no patch path (diskcache via dspy, litellm 1.83.14 advisory); mcp-fixtures scan is clean.", "created_at": "2026-04-29T17:24:58.822383Z" + }, + { + "id": "1b80876d-c0d9-4821-9323-ef6d244fb139", + "author": "derek.norrbom", + "text": "Dependency remediation completed on this branch: litellm upgraded to 1.83.14 with python_version<3.14 marker, fastmcp upgraded to 3.2.4 in isolated mcp-fixtures env, lockfiles regenerated, CI passed on Python 3.10/3.11/3.12. Remaining findings are no-patch upstream advisories (diskcache via dspy and litellm advisory) and are tracked for risk handling.", + "created_at": "2026-04-29T18:23:12.818889Z" } ], "created_at": "2026-04-14T17:12:28.832621Z", - "updated_at": "2026-04-29T17:24:58.822383Z", - "closed_at": null, + "updated_at": "2026-04-29T18:23:12.829429Z", + "closed_at": "2026-04-29T18:23:12.829429Z", "custom": { "snyk_category": "dependency", "snyk_target_file": "pyproject.toml" From ccf8b8128b47c62e5b1e7f5dbfa047d665314a16 Mon Sep 17 00:00:00 2001 From: dereknorrbom Date: Wed, 29 Apr 2026 20:42:57 +0000 Subject: [PATCH 09/11] fix(deps): make biblicus reinforcement-memory core --- poetry.lock | 435 +++++++++++++++--- ..._7d1df441-d3df-4399-bb97-44e11806ba11.json | 18 + ..._56364174-84e1-41f5-89a0-e357eae9750a.json | 18 + ..._ed8edb91-7b86-4766-8dfc-a397acf86e44.json | 12 + ..._ecbb98e4-157e-4a30-953c-e4e02d84af55.json | 12 + ..._2c1d31da-f8d6-44a3-a218-75b35156e6ed.json | 12 + ...-0ca82e56-44be-42c5-b857-6846762eb0fa.json | 18 + ...-3fb6063a-0f3d-4533-a797-e4ce4817da7f.json | 25 + pyproject.toml | 4 +- 9 files changed, 482 insertions(+), 72 deletions(-) create mode 100644 project/events/2026-04-29T20:41:56.514Z__7d1df441-d3df-4399-bb97-44e11806ba11.json create mode 100644 project/events/2026-04-29T20:41:56.598Z__56364174-84e1-41f5-89a0-e357eae9750a.json create mode 100644 project/events/2026-04-29T20:42:02.861Z__ed8edb91-7b86-4766-8dfc-a397acf86e44.json create mode 100644 project/events/2026-04-29T20:42:02.873Z__ecbb98e4-157e-4a30-953c-e4e02d84af55.json create mode 100644 project/events/2026-04-29T20:42:02.883Z__2c1d31da-f8d6-44a3-a218-75b35156e6ed.json create mode 100644 project/issues/tcts-0ca82e56-44be-42c5-b857-6846762eb0fa.json create mode 100644 project/issues/tcts-3fb6063a-0f3d-4533-a797-e4ce4817da7f.json diff --git a/poetry.lock b/poetry.lock index d41ce375..3a54f486 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 2.3.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.3.4 and should not be changed by hand. [[package]] name = "aiohappyeyeballs" @@ -453,6 +453,42 @@ docs = ["furo (>=2024.4.27) ; python_version >= \"3.8\"", "sphinx (>=1.6,<4.4) ; formatters = ["behave-html-formatter (>=0.9.10) ; python_version >= \"3.6\"", "behave-html-pretty-formatter (>=1.9.1) ; python_version >= \"3.6\""] testing = ["PyHamcrest (<2.0) ; python_version < \"3.0\"", "PyHamcrest (>=2.0.2) ; python_version >= \"3.0\"", "assertpy (>=1.1)", "chardet", "freezegun (>=1.5.1) ; python_version > \"3.7\"", "mock (<4.0) ; python_version < \"3.6\"", "mock (>=4.0) ; python_version >= \"3.6\"", "path (>=13.1.0) ; python_version >= \"3.5\"", "path.py (>=11.5.0,<13.0) ; python_version < \"3.5\"", "pytest (<5.0) ; python_version < \"3.0\"", "pytest (>=5.0) ; python_version >= \"3.0\"", "pytest-html (>=1.19.0,<2.0) ; python_version < \"3.0\"", "pytest-html (>=2.0) ; python_version >= \"3.0\""] +[[package]] +name = "bertopic" +version = "0.17.4" +description = "BERTopic performs topic Modeling with state-of-the-art transformer models." +optional = false +python-versions = ">=3.10" +groups = ["main"] +markers = "python_version < \"3.12\"" +files = [ + {file = "bertopic-0.17.4-py3-none-any.whl", hash = "sha256:0dbe7ee22c18fb76efe7f4fbf3a14b51c1e67d9fccc569e3f81e75b8f32646d1"}, + {file = "bertopic-0.17.4.tar.gz", hash = "sha256:f92aa560cdf2bcbf9e22c8ee83dd3bfb225b8dc29381dec7327cc0b21bd852ad"}, +] + +[package.dependencies] +hdbscan = ">=0.8.29" +llvmlite = ">0.36.0" +numpy = ">=1.20.0" +pandas = ">=1.1.5" +plotly = ">=4.7.0" +scikit-learn = ">=1.0" +sentence-transformers = ">=0.4.1" +tqdm = ">=4.41.1" +umap-learn = ">=0.5.0" + +[package.extras] +datamap = ["datamapplot (>=0.1)", "matplotlib (>=3.8)"] +dev = ["bertopic[docs,test]"] +docs = ["mkdocs (==1.5.3)", "mkdocs-material (==9.5.18)", "mkdocstrings (==0.24.3)", "mkdocstrings-python (==1.10.0)"] +fastembed = ["fastembed (>=0.6.0)"] +flair = ["flair (>=0.7)", "torch (>=1.4.0)", "transformers (>=3.5.1)"] +gensim = ["gensim (>=4.0.0)"] +spacy = ["spacy (>=3.0.1)"] +test = ["pytest (>=5.4.3)", "pytest-cov (>=2.6.1)", "ruff (>=0.14.0,<0.15.0)"] +use = ["tensorflow", "tensorflow_hub", "tensorflow_text"] +vision = ["Pillow (>=9.2.0)", "accelerate (>=0.19.0)"] + [[package]] name = "biblicus" version = "1.10.0" @@ -508,6 +544,7 @@ files = [ ] [package.dependencies] +bertopic = {version = ">=0.17.4", optional = true, markers = "extra == \"reinforcement-memory\""} dotyaml = ">=0.1.3" Jinja2 = ">=3.1" numpy = ">=1.24" @@ -515,6 +552,7 @@ pydantic = ">=2.0" pygments = ">=2.20.0" pypdf = ">=6.10.2" PyYAML = ">=6.0" +virtuus = {version = ">=0.5.0", optional = true, markers = "extra == \"reinforcement-memory\""} [package.extras] aldea = ["httpx (>=0.24)"] @@ -1363,10 +1401,10 @@ files = [ name = "cuda-bindings" version = "12.9.4" description = "Python bindings for CUDA" -optional = true +optional = false python-versions = "*" groups = ["main"] -markers = "python_version < \"3.12\" and platform_system == \"Linux\" and platform_machine == \"x86_64\" and extra == \"hf\"" +markers = "python_version < \"3.12\" and platform_system == \"Linux\" and platform_machine == \"x86_64\"" files = [ {file = "cuda_bindings-12.9.4-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a022c96b8bd847e8dc0675523431149a4c3e872f440e3002213dbb9e08f0331a"}, {file = "cuda_bindings-12.9.4-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4d3c842c2a4303b2a580fe955018e31aea30278be19795ae05226235268032e5"}, @@ -1405,10 +1443,10 @@ test = ["cython (>=3.1,<3.2)", "numpy (>=1.21.1)", "pyglet (>=2.1.9)", "pytest ( name = "cuda-pathfinder" version = "1.4.2" description = "Pathfinder for CUDA components" -optional = true +optional = false python-versions = ">=3.10" groups = ["main"] -markers = "python_version < \"3.12\" and platform_system == \"Linux\" and platform_machine == \"x86_64\" and extra == \"hf\"" +markers = "python_version < \"3.12\" and platform_system == \"Linux\" and platform_machine == \"x86_64\"" files = [ {file = "cuda_pathfinder-1.4.2-py3-none-any.whl", hash = "sha256:eb354abc20278f8609dc5b666a24648655bef5613c6dfe78a238a6fd95566754"}, ] @@ -2549,6 +2587,36 @@ files = [ [package.dependencies] numpy = ">=1.21.2" +[[package]] +name = "hdbscan" +version = "0.8.42" +description = "Clustering based on density with variable density clusters" +optional = false +python-versions = "*" +groups = ["main"] +markers = "python_version < \"3.12\"" +files = [ + {file = "hdbscan-0.8.42-cp310-cp310-macosx_15_0_x86_64.whl", hash = "sha256:1459d777d16800361b504656982ae3988fc412b97a8f244ffbd565c72a39ca41"}, + {file = "hdbscan-0.8.42-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2ab4c7fba52f648fe4276d7b60f6831a9009089872a5ca05f91d6ed1bbe52d23"}, + {file = "hdbscan-0.8.42-cp310-cp310-win_amd64.whl", hash = "sha256:2c86d215b5940a5414ceb468af5987941d3526e49d09418296830528161ccdd6"}, + {file = "hdbscan-0.8.42-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:bc428bff42b9ec8ecbaf5d790b6b6de9e2cb120059350d0caecb92311f44b869"}, + {file = "hdbscan-0.8.42-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cd86e30bfe1f1363b9b97a8a84cbeebf761c5ff4262037f9cf0d068b590fe541"}, + {file = "hdbscan-0.8.42-cp311-cp311-win_amd64.whl", hash = "sha256:f265f1ae267713c7a8dfa14ddc530c1ccf87905cf003db65769b9afed519d910"}, + {file = "hdbscan-0.8.42-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:31541afa4ce2d42ad828ffd5da1bf40d8212fa8318cc28e58c65ffe719e9083b"}, + {file = "hdbscan-0.8.42-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f0cc0f279f0f83203277fb5b09422cbfab577fe269e3f71d0082354f65d71cf3"}, + {file = "hdbscan-0.8.42-cp312-cp312-win_amd64.whl", hash = "sha256:fd9f0d5f65a5aa4437b8f69ff8cb4ae6d42723e543254dca49c62f02192c2791"}, + {file = "hdbscan-0.8.42-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:7e0f160ee0d5e61d9a2411c44fa41c12849e814899851cab8e17e924487018e1"}, + {file = "hdbscan-0.8.42-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e14d7309c91e1a59f592936555fe4282e66061719225d9cb2d7bf18040bb8b54"}, + {file = "hdbscan-0.8.42-cp313-cp313-win_amd64.whl", hash = "sha256:990b9f9ce14f290eb8bd9343048cb50b890560de99ced4fb31c486cb0c9f0f74"}, + {file = "hdbscan-0.8.42.tar.gz", hash = "sha256:3bd749a3df39c7e965bd8b2173c3804cdb11ad73d524a5df1201360814293614"}, +] + +[package.dependencies] +joblib = ">=1.0" +numpy = ">=1.20,<3" +scikit-learn = ">=1.6" +scipy = ">=1.0" + [[package]] name = "hf-xet" version = "1.4.2" @@ -2962,10 +3030,10 @@ files = [ name = "joblib" version = "1.5.3" description = "Lightweight pipelining with Python functions" -optional = true +optional = false python-versions = ">=3.9" groups = ["main"] -markers = "extra == \"dev\" or extra == \"ml\"" +markers = "python_version < \"3.12\" or extra == \"dev\" or extra == \"ml\"" files = [ {file = "joblib-1.5.3-py3-none-any.whl", hash = "sha256:5fc3c5039fc5ca8c0276333a188bbd59d6b7ab37fe6632daa76bc7f9ec18e713"}, {file = "joblib-1.5.3.tar.gz", hash = "sha256:8561a3269e6801106863fd0d6d84bb737be9e7631e33aaed3fb9ce5953688da3"}, @@ -3221,6 +3289,42 @@ proxy-runtime = ["anthropic[vertex] (==0.84.0)", "azure-ai-contentsafety (==1.0. semantic-router = ["aurelio-sdk (==0.0.19) ; python_full_version < \"3.14.0\"", "semantic-router (==0.1.12) ; python_full_version < \"3.14.0\""] utils = ["numpydoc (==1.8.0)"] +[[package]] +name = "llvmlite" +version = "0.47.0" +description = "lightweight wrapper around basic LLVM functionality" +optional = false +python-versions = ">=3.10" +groups = ["main"] +markers = "python_version < \"3.12\"" +files = [ + {file = "llvmlite-0.47.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:41270b0b1310717f717cf6f2a9c68d3c43bd7905c33f003825aebc361d0d1b17"}, + {file = "llvmlite-0.47.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f9d118bc1dd7623e0e65ca9ac485ec6dd543c3b77bc9928ddc45ebd34e1e30a7"}, + {file = "llvmlite-0.47.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9ea5cfb04a6ab5b18e46be72b41b015975ba5980c4ddb41f1975b83e19031063"}, + {file = "llvmlite-0.47.0-cp310-cp310-win_amd64.whl", hash = "sha256:166b896a2262a2039d5fc52df5ee1659bd1ccd081183df7a2fba1b74702dd5ea"}, + {file = "llvmlite-0.47.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:74090f0dcfd6f24ebbef3f21f11e38111c4d7e6919b54c4416e1e357c3446b07"}, + {file = "llvmlite-0.47.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ca14f02e29134e837982497959a8e2193d6035235de1cb41a9cb2bd6da4eedbb"}, + {file = "llvmlite-0.47.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:12a69d4bb05f402f30477e21eeabe81911e7c251cecb192bed82cd83c9db10d8"}, + {file = "llvmlite-0.47.0-cp311-cp311-win_amd64.whl", hash = "sha256:c37d6eb7aaabfa83ab9c2ff5b5cdb95a5e6830403937b2c588b7490724e05327"}, + {file = "llvmlite-0.47.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:306a265f408c259067257a732c8e159284334018b4083a9e35f67d19792b164f"}, + {file = "llvmlite-0.47.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5853bf26160857c0c2573415ff4efe01c4c651e59e2c55c2a088740acfee51cd"}, + {file = "llvmlite-0.47.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:003bcf7fa579e14db59c1a1e113f93ab8a06b56a4be31c7f08264d1d4072d077"}, + {file = "llvmlite-0.47.0-cp312-cp312-win_amd64.whl", hash = "sha256:f3079f25bdc24cd9d27c4b2b5e68f5f60c4fdb7e8ad5ee2b9b006007558f9df7"}, + {file = "llvmlite-0.47.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:a3c6a735d4e1041808434f9d440faa3d78d9b4af2ee64d05a66f351883b6ceec"}, + {file = "llvmlite-0.47.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2699a74321189e812d476a43d6d7f652f51811e7b5aad9d9bba842a1c7927acb"}, + {file = "llvmlite-0.47.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6c6951e2b29930227963e53ee152441f0e14be92e9d4231852102d986c761e40"}, + {file = "llvmlite-0.47.0-cp313-cp313-win_amd64.whl", hash = "sha256:c2e9adf8698d813a9a5efb2d4370caf344dbc1e145019851fee6a6f319ba760e"}, + {file = "llvmlite-0.47.0-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:de966c626c35c9dff5ae7bf12db25637738d0df83fc370cf793bc94d43d92d14"}, + {file = "llvmlite-0.47.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ddbccff2aeaff8670368340a158abefc032fe9b3ccf7d9c496639263d00151aa"}, + {file = "llvmlite-0.47.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d4a7b778a2e144fc64468fb9bf509ac1226c9813a00b4d7afea5d988c4e22fca"}, + {file = "llvmlite-0.47.0-cp314-cp314-win_amd64.whl", hash = "sha256:694e3c2cdc472ed2bd8bd4555ca002eec4310961dd58ef791d508f57b5cc4c94"}, + {file = "llvmlite-0.47.0-cp314-cp314t-macosx_12_0_arm64.whl", hash = "sha256:92ec8a169a20b473c1c54d4695e371bde36489fc1efa3688e11e99beba0abf9c"}, + {file = "llvmlite-0.47.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fa1cbd800edd3b20bc141521f7fd45a6185a5b84109aa6855134e81397ffe72b"}, + {file = "llvmlite-0.47.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f6725179b89f03b17dabe236ff3422cb8291b4c1bf40af152826dfd34e350ae8"}, + {file = "llvmlite-0.47.0-cp314-cp314t-win_amd64.whl", hash = "sha256:6842cf6f707ec4be3d985a385ad03f72b2d724439e118fcbe99b2929964f0453"}, + {file = "llvmlite-0.47.0.tar.gz", hash = "sha256:62031ce968ec74e95092184d4b0e857e444f8fdff0b8f9213707699570c33ccc"}, +] + [[package]] name = "logfire" version = "4.29.0" @@ -3781,10 +3885,10 @@ xray = ["aws-xray-sdk (>=0.93,!=0.96)", "setuptools"] name = "mpmath" version = "1.3.0" description = "Python library for arbitrary-precision floating-point arithmetic" -optional = true +optional = false python-versions = "*" groups = ["main"] -markers = "extra == \"hf\"" +markers = "python_version < \"3.12\" or extra == \"hf\"" files = [ {file = "mpmath-1.3.0-py3-none-any.whl", hash = "sha256:a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c"}, {file = "mpmath-1.3.0.tar.gz", hash = "sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f"}, @@ -4013,6 +4117,33 @@ files = [ {file = "nanoid-2.0.0.tar.gz", hash = "sha256:5a80cad5e9c6e9ae3a41fa2fb34ae189f7cb420b2a5d8f82bd9d23466e4efa68"}, ] +[[package]] +name = "narwhals" +version = "2.20.0" +description = "Extremely lightweight compatibility layer between dataframe libraries" +optional = false +python-versions = ">=3.9" +groups = ["main"] +markers = "python_version < \"3.12\"" +files = [ + {file = "narwhals-2.20.0-py3-none-any.whl", hash = "sha256:16e750ea5507d4ba6e8d03455b5f93a535e0405976561baea235bca5dc9f475d"}, + {file = "narwhals-2.20.0.tar.gz", hash = "sha256:c10994975fa7dc5a68c2cffcddbd5908fc8ebb2d463c5bab085309c0ee1f551e"}, +] + +[package.extras] +cudf = ["cudf-cu12 (>=24.10.0)"] +dask = ["dask[dataframe] (>=2024.8)"] +duckdb = ["duckdb (>=1.1)"] +ibis = ["ibis-framework (>=6.0.0)", "packaging", "pyarrow-hotfix", "rich"] +modin = ["modin"] +pandas = ["pandas (>=1.1.3)"] +polars = ["polars (>=0.20.4)"] +pyarrow = ["pyarrow (>=13.0.0)"] +pyspark = ["pyspark (>=3.5.0)"] +pyspark-connect = ["pyspark[connect] (>=3.5.0)"] +sql = ["duckdb (>=1.1)", "sqlparse"] +sqlframe = ["sqlframe (>=3.22.0,!=3.39.3)"] + [[package]] name = "nest-asyncio" version = "1.6.0" @@ -4029,10 +4160,10 @@ files = [ name = "networkx" version = "3.4.2" description = "Python package for creating and manipulating graphs and networks" -optional = true +optional = false python-versions = ">=3.10" groups = ["main"] -markers = "python_version == \"3.10\" and extra == \"hf\"" +markers = "python_version == \"3.10\"" files = [ {file = "networkx-3.4.2-py3-none-any.whl", hash = "sha256:df5d4365b724cf81b8c6a7312509d0c22386097011ad1abe274afd5e9d3bbc5f"}, {file = "networkx-3.4.2.tar.gz", hash = "sha256:307c3669428c5362aab27c8a1260aa8f47c4e91d3891f48be0141738d8d053e1"}, @@ -4074,10 +4205,10 @@ test-extras = ["pytest-mpl", "pytest-randomly"] name = "networkx" version = "3.6.1" description = "Python package for creating and manipulating graphs and networks" -optional = true +optional = false python-versions = "!=3.14.1,>=3.11" groups = ["main"] -markers = "python_version == \"3.11\" and extra == \"hf\"" +markers = "python_version == \"3.11\"" files = [ {file = "networkx-3.6.1-py3-none-any.whl", hash = "sha256:d47fbf302e7d9cbbb9e2555a0d267983d2aa476bac30e90dfbe5669bd57f3762"}, {file = "networkx-3.6.1.tar.gz", hash = "sha256:26b7c357accc0c8cde558ad486283728b65b6a95d85ee1cd66bafab4c8168509"}, @@ -4094,6 +4225,46 @@ release = ["build (>=0.10)", "changelist (==0.5)", "twine (>=4.0)", "wheel (>=0. test = ["pytest (>=7.2)", "pytest-cov (>=4.0)", "pytest-xdist (>=3.0)"] test-extras = ["pytest-mpl", "pytest-randomly"] +[[package]] +name = "numba" +version = "0.65.1" +description = "compiling Python code using LLVM" +optional = false +python-versions = ">=3.10" +groups = ["main"] +markers = "python_version < \"3.12\"" +files = [ + {file = "numba-0.65.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:9d993ed0a257aa4116e6f553f114004bcfdee540c7276ab8ea48f650d514c452"}, + {file = "numba-0.65.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5f098109f361681e57295f7e84d8ab2426902539a141811de0703ace52826981"}, + {file = "numba-0.65.1-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:973fd8173f2312815e6b7aaae887c4ce8a817eeff46a4f8840b828305b75bc95"}, + {file = "numba-0.65.1-cp310-cp310-win_amd64.whl", hash = "sha256:c63aa0c4193694026452da55d0ef9d85156c1a7a333454c103bb30dec81b7bf8"}, + {file = "numba-0.65.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:7020d74b19cdb8cff16506542fdd510756e28c5e7f3bd0b7f574f0f42272fcd9"}, + {file = "numba-0.65.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f80ed83774b5173abd6581cd8d2165d1d38e13d2e5c8155c0c0b421784745420"}, + {file = "numba-0.65.1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7ed425a43b0a5f9772f2f4e2dd0bbd12eabecae1af0b24efcfd4e053f012aac6"}, + {file = "numba-0.65.1-cp311-cp311-win_amd64.whl", hash = "sha256:df40a5028a975b9ea66f6a2a3f7abbdbd541a863070e34ed367aff21141248e4"}, + {file = "numba-0.65.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:ac3f1e77c352dd0ea9712732c2d8f9ca507717435eec5b5013bf138ac33c4a08"}, + {file = "numba-0.65.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:52bc6f3ceb8fcaff9b2ae26b4c6b1e9fee39db8d355534c0fe4f39a901246b84"}, + {file = "numba-0.65.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:90ca10b3463bae0bd70589726fe3c77d01d6b5fc86bee54bcdf9fb6b47c28977"}, + {file = "numba-0.65.1-cp312-cp312-win_amd64.whl", hash = "sha256:5971c632be2a2351500431f46213821dba8d02b18a9f7d02fd36bd2743e41a6a"}, + {file = "numba-0.65.1-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:1735c15c1134a5108b4d6a5c77fc0947924ea066a738dc09a52008c13df9cad3"}, + {file = "numba-0.65.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c09f49117ef255e1f1c6dad0c7a1ed39868243862a73be5706793241a3755f1b"}, + {file = "numba-0.65.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:594a8680b3fadac99e97e489b1fd89007177e5336713745c3b769528c635a464"}, + {file = "numba-0.65.1-cp313-cp313-win_amd64.whl", hash = "sha256:85be74c0d036842699a30058f82fb88fc5ffdc59f7615cab5792ea92914c9b62"}, + {file = "numba-0.65.1-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:33f5eb68eb1c843511615d14663ce60258525d6a4c65ab040e2c2b0c4cf17450"}, + {file = "numba-0.65.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:71e73029bf53a62cc6afcf96be4bd942290d8b4c55f0a454fb536158115790f7"}, + {file = "numba-0.65.1-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3a07635e0be926b9bdbffb09137c230fb13f6ec0e564914ba937cee12ce3eb35"}, + {file = "numba-0.65.1-cp314-cp314-win_amd64.whl", hash = "sha256:2a20fcdabdefbdacf88d85caf70c3b18c4bcb7ebb8f82e6a19486383dd26ab63"}, + {file = "numba-0.65.1-cp314-cp314t-macosx_12_0_arm64.whl", hash = "sha256:548dd4b3a4508d5062768d1514b2cd7b015f9a25ec7af651c50dee243965e652"}, + {file = "numba-0.65.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:78abc28feff2c2ff8307fff3975b6438352759c9acb797ecd6b1fb6e7e39e31d"}, + {file = "numba-0.65.1-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee7676cb389555805f9b9a1840cbcd1ea6c8bd5376ab6918e3a29c5ea1dbda20"}, + {file = "numba-0.65.1-cp314-cp314t-win_amd64.whl", hash = "sha256:20609346e3bd75204950dcbbfe383a8d7dbf4902f442aedbf00f97fef4aa8f38"}, + {file = "numba-0.65.1.tar.gz", hash = "sha256:19357146c32fe9ed25059ab915e8465fb13951cf6b0aace3826b76886373ab23"}, +] + +[package.dependencies] +llvmlite = "==0.47.*" +numpy = ">=1.22,<2.5" + [[package]] name = "numpy" version = "2.2.6" @@ -4261,10 +4432,10 @@ files = [ name = "nvidia-cublas-cu12" version = "12.8.4.1" description = "CUBLAS native runtime libraries" -optional = true +optional = false python-versions = ">=3" groups = ["main"] -markers = "python_version < \"3.12\" and platform_system == \"Linux\" and platform_machine == \"x86_64\" and extra == \"hf\"" +markers = "python_version < \"3.12\" and platform_system == \"Linux\" and platform_machine == \"x86_64\"" files = [ {file = "nvidia_cublas_cu12-12.8.4.1-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:b86f6dd8935884615a0683b663891d43781b819ac4f2ba2b0c9604676af346d0"}, {file = "nvidia_cublas_cu12-12.8.4.1-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:8ac4e771d5a348c551b2a426eda6193c19aa630236b418086020df5ba9667142"}, @@ -4291,10 +4462,10 @@ files = [ name = "nvidia-cuda-cupti-cu12" version = "12.8.90" description = "CUDA profiling tools runtime libs." -optional = true +optional = false python-versions = ">=3" groups = ["main"] -markers = "python_version < \"3.12\" and platform_system == \"Linux\" and platform_machine == \"x86_64\" and extra == \"hf\"" +markers = "python_version < \"3.12\" and platform_system == \"Linux\" and platform_machine == \"x86_64\"" files = [ {file = "nvidia_cuda_cupti_cu12-12.8.90-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:4412396548808ddfed3f17a467b104ba7751e6b58678a4b840675c56d21cf7ed"}, {file = "nvidia_cuda_cupti_cu12-12.8.90-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ea0cb07ebda26bb9b29ba82cda34849e73c166c18162d3913575b0c9db9a6182"}, @@ -4319,10 +4490,10 @@ files = [ name = "nvidia-cuda-nvrtc-cu12" version = "12.8.93" description = "NVRTC native runtime libraries" -optional = true +optional = false python-versions = ">=3" groups = ["main"] -markers = "python_version < \"3.12\" and platform_system == \"Linux\" and platform_machine == \"x86_64\" and extra == \"hf\"" +markers = "python_version < \"3.12\" and platform_system == \"Linux\" and platform_machine == \"x86_64\"" files = [ {file = "nvidia_cuda_nvrtc_cu12-12.8.93-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:a7756528852ef889772a84c6cd89d41dfa74667e24cca16bb31f8f061e3e9994"}, {file = "nvidia_cuda_nvrtc_cu12-12.8.93-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fc1fec1e1637854b4c0a65fb9a8346b51dd9ee69e61ebaccc82058441f15bce8"}, @@ -4349,10 +4520,10 @@ files = [ name = "nvidia-cuda-runtime-cu12" version = "12.8.90" description = "CUDA Runtime native Libraries" -optional = true +optional = false python-versions = ">=3" groups = ["main"] -markers = "python_version < \"3.12\" and platform_system == \"Linux\" and platform_machine == \"x86_64\" and extra == \"hf\"" +markers = "python_version < \"3.12\" and platform_system == \"Linux\" and platform_machine == \"x86_64\"" files = [ {file = "nvidia_cuda_runtime_cu12-12.8.90-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:52bf7bbee900262ffefe5e9d5a2a69a30d97e2bc5bb6cc866688caa976966e3d"}, {file = "nvidia_cuda_runtime_cu12-12.8.90-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:adade8dcbd0edf427b7204d480d6066d33902cab2a4707dcfc48a2d0fd44ab90"}, @@ -4380,10 +4551,10 @@ nvidia-cublas-cu12 = "*" name = "nvidia-cudnn-cu12" version = "9.10.2.21" description = "cuDNN runtime libraries" -optional = true +optional = false python-versions = ">=3" groups = ["main"] -markers = "python_version < \"3.12\" and platform_system == \"Linux\" and platform_machine == \"x86_64\" and extra == \"hf\"" +markers = "python_version < \"3.12\" and platform_system == \"Linux\" and platform_machine == \"x86_64\"" files = [ {file = "nvidia_cudnn_cu12-9.10.2.21-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:c9132cc3f8958447b4910a1720036d9eff5928cc3179b0a51fb6d167c6cc87d8"}, {file = "nvidia_cudnn_cu12-9.10.2.21-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:949452be657fa16687d0930933f032835951ef0892b37d2d53824d1a84dc97a8"}, @@ -4416,10 +4587,10 @@ nvidia-nvjitlink-cu12 = "*" name = "nvidia-cufft-cu12" version = "11.3.3.83" description = "CUFFT native runtime libraries" -optional = true +optional = false python-versions = ">=3" groups = ["main"] -markers = "python_version < \"3.12\" and platform_system == \"Linux\" and platform_machine == \"x86_64\" and extra == \"hf\"" +markers = "python_version < \"3.12\" and platform_system == \"Linux\" and platform_machine == \"x86_64\"" files = [ {file = "nvidia_cufft_cu12-11.3.3.83-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:848ef7224d6305cdb2a4df928759dca7b1201874787083b6e7550dd6765ce69a"}, {file = "nvidia_cufft_cu12-11.3.3.83-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4d2dd21ec0b88cf61b62e6b43564355e5222e4a3fb394cac0db101f2dd0d4f74"}, @@ -4446,10 +4617,10 @@ files = [ name = "nvidia-cufile-cu12" version = "1.13.1.3" description = "cuFile GPUDirect libraries" -optional = true +optional = false python-versions = ">=3" groups = ["main"] -markers = "python_version < \"3.12\" and platform_system == \"Linux\" and platform_machine == \"x86_64\" and extra == \"hf\"" +markers = "python_version < \"3.12\" and platform_system == \"Linux\" and platform_machine == \"x86_64\"" files = [ {file = "nvidia_cufile_cu12-1.13.1.3-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1d069003be650e131b21c932ec3d8969c1715379251f8d23a1860554b1cb24fc"}, {file = "nvidia_cufile_cu12-1.13.1.3-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:4beb6d4cce47c1a0f1013d72e02b0994730359e17801d395bdcbf20cfb3bb00a"}, @@ -4475,10 +4646,10 @@ files = [ name = "nvidia-curand-cu12" version = "10.3.9.90" description = "CURAND native runtime libraries" -optional = true +optional = false python-versions = ">=3" groups = ["main"] -markers = "python_version < \"3.12\" and platform_system == \"Linux\" and platform_machine == \"x86_64\" and extra == \"hf\"" +markers = "python_version < \"3.12\" and platform_system == \"Linux\" and platform_machine == \"x86_64\"" files = [ {file = "nvidia_curand_cu12-10.3.9.90-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:dfab99248034673b779bc6decafdc3404a8a6f502462201f2f31f11354204acd"}, {file = "nvidia_curand_cu12-10.3.9.90-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:b32331d4f4df5d6eefa0554c565b626c7216f87a06a4f56fab27c3b68a830ec9"}, @@ -4510,10 +4681,10 @@ nvidia-nvjitlink-cu12 = "*" name = "nvidia-cusolver-cu12" version = "11.7.3.90" description = "CUDA solver native runtime libraries" -optional = true +optional = false python-versions = ">=3" groups = ["main"] -markers = "python_version < \"3.12\" and platform_system == \"Linux\" and platform_machine == \"x86_64\" and extra == \"hf\"" +markers = "python_version < \"3.12\" and platform_system == \"Linux\" and platform_machine == \"x86_64\"" files = [ {file = "nvidia_cusolver_cu12-11.7.3.90-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:db9ed69dbef9715071232caa9b69c52ac7de3a95773c2db65bdba85916e4e5c0"}, {file = "nvidia_cusolver_cu12-11.7.3.90-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:4376c11ad263152bd50ea295c05370360776f8c3427b30991df774f9fb26c450"}, @@ -4548,10 +4719,10 @@ nvidia-nvjitlink-cu12 = "*" name = "nvidia-cusparse-cu12" version = "12.5.8.93" description = "CUSPARSE native runtime libraries" -optional = true +optional = false python-versions = ">=3" groups = ["main"] -markers = "python_version < \"3.12\" and platform_system == \"Linux\" and platform_machine == \"x86_64\" and extra == \"hf\"" +markers = "python_version < \"3.12\" and platform_system == \"Linux\" and platform_machine == \"x86_64\"" files = [ {file = "nvidia_cusparse_cu12-12.5.8.93-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:9b6c161cb130be1a07a27ea6923df8141f3c295852f4b260c65f18f3e0a091dc"}, {file = "nvidia_cusparse_cu12-12.5.8.93-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1ec05d76bbbd8b61b06a80e1eaf8cf4959c3d4ce8e711b65ebd0443bb0ebb13b"}, @@ -4579,10 +4750,10 @@ files = [ name = "nvidia-cusparselt-cu12" version = "0.7.1" description = "NVIDIA cuSPARSELt" -optional = true +optional = false python-versions = "*" groups = ["main"] -markers = "python_version < \"3.12\" and platform_system == \"Linux\" and platform_machine == \"x86_64\" and extra == \"hf\"" +markers = "python_version < \"3.12\" and platform_system == \"Linux\" and platform_machine == \"x86_64\"" files = [ {file = "nvidia_cusparselt_cu12-0.7.1-py3-none-manylinux2014_aarch64.whl", hash = "sha256:8878dce784d0fac90131b6817b607e803c36e629ba34dc5b433471382196b6a5"}, {file = "nvidia_cusparselt_cu12-0.7.1-py3-none-manylinux2014_x86_64.whl", hash = "sha256:f1bb701d6b930d5a7cea44c19ceb973311500847f81b634d802b7b539dc55623"}, @@ -4606,10 +4777,10 @@ files = [ name = "nvidia-nccl-cu12" version = "2.27.5" description = "NVIDIA Collective Communication Library (NCCL) Runtime" -optional = true +optional = false python-versions = ">=3" groups = ["main"] -markers = "python_version < \"3.12\" and platform_system == \"Linux\" and platform_machine == \"x86_64\" and extra == \"hf\"" +markers = "python_version < \"3.12\" and platform_system == \"Linux\" and platform_machine == \"x86_64\"" files = [ {file = "nvidia_nccl_cu12-2.27.5-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:31432ad4d1fb1004eb0c56203dc9bc2178a1ba69d1d9e02d64a6938ab5e40e7a"}, {file = "nvidia_nccl_cu12-2.27.5-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ad730cf15cb5d25fe849c6e6ca9eb5b76db16a80f13f425ac68d8e2e55624457"}, @@ -4633,10 +4804,10 @@ files = [ name = "nvidia-nvjitlink-cu12" version = "12.8.93" description = "Nvidia JIT LTO Library" -optional = true +optional = false python-versions = ">=3" groups = ["main"] -markers = "python_version < \"3.12\" and platform_system == \"Linux\" and platform_machine == \"x86_64\" and extra == \"hf\"" +markers = "python_version < \"3.12\" and platform_system == \"Linux\" and platform_machine == \"x86_64\"" files = [ {file = "nvidia_nvjitlink_cu12-12.8.93-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:81ff63371a7ebd6e6451970684f916be2eab07321b73c9d244dc2b4da7f73b88"}, {file = "nvidia_nvjitlink_cu12-12.8.93-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:adccd7161ace7261e01bb91e44e88da350895c270d23f744f0820c818b7229e7"}, @@ -4647,10 +4818,10 @@ files = [ name = "nvidia-nvshmem-cu12" version = "3.4.5" description = "NVSHMEM creates a global address space that provides efficient and scalable communication for NVIDIA GPU clusters." -optional = true +optional = false python-versions = ">=3" groups = ["main"] -markers = "python_version < \"3.12\" and platform_system == \"Linux\" and platform_machine == \"x86_64\" and extra == \"hf\"" +markers = "python_version < \"3.12\" and platform_system == \"Linux\" and platform_machine == \"x86_64\"" files = [ {file = "nvidia_nvshmem_cu12-3.4.5-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0b48363fc6964dede448029434c6abed6c5e37f823cb43c3bcde7ecfc0457e15"}, {file = "nvidia_nvshmem_cu12-3.4.5-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:042f2500f24c021db8a06c5eec2539027d57460e1c1a762055a6554f72c369bd"}, @@ -4676,10 +4847,10 @@ files = [ name = "nvidia-nvtx-cu12" version = "12.8.90" description = "NVIDIA Tools Extension" -optional = true +optional = false python-versions = ">=3" groups = ["main"] -markers = "python_version < \"3.12\" and platform_system == \"Linux\" and platform_machine == \"x86_64\" and extra == \"hf\"" +markers = "python_version < \"3.12\" and platform_system == \"Linux\" and platform_machine == \"x86_64\"" files = [ {file = "nvidia_nvtx_cu12-12.8.90-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d7ad891da111ebafbf7e015d34879f7112832fc239ff0d7d776b6cb685274615"}, {file = "nvidia_nvtx_cu12-12.8.90-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5b17e2001cc0d751a5bc2c6ec6d26ad95913324a4adb86788c944f8ce9ba441f"}, @@ -4996,10 +5167,10 @@ proxy = ["pysocks"] name = "pandas" version = "2.3.3" description = "Powerful data structures for data analysis, time series, and statistics" -optional = true +optional = false python-versions = ">=3.9" groups = ["main"] -markers = "extra == \"dev\" or extra == \"ml\" or extra == \"hf\"" +markers = "python_version < \"3.12\" or extra == \"dev\" or extra == \"ml\" or extra == \"hf\"" files = [ {file = "pandas-2.3.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:376c6446ae31770764215a6c937f72d917f214b43560603cd60da6408f183b6c"}, {file = "pandas-2.3.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e19d192383eab2f4ceb30b412b22ea30690c9e618f78870357ae1d682912015a"}, @@ -5268,6 +5439,31 @@ files = [ {file = "platformdirs-4.9.4.tar.gz", hash = "sha256:1ec356301b7dc906d83f371c8f487070e99d3ccf9e501686456394622a01a934"}, ] +[[package]] +name = "plotly" +version = "6.7.0" +description = "An open-source interactive data visualization library for Python" +optional = false +python-versions = ">=3.8" +groups = ["main"] +markers = "python_version < \"3.12\"" +files = [ + {file = "plotly-6.7.0-py3-none-any.whl", hash = "sha256:ac8aca1c25c663a59b5b9140a549264a5badde2e057d79b8c772ae2920e32ff0"}, + {file = "plotly-6.7.0.tar.gz", hash = "sha256:45eea0ff27e2a23ccd62776f77eb43aa1ca03df4192b76036e380bb479b892c6"}, +] + +[package.dependencies] +narwhals = ">=1.15.1" +packaging = "*" + +[package.extras] +dev = ["anywidget", "build", "colorcet", "fiona (<=1.9.6) ; python_version <= \"3.8\"", "geopandas", "inflect", "jupyterlab", "kaleido (>=1.1.0)", "numpy (>=1.22)", "orjson", "pandas", "pdfrw", "pillow", "plotly-geo", "polars[timezone]", "pyarrow", "pyshp", "pytest", "pytz", "requests", "ruff (==0.11.12)", "scikit-image", "scipy", "shapely", "statsmodels", "vaex ; python_version <= \"3.9\"", "xarray"] +dev-build = ["build", "jupyterlab", "pytest", "requests", "ruff (==0.11.12)"] +dev-core = ["pytest", "requests", "ruff (==0.11.12)"] +dev-optional = ["anywidget", "build", "colorcet", "fiona (<=1.9.6) ; python_version <= \"3.8\"", "geopandas", "inflect", "jupyterlab", "kaleido (>=1.1.0)", "numpy (>=1.22)", "orjson", "pandas", "pdfrw", "pillow", "plotly-geo", "polars[timezone]", "pyarrow", "pyshp", "pytest", "pytz", "requests", "ruff (==0.11.12)", "scikit-image", "scipy", "shapely", "statsmodels", "vaex ; python_version <= \"3.9\"", "xarray"] +express = ["numpy (>=1.22)"] +kaleido = ["kaleido (>=1.1.0)"] + [[package]] name = "pluggy" version = "1.6.0" @@ -5854,6 +6050,29 @@ files = [ [package.extras] windows-terminal = ["colorama (>=0.4.6)"] +[[package]] +name = "pynndescent" +version = "0.6.0" +description = "Nearest Neighbor Descent" +optional = false +python-versions = "*" +groups = ["main"] +markers = "python_version < \"3.12\"" +files = [ + {file = "pynndescent-0.6.0-py3-none-any.whl", hash = "sha256:dc8c74844e4c7f5cbd1e0cd6909da86fdc789e6ff4997336e344779c3d5538ef"}, + {file = "pynndescent-0.6.0.tar.gz", hash = "sha256:7ffde0fb5b400741e055a9f7d377e3702e02250616834231f6c209e39aac24f5"}, +] + +[package.dependencies] +joblib = ">=0.11" +llvmlite = ">=0.38" +numba = ">=0.55.0" +scikit-learn = ">=0.18" +scipy = ">=1.0" + +[package.extras] +testing = ["pytest"] + [[package]] name = "pyparsing" version = "3.3.2" @@ -6109,10 +6328,10 @@ dev = ["black", "build", "mypy", "pytest", "pytest-cov", "setuptools", "tox", "t name = "pytz" version = "2026.1.post1" description = "World timezone definitions, modern and historical" -optional = true +optional = false python-versions = "*" groups = ["main"] -markers = "extra == \"dev\" or extra == \"ml\" or extra == \"hf\"" +markers = "python_version < \"3.12\" or extra == \"dev\" or extra == \"ml\" or extra == \"hf\"" files = [ {file = "pytz-2026.1.post1-py2.py3-none-any.whl", hash = "sha256:f2fd16142fda348286a75e1a524be810bb05d444e5a081f37f7affc635035f7a"}, {file = "pytz-2026.1.post1.tar.gz", hash = "sha256:3378dde6a0c3d26719182142c56e60c7f9af7e968076f31aae569d72a0358ee1"}, @@ -6739,10 +6958,10 @@ crt = ["botocore[crt] (>=1.37.4,<2.0a0)"] name = "safetensors" version = "0.7.0" description = "" -optional = true +optional = false python-versions = ">=3.9" groups = ["main"] -markers = "extra == \"hf\"" +markers = "python_version < \"3.12\" or extra == \"hf\"" files = [ {file = "safetensors-0.7.0-cp38-abi3-macosx_10_12_x86_64.whl", hash = "sha256:c82f4d474cf725255d9e6acf17252991c3c8aac038d6ef363a4bf8be2f6db517"}, {file = "safetensors-0.7.0-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:94fd4858284736bb67a897a41608b5b0c2496c9bdb3bf2af1fa3409127f20d57"}, @@ -6787,10 +7006,10 @@ torch = ["packaging", "safetensors[numpy]", "torch (>=1.10)"] name = "scikit-learn" version = "1.7.2" description = "A set of python modules for machine learning and data mining" -optional = true +optional = false python-versions = ">=3.10" groups = ["main"] -markers = "python_version == \"3.10\" and (extra == \"dev\" or extra == \"ml\")" +markers = "python_version == \"3.10\"" files = [ {file = "scikit_learn-1.7.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b33579c10a3081d076ab403df4a4190da4f4432d443521674637677dc91e61f"}, {file = "scikit_learn-1.7.2-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:36749fb62b3d961b1ce4fedf08fa57a1986cd409eff2d783bca5d4b9b5fce51c"}, @@ -6844,10 +7063,10 @@ tests = ["matplotlib (>=3.5.0)", "mypy (>=1.15)", "numpydoc (>=1.2.0)", "pandas name = "scikit-learn" version = "1.8.0" description = "A set of python modules for machine learning and data mining" -optional = true +optional = false python-versions = ">=3.11" groups = ["main"] -markers = "python_version >= \"3.11\" and (extra == \"dev\" or extra == \"ml\")" +markers = "python_version >= \"3.11\" and (extra == \"dev\" or extra == \"ml\") or python_version == \"3.11\"" files = [ {file = "scikit_learn-1.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:146b4d36f800c013d267b29168813f7a03a43ecd2895d04861f1240b564421da"}, {file = "scikit_learn-1.8.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:f984ca4b14914e6b4094c5d52a32ea16b49832c03bd17a110f004db3c223e8e1"}, @@ -6907,10 +7126,10 @@ tests = ["matplotlib (>=3.6.1)", "mypy (>=1.15)", "numpydoc (>=1.2.0)", "pandas name = "scipy" version = "1.15.3" description = "Fundamental algorithms for scientific computing in Python" -optional = true +optional = false python-versions = ">=3.10" groups = ["main"] -markers = "python_version == \"3.10\" and (extra == \"dev\" or extra == \"ml\")" +markers = "python_version == \"3.10\"" files = [ {file = "scipy-1.15.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:a345928c86d535060c9c2b25e71e87c39ab2f22fc96e9636bd74d1dbf9de448c"}, {file = "scipy-1.15.3-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:ad3432cb0f9ed87477a8d97f03b763fd1d57709f1bbde3c9369b1dff5503b253"}, @@ -6972,10 +7191,10 @@ test = ["Cython", "array-api-strict (>=2.0,<2.1.1)", "asv", "gmpy2", "hypothesis name = "scipy" version = "1.17.1" description = "Fundamental algorithms for scientific computing in Python" -optional = true +optional = false python-versions = ">=3.11" groups = ["main"] -markers = "python_version >= \"3.11\" and (extra == \"dev\" or extra == \"ml\")" +markers = "python_version >= \"3.11\" and (extra == \"dev\" or extra == \"ml\") or python_version == \"3.11\"" files = [ {file = "scipy-1.17.1-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:1f95b894f13729334fb990162e911c9e5dc1ab390c58aa6cbecb389c5b5e28ec"}, {file = "scipy-1.17.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:e18f12c6b0bc5a592ed23d3f7b891f68fd7f8241d69b7883769eb5d5dfb52696"}, @@ -7048,6 +7267,39 @@ dev = ["click (<8.3.0)", "cython-lint (>=0.12.2)", "mypy (==1.10.0)", "pycodesty doc = ["intersphinx_registry", "jupyterlite-pyodide-kernel", "jupyterlite-sphinx (>=0.19.1)", "jupytext", "linkify-it-py", "matplotlib (>=3.5)", "myst-nb (>=1.2.0)", "numpydoc", "pooch", "pydata-sphinx-theme (>=0.15.2)", "sphinx (>=5.0.0,<8.2.0)", "sphinx-copybutton", "sphinx-design (>=0.4.0)", "tabulate"] test = ["Cython", "array-api-strict (>=2.3.1)", "asv", "gmpy2", "hypothesis (>=6.30)", "meson", "mpmath", "ninja ; sys_platform != \"emscripten\"", "pooch", "pytest (>=8.0.0)", "pytest-cov", "pytest-timeout", "pytest-xdist", "scikit-umfpack", "threadpoolctl"] +[[package]] +name = "sentence-transformers" +version = "5.4.1" +description = "Embeddings, Retrieval, and Reranking" +optional = false +python-versions = ">=3.10" +groups = ["main"] +markers = "python_version < \"3.12\"" +files = [ + {file = "sentence_transformers-5.4.1-py3-none-any.whl", hash = "sha256:a6d640fc363849b63affb8e140e9d328feabab86f83d58ac3e16b1c28140b790"}, + {file = "sentence_transformers-5.4.1.tar.gz", hash = "sha256:436bcb1182a0ff42a8fb2b1c43498a70d0a75b688d182f2cd0d1dd115af61ddc"}, +] + +[package.dependencies] +huggingface-hub = ">=0.23.0" +numpy = ">=1.20.0" +scikit-learn = ">=0.22.0" +scipy = ">=1.0.0" +torch = ">=1.11.0" +tqdm = ">=4.0.0" +transformers = ">=4.41.0,<6.0.0" +typing_extensions = ">=4.5.0" + +[package.extras] +audio = ["transformers[audio]"] +dev = ["accelerate (>=0.20.3)", "datasets (>=2.0.0)", "peft", "pre-commit", "pytest", "pytest-cov", "pytest-env", "pytest-subtests", "pytest-xdist", "transformers[audio,video,vision]"] +image = ["transformers[vision]"] +onnx = ["optimum-onnx[onnxruntime]"] +onnx-gpu = ["optimum-onnx[onnxruntime-gpu]"] +openvino = ["optimum-intel[openvino]"] +train = ["accelerate (>=0.20.3)", "datasets (>=2.0.0)"] +video = ["transformers[video]"] + [[package]] name = "setuptools" version = "82.0.1" @@ -7485,10 +7737,10 @@ full = ["httpx (>=0.27.0,<0.29.0)", "itsdangerous", "jinja2", "python-multipart name = "sympy" version = "1.14.0" description = "Computer algebra system (CAS) in Python" -optional = true +optional = false python-versions = ">=3.9" groups = ["main"] -markers = "extra == \"hf\"" +markers = "python_version < \"3.12\" or extra == \"hf\"" files = [ {file = "sympy-1.14.0-py3-none-any.whl", hash = "sha256:e091cc3e99d2141a0ba2847328f5479b05d94a6635cb96148ccb3f34671bd8f5"}, {file = "sympy-1.14.0.tar.gz", hash = "sha256:d3d3fe8df1e5a0b42f0e7bdf50541697dbe7d23746e894990c030e2b05e72517"}, @@ -7521,10 +7773,10 @@ test = ["pytest", "tornado (>=4.5)", "typeguard"] name = "threadpoolctl" version = "3.6.0" description = "threadpoolctl" -optional = true +optional = false python-versions = ">=3.9" groups = ["main"] -markers = "extra == \"dev\" or extra == \"ml\"" +markers = "python_version < \"3.12\" or extra == \"dev\" or extra == \"ml\"" files = [ {file = "threadpoolctl-3.6.0-py3-none-any.whl", hash = "sha256:43a0b8fd5a2928500110039e43a5eed8480b918967083ea48dc3ab9f13c4a7fb"}, {file = "threadpoolctl-3.6.0.tar.gz", hash = "sha256:8ab8b4aa3491d812b623328249fab5302a68d2d71745c8a4c719a2fcaba9f44e"}, @@ -7786,10 +8038,10 @@ optree = ["optree (>=0.13.0)"] name = "torch" version = "2.10.0" description = "Tensors and Dynamic neural networks in Python with strong GPU acceleration" -optional = true +optional = false python-versions = ">=3.10" groups = ["main"] -markers = "python_version < \"3.12\" and extra == \"hf\"" +markers = "python_version < \"3.12\"" files = [ {file = "torch-2.10.0-2-cp310-none-macosx_11_0_arm64.whl", hash = "sha256:2b980edd8d7c0a68c4e951ee1856334a43193f98730d97408fbd148c1a933313"}, {file = "torch-2.10.0-2-cp311-none-macosx_11_0_arm64.whl", hash = "sha256:418997cb02d0a0f1497cf6a09f63166f9f5df9f3e16c8a716ab76a72127c714f"}, @@ -7889,10 +8141,10 @@ telegram = ["requests"] name = "transformers" version = "4.57.6" description = "State-of-the-art Machine Learning for JAX, PyTorch and TensorFlow" -optional = true +optional = false python-versions = ">=3.9.0" groups = ["main"] -markers = "extra == \"hf\"" +markers = "python_version < \"3.12\" or extra == \"hf\"" files = [ {file = "transformers-4.57.6-py3-none-any.whl", hash = "sha256:4c9e9de11333ddfe5114bc872c9f370509198acf0b87a832a0ab9458e2bd0550"}, {file = "transformers-4.57.6.tar.gz", hash = "sha256:55e44126ece9dc0a291521b7e5492b572e6ef2766338a610b9ab5afbb70689d3"}, @@ -7990,10 +8242,10 @@ tutorials = ["matplotlib", "pandas", "tabulate"] name = "triton" version = "3.6.0" description = "A language and compiler for custom Deep Learning operations" -optional = true +optional = false python-versions = "<3.15,>=3.10" groups = ["main"] -markers = "python_version < \"3.12\" and platform_system == \"Linux\" and platform_machine == \"x86_64\" and extra == \"hf\"" +markers = "python_version < \"3.12\" and platform_system == \"Linux\" and platform_machine == \"x86_64\"" files = [ {file = "triton-3.6.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6c723cfb12f6842a0ae94ac307dba7e7a44741d720a40cf0e270ed4a4e3be781"}, {file = "triton-3.6.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a6550fae429e0667e397e5de64b332d1e5695b73650ee75a6146e2e902770bea"}, @@ -8065,15 +8317,42 @@ typing-extensions = ">=4.12.0" name = "tzdata" version = "2025.3" description = "Provider of IANA time zone data" -optional = true +optional = false python-versions = ">=2" groups = ["main"] -markers = "extra == \"dev\" or extra == \"ml\" or extra == \"hf\"" +markers = "python_version < \"3.12\" or extra == \"dev\" or extra == \"ml\" or extra == \"hf\"" files = [ {file = "tzdata-2025.3-py2.py3-none-any.whl", hash = "sha256:06a47e5700f3081aab02b2e513160914ff0694bce9947d6b76ebd6bf57cfc5d1"}, {file = "tzdata-2025.3.tar.gz", hash = "sha256:de39c2ca5dc7b0344f2eba86f49d614019d29f060fc4ebc8a417896a620b56a7"}, ] +[[package]] +name = "umap-learn" +version = "0.5.12" +description = "Uniform Manifold Approximation and Projection" +optional = false +python-versions = ">=3.9" +groups = ["main"] +markers = "python_version < \"3.12\"" +files = [ + {file = "umap_learn-0.5.12-py3-none-any.whl", hash = "sha256:f2a85d2a2adcb52b541bed9b27a23ca169b56bb1b23283abeebfb8dfb8a42fe5"}, + {file = "umap_learn-0.5.12.tar.gz", hash = "sha256:6aff02ecac5f2aad9f3c65ee518d7ae93e1a985ae38721fdcffceee4232c33c7"}, +] + +[package.dependencies] +numba = ">=0.51.2" +numpy = ">=1.23" +pynndescent = ">=0.5" +scikit-learn = ">=1.6" +scipy = ">=1.3.1" +tqdm = "*" + +[package.extras] +parametric-umap = ["tensorflow (>=2.1)"] +plot = ["bokeh", "colorcet", "dask", "datashader", "holoviews", "matplotlib", "pandas", "scikit-image", "seaborn"] +tbb = ["tbb (>=2019.0)"] +test = ["pytest"] + [[package]] name = "urllib3" version = "2.6.3" @@ -8113,6 +8392,22 @@ typing-extensions = {version = ">=4.0", markers = "python_version < \"3.11\""} [package.extras] standard = ["colorama (>=0.4) ; sys_platform == \"win32\"", "httptools (>=0.6.3)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.15.1) ; sys_platform != \"win32\" and sys_platform != \"cygwin\" and platform_python_implementation != \"PyPy\"", "watchfiles (>=0.20)", "websockets (>=10.4)"] +[[package]] +name = "virtuus" +version = "0.5.0" +description = "File-backed in-memory indexed table engine" +optional = false +python-versions = "<4.0,>=3.10" +groups = ["main"] +markers = "python_version < \"3.12\"" +files = [ + {file = "virtuus-0.5.0-py3-none-any.whl", hash = "sha256:22ffb9750890f28a601de5e234776a42d15c3598cc5969c48e479797eb3f353e"}, + {file = "virtuus-0.5.0.tar.gz", hash = "sha256:3d76df00c76a015ad147ee362300cff8b09065191e0030640a558cd499bce330"}, +] + +[package.dependencies] +pyyaml = ">=6.0" + [[package]] name = "waitress" version = "3.0.2" @@ -8594,4 +8889,4 @@ slack = ["slack-sdk"] [metadata] lock-version = "2.1" python-versions = ">=3.10,<4.0" -content-hash = "45c8f4b06bd7c221e1fd5c2cea1e07b378f1b819168fbf93a0da256416bf8626" +content-hash = "4c78d44835c405e4f7ff0375f0ebdadb9f1f4e6ba4e4f1c2a2b0705f36c03658" diff --git a/project/events/2026-04-29T20:41:56.514Z__7d1df441-d3df-4399-bb97-44e11806ba11.json b/project/events/2026-04-29T20:41:56.514Z__7d1df441-d3df-4399-bb97-44e11806ba11.json new file mode 100644 index 00000000..ed06f995 --- /dev/null +++ b/project/events/2026-04-29T20:41:56.514Z__7d1df441-d3df-4399-bb97-44e11806ba11.json @@ -0,0 +1,18 @@ +{ + "schema_version": 1, + "event_id": "7d1df441-d3df-4399-bb97-44e11806ba11", + "issue_id": "tcts-0ca82e56-44be-42c5-b857-6846762eb0fa", + "event_type": "issue_created", + "occurred_at": "2026-04-29T20:41:56.514Z", + "actor_id": "derek", + "payload": { + "assignee": null, + "description": "", + "issue_type": "epic", + "labels": [], + "parent": null, + "priority": 1, + "status": "open", + "title": "Install Biblicus reinforcement-memory support by default" + } +} \ No newline at end of file diff --git a/project/events/2026-04-29T20:41:56.598Z__56364174-84e1-41f5-89a0-e357eae9750a.json b/project/events/2026-04-29T20:41:56.598Z__56364174-84e1-41f5-89a0-e357eae9750a.json new file mode 100644 index 00000000..ac22dece --- /dev/null +++ b/project/events/2026-04-29T20:41:56.598Z__56364174-84e1-41f5-89a0-e357eae9750a.json @@ -0,0 +1,18 @@ +{ + "schema_version": 1, + "event_id": "56364174-84e1-41f5-89a0-e357eae9750a", + "issue_id": "tcts-3fb6063a-0f3d-4533-a797-e4ce4817da7f", + "event_type": "issue_created", + "occurred_at": "2026-04-29T20:41:56.598Z", + "actor_id": "derek", + "payload": { + "assignee": null, + "description": "", + "issue_type": "task", + "labels": [], + "parent": "tcts-0ca82e56-44be-42c5-b857-6846762eb0fa", + "priority": 1, + "status": "open", + "title": "Make biblicus reinforcement-memory extra a core Tactus dependency" + } +} \ No newline at end of file diff --git a/project/events/2026-04-29T20:42:02.861Z__ed8edb91-7b86-4766-8dfc-a397acf86e44.json b/project/events/2026-04-29T20:42:02.861Z__ed8edb91-7b86-4766-8dfc-a397acf86e44.json new file mode 100644 index 00000000..8daec0d8 --- /dev/null +++ b/project/events/2026-04-29T20:42:02.861Z__ed8edb91-7b86-4766-8dfc-a397acf86e44.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "ed8edb91-7b86-4766-8dfc-a397acf86e44", + "issue_id": "tcts-0ca82e56-44be-42c5-b857-6846762eb0fa", + "event_type": "state_transition", + "occurred_at": "2026-04-29T20:42:02.861Z", + "actor_id": "derek", + "payload": { + "from_status": "open", + "to_status": "in_progress" + } +} \ No newline at end of file diff --git a/project/events/2026-04-29T20:42:02.873Z__ecbb98e4-157e-4a30-953c-e4e02d84af55.json b/project/events/2026-04-29T20:42:02.873Z__ecbb98e4-157e-4a30-953c-e4e02d84af55.json new file mode 100644 index 00000000..ff6f4322 --- /dev/null +++ b/project/events/2026-04-29T20:42:02.873Z__ecbb98e4-157e-4a30-953c-e4e02d84af55.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "ecbb98e4-157e-4a30-953c-e4e02d84af55", + "issue_id": "tcts-3fb6063a-0f3d-4533-a797-e4ce4817da7f", + "event_type": "state_transition", + "occurred_at": "2026-04-29T20:42:02.873Z", + "actor_id": "derek", + "payload": { + "from_status": "open", + "to_status": "in_progress" + } +} \ No newline at end of file diff --git a/project/events/2026-04-29T20:42:02.883Z__2c1d31da-f8d6-44a3-a218-75b35156e6ed.json b/project/events/2026-04-29T20:42:02.883Z__2c1d31da-f8d6-44a3-a218-75b35156e6ed.json new file mode 100644 index 00000000..eacbe378 --- /dev/null +++ b/project/events/2026-04-29T20:42:02.883Z__2c1d31da-f8d6-44a3-a218-75b35156e6ed.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "2c1d31da-f8d6-44a3-a218-75b35156e6ed", + "issue_id": "tcts-3fb6063a-0f3d-4533-a797-e4ce4817da7f", + "event_type": "comment_added", + "occurred_at": "2026-04-29T20:42:02.883Z", + "actor_id": "derek", + "payload": { + "comment_author": "derek", + "comment_id": "08409ea2-ae89-4f9a-ac3a-1d9a7ce24f90" + } +} \ No newline at end of file diff --git a/project/issues/tcts-0ca82e56-44be-42c5-b857-6846762eb0fa.json b/project/issues/tcts-0ca82e56-44be-42c5-b857-6846762eb0fa.json new file mode 100644 index 00000000..e5ef2296 --- /dev/null +++ b/project/issues/tcts-0ca82e56-44be-42c5-b857-6846762eb0fa.json @@ -0,0 +1,18 @@ +{ + "id": "tcts-0ca82e56-44be-42c5-b857-6846762eb0fa", + "title": "Install Biblicus reinforcement-memory support by default", + "description": "", + "type": "epic", + "status": "in_progress", + "priority": 1, + "assignee": null, + "creator": null, + "parent": null, + "labels": [], + "dependencies": [], + "comments": [], + "created_at": "2026-04-29T20:41:56.514341432Z", + "updated_at": "2026-04-29T20:42:02.860677280Z", + "closed_at": null, + "custom": {} +} \ No newline at end of file diff --git a/project/issues/tcts-3fb6063a-0f3d-4533-a797-e4ce4817da7f.json b/project/issues/tcts-3fb6063a-0f3d-4533-a797-e4ce4817da7f.json new file mode 100644 index 00000000..41a46708 --- /dev/null +++ b/project/issues/tcts-3fb6063a-0f3d-4533-a797-e4ce4817da7f.json @@ -0,0 +1,25 @@ +{ + "id": "tcts-3fb6063a-0f3d-4533-a797-e4ce4817da7f", + "title": "Make biblicus reinforcement-memory extra a core Tactus dependency", + "description": "", + "type": "task", + "status": "in_progress", + "priority": 1, + "assignee": null, + "creator": null, + "parent": "tcts-0ca82e56-44be-42c5-b857-6846762eb0fa", + "labels": [], + "dependencies": [], + "comments": [ + { + "id": "08409ea2-ae89-4f9a-ac3a-1d9a7ce24f90", + "author": "derek", + "text": "Updating pyproject core dependency from biblicus to biblicus[reinforcement-memory] and regenerating poetry.lock so RCA dependencies install by default with tactus.", + "created_at": "2026-04-29T20:42:02.883250805Z" + } + ], + "created_at": "2026-04-29T20:41:56.598602458Z", + "updated_at": "2026-04-29T20:42:02.883250805Z", + "closed_at": null, + "custom": {} +} \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 50c9e6cc..02350fd7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -56,8 +56,8 @@ dependencies = [ # DSPy for prompt optimization and LLM abstraction "dspy>=3.1.3,<3.2.0; python_version < '3.15'", "pypdf>=6.10.2", - # Biblicus text utilities (requires ReinforcementMemory.max_exemplars support) - "biblicus>=1.10.0,<2.0.0", + # Biblicus text utilities with reinforcement-memory extras required by RCA + "biblicus[reinforcement-memory]>=1.10.0,<2.0.0", # Async utils (avoid bad 0.0.0 tarball pulled during CI resolution) "sniffio>=1.3.0", # IDE server dependencies From 0a78d6c4151ad8123c791a6e1c22a6c4f3356f70 Mon Sep 17 00:00:00 2001 From: dereknorrbom Date: Wed, 29 Apr 2026 20:43:37 +0000 Subject: [PATCH 10/11] chore(kanbus): close reinforcement-memory dependency tasks --- ...62Z__1b1292dc-8981-440d-b367-3068882c6029.json | 12 ++++++++++++ ...67Z__42b6d17c-ca76-41bb-b497-5e5642e5d8bf.json | 12 ++++++++++++ ...77Z__5c781572-c58b-4df8-a267-4bf0ffd239c3.json | 12 ++++++++++++ ...86Z__1a32d444-b9aa-4393-a42d-56e6cb072c72.json | 12 ++++++++++++ ...tcts-0ca82e56-44be-42c5-b857-6846762eb0fa.json | 15 +++++++++++---- ...tcts-3fb6063a-0f3d-4533-a797-e4ce4817da7f.json | 12 +++++++++--- 6 files changed, 68 insertions(+), 7 deletions(-) create mode 100644 project/events/2026-04-29T20:43:09.362Z__1b1292dc-8981-440d-b367-3068882c6029.json create mode 100644 project/events/2026-04-29T20:43:32.367Z__42b6d17c-ca76-41bb-b497-5e5642e5d8bf.json create mode 100644 project/events/2026-04-29T20:43:32.377Z__5c781572-c58b-4df8-a267-4bf0ffd239c3.json create mode 100644 project/events/2026-04-29T20:43:32.386Z__1a32d444-b9aa-4393-a42d-56e6cb072c72.json diff --git a/project/events/2026-04-29T20:43:09.362Z__1b1292dc-8981-440d-b367-3068882c6029.json b/project/events/2026-04-29T20:43:09.362Z__1b1292dc-8981-440d-b367-3068882c6029.json new file mode 100644 index 00000000..9849454c --- /dev/null +++ b/project/events/2026-04-29T20:43:09.362Z__1b1292dc-8981-440d-b367-3068882c6029.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "1b1292dc-8981-440d-b367-3068882c6029", + "issue_id": "tcts-3fb6063a-0f3d-4533-a797-e4ce4817da7f", + "event_type": "comment_added", + "occurred_at": "2026-04-29T20:43:09.362Z", + "actor_id": "derek", + "payload": { + "comment_author": "derek", + "comment_id": "fbf0e6b1-d7b2-45a7-be41-89da6772f1a4" + } +} \ No newline at end of file diff --git a/project/events/2026-04-29T20:43:32.367Z__42b6d17c-ca76-41bb-b497-5e5642e5d8bf.json b/project/events/2026-04-29T20:43:32.367Z__42b6d17c-ca76-41bb-b497-5e5642e5d8bf.json new file mode 100644 index 00000000..0fcb33b3 --- /dev/null +++ b/project/events/2026-04-29T20:43:32.367Z__42b6d17c-ca76-41bb-b497-5e5642e5d8bf.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "42b6d17c-ca76-41bb-b497-5e5642e5d8bf", + "issue_id": "tcts-3fb6063a-0f3d-4533-a797-e4ce4817da7f", + "event_type": "state_transition", + "occurred_at": "2026-04-29T20:43:32.367Z", + "actor_id": "derek", + "payload": { + "from_status": "in_progress", + "to_status": "closed" + } +} \ No newline at end of file diff --git a/project/events/2026-04-29T20:43:32.377Z__5c781572-c58b-4df8-a267-4bf0ffd239c3.json b/project/events/2026-04-29T20:43:32.377Z__5c781572-c58b-4df8-a267-4bf0ffd239c3.json new file mode 100644 index 00000000..23fa8f84 --- /dev/null +++ b/project/events/2026-04-29T20:43:32.377Z__5c781572-c58b-4df8-a267-4bf0ffd239c3.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "5c781572-c58b-4df8-a267-4bf0ffd239c3", + "issue_id": "tcts-0ca82e56-44be-42c5-b857-6846762eb0fa", + "event_type": "state_transition", + "occurred_at": "2026-04-29T20:43:32.377Z", + "actor_id": "derek", + "payload": { + "from_status": "in_progress", + "to_status": "closed" + } +} \ No newline at end of file diff --git a/project/events/2026-04-29T20:43:32.386Z__1a32d444-b9aa-4393-a42d-56e6cb072c72.json b/project/events/2026-04-29T20:43:32.386Z__1a32d444-b9aa-4393-a42d-56e6cb072c72.json new file mode 100644 index 00000000..47b2ffb5 --- /dev/null +++ b/project/events/2026-04-29T20:43:32.386Z__1a32d444-b9aa-4393-a42d-56e6cb072c72.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "1a32d444-b9aa-4393-a42d-56e6cb072c72", + "issue_id": "tcts-0ca82e56-44be-42c5-b857-6846762eb0fa", + "event_type": "comment_added", + "occurred_at": "2026-04-29T20:43:32.386Z", + "actor_id": "derek", + "payload": { + "comment_author": "derek", + "comment_id": "710bfb05-780c-4dc7-a525-373d4045de59" + } +} \ No newline at end of file diff --git a/project/issues/tcts-0ca82e56-44be-42c5-b857-6846762eb0fa.json b/project/issues/tcts-0ca82e56-44be-42c5-b857-6846762eb0fa.json index e5ef2296..b0933a7e 100644 --- a/project/issues/tcts-0ca82e56-44be-42c5-b857-6846762eb0fa.json +++ b/project/issues/tcts-0ca82e56-44be-42c5-b857-6846762eb0fa.json @@ -3,16 +3,23 @@ "title": "Install Biblicus reinforcement-memory support by default", "description": "", "type": "epic", - "status": "in_progress", + "status": "closed", "priority": 1, "assignee": null, "creator": null, "parent": null, "labels": [], "dependencies": [], - "comments": [], + "comments": [ + { + "id": "710bfb05-780c-4dc7-a525-373d4045de59", + "author": "derek", + "text": "Epic complete: core biblicus reinforcement-memory dependency is now enforced in Tactus packaging.", + "created_at": "2026-04-29T20:43:32.386349591Z" + } + ], "created_at": "2026-04-29T20:41:56.514341432Z", - "updated_at": "2026-04-29T20:42:02.860677280Z", - "closed_at": null, + "updated_at": "2026-04-29T20:43:32.386349591Z", + "closed_at": "2026-04-29T20:43:32.377183007Z", "custom": {} } \ No newline at end of file diff --git a/project/issues/tcts-3fb6063a-0f3d-4533-a797-e4ce4817da7f.json b/project/issues/tcts-3fb6063a-0f3d-4533-a797-e4ce4817da7f.json index 41a46708..d3331e0e 100644 --- a/project/issues/tcts-3fb6063a-0f3d-4533-a797-e4ce4817da7f.json +++ b/project/issues/tcts-3fb6063a-0f3d-4533-a797-e4ce4817da7f.json @@ -3,7 +3,7 @@ "title": "Make biblicus reinforcement-memory extra a core Tactus dependency", "description": "", "type": "task", - "status": "in_progress", + "status": "closed", "priority": 1, "assignee": null, "creator": null, @@ -16,10 +16,16 @@ "author": "derek", "text": "Updating pyproject core dependency from biblicus to biblicus[reinforcement-memory] and regenerating poetry.lock so RCA dependencies install by default with tactus.", "created_at": "2026-04-29T20:42:02.883250805Z" + }, + { + "id": "fbf0e6b1-d7b2-45a7-be41-89da6772f1a4", + "author": "derek", + "text": "Implemented in commit ccf8b812: pyproject now requires biblicus[reinforcement-memory] as a core dependency; poetry.lock regenerated to include virtuus via biblicus reinforcement-memory extra. Validation: poetry check.", + "created_at": "2026-04-29T20:43:09.361948043Z" } ], "created_at": "2026-04-29T20:41:56.598602458Z", - "updated_at": "2026-04-29T20:42:02.883250805Z", - "closed_at": null, + "updated_at": "2026-04-29T20:43:32.367351797Z", + "closed_at": "2026-04-29T20:43:32.367351797Z", "custom": {} } \ No newline at end of file From a328605fe0cbf77de4ef72afd45928fede8abac0 Mon Sep 17 00:00:00 2001 From: dereknorrbom Date: Wed, 29 Apr 2026 21:00:22 +0000 Subject: [PATCH 11/11] test(streaming): harden unknown chunk queue stub --- ...7Z__40c941ae-49da-43ef-a716-4cf2f0b3774f.json | 12 ++++++++++++ ...6Z__e1f772dc-b2bd-4909-b3ac-853feb37b6c4.json | 12 ++++++++++++ ...6Z__9c2e480d-9c95-4e8b-944f-b1d0b95316ca.json | 12 ++++++++++++ ...6Z__8cd30803-f229-4f48-8bbb-9956924ad4fd.json | 12 ++++++++++++ ...0Z__52811646-99fe-4429-bf6e-bb6d4fcf7cd9.json | 12 ++++++++++++ ...cts-3fb6063a-0f3d-4533-a797-e4ce4817da7f.json | 16 ++++++++++++++-- tests/dspy/test_agent_execution.py | 4 +++- 7 files changed, 77 insertions(+), 3 deletions(-) create mode 100644 project/events/2026-04-29T20:56:36.787Z__40c941ae-49da-43ef-a716-4cf2f0b3774f.json create mode 100644 project/events/2026-04-29T20:56:36.796Z__e1f772dc-b2bd-4909-b3ac-853feb37b6c4.json create mode 100644 project/events/2026-04-29T20:56:36.806Z__9c2e480d-9c95-4e8b-944f-b1d0b95316ca.json create mode 100644 project/events/2026-04-29T21:00:11.146Z__8cd30803-f229-4f48-8bbb-9956924ad4fd.json create mode 100644 project/events/2026-04-29T21:00:14.700Z__52811646-99fe-4429-bf6e-bb6d4fcf7cd9.json diff --git a/project/events/2026-04-29T20:56:36.787Z__40c941ae-49da-43ef-a716-4cf2f0b3774f.json b/project/events/2026-04-29T20:56:36.787Z__40c941ae-49da-43ef-a716-4cf2f0b3774f.json new file mode 100644 index 00000000..4d333801 --- /dev/null +++ b/project/events/2026-04-29T20:56:36.787Z__40c941ae-49da-43ef-a716-4cf2f0b3774f.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "40c941ae-49da-43ef-a716-4cf2f0b3774f", + "issue_id": "tcts-3fb6063a-0f3d-4533-a797-e4ce4817da7f", + "event_type": "state_transition", + "occurred_at": "2026-04-29T20:56:36.787Z", + "actor_id": "derek", + "payload": { + "from_status": "closed", + "to_status": "open" + } +} \ No newline at end of file diff --git a/project/events/2026-04-29T20:56:36.796Z__e1f772dc-b2bd-4909-b3ac-853feb37b6c4.json b/project/events/2026-04-29T20:56:36.796Z__e1f772dc-b2bd-4909-b3ac-853feb37b6c4.json new file mode 100644 index 00000000..e09d461b --- /dev/null +++ b/project/events/2026-04-29T20:56:36.796Z__e1f772dc-b2bd-4909-b3ac-853feb37b6c4.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "e1f772dc-b2bd-4909-b3ac-853feb37b6c4", + "issue_id": "tcts-3fb6063a-0f3d-4533-a797-e4ce4817da7f", + "event_type": "state_transition", + "occurred_at": "2026-04-29T20:56:36.796Z", + "actor_id": "derek", + "payload": { + "from_status": "open", + "to_status": "in_progress" + } +} \ No newline at end of file diff --git a/project/events/2026-04-29T20:56:36.806Z__9c2e480d-9c95-4e8b-944f-b1d0b95316ca.json b/project/events/2026-04-29T20:56:36.806Z__9c2e480d-9c95-4e8b-944f-b1d0b95316ca.json new file mode 100644 index 00000000..9a4d9ae5 --- /dev/null +++ b/project/events/2026-04-29T20:56:36.806Z__9c2e480d-9c95-4e8b-944f-b1d0b95316ca.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "9c2e480d-9c95-4e8b-944f-b1d0b95316ca", + "issue_id": "tcts-3fb6063a-0f3d-4533-a797-e4ce4817da7f", + "event_type": "comment_added", + "occurred_at": "2026-04-29T20:56:36.806Z", + "actor_id": "derek", + "payload": { + "comment_author": "derek", + "comment_id": "108866f7-0a2d-4849-a7b1-5062d212835f" + } +} \ No newline at end of file diff --git a/project/events/2026-04-29T21:00:11.146Z__8cd30803-f229-4f48-8bbb-9956924ad4fd.json b/project/events/2026-04-29T21:00:11.146Z__8cd30803-f229-4f48-8bbb-9956924ad4fd.json new file mode 100644 index 00000000..5453d531 --- /dev/null +++ b/project/events/2026-04-29T21:00:11.146Z__8cd30803-f229-4f48-8bbb-9956924ad4fd.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "8cd30803-f229-4f48-8bbb-9956924ad4fd", + "issue_id": "tcts-3fb6063a-0f3d-4533-a797-e4ce4817da7f", + "event_type": "comment_added", + "occurred_at": "2026-04-29T21:00:11.146Z", + "actor_id": "derek", + "payload": { + "comment_author": "derek", + "comment_id": "130b0f7b-df5b-4f3b-b9ef-10684c96e68e" + } +} \ No newline at end of file diff --git a/project/events/2026-04-29T21:00:14.700Z__52811646-99fe-4429-bf6e-bb6d4fcf7cd9.json b/project/events/2026-04-29T21:00:14.700Z__52811646-99fe-4429-bf6e-bb6d4fcf7cd9.json new file mode 100644 index 00000000..d2b4fa90 --- /dev/null +++ b/project/events/2026-04-29T21:00:14.700Z__52811646-99fe-4429-bf6e-bb6d4fcf7cd9.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "event_id": "52811646-99fe-4429-bf6e-bb6d4fcf7cd9", + "issue_id": "tcts-3fb6063a-0f3d-4533-a797-e4ce4817da7f", + "event_type": "state_transition", + "occurred_at": "2026-04-29T21:00:14.700Z", + "actor_id": "derek", + "payload": { + "from_status": "in_progress", + "to_status": "closed" + } +} \ No newline at end of file diff --git a/project/issues/tcts-3fb6063a-0f3d-4533-a797-e4ce4817da7f.json b/project/issues/tcts-3fb6063a-0f3d-4533-a797-e4ce4817da7f.json index d3331e0e..664f3d88 100644 --- a/project/issues/tcts-3fb6063a-0f3d-4533-a797-e4ce4817da7f.json +++ b/project/issues/tcts-3fb6063a-0f3d-4533-a797-e4ce4817da7f.json @@ -22,10 +22,22 @@ "author": "derek", "text": "Implemented in commit ccf8b812: pyproject now requires biblicus[reinforcement-memory] as a core dependency; poetry.lock regenerated to include virtuus via biblicus reinforcement-memory extra. Validation: poetry check.", "created_at": "2026-04-29T20:43:09.361948043Z" + }, + { + "id": "108866f7-0a2d-4849-a7b1-5062d212835f", + "author": "derek", + "text": "Reopened for CI regression: fix failing streaming branch test on PR #69.", + "created_at": "2026-04-29T20:56:36.805950117Z" + }, + { + "id": "130b0f7b-df5b-4f3b-b9ef-10684c96e68e", + "author": "derek", + "text": "Addressed CI flake in streaming branch tests: hardened test_streaming_unknown_chunk_type_skips queue fake to return ('done', None) when sequence is exhausted instead of raising IndexError. Validation: targeted pytest for streaming branch tests (2 passed).", + "created_at": "2026-04-29T21:00:11.146879382Z" } ], "created_at": "2026-04-29T20:41:56.598602458Z", - "updated_at": "2026-04-29T20:43:32.367351797Z", - "closed_at": "2026-04-29T20:43:32.367351797Z", + "updated_at": "2026-04-29T21:00:14.700764582Z", + "closed_at": "2026-04-29T21:00:14.700764582Z", "custom": {} } \ No newline at end of file diff --git a/tests/dspy/test_agent_execution.py b/tests/dspy/test_agent_execution.py index 0176b140..16638514 100644 --- a/tests/dspy/test_agent_execution.py +++ b/tests/dspy/test_agent_execution.py @@ -1171,7 +1171,9 @@ async def fake_stream(): results = [("noop", "data"), ("done", None)] def fake_get(self, *args, **kwargs): - return results.pop(0) + if results: + return results.pop(0) + return ("done", None) monkeypatch.setattr(queue.Queue, "get", fake_get)