awslabs.cloudwatch-appsignals-mcp-server 0.1.13__tar.gz → 0.1.15__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. {awslabs_cloudwatch_appsignals_mcp_server-0.1.13 → awslabs_cloudwatch_appsignals_mcp_server-0.1.15}/PKG-INFO +2 -2
  2. {awslabs_cloudwatch_appsignals_mcp_server-0.1.13 → awslabs_cloudwatch_appsignals_mcp_server-0.1.15}/awslabs/__init__.py +1 -0
  3. {awslabs_cloudwatch_appsignals_mcp_server-0.1.13 → awslabs_cloudwatch_appsignals_mcp_server-0.1.15}/awslabs/cloudwatch_appsignals_mcp_server/__init__.py +1 -1
  4. {awslabs_cloudwatch_appsignals_mcp_server-0.1.13 → awslabs_cloudwatch_appsignals_mcp_server-0.1.15}/pyproject.toml +2 -2
  5. {awslabs_cloudwatch_appsignals_mcp_server-0.1.13 → awslabs_cloudwatch_appsignals_mcp_server-0.1.15}/uv.lock +35 -17
  6. {awslabs_cloudwatch_appsignals_mcp_server-0.1.13 → awslabs_cloudwatch_appsignals_mcp_server-0.1.15}/.gitignore +0 -0
  7. {awslabs_cloudwatch_appsignals_mcp_server-0.1.13 → awslabs_cloudwatch_appsignals_mcp_server-0.1.15}/.python-version +0 -0
  8. {awslabs_cloudwatch_appsignals_mcp_server-0.1.13 → awslabs_cloudwatch_appsignals_mcp_server-0.1.15}/CHANGELOG.md +0 -0
  9. {awslabs_cloudwatch_appsignals_mcp_server-0.1.13 → awslabs_cloudwatch_appsignals_mcp_server-0.1.15}/Dockerfile +0 -0
  10. {awslabs_cloudwatch_appsignals_mcp_server-0.1.13 → awslabs_cloudwatch_appsignals_mcp_server-0.1.15}/LICENSE +0 -0
  11. {awslabs_cloudwatch_appsignals_mcp_server-0.1.13 → awslabs_cloudwatch_appsignals_mcp_server-0.1.15}/NOTICE +0 -0
  12. {awslabs_cloudwatch_appsignals_mcp_server-0.1.13 → awslabs_cloudwatch_appsignals_mcp_server-0.1.15}/README.md +0 -0
  13. {awslabs_cloudwatch_appsignals_mcp_server-0.1.13 → awslabs_cloudwatch_appsignals_mcp_server-0.1.15}/awslabs/cloudwatch_appsignals_mcp_server/audit_presentation_utils.py +0 -0
  14. {awslabs_cloudwatch_appsignals_mcp_server-0.1.13 → awslabs_cloudwatch_appsignals_mcp_server-0.1.15}/awslabs/cloudwatch_appsignals_mcp_server/audit_utils.py +0 -0
  15. {awslabs_cloudwatch_appsignals_mcp_server-0.1.13 → awslabs_cloudwatch_appsignals_mcp_server-0.1.15}/awslabs/cloudwatch_appsignals_mcp_server/aws_clients.py +0 -0
  16. {awslabs_cloudwatch_appsignals_mcp_server-0.1.13 → awslabs_cloudwatch_appsignals_mcp_server-0.1.15}/awslabs/cloudwatch_appsignals_mcp_server/canary_utils.py +0 -0
  17. {awslabs_cloudwatch_appsignals_mcp_server-0.1.13 → awslabs_cloudwatch_appsignals_mcp_server-0.1.15}/awslabs/cloudwatch_appsignals_mcp_server/enablement_guides/templates/ec2/ec2-python-enablement.md +0 -0
  18. {awslabs_cloudwatch_appsignals_mcp_server-0.1.13 → awslabs_cloudwatch_appsignals_mcp_server-0.1.15}/awslabs/cloudwatch_appsignals_mcp_server/enablement_tools.py +0 -0
  19. {awslabs_cloudwatch_appsignals_mcp_server-0.1.13 → awslabs_cloudwatch_appsignals_mcp_server-0.1.15}/awslabs/cloudwatch_appsignals_mcp_server/server.py +0 -0
  20. {awslabs_cloudwatch_appsignals_mcp_server-0.1.13 → awslabs_cloudwatch_appsignals_mcp_server-0.1.15}/awslabs/cloudwatch_appsignals_mcp_server/service_audit_utils.py +0 -0
  21. {awslabs_cloudwatch_appsignals_mcp_server-0.1.13 → awslabs_cloudwatch_appsignals_mcp_server-0.1.15}/awslabs/cloudwatch_appsignals_mcp_server/service_tools.py +0 -0
  22. {awslabs_cloudwatch_appsignals_mcp_server-0.1.13 → awslabs_cloudwatch_appsignals_mcp_server-0.1.15}/awslabs/cloudwatch_appsignals_mcp_server/sli_report_client.py +0 -0
  23. {awslabs_cloudwatch_appsignals_mcp_server-0.1.13 → awslabs_cloudwatch_appsignals_mcp_server-0.1.15}/awslabs/cloudwatch_appsignals_mcp_server/slo_tools.py +0 -0
  24. {awslabs_cloudwatch_appsignals_mcp_server-0.1.13 → awslabs_cloudwatch_appsignals_mcp_server-0.1.15}/awslabs/cloudwatch_appsignals_mcp_server/trace_tools.py +0 -0
  25. {awslabs_cloudwatch_appsignals_mcp_server-0.1.13 → awslabs_cloudwatch_appsignals_mcp_server-0.1.15}/awslabs/cloudwatch_appsignals_mcp_server/utils.py +0 -0
  26. {awslabs_cloudwatch_appsignals_mcp_server-0.1.13 → awslabs_cloudwatch_appsignals_mcp_server-0.1.15}/docker-healthcheck.sh +0 -0
  27. {awslabs_cloudwatch_appsignals_mcp_server-0.1.13 → awslabs_cloudwatch_appsignals_mcp_server-0.1.15}/tests/conftest.py +0 -0
  28. {awslabs_cloudwatch_appsignals_mcp_server-0.1.13 → awslabs_cloudwatch_appsignals_mcp_server-0.1.15}/tests/test_audit_presentation_utils.py +0 -0
  29. {awslabs_cloudwatch_appsignals_mcp_server-0.1.13 → awslabs_cloudwatch_appsignals_mcp_server-0.1.15}/tests/test_audit_utils.py +0 -0
  30. {awslabs_cloudwatch_appsignals_mcp_server-0.1.13 → awslabs_cloudwatch_appsignals_mcp_server-0.1.15}/tests/test_aws_profile.py +0 -0
  31. {awslabs_cloudwatch_appsignals_mcp_server-0.1.13 → awslabs_cloudwatch_appsignals_mcp_server-0.1.15}/tests/test_canary_utils.py +0 -0
  32. {awslabs_cloudwatch_appsignals_mcp_server-0.1.13 → awslabs_cloudwatch_appsignals_mcp_server-0.1.15}/tests/test_enablement_tools.py +0 -0
  33. {awslabs_cloudwatch_appsignals_mcp_server-0.1.13 → awslabs_cloudwatch_appsignals_mcp_server-0.1.15}/tests/test_initialization.py +0 -0
  34. {awslabs_cloudwatch_appsignals_mcp_server-0.1.13 → awslabs_cloudwatch_appsignals_mcp_server-0.1.15}/tests/test_server.py +0 -0
  35. {awslabs_cloudwatch_appsignals_mcp_server-0.1.13 → awslabs_cloudwatch_appsignals_mcp_server-0.1.15}/tests/test_server_audit_functions.py +0 -0
  36. {awslabs_cloudwatch_appsignals_mcp_server-0.1.13 → awslabs_cloudwatch_appsignals_mcp_server-0.1.15}/tests/test_server_audit_tools.py +0 -0
  37. {awslabs_cloudwatch_appsignals_mcp_server-0.1.13 → awslabs_cloudwatch_appsignals_mcp_server-0.1.15}/tests/test_service_audit_utils.py +0 -0
  38. {awslabs_cloudwatch_appsignals_mcp_server-0.1.13 → awslabs_cloudwatch_appsignals_mcp_server-0.1.15}/tests/test_service_tools_operations.py +0 -0
  39. {awslabs_cloudwatch_appsignals_mcp_server-0.1.13 → awslabs_cloudwatch_appsignals_mcp_server-0.1.15}/tests/test_sli_report_client.py +0 -0
  40. {awslabs_cloudwatch_appsignals_mcp_server-0.1.13 → awslabs_cloudwatch_appsignals_mcp_server-0.1.15}/tests/test_slo_tools.py +0 -0
  41. {awslabs_cloudwatch_appsignals_mcp_server-0.1.13 → awslabs_cloudwatch_appsignals_mcp_server-0.1.15}/tests/test_utils.py +0 -0
  42. {awslabs_cloudwatch_appsignals_mcp_server-0.1.13 → awslabs_cloudwatch_appsignals_mcp_server-0.1.15}/uv-requirements.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: awslabs.cloudwatch-appsignals-mcp-server
