awslabs.openapi-mcp-server 0.2.6__tar.gz → 0.2.7__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 (123) hide show
  1. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/PKG-INFO +2 -2
  2. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/awslabs/openapi_mcp_server/__init__.py +1 -1
  3. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/pyproject.toml +2 -2
  4. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/uv.lock +288 -54
  5. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/.coveragerc +0 -0
  6. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/.dockerignore +0 -0
  7. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/.gitignore +0 -0
  8. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/.python-version +0 -0
  9. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/AUTHENTICATION.md +0 -0
  10. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/AWS_BEST_PRACTICES.md +0 -0
  11. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/CHANGELOG.md +0 -0
  12. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/DEPLOYMENT.md +0 -0
  13. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/Dockerfile +0 -0
  14. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/LICENSE +0 -0
  15. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/NOTICE +0 -0
  16. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/OBSERVABILITY.md +0 -0
  17. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/README.md +0 -0
  18. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/awslabs/__init__.py +0 -0
  19. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/awslabs/openapi_mcp_server/api/__init__.py +0 -0
  20. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/awslabs/openapi_mcp_server/api/config.py +0 -0
  21. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/awslabs/openapi_mcp_server/auth/__init__.py +0 -0
  22. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/awslabs/openapi_mcp_server/auth/api_key_auth.py +0 -0
  23. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/awslabs/openapi_mcp_server/auth/auth_cache.py +0 -0
  24. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/awslabs/openapi_mcp_server/auth/auth_errors.py +0 -0
  25. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/awslabs/openapi_mcp_server/auth/auth_factory.py +0 -0
  26. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/awslabs/openapi_mcp_server/auth/auth_protocol.py +0 -0
  27. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/awslabs/openapi_mcp_server/auth/auth_provider.py +0 -0
  28. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/awslabs/openapi_mcp_server/auth/base_auth.py +0 -0
  29. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/awslabs/openapi_mcp_server/auth/basic_auth.py +0 -0
  30. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/awslabs/openapi_mcp_server/auth/bearer_auth.py +0 -0
  31. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/awslabs/openapi_mcp_server/auth/cognito_auth.py +0 -0
  32. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/awslabs/openapi_mcp_server/auth/register.py +0 -0
  33. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/awslabs/openapi_mcp_server/patch/__init__.py +0 -0
  34. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/awslabs/openapi_mcp_server/prompts/__init__.py +0 -0
  35. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/awslabs/openapi_mcp_server/prompts/generators/__init__.py +0 -0
  36. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/awslabs/openapi_mcp_server/prompts/generators/operation_prompts.py +0 -0
  37. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/awslabs/openapi_mcp_server/prompts/generators/workflow_prompts.py +0 -0
  38. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/awslabs/openapi_mcp_server/prompts/models.py +0 -0
  39. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/awslabs/openapi_mcp_server/prompts/prompt_manager.py +0 -0
  40. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/awslabs/openapi_mcp_server/server.py +0 -0
  41. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/awslabs/openapi_mcp_server/utils/__init__.py +0 -0
  42. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/awslabs/openapi_mcp_server/utils/cache_provider.py +0 -0
  43. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/awslabs/openapi_mcp_server/utils/config.py +0 -0
  44. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/awslabs/openapi_mcp_server/utils/error_handler.py +0 -0
  45. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/awslabs/openapi_mcp_server/utils/http_client.py +0 -0
  46. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/awslabs/openapi_mcp_server/utils/metrics_provider.py +0 -0
  47. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/awslabs/openapi_mcp_server/utils/openapi.py +0 -0
  48. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/awslabs/openapi_mcp_server/utils/openapi_validator.py +0 -0
  49. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/docker-healthcheck.sh +0 -0
  50. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/pyrightconfig.json +0 -0
  51. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/README.md +0 -0
  52. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/api/test_config.py +0 -0
  53. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/auth/test_api_key_auth.py +0 -0
  54. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/auth/test_auth_cache.py +0 -0
  55. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/auth/test_auth_errors.py +0 -0
  56. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/auth/test_auth_factory.py +0 -0
  57. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/auth/test_auth_factory_caching.py +0 -0
  58. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/auth/test_auth_factory_coverage.py +0 -0
  59. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/auth/test_auth_protocol.py +0 -0
  60. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/auth/test_auth_protocol_additional.py +0 -0
  61. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/auth/test_auth_protocol_boost.py +0 -0
  62. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/auth/test_auth_protocol_coverage.py +0 -0
  63. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/auth/test_auth_protocol_extended.py +0 -0
  64. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/auth/test_auth_protocol_improved.py +0 -0
  65. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/auth/test_auth_provider_additional.py +0 -0
  66. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/auth/test_base_auth.py +0 -0
  67. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/auth/test_base_auth_coverage.py +0 -0
  68. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/auth/test_basic_auth.py +0 -0
  69. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/auth/test_bearer_auth.py +0 -0
  70. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/auth/test_cognito_auth.py +0 -0
  71. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/auth/test_cognito_auth_additional_coverage.py +0 -0
  72. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/auth/test_cognito_auth_boost_coverage.py +0 -0
  73. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/auth/test_cognito_auth_client_credentials.py +0 -0
  74. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/auth/test_cognito_auth_coverage_boost.py +0 -0
  75. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/auth/test_cognito_auth_exceptions.py +0 -0
  76. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/auth/test_register.py +0 -0
  77. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/auth/test_register_coverage.py +0 -0
  78. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/prompts/standalone/test_operation_prompt.py +0 -0
  79. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/prompts/standalone/test_prompt_arguments.py +0 -0
  80. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/prompts/standalone/test_secure_operation_prompt.py +0 -0
  81. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/prompts/test_mcp_prompt_manager.py +0 -0
  82. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/prompts/test_mcp_prompt_manager_integration.py +0 -0
  83. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/prompts/test_models_dict_method.py +0 -0
  84. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/prompts/test_operation_prompts_extended.py +0 -0
  85. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/prompts/test_prompt_manager_additional.py +0 -0
  86. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/prompts/test_prompt_manager_comprehensive.py +0 -0
  87. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/prompts/test_prompt_manager_coverage.py +0 -0
  88. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/prompts/test_prompt_registration.py +0 -0
  89. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/test_api_name.py +0 -0
  90. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/test_cache_coverage_89.py +0 -0
  91. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/test_client.py +0 -0
  92. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/test_coverage_boost.py +0 -0
  93. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/test_init.py +0 -0
  94. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/test_main.py +0 -0
  95. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/test_main_extended.py +0 -0
  96. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/test_openapi_coverage_89.py +0 -0
  97. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/test_server.py +0 -0
  98. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/test_server_auth_errors.py +0 -0
  99. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/test_server_coverage_boost.py +0 -0
  100. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/test_server_coverage_boost_2.py +0 -0
  101. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/test_server_exception_handling.py +0 -0
  102. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/test_server_extended.py +0 -0
  103. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/test_server_httpx_version.py +0 -0
  104. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/test_server_part1.py +0 -0
  105. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/test_server_route_logging.py +0 -0
  106. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/test_server_signal_handlers.py +0 -0
  107. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/utils/test_cache_provider.py +0 -0
  108. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/utils/test_error_handler.py +0 -0
  109. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/utils/test_error_handler_boost.py +0 -0
  110. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/utils/test_error_handler_extended.py +0 -0
  111. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/utils/test_error_handler_fix.py +0 -0
  112. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/utils/test_http_client.py +0 -0
  113. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/utils/test_http_client_comprehensive.py +0 -0
  114. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/utils/test_http_client_extended.py +0 -0
  115. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/utils/test_http_client_extended2.py +0 -0
  116. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/utils/test_http_client_import_error.py +0 -0
  117. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/utils/test_metrics_provider.py +0 -0
  118. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/utils/test_metrics_provider_decorators.py +0 -0
  119. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/utils/test_metrics_provider_extended2.py +0 -0
  120. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/utils/test_metrics_provider_prometheus.py +0 -0
  121. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/utils/test_openapi.py +0 -0
  122. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/tests/utils/test_openapi_validator.py +0 -0
  123. {awslabs_openapi_mcp_server-0.2.6 → awslabs_openapi_mcp_server-0.2.7}/uv-requirements.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: awslabs.openapi-mcp-server
3
- Version: 0.2.6
3
+ Version: 0.2.7
4
4
  Summary: An AWS Labs Model Context Protocol (MCP) server for OpenAPI
5
5
  Project-URL: Homepage, https://awslabs.github.io/mcp/
6
6
  Project-URL: Documentation, https://awslabs.github.io/mcp/servers/openapi-mcp-server/
@@ -24,7 +24,7 @@ Requires-Python: >=3.10
24
24
  Requires-Dist: bcrypt>=4.3.0
25
25
  Requires-Dist: boto3>=1.39.3
26
26
  Requires-Dist: cachetools>=6.1.0
27
- Requires-Dist: fastmcp>=2.10.2
27
+ Requires-Dist: fastmcp>=2.13.0
28
28
  Requires-Dist: httpx>=0.28.1
29
29
  Requires-Dist: loguru>=0.7.3
30
30
  Requires-Dist: openapi-spec-validator>=0.7.2
@@ -15,7 +15,7 @@
15
15
  OpenAPI MCP Server - A server that dynamically creates MCP tools and resources from OpenAPI specifications.
