awslabs.cdk-mcp-server 0.0.11704__tar.gz → 0.0.62303__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 (80) hide show
  1. awslabs_cdk_mcp_server-0.0.62303/.python-version +1 -0
  2. awslabs_cdk_mcp_server-0.0.62303/PKG-INFO +89 -0
  3. awslabs_cdk_mcp_server-0.0.62303/README.md +78 -0
  4. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/data/cdk_nag_parser.py +3 -3
  5. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/data/genai_cdk_loader.py +5 -2
  6. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/data/schema_generator.py +6 -4
  7. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/data/solutions_constructs_parser.py +3 -3
  8. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/static/CDK_GENERAL_GUIDANCE.md +9 -3
  9. awslabs_cdk_mcp_server-0.0.62303/awslabs/cdk_mcp_server/static/__init__.py +9 -0
  10. {awslabs_cdk_mcp_server-0.0.11704/awslabs/cdk_mcp_server/static/genai_cdk → awslabs_cdk_mcp_server-0.0.62303/awslabs/cdk_mcp_server/static}/bedrock/knowledgebases/chunking.md +2 -2
  11. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/pyproject.toml +5 -2
  12. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/uv.lock +171 -3
  13. awslabs_cdk_mcp_server-0.0.11704/.python-version +0 -1
  14. awslabs_cdk_mcp_server-0.0.11704/PKG-INFO +0 -65
  15. awslabs_cdk_mcp_server-0.0.11704/README.md +0 -54
  16. awslabs_cdk_mcp_server-0.0.11704/awslabs/cdk_mcp_server/static/__init__.py +0 -5
  17. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/.gitignore +0 -0
  18. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/.pre-commit-config.yaml +0 -0
  19. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/CHANGELOG.md +0 -0
  20. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/__init__.py +0 -0
  21. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/__init__.py +0 -0
  22. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/core/__init__.py +0 -0
  23. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/core/resources.py +0 -0
  24. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/core/search_utils.py +0 -0
  25. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/core/server.py +0 -0
  26. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/core/tools.py +0 -0
  27. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/data/__init__.py +0 -0
  28. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/data/construct_descriptions.py +0 -0
  29. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/data/lambda_powertools_loader.py +0 -0
  30. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/server.py +0 -0
  31. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/static/CDK_NAG_GUIDANCE.md +0 -0
  32. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/static/bedrock/agent/actiongroups.md +0 -0
  33. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/static/bedrock/agent/alias.md +0 -0
  34. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/static/bedrock/agent/collaboration.md +0 -0
  35. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/static/bedrock/agent/creation.md +0 -0
  36. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/static/bedrock/agent/custom_orchestration.md +0 -0
  37. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/static/bedrock/agent/overview.md +0 -0
  38. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/static/bedrock/agent/prompt_override.md +0 -0
  39. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/static/bedrock/bedrockguardrails.md +0 -0
  40. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/static/bedrock/knowledgebases/datasources.md +0 -0
  41. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/static/bedrock/knowledgebases/kendra.md +0 -0
  42. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/static/bedrock/knowledgebases/overview.md +0 -0
  43. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/static/bedrock/knowledgebases/parsing.md +0 -0
  44. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/static/bedrock/knowledgebases/transformation.md +0 -0
  45. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/static/bedrock/knowledgebases/vector/aurora.md +0 -0
  46. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/static/bedrock/knowledgebases/vector/creation.md +0 -0
  47. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/static/bedrock/knowledgebases/vector/opensearch.md +0 -0
  48. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/static/bedrock/knowledgebases/vector/pinecone.md +0 -0
  49. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/static/bedrock/profiles.md +0 -0
  50. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/static/genai_cdk/bedrock/agent/actiongroups.md +0 -0
  51. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/static/genai_cdk/bedrock/agent/alias.md +0 -0
  52. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/static/genai_cdk/bedrock/agent/collaboration.md +0 -0
  53. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/static/genai_cdk/bedrock/agent/creation.md +0 -0
  54. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/static/genai_cdk/bedrock/agent/custom_orchestration.md +0 -0
  55. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/static/genai_cdk/bedrock/agent/overview.md +0 -0
  56. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/static/genai_cdk/bedrock/agent/prompt_override.md +0 -0
  57. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/static/genai_cdk/bedrock/bedrockguardrails.md +0 -0
  58. {awslabs_cdk_mcp_server-0.0.11704/awslabs/cdk_mcp_server/static → awslabs_cdk_mcp_server-0.0.62303/awslabs/cdk_mcp_server/static/genai_cdk}/bedrock/knowledgebases/chunking.md +0 -0
  59. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/static/genai_cdk/bedrock/knowledgebases/datasources.md +0 -0
  60. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/static/genai_cdk/bedrock/knowledgebases/kendra.md +0 -0
  61. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/static/genai_cdk/bedrock/knowledgebases/overview.md +0 -0
  62. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/static/genai_cdk/bedrock/knowledgebases/parsing.md +0 -0
  63. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/static/genai_cdk/bedrock/knowledgebases/transformation.md +0 -0
  64. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/static/genai_cdk/bedrock/knowledgebases/vector/aurora.md +0 -0
  65. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/static/genai_cdk/bedrock/knowledgebases/vector/creation.md +0 -0
  66. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/static/genai_cdk/bedrock/knowledgebases/vector/opensearch.md +0 -0
  67. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/static/genai_cdk/bedrock/knowledgebases/vector/pinecone.md +0 -0
  68. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/static/genai_cdk/bedrock/profiles.md +0 -0
  69. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/static/genai_cdk/opensearch-vectorindex/overview.md +0 -0
  70. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/static/genai_cdk/opensearchserverless/overview.md +0 -0
  71. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/static/lambda_powertools/bedrock.md +0 -0
  72. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/static/lambda_powertools/cdk.md +0 -0
  73. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/static/lambda_powertools/dependencies.md +0 -0
  74. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/static/lambda_powertools/index.md +0 -0
  75. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/static/lambda_powertools/insights.md +0 -0
  76. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/static/lambda_powertools/logging.md +0 -0
  77. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/static/lambda_powertools/metrics.md +0 -0
  78. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/static/lambda_powertools/tracing.md +0 -0
  79. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/static/opensearch-vectorindex/overview.md +0 -0
  80. {awslabs_cdk_mcp_server-0.0.11704 → awslabs_cdk_mcp_server-0.0.62303}/awslabs/cdk_mcp_server/static/opensearchserverless/overview.md +0 -0