3
- Version: 0.1.13
3
+ Version: 0.1.15
4
4
  Summary: An AWS Labs Model Context Protocol (MCP) server for AWS Application Signals
5
5
  Project-URL: Homepage, https://awslabs.github.io/mcp/
6
6
  Project-URL: Documentation, https://awslabs.github.io/mcp/servers/cloudwatch-appsignals-mcp-server/
@@ -24,7 +24,7 @@ Requires-Python: >=3.10
24
24
  Requires-Dist: boto3>=1.40.41
25
25
  Requires-Dist: httpx>=0.24.0
26
26
  Requires-Dist: loguru>=0.7.3
27
- Requires-Dist: mcp[cli]>=1.11.0
27
+ Requires-Dist: mcp[cli]>=1.23.0
28
28
  Requires-Dist: pydantic>=2.11.1
29
29
  Description-Content-Type: text/markdown
30
30
 
@@ -14,3 +14,4 @@
14
14
 
15
15
  # This file is part of the awslabs namespace.
16
16
  # It is intentionally minimal to support PEP 420 namespace packages.
17
+ __path__ = __import__('pkgutil').extend_path(__path__, __name__)
@@ -14,4 +14,4 @@
14
14
 
15
15
  """AWS Application Signals MCP Server."""
16
16
 