16
16
  """
17
17
 
18
- __version__ = '0.2.6'
18
+ __version__ = '0.2.7'
19
19
 
20
20
 
21
21
  import inspect
@@ -7,7 +7,7 @@ allow-direct-references = true
7
7
 
8
8
  [project]
9
9
  name = "awslabs.openapi-mcp-server"
10
- version = "0.2.6"
10
+ version = "0.2.7"
11
11
  description = "An AWS Labs Model Context Protocol (MCP) server for OpenAPI"
12
12
  readme = "README.md"
13
13
  requires-python = ">=3.10"
@@ -28,7 +28,7 @@ classifiers = [
28
28
  "Programming Language :: Python :: 3.13",
29
29
  ]
30
30
  dependencies = [
31
- "fastmcp>=2.10.2",
31
+ "fastmcp>=2.13.0",
32
32
  "httpx>=0.28.1",
33
33
  "pydantic>=2.11.7",
34
34
  "typing-extensions>=4.14.1",
@@ -58,7 +58,7 @@ wheels = [
58
58
 
59
59
  [[package]]
60
60
  name = "awslabs-openapi-mcp-server"
61
- version = "0.2.6"
61
+ version = "0.2.7"
62
62
  source = { editable = "." }
63
63
  dependencies = [
64
64
  { name = "bcrypt" },
@@ -110,7 +110,7 @@ requires-dist = [
110
110
  { name = "boto3", specifier = ">=1.39.3" },
111
111
  { name = "cachetools", specifier = ">=6.1.0" },
112
112
  { name = "commitizen", marker = "extra == 'dev'", specifier = ">=4.8.3" },
113
- { name = "fastmcp", specifier = ">=2.10.2" },
113
+ { name = "fastmcp", specifier = ">=2.13.0" },
114
114
  { name = "httpx", specifier = ">=0.28.1" },
115
115
  { name = "loguru", specifier = ">=0.7.3" },
116
116
  { name = "lxml", marker = "extra == 'dev'", specifier = ">=6.0.0" },
@@ -147,6 +147,15 @@ wheels = [
147
147
  { url = "https://files.pythonhosted.org/packages/a0/59/76ab57e3fe74484f48a53f8e337171b4a2349e506eabe136d7e01d059086/backports_asyncio_runner-1.2.0-py3-none-any.whl", hash = "sha256:0da0a936a8aeb554eccb426dc55af3ba63bcdc69fa1a600b5bb305413a4477b5", size = 12313, upload-time = "2025-07-02T02:27:14.263Z" },
148
148
  ]
149
149
 
150
+ [[package]]
151
+ name = "backports-tarfile"
152
+ version = "1.2.0"
153
+ source = { registry = "https://pypi.org/simple" }
154
+ sdist = { url = "https://files.pythonhosted.org/packages/86/72/cd9b395f25e290e633655a100af28cb253e4393396264a98bd5f5951d50f/backports_tarfile-1.2.0.tar.gz", hash = "sha256:d75e02c268746e1b8144c278978b6e98e85de6ad16f8e4b0844a154557eca991", size = 86406, upload-time = "2024-05-28T17:01:54.731Z" }
155
+ wheels = [
156
+ { url = "https://files.pythonhosted.org/packages/b9/fa/123043af240e49752f1c4bd24da5053b6bd00cad78c2be53c0d1e8b975bc/backports.tarfile-1.2.0-py3-none-any.whl", hash = "sha256:77e284d754527b01fb1e6fa8a1afe577858ebe4e9dad8919e34c862cb399bc34", size = 30181, upload-time = "2024-05-28T17:01:53.112Z" },
157
+ ]
158
+
150
159
  [[package]]
151
160
  name = "bcrypt"
152
161
  version = "4.3.0"
@@ -205,6 +214,15 @@ wheels = [
205
214
  { url = "https://files.pythonhosted.org/packages/63/13/47bba97924ebe86a62ef83dc75b7c8a881d53c535f83e2c54c4bd701e05c/bcrypt-4.3.0-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:57967b7a28d855313a963aaea51bf6df89f833db4320da458e5b3c5ab6d4c938", size = 280110, upload-time = "2025-02-28T01:24:05.896Z" },
206
215
  ]
207
216
 
217
+ [[package]]
218
+ name = "beartype"
219
+ version = "0.22.6"
220
+ source = { registry = "https://pypi.org/simple" }
221
+ sdist = { url = "https://files.pythonhosted.org/packages/88/e2/105ceb1704cb80fe4ab3872529ab7b6f365cf7c74f725e6132d0efcf1560/beartype-0.22.6.tar.gz", hash = "sha256:97fbda69c20b48c5780ac2ca60ce3c1bb9af29b3a1a0216898ffabdd523e48f4", size = 1588975, upload-time = "2025-11-20T04:47:14.736Z" }
222
+ wheels = [
223
+ { url = "https://files.pythonhosted.org/packages/98/c9/ceecc71fe2c9495a1d8e08d44f5f31f5bca1350d5b2e27a4b6265424f59e/beartype-0.22.6-py3-none-any.whl", hash = "sha256:0584bc46a2ea2a871509679278cda992eadde676c01356ab0ac77421f3c9a093", size = 1324807, upload-time = "2025-11-20T04:47:11.837Z" },
224
+ ]
225
+
208
226
  [[package]]
209
227
  name = "boto3"
210
228
  version = "1.40.49"
@@ -628,18 +646,19 @@ wheels = [
628
646
 
629
647
  [[package]]
630
648
  name = "cyclopts"
631
- version = "3.24.0"
649
+ version = "4.2.5"
632
650
  source = { registry = "https://pypi.org/simple" }
633
651
  dependencies = [
634
652
  { name = "attrs" },
635
- { name = "docstring-parser", marker = "python_full_version < '4'" },
653
+ { name = "docstring-parser" },
636
654
  { name = "rich" },
637
655
  { name = "rich-rst" },
656
+ { name = "tomli", marker = "python_full_version < '3.11'" },
638
657
  { name = "typing-extensions", marker = "python_full_version < '3.11'" },
639
658
  ]
640
- sdist = { url = "https://files.pythonhosted.org/packages/30/ca/7782da3b03242d5f0a16c20371dff99d4bd1fedafe26bc48ff82e42be8c9/cyclopts-3.24.0.tar.gz", hash = "sha256:de6964a041dfb3c57bf043b41e68c43548227a17de1bad246e3a0bfc5c4b7417", size = 76131, upload-time = "2025-09-08T15:40:57.75Z" }
659
+ sdist = { url = "https://files.pythonhosted.org/packages/94/f0/5a83ac365800969552a7eb261b03860dea38647fb6cc31574bdbcdc9f0f5/cyclopts-4.2.5.tar.gz", hash = "sha256:91aff5da5b8b841ccb32b5142c2d12fd93678fbc9eba7ef7319452323e24d6d4", size = 149497, upload-time = "2025-11-22T02:33:37.526Z" }
641
660
  wheels = [
642
- { url = "https://files.pythonhosted.org/packages/f0/8b/2c95f0645c6f40211896375e6fa51f504b8ccb29c21f6ae661fe87ab044e/cyclopts-3.24.0-py3-none-any.whl", hash = "sha256:809d04cde9108617106091140c3964ee6fceb33cecdd537f7ffa360bde13ed71", size = 86154, upload-time = "2025-09-08T15:40:56.41Z" },
661
+ { url = "https://files.pythonhosted.org/packages/b6/00/a9b81bdba88e2904602e970e46ffd18b6a833d902f18d91bdce6fc271c49/cyclopts-4.2.5-py3-none-any.whl", hash = "sha256:361be316ce7f6ce674cad8d34bf6c5e39c34daaeceae40632a55b599472975c7", size = 185196, upload-time = "2025-11-22T02:33:36.103Z" },
643
662
  ]
644
663
 
645
664
  [[package]]
@@ -663,6 +682,15 @@ wheels = [
663
682
  { url = "https://files.pythonhosted.org/packages/6e/c6/ac0b6c1e2d138f1002bcf799d330bd6d85084fece321e662a14223794041/Deprecated-1.2.18-py2.py3-none-any.whl", hash = "sha256:bd5011788200372a32418f888e326a09ff80d0214bd961147cfed01b5c018eec", size = 9998, upload-time = "2025-01-27T10:46:09.186Z" },
664
683
  ]
665
684
 
685
+ [[package]]
686
+ name = "diskcache"
687
+ version = "5.6.3"
688
+ source = { registry = "https://pypi.org/simple" }
689
+ sdist = { url = "https://files.pythonhosted.org/packages/3f/21/1c1ffc1a039ddcc459db43cc108658f32c57d271d7289a2794e401d0fdb6/diskcache-5.6.3.tar.gz", hash = "sha256:2c3a3fa2743d8535d832ec61c2054a1641f41775aa7c556758a109941e33e4fc", size = 67916, upload-time = "2023-08-31T06:12:00.316Z" }
690
+ wheels = [
691
+ { url = "https://files.pythonhosted.org/packages/3f/27/4570e78fc0bf5ea0ca45eb1de3818a23787af9b390c0b0a0033a1b8236f9/diskcache-5.6.3-py3-none-any.whl", hash = "sha256:5e31b2d5fbad117cc363ebaf6b689474db18a1f6438bc82358b024abd4c2ca19", size = 45550, upload-time = "2023-08-31T06:11:58.822Z" },
692
+ ]
693
+
666
694
  [[package]]
667
695
  name = "distlib"
668
696
  version = "0.3.9"
@@ -723,24 +751,28 @@ wheels = [
723
751
 
724
752
  [[package]]
725
753
  name = "fastmcp"
726
- version = "2.11.2"
754
+ version = "2.13.1"
727
755
  source = { registry = "https://pypi.org/simple" }
728
756
  dependencies = [
729
757
  { name = "authlib" },
730
758
  { name = "cyclopts" },
731
759
  { name = "exceptiongroup" },
732
760
  { name = "httpx" },
761
+ { name = "jsonschema-path" },
733
762
  { name = "mcp" },
734
- { name = "openapi-core" },
735
763
  { name = "openapi-pydantic" },
764
+ { name = "platformdirs" },
765
+ { name = "py-key-value-aio", extra = ["disk", "keyring", "memory"] },
736
766
  { name = "pydantic", extra = ["email"] },
737
767
  { name = "pyperclip" },
738
768
  { name = "python-dotenv" },
739
769
  { name = "rich" },
770
+ { name = "uvicorn" },
771
+ { name = "websockets" },
740
772
  ]
741
- sdist = { url = "https://files.pythonhosted.org/packages/7d/44/9957bf4373be797fa596a8a08c0e0c2ea255c0a02002aff06c29216484b6/fastmcp-2.11.2.tar.gz", hash = "sha256:bb958010faf987ff158a75ee9950bb6ea4e7b01940dd9ec0e9f0f6a419c4f6b8", size = 2675200, upload-time = "2025-08-06T17:19:39.744Z" }
773
+ sdist = { url = "https://files.pythonhosted.org/packages/d4/a3/c9eb28b5f0b979b0dd8aa9ba56e69298cdb2d72c15592165d042ccb20194/fastmcp-2.13.1.tar.gz", hash = "sha256:b9c664c51f1ff47c698225e7304267ae29a51913f681bd49e442b8682f9a5f90", size = 8170226, upload-time = "2025-11-15T19:02:17.693Z" }
742
774
  wheels = [
743
- { url = "https://files.pythonhosted.org/packages/3d/78/bf9ea9311e5bb0e64d2d480136ec29b22d43620eafcec756e9fa78a7ddd1/fastmcp-2.11.2-py3-none-any.whl", hash = "sha256:3e358f65e41f5f85b8fb0303131cc1c8b122f43a7aff9b47b74157e615fe5484", size = 257133, upload-time = "2025-08-06T17:19:38.228Z" },
775
+ { url = "https://files.pythonhosted.org/packages/9b/4b/7e36db0a90044be181319ff025be7cc57089ddb6ba8f3712dea543b9cf97/fastmcp-2.13.1-py3-none-any.whl", hash = "sha256:7a78b19785c4ec04a758d920c312769a497e3f6ab4c80feed504df1ed7de9f3c", size = 376750, upload-time = "2025-11-15T19:02:15.748Z" },
744
776
  ]
745
777
 
746
778
  [[package]]
@@ -816,6 +848,18 @@ wheels = [
816
848
  { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442, upload-time = "2024-09-15T18:07:37.964Z" },
817
849
  ]
818
850
 
851
+ [[package]]
852
+ name = "importlib-metadata"
853
+ version = "8.7.0"
854
+ source = { registry = "https://pypi.org/simple" }
855
+ dependencies = [
856
+ { name = "zipp" },
857
+ ]
858
+ sdist = { url = "https://files.pythonhosted.org/packages/76/66/650a33bd90f786193e4de4b3ad86ea60b53c89b669a5c7be931fac31cdb0/importlib_metadata-8.7.0.tar.gz", hash = "sha256:d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000", size = 56641, upload-time = "2025-04-27T15:29:01.736Z" }
859
+ wheels = [
860
+ { url = "https://files.pythonhosted.org/packages/20/b0/36bd937216ec521246249be3bf9855081de4c5e06a0c9b4219dbeda50373/importlib_metadata-8.7.0-py3-none-any.whl", hash = "sha256:e5dd1551894c77868a30651cef00984d50e1002d06942a7101d34870c5f02afd", size = 27656, upload-time = "2025-04-27T15:29:00.214Z" },
861
+ ]
862
+
819
863
  [[package]]
820
864
  name = "iniconfig"
821
865
  version = "2.1.0"
@@ -826,12 +870,48 @@ wheels = [
826
870
  ]
827
871
 
828
872
  [[package]]
829
- name = "isodate"
830
- version = "0.7.2"
873
+ name = "jaraco-classes"
874
+ version = "3.4.0"
831
875
  source = { registry = "https://pypi.org/simple" }
832
- sdist = { url = "https://files.pythonhosted.org/packages/54/4d/e940025e2ce31a8ce1202635910747e5a87cc3a6a6bb2d00973375014749/isodate-0.7.2.tar.gz", hash = "sha256:4cd1aa0f43ca76f4a6c6c0292a85f40b35ec2e43e315b59f06e6d32171a953e6", size = 29705, upload-time = "2024-10-08T23:04:11.5Z" }
876
+ dependencies = [
877
+ { name = "more-itertools" },
878
+ ]
879
+ sdist = { url = "https://files.pythonhosted.org/packages/06/c0/ed4a27bc5571b99e3cff68f8a9fa5b56ff7df1c2251cc715a652ddd26402/jaraco.classes-3.4.0.tar.gz", hash = "sha256:47a024b51d0239c0dd8c8540c6c7f484be3b8fcf0b2d85c13825780d3b3f3acd", size = 11780, upload-time = "2024-03-31T07:27:36.643Z" }
833
880
  wheels = [
834
- { url = "https://files.pythonhosted.org/packages/15/aa/0aca39a37d3c7eb941ba736ede56d689e7be91cab5d9ca846bde3999eba6/isodate-0.7.2-py3-none-any.whl", hash = "sha256:28009937d8031054830160fce6d409ed342816b543597cece116d966c6d99e15", size = 22320, upload-time = "2024-10-08T23:04:09.501Z" },
881
+ { url = "https://files.pythonhosted.org/packages/7f/66/b15ce62552d84bbfcec9a4873ab79d993a1dd4edb922cbfccae192bd5b5f/jaraco.classes-3.4.0-py3-none-any.whl", hash = "sha256:f662826b6bed8cace05e7ff873ce0f9283b5c924470fe664fff1c2f00f581790", size = 6777, upload-time = "2024-03-31T07:27:34.792Z" },
882
+ ]
883
+
884
+ [[package]]
885
+ name = "jaraco-context"
886
+ version = "6.0.1"
887
+ source = { registry = "https://pypi.org/simple" }
888
+ dependencies = [
889
+ { name = "backports-tarfile", marker = "python_full_version < '3.12'" },
890
+ ]
891
+ sdist = { url = "https://files.pythonhosted.org/packages/df/ad/f3777b81bf0b6e7bc7514a1656d3e637b2e8e15fab2ce3235730b3e7a4e6/jaraco_context-6.0.1.tar.gz", hash = "sha256:9bae4ea555cf0b14938dc0aee7c9f32ed303aa20a3b73e7dc80111628792d1b3", size = 13912, upload-time = "2024-08-20T03:39:27.358Z" }
892
+ wheels = [
893
+ { url = "https://files.pythonhosted.org/packages/ff/db/0c52c4cf5e4bd9f5d7135ec7669a3a767af21b3a308e1ed3674881e52b62/jaraco.context-6.0.1-py3-none-any.whl", hash = "sha256:f797fc481b490edb305122c9181830a3a5b76d84ef6d1aef2fb9b47ab956f9e4", size = 6825, upload-time = "2024-08-20T03:39:25.966Z" },
894
+ ]
895
+
896
+ [[package]]
897
+ name = "jaraco-functools"
898
+ version = "4.3.0"
899
+ source = { registry = "https://pypi.org/simple" }
900
+ dependencies = [
901
+ { name = "more-itertools" },
902
+ ]
903
+ sdist = { url = "https://files.pythonhosted.org/packages/f7/ed/1aa2d585304ec07262e1a83a9889880701079dde796ac7b1d1826f40c63d/jaraco_functools-4.3.0.tar.gz", hash = "sha256:cfd13ad0dd2c47a3600b439ef72d8615d482cedcff1632930d6f28924d92f294", size = 19755, upload-time = "2025-08-18T20:05:09.91Z" }
904
+ wheels = [
905
+ { url = "https://files.pythonhosted.org/packages/b4/09/726f168acad366b11e420df31bf1c702a54d373a83f968d94141a8c3fde0/jaraco_functools-4.3.0-py3-none-any.whl", hash = "sha256:227ff8ed6f7b8f62c56deff101545fa7543cf2c8e7b82a7c2116e672f29c26e8", size = 10408, upload-time = "2025-08-18T20:05:08.69Z" },
906
+ ]
907
+
908
+ [[package]]
909
+ name = "jeepney"
910
+ version = "0.9.0"
911
+ source = { registry = "https://pypi.org/simple" }
912
+ sdist = { url = "https://files.pythonhosted.org/packages/7b/6f/357efd7602486741aa73ffc0617fb310a29b588ed0fd69c2399acbb85b0c/jeepney-0.9.0.tar.gz", hash = "sha256:cf0e9e845622b81e4a28df94c40345400256ec608d0e55bb8a3feaa9163f5732", size = 106758, upload-time = "2025-02-27T18:51:01.684Z" }
913
+ wheels = [
914
+ { url = "https://files.pythonhosted.org/packages/b2/a3/e137168c9c44d18eff0376253da9f1e9234d0239e0ee230d2fee6cea8e55/jeepney-0.9.0-py3-none-any.whl", hash = "sha256:97e5714520c16fc0a45695e5365a2e11b81ea79bba796e26f9f1d178cb182683", size = 49010, upload-time = "2025-02-27T18:51:00.104Z" },
835
915
  ]
836
916
 
837
917
  [[package]]
@@ -897,6 +977,24 @@ wheels = [
897
977
  { url = "https://files.pythonhosted.org/packages/01/0e/b27cdbaccf30b890c40ed1da9fd4a3593a5cf94dae54fb34f8a4b74fcd3f/jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af", size = 18437, upload-time = "2025-04-23T12:34:05.422Z" },
898
978
  ]
899
979
 
980
+ [[package]]
981
+ name = "keyring"
982
+ version = "25.7.0"
983
+ source = { registry = "https://pypi.org/simple" }
984
+ dependencies = [
985
+ { name = "importlib-metadata", marker = "python_full_version < '3.12'" },
986
+ { name = "jaraco-classes" },
987
+ { name = "jaraco-context" },
988
+ { name = "jaraco-functools" },
989
+ { name = "jeepney", marker = "sys_platform == 'linux'" },
990
+ { name = "pywin32-ctypes", marker = "sys_platform == 'win32'" },
991
+ { name = "secretstorage", marker = "sys_platform == 'linux'" },
992
+ ]
993
+ sdist = { url = "https://files.pythonhosted.org/packages/43/4b/674af6ef2f97d56f0ab5153bf0bfa28ccb6c3ed4d1babf4305449668807b/keyring-25.7.0.tar.gz", hash = "sha256:fe01bd85eb3f8fb3dd0405defdeac9a5b4f6f0439edbb3149577f244a2e8245b", size = 63516, upload-time = "2025-11-16T16:26:09.482Z" }
994
+ wheels = [
995
+ { url = "https://files.pythonhosted.org/packages/81/db/e655086b7f3a705df045bf0933bdd9c2f79bb3c97bfef1384598bb79a217/keyring-25.7.0-py3-none-any.whl", hash = "sha256:be4a0b195f149690c166e850609a477c532ddbfbaed96a404d4e43f8d5e2689f", size = 39160, upload-time = "2025-11-16T16:26:08.402Z" },
996
+ ]
997
+
900
998
  [[package]]
901
999
  name = "lazy-object-proxy"
902
1000
  version = "1.11.0"
@@ -1125,7 +1223,7 @@ wheels = [
1125
1223
 
1126
1224
  [[package]]
1127
1225
  name = "mcp"
1128
- version = "1.10.0"
1226
+ version = "1.22.0"
1129
1227
  source = { registry = "https://pypi.org/simple" }
1130
1228
  dependencies = [
1131
1229
  { name = "anyio" },
@@ -1134,14 +1232,18 @@ dependencies = [
1134
1232
  { name = "jsonschema" },
1135
1233
  { name = "pydantic" },
1136
1234
  { name = "pydantic-settings" },
1235
+ { name = "pyjwt", extra = ["crypto"] },
1137
1236
  { name = "python-multipart" },
1237
+ { name = "pywin32", marker = "sys_platform == 'win32'" },
1138
1238
  { name = "sse-starlette" },
1139
1239
  { name = "starlette" },
1240
+ { name = "typing-extensions" },
1241
+ { name = "typing-inspection" },
1140
1242
  { name = "uvicorn", marker = "sys_platform != 'emscripten'" },
1141
1243
  ]
1142
- sdist = { url = "https://files.pythonhosted.org/packages/c8/1a/d90e42be23a7e6dd35c03e35c7c63fe1036f082d3bb88114b66bd0f2467e/mcp-1.10.0.tar.gz", hash = "sha256:91fb1623c3faf14577623d14755d3213db837c5da5dae85069e1b59124cbe0e9", size = 392961, upload-time = "2025-06-26T13:51:19.025Z" }
1244
+ sdist = { url = "https://files.pythonhosted.org/packages/a3/a2/c5ec0ab38b35ade2ae49a90fada718fbc76811dc5aa1760414c6aaa6b08a/mcp-1.22.0.tar.gz", hash = "sha256:769b9ac90ed42134375b19e777a2858ca300f95f2e800982b3e2be62dfc0ba01", size = 471788, upload-time = "2025-11-20T20:11:28.095Z" }
1143
1245
  wheels = [
1144
- { url = "https://files.pythonhosted.org/packages/0f/52/e1c43c4b5153465fd5d3b4b41bf2d4c7731475e9f668f38d68f848c25c9a/mcp-1.10.0-py3-none-any.whl", hash = "sha256:925c45482d75b1b6f11febddf9736d55edf7739c7ea39b583309f6651cbc9e5c", size = 150894, upload-time = "2025-06-26T13:51:17.342Z" },
1246
+ { url = "https://files.pythonhosted.org/packages/a9/bb/711099f9c6bb52770f56e56401cdfb10da5b67029f701e0df29362df4c8e/mcp-1.22.0-py3-none-any.whl", hash = "sha256:bed758e24df1ed6846989c909ba4e3df339a27b4f30f1b8b627862a4bade4e98", size = 175489, upload-time = "2025-11-20T20:11:26.542Z" },
1145
1247
  ]
1146
1248
 
1147
1249
  [[package]]
@@ -1171,26 +1273,6 @@ wheels = [
1171
1273
  { url = "https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9", size = 22314, upload-time = "2024-06-04T18:44:08.352Z" },
1172
1274
  ]
1173
1275
 
1174
- [[package]]
1175
- name = "openapi-core"
1176
- version = "0.19.5"
1177
- source = { registry = "https://pypi.org/simple" }
1178
- dependencies = [
1179
- { name = "isodate" },
1180
- { name = "jsonschema" },
1181
- { name = "jsonschema-path" },
1182
- { name = "more-itertools" },
1183
- { name = "openapi-schema-validator" },
1184
- { name = "openapi-spec-validator" },
1185
- { name = "parse" },
1186
- { name = "typing-extensions" },
1187
- { name = "werkzeug" },
1188
- ]
1189
- sdist = { url = "https://files.pythonhosted.org/packages/b1/35/1acaa5f2fcc6e54eded34a2ec74b479439c4e469fc4e8d0e803fda0234db/openapi_core-0.19.5.tar.gz", hash = "sha256:421e753da56c391704454e66afe4803a290108590ac8fa6f4a4487f4ec11f2d3", size = 103264, upload-time = "2025-03-20T20:17:28.193Z" }
1190
- wheels = [
1191
- { url = "https://files.pythonhosted.org/packages/27/6f/83ead0e2e30a90445ee4fc0135f43741aebc30cca5b43f20968b603e30b6/openapi_core-0.19.5-py3-none-any.whl", hash = "sha256:ef7210e83a59394f46ce282639d8d26ad6fc8094aa904c9c16eb1bac8908911f", size = 106595, upload-time = "2025-03-20T20:17:26.77Z" },
1192
- ]
1193
-
1194
1276
  [[package]]
1195
1277
  name = "openapi-pydantic"
1196
1278
  version = "0.5.1"
@@ -1242,21 +1324,21 @@ wheels = [
1242
1324
  ]
1243
1325
 
1244
1326
  [[package]]
1245
- name = "parse"
1246
- version = "1.20.2"
1327
+ name = "pathable"
1328
+ version = "0.4.4"
1247
1329
  source = { registry = "https://pypi.org/simple" }
1248
- sdist = { url = "https://files.pythonhosted.org/packages/4f/78/d9b09ba24bb36ef8b83b71be547e118d46214735b6dfb39e4bfde0e9b9dd/parse-1.20.2.tar.gz", hash = "sha256:b41d604d16503c79d81af5165155c0b20f6c8d6c559efa66b4b695c3e5a0a0ce", size = 29391, upload-time = "2024-06-11T04:41:57.34Z" }
1330
+ sdist = { url = "https://files.pythonhosted.org/packages/67/93/8f2c2075b180c12c1e9f6a09d1a985bc2036906b13dff1d8917e395f2048/pathable-0.4.4.tar.gz", hash = "sha256:6905a3cd17804edfac7875b5f6c9142a218c7caef78693c2dbbbfbac186d88b2", size = 8124, upload-time = "2025-01-10T18:43:13.247Z" }
1249
1331
  wheels = [
1250
- { url = "https://files.pythonhosted.org/packages/d0/31/ba45bf0b2aa7898d81cbbfac0e88c267befb59ad91a19e36e1bc5578ddb1/parse-1.20.2-py2.py3-none-any.whl", hash = "sha256:967095588cb802add9177d0c0b6133b5ba33b1ea9007ca800e526f42a85af558", size = 20126, upload-time = "2024-06-11T04:41:55.057Z" },
1332
+ { url = "https://files.pythonhosted.org/packages/7d/eb/b6260b31b1a96386c0a880edebe26f89669098acea8e0318bff6adb378fd/pathable-0.4.4-py3-none-any.whl", hash = "sha256:5ae9e94793b6ef5a4cbe0a7ce9dbbefc1eec38df253763fd0aeeacf2762dbbc2", size = 9592, upload-time = "2025-01-10T18:43:11.88Z" },
1251
1333
  ]
1252
1334
 
1253
1335
  [[package]]
1254
- name = "pathable"
1255
- version = "0.4.4"
1336
+ name = "pathvalidate"
1337
+ version = "3.3.1"
1256
1338
  source = { registry = "https://pypi.org/simple" }
1257
- sdist = { url = "https://files.pythonhosted.org/packages/67/93/8f2c2075b180c12c1e9f6a09d1a985bc2036906b13dff1d8917e395f2048/pathable-0.4.4.tar.gz", hash = "sha256:6905a3cd17804edfac7875b5f6c9142a218c7caef78693c2dbbbfbac186d88b2", size = 8124, upload-time = "2025-01-10T18:43:13.247Z" }
1339
+ sdist = { url = "https://files.pythonhosted.org/packages/fa/2a/52a8da6fe965dea6192eb716b357558e103aea0a1e9a8352ad575a8406ca/pathvalidate-3.3.1.tar.gz", hash = "sha256:b18c07212bfead624345bb8e1d6141cdcf15a39736994ea0b94035ad2b1ba177", size = 63262, upload-time = "2025-06-15T09:07:20.736Z" }
1258
1340
  wheels = [
1259
- { url = "https://files.pythonhosted.org/packages/7d/eb/b6260b31b1a96386c0a880edebe26f89669098acea8e0318bff6adb378fd/pathable-0.4.4-py3-none-any.whl", hash = "sha256:5ae9e94793b6ef5a4cbe0a7ce9dbbefc1eec38df253763fd0aeeacf2762dbbc2", size = 9592, upload-time = "2025-01-10T18:43:11.88Z" },
1341
+ { url = "https://files.pythonhosted.org/packages/9a/70/875f4a23bfc4731703a5835487d0d2fb999031bd415e7d17c0ae615c18b7/pathvalidate-3.3.1-py3-none-any.whl", hash = "sha256:5263baab691f8e1af96092fa5137ee17df5bdfbd6cff1fcac4d6ef4bc2e1735f", size = 24305, upload-time = "2025-06-15T09:07:19.117Z" },
1260
1342
  ]
1261
1343
 
1262
1344
  [[package]]
@@ -1329,6 +1411,44 @@ wheels = [
1329
1411
  { url = "https://files.pythonhosted.org/packages/ce/4f/5249960887b1fbe561d9ff265496d170b55a735b76724f10ef19f9e40716/prompt_toolkit-3.0.51-py3-none-any.whl", hash = "sha256:52742911fde84e2d423e2f9a4cf1de7d7ac4e51958f648d9540e0fb8db077b07", size = 387810, upload-time = "2025-04-15T09:18:44.753Z" },
1330
1412
  ]
1331
1413
 
1414
+ [[package]]
1415
+ name = "py-key-value-aio"
1416
+ version = "0.2.8"
1417
+ source = { registry = "https://pypi.org/simple" }
1418
+ dependencies = [
1419
+ { name = "beartype" },
1420
+ { name = "py-key-value-shared" },
1421
+ ]
1422
+ sdist = { url = "https://files.pythonhosted.org/packages/ca/35/65310a4818acec0f87a46e5565e341c5a96fc062a9a03495ad28828ff4d7/py_key_value_aio-0.2.8.tar.gz", hash = "sha256:c0cfbb0bd4e962a3fa1a9fa6db9ba9df812899bd9312fa6368aaea7b26008b36", size = 32853, upload-time = "2025-10-24T13:31:04.688Z" }
1423
+ wheels = [
1424
+ { url = "https://files.pythonhosted.org/packages/cd/5a/e56747d87a97ad2aff0f3700d77f186f0704c90c2da03bfed9e113dae284/py_key_value_aio-0.2.8-py3-none-any.whl", hash = "sha256:561565547ce8162128fd2bd0b9d70ce04a5f4586da8500cce79a54dfac78c46a", size = 69200, upload-time = "2025-10-24T13:31:03.81Z" },
1425
+ ]
1426
+
1427
+ [package.optional-dependencies]
1428
+ disk = [
1429
+ { name = "diskcache" },
1430
+ { name = "pathvalidate" },
1431
+ ]
1432
+ keyring = [
1433
+ { name = "keyring" },
1434
+ ]
1435
+ memory = [
1436
+ { name = "cachetools" },
1437
+ ]
1438
+
1439
+ [[package]]
1440
+ name = "py-key-value-shared"
1441
+ version = "0.2.8"
1442
+ source = { registry = "https://pypi.org/simple" }
1443
+ dependencies = [
1444
+ { name = "beartype" },
1445
+ { name = "typing-extensions" },
1446
+ ]
1447
+ sdist = { url = "https://files.pythonhosted.org/packages/26/79/05a1f9280cfa0709479319cbfd2b1c5beb23d5034624f548c83fb65b0b61/py_key_value_shared-0.2.8.tar.gz", hash = "sha256:703b4d3c61af124f0d528ba85995c3c8d78f8bd3d2b217377bd3278598070cc1", size = 8216, upload-time = "2025-10-24T13:31:03.601Z" }
1448
+ wheels = [
1449
+ { url = "https://files.pythonhosted.org/packages/84/7a/1726ceaa3343874f322dd83c9ec376ad81f533df8422b8b1e1233a59f8ce/py_key_value_shared-0.2.8-py3-none-any.whl", hash = "sha256:aff1bbfd46d065b2d67897d298642e80e5349eae588c6d11b48452b46b8d46ba", size = 14586, upload-time = "2025-10-24T13:31:02.838Z" },
1450
+ ]
1451
+
1332
1452
  [[package]]
1333
1453
  name = "pycparser"
1334
1454
  version = "2.23"
@@ -1491,6 +1611,20 @@ wheels = [
1491
1611
  { 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" },
1492
1612
  ]
1493
1613
 
1614
+ [[package]]
1615
+ name = "pyjwt"
1616
+ version = "2.10.1"
1617
+ source = { registry = "https://pypi.org/simple" }
1618
+ 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" }
1619
+ wheels = [
1620
+ { 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" },
1621
+ ]
1622
+
1623
+ [package.optional-dependencies]
1624
+ crypto = [
1625
+ { name = "cryptography" },
1626
+ ]
1627
+
1494
1628
  [[package]]
1495
1629
  name = "pyperclip"
1496
1630
  version = "1.11.0"
@@ -1601,6 +1735,37 @@ wheels = [
1601
1735
  { url = "https://files.pythonhosted.org/packages/45/58/38b5afbc1a800eeea951b9285d3912613f2603bdf897a4ab0f4bd7f405fc/python_multipart-0.0.20-py3-none-any.whl", hash = "sha256:8a62d3a8335e06589fe01f2a3e178cdcc632f3fbe0d492ad9ee0ec35aab1f104", size = 24546, upload-time = "2024-12-16T19:45:44.423Z" },
1602
1736
  ]
1603
1737
 
1738
+ [[package]]
1739
+ name = "pywin32"
1740
+ version = "311"
1741
+ source = { registry = "https://pypi.org/simple" }
1742
+ wheels = [
1743
+ { url = "https://files.pythonhosted.org/packages/7b/40/44efbb0dfbd33aca6a6483191dae0716070ed99e2ecb0c53683f400a0b4f/pywin32-311-cp310-cp310-win32.whl", hash = "sha256:d03ff496d2a0cd4a5893504789d4a15399133fe82517455e78bad62efbb7f0a3", size = 8760432, upload-time = "2025-07-14T20:13:05.9Z" },
1744
+ { url = "https://files.pythonhosted.org/packages/5e/bf/360243b1e953bd254a82f12653974be395ba880e7ec23e3731d9f73921cc/pywin32-311-cp310-cp310-win_amd64.whl", hash = "sha256:797c2772017851984b97180b0bebe4b620bb86328e8a884bb626156295a63b3b", size = 9590103, upload-time = "2025-07-14T20:13:07.698Z" },
1745
+ { url = "https://files.pythonhosted.org/packages/57/38/d290720e6f138086fb3d5ffe0b6caa019a791dd57866940c82e4eeaf2012/pywin32-311-cp310-cp310-win_arm64.whl", hash = "sha256:0502d1facf1fed4839a9a51ccbcc63d952cf318f78ffc00a7e78528ac27d7a2b", size = 8778557, upload-time = "2025-07-14T20:13:11.11Z" },
1746
+ { url = "https://files.pythonhosted.org/packages/7c/af/449a6a91e5d6db51420875c54f6aff7c97a86a3b13a0b4f1a5c13b988de3/pywin32-311-cp311-cp311-win32.whl", hash = "sha256:184eb5e436dea364dcd3d2316d577d625c0351bf237c4e9a5fabbcfa5a58b151", size = 8697031, upload-time = "2025-07-14T20:13:13.266Z" },
1747
+ { url = "https://files.pythonhosted.org/packages/51/8f/9bb81dd5bb77d22243d33c8397f09377056d5c687aa6d4042bea7fbf8364/pywin32-311-cp311-cp311-win_amd64.whl", hash = "sha256:3ce80b34b22b17ccbd937a6e78e7225d80c52f5ab9940fe0506a1a16f3dab503", size = 9508308, upload-time = "2025-07-14T20:13:15.147Z" },
1748
+ { url = "https://files.pythonhosted.org/packages/44/7b/9c2ab54f74a138c491aba1b1cd0795ba61f144c711daea84a88b63dc0f6c/pywin32-311-cp311-cp311-win_arm64.whl", hash = "sha256:a733f1388e1a842abb67ffa8e7aad0e70ac519e09b0f6a784e65a136ec7cefd2", size = 8703930, upload-time = "2025-07-14T20:13:16.945Z" },
1749
+ { url = "https://files.pythonhosted.org/packages/e7/ab/01ea1943d4eba0f850c3c61e78e8dd59757ff815ff3ccd0a84de5f541f42/pywin32-311-cp312-cp312-win32.whl", hash = "sha256:750ec6e621af2b948540032557b10a2d43b0cee2ae9758c54154d711cc852d31", size = 8706543, upload-time = "2025-07-14T20:13:20.765Z" },
1750
+ { url = "https://files.pythonhosted.org/packages/d1/a8/a0e8d07d4d051ec7502cd58b291ec98dcc0c3fff027caad0470b72cfcc2f/pywin32-311-cp312-cp312-win_amd64.whl", hash = "sha256:b8c095edad5c211ff31c05223658e71bf7116daa0ecf3ad85f3201ea3190d067", size = 9495040, upload-time = "2025-07-14T20:13:22.543Z" },
1751
+ { url = "https://files.pythonhosted.org/packages/ba/3a/2ae996277b4b50f17d61f0603efd8253cb2d79cc7ae159468007b586396d/pywin32-311-cp312-cp312-win_arm64.whl", hash = "sha256:e286f46a9a39c4a18b319c28f59b61de793654af2f395c102b4f819e584b5852", size = 8710102, upload-time = "2025-07-14T20:13:24.682Z" },
1752
+ { url = "https://files.pythonhosted.org/packages/a5/be/3fd5de0979fcb3994bfee0d65ed8ca9506a8a1260651b86174f6a86f52b3/pywin32-311-cp313-cp313-win32.whl", hash = "sha256:f95ba5a847cba10dd8c4d8fefa9f2a6cf283b8b88ed6178fa8a6c1ab16054d0d", size = 8705700, upload-time = "2025-07-14T20:13:26.471Z" },
1753
+ { url = "https://files.pythonhosted.org/packages/e3/28/e0a1909523c6890208295a29e05c2adb2126364e289826c0a8bc7297bd5c/pywin32-311-cp313-cp313-win_amd64.whl", hash = "sha256:718a38f7e5b058e76aee1c56ddd06908116d35147e133427e59a3983f703a20d", size = 9494700, upload-time = "2025-07-14T20:13:28.243Z" },
1754
+ { url = "https://files.pythonhosted.org/packages/04/bf/90339ac0f55726dce7d794e6d79a18a91265bdf3aa70b6b9ca52f35e022a/pywin32-311-cp313-cp313-win_arm64.whl", hash = "sha256:7b4075d959648406202d92a2310cb990fea19b535c7f4a78d3f5e10b926eeb8a", size = 8709318, upload-time = "2025-07-14T20:13:30.348Z" },
1755
+ { url = "https://files.pythonhosted.org/packages/c9/31/097f2e132c4f16d99a22bfb777e0fd88bd8e1c634304e102f313af69ace5/pywin32-311-cp314-cp314-win32.whl", hash = "sha256:b7a2c10b93f8986666d0c803ee19b5990885872a7de910fc460f9b0c2fbf92ee", size = 8840714, upload-time = "2025-07-14T20:13:32.449Z" },
1756
+ { url = "https://files.pythonhosted.org/packages/90/4b/07c77d8ba0e01349358082713400435347df8426208171ce297da32c313d/pywin32-311-cp314-cp314-win_amd64.whl", hash = "sha256:3aca44c046bd2ed8c90de9cb8427f581c479e594e99b5c0bb19b29c10fd6cb87", size = 9656800, upload-time = "2025-07-14T20:13:34.312Z" },
1757
+ { url = "https://files.pythonhosted.org/packages/c0/d2/21af5c535501a7233e734b8af901574572da66fcc254cb35d0609c9080dd/pywin32-311-cp314-cp314-win_arm64.whl", hash = "sha256:a508e2d9025764a8270f93111a970e1d0fbfc33f4153b388bb649b7eec4f9b42", size = 8932540, upload-time = "2025-07-14T20:13:36.379Z" },
1758
+ ]
1759
+
1760
+ [[package]]
1761
+ name = "pywin32-ctypes"
1762
+ version = "0.2.3"
1763
+ source = { registry = "https://pypi.org/simple" }
1764
+ sdist = { url = "https://files.pythonhosted.org/packages/85/9f/01a1a99704853cb63f253eea009390c88e7131c67e66a0a02099a8c917cb/pywin32-ctypes-0.2.3.tar.gz", hash = "sha256:d162dc04946d704503b2edc4d55f3dba5c1d539ead017afa00142c38b9885755", size = 29471, upload-time = "2024-08-14T10:15:34.626Z" }
1765
+ wheels = [
1766
+ { url = "https://files.pythonhosted.org/packages/de/3d/8161f7711c017e01ac9f008dfddd9410dff3674334c233bde66e7ba65bbf/pywin32_ctypes-0.2.3-py3-none-any.whl", hash = "sha256:8a1513379d709975552d202d942d9837758905c8d01eb82b8bcc30918929e7b8", size = 30756, upload-time = "2024-08-14T10:15:33.187Z" },
1767
+ ]
1768
+
1604
1769
  [[package]]
1605
1770
  name = "pyyaml"
1606
1771
  version = "6.0.2"
@@ -1918,6 +2083,19 @@ wheels = [
1918
2083
  { url = "https://files.pythonhosted.org/packages/48/f0/ae7ca09223a81a1d890b2557186ea015f6e0502e9b8cb8e1813f1d8cfa4e/s3transfer-0.14.0-py3-none-any.whl", hash = "sha256:ea3b790c7077558ed1f02a3072fb3cb992bbbd253392f4b6e9e8976941c7d456", size = 85712, upload-time = "2025-09-09T19:23:30.041Z" },
1919
2084
  ]
1920
2085
 
2086
+ [[package]]
2087
+ name = "secretstorage"
2088
+ version = "3.5.0"
2089
+ source = { registry = "https://pypi.org/simple" }
2090
+ dependencies = [
2091
+ { name = "cryptography" },
2092
+ { name = "jeepney" },
2093
+ ]
2094
+ sdist = { url = "https://files.pythonhosted.org/packages/1c/03/e834bcd866f2f8a49a85eaff47340affa3bfa391ee9912a952a1faa68c7b/secretstorage-3.5.0.tar.gz", hash = "sha256:f04b8e4689cbce351744d5537bf6b1329c6fc68f91fa666f60a380edddcd11be", size = 19884, upload-time = "2025-11-23T19:02:53.191Z" }
2095
+ wheels = [
2096
+ { url = "https://files.pythonhosted.org/packages/b7/46/f5af3402b579fd5e11573ce652019a67074317e18c1935cc0b4ba9b35552/secretstorage-3.5.0-py3-none-any.whl", hash = "sha256:0ce65888c0725fcb2c5bc0fdb8e5438eece02c523557ea40ce0703c266248137", size = 15554, upload-time = "2025-11-23T19:02:51.545Z" },
2097
+ ]
2098
+
1921
2099
  [[package]]
1922
2100
  name = "six"
1923
2101
  version = "1.17.0"
@@ -2095,15 +2273,62 @@ wheels = [
2095
2273
  ]
2096
2274
 
2097
2275
  [[package]]
2098
- name = "werkzeug"
2099
- version = "3.1.1"
2100
- source = { registry = "https://pypi.org/simple" }
2101
- dependencies = [
2102
- { name = "markupsafe" },
2103
- ]
2104
- sdist = { url = "https://files.pythonhosted.org/packages/32/af/d4502dc713b4ccea7175d764718d5183caf8d0867a4f0190d5d4a45cea49/werkzeug-3.1.1.tar.gz", hash = "sha256:8cd39dfbdfc1e051965f156163e2974e52c210f130810e9ad36858f0fd3edad4", size = 806453, upload-time = "2024-11-01T16:40:45.462Z" }
2105
- wheels = [
2106
- { url = "https://files.pythonhosted.org/packages/ee/ea/c67e1dee1ba208ed22c06d1d547ae5e293374bfc43e0eb0ef5e262b68561/werkzeug-3.1.1-py3-none-any.whl", hash = "sha256:a71124d1ef06008baafa3d266c02f56e1836a5984afd6dd6c9230669d60d9fb5", size = 224371, upload-time = "2024-11-01T16:40:43.994Z" },
2276
+ name = "websockets"
2277
+ version = "15.0.1"
2278
+ source = { registry = "https://pypi.org/simple" }
2279
+ sdist = { url = "https://files.pythonhosted.org/packages/21/e6/26d09fab466b7ca9c7737474c52be4f76a40301b08362eb2dbc19dcc16c1/websockets-15.0.1.tar.gz", hash = "sha256:82544de02076bafba038ce055ee6412d68da13ab47f0c60cab827346de828dee", size = 177016, upload-time = "2025-03-05T20:03:41.606Z" }
2280
+ wheels = [
2281
+ { url = "https://files.pythonhosted.org/packages/1e/da/6462a9f510c0c49837bbc9345aca92d767a56c1fb2939e1579df1e1cdcf7/websockets-15.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d63efaa0cd96cf0c5fe4d581521d9fa87744540d4bc999ae6e08595a1014b45b", size = 175423, upload-time = "2025-03-05T20:01:35.363Z" },
2282
+ { url = "https://files.pythonhosted.org/packages/1c/9f/9d11c1a4eb046a9e106483b9ff69bce7ac880443f00e5ce64261b47b07e7/websockets-15.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ac60e3b188ec7574cb761b08d50fcedf9d77f1530352db4eef1707fe9dee7205", size = 173080, upload-time = "2025-03-05T20:01:37.304Z" },
2283
+ { url = "https://files.pythonhosted.org/packages/d5/4f/b462242432d93ea45f297b6179c7333dd0402b855a912a04e7fc61c0d71f/websockets-15.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5756779642579d902eed757b21b0164cd6fe338506a8083eb58af5c372e39d9a", size = 173329, upload-time = "2025-03-05T20:01:39.668Z" },
2284
+ { url = "https://files.pythonhosted.org/packages/6e/0c/6afa1f4644d7ed50284ac59cc70ef8abd44ccf7d45850d989ea7310538d0/websockets-15.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fdfe3e2a29e4db3659dbd5bbf04560cea53dd9610273917799f1cde46aa725e", size = 182312, upload-time = "2025-03-05T20:01:41.815Z" },
2285
+ { url = "https://files.pythonhosted.org/packages/dd/d4/ffc8bd1350b229ca7a4db2a3e1c482cf87cea1baccd0ef3e72bc720caeec/websockets-15.0.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c2529b320eb9e35af0fa3016c187dffb84a3ecc572bcee7c3ce302bfeba52bf", size = 181319, upload-time = "2025-03-05T20:01:43.967Z" },
2286
+ { url = "https://files.pythonhosted.org/packages/97/3a/5323a6bb94917af13bbb34009fac01e55c51dfde354f63692bf2533ffbc2/websockets-15.0.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac1e5c9054fe23226fb11e05a6e630837f074174c4c2f0fe442996112a6de4fb", size = 181631, upload-time = "2025-03-05T20:01:46.104Z" },
2287
+ { url = "https://files.pythonhosted.org/packages/a6/cc/1aeb0f7cee59ef065724041bb7ed667b6ab1eeffe5141696cccec2687b66/websockets-15.0.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:5df592cd503496351d6dc14f7cdad49f268d8e618f80dce0cd5a36b93c3fc08d", size = 182016, upload-time = "2025-03-05T20:01:47.603Z" },
2288
+ { url = "https://files.pythonhosted.org/packages/79/f9/c86f8f7af208e4161a7f7e02774e9d0a81c632ae76db2ff22549e1718a51/websockets-15.0.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0a34631031a8f05657e8e90903e656959234f3a04552259458aac0b0f9ae6fd9", size = 181426, upload-time = "2025-03-05T20:01:48.949Z" },
2289
+ { url = "https://files.pythonhosted.org/packages/c7/b9/828b0bc6753db905b91df6ae477c0b14a141090df64fb17f8a9d7e3516cf/websockets-15.0.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3d00075aa65772e7ce9e990cab3ff1de702aa09be3940d1dc88d5abf1ab8a09c", size = 181360, upload-time = "2025-03-05T20:01:50.938Z" },
2290
+ { url = "https://files.pythonhosted.org/packages/89/fb/250f5533ec468ba6327055b7d98b9df056fb1ce623b8b6aaafb30b55d02e/websockets-15.0.1-cp310-cp310-win32.whl", hash = "sha256:1234d4ef35db82f5446dca8e35a7da7964d02c127b095e172e54397fb6a6c256", size = 176388, upload-time = "2025-03-05T20:01:52.213Z" },
2291
+ { url = "https://files.pythonhosted.org/packages/1c/46/aca7082012768bb98e5608f01658ff3ac8437e563eca41cf068bd5849a5e/websockets-15.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:39c1fec2c11dc8d89bba6b2bf1556af381611a173ac2b511cf7231622058af41", size = 176830, upload-time = "2025-03-05T20:01:53.922Z" },
2292
+ { url = "https://files.pythonhosted.org/packages/9f/32/18fcd5919c293a398db67443acd33fde142f283853076049824fc58e6f75/websockets-15.0.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:823c248b690b2fd9303ba00c4f66cd5e2d8c3ba4aa968b2779be9532a4dad431", size = 175423, upload-time = "2025-03-05T20:01:56.276Z" },
2293
+ { url = "https://files.pythonhosted.org/packages/76/70/ba1ad96b07869275ef42e2ce21f07a5b0148936688c2baf7e4a1f60d5058/websockets-15.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678999709e68425ae2593acf2e3ebcbcf2e69885a5ee78f9eb80e6e371f1bf57", size = 173082, upload-time = "2025-03-05T20:01:57.563Z" },
2294
+ { url = "https://files.pythonhosted.org/packages/86/f2/10b55821dd40eb696ce4704a87d57774696f9451108cff0d2824c97e0f97/websockets-15.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d50fd1ee42388dcfb2b3676132c78116490976f1300da28eb629272d5d93e905", size = 173330, upload-time = "2025-03-05T20:01:59.063Z" },
2295
+ { url = "https://files.pythonhosted.org/packages/a5/90/1c37ae8b8a113d3daf1065222b6af61cc44102da95388ac0018fcb7d93d9/websockets-15.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d99e5546bf73dbad5bf3547174cd6cb8ba7273062a23808ffea025ecb1cf8562", size = 182878, upload-time = "2025-03-05T20:02:00.305Z" },
2296
+ { url = "https://files.pythonhosted.org/packages/8e/8d/96e8e288b2a41dffafb78e8904ea7367ee4f891dafc2ab8d87e2124cb3d3/websockets-15.0.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:66dd88c918e3287efc22409d426c8f729688d89a0c587c88971a0faa2c2f3792", size = 181883, upload-time = "2025-03-05T20:02:03.148Z" },
2297
+ { url = "https://files.pythonhosted.org/packages/93/1f/5d6dbf551766308f6f50f8baf8e9860be6182911e8106da7a7f73785f4c4/websockets-15.0.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8dd8327c795b3e3f219760fa603dcae1dcc148172290a8ab15158cf85a953413", size = 182252, upload-time = "2025-03-05T20:02:05.29Z" },
2298
+ { url = "https://files.pythonhosted.org/packages/d4/78/2d4fed9123e6620cbf1706c0de8a1632e1a28e7774d94346d7de1bba2ca3/websockets-15.0.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8fdc51055e6ff4adeb88d58a11042ec9a5eae317a0a53d12c062c8a8865909e8", size = 182521, upload-time = "2025-03-05T20:02:07.458Z" },
2299
+ { url = "https://files.pythonhosted.org/packages/e7/3b/66d4c1b444dd1a9823c4a81f50231b921bab54eee2f69e70319b4e21f1ca/websockets-15.0.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:693f0192126df6c2327cce3baa7c06f2a117575e32ab2308f7f8216c29d9e2e3", size = 181958, upload-time = "2025-03-05T20:02:09.842Z" },
2300
+ { url = "https://files.pythonhosted.org/packages/08/ff/e9eed2ee5fed6f76fdd6032ca5cd38c57ca9661430bb3d5fb2872dc8703c/websockets-15.0.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:54479983bd5fb469c38f2f5c7e3a24f9a4e70594cd68cd1fa6b9340dadaff7cf", size = 181918, upload-time = "2025-03-05T20:02:11.968Z" },
2301
+ { url = "https://files.pythonhosted.org/packages/d8/75/994634a49b7e12532be6a42103597b71098fd25900f7437d6055ed39930a/websockets-15.0.1-cp311-cp311-win32.whl", hash = "sha256:16b6c1b3e57799b9d38427dda63edcbe4926352c47cf88588c0be4ace18dac85", size = 176388, upload-time = "2025-03-05T20:02:13.32Z" },
2302
+ { url = "https://files.pythonhosted.org/packages/98/93/e36c73f78400a65f5e236cd376713c34182e6663f6889cd45a4a04d8f203/websockets-15.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:27ccee0071a0e75d22cb35849b1db43f2ecd3e161041ac1ee9d2352ddf72f065", size = 176828, upload-time = "2025-03-05T20:02:14.585Z" },
2303
+ { url = "https://files.pythonhosted.org/packages/51/6b/4545a0d843594f5d0771e86463606a3988b5a09ca5123136f8a76580dd63/websockets-15.0.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:3e90baa811a5d73f3ca0bcbf32064d663ed81318ab225ee4f427ad4e26e5aff3", size = 175437, upload-time = "2025-03-05T20:02:16.706Z" },
2304
+ { url = "https://files.pythonhosted.org/packages/f4/71/809a0f5f6a06522af902e0f2ea2757f71ead94610010cf570ab5c98e99ed/websockets-15.0.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:592f1a9fe869c778694f0aa806ba0374e97648ab57936f092fd9d87f8bc03665", size = 173096, upload-time = "2025-03-05T20:02:18.832Z" },
2305
+ { url = "https://files.pythonhosted.org/packages/3d/69/1a681dd6f02180916f116894181eab8b2e25b31e484c5d0eae637ec01f7c/websockets-15.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0701bc3cfcb9164d04a14b149fd74be7347a530ad3bbf15ab2c678a2cd3dd9a2", size = 173332, upload-time = "2025-03-05T20:02:20.187Z" },
2306
+ { url = "https://files.pythonhosted.org/packages/a6/02/0073b3952f5bce97eafbb35757f8d0d54812b6174ed8dd952aa08429bcc3/websockets-15.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8b56bdcdb4505c8078cb6c7157d9811a85790f2f2b3632c7d1462ab5783d215", size = 183152, upload-time = "2025-03-05T20:02:22.286Z" },
2307
+ { url = "https://files.pythonhosted.org/packages/74/45/c205c8480eafd114b428284840da0b1be9ffd0e4f87338dc95dc6ff961a1/websockets-15.0.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0af68c55afbd5f07986df82831c7bff04846928ea8d1fd7f30052638788bc9b5", size = 182096, upload-time = "2025-03-05T20:02:24.368Z" },
2308
+ { url = "https://files.pythonhosted.org/packages/14/8f/aa61f528fba38578ec553c145857a181384c72b98156f858ca5c8e82d9d3/websockets-15.0.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64dee438fed052b52e4f98f76c5790513235efaa1ef7f3f2192c392cd7c91b65", size = 182523, upload-time = "2025-03-05T20:02:25.669Z" },
2309
+ { url = "https://files.pythonhosted.org/packages/ec/6d/0267396610add5bc0d0d3e77f546d4cd287200804fe02323797de77dbce9/websockets-15.0.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d5f6b181bb38171a8ad1d6aa58a67a6aa9d4b38d0f8c5f496b9e42561dfc62fe", size = 182790, upload-time = "2025-03-05T20:02:26.99Z" },
2310
+ { url = "https://files.pythonhosted.org/packages/02/05/c68c5adbf679cf610ae2f74a9b871ae84564462955d991178f95a1ddb7dd/websockets-15.0.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:5d54b09eba2bada6011aea5375542a157637b91029687eb4fdb2dab11059c1b4", size = 182165, upload-time = "2025-03-05T20:02:30.291Z" },
2311
+ { url = "https://files.pythonhosted.org/packages/29/93/bb672df7b2f5faac89761cb5fa34f5cec45a4026c383a4b5761c6cea5c16/websockets-15.0.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3be571a8b5afed347da347bfcf27ba12b069d9d7f42cb8c7028b5e98bbb12597", size = 182160, upload-time = "2025-03-05T20:02:31.634Z" },
2312
+ { url = "https://files.pythonhosted.org/packages/ff/83/de1f7709376dc3ca9b7eeb4b9a07b4526b14876b6d372a4dc62312bebee0/websockets-15.0.1-cp312-cp312-win32.whl", hash = "sha256:c338ffa0520bdb12fbc527265235639fb76e7bc7faafbb93f6ba80d9c06578a9", size = 176395, upload-time = "2025-03-05T20:02:33.017Z" },
2313
+ { url = "https://files.pythonhosted.org/packages/7d/71/abf2ebc3bbfa40f391ce1428c7168fb20582d0ff57019b69ea20fa698043/websockets-15.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:fcd5cf9e305d7b8338754470cf69cf81f420459dbae8a3b40cee57417f4614a7", size = 176841, upload-time = "2025-03-05T20:02:34.498Z" },
2314
+ { url = "https://files.pythonhosted.org/packages/cb/9f/51f0cf64471a9d2b4d0fc6c534f323b664e7095640c34562f5182e5a7195/websockets-15.0.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ee443ef070bb3b6ed74514f5efaa37a252af57c90eb33b956d35c8e9c10a1931", size = 175440, upload-time = "2025-03-05T20:02:36.695Z" },
2315
+ { url = "https://files.pythonhosted.org/packages/8a/05/aa116ec9943c718905997412c5989f7ed671bc0188ee2ba89520e8765d7b/websockets-15.0.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5a939de6b7b4e18ca683218320fc67ea886038265fd1ed30173f5ce3f8e85675", size = 173098, upload-time = "2025-03-05T20:02:37.985Z" },
2316
+ { url = "https://files.pythonhosted.org/packages/ff/0b/33cef55ff24f2d92924923c99926dcce78e7bd922d649467f0eda8368923/websockets-15.0.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:746ee8dba912cd6fc889a8147168991d50ed70447bf18bcda7039f7d2e3d9151", size = 173329, upload-time = "2025-03-05T20:02:39.298Z" },
2317
+ { url = "https://files.pythonhosted.org/packages/31/1d/063b25dcc01faa8fada1469bdf769de3768b7044eac9d41f734fd7b6ad6d/websockets-15.0.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:595b6c3969023ecf9041b2936ac3827e4623bfa3ccf007575f04c5a6aa318c22", size = 183111, upload-time = "2025-03-05T20:02:40.595Z" },
2318
+ { url = "https://files.pythonhosted.org/packages/93/53/9a87ee494a51bf63e4ec9241c1ccc4f7c2f45fff85d5bde2ff74fcb68b9e/websockets-15.0.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3c714d2fc58b5ca3e285461a4cc0c9a66bd0e24c5da9911e30158286c9b5be7f", size = 182054, upload-time = "2025-03-05T20:02:41.926Z" },
2319
+ { url = "https://files.pythonhosted.org/packages/ff/b2/83a6ddf56cdcbad4e3d841fcc55d6ba7d19aeb89c50f24dd7e859ec0805f/websockets-15.0.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f3c1e2ab208db911594ae5b4f79addeb3501604a165019dd221c0bdcabe4db8", size = 182496, upload-time = "2025-03-05T20:02:43.304Z" },
2320
+ { url = "https://files.pythonhosted.org/packages/98/41/e7038944ed0abf34c45aa4635ba28136f06052e08fc2168520bb8b25149f/websockets-15.0.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:229cf1d3ca6c1804400b0a9790dc66528e08a6a1feec0d5040e8b9eb14422375", size = 182829, upload-time = "2025-03-05T20:02:48.812Z" },
2321
+ { url = "https://files.pythonhosted.org/packages/e0/17/de15b6158680c7623c6ef0db361da965ab25d813ae54fcfeae2e5b9ef910/websockets-15.0.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:756c56e867a90fb00177d530dca4b097dd753cde348448a1012ed6c5131f8b7d", size = 182217, upload-time = "2025-03-05T20:02:50.14Z" },
2322
+ { url = "https://files.pythonhosted.org/packages/33/2b/1f168cb6041853eef0362fb9554c3824367c5560cbdaad89ac40f8c2edfc/websockets-15.0.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:558d023b3df0bffe50a04e710bc87742de35060580a293c2a984299ed83bc4e4", size = 182195, upload-time = "2025-03-05T20:02:51.561Z" },
2323
+ { url = "https://files.pythonhosted.org/packages/86/eb/20b6cdf273913d0ad05a6a14aed4b9a85591c18a987a3d47f20fa13dcc47/websockets-15.0.1-cp313-cp313-win32.whl", hash = "sha256:ba9e56e8ceeeedb2e080147ba85ffcd5cd0711b89576b83784d8605a7df455fa", size = 176393, upload-time = "2025-03-05T20:02:53.814Z" },
2324
+ { url = "https://files.pythonhosted.org/packages/1b/6c/c65773d6cab416a64d191d6ee8a8b1c68a09970ea6909d16965d26bfed1e/websockets-15.0.1-cp313-cp313-win_amd64.whl", hash = "sha256:e09473f095a819042ecb2ab9465aee615bd9c2028e4ef7d933600a8401c79561", size = 176837, upload-time = "2025-03-05T20:02:55.237Z" },
2325
+ { url = "https://files.pythonhosted.org/packages/02/9e/d40f779fa16f74d3468357197af8d6ad07e7c5a27ea1ca74ceb38986f77a/websockets-15.0.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:0c9e74d766f2818bb95f84c25be4dea09841ac0f734d1966f415e4edfc4ef1c3", size = 173109, upload-time = "2025-03-05T20:03:17.769Z" },
2326
+ { url = "https://files.pythonhosted.org/packages/bc/cd/5b887b8585a593073fd92f7c23ecd3985cd2c3175025a91b0d69b0551372/websockets-15.0.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1009ee0c7739c08a0cd59de430d6de452a55e42d6b522de7aa15e6f67db0b8e1", size = 173343, upload-time = "2025-03-05T20:03:19.094Z" },
2327
+ { url = "https://files.pythonhosted.org/packages/fe/ae/d34f7556890341e900a95acf4886833646306269f899d58ad62f588bf410/websockets-15.0.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76d1f20b1c7a2fa82367e04982e708723ba0e7b8d43aa643d3dcd404d74f1475", size = 174599, upload-time = "2025-03-05T20:03:21.1Z" },
2328
+ { url = "https://files.pythonhosted.org/packages/71/e6/5fd43993a87db364ec60fc1d608273a1a465c0caba69176dd160e197ce42/websockets-15.0.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f29d80eb9a9263b8d109135351caf568cc3f80b9928bccde535c235de55c22d9", size = 174207, upload-time = "2025-03-05T20:03:23.221Z" },
2329
+ { url = "https://files.pythonhosted.org/packages/2b/fb/c492d6daa5ec067c2988ac80c61359ace5c4c674c532985ac5a123436cec/websockets-15.0.1-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b359ed09954d7c18bbc1680f380c7301f92c60bf924171629c5db97febb12f04", size = 174155, upload-time = "2025-03-05T20:03:25.321Z" },
2330
+ { url = "https://files.pythonhosted.org/packages/68/a1/dcb68430b1d00b698ae7a7e0194433bce4f07ded185f0ee5fb21e2a2e91e/websockets-15.0.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:cad21560da69f4ce7658ca2cb83138fb4cf695a2ba3e475e0559e05991aa8122", size = 176884, upload-time = "2025-03-05T20:03:27.934Z" },
2331
+ { url = "https://files.pythonhosted.org/packages/fa/a8/5b41e0da817d64113292ab1f8247140aac61cbf6cfd085d6a0fa77f4984f/websockets-15.0.1-py3-none-any.whl", hash = "sha256:f7a866fbc1e97b5c617ee4116daaa09b722101d4a3c170c787450ba409f9736f", size = 169743, upload-time = "2025-03-05T20:03:39.41Z" },
2107
2332
  ]
2108
2333
 
2109
2334
  [[package]]
@@ -2183,3 +2408,12 @@ wheels = [
2183
2408
  { url = "https://files.pythonhosted.org/packages/46/78/10ad9781128ed2f99dbc474f43283b13fea8ba58723e98844367531c18e9/wrapt-1.17.3-cp314-cp314t-win_arm64.whl", hash = "sha256:f38e60678850c42461d4202739f9bf1e3a737c7ad283638251e79cc49effb6b6", size = 38471, upload-time = "2025-08-12T05:52:57.784Z" },
2184
2409
  { url = "https://files.pythonhosted.org/packages/1f/f6/a933bd70f98e9cf3e08167fc5cd7aaaca49147e48411c0bd5ae701bb2194/wrapt-1.17.3-py3-none-any.whl", hash = "sha256:7171ae35d2c33d326ac19dd8facb1e82e5fd04ef8c6c0e394d7af55a55051c22", size = 23591, upload-time = "2025-08-12T05:53:20.674Z" },
2185
2410
  ]
2411
+
2412
+ [[package]]
2413
+ name = "zipp"
2414
+ version = "3.23.0"
2415
+ source = { registry = "https://pypi.org/simple" }
2416
+ sdist = { url = "https://files.pythonhosted.org/packages/e3/02/0f2892c661036d50ede074e376733dca2ae7c6eb617489437771209d4180/zipp-3.23.0.tar.gz", hash = "sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166", size = 25547, upload-time = "2025-06-08T17:06:39.4Z" }
2417
+ wheels = [
2418
+ { url = "https://files.pythonhosted.org/packages/2e/54/647ade08bf0db230bfea292f893923872fd20be6ac6f53b2b936ba839d75/zipp-3.23.0-py3-none-any.whl", hash = "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e", size = 10276, upload-time = "2025-06-08T17:06:38.034Z" },
2419
+ ]