@@ -0,0 +1 @@
1
+ 3.10
@@ -0,0 +1,89 @@
1
+ Metadata-Version: 2.4
2
+ Name: awslabs.cdk-mcp-server
3
+ Version: 0.0.62303
4
+ Summary: An AWS CDK MCP server that provides guidance on AWS Cloud Development Kit best practices, infrastructure as code patterns, and security compliance with CDK Nag. This server offers tools to validate infrastructure designs, explain CDK Nag rules, analyze suppressions, generate Bedrock Agent schemas, and discover Solutions Constructs patterns.
5
+ Requires-Python: >=3.10
6
+ Requires-Dist: aws-lambda-powertools>=2.30.0
7
+ Requires-Dist: httpx>=0.27.0
8
+ Requires-Dist: mcp[cli]>=1.6.0
9
+ Requires-Dist: pydantic>=2.10.6
10
+ Description-Content-Type: text/markdown
11
+
12
+ # AWS CDK MCP Server
13
+
14
+ MCP server for AWS Cloud Development Kit (CDK) best practices, infrastructure as code patterns, and security compliance with CDK Nag.
15
+
16
+ ## Features
17
+
18
+ ### CDK General Guidance
19
+
20
+ - Prescriptive patterns with AWS Solutions Constructs and GenAI CDK libraries
21
+ - Structured decision flow for choosing appropriate implementation approaches
22
+ - Security automation through CDK Nag integration and Lambda Powertools
23
+
24
+ ### CDK Nag Integration
25
+
26
+ - Work with CDK Nag rules for security and compliance
27
+ - Explain specific CDK Nag rules with AWS Well-Architected guidance
28
+ - Check if CDK code contains Nag suppressions that require human review
29
+
30
+ ### AWS Solutions Constructs
31
+
32
+ - Search and discover AWS Solutions Constructs patterns
33
+ - Find recommended patterns for common architecture needs
34
+ - Get detailed documentation on Solutions Constructs
35
+
36
+ ### Generative AI CDK Constructs
37
+
38
+ - Search for GenAI CDK constructs by name or type
39
+ - Discover specialized constructs for AI/ML workloads
40
+ - Get implementation guidance for generative AI applications
41
+
42
+ ### Amazon Bedrock Agent Schema Generation
43
+
44
+ - Generate OpenAPI schema for Bedrock Agent Action Groups
45
+ - Streamline the creation of Bedrock Agent schemas
46
+ - Convert code files to compatible OpenAPI specifications
47
+
48
+ ## Tools and Resources
49
+
50
+ - **CDK Nag Rules**: Access rule packs via `cdk-nag://rules/{rule_pack}`
51
+ - **Lambda Powertools**: Get guidance on Lambda Powertools via `lambda-powertools://{topic}`
52
+ - **AWS Solutions Constructs**: Access patterns via `aws-solutions-constructs://{pattern_name}`
53
+ - **GenAI CDK Constructs**: Access documentation via `genai-cdk-constructs://{construct_type}/{construct_name}`
54
+
55
+ ## Prerequisites
56
+
57
+ 1. Install `uv` from [Astral](https://docs.astral.sh/uv/getting-started/installation/) or the [GitHub README](https://github.com/astral-sh/uv#installation)
58
+ 2. Install Python using `uv python install 3.10`
59
+
60
+ ## Installation
61
+
62
+ Here are some ways you can work with MCP across AWS, and we'll be adding support to more products including Amazon Q Developer CLI soon: (e.g. for Amazon Q Developer CLI MCP, `~/.aws/amazonq/mcp.json`):
63
+
64
+ ```json
65
+ {
66
+ "mcpServers": {
67
+ "awslabs.cdk-mcp-server": {
68
+ "command": "uvx",
69
+ "args": ["awslabs.cdk-mcp-server@latest"],
70
+ "env": {
71
+ "FASTMCP_LOG_LEVEL": "ERROR"
72
+ },
73
+ "disabled": false,
74
+ "autoApprove": []
75
+ }
76
+ }
77
+ }
78
+ ```
79
+
80
+ ## Security Considerations
81
+
82
+ When using this MCP server, you should consider:
83
+
84
+ - Reviewing all CDK Nag warnings and errors manually
85
+ - Fixing security issues rather than suppressing them whenever possible
86
+ - Documenting clear justifications for any necessary suppressions
87
+ - Using the CheckCDKNagSuppressions tool to verify no unauthorized suppressions exist
88
+
89
+ Before applying CDK NAG Suppressions, you should consider conducting your own independent assessment to ensure that your use would comply with your own specific security and quality control practices and standards, as well as the local laws, rules, and regulations that govern you and your content.
@@ -0,0 +1,78 @@
1
+ # AWS CDK MCP Server
2
+
3
+ MCP server for AWS Cloud Development Kit (CDK) best practices, infrastructure as code patterns, and security compliance with CDK Nag.
4
+
5
+ ## Features
6
+
7
+ ### CDK General Guidance
8
+
9
+ - Prescriptive patterns with AWS Solutions Constructs and GenAI CDK libraries
10
+ - Structured decision flow for choosing appropriate implementation approaches
11
+ - Security automation through CDK Nag integration and Lambda Powertools
12
+
13
+ ### CDK Nag Integration
14
+
15
+ - Work with CDK Nag rules for security and compliance
16
+ - Explain specific CDK Nag rules with AWS Well-Architected guidance
17
+ - Check if CDK code contains Nag suppressions that require human review
18
+
19
+ ### AWS Solutions Constructs
20
+
21
+ - Search and discover AWS Solutions Constructs patterns
22
+ - Find recommended patterns for common architecture needs
23
+ - Get detailed documentation on Solutions Constructs
24
+
25
+ ### Generative AI CDK Constructs
26
+
27
+ - Search for GenAI CDK constructs by name or type
28
+ - Discover specialized constructs for AI/ML workloads
29
+ - Get implementation guidance for generative AI applications
30
+
31
+ ### Amazon Bedrock Agent Schema Generation
32
+
33
+ - Generate OpenAPI schema for Bedrock Agent Action Groups
34
+ - Streamline the creation of Bedrock Agent schemas
35
+ - Convert code files to compatible OpenAPI specifications
36
+
37
+ ## Tools and Resources
38
+
39
+ - **CDK Nag Rules**: Access rule packs via `cdk-nag://rules/{rule_pack}`
40
+ - **Lambda Powertools**: Get guidance on Lambda Powertools via `lambda-powertools://{topic}`
41
+ - **AWS Solutions Constructs**: Access patterns via `aws-solutions-constructs://{pattern_name}`
42
+ - **GenAI CDK Constructs**: Access documentation via `genai-cdk-constructs://{construct_type}/{construct_name}`
43
+
44
+ ## Prerequisites
45
+
46
+ 1. Install `uv` from [Astral](https://docs.astral.sh/uv/getting-started/installation/) or the [GitHub README](https://github.com/astral-sh/uv#installation)
47
+ 2. Install Python using `uv python install 3.10`
48
+
49
+ ## Installation
50
+
51
+ Here are some ways you can work with MCP across AWS, and we'll be adding support to more products including Amazon Q Developer CLI soon: (e.g. for Amazon Q Developer CLI MCP, `~/.aws/amazonq/mcp.json`):
52
+
53
+ ```json
54
+ {
55
+ "mcpServers": {
56
+ "awslabs.cdk-mcp-server": {
57
+ "command": "uvx",
58
+ "args": ["awslabs.cdk-mcp-server@latest"],
59
+ "env": {
60
+ "FASTMCP_LOG_LEVEL": "ERROR"
61
+ },
62
+ "disabled": false,
63
+ "autoApprove": []
64
+ }
65
+ }
66
+ }
67
+ ```
68
+
69
+ ## Security Considerations
70
+
71
+ When using this MCP server, you should consider:
72
+
73
+ - Reviewing all CDK Nag warnings and errors manually
74
+ - Fixing security issues rather than suppressing them whenever possible
75
+ - Documenting clear justifications for any necessary suppressions
76
+ - Using the CheckCDKNagSuppressions tool to verify no unauthorized suppressions exist
77
+
78
+ Before applying CDK NAG Suppressions, you should consider conducting your own independent assessment to ensure that your use would comply with your own specific security and quality control practices and standards, as well as the local laws, rules, and regulations that govern you and your content.
@@ -125,7 +125,7 @@ def format_rule_info(rule_info: Optional[Dict[str, str]]) -> str:
125
125
  A formatted markdown string.
126
126
  """
127
127
  if not rule_info:
128
- return "Rule information not found."
128
+ return 'Rule information not found.'
129
129
 
130
130
  result = f'# {rule_info["rule_id"]}\n\n'
131
131
  result += f'## Cause\n\n{rule_info["cause"]}\n\n'
@@ -275,10 +275,10 @@ def check_cdk_nag_suppressions(
275
275
  code = f.read()
276
276
  except Exception as e:
277
277
  return {'error': f'Failed to read file: {str(e)}', 'status': 'error'}
278
-
278
+
279
279
  # Ensure code is not None at this point
280
280
  if code is None:
281
- code = "" # Default to empty string if somehow still None
281
+ code = '' # Default to empty string if somehow still None
282
282
 
283
283
  # Define patterns to look for
284
284
  patterns = [
@@ -364,7 +364,10 @@ def list_available_constructs(construct_type: Optional[str] = None) -> List[Dict
364
364
 
365
365
 
366
366
  def process_directory_files(
367
- dir_path: str, construct_type: str, constructs: List[Dict[str, Any]], parent: Optional[str] = None
367
+ dir_path: str,
368
+ construct_type: str,
369
+ constructs: List[Dict[str, Any]],
370
+ parent: Optional[str] = None,
368
371
  ):
369
372
  """Process files in a directory and add them to the constructs list.
370
373
 
@@ -400,7 +403,7 @@ def process_directory_files(
400
403
 
401
404
  # Get description from fixed mapping or use default
402
405
  descriptions = get_construct_descriptions()
403
- description = descriptions.get(display_name, "")
406
+ description = descriptions.get(display_name, '')
404
407
 
405
408
  # If no fixed description, fall back to current behavior
406
409
  if not description:
@@ -484,12 +484,14 @@ def generate_bedrock_schema_from_file(
484
484
  f'{module_name}_simplified', simplified_path
485
485
  )
486
486
  if spec is None:
487
- raise ImportError(f"Could not find spec for module: {module_name}_simplified")
488
-
487
+ raise ImportError(
488
+ f'Could not find spec for module: {module_name}_simplified'
489
+ )
490
+
489
491
  simplified_module = importlib.util.module_from_spec(spec)
490
492
  if spec.loader is None:
491
- raise ImportError(f"Module spec has no loader: {module_name}_simplified")
492
-
493
+ raise ImportError(f'Module spec has no loader: {module_name}_simplified')
494
+
493
495
  spec.loader.exec_module(simplified_module)
494
496
 
495
497
  # Get app and generate schema
@@ -33,11 +33,11 @@ async def fetch_pattern_list() -> List[str]:
33
33
  List of pattern names (e.g., ['aws-lambda-dynamodb', 'aws-apigateway-lambda', ...])
34
34
  """
35
35
  global _pattern_list_cache
36
-
36
+
37
37
  # Initialize cache if it's None
38
38
  if _pattern_list_cache is None:
39
39
  _pattern_list_cache = {'timestamp': None, 'data': []}
40
-
40
+
41
41
  # Check cache first
42
42
  if (
43
43
  _pattern_list_cache['timestamp'] is not None
@@ -135,7 +135,7 @@ async def get_pattern_info(pattern_name: str) -> Dict[str, Any]:
135
135
  # Update cache
136
136
  if _pattern_details_cache is None:
137
137
  _pattern_details_cache = {}
138
-
138
+
139
139
  _pattern_details_cache[pattern_name] = {'timestamp': datetime.now(), 'data': pattern_info}
140
140
 
141
141
  return pattern_info
@@ -1,6 +1,6 @@
1
- # AWS CDK Best Practices Guide
1
+ # AWS CDK General Guidance
2
2
 
3
- This guide provides essential best practices for AWS CDK development, focusing on when to use specific constructs and tools.
3
+ This guide provides essential guidance for AWS CDK development, focusing on when to use specific constructs and tools.
4
4
 
5
5
  ## Getting Started with CDK
6
6
 
@@ -15,12 +15,13 @@ cdk init app --language python
15
15
  ```
16
16
 
17
17
  Proper initialization ensures:
18
+
18
19
  - Consistent project structure
19
20
  - Correct dependency setup
20
21
  - Appropriate tsconfig/package.json configuration
21
22
  - Necessary boilerplate files
22
23
 
23
- This foundation helps avoid common issues and ensures compatibility with AWS CDK best practices.
24
+ This foundation helps avoid common issues and ensures compatibility with the AWS CDK ecosystem.
24
25
 
25
26
  ## Development Workflow
26
27
 
@@ -61,6 +62,7 @@ When implementing AWS infrastructure with CDK, consider these complementary appr
61
62
  - Perfect for agents, knowledge bases, vector stores, and other GenAI components
62
63
 
63
64
  **Installation:**
65
+
64
66
  ```typescript
65
67
  // TypeScript
66
68
  // Create or use an existing CDK application
@@ -174,12 +176,14 @@ Always check the [Amazon Bedrock documentation](https://docs.aws.amazon.com/bedr
174
176
  AWS Solutions Constructs are vetted architecture patterns that combine multiple AWS services to solve common use cases following AWS Well-Architected best practices.
175
177
 
176
178
  **Key benefits:**
179
+
177
180
  - Accelerated Development: Implement common patterns without boilerplate code
178
181
  - Best Practices Built-in: Security, reliability, and performance best practices
179
182
  - Reduced Complexity: Simplified interfaces for multi-service architectures
180
183
  - Well-Architected: Patterns follow AWS Well-Architected Framework principles
181
184
 
182
185
  **When to use Solutions Constructs:**
186
+
183
187
  - Implementing common architecture patterns (e.g., API + Lambda + DynamoDB)
184
188
  - You want secure defaults and best practices applied automatically
185
189
  - You need to quickly prototype or build production-ready infrastructure
@@ -191,6 +195,7 @@ To discover available patterns, use the `GetAwsSolutionsConstructPattern` tool.
191
195
  CDK Nag is a crucial tool for ensuring your CDK applications follow AWS security best practices. **Always apply CDK Nag to all your stacks by default.**
192
196
 
193
197
  Key security practices to remember:
198
+
194
199
  - Follow the principle of least privilege for IAM
195
200
  - Secure S3 buckets with encryption, access controls, and policies
196
201
  - Implement secure authentication with Cognito
@@ -201,6 +206,7 @@ For detailed guidance, use the `CDKNagGuidance` tool.
201
206
  ## Operational Excellence with Lambda Powertools
202
207
 
203
208
  Always implement Lambda Powertools for:
209
+
204
210
  - Structured Logging
205
211
  - Tracing
206
212
  - Metrics
@@ -0,0 +1,9 @@
1
+ from importlib import resources
2
+
3
+
4
+ with (
5
+ resources.files('awslabs.cdk_mcp_server.static')
6
+ .joinpath('CDK_GENERAL_GUIDANCE.md')
7
+ .open('r') as f
8
+ ):
9
+ CDK_GENERAL_GUIDANCE = f.read()
@@ -62,7 +62,7 @@ ChunkingStrategy.HIERARCHICAL_COHERE;
62
62
  // Hierarchical Chunking with the default for Titan Models.
63
63
  ChunkingStrategy.HIERARCHICAL_TITAN;
64
64
 
65
- // Hierarchical Chunking with custom values. Tthe maximum chunk size depends on the model.
65
+ // Hierarchical Chunking with custom values. The maximum chunk size depends on the model.
66
66
  // Amazon Titan Text Embeddings: 8192. Cohere Embed models: 512
67
67
  ChunkingStrategy.hierarchical({
68
68
  overlapTokens: 60,
@@ -80,7 +80,7 @@ ChunkingStrategy.HIERARCHICAL_COHERE
80
80
  # Hierarchical Chunking with the default for Titan Models.
81
81
  ChunkingStrategy.HIERARCHICAL_TITAN
82
82
 
83
- # Hierarchical Chunking with custom values. Tthe maximum chunk size depends on the model.
83
+ # Hierarchical Chunking with custom values. The maximum chunk size depends on the model.
84
84
  # Amazon Titan Text Embeddings: 8192. Cohere Embed models: 512
85
85
  chunking_strategy= ChunkingStrategy.hierarchical(
86
86
  overlap_tokens=60,
@@ -1,9 +1,9 @@
1
1
  [project]
2
2
  name = "awslabs.cdk-mcp-server"
3
- version = "0.0.011704"
3
+ version = "0.0.062303"
4
4
  description = "An AWS CDK MCP server that provides guidance on AWS Cloud Development Kit best practices, infrastructure as code patterns, and security compliance with CDK Nag. This server offers tools to validate infrastructure designs, explain CDK Nag rules, analyze suppressions, generate Bedrock Agent schemas, and discover Solutions Constructs patterns."
5
5
  readme = "README.md"
6
- requires-python = ">=3.13"
6
+ requires-python = ">=3.10"
7
7
  dependencies = [
8
8
  "mcp[cli]>=1.6.0",
9
9
  "pydantic>=2.10.6",
@@ -79,3 +79,6 @@ update_changelog_on_bump = true
79
79
 
80
80
  [tool.hatch.build.targets.wheel]
81
81
  packages = ["awslabs"]
82
+
83
+ [tool.bandit]
84
+ exclude_dirs = ["venv","tests"]
@@ -1,6 +1,5 @@
1
1
  version = 1
2
- revision = 1
3
- requires-python = ">=3.13"
2
+ requires-python = ">=3.10"
4
3
 
5
4
  [[package]]
6
5
  name = "annotated-types"
@@ -16,8 +15,10 @@ name = "anyio"
16
15
  version = "4.9.0"
17
16
  source = { registry = "https://pypi.org/simple" }
18
17
  dependencies = [
18
+ { name = "exceptiongroup", marker = "python_full_version < '3.11'" },
19
19
  { name = "idna" },
20
20
  { name = "sniffio" },
21
+ { name = "typing-extensions", marker = "python_full_version < '3.13'" },
21
22
  ]
22
23
  sdist = { url = "https://files.pythonhosted.org/packages/95/7d/4c1bd541d4dffa1b52bd83fb8527089e097a106fc90b467a7313b105f840/anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028", size = 190949 }
23
24
  wheels = [
@@ -48,7 +49,7 @@ wheels = [
48
49
 
49
50
  [[package]]
50
51
  name = "awslabs-cdk-mcp-server"
51
- version = "0.0.0"
52
+ version = "0.0.11704"
52
53
  source = { editable = "." }
53
54
  dependencies = [
54
55
  { name = "aws-lambda-powertools" },
@@ -105,6 +106,45 @@ version = "3.4.1"
105
106
  source = { registry = "https://pypi.org/simple" }
106
107
  sdist = { url = "https://files.pythonhosted.org/packages/16/b0/572805e227f01586461c80e0fd25d65a2115599cc9dad142fee4b747c357/charset_normalizer-3.4.1.tar.gz", hash = "sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3", size = 123188 }
107
108
  wheels = [
109
+ { url = "https://files.pythonhosted.org/packages/0d/58/5580c1716040bc89206c77d8f74418caf82ce519aae06450393ca73475d1/charset_normalizer-3.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:91b36a978b5ae0ee86c394f5a54d6ef44db1de0815eb43de826d41d21e4af3de", size = 198013 },
110
+ { url = "https://files.pythonhosted.org/packages/d0/11/00341177ae71c6f5159a08168bcb98c6e6d196d372c94511f9f6c9afe0c6/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7461baadb4dc00fd9e0acbe254e3d7d2112e7f92ced2adc96e54ef6501c5f176", size = 141285 },
111
+ { url = "https://files.pythonhosted.org/packages/01/09/11d684ea5819e5a8f5100fb0b38cf8d02b514746607934134d31233e02c8/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e218488cd232553829be0664c2292d3af2eeeb94b32bea483cf79ac6a694e037", size = 151449 },
112
+ { url = "https://files.pythonhosted.org/packages/08/06/9f5a12939db324d905dc1f70591ae7d7898d030d7662f0d426e2286f68c9/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:80ed5e856eb7f30115aaf94e4a08114ccc8813e6ed1b5efa74f9f82e8509858f", size = 143892 },
113
+ { url = "https://files.pythonhosted.org/packages/93/62/5e89cdfe04584cb7f4d36003ffa2936681b03ecc0754f8e969c2becb7e24/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b010a7a4fd316c3c484d482922d13044979e78d1861f0e0650423144c616a46a", size = 146123 },
114
+ { url = "https://files.pythonhosted.org/packages/a9/ac/ab729a15c516da2ab70a05f8722ecfccc3f04ed7a18e45c75bbbaa347d61/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4532bff1b8421fd0a320463030c7520f56a79c9024a4e88f01c537316019005a", size = 147943 },
115
+ { url = "https://files.pythonhosted.org/packages/03/d2/3f392f23f042615689456e9a274640c1d2e5dd1d52de36ab8f7955f8f050/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d973f03c0cb71c5ed99037b870f2be986c3c05e63622c017ea9816881d2dd247", size = 142063 },
116
+ { url = "https://files.pythonhosted.org/packages/f2/e3/e20aae5e1039a2cd9b08d9205f52142329f887f8cf70da3650326670bddf/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3a3bd0dcd373514dcec91c411ddb9632c0d7d92aed7093b8c3bbb6d69ca74408", size = 150578 },
117
+ { url = "https://files.pythonhosted.org/packages/8d/af/779ad72a4da0aed925e1139d458adc486e61076d7ecdcc09e610ea8678db/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:d9c3cdf5390dcd29aa8056d13e8e99526cda0305acc038b96b30352aff5ff2bb", size = 153629 },
118
+ { url = "https://files.pythonhosted.org/packages/c2/b6/7aa450b278e7aa92cf7732140bfd8be21f5f29d5bf334ae987c945276639/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2bdfe3ac2e1bbe5b59a1a63721eb3b95fc9b6817ae4a46debbb4e11f6232428d", size = 150778 },
119
+ { url = "https://files.pythonhosted.org/packages/39/f4/d9f4f712d0951dcbfd42920d3db81b00dd23b6ab520419626f4023334056/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:eab677309cdb30d047996b36d34caeda1dc91149e4fdca0b1a039b3f79d9a807", size = 146453 },
120
+ { url = "https://files.pythonhosted.org/packages/49/2b/999d0314e4ee0cff3cb83e6bc9aeddd397eeed693edb4facb901eb8fbb69/charset_normalizer-3.4.1-cp310-cp310-win32.whl", hash = "sha256:c0429126cf75e16c4f0ad00ee0eae4242dc652290f940152ca8c75c3a4b6ee8f", size = 95479 },
121
+ { url = "https://files.pythonhosted.org/packages/2d/ce/3cbed41cff67e455a386fb5e5dd8906cdda2ed92fbc6297921f2e4419309/charset_normalizer-3.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:9f0b8b1c6d84c8034a44893aba5e767bf9c7a211e313a9605d9c617d7083829f", size = 102790 },
122
+ { url = "https://files.pythonhosted.org/packages/72/80/41ef5d5a7935d2d3a773e3eaebf0a9350542f2cab4eac59a7a4741fbbbbe/charset_normalizer-3.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8bfa33f4f2672964266e940dd22a195989ba31669bd84629f05fab3ef4e2d125", size = 194995 },
123
+ { url = "https://files.pythonhosted.org/packages/7a/28/0b9fefa7b8b080ec492110af6d88aa3dea91c464b17d53474b6e9ba5d2c5/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28bf57629c75e810b6ae989f03c0828d64d6b26a5e205535585f96093e405ed1", size = 139471 },
124
+ { url = "https://files.pythonhosted.org/packages/71/64/d24ab1a997efb06402e3fc07317e94da358e2585165930d9d59ad45fcae2/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f08ff5e948271dc7e18a35641d2f11a4cd8dfd5634f55228b691e62b37125eb3", size = 149831 },
125
+ { url = "https://files.pythonhosted.org/packages/37/ed/be39e5258e198655240db5e19e0b11379163ad7070962d6b0c87ed2c4d39/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:234ac59ea147c59ee4da87a0c0f098e9c8d169f4dc2a159ef720f1a61bbe27cd", size = 142335 },
126
+ { url = "https://files.pythonhosted.org/packages/88/83/489e9504711fa05d8dde1574996408026bdbdbd938f23be67deebb5eca92/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd4ec41f914fa74ad1b8304bbc634b3de73d2a0889bd32076342a573e0779e00", size = 143862 },
127
+ { url = "https://files.pythonhosted.org/packages/c6/c7/32da20821cf387b759ad24627a9aca289d2822de929b8a41b6241767b461/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eea6ee1db730b3483adf394ea72f808b6e18cf3cb6454b4d86e04fa8c4327a12", size = 145673 },
128
+ { url = "https://files.pythonhosted.org/packages/68/85/f4288e96039abdd5aeb5c546fa20a37b50da71b5cf01e75e87f16cd43304/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c96836c97b1238e9c9e3fe90844c947d5afbf4f4c92762679acfe19927d81d77", size = 140211 },
129
+ { url = "https://files.pythonhosted.org/packages/28/a3/a42e70d03cbdabc18997baf4f0227c73591a08041c149e710045c281f97b/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4d86f7aff21ee58f26dcf5ae81a9addbd914115cdebcbb2217e4f0ed8982e146", size = 148039 },
130
+ { url = "https://files.pythonhosted.org/packages/85/e4/65699e8ab3014ecbe6f5c71d1a55d810fb716bbfd74f6283d5c2aa87febf/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:09b5e6733cbd160dcc09589227187e242a30a49ca5cefa5a7edd3f9d19ed53fd", size = 151939 },
131
+ { url = "https://files.pythonhosted.org/packages/b1/82/8e9fe624cc5374193de6860aba3ea8070f584c8565ee77c168ec13274bd2/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:5777ee0881f9499ed0f71cc82cf873d9a0ca8af166dfa0af8ec4e675b7df48e6", size = 149075 },
132
+ { url = "https://files.pythonhosted.org/packages/3d/7b/82865ba54c765560c8433f65e8acb9217cb839a9e32b42af4aa8e945870f/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:237bdbe6159cff53b4f24f397d43c6336c6b0b42affbe857970cefbb620911c8", size = 144340 },
133
+ { url = "https://files.pythonhosted.org/packages/b5/b6/9674a4b7d4d99a0d2df9b215da766ee682718f88055751e1e5e753c82db0/charset_normalizer-3.4.1-cp311-cp311-win32.whl", hash = "sha256:8417cb1f36cc0bc7eaba8ccb0e04d55f0ee52df06df3ad55259b9a323555fc8b", size = 95205 },
134
+ { url = "https://files.pythonhosted.org/packages/1e/ab/45b180e175de4402dcf7547e4fb617283bae54ce35c27930a6f35b6bef15/charset_normalizer-3.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:d7f50a1f8c450f3925cb367d011448c39239bb3eb4117c36a6d354794de4ce76", size = 102441 },
135
+ { url = "https://files.pythonhosted.org/packages/0a/9a/dd1e1cdceb841925b7798369a09279bd1cf183cef0f9ddf15a3a6502ee45/charset_normalizer-3.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545", size = 196105 },
136
+ { url = "https://files.pythonhosted.org/packages/d3/8c/90bfabf8c4809ecb648f39794cf2a84ff2e7d2a6cf159fe68d9a26160467/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7", size = 140404 },
137
+ { url = "https://files.pythonhosted.org/packages/ad/8f/e410d57c721945ea3b4f1a04b74f70ce8fa800d393d72899f0a40526401f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757", size = 150423 },
138
+ { url = "https://files.pythonhosted.org/packages/f0/b8/e6825e25deb691ff98cf5c9072ee0605dc2acfca98af70c2d1b1bc75190d/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa", size = 143184 },
139
+ { url = "https://files.pythonhosted.org/packages/3e/a2/513f6cbe752421f16d969e32f3583762bfd583848b763913ddab8d9bfd4f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d", size = 145268 },
140
+ { url = "https://files.pythonhosted.org/packages/74/94/8a5277664f27c3c438546f3eb53b33f5b19568eb7424736bdc440a88a31f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616", size = 147601 },
141
+ { url = "https://files.pythonhosted.org/packages/7c/5f/6d352c51ee763623a98e31194823518e09bfa48be2a7e8383cf691bbb3d0/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b", size = 141098 },
142
+ { url = "https://files.pythonhosted.org/packages/78/d4/f5704cb629ba5ab16d1d3d741396aec6dc3ca2b67757c45b0599bb010478/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d", size = 149520 },
143
+ { url = "https://files.pythonhosted.org/packages/c5/96/64120b1d02b81785f222b976c0fb79a35875457fa9bb40827678e54d1bc8/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a", size = 152852 },
144
+ { url = "https://files.pythonhosted.org/packages/84/c9/98e3732278a99f47d487fd3468bc60b882920cef29d1fa6ca460a1fdf4e6/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9", size = 150488 },
145
+ { url = "https://files.pythonhosted.org/packages/13/0e/9c8d4cb99c98c1007cc11eda969ebfe837bbbd0acdb4736d228ccaabcd22/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1", size = 146192 },
146
+ { url = "https://files.pythonhosted.org/packages/b2/21/2b6b5b860781a0b49427309cb8670785aa543fb2178de875b87b9cc97746/charset_normalizer-3.4.1-cp312-cp312-win32.whl", hash = "sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35", size = 95550 },
147
+ { url = "https://files.pythonhosted.org/packages/21/5b/1b390b03b1d16c7e382b561c5329f83cc06623916aab983e8ab9239c7d5c/charset_normalizer-3.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f", size = 102785 },
108
148
  { url = "https://files.pythonhosted.org/packages/38/94/ce8e6f63d18049672c76d07d119304e1e2d7c6098f0841b51c666e9f44a0/charset_normalizer-3.4.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aabfa34badd18f1da5ec1bc2715cadc8dca465868a4e73a0173466b688f29dda", size = 195698 },
109
149
  { url = "https://files.pythonhosted.org/packages/24/2e/dfdd9770664aae179a96561cc6952ff08f9a8cd09a908f259a9dfa063568/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22e14b5d70560b8dd51ec22863f370d1e595ac3d024cb8ad7d308b4cd95f8313", size = 140162 },
110
150
  { url = "https://files.pythonhosted.org/packages/24/4e/f646b9093cff8fc86f2d60af2de4dc17c759de9d554f130b140ea4738ca6/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8436c508b408b82d87dc5f62496973a1805cd46727c34440b0d29d8a2f50a6c9", size = 150263 },
@@ -157,6 +197,7 @@ dependencies = [
157
197
  { name = "questionary" },
158
198
  { name = "termcolor" },
159
199
  { name = "tomlkit" },
200
+ { name = "typing-extensions", marker = "python_full_version < '3.11'" },
160
201
  ]
161
202
  sdist = { url = "https://files.pythonhosted.org/packages/b5/fd/cd449bed87a26ecb61c950410e2d94e97ac31bf1f3ec69cc718b215384ce/commitizen-4.4.1.tar.gz", hash = "sha256:626d9f545fb9b2db42305e16ef35d6348a35081a80527bad863a05a7ba0bec21", size = 52345 }
162
203
  wheels = [
@@ -181,6 +222,15 @@ wheels = [
181
222
  { url = "https://files.pythonhosted.org/packages/91/a1/cf2472db20f7ce4a6be1253a81cfdf85ad9c7885ffbed7047fb72c24cf87/distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87", size = 468973 },
182
223
  ]
183
224
 
225
+ [[package]]
226
+ name = "exceptiongroup"
227
+ version = "1.2.2"
228
+ source = { registry = "https://pypi.org/simple" }
229
+ sdist = { url = "https://files.pythonhosted.org/packages/09/35/2495c4ac46b980e4ca1f6ad6db102322ef3ad2410b79fdde159a4b0f3b92/exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc", size = 28883 }
230
+ wheels = [
231
+ { url = "https://files.pythonhosted.org/packages/02/cc/b7e31358aac6ed1ef2bb790a9746ac2c69bcb3c8588b41616914eb106eaf/exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b", size = 16453 },
232
+ ]
233
+
184
234
  [[package]]
185
235
  name = "filelock"
186
236
  version = "3.18.0"
@@ -293,6 +343,36 @@ version = "3.0.2"
293
343
  source = { registry = "https://pypi.org/simple" }
294
344
  sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537 }
295
345
  wheels = [
346
+ { url = "https://files.pythonhosted.org/packages/04/90/d08277ce111dd22f77149fd1a5d4653eeb3b3eaacbdfcbae5afb2600eebd/MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8", size = 14357 },
347
+ { url = "https://files.pythonhosted.org/packages/04/e1/6e2194baeae0bca1fae6629dc0cbbb968d4d941469cbab11a3872edff374/MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158", size = 12393 },
348
+ { url = "https://files.pythonhosted.org/packages/1d/69/35fa85a8ece0a437493dc61ce0bb6d459dcba482c34197e3efc829aa357f/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579", size = 21732 },
349
+ { url = "https://files.pythonhosted.org/packages/22/35/137da042dfb4720b638d2937c38a9c2df83fe32d20e8c8f3185dbfef05f7/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d", size = 20866 },
350
+ { url = "https://files.pythonhosted.org/packages/29/28/6d029a903727a1b62edb51863232152fd335d602def598dade38996887f0/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb", size = 20964 },
351
+ { url = "https://files.pythonhosted.org/packages/cc/cd/07438f95f83e8bc028279909d9c9bd39e24149b0d60053a97b2bc4f8aa51/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b", size = 21977 },
352
+ { url = "https://files.pythonhosted.org/packages/29/01/84b57395b4cc062f9c4c55ce0df7d3108ca32397299d9df00fedd9117d3d/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c", size = 21366 },
353
+ { url = "https://files.pythonhosted.org/packages/bd/6e/61ebf08d8940553afff20d1fb1ba7294b6f8d279df9fd0c0db911b4bbcfd/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171", size = 21091 },
354
+ { url = "https://files.pythonhosted.org/packages/11/23/ffbf53694e8c94ebd1e7e491de185124277964344733c45481f32ede2499/MarkupSafe-3.0.2-cp310-cp310-win32.whl", hash = "sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50", size = 15065 },
355
+ { url = "https://files.pythonhosted.org/packages/44/06/e7175d06dd6e9172d4a69a72592cb3f7a996a9c396eee29082826449bbc3/MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a", size = 15514 },
356
+ { url = "https://files.pythonhosted.org/packages/6b/28/bbf83e3f76936960b850435576dd5e67034e200469571be53f69174a2dfd/MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d", size = 14353 },
357
+ { url = "https://files.pythonhosted.org/packages/6c/30/316d194b093cde57d448a4c3209f22e3046c5bb2fb0820b118292b334be7/MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93", size = 12392 },
358
+ { url = "https://files.pythonhosted.org/packages/f2/96/9cdafba8445d3a53cae530aaf83c38ec64c4d5427d975c974084af5bc5d2/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832", size = 23984 },
359
+ { url = "https://files.pythonhosted.org/packages/f1/a4/aefb044a2cd8d7334c8a47d3fb2c9f328ac48cb349468cc31c20b539305f/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84", size = 23120 },
360
+ { url = "https://files.pythonhosted.org/packages/8d/21/5e4851379f88f3fad1de30361db501300d4f07bcad047d3cb0449fc51f8c/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca", size = 23032 },
361
+ { url = "https://files.pythonhosted.org/packages/00/7b/e92c64e079b2d0d7ddf69899c98842f3f9a60a1ae72657c89ce2655c999d/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798", size = 24057 },
362
+ { url = "https://files.pythonhosted.org/packages/f9/ac/46f960ca323037caa0a10662ef97d0a4728e890334fc156b9f9e52bcc4ca/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e", size = 23359 },
363
+ { url = "https://files.pythonhosted.org/packages/69/84/83439e16197337b8b14b6a5b9c2105fff81d42c2a7c5b58ac7b62ee2c3b1/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4", size = 23306 },
364
+ { url = "https://files.pythonhosted.org/packages/9a/34/a15aa69f01e2181ed8d2b685c0d2f6655d5cca2c4db0ddea775e631918cd/MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d", size = 15094 },
365
+ { url = "https://files.pythonhosted.org/packages/da/b8/3a3bd761922d416f3dc5d00bfbed11f66b1ab89a0c2b6e887240a30b0f6b/MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b", size = 15521 },
366
+ { url = "https://files.pythonhosted.org/packages/22/09/d1f21434c97fc42f09d290cbb6350d44eb12f09cc62c9476effdb33a18aa/MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf", size = 14274 },
367
+ { url = "https://files.pythonhosted.org/packages/6b/b0/18f76bba336fa5aecf79d45dcd6c806c280ec44538b3c13671d49099fdd0/MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225", size = 12348 },
368
+ { url = "https://files.pythonhosted.org/packages/e0/25/dd5c0f6ac1311e9b40f4af06c78efde0f3b5cbf02502f8ef9501294c425b/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028", size = 24149 },
369
+ { url = "https://files.pythonhosted.org/packages/f3/f0/89e7aadfb3749d0f52234a0c8c7867877876e0a20b60e2188e9850794c17/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8", size = 23118 },
370
+ { url = "https://files.pythonhosted.org/packages/d5/da/f2eeb64c723f5e3777bc081da884b414671982008c47dcc1873d81f625b6/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c", size = 22993 },
371
+ { url = "https://files.pythonhosted.org/packages/da/0e/1f32af846df486dce7c227fe0f2398dc7e2e51d4a370508281f3c1c5cddc/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557", size = 24178 },
372
+ { url = "https://files.pythonhosted.org/packages/c4/f6/bb3ca0532de8086cbff5f06d137064c8410d10779c4c127e0e47d17c0b71/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22", size = 23319 },
373
+ { url = "https://files.pythonhosted.org/packages/a2/82/8be4c96ffee03c5b4a034e60a31294daf481e12c7c43ab8e34a1453ee48b/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48", size = 23352 },
374
+ { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097 },
375
+ { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601 },
296
376
  { url = "https://files.pythonhosted.org/packages/83/0e/67eb10a7ecc77a0c2bbe2b0235765b98d164d81600746914bebada795e97/MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd", size = 14274 },
297
377
  { url = "https://files.pythonhosted.org/packages/2b/6d/9409f3684d3335375d04e5f05744dfe7e9f120062c9857df4ab490a1031a/MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430", size = 12352 },
298
378
  { url = "https://files.pythonhosted.org/packages/d2/f5/6eadfcd3885ea85fe2a7c128315cc1bb7241e1987443d78c8fe712d03091/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094", size = 24122 },
@@ -428,6 +508,47 @@ dependencies = [
428
508
  ]
429
509
  sdist = { url = "https://files.pythonhosted.org/packages/b9/05/91ce14dfd5a3a99555fce436318cc0fd1f08c4daa32b3248ad63669ea8b4/pydantic_core-2.33.0.tar.gz", hash = "sha256:40eb8af662ba409c3cbf4a8150ad32ae73514cd7cb1f1a2113af39763dd616b3", size = 434080 }
430
510
  wheels = [
511
+ { url = "https://files.pythonhosted.org/packages/29/43/0649ad07e66b36a3fb21442b425bd0348ac162c5e686b36471f363201535/pydantic_core-2.33.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:71dffba8fe9ddff628c68f3abd845e91b028361d43c5f8e7b3f8b91d7d85413e", size = 2042968 },
512
+ { url = "https://files.pythonhosted.org/packages/a0/a6/975fea4774a459e495cb4be288efd8b041ac756a0a763f0b976d0861334b/pydantic_core-2.33.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:abaeec1be6ed535a5d7ffc2e6c390083c425832b20efd621562fbb5bff6dc518", size = 1860347 },
513
+ { url = "https://files.pythonhosted.org/packages/aa/49/7858dadad305101a077ec4d0c606b6425a2b134ea8d858458a6d287fd871/pydantic_core-2.33.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:759871f00e26ad3709efc773ac37b4d571de065f9dfb1778012908bcc36b3a73", size = 1910060 },
514
+ { url = "https://files.pythonhosted.org/packages/8d/4f/6522527911d9c5fe6d76b084d8b388d5c84b09d113247b39f91937500b34/pydantic_core-2.33.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:dcfebee69cd5e1c0b76a17e17e347c84b00acebb8dd8edb22d4a03e88e82a207", size = 1997129 },
515
+ { url = "https://files.pythonhosted.org/packages/75/d0/06f396da053e3d73001ea4787e56b4d7132a87c0b5e2e15a041e808c35cd/pydantic_core-2.33.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1b1262b912435a501fa04cd213720609e2cefa723a07c92017d18693e69bf00b", size = 2140389 },
516
+ { url = "https://files.pythonhosted.org/packages/f5/6b/b9ff5b69cd4ef007cf665463f3be2e481dc7eb26c4a55b2f57a94308c31a/pydantic_core-2.33.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4726f1f3f42d6a25678c67da3f0b10f148f5655813c5aca54b0d1742ba821b8f", size = 2754237 },
517
+ { url = "https://files.pythonhosted.org/packages/53/80/b4879de375cdf3718d05fcb60c9aa1f119d28e261dafa51b6a69c78f7178/pydantic_core-2.33.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e790954b5093dff1e3a9a2523fddc4e79722d6f07993b4cd5547825c3cbf97b5", size = 2007433 },
518
+ { url = "https://files.pythonhosted.org/packages/46/24/54054713dc0af98a94eab37e0f4294dfd5cd8f70b2ca9dcdccd15709fd7e/pydantic_core-2.33.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:34e7fb3abe375b5c4e64fab75733d605dda0f59827752debc99c17cb2d5f3276", size = 2123980 },
519
+ { url = "https://files.pythonhosted.org/packages/3a/4c/257c1cb89e14cfa6e95ebcb91b308eb1dd2b348340ff76a6e6fcfa9969e1/pydantic_core-2.33.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ecb158fb9b9091b515213bed3061eb7deb1d3b4e02327c27a0ea714ff46b0760", size = 2087433 },
520
+ { url = "https://files.pythonhosted.org/packages/0c/62/927df8a39ad78ef7b82c5446e01dec9bb0043e1ad71d8f426062f5f014db/pydantic_core-2.33.0-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:4d9149e7528af8bbd76cc055967e6e04617dcb2a2afdaa3dea899406c5521faa", size = 2260242 },
521
+ { url = "https://files.pythonhosted.org/packages/74/f2/389414f7c77a100954e84d6f52a82bd1788ae69db72364376d8a73b38765/pydantic_core-2.33.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e81a295adccf73477220e15ff79235ca9dcbcee4be459eb9d4ce9a2763b8386c", size = 2258227 },
522
+ { url = "https://files.pythonhosted.org/packages/53/99/94516313e15d906a1264bb40faf24a01a4af4e2ca8a7c10dd173b6513c5a/pydantic_core-2.33.0-cp310-cp310-win32.whl", hash = "sha256:f22dab23cdbce2005f26a8f0c71698457861f97fc6318c75814a50c75e87d025", size = 1925523 },
523
+ { url = "https://files.pythonhosted.org/packages/7d/67/cc789611c6035a0b71305a1ec6ba196256ced76eba8375f316f840a70456/pydantic_core-2.33.0-cp310-cp310-win_amd64.whl", hash = "sha256:9cb2390355ba084c1ad49485d18449b4242da344dea3e0fe10babd1f0db7dcfc", size = 1951872 },
524
+ { url = "https://files.pythonhosted.org/packages/f0/93/9e97af2619b4026596487a79133e425c7d3c374f0a7f100f3d76bcdf9c83/pydantic_core-2.33.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:a608a75846804271cf9c83e40bbb4dab2ac614d33c6fd5b0c6187f53f5c593ef", size = 2042784 },
525
+ { url = "https://files.pythonhosted.org/packages/42/b4/0bba8412fd242729feeb80e7152e24f0e1a1c19f4121ca3d4a307f4e6222/pydantic_core-2.33.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e1c69aa459f5609dec2fa0652d495353accf3eda5bdb18782bc5a2ae45c9273a", size = 1858179 },
526
+ { url = "https://files.pythonhosted.org/packages/69/1f/c1c40305d929bd08af863df64b0a26203b70b352a1962d86f3bcd52950fe/pydantic_core-2.33.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9ec80eb5a5f45a2211793f1c4aeddff0c3761d1c70d684965c1807e923a588b", size = 1909396 },
527
+ { url = "https://files.pythonhosted.org/packages/0f/99/d2e727375c329c1e652b5d450fbb9d56e8c3933a397e4bd46e67c68c2cd5/pydantic_core-2.33.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e925819a98318d17251776bd3d6aa9f3ff77b965762155bdad15d1a9265c4cfd", size = 1998264 },
528
+ { url = "https://files.pythonhosted.org/packages/9c/2e/3119a33931278d96ecc2e9e1b9d50c240636cfeb0c49951746ae34e4de74/pydantic_core-2.33.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5bf68bb859799e9cec3d9dd8323c40c00a254aabb56fe08f907e437005932f2b", size = 2140588 },
529
+ { url = "https://files.pythonhosted.org/packages/35/bd/9267bd1ba55f17c80ef6cb7e07b3890b4acbe8eb6014f3102092d53d9300/pydantic_core-2.33.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1b2ea72dea0825949a045fa4071f6d5b3d7620d2a208335207793cf29c5a182d", size = 2746296 },
530
+ { url = "https://files.pythonhosted.org/packages/6f/ed/ef37de6478a412ee627cbebd73e7b72a680f45bfacce9ff1199de6e17e88/pydantic_core-2.33.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1583539533160186ac546b49f5cde9ffc928062c96920f58bd95de32ffd7bffd", size = 2005555 },
531
+ { url = "https://files.pythonhosted.org/packages/dd/84/72c8d1439585d8ee7bc35eb8f88a04a4d302ee4018871f1f85ae1b0c6625/pydantic_core-2.33.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:23c3e77bf8a7317612e5c26a3b084c7edeb9552d645742a54a5867635b4f2453", size = 2124452 },
532
+ { url = "https://files.pythonhosted.org/packages/a7/8f/cb13de30c6a3e303423751a529a3d1271c2effee4b98cf3e397a66ae8498/pydantic_core-2.33.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a7a7f2a3f628d2f7ef11cb6188bcf0b9e1558151d511b974dfea10a49afe192b", size = 2087001 },
533
+ { url = "https://files.pythonhosted.org/packages/83/d0/e93dc8884bf288a63fedeb8040ac8f29cb71ca52e755f48e5170bb63e55b/pydantic_core-2.33.0-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:f1fb026c575e16f673c61c7b86144517705865173f3d0907040ac30c4f9f5915", size = 2261663 },
534
+ { url = "https://files.pythonhosted.org/packages/4c/ba/4b7739c95efa0b542ee45fd872c8f6b1884ab808cf04ce7ac6621b6df76e/pydantic_core-2.33.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:635702b2fed997e0ac256b2cfbdb4dd0bf7c56b5d8fba8ef03489c03b3eb40e2", size = 2257786 },
535
+ { url = "https://files.pythonhosted.org/packages/cc/98/73cbca1d2360c27752cfa2fcdcf14d96230e92d7d48ecd50499865c56bf7/pydantic_core-2.33.0-cp311-cp311-win32.whl", hash = "sha256:07b4ced28fccae3f00626eaa0c4001aa9ec140a29501770a88dbbb0966019a86", size = 1925697 },
536
+ { url = "https://files.pythonhosted.org/packages/9a/26/d85a40edeca5d8830ffc33667d6fef329fd0f4bc0c5181b8b0e206cfe488/pydantic_core-2.33.0-cp311-cp311-win_amd64.whl", hash = "sha256:4927564be53239a87770a5f86bdc272b8d1fbb87ab7783ad70255b4ab01aa25b", size = 1949859 },
537
+ { url = "https://files.pythonhosted.org/packages/7e/0b/5a381605f0b9870465b805f2c86c06b0a7c191668ebe4117777306c2c1e5/pydantic_core-2.33.0-cp311-cp311-win_arm64.whl", hash = "sha256:69297418ad644d521ea3e1aa2e14a2a422726167e9ad22b89e8f1130d68e1e9a", size = 1907978 },
538
+ { url = "https://files.pythonhosted.org/packages/a9/c4/c9381323cbdc1bb26d352bc184422ce77c4bc2f2312b782761093a59fafc/pydantic_core-2.33.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:6c32a40712e3662bebe524abe8abb757f2fa2000028d64cc5a1006016c06af43", size = 2025127 },
539
+ { url = "https://files.pythonhosted.org/packages/6f/bd/af35278080716ecab8f57e84515c7dc535ed95d1c7f52c1c6f7b313a9dab/pydantic_core-2.33.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8ec86b5baa36f0a0bfb37db86c7d52652f8e8aa076ab745ef7725784183c3fdd", size = 1851687 },
540
+ { url = "https://files.pythonhosted.org/packages/12/e4/a01461225809c3533c23bd1916b1e8c2e21727f0fea60ab1acbffc4e2fca/pydantic_core-2.33.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4deac83a8cc1d09e40683be0bc6d1fa4cde8df0a9bf0cda5693f9b0569ac01b6", size = 1892232 },
541
+ { url = "https://files.pythonhosted.org/packages/51/17/3d53d62a328fb0a49911c2962036b9e7a4f781b7d15e9093c26299e5f76d/pydantic_core-2.33.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:175ab598fb457a9aee63206a1993874badf3ed9a456e0654273e56f00747bbd6", size = 1977896 },
542
+ { url = "https://files.pythonhosted.org/packages/30/98/01f9d86e02ec4a38f4b02086acf067f2c776b845d43f901bd1ee1c21bc4b/pydantic_core-2.33.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5f36afd0d56a6c42cf4e8465b6441cf546ed69d3a4ec92724cc9c8c61bd6ecf4", size = 2127717 },
543
+ { url = "https://files.pythonhosted.org/packages/3c/43/6f381575c61b7c58b0fd0b92134c5a1897deea4cdfc3d47567b3ff460a4e/pydantic_core-2.33.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0a98257451164666afafc7cbf5fb00d613e33f7e7ebb322fbcd99345695a9a61", size = 2680287 },
544
+ { url = "https://files.pythonhosted.org/packages/01/42/c0d10d1451d161a9a0da9bbef023b8005aa26e9993a8cc24dc9e3aa96c93/pydantic_core-2.33.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ecc6d02d69b54a2eb83ebcc6f29df04957f734bcf309d346b4f83354d8376862", size = 2008276 },
545
+ { url = "https://files.pythonhosted.org/packages/20/ca/e08df9dba546905c70bae44ced9f3bea25432e34448d95618d41968f40b7/pydantic_core-2.33.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1a69b7596c6603afd049ce7f3835bcf57dd3892fc7279f0ddf987bebed8caa5a", size = 2115305 },
546
+ { url = "https://files.pythonhosted.org/packages/03/1f/9b01d990730a98833113581a78e595fd40ed4c20f9693f5a658fb5f91eff/pydantic_core-2.33.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ea30239c148b6ef41364c6f51d103c2988965b643d62e10b233b5efdca8c0099", size = 2068999 },
547
+ { url = "https://files.pythonhosted.org/packages/20/18/fe752476a709191148e8b1e1139147841ea5d2b22adcde6ee6abb6c8e7cf/pydantic_core-2.33.0-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:abfa44cf2f7f7d7a199be6c6ec141c9024063205545aa09304349781b9a125e6", size = 2241488 },
548
+ { url = "https://files.pythonhosted.org/packages/81/22/14738ad0a0bf484b928c9e52004f5e0b81dd8dabbdf23b843717b37a71d1/pydantic_core-2.33.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:20d4275f3c4659d92048c70797e5fdc396c6e4446caf517ba5cad2db60cd39d3", size = 2248430 },
549
+ { url = "https://files.pythonhosted.org/packages/e8/27/be7571e215ac8d321712f2433c445b03dbcd645366a18f67b334df8912bc/pydantic_core-2.33.0-cp312-cp312-win32.whl", hash = "sha256:918f2013d7eadea1d88d1a35fd4a1e16aaf90343eb446f91cb091ce7f9b431a2", size = 1908353 },
550
+ { url = "https://files.pythonhosted.org/packages/be/3a/be78f28732f93128bd0e3944bdd4b3970b389a1fbd44907c97291c8dcdec/pydantic_core-2.33.0-cp312-cp312-win_amd64.whl", hash = "sha256:aec79acc183865bad120b0190afac467c20b15289050648b876b07777e67ea48", size = 1955956 },
551
+ { url = "https://files.pythonhosted.org/packages/21/26/b8911ac74faa994694b76ee6a22875cc7a4abea3c381fdba4edc6c6bef84/pydantic_core-2.33.0-cp312-cp312-win_arm64.whl", hash = "sha256:5461934e895968655225dfa8b3be79e7e927e95d4bd6c2d40edd2fa7052e71b6", size = 1903259 },
431
552
  { url = "https://files.pythonhosted.org/packages/79/20/de2ad03ce8f5b3accf2196ea9b44f31b0cd16ac6e8cfc6b21976ed45ec35/pydantic_core-2.33.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:f00e8b59e1fc8f09d05594aa7d2b726f1b277ca6155fc84c0396db1b373c4555", size = 2032214 },
432
553
  { url = "https://files.pythonhosted.org/packages/f9/af/6817dfda9aac4958d8b516cbb94af507eb171c997ea66453d4d162ae8948/pydantic_core-2.33.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1a73be93ecef45786d7d95b0c5e9b294faf35629d03d5b145b09b81258c7cd6d", size = 1852338 },
433
554
  { url = "https://files.pythonhosted.org/packages/44/f3/49193a312d9c49314f2b953fb55740b7c530710977cabe7183b8ef111b7f/pydantic_core-2.33.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ff48a55be9da6930254565ff5238d71d5e9cd8c5487a191cb85df3bdb8c77365", size = 1896913 },
@@ -445,6 +566,24 @@ wheels = [
445
566
  { url = "https://files.pythonhosted.org/packages/52/54/295e38769133363d7ec4a5863a4d579f331728c71a6644ff1024ee529315/pydantic_core-2.33.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:7b79af799630af263eca9ec87db519426d8c9b3be35016eddad1832bac812d87", size = 1813331 },
446
567
  { url = "https://files.pythonhosted.org/packages/4c/9c/0c8ea02db8d682aa1ef48938abae833c1d69bdfa6e5ec13b21734b01ae70/pydantic_core-2.33.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eabf946a4739b5237f4f56d77fa6668263bc466d06a8036c055587c130a46f7b", size = 1986653 },
447
568
  { url = "https://files.pythonhosted.org/packages/8e/4f/3fb47d6cbc08c7e00f92300e64ba655428c05c56b8ab6723bd290bae6458/pydantic_core-2.33.0-cp313-cp313t-win_amd64.whl", hash = "sha256:8a1d581e8cdbb857b0e0e81df98603376c1a5c34dc5e54039dcc00f043df81e7", size = 1931234 },
569
+ { url = "https://files.pythonhosted.org/packages/44/77/85e173b715e1a277ce934f28d877d82492df13e564fa68a01c96f36a47ad/pydantic_core-2.33.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:e2762c568596332fdab56b07060c8ab8362c56cf2a339ee54e491cd503612c50", size = 2040129 },
570
+ { url = "https://files.pythonhosted.org/packages/33/e7/33da5f8a94bbe2191cfcd15bd6d16ecd113e67da1b8c78d3cc3478112dab/pydantic_core-2.33.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:5bf637300ff35d4f59c006fff201c510b2b5e745b07125458a5389af3c0dff8c", size = 1872656 },
571
+ { url = "https://files.pythonhosted.org/packages/b4/7a/9600f222bea840e5b9ba1f17c0acc79b669b24542a78c42c6a10712c0aae/pydantic_core-2.33.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:62c151ce3d59ed56ebd7ce9ce5986a409a85db697d25fc232f8e81f195aa39a1", size = 1903731 },
572
+ { url = "https://files.pythonhosted.org/packages/81/d2/94c7ca4e24c5dcfb74df92e0836c189e9eb6814cf62d2f26a75ea0a906db/pydantic_core-2.33.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ee65f0cc652261744fd07f2c6e6901c914aa6c5ff4dcfaf1136bc394d0dd26b", size = 2083966 },
573
+ { url = "https://files.pythonhosted.org/packages/b8/74/a0259989d220e8865ed6866a6d40539e40fa8f507e587e35d2414cc081f8/pydantic_core-2.33.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:024d136ae44d233e6322027bbf356712b3940bee816e6c948ce4b90f18471b3d", size = 2118951 },
574
+ { url = "https://files.pythonhosted.org/packages/13/4c/87405ed04d6d07597920b657f082a8e8e58bf3034178bb9044b4d57a91e2/pydantic_core-2.33.0-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:e37f10f6d4bc67c58fbd727108ae1d8b92b397355e68519f1e4a7babb1473442", size = 2079632 },
575
+ { url = "https://files.pythonhosted.org/packages/5a/4c/bcb02970ef91d4cd6de7c6893101302637da456bc8b52c18ea0d047b55ce/pydantic_core-2.33.0-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:502ed542e0d958bd12e7c3e9a015bce57deaf50eaa8c2e1c439b512cb9db1e3a", size = 2250541 },
576
+ { url = "https://files.pythonhosted.org/packages/a3/2b/dbe5450c4cd904be5da736dcc7f2357b828199e29e38de19fc81f988b288/pydantic_core-2.33.0-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:715c62af74c236bf386825c0fdfa08d092ab0f191eb5b4580d11c3189af9d330", size = 2255685 },
577
+ { url = "https://files.pythonhosted.org/packages/ca/a6/ca1d35f695d81f639c5617fc9efb44caad21a9463383fa45364b3044175a/pydantic_core-2.33.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:bccc06fa0372151f37f6b69834181aa9eb57cf8665ed36405fb45fbf6cac3bae", size = 2082395 },
578
+ { url = "https://files.pythonhosted.org/packages/2b/b2/553e42762e7b08771fca41c0230c1ac276f9e79e78f57628e1b7d328551d/pydantic_core-2.33.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5d8dc9f63a26f7259b57f46a7aab5af86b2ad6fbe48487500bb1f4b27e051e4c", size = 2041207 },
579
+ { url = "https://files.pythonhosted.org/packages/85/81/a91a57bbf3efe53525ab75f65944b8950e6ef84fe3b9a26c1ec173363263/pydantic_core-2.33.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:30369e54d6d0113d2aa5aee7a90d17f225c13d87902ace8fcd7bbf99b19124db", size = 1873736 },
580
+ { url = "https://files.pythonhosted.org/packages/9c/d2/5ab52e9f551cdcbc1ee99a0b3ef595f56d031f66f88e5ca6726c49f9ce65/pydantic_core-2.33.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3eb479354c62067afa62f53bb387827bee2f75c9c79ef25eef6ab84d4b1ae3b", size = 1903794 },
581
+ { url = "https://files.pythonhosted.org/packages/2f/5f/a81742d3f3821b16f1265f057d6e0b68a3ab13a814fe4bffac536a1f26fd/pydantic_core-2.33.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0310524c833d91403c960b8a3cf9f46c282eadd6afd276c8c5edc617bd705dc9", size = 2083457 },
582
+ { url = "https://files.pythonhosted.org/packages/b5/2f/e872005bc0fc47f9c036b67b12349a8522d32e3bda928e82d676e2a594d1/pydantic_core-2.33.0-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:eddb18a00bbb855325db27b4c2a89a4ba491cd6a0bd6d852b225172a1f54b36c", size = 2119537 },
583
+ { url = "https://files.pythonhosted.org/packages/d3/13/183f13ce647202eaf3dada9e42cdfc59cbb95faedd44d25f22b931115c7f/pydantic_core-2.33.0-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:ade5dbcf8d9ef8f4b28e682d0b29f3008df9842bb5ac48ac2c17bc55771cc976", size = 2080069 },
584
+ { url = "https://files.pythonhosted.org/packages/23/8b/b6be91243da44a26558d9c3a9007043b3750334136c6550551e8092d6d96/pydantic_core-2.33.0-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:2c0afd34f928383e3fd25740f2050dbac9d077e7ba5adbaa2227f4d4f3c8da5c", size = 2251618 },
585
+ { url = "https://files.pythonhosted.org/packages/aa/c5/fbcf1977035b834f63eb542e74cd6c807177f383386175b468f0865bcac4/pydantic_core-2.33.0-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:7da333f21cd9df51d5731513a6d39319892947604924ddf2e24a4612975fb936", size = 2255374 },
586
+ { url = "https://files.pythonhosted.org/packages/2f/f8/66f328e411f1c9574b13c2c28ab01f308b53688bbbe6ca8fb981e6cabc42/pydantic_core-2.33.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:4b6d77c75a57f041c5ee915ff0b0bb58eabb78728b69ed967bc5b780e8f701b8", size = 2082099 },
448
587
  ]
449
588
 
450
589
  [[package]]
@@ -497,6 +636,33 @@ version = "6.0.2"
497
636
  source = { registry = "https://pypi.org/simple" }
498
637
  sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631 }
499
638
  wheels = [
639
+ { url = "https://files.pythonhosted.org/packages/9b/95/a3fac87cb7158e231b5a6012e438c647e1a87f09f8e0d123acec8ab8bf71/PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086", size = 184199 },
640
+ { url = "https://files.pythonhosted.org/packages/c7/7a/68bd47624dab8fd4afbfd3c48e3b79efe09098ae941de5b58abcbadff5cb/PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf", size = 171758 },
641
+ { url = "https://files.pythonhosted.org/packages/49/ee/14c54df452143b9ee9f0f29074d7ca5516a36edb0b4cc40c3f280131656f/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237", size = 718463 },
642
+ { url = "https://files.pythonhosted.org/packages/4d/61/de363a97476e766574650d742205be468921a7b532aa2499fcd886b62530/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b", size = 719280 },
643
+ { url = "https://files.pythonhosted.org/packages/6b/4e/1523cb902fd98355e2e9ea5e5eb237cbc5f3ad5f3075fa65087aa0ecb669/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed", size = 751239 },
644
+ { url = "https://files.pythonhosted.org/packages/b7/33/5504b3a9a4464893c32f118a9cc045190a91637b119a9c881da1cf6b7a72/PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180", size = 695802 },
645
+ { url = "https://files.pythonhosted.org/packages/5c/20/8347dcabd41ef3a3cdc4f7b7a2aff3d06598c8779faa189cdbf878b626a4/PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68", size = 720527 },
646
+ { url = "https://files.pythonhosted.org/packages/be/aa/5afe99233fb360d0ff37377145a949ae258aaab831bde4792b32650a4378/PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99", size = 144052 },
647
+ { url = "https://files.pythonhosted.org/packages/b5/84/0fa4b06f6d6c958d207620fc60005e241ecedceee58931bb20138e1e5776/PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e", size = 161774 },
648
+ { url = "https://files.pythonhosted.org/packages/f8/aa/7af4e81f7acba21a4c6be026da38fd2b872ca46226673c89a758ebdc4fd2/PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774", size = 184612 },
649
+ { url = "https://files.pythonhosted.org/packages/8b/62/b9faa998fd185f65c1371643678e4d58254add437edb764a08c5a98fb986/PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee", size = 172040 },
650
+ { url = "https://files.pythonhosted.org/packages/ad/0c/c804f5f922a9a6563bab712d8dcc70251e8af811fce4524d57c2c0fd49a4/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c", size = 736829 },
651
+ { url = "https://files.pythonhosted.org/packages/51/16/6af8d6a6b210c8e54f1406a6b9481febf9c64a3109c541567e35a49aa2e7/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317", size = 764167 },
652
+ { url = "https://files.pythonhosted.org/packages/75/e4/2c27590dfc9992f73aabbeb9241ae20220bd9452df27483b6e56d3975cc5/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85", size = 762952 },
653
+ { url = "https://files.pythonhosted.org/packages/9b/97/ecc1abf4a823f5ac61941a9c00fe501b02ac3ab0e373c3857f7d4b83e2b6/PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4", size = 735301 },
654
+ { url = "https://files.pythonhosted.org/packages/45/73/0f49dacd6e82c9430e46f4a027baa4ca205e8b0a9dce1397f44edc23559d/PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e", size = 756638 },
655
+ { url = "https://files.pythonhosted.org/packages/22/5f/956f0f9fc65223a58fbc14459bf34b4cc48dec52e00535c79b8db361aabd/PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5", size = 143850 },
656
+ { url = "https://files.pythonhosted.org/packages/ed/23/8da0bbe2ab9dcdd11f4f4557ccaf95c10b9811b13ecced089d43ce59c3c8/PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44", size = 161980 },
657
+ { url = "https://files.pythonhosted.org/packages/86/0c/c581167fc46d6d6d7ddcfb8c843a4de25bdd27e4466938109ca68492292c/PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab", size = 183873 },
658
+ { url = "https://files.pythonhosted.org/packages/a8/0c/38374f5bb272c051e2a69281d71cba6fdb983413e6758b84482905e29a5d/PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725", size = 173302 },
659
+ { url = "https://files.pythonhosted.org/packages/c3/93/9916574aa8c00aa06bbac729972eb1071d002b8e158bd0e83a3b9a20a1f7/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5", size = 739154 },
660
+ { url = "https://files.pythonhosted.org/packages/95/0f/b8938f1cbd09739c6da569d172531567dbcc9789e0029aa070856f123984/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425", size = 766223 },
661
+ { url = "https://files.pythonhosted.org/packages/b9/2b/614b4752f2e127db5cc206abc23a8c19678e92b23c3db30fc86ab731d3bd/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476", size = 767542 },
662
+ { url = "https://files.pythonhosted.org/packages/d4/00/dd137d5bcc7efea1836d6264f049359861cf548469d18da90cd8216cf05f/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48", size = 731164 },
663
+ { url = "https://files.pythonhosted.org/packages/c9/1f/4f998c900485e5c0ef43838363ba4a9723ac0ad73a9dc42068b12aaba4e4/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b", size = 756611 },
664
+ { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591 },
665
+ { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338 },
500
666
  { url = "https://files.pythonhosted.org/packages/ef/e3/3af305b830494fa85d95f6d95ef7fa73f2ee1cc8ef5b495c7c3269fb835f/PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba", size = 181309 },
501
667
  { url = "https://files.pythonhosted.org/packages/45/9f/3b1c20a0b7a3200524eb0076cc027a970d320bd3a6592873c85c92a08731/PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1", size = 171679 },
502
668
  { url = "https://files.pythonhosted.org/packages/7c/9a/337322f27005c33bcb656c655fa78325b730324c78620e8328ae28b64d0c/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133", size = 733428 },
@@ -527,6 +693,7 @@ source = { registry = "https://pypi.org/simple" }
527
693
  dependencies = [
528
694
  { name = "markdown-it-py" },
529
695
  { name = "pygments" },
696
+ { name = "typing-extensions", marker = "python_full_version < '3.11'" },
530
697
  ]
531
698
  sdist = { url = "https://files.pythonhosted.org/packages/a1/53/830aa4c3066a8ab0ae9a9955976fb770fe9c6102117c8ec4ab3ea62d89e8/rich-14.0.0.tar.gz", hash = "sha256:82f1bc23a6a21ebca4ae0c45af9bdbc492ed20231dcb63f297d6d1021a9d5725", size = 224078 }
532
699
  wheels = [
@@ -662,6 +829,7 @@ source = { registry = "https://pypi.org/simple" }
662
829
  dependencies = [
663
830
  { name = "click" },
664
831
  { name = "h11" },
832
+ { name = "typing-extensions", marker = "python_full_version < '3.11'" },
665
833
  ]
666
834
  sdist = { url = "https://files.pythonhosted.org/packages/4b/4d/938bd85e5bf2edeec766267a5015ad969730bb91e31b44021dfe8b22df6c/uvicorn-0.34.0.tar.gz", hash = "sha256:404051050cd7e905de2c9a7e61790943440b3416f49cb409f965d9dcd0fa73e9", size = 76568 }
667
835
  wheels = [
@@ -1 +0,0 @@
1
- 3.13
@@ -1,65 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: awslabs.cdk-mcp-server
3
- Version: 0.0.11704
4
- Summary: An AWS CDK MCP server that provides guidance on AWS Cloud Development Kit best practices, infrastructure as code patterns, and security compliance with CDK Nag. This server offers tools to validate infrastructure designs, explain CDK Nag rules, analyze suppressions, generate Bedrock Agent schemas, and discover Solutions Constructs patterns.
5
- Requires-Python: >=3.13
6
- Requires-Dist: aws-lambda-powertools>=2.30.0
7
- Requires-Dist: httpx>=0.27.0
8
- Requires-Dist: mcp[cli]>=1.6.0
9
- Requires-Dist: pydantic>=2.10.6
10
- Description-Content-Type: text/markdown
11
-
12
- # CDK MCP Server
13
-
14
- MCP server for AWS Cloud Development Kit (CDK) best practices, infrastructure as code patterns, and security compliance with CDK Nag.
15
-
16
- ## Features
17
-
18
- ### Tools
19
-
20
- - **CDKGeneralGuidance** - Get prescriptive CDK advice for building applications on AWS
21
- - **ExplainCDKNagRule** - Explain specific CDK Nag rules with AWS Well-Architected guidance
22
- - **CheckCDKNagSuppressions** - Check if CDK code contains Nag suppressions that require human review
23
- - **GenerateBedrockAgentSchemaFromFile** - Generate OpenAPI schema for Bedrock Agent Action Groups from a file
24
- - **GetAwsSolutionsConstructPattern** - Search and discover AWS Solutions Constructs patterns
25
- - **SearchGenAICDKConstructs** - Search for GenAI CDK constructs by name or type
26
-
27
- ### Resources
28
-
29
- - **CDK Nag Rules** - Access rule packs via `cdk-nag://rules/{rule_pack}`
30
- - **Lambda Powertools** - Get guidance on Lambda Powertools via `lambda-powertools://{topic}`
31
- - **AWS Solutions Constructs** - Access patterns via `aws-solutions-constructs://{pattern_name}`
32
- - **GenAI CDK Constructs** - Access documentation via `genai-cdk-constructs://{construct_type}/{construct_name}`
33
-
34
- ## Prerequisites
35
-
36
- 1. Install `uv` from [Astral](https://docs.astral.sh/uv/getting-started/installation/) or the [GitHub README](https://github.com/astral-sh/uv#installation)
37
- 2. Install Python using `uv python install 3.13`
38
-
39
- ## Installation
40
-
41
- Here are some ways you can work with MCP across AWS, and we’ll be adding support to more products including Amazon Q Developer CLI soon: (e.g. for Amazon Q DeveloperCLI MCP, `~/.aws/amazonq/mcp.json`):
42
-
43
- ```json
44
- {
45
- "mcpServers": {
46
- "awslabs.cdk-mcp-server": {
47
- "command": "uvx",
48
- "args": ["awslabs.cdk-mcp-server@latest"],
49
- "disabled": false,
50
- "autoApprove": []
51
- }
52
- }
53
- }
54
- ```
55
-
56
- ## Security Considerations
57
-
58
- When using this MCP server, you should consider:
59
-
60
- - Reviewing all CDK Nag warnings and errors manually
61
- - Fixing security issues rather than suppressing them whenever possible
62
- - Documenting clear justifications for any necessary suppressions
63
- - Using the CheckCDKNagSuppressions tool to verify no unauthorized suppressions exist
64
-
65
- Before applying CDK NAG Suppressions, you should consider conducting your own independent assessment to ensure that your use would comply with your own specific security and quality control practices and standards, as well as the local laws, rules, and regulations that govern you and your content.
@@ -1,54 +0,0 @@
1
- # CDK MCP Server
2
-
3
- MCP server for AWS Cloud Development Kit (CDK) best practices, infrastructure as code patterns, and security compliance with CDK Nag.
4
-
5
- ## Features
6
-
7
- ### Tools
8
-
9
- - **CDKGeneralGuidance** - Get prescriptive CDK advice for building applications on AWS
10
- - **ExplainCDKNagRule** - Explain specific CDK Nag rules with AWS Well-Architected guidance
11
- - **CheckCDKNagSuppressions** - Check if CDK code contains Nag suppressions that require human review
12
- - **GenerateBedrockAgentSchemaFromFile** - Generate OpenAPI schema for Bedrock Agent Action Groups from a file
13
- - **GetAwsSolutionsConstructPattern** - Search and discover AWS Solutions Constructs patterns
14
- - **SearchGenAICDKConstructs** - Search for GenAI CDK constructs by name or type
15
-
16
- ### Resources
17
-
18
- - **CDK Nag Rules** - Access rule packs via `cdk-nag://rules/{rule_pack}`
19
- - **Lambda Powertools** - Get guidance on Lambda Powertools via `lambda-powertools://{topic}`
20
- - **AWS Solutions Constructs** - Access patterns via `aws-solutions-constructs://{pattern_name}`
21
- - **GenAI CDK Constructs** - Access documentation via `genai-cdk-constructs://{construct_type}/{construct_name}`
22
-
23
- ## Prerequisites
24
-
25
- 1. Install `uv` from [Astral](https://docs.astral.sh/uv/getting-started/installation/) or the [GitHub README](https://github.com/astral-sh/uv#installation)
26
- 2. Install Python using `uv python install 3.13`
27
-
28
- ## Installation
29
-
30
- Here are some ways you can work with MCP across AWS, and we’ll be adding support to more products including Amazon Q Developer CLI soon: (e.g. for Amazon Q DeveloperCLI MCP, `~/.aws/amazonq/mcp.json`):
31
-
32
- ```json
33
- {
34
- "mcpServers": {
35
- "awslabs.cdk-mcp-server": {
36
- "command": "uvx",
37
- "args": ["awslabs.cdk-mcp-server@latest"],
38
- "disabled": false,
39
- "autoApprove": []
40
- }
41
- }
42
- }
43
- ```
44
-
45
- ## Security Considerations
46
-
47
- When using this MCP server, you should consider:
48
-
49
- - Reviewing all CDK Nag warnings and errors manually
50
- - Fixing security issues rather than suppressing them whenever possible
51
- - Documenting clear justifications for any necessary suppressions
52
- - Using the CheckCDKNagSuppressions tool to verify no unauthorized suppressions exist
53
-
54
- Before applying CDK NAG Suppressions, you should consider conducting your own independent assessment to ensure that your use would comply with your own specific security and quality control practices and standards, as well as the local laws, rules, and regulations that govern you and your content.
@@ -1,5 +0,0 @@
1
- from importlib import resources
2
-
3
-
4
- with resources.files('awslabs.cdk_mcp_server.static').joinpath('CDK_GENERAL_GUIDANCE.md').open('r') as f:
5
- CDK_GENERAL_GUIDANCE = f.read()