17
- __version__ = '0.1.13'
17
+ __version__ = '0.1.15'
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "awslabs.cloudwatch-appsignals-mcp-server"
3
- version = "0.1.13"
3
+ version = "0.1.15"
4
4
  description = "An AWS Labs Model Context Protocol (MCP) server for AWS Application Signals"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
@@ -8,7 +8,7 @@ dependencies = [
8
8
  "boto3>=1.40.41",
9
9
  "httpx>=0.24.0",
10
10
  "loguru>=0.7.3",
11
- "mcp[cli]>=1.11.0",
11
+ "mcp[cli]>=1.23.0",
12
12
  "pydantic>=2.11.1",
13
13
  ]
14
14
  license = {text = "Apache-2.0"}
@@ -46,7 +46,7 @@ wheels = [
46
46
 
47
47
  [[package]]
48
48
  name = "awslabs-cloudwatch-appsignals-mcp-server"
49
- version = "0.1.13"
49
+ version = "0.1.15"
50
50
  source = { editable = "." }
51
51
  dependencies = [
52
52
  { name = "boto3" },
@@ -75,7 +75,7 @@ requires-dist = [
75
75
  { name = "boto3", specifier = ">=1.40.41" },
76
76
  { name = "httpx", specifier = ">=0.24.0" },
77
77
  { name = "loguru", specifier = ">=0.7.3" },
78
- { name = "mcp", extras = ["cli"], specifier = ">=1.11.0" },
78
+ { name = "mcp", extras = ["cli"], specifier = ">=1.23.0" },
79
79
  { name = "pydantic", specifier = ">=2.11.1" },
80
80
  ]
81
81
 
@@ -504,11 +504,11 @@ wheels = [
504
504
 
505
505
  [[package]]
506
506
  name = "filelock"
507
- version = "3.18.0"
507
+ version = "3.20.1"
508
508
  source = { registry = "https://pypi.org/simple" }
509
- sdist = { url = "https://files.pythonhosted.org/packages/0a/10/c23352565a6544bdc5353e0b15fc1c563352101f30e24bf500207a54df9a/filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2", size = 18075, upload-time = "2025-03-14T07:11:40.47Z" }
509
+ sdist = { url = "https://files.pythonhosted.org/packages/a7/23/ce7a1126827cedeb958fc043d61745754464eb56c5937c35bbf2b8e26f34/filelock-3.20.1.tar.gz", hash = "sha256:b8360948b351b80f420878d8516519a2204b07aefcdcfd24912a5d33127f188c", size = 19476, upload-time = "2025-12-15T23:54:28.027Z" }
510
510
  wheels = [
511
- { url = "https://files.pythonhosted.org/packages/4d/36/2a115987e2d8c300a974597416d9de88f2444426de9571f4b59b2cca3acc/filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de", size = 16215, upload-time = "2025-03-14T07:11:39.145Z" },
511
+ { url = "https://files.pythonhosted.org/packages/e3/7f/a1a97644e39e7316d850784c642093c99df1290a460df4ede27659056834/filelock-3.20.1-py3-none-any.whl", hash = "sha256:15d9e9a67306188a44baa72f569d2bfd803076269365fdea0934385da4dc361a", size = 16666, upload-time = "2025-12-15T23:54:26.874Z" },
512
512
  ]
513
513
 
514
514
  [[package]]
@@ -729,7 +729,7 @@ wheels = [
729
729
 
730
730
  [[package]]
731
731
  name = "mcp"
732
- version = "1.11.0"
732
+ version = "1.23.3"
733
733
  source = { registry = "https://pypi.org/simple" }
734
734
  dependencies = [
735
735
  { name = "anyio" },
@@ -738,15 +738,18 @@ dependencies = [
738
738
  { name = "jsonschema" },
739
739
  { name = "pydantic" },
740
740
  { name = "pydantic-settings" },
741
+ { name = "pyjwt", extra = ["crypto"] },
741
742
  { name = "python-multipart" },
742
743
  { name = "pywin32", marker = "sys_platform == 'win32'" },
743
744
  { name = "sse-starlette" },
744
745
  { name = "starlette" },
746
+ { name = "typing-extensions" },
747
+ { name = "typing-inspection" },
745
748
  { name = "uvicorn", marker = "sys_platform != 'emscripten'" },
746
749
  ]
747
- sdist = { url = "https://files.pythonhosted.org/packages/3a/f5/9506eb5578d5bbe9819ee8ba3198d0ad0e2fbe3bab8b257e4131ceb7dfb6/mcp-1.11.0.tar.gz", hash = "sha256:49a213df56bb9472ff83b3132a4825f5c8f5b120a90246f08b0dac6bedac44c8", size = 406907, upload-time = "2025-07-10T16:41:09.388Z" }
750
+ sdist = { url = "https://files.pythonhosted.org/packages/a7/a4/d06a303f45997e266f2c228081abe299bbcba216cb806128e2e49095d25f/mcp-1.23.3.tar.gz", hash = "sha256:b3b0da2cc949950ce1259c7bfc1b081905a51916fcd7c8182125b85e70825201", size = 600697, upload-time = "2025-12-09T16:04:37.351Z" }
748
751
  wheels = [
749
- { url = "https://files.pythonhosted.org/packages/92/9c/c9ca79f9c512e4113a5d07043013110bb3369fc7770040c61378c7fbcf70/mcp-1.11.0-py3-none-any.whl", hash = "sha256:58deac37f7483e4b338524b98bc949b7c2b7c33d978f5fafab5bde041c5e2595", size = 155880, upload-time = "2025-07-10T16:41:07.935Z" },
752
+ { url = "https://files.pythonhosted.org/packages/32/c6/13c1a26b47b3f3a3b480783001ada4268917c9f42d78a079c336da2e75e5/mcp-1.23.3-py3-none-any.whl", hash = "sha256:32768af4b46a1b4f7df34e2bfdf5c6011e7b63d7f1b0e321d0fdef4cd6082031", size = 231570, upload-time = "2025-12-09T16:04:35.56Z" },
750
753
  ]
751
754
 
752
755
  [package.optional-dependencies]
@@ -1030,6 +1033,20 @@ wheels = [
1030
1033
  { url = "https://files.pythonhosted.org/packages/8a/0b/9fcc47d19c48b59121088dd6da2488a49d5f72dacf8262e2790a1d2c7d15/pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c", size = 1225293, upload-time = "2025-01-06T17:26:25.553Z" },
1031
1034
  ]
1032
1035
 
1036
+ [[package]]
1037
+ name = "pyjwt"
1038
+ version = "2.10.1"
1039
+ source = { registry = "https://pypi.org/simple" }
1040
+ sdist = { url = "https://files.pythonhosted.org/packages/e7/46/bd74733ff231675599650d3e47f361794b22ef3e3770998dda30d3b63726/pyjwt-2.10.1.tar.gz", hash = "sha256:3cc5772eb20009233caf06e9d8a0577824723b44e6648ee0a2aedb6cf9381953", size = 87785, upload-time = "2024-11-28T03:43:29.933Z" }
1041
+ wheels = [
1042
+ { url = "https://files.pythonhosted.org/packages/61/ad/689f02752eeec26aed679477e80e632ef1b682313be70793d798c1d5fc8f/PyJWT-2.10.1-py3-none-any.whl", hash = "sha256:dcdd193e30abefd5debf142f9adfcdd2b58004e644f25406ffaebd50bd98dacb", size = 22997, upload-time = "2024-11-28T03:43:27.893Z" },
1043
+ ]
1044
+
1045
+ [package.optional-dependencies]
1046
+ crypto = [
1047
+ { name = "cryptography" },
1048
+ ]
1049
+
1033
1050
  [[package]]
1034
1051
  name = "pyright"
1035
1052
  version = "1.1.402"
@@ -1456,14 +1473,15 @@ wheels = [
1456
1473
 
1457
1474
  [[package]]
1458
1475
  name = "starlette"
1459
- version = "0.47.0"
1476
+ version = "0.50.0"
1460
1477
  source = { registry = "https://pypi.org/simple" }
1461
1478
  dependencies = [
1462
1479
  { name = "anyio" },
1480
+ { name = "typing-extensions", marker = "python_full_version < '3.13'" },
1463
1481
  ]
1464
- sdist = { url = "https://files.pythonhosted.org/packages/8b/d0/0332bd8a25779a0e2082b0e179805ad39afad642938b371ae0882e7f880d/starlette-0.47.0.tar.gz", hash = "sha256:1f64887e94a447fed5f23309fb6890ef23349b7e478faa7b24a851cd4eb844af", size = 2582856, upload-time = "2025-05-29T15:45:27.628Z" }
1482
+ sdist = { url = "https://files.pythonhosted.org/packages/ba/b8/73a0e6a6e079a9d9cfa64113d771e421640b6f679a52eeb9b32f72d871a1/starlette-0.50.0.tar.gz", hash = "sha256:a2a17b22203254bcbc2e1f926d2d55f3f9497f769416b3190768befe598fa3ca", size = 2646985, upload-time = "2025-11-01T15:25:27.516Z" }
1465
1483
  wheels = [
1466
- { url = "https://files.pythonhosted.org/packages/e3/81/c60b35fe9674f63b38a8feafc414fca0da378a9dbd5fa1e0b8d23fcc7a9b/starlette-0.47.0-py3-none-any.whl", hash = "sha256:9d052d4933683af40ffd47c7465433570b4949dc937e20ad1d73b34e72f10c37", size = 72796, upload-time = "2025-05-29T15:45:26.305Z" },
1484
+ { url = "https://files.pythonhosted.org/packages/d9/52/1064f510b141bd54025f9b55105e26d1fa970b9be67ad766380a3c9b74b0/starlette-0.50.0-py3-none-any.whl", hash = "sha256:9e5391843ec9b6e472eed1365a78c8098cfceb7a74bfd4d6b1c0c0095efb3bca", size = 74033, upload-time = "2025-11-01T15:25:25.461Z" },
1467
1485
  ]
1468
1486
 
1469
1487
  [[package]]
@@ -1588,11 +1606,11 @@ wheels = [
1588
1606
 
1589
1607
  [[package]]
1590
1608
  name = "urllib3"
1591
- version = "2.5.0"
1609
+ version = "2.6.2"
1592
1610
  source = { registry = "https://pypi.org/simple" }
1593
- sdist = { url = "https://files.pythonhosted.org/packages/15/22/9ee70a2574a4f4599c47dd506532914ce044817c7752a79b6a51286319bc/urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760", size = 393185, upload-time = "2025-06-18T14:07:41.644Z" }
1611
+ sdist = { url = "https://files.pythonhosted.org/packages/1e/24/a2a2ed9addd907787d7aa0355ba36a6cadf1768b934c652ea78acbd59dcd/urllib3-2.6.2.tar.gz", hash = "sha256:016f9c98bb7e98085cb2b4b17b87d2c702975664e4f060c6532e64d1c1a5e797", size = 432930, upload-time = "2025-12-11T15:56:40.252Z" }
1594
1612
  wheels = [
1595
- { url = "https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc", size = 129795, upload-time = "2025-06-18T14:07:40.39Z" },
1613
+ { url = "https://files.pythonhosted.org/packages/6d/b9/4095b668ea3678bf6a0af005527f39de12fb026516fb3df17495a733b7f8/urllib3-2.6.2-py3-none-any.whl", hash = "sha256:ec21cddfe7724fc7cb4ba4bea7aa8e2ef36f607a4bab81aa6ce42a13dc3f03dd", size = 131182, upload-time = "2025-12-11T15:56:38.584Z" },
1596
1614
  ]
1597
1615
 
1598
1616
  [[package]]
@@ -1634,14 +1652,14 @@ wheels = [
1634
1652
 
1635
1653
  [[package]]
1636
1654
  name = "werkzeug"
1637
- version = "3.1.3"
1655
+ version = "3.1.4"
1638
1656
  source = { registry = "https://pypi.org/simple" }
1639
1657
  dependencies = [
1640
1658
  { name = "markupsafe" },
1641
1659
  ]
1642
- sdist = { url = "https://files.pythonhosted.org/packages/9f/69/83029f1f6300c5fb2471d621ab06f6ec6b3324685a2ce0f9777fd4a8b71e/werkzeug-3.1.3.tar.gz", hash = "sha256:60723ce945c19328679790e3282cc758aa4a6040e4bb330f53d30fa546d44746", size = 806925, upload-time = "2024-11-08T15:52:18.093Z" }
1660
+ sdist = { url = "https://files.pythonhosted.org/packages/45/ea/b0f8eeb287f8df9066e56e831c7824ac6bab645dd6c7a8f4b2d767944f9b/werkzeug-3.1.4.tar.gz", hash = "sha256:cd3cd98b1b92dc3b7b3995038826c68097dcb16f9baa63abe35f20eafeb9fe5e", size = 864687, upload-time = "2025-11-29T02:15:22.841Z" }
1643
1661
  wheels = [
1644
- { url = "https://files.pythonhosted.org/packages/52/24/ab44c871b0f07f491e5d2ad12c9bd7358e527510618cb1b803a88e986db1/werkzeug-3.1.3-py3-none-any.whl", hash = "sha256:54b78bf3716d19a65be4fceccc0d1d7b89e608834989dfae50ea87564639213e", size = 224498, upload-time = "2024-11-08T15:52:16.132Z" },
1662
+ { url = "https://files.pythonhosted.org/packages/2f/f9/9e082990c2585c744734f85bec79b5dae5df9c974ffee58fe421652c8e91/werkzeug-3.1.4-py3-none-any.whl", hash = "sha256:2ad50fb9ed09cc3af22c54698351027ace879a0b60a3b5edf5730b2f7d876905", size = 224960, upload-time = "2025-11-29T02:15:21.13Z" },
1645
1663
  ]
1646
1664
 
1647
1665
  [[package]]