From cfe01fb64348361b068b771b7bf189c65b849d5a Mon Sep 17 00:00:00 2001 From: Stephen Liedig Date: Thu, 26 Jun 2025 08:59:23 +0800 Subject: [PATCH 01/36] feat: add command to list the parameters in parameters store --- unicorn_shared/Makefile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/unicorn_shared/Makefile b/unicorn_shared/Makefile index ffc3833..53074ee 100644 --- a/unicorn_shared/Makefile +++ b/unicorn_shared/Makefile @@ -32,3 +32,6 @@ delete-images: ## Deletes all shared images stacks --stack-name "uni-prop-$$env-images"; \ fi; \ done + +list-parameters: ## Lists all parameters in the Unicorn Properties namespace + aws ssm get-parameters-by-path --path "/uni-prop" --recursive --with-decryption --query 'Parameters[*].[Name,Value,Type]' --output table \ No newline at end of file From 4683f3eeea4c81d0264d90763f240472746bfe46 Mon Sep 17 00:00:00 2001 From: Stephen Liedig Date: Thu, 26 Jun 2025 13:51:12 +0800 Subject: [PATCH 02/36] refactor: renamed UnicornPropertiesNamespace to UnicornApprovalsNamespace in shared namespace definition --- unicorn_shared/uni-prop-namespaces.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/unicorn_shared/uni-prop-namespaces.yaml b/unicorn_shared/uni-prop-namespaces.yaml index 55602fb..3045c2b 100644 --- a/unicorn_shared/uni-prop-namespaces.yaml +++ b/unicorn_shared/uni-prop-namespaces.yaml @@ -14,12 +14,12 @@ Resources: Name: !Sub /uni-prop/UnicornContractsNamespace Value: "unicorn.contracts" - UnicornPropertiesNamespaceParam: + UnicornApprovalsNamespaceParam: Type: AWS::SSM::Parameter Properties: Type: String - Name: !Sub /uni-prop/UnicornPropertiesNamespace - Value: "unicorn.properties" + Name: !Sub /uni-prop/UnicornApprovalsNamespace + Value: "unicorn.approvals" UnicornWebNamespaceParam: Type: AWS::SSM::Parameter @@ -37,7 +37,7 @@ Outputs: UnicornPropertiesNamespace: Description: Unicorn Properties namespace parameter - Value: !Ref UnicornPropertiesNamespaceParam + Value: !Ref UnicornApprovalsNamespaceParam UnicornWebNamespace: Description: Unicorn Web namespace parameter @@ -49,7 +49,7 @@ Outputs: UnicornPropertiesNamespaceValue: Description: Unicorn Properties namespace parameter value - Value: !GetAtt UnicornPropertiesNamespaceParam.Value + Value: !GetAtt UnicornApprovalsNamespaceParam.Value UnicornWebNamespaceValue: Description: Unicorn Web namespace parameter value From 08b7878c8d726ddb261e270a0385d5511ac511bf Mon Sep 17 00:00:00 2001 From: Stephen Liedig Date: Thu, 26 Jun 2025 13:52:46 +0800 Subject: [PATCH 03/36] refactor: updated resolve:ssm references for UnicornPropertiesNamespace to UnicornApprovalsNamespace across multiple templates --- unicorn_contracts/template.yaml | 2 +- .../integration/subscriber-policies.yaml | 2 +- unicorn_properties/template.yaml | 22 +++++++++---------- unicorn_web/integration/subscriptions.yaml | 2 +- unicorn_web/template.yaml | 4 ++-- 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/unicorn_contracts/template.yaml b/unicorn_contracts/template.yaml index 33b2b88..e6262d1 100644 --- a/unicorn_contracts/template.yaml +++ b/unicorn_contracts/template.yaml @@ -293,7 +293,7 @@ Resources: - !Ref AWS::AccountId source: - "{{resolve:ssm:/uni-prop/UnicornContractsNamespace}}" - - "{{resolve:ssm:/uni-prop/UnicornPropertiesNamespace}}" + - "{{resolve:ssm:/uni-prop/UnicornApprovalsNamespace}}" - "{{resolve:ssm:/uni-prop/UnicornWebNamespace}}" State: ENABLED #You may want to disable this rule in production Targets: diff --git a/unicorn_properties/integration/subscriber-policies.yaml b/unicorn_properties/integration/subscriber-policies.yaml index 265c6d4..4cdf924 100644 --- a/unicorn_properties/integration/subscriber-policies.yaml +++ b/unicorn_properties/integration/subscriber-policies.yaml @@ -46,6 +46,6 @@ Resources: "events:creatorAccount": "${aws:PrincipalAccount}" StringEquals: "events:source": - - "{{resolve:ssm:/uni-prop/UnicornPropertiesNamespace}}" + - "{{resolve:ssm:/uni-prop/UnicornApprovalsNamespace}}" "Null": "events:source": "false" diff --git a/unicorn_properties/template.yaml b/unicorn_properties/template.yaml index ab5b2a3..51c1136 100644 --- a/unicorn_properties/template.yaml +++ b/unicorn_properties/template.yaml @@ -54,19 +54,19 @@ Globals: Variables: CONTRACT_STATUS_TABLE: !Ref ContractStatusTable EVENT_BUS: !Ref UnicornPropertiesEventBus - SERVICE_NAMESPACE: "{{resolve:ssm:/uni-prop/UnicornPropertiesNamespace}}" + SERVICE_NAMESPACE: "{{resolve:ssm:/uni-prop/UnicornApprovalsNamespace}}" POWERTOOLS_LOGGER_CASE: PascalCase - POWERTOOLS_SERVICE_NAME: "{{resolve:ssm:/uni-prop/UnicornPropertiesNamespace}}" + POWERTOOLS_SERVICE_NAME: "{{resolve:ssm:/uni-prop/UnicornApprovalsNamespace}}" POWERTOOLS_TRACE_DISABLED: "false" # Explicitly disables tracing, default POWERTOOLS_LOGGER_LOG_EVENT: !If [IsProd, "false", "true"] # Logs incoming event, default POWERTOOLS_LOGGER_SAMPLE_RATE: !If [IsProd, "0.1", "0"] # Debug log sampling percentage, default - POWERTOOLS_METRICS_NAMESPACE: "{{resolve:ssm:/uni-prop/UnicornPropertiesNamespace}}" + POWERTOOLS_METRICS_NAMESPACE: "{{resolve:ssm:/uni-prop/UnicornApprovalsNamespace}}" POWERTOOLS_LOG_LEVEL: INFO # Log level for Logger (INFO, DEBUG, etc.), default LOG_LEVEL: INFO # Log level for Logger Tags: stage: !Ref Stage project: !FindInMap [Constants, ProjectName, Value] - namespace: "{{resolve:ssm:/uni-prop/UnicornPropertiesNamespace}}" + namespace: "{{resolve:ssm:/uni-prop/UnicornApprovalsNamespace}}" Resources: #### SSM PARAMETERS @@ -261,7 +261,7 @@ Resources: TableName: !Ref ContractStatusTable ImageUploadBucketName: !Sub "{{resolve:ssm:/uni-prop/${Stage}/ImagesBucket}}" EventBusName: !GetAtt UnicornPropertiesEventBus.Name - ServiceName: "{{resolve:ssm:/uni-prop/UnicornPropertiesNamespace}}" + ServiceName: "{{resolve:ssm:/uni-prop/UnicornApprovalsNamespace}}" # Store ApprovalStateMachineLogGroup workflow execution logs ApprovalStateMachineLogGroup: @@ -285,7 +285,7 @@ Resources: - Key: project Value: !FindInMap [Constants, ProjectName, Value] - Key: namespace - Value: "{{resolve:ssm:/uni-prop/UnicornPropertiesNamespace}}" + Value: "{{resolve:ssm:/uni-prop/UnicornApprovalsNamespace}}" - Key: stage Value: !Ref Stage @@ -301,7 +301,7 @@ Resources: - Key: project Value: !FindInMap [Constants, ProjectName, Value] - Key: namespace - Value: "{{resolve:ssm:/uni-prop/UnicornPropertiesNamespace}}" + Value: "{{resolve:ssm:/uni-prop/UnicornApprovalsNamespace}}" - Key: stage Value: !Ref Stage @@ -324,7 +324,7 @@ Resources: - Key: project Value: !FindInMap [Constants, ProjectName, Value] - Key: namespace - Value: "{{resolve:ssm:/uni-prop/UnicornPropertiesNamespace}}" + Value: "{{resolve:ssm:/uni-prop/UnicornApprovalsNamespace}}" - Key: stage Value: !Ref Stage @@ -355,7 +355,7 @@ Resources: Condition: StringEquals: events:source: - - "{{resolve:ssm:/uni-prop/UnicornPropertiesNamespace}}" + - "{{resolve:ssm:/uni-prop/UnicornApprovalsNamespace}}" # Catchall rule used for development purposes. Logs all events matching any of the services to CloudWatch Logs UnicornPropertiesCatchAllRule: @@ -371,7 +371,7 @@ Resources: - !Ref AWS::AccountId source: - "{{resolve:ssm:/uni-prop/UnicornContractsNamespace}}" - - "{{resolve:ssm:/uni-prop/UnicornPropertiesNamespace}}" + - "{{resolve:ssm:/uni-prop/UnicornApprovalsNamespace}}" - "{{resolve:ssm:/uni-prop/UnicornWebNamespace}}" State: ENABLED #You may want to disable this rule in production Targets: @@ -387,7 +387,7 @@ Resources: LogGroupName: !Sub - "/aws/events/${Stage}/${NS}-catchall" - Stage: !Ref Stage - NS: "{{resolve:ssm:/uni-prop/UnicornPropertiesNamespace}}" + NS: "{{resolve:ssm:/uni-prop/UnicornApprovalsNamespace}}" RetentionInDays: !FindInMap [LogsRetentionPeriodMap, !Ref Stage, Days] # Permissions to allow EventBridge to send logs to CloudWatch diff --git a/unicorn_web/integration/subscriptions.yaml b/unicorn_web/integration/subscriptions.yaml index b8f6cd7..adf2484 100644 --- a/unicorn_web/integration/subscriptions.yaml +++ b/unicorn_web/integration/subscriptions.yaml @@ -23,7 +23,7 @@ Resources: Fn::Sub: "{{resolve:ssm:/uni-prop/${Stage}/UnicornPropertiesEventBusArn}}" EventPattern: source: - - "{{resolve:ssm:/uni-prop/UnicornPropertiesNamespace}}" + - "{{resolve:ssm:/uni-prop/UnicornApprovalsNamespace}}" detail-type: - PublicationEvaluationCompleted State: ENABLED diff --git a/unicorn_web/template.yaml b/unicorn_web/template.yaml index 9e2211a..130366f 100644 --- a/unicorn_web/template.yaml +++ b/unicorn_web/template.yaml @@ -157,7 +157,7 @@ Resources: EventBusName: !Ref UnicornWebEventBus Pattern: source: - - "{{resolve:ssm:/uni-prop/UnicornPropertiesNamespace}}" + - "{{resolve:ssm:/uni-prop/UnicornApprovalsNamespace}}" detail-type: - PublicationEvaluationCompleted @@ -362,7 +362,7 @@ Resources: - !Ref AWS::AccountId source: - "{{resolve:ssm:/uni-prop/UnicornContractsNamespace}}" - - "{{resolve:ssm:/uni-prop/UnicornPropertiesNamespace}}" + - "{{resolve:ssm:/uni-prop/UnicornApprovalsNamespace}}" - "{{resolve:ssm:/uni-prop/UnicornWebNamespace}}" State: ENABLED #You may want to disable this rule in production Targets: From 6026ae857a3324d33102dbf049e18ad6b487a2c3 Mon Sep 17 00:00:00 2001 From: Stephen Liedig Date: Mon, 7 Jul 2025 07:41:26 +0800 Subject: [PATCH 04/36] refactor: rename unicorn properties to unicorn approvals --- .../.gitignore | 0 .../Makefile | 0 .../README.md | 0 .../__init__.py | 0 .../PublicationEvaluationCompleted.json | 0 .../integration/event-schemas.yaml | 4 +- .../integration/subscriber-policies.yaml | 4 +- .../integration/subscriptions.yaml | 8 ++-- .../pyproject.toml | 0 .../pytest.ini | 0 .../ruff.toml | 0 .../samconfig.toml | 4 +- .../src/README.md | 0 .../src/__init__.py | 0 .../src/properties_service/__init__.py | 0 .../contract_status_changed_event_handler.py | 0 .../src/properties_service/exceptions.py | 0 .../properties_approval_sync_function.py | 0 .../wait_for_contract_approval_function.py | 0 .../contractstatuschanged/AWSEvent.py | 0 .../ContractStatusChanged.py | 0 .../contractstatuschanged/__init__.py | 0 .../contractstatuschanged/marshaller.py | 0 .../publicationapprovalrequested/AWSEvent.py | 0 .../PublicationApprovalRequested.py | 0 .../publicationapprovalrequested/__init__.py | 0 .../marshaller.py | 0 .../state_machine/property_approval.asl.yaml | 0 .../template.yaml | 38 +++++++++---------- .../tests/__init__.py | 0 .../tests/unit/__init__.py | 0 .../tests/unit/conftest.py | 0 .../contract_status_changed_draft.json | 0 .../ddb_stream_events/sfn_check_exists.json | 0 .../ddb_stream_events/sfn_wait_approval.json | 0 .../status_approved_waiting_for_approval.json | 0 .../status_approved_with_no_workflow.json | 0 .../eventbridge/contract_status_changed.json | 0 ...tus_changed_event_contract_1_approved.json | 0 ...status_changed_event_contract_1_draft.json | 0 ...tus_changed_event_contract_2_approved.json | 0 ...status_changed_event_contract_2_draft.json | 0 .../publication_approval_requested_event.json | 0 ...ion_approval_requested_event_all_good.json | 0 ...ested_event_inappropriate_description.json | 0 ..._requested_event_inappropriate_images.json | 0 ...requested_event_non_existing_contract.json | 0 ...proval_requested_event_pause_workflow.json | 0 ...ublication_evaluation_completed_event.json | 0 ...put_event_property_approval_requested.json | 0 ..._integrity_validator_function_success.json | 0 .../lambda/contract_status_checker.json | 0 .../wait_for_contract_approval_function.json | 0 .../tests/unit/helper.py | 0 ...t_contract_status_changed_event_handler.py | 0 .../test_properties_approval_sync_function.py | 0 ...est_wait_for_contract_approval_function.py | 0 .../uv.lock | 0 58 files changed, 29 insertions(+), 29 deletions(-) rename {unicorn_properties => unicorn_approvals}/.gitignore (100%) rename {unicorn_properties => unicorn_approvals}/Makefile (100%) rename {unicorn_properties => unicorn_approvals}/README.md (100%) rename {unicorn_properties => unicorn_approvals}/__init__.py (100%) rename {unicorn_properties => unicorn_approvals}/integration/PublicationEvaluationCompleted.json (100%) rename {unicorn_properties => unicorn_approvals}/integration/event-schemas.yaml (95%) rename {unicorn_properties => unicorn_approvals}/integration/subscriber-policies.yaml (93%) rename {unicorn_properties => unicorn_approvals}/integration/subscriptions.yaml (92%) rename {unicorn_properties => unicorn_approvals}/pyproject.toml (100%) rename {unicorn_properties => unicorn_approvals}/pytest.ini (100%) rename {unicorn_properties => unicorn_approvals}/ruff.toml (100%) rename {unicorn_properties => unicorn_approvals}/samconfig.toml (87%) rename {unicorn_properties => unicorn_approvals}/src/README.md (100%) rename {unicorn_properties => unicorn_approvals}/src/__init__.py (100%) rename {unicorn_properties => unicorn_approvals}/src/properties_service/__init__.py (100%) rename {unicorn_properties => unicorn_approvals}/src/properties_service/contract_status_changed_event_handler.py (100%) rename {unicorn_properties => unicorn_approvals}/src/properties_service/exceptions.py (100%) rename {unicorn_properties => unicorn_approvals}/src/properties_service/properties_approval_sync_function.py (100%) rename {unicorn_properties => unicorn_approvals}/src/properties_service/wait_for_contract_approval_function.py (100%) rename {unicorn_properties => unicorn_approvals}/src/schema/unicorn_contracts/contractstatuschanged/AWSEvent.py (100%) rename {unicorn_properties => unicorn_approvals}/src/schema/unicorn_contracts/contractstatuschanged/ContractStatusChanged.py (100%) rename {unicorn_properties => unicorn_approvals}/src/schema/unicorn_contracts/contractstatuschanged/__init__.py (100%) rename {unicorn_properties => unicorn_approvals}/src/schema/unicorn_contracts/contractstatuschanged/marshaller.py (100%) rename {unicorn_properties => unicorn_approvals}/src/schema/unicorn_web/publicationapprovalrequested/AWSEvent.py (100%) rename {unicorn_properties => unicorn_approvals}/src/schema/unicorn_web/publicationapprovalrequested/PublicationApprovalRequested.py (100%) rename {unicorn_properties => unicorn_approvals}/src/schema/unicorn_web/publicationapprovalrequested/__init__.py (100%) rename {unicorn_properties => unicorn_approvals}/src/schema/unicorn_web/publicationapprovalrequested/marshaller.py (100%) rename {unicorn_properties => unicorn_approvals}/state_machine/property_approval.asl.yaml (100%) rename {unicorn_properties => unicorn_approvals}/template.yaml (94%) rename {unicorn_properties => unicorn_approvals}/tests/__init__.py (100%) rename {unicorn_properties => unicorn_approvals}/tests/unit/__init__.py (100%) rename {unicorn_properties => unicorn_approvals}/tests/unit/conftest.py (100%) rename {unicorn_properties => unicorn_approvals}/tests/unit/events/ddb_stream_events/contract_status_changed_draft.json (100%) rename {unicorn_properties => unicorn_approvals}/tests/unit/events/ddb_stream_events/sfn_check_exists.json (100%) rename {unicorn_properties => unicorn_approvals}/tests/unit/events/ddb_stream_events/sfn_wait_approval.json (100%) rename {unicorn_properties => unicorn_approvals}/tests/unit/events/ddb_stream_events/status_approved_waiting_for_approval.json (100%) rename {unicorn_properties => unicorn_approvals}/tests/unit/events/ddb_stream_events/status_approved_with_no_workflow.json (100%) rename {unicorn_properties => unicorn_approvals}/tests/unit/events/eventbridge/contract_status_changed.json (100%) rename {unicorn_properties => unicorn_approvals}/tests/unit/events/eventbridge/contract_status_changed_event_contract_1_approved.json (100%) rename {unicorn_properties => unicorn_approvals}/tests/unit/events/eventbridge/contract_status_changed_event_contract_1_draft.json (100%) rename {unicorn_properties => unicorn_approvals}/tests/unit/events/eventbridge/contract_status_changed_event_contract_2_approved.json (100%) rename {unicorn_properties => unicorn_approvals}/tests/unit/events/eventbridge/contract_status_changed_event_contract_2_draft.json (100%) rename {unicorn_properties => unicorn_approvals}/tests/unit/events/eventbridge/publication_approval_requested_event.json (100%) rename {unicorn_properties => unicorn_approvals}/tests/unit/events/eventbridge/publication_approval_requested_event_all_good.json (100%) rename {unicorn_properties => unicorn_approvals}/tests/unit/events/eventbridge/publication_approval_requested_event_inappropriate_description.json (100%) rename {unicorn_properties => unicorn_approvals}/tests/unit/events/eventbridge/publication_approval_requested_event_inappropriate_images.json (100%) rename {unicorn_properties => unicorn_approvals}/tests/unit/events/eventbridge/publication_approval_requested_event_non_existing_contract.json (100%) rename {unicorn_properties => unicorn_approvals}/tests/unit/events/eventbridge/publication_approval_requested_event_pause_workflow.json (100%) rename {unicorn_properties => unicorn_approvals}/tests/unit/events/eventbridge/publication_evaluation_completed_event.json (100%) rename {unicorn_properties => unicorn_approvals}/tests/unit/events/eventbridge/put_event_property_approval_requested.json (100%) rename {unicorn_properties => unicorn_approvals}/tests/unit/events/lambda/content_integrity_validator_function_success.json (100%) rename {unicorn_properties => unicorn_approvals}/tests/unit/events/lambda/contract_status_checker.json (100%) rename {unicorn_properties => unicorn_approvals}/tests/unit/events/lambda/wait_for_contract_approval_function.json (100%) rename {unicorn_properties => unicorn_approvals}/tests/unit/helper.py (100%) rename {unicorn_properties => unicorn_approvals}/tests/unit/test_contract_status_changed_event_handler.py (100%) rename {unicorn_properties => unicorn_approvals}/tests/unit/test_properties_approval_sync_function.py (100%) rename {unicorn_properties => unicorn_approvals}/tests/unit/test_wait_for_contract_approval_function.py (100%) rename {unicorn_properties => unicorn_approvals}/uv.lock (100%) diff --git a/unicorn_properties/.gitignore b/unicorn_approvals/.gitignore similarity index 100% rename from unicorn_properties/.gitignore rename to unicorn_approvals/.gitignore diff --git a/unicorn_properties/Makefile b/unicorn_approvals/Makefile similarity index 100% rename from unicorn_properties/Makefile rename to unicorn_approvals/Makefile diff --git a/unicorn_properties/README.md b/unicorn_approvals/README.md similarity index 100% rename from unicorn_properties/README.md rename to unicorn_approvals/README.md diff --git a/unicorn_properties/__init__.py b/unicorn_approvals/__init__.py similarity index 100% rename from unicorn_properties/__init__.py rename to unicorn_approvals/__init__.py diff --git a/unicorn_properties/integration/PublicationEvaluationCompleted.json b/unicorn_approvals/integration/PublicationEvaluationCompleted.json similarity index 100% rename from unicorn_properties/integration/PublicationEvaluationCompleted.json rename to unicorn_approvals/integration/PublicationEvaluationCompleted.json diff --git a/unicorn_properties/integration/event-schemas.yaml b/unicorn_approvals/integration/event-schemas.yaml similarity index 95% rename from unicorn_properties/integration/event-schemas.yaml rename to unicorn_approvals/integration/event-schemas.yaml index adde88d..2a05fff 100644 --- a/unicorn_properties/integration/event-schemas.yaml +++ b/unicorn_approvals/integration/event-schemas.yaml @@ -18,7 +18,7 @@ Resources: Properties: Description: 'Event schemas for Unicorn Properties' RegistryName: - Fn::Sub: "{{resolve:ssm:/uni-prop/UnicornPropertiesNamespace}}-${Stage}" + Fn::Sub: "{{resolve:ssm:/uni-prop/UnicornApprovalsNamespace}}-${Stage}" EventRegistryPolicy: Type: AWS::EventSchemas::RegistryPolicy @@ -52,7 +52,7 @@ Resources: RegistryName: Fn::GetAtt: EventRegistry.RegistryName SchemaName: - Fn::Sub: '{{resolve:ssm:/uni-prop/UnicornPropertiesNamespace}}@PublicationEvaluationCompleted' + Fn::Sub: '{{resolve:ssm:/uni-prop/UnicornApprovalsNamespace}}@PublicationEvaluationCompleted' Description: 'The schema for when a property evaluation is completed' Content: Fn::Sub: | diff --git a/unicorn_properties/integration/subscriber-policies.yaml b/unicorn_approvals/integration/subscriber-policies.yaml similarity index 93% rename from unicorn_properties/integration/subscriber-policies.yaml rename to unicorn_approvals/integration/subscriber-policies.yaml index 4cdf924..d41211b 100644 --- a/unicorn_properties/integration/subscriber-policies.yaml +++ b/unicorn_approvals/integration/subscriber-policies.yaml @@ -20,7 +20,7 @@ Resources: Type: AWS::Events::EventBusPolicy Properties: EventBusName: - Fn::Sub: "{{resolve:ssm:/uni-prop/${Stage}/UnicornPropertiesEventBus}}" + Fn::Sub: "{{resolve:ssm:/uni-prop/${Stage}/UnicornApprovalsEventBus}}" StatementId: Fn::Sub: "OnlyRulesForPropertiesServiceEvents-${Stage}" Statement: @@ -40,7 +40,7 @@ Resources: - Fn::Sub: - arn:${AWS::Partition}:events:${AWS::Region}:${AWS::AccountId}:rule/${eventBusName}/* - eventBusName: - Fn::Sub: "{{resolve:ssm:/uni-prop/${Stage}/UnicornPropertiesEventBus}}" + Fn::Sub: "{{resolve:ssm:/uni-prop/${Stage}/UnicornApprovalsEventBus}}" Condition: StringEqualsIfExists: "events:creatorAccount": "${aws:PrincipalAccount}" diff --git a/unicorn_properties/integration/subscriptions.yaml b/unicorn_approvals/integration/subscriptions.yaml similarity index 92% rename from unicorn_properties/integration/subscriptions.yaml rename to unicorn_approvals/integration/subscriptions.yaml index b908185..5929ffd 100644 --- a/unicorn_properties/integration/subscriptions.yaml +++ b/unicorn_approvals/integration/subscriptions.yaml @@ -32,7 +32,7 @@ Resources: Targets: - Id: SendEventTo Arn: - Fn::Sub: "{{resolve:ssm:/uni-prop/${Stage}/UnicornPropertiesEventBusArn}}" + Fn::Sub: "{{resolve:ssm:/uni-prop/${Stage}/UnicornApprovalsEventBusArn}}" RoleArn: Fn::GetAtt: [ UnicornPropertiesSubscriptionRole, Arn ] @@ -55,13 +55,13 @@ Resources: Targets: - Id: SendEventTo Arn: - Fn::Sub: "{{resolve:ssm:/uni-prop/${Stage}/UnicornPropertiesEventBusArn}}" + Fn::Sub: "{{resolve:ssm:/uni-prop/${Stage}/UnicornApprovalsEventBusArn}}" RoleArn: Fn::GetAtt: [ UnicornPropertiesSubscriptionRole, Arn ] # This IAM role allows EventBridge to assume the permissions necessary to send events - # from the publishing event bus, to the subscribing event bus (UnicornPropertiesEventBusArn) + # from the publishing event bus, to the subscribing event bus (UnicornApprovalsEventBusArn) UnicornPropertiesSubscriptionRole: Type: AWS::IAM::Role DeletionPolicy: Delete @@ -81,7 +81,7 @@ Resources: - Effect: Allow Action: events:PutEvents Resource: - Fn::Sub: "{{resolve:ssm:/uni-prop/${Stage}/UnicornPropertiesEventBusArn}}" + Fn::Sub: "{{resolve:ssm:/uni-prop/${Stage}/UnicornApprovalsEventBusArn}}" Outputs: ContractStatusChangedSubscription: diff --git a/unicorn_properties/pyproject.toml b/unicorn_approvals/pyproject.toml similarity index 100% rename from unicorn_properties/pyproject.toml rename to unicorn_approvals/pyproject.toml diff --git a/unicorn_properties/pytest.ini b/unicorn_approvals/pytest.ini similarity index 100% rename from unicorn_properties/pytest.ini rename to unicorn_approvals/pytest.ini diff --git a/unicorn_properties/ruff.toml b/unicorn_approvals/ruff.toml similarity index 100% rename from unicorn_properties/ruff.toml rename to unicorn_approvals/ruff.toml diff --git a/unicorn_properties/samconfig.toml b/unicorn_approvals/samconfig.toml similarity index 87% rename from unicorn_properties/samconfig.toml rename to unicorn_approvals/samconfig.toml index 80abe0b..e8b9e83 100644 --- a/unicorn_properties/samconfig.toml +++ b/unicorn_approvals/samconfig.toml @@ -1,8 +1,8 @@ version = 0.1 [default.global.parameters] -stack_name = "uni-prop-local-properties" -s3_prefix = "uni-prop-local-properties" +stack_name = "uni-prop-local-approvals" +s3_prefix = "uni-prop-local-approvals" resolve_s3 = true resolve_image_repositories = true diff --git a/unicorn_properties/src/README.md b/unicorn_approvals/src/README.md similarity index 100% rename from unicorn_properties/src/README.md rename to unicorn_approvals/src/README.md diff --git a/unicorn_properties/src/__init__.py b/unicorn_approvals/src/__init__.py similarity index 100% rename from unicorn_properties/src/__init__.py rename to unicorn_approvals/src/__init__.py diff --git a/unicorn_properties/src/properties_service/__init__.py b/unicorn_approvals/src/properties_service/__init__.py similarity index 100% rename from unicorn_properties/src/properties_service/__init__.py rename to unicorn_approvals/src/properties_service/__init__.py diff --git a/unicorn_properties/src/properties_service/contract_status_changed_event_handler.py b/unicorn_approvals/src/properties_service/contract_status_changed_event_handler.py similarity index 100% rename from unicorn_properties/src/properties_service/contract_status_changed_event_handler.py rename to unicorn_approvals/src/properties_service/contract_status_changed_event_handler.py diff --git a/unicorn_properties/src/properties_service/exceptions.py b/unicorn_approvals/src/properties_service/exceptions.py similarity index 100% rename from unicorn_properties/src/properties_service/exceptions.py rename to unicorn_approvals/src/properties_service/exceptions.py diff --git a/unicorn_properties/src/properties_service/properties_approval_sync_function.py b/unicorn_approvals/src/properties_service/properties_approval_sync_function.py similarity index 100% rename from unicorn_properties/src/properties_service/properties_approval_sync_function.py rename to unicorn_approvals/src/properties_service/properties_approval_sync_function.py diff --git a/unicorn_properties/src/properties_service/wait_for_contract_approval_function.py b/unicorn_approvals/src/properties_service/wait_for_contract_approval_function.py similarity index 100% rename from unicorn_properties/src/properties_service/wait_for_contract_approval_function.py rename to unicorn_approvals/src/properties_service/wait_for_contract_approval_function.py diff --git a/unicorn_properties/src/schema/unicorn_contracts/contractstatuschanged/AWSEvent.py b/unicorn_approvals/src/schema/unicorn_contracts/contractstatuschanged/AWSEvent.py similarity index 100% rename from unicorn_properties/src/schema/unicorn_contracts/contractstatuschanged/AWSEvent.py rename to unicorn_approvals/src/schema/unicorn_contracts/contractstatuschanged/AWSEvent.py diff --git a/unicorn_properties/src/schema/unicorn_contracts/contractstatuschanged/ContractStatusChanged.py b/unicorn_approvals/src/schema/unicorn_contracts/contractstatuschanged/ContractStatusChanged.py similarity index 100% rename from unicorn_properties/src/schema/unicorn_contracts/contractstatuschanged/ContractStatusChanged.py rename to unicorn_approvals/src/schema/unicorn_contracts/contractstatuschanged/ContractStatusChanged.py diff --git a/unicorn_properties/src/schema/unicorn_contracts/contractstatuschanged/__init__.py b/unicorn_approvals/src/schema/unicorn_contracts/contractstatuschanged/__init__.py similarity index 100% rename from unicorn_properties/src/schema/unicorn_contracts/contractstatuschanged/__init__.py rename to unicorn_approvals/src/schema/unicorn_contracts/contractstatuschanged/__init__.py diff --git a/unicorn_properties/src/schema/unicorn_contracts/contractstatuschanged/marshaller.py b/unicorn_approvals/src/schema/unicorn_contracts/contractstatuschanged/marshaller.py similarity index 100% rename from unicorn_properties/src/schema/unicorn_contracts/contractstatuschanged/marshaller.py rename to unicorn_approvals/src/schema/unicorn_contracts/contractstatuschanged/marshaller.py diff --git a/unicorn_properties/src/schema/unicorn_web/publicationapprovalrequested/AWSEvent.py b/unicorn_approvals/src/schema/unicorn_web/publicationapprovalrequested/AWSEvent.py similarity index 100% rename from unicorn_properties/src/schema/unicorn_web/publicationapprovalrequested/AWSEvent.py rename to unicorn_approvals/src/schema/unicorn_web/publicationapprovalrequested/AWSEvent.py diff --git a/unicorn_properties/src/schema/unicorn_web/publicationapprovalrequested/PublicationApprovalRequested.py b/unicorn_approvals/src/schema/unicorn_web/publicationapprovalrequested/PublicationApprovalRequested.py similarity index 100% rename from unicorn_properties/src/schema/unicorn_web/publicationapprovalrequested/PublicationApprovalRequested.py rename to unicorn_approvals/src/schema/unicorn_web/publicationapprovalrequested/PublicationApprovalRequested.py diff --git a/unicorn_properties/src/schema/unicorn_web/publicationapprovalrequested/__init__.py b/unicorn_approvals/src/schema/unicorn_web/publicationapprovalrequested/__init__.py similarity index 100% rename from unicorn_properties/src/schema/unicorn_web/publicationapprovalrequested/__init__.py rename to unicorn_approvals/src/schema/unicorn_web/publicationapprovalrequested/__init__.py diff --git a/unicorn_properties/src/schema/unicorn_web/publicationapprovalrequested/marshaller.py b/unicorn_approvals/src/schema/unicorn_web/publicationapprovalrequested/marshaller.py similarity index 100% rename from unicorn_properties/src/schema/unicorn_web/publicationapprovalrequested/marshaller.py rename to unicorn_approvals/src/schema/unicorn_web/publicationapprovalrequested/marshaller.py diff --git a/unicorn_properties/state_machine/property_approval.asl.yaml b/unicorn_approvals/state_machine/property_approval.asl.yaml similarity index 100% rename from unicorn_properties/state_machine/property_approval.asl.yaml rename to unicorn_approvals/state_machine/property_approval.asl.yaml diff --git a/unicorn_properties/template.yaml b/unicorn_approvals/template.yaml similarity index 94% rename from unicorn_properties/template.yaml rename to unicorn_approvals/template.yaml index 51c1136..1b49300 100644 --- a/unicorn_properties/template.yaml +++ b/unicorn_approvals/template.yaml @@ -53,7 +53,7 @@ Globals: Environment: Variables: CONTRACT_STATUS_TABLE: !Ref ContractStatusTable - EVENT_BUS: !Ref UnicornPropertiesEventBus + EVENT_BUS: !Ref UnicornApprovalsEventBus SERVICE_NAMESPACE: "{{resolve:ssm:/uni-prop/UnicornApprovalsNamespace}}" POWERTOOLS_LOGGER_CASE: PascalCase POWERTOOLS_SERVICE_NAME: "{{resolve:ssm:/uni-prop/UnicornApprovalsNamespace}}" @@ -71,23 +71,23 @@ Globals: Resources: #### SSM PARAMETERS # Services share their event bus name and arn - UnicornPropertiesEventBusNameParam: + UnicornApprovalsEventBusNameParam: Type: AWS::SSM::Parameter DeletionPolicy: Delete UpdateReplacePolicy: Delete Properties: Type: String - Name: !Sub /uni-prop/${Stage}/UnicornPropertiesEventBus - Value: !GetAtt UnicornPropertiesEventBus.Name + Name: !Sub /uni-prop/${Stage}/UnicornApprovalsEventBus + Value: !GetAtt UnicornApprovalsEventBus.Name - UnicornPropertiesEventBusArnParam: + UnicornApprovalsEventBusArnParam: Type: AWS::SSM::Parameter DeletionPolicy: Delete UpdateReplacePolicy: Delete Properties: Type: String - Name: !Sub /uni-prop/${Stage}/UnicornPropertiesEventBusArn - Value: !GetAtt UnicornPropertiesEventBus.Arn + Name: !Sub /uni-prop/${Stage}/UnicornApprovalsEventBusArn + Value: !GetAtt UnicornApprovalsEventBus.Arn #### LAMBDA FUNCTIONS # Listens to ContractStatusChanged events from EventBridge @@ -106,7 +106,7 @@ Resources: Type: EventBridgeRule Properties: RuleName: unicorn.properties-ContractStatusChanged - EventBusName: !GetAtt UnicornPropertiesEventBus.Name + EventBusName: !GetAtt UnicornApprovalsEventBus.Name Pattern: source: - "{{resolve:ssm:/uni-prop/UnicornContractsNamespace}}" @@ -219,7 +219,7 @@ Resources: - S3ReadPolicy: BucketName: !Sub "{{resolve:ssm:/uni-prop/${Stage}/ImagesBucket}}" - EventBridgePutEventsPolicy: - EventBusName: !GetAtt UnicornPropertiesEventBus.Name + EventBusName: !GetAtt UnicornApprovalsEventBus.Name - Statement: - Effect: Allow Action: @@ -244,7 +244,7 @@ Resources: Type: EventBridgeRule Properties: RuleName: unicorn.properties-PublicationApprovalRequested - EventBusName: !GetAtt UnicornPropertiesEventBus.Name + EventBusName: !GetAtt UnicornApprovalsEventBus.Name Pattern: source: - "{{resolve:ssm:/uni-prop/UnicornWebNamespace}}" @@ -260,7 +260,7 @@ Resources: WaitForContractApprovalArn: !GetAtt WaitForContractApprovalFunction.Arn TableName: !Ref ContractStatusTable ImageUploadBucketName: !Sub "{{resolve:ssm:/uni-prop/${Stage}/ImagesBucket}}" - EventBusName: !GetAtt UnicornPropertiesEventBus.Name + EventBusName: !GetAtt UnicornApprovalsEventBus.Name ServiceName: "{{resolve:ssm:/uni-prop/UnicornApprovalsNamespace}}" # Store ApprovalStateMachineLogGroup workflow execution logs @@ -330,20 +330,20 @@ Resources: #### EVENT BUS # Event bus for Unicorn Properties Service, used to publish and consume events - UnicornPropertiesEventBus: + UnicornApprovalsEventBus: Type: AWS::Events::EventBus DeletionPolicy: Delete UpdateReplacePolicy: Delete Properties: Name: !Sub UnicornPropertiesBus-${Stage} - # Event bus policy to restrict who can publish events (should only be services from UnicornPropertiesNamespace) + # Event bus policy to restrict who can publish events (should only be services from UnicornApprovalsNamespace) UnicornPropertiesEventsBusPublishPolicy: Type: AWS::Events::EventBusPolicy DeletionPolicy: Delete UpdateReplacePolicy: Delete Properties: - EventBusName: !Ref UnicornPropertiesEventBus + EventBusName: !Ref UnicornApprovalsEventBus StatementId: !Sub OnlyPropertiesServiceCanPublishToEventBus-${Stage} Statement: Effect: Allow @@ -351,7 +351,7 @@ Resources: AWS: - !Sub "arn:${AWS::Partition}:iam::${AWS::AccountId}:root" Action: events:PutEvents - Resource: !GetAtt UnicornPropertiesEventBus.Arn + Resource: !GetAtt UnicornApprovalsEventBus.Arn Condition: StringEquals: events:source: @@ -365,7 +365,7 @@ Resources: Properties: Name: properties.catchall Description: Catchall rule used for development purposes. - EventBusName: !Ref UnicornPropertiesEventBus + EventBusName: !Ref UnicornApprovalsEventBus EventPattern: account: - !Ref AWS::AccountId @@ -436,7 +436,7 @@ Resources: UpdateReplacePolicy: Delete DeletionPolicy: Delete DependsOn: - - UnicornPropertiesEventBusNameParam + - UnicornApprovalsEventBusNameParam Properties: Location: "integration/subscriber-policies.yaml" Parameters: @@ -448,7 +448,7 @@ Resources: UpdateReplacePolicy: Delete DeletionPolicy: Delete DependsOn: - - UnicornPropertiesEventBusArnParam + - UnicornApprovalsEventBusArnParam Properties: Location: "integration/subscriptions.yaml" Parameters: @@ -484,7 +484,7 @@ Outputs: #### EVENT BRIDGE OUTPUTS UnicornPropertiesEventBusName: - Value: !GetAtt UnicornPropertiesEventBus.Name + Value: !GetAtt UnicornApprovalsEventBus.Name #### CLOUDWATCH LOGS OUTPUTS UnicornPropertiesCatchAllLogGroupArn: diff --git a/unicorn_properties/tests/__init__.py b/unicorn_approvals/tests/__init__.py similarity index 100% rename from unicorn_properties/tests/__init__.py rename to unicorn_approvals/tests/__init__.py diff --git a/unicorn_properties/tests/unit/__init__.py b/unicorn_approvals/tests/unit/__init__.py similarity index 100% rename from unicorn_properties/tests/unit/__init__.py rename to unicorn_approvals/tests/unit/__init__.py diff --git a/unicorn_properties/tests/unit/conftest.py b/unicorn_approvals/tests/unit/conftest.py similarity index 100% rename from unicorn_properties/tests/unit/conftest.py rename to unicorn_approvals/tests/unit/conftest.py diff --git a/unicorn_properties/tests/unit/events/ddb_stream_events/contract_status_changed_draft.json b/unicorn_approvals/tests/unit/events/ddb_stream_events/contract_status_changed_draft.json similarity index 100% rename from unicorn_properties/tests/unit/events/ddb_stream_events/contract_status_changed_draft.json rename to unicorn_approvals/tests/unit/events/ddb_stream_events/contract_status_changed_draft.json diff --git a/unicorn_properties/tests/unit/events/ddb_stream_events/sfn_check_exists.json b/unicorn_approvals/tests/unit/events/ddb_stream_events/sfn_check_exists.json similarity index 100% rename from unicorn_properties/tests/unit/events/ddb_stream_events/sfn_check_exists.json rename to unicorn_approvals/tests/unit/events/ddb_stream_events/sfn_check_exists.json diff --git a/unicorn_properties/tests/unit/events/ddb_stream_events/sfn_wait_approval.json b/unicorn_approvals/tests/unit/events/ddb_stream_events/sfn_wait_approval.json similarity index 100% rename from unicorn_properties/tests/unit/events/ddb_stream_events/sfn_wait_approval.json rename to unicorn_approvals/tests/unit/events/ddb_stream_events/sfn_wait_approval.json diff --git a/unicorn_properties/tests/unit/events/ddb_stream_events/status_approved_waiting_for_approval.json b/unicorn_approvals/tests/unit/events/ddb_stream_events/status_approved_waiting_for_approval.json similarity index 100% rename from unicorn_properties/tests/unit/events/ddb_stream_events/status_approved_waiting_for_approval.json rename to unicorn_approvals/tests/unit/events/ddb_stream_events/status_approved_waiting_for_approval.json diff --git a/unicorn_properties/tests/unit/events/ddb_stream_events/status_approved_with_no_workflow.json b/unicorn_approvals/tests/unit/events/ddb_stream_events/status_approved_with_no_workflow.json similarity index 100% rename from unicorn_properties/tests/unit/events/ddb_stream_events/status_approved_with_no_workflow.json rename to unicorn_approvals/tests/unit/events/ddb_stream_events/status_approved_with_no_workflow.json diff --git a/unicorn_properties/tests/unit/events/eventbridge/contract_status_changed.json b/unicorn_approvals/tests/unit/events/eventbridge/contract_status_changed.json similarity index 100% rename from unicorn_properties/tests/unit/events/eventbridge/contract_status_changed.json rename to unicorn_approvals/tests/unit/events/eventbridge/contract_status_changed.json diff --git a/unicorn_properties/tests/unit/events/eventbridge/contract_status_changed_event_contract_1_approved.json b/unicorn_approvals/tests/unit/events/eventbridge/contract_status_changed_event_contract_1_approved.json similarity index 100% rename from unicorn_properties/tests/unit/events/eventbridge/contract_status_changed_event_contract_1_approved.json rename to unicorn_approvals/tests/unit/events/eventbridge/contract_status_changed_event_contract_1_approved.json diff --git a/unicorn_properties/tests/unit/events/eventbridge/contract_status_changed_event_contract_1_draft.json b/unicorn_approvals/tests/unit/events/eventbridge/contract_status_changed_event_contract_1_draft.json similarity index 100% rename from unicorn_properties/tests/unit/events/eventbridge/contract_status_changed_event_contract_1_draft.json rename to unicorn_approvals/tests/unit/events/eventbridge/contract_status_changed_event_contract_1_draft.json diff --git a/unicorn_properties/tests/unit/events/eventbridge/contract_status_changed_event_contract_2_approved.json b/unicorn_approvals/tests/unit/events/eventbridge/contract_status_changed_event_contract_2_approved.json similarity index 100% rename from unicorn_properties/tests/unit/events/eventbridge/contract_status_changed_event_contract_2_approved.json rename to unicorn_approvals/tests/unit/events/eventbridge/contract_status_changed_event_contract_2_approved.json diff --git a/unicorn_properties/tests/unit/events/eventbridge/contract_status_changed_event_contract_2_draft.json b/unicorn_approvals/tests/unit/events/eventbridge/contract_status_changed_event_contract_2_draft.json similarity index 100% rename from unicorn_properties/tests/unit/events/eventbridge/contract_status_changed_event_contract_2_draft.json rename to unicorn_approvals/tests/unit/events/eventbridge/contract_status_changed_event_contract_2_draft.json diff --git a/unicorn_properties/tests/unit/events/eventbridge/publication_approval_requested_event.json b/unicorn_approvals/tests/unit/events/eventbridge/publication_approval_requested_event.json similarity index 100% rename from unicorn_properties/tests/unit/events/eventbridge/publication_approval_requested_event.json rename to unicorn_approvals/tests/unit/events/eventbridge/publication_approval_requested_event.json diff --git a/unicorn_properties/tests/unit/events/eventbridge/publication_approval_requested_event_all_good.json b/unicorn_approvals/tests/unit/events/eventbridge/publication_approval_requested_event_all_good.json similarity index 100% rename from unicorn_properties/tests/unit/events/eventbridge/publication_approval_requested_event_all_good.json rename to unicorn_approvals/tests/unit/events/eventbridge/publication_approval_requested_event_all_good.json diff --git a/unicorn_properties/tests/unit/events/eventbridge/publication_approval_requested_event_inappropriate_description.json b/unicorn_approvals/tests/unit/events/eventbridge/publication_approval_requested_event_inappropriate_description.json similarity index 100% rename from unicorn_properties/tests/unit/events/eventbridge/publication_approval_requested_event_inappropriate_description.json rename to unicorn_approvals/tests/unit/events/eventbridge/publication_approval_requested_event_inappropriate_description.json diff --git a/unicorn_properties/tests/unit/events/eventbridge/publication_approval_requested_event_inappropriate_images.json b/unicorn_approvals/tests/unit/events/eventbridge/publication_approval_requested_event_inappropriate_images.json similarity index 100% rename from unicorn_properties/tests/unit/events/eventbridge/publication_approval_requested_event_inappropriate_images.json rename to unicorn_approvals/tests/unit/events/eventbridge/publication_approval_requested_event_inappropriate_images.json diff --git a/unicorn_properties/tests/unit/events/eventbridge/publication_approval_requested_event_non_existing_contract.json b/unicorn_approvals/tests/unit/events/eventbridge/publication_approval_requested_event_non_existing_contract.json similarity index 100% rename from unicorn_properties/tests/unit/events/eventbridge/publication_approval_requested_event_non_existing_contract.json rename to unicorn_approvals/tests/unit/events/eventbridge/publication_approval_requested_event_non_existing_contract.json diff --git a/unicorn_properties/tests/unit/events/eventbridge/publication_approval_requested_event_pause_workflow.json b/unicorn_approvals/tests/unit/events/eventbridge/publication_approval_requested_event_pause_workflow.json similarity index 100% rename from unicorn_properties/tests/unit/events/eventbridge/publication_approval_requested_event_pause_workflow.json rename to unicorn_approvals/tests/unit/events/eventbridge/publication_approval_requested_event_pause_workflow.json diff --git a/unicorn_properties/tests/unit/events/eventbridge/publication_evaluation_completed_event.json b/unicorn_approvals/tests/unit/events/eventbridge/publication_evaluation_completed_event.json similarity index 100% rename from unicorn_properties/tests/unit/events/eventbridge/publication_evaluation_completed_event.json rename to unicorn_approvals/tests/unit/events/eventbridge/publication_evaluation_completed_event.json diff --git a/unicorn_properties/tests/unit/events/eventbridge/put_event_property_approval_requested.json b/unicorn_approvals/tests/unit/events/eventbridge/put_event_property_approval_requested.json similarity index 100% rename from unicorn_properties/tests/unit/events/eventbridge/put_event_property_approval_requested.json rename to unicorn_approvals/tests/unit/events/eventbridge/put_event_property_approval_requested.json diff --git a/unicorn_properties/tests/unit/events/lambda/content_integrity_validator_function_success.json b/unicorn_approvals/tests/unit/events/lambda/content_integrity_validator_function_success.json similarity index 100% rename from unicorn_properties/tests/unit/events/lambda/content_integrity_validator_function_success.json rename to unicorn_approvals/tests/unit/events/lambda/content_integrity_validator_function_success.json diff --git a/unicorn_properties/tests/unit/events/lambda/contract_status_checker.json b/unicorn_approvals/tests/unit/events/lambda/contract_status_checker.json similarity index 100% rename from unicorn_properties/tests/unit/events/lambda/contract_status_checker.json rename to unicorn_approvals/tests/unit/events/lambda/contract_status_checker.json diff --git a/unicorn_properties/tests/unit/events/lambda/wait_for_contract_approval_function.json b/unicorn_approvals/tests/unit/events/lambda/wait_for_contract_approval_function.json similarity index 100% rename from unicorn_properties/tests/unit/events/lambda/wait_for_contract_approval_function.json rename to unicorn_approvals/tests/unit/events/lambda/wait_for_contract_approval_function.json diff --git a/unicorn_properties/tests/unit/helper.py b/unicorn_approvals/tests/unit/helper.py similarity index 100% rename from unicorn_properties/tests/unit/helper.py rename to unicorn_approvals/tests/unit/helper.py diff --git a/unicorn_properties/tests/unit/test_contract_status_changed_event_handler.py b/unicorn_approvals/tests/unit/test_contract_status_changed_event_handler.py similarity index 100% rename from unicorn_properties/tests/unit/test_contract_status_changed_event_handler.py rename to unicorn_approvals/tests/unit/test_contract_status_changed_event_handler.py diff --git a/unicorn_properties/tests/unit/test_properties_approval_sync_function.py b/unicorn_approvals/tests/unit/test_properties_approval_sync_function.py similarity index 100% rename from unicorn_properties/tests/unit/test_properties_approval_sync_function.py rename to unicorn_approvals/tests/unit/test_properties_approval_sync_function.py diff --git a/unicorn_properties/tests/unit/test_wait_for_contract_approval_function.py b/unicorn_approvals/tests/unit/test_wait_for_contract_approval_function.py similarity index 100% rename from unicorn_properties/tests/unit/test_wait_for_contract_approval_function.py rename to unicorn_approvals/tests/unit/test_wait_for_contract_approval_function.py diff --git a/unicorn_properties/uv.lock b/unicorn_approvals/uv.lock similarity index 100% rename from unicorn_properties/uv.lock rename to unicorn_approvals/uv.lock From 25289c73546f217b7ecde5457916761787fa6be8 Mon Sep 17 00:00:00 2001 From: Stephen Liedig Date: Mon, 7 Jul 2025 07:41:54 +0800 Subject: [PATCH 05/36] refactor: update event bus references from UnicornProperties to UnicornApprovals in subscriptions.yaml --- unicorn_shared/uni-prop-namespaces.yaml | 2 +- unicorn_web/integration/subscriptions.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/unicorn_shared/uni-prop-namespaces.yaml b/unicorn_shared/uni-prop-namespaces.yaml index 3045c2b..7df02f4 100644 --- a/unicorn_shared/uni-prop-namespaces.yaml +++ b/unicorn_shared/uni-prop-namespaces.yaml @@ -35,7 +35,7 @@ Outputs: Description: Unicorn Contracts namespace parameter Value: !Ref UnicornContractsNamespaceParam - UnicornPropertiesNamespace: + UnicornApprovalsNamespace: Description: Unicorn Properties namespace parameter Value: !Ref UnicornApprovalsNamespaceParam diff --git a/unicorn_web/integration/subscriptions.yaml b/unicorn_web/integration/subscriptions.yaml index adf2484..874c409 100644 --- a/unicorn_web/integration/subscriptions.yaml +++ b/unicorn_web/integration/subscriptions.yaml @@ -20,7 +20,7 @@ Resources: Name: unicorn.web-PublicationEvaluationCompleted Description: PublicationEvaluationCompleted subscription EventBusName: - Fn::Sub: "{{resolve:ssm:/uni-prop/${Stage}/UnicornPropertiesEventBusArn}}" + Fn::Sub: "{{resolve:ssm:/uni-prop/${Stage}/UnicornApprovalsEventBusArn}}" EventPattern: source: - "{{resolve:ssm:/uni-prop/UnicornApprovalsNamespace}}" From 1e66d49b9e5ec87a8769440a633f977c3c31f9f0 Mon Sep 17 00:00:00 2001 From: Stephen Liedig Date: Mon, 7 Jul 2025 08:09:46 +0800 Subject: [PATCH 06/36] refactor: update references from UnicornProperties to UnicornApprovals in dependabot configuration and unit test workflows --- .github/dependabot.yml | 2 +- .github/workflows/services_unit_tests.yml | 8 ++++---- .../publication_approved_event_handler.py | 2 +- .../publicationevaluationcompleted/AWSEvent.py | 2 +- .../publicationevaluationcompleted/__init__.py | 6 +++--- .../publicationevaluationcompleted/marshaller.py | 4 ++-- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 8a2d4b1..437c7ac 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -8,7 +8,7 @@ updates: - package-ecosystem: "pip" # See documentation for possible values directories: - "unicorn_contracts" # Location of package manifests - - "unicorn_properties" + - "unicorn_approvals" - "unicorn_web" schedule: interval: "weekly" diff --git a/.github/workflows/services_unit_tests.yml b/.github/workflows/services_unit_tests.yml index 4696e81..493e8f6 100644 --- a/.github/workflows/services_unit_tests.yml +++ b/.github/workflows/services_unit_tests.yml @@ -3,13 +3,13 @@ on: branches: [develop, main] paths: - 'unicorn_contracts/**' - - 'unicorn_properties/**' + - 'unicorn_approvals/**' - 'unicorn_web/**' pull_request: branches: [develop, main] paths: - 'unicorn_contracts/**' - - 'unicorn_properties/**' + - 'unicorn_approvals/**' - 'unicorn_web/**' jobs: @@ -18,10 +18,10 @@ jobs: with: service_directory: unicorn_contracts - unicorn_properties: + unicorn_approvals: uses: ./.github/workflows/reusable_unit_tests.yml with: - service_directory: unicorn_properties + service_directory: unicorn_approvals unicorn_web: uses: ./.github/workflows/reusable_unit_tests.yml diff --git a/unicorn_web/src/approvals_service/publication_approved_event_handler.py b/unicorn_web/src/approvals_service/publication_approved_event_handler.py index e555d74..6e90227 100644 --- a/unicorn_web/src/approvals_service/publication_approved_event_handler.py +++ b/unicorn_web/src/approvals_service/publication_approved_event_handler.py @@ -11,7 +11,7 @@ from aws_lambda_powertools.metrics import Metrics, MetricUnit from aws_lambda_powertools.event_handler.exceptions import InternalServerError -from schema.unicorn_properties.publicationevaluationcompleted import ( +from schema.unicorn_approvals.publicationevaluationcompleted import ( AWSEvent, Marshaller, PublicationEvaluationCompleted, diff --git a/unicorn_web/src/schema/unicorn_properties/publicationevaluationcompleted/AWSEvent.py b/unicorn_web/src/schema/unicorn_properties/publicationevaluationcompleted/AWSEvent.py index b2fc54a..2cab608 100644 --- a/unicorn_web/src/schema/unicorn_properties/publicationevaluationcompleted/AWSEvent.py +++ b/unicorn_web/src/schema/unicorn_properties/publicationevaluationcompleted/AWSEvent.py @@ -4,7 +4,7 @@ import six from enum import Enum -from schema.unicorn_properties.publicationevaluationcompleted.PublicationEvaluationCompleted import ( +from schema.unicorn_approvals.publicationevaluationcompleted.PublicationEvaluationCompleted import ( PublicationEvaluationCompleted, ) # noqa: F401,E501 diff --git a/unicorn_web/src/schema/unicorn_properties/publicationevaluationcompleted/__init__.py b/unicorn_web/src/schema/unicorn_properties/publicationevaluationcompleted/__init__.py index 9e73411..93bdbe6 100644 --- a/unicorn_web/src/schema/unicorn_properties/publicationevaluationcompleted/__init__.py +++ b/unicorn_web/src/schema/unicorn_properties/publicationevaluationcompleted/__init__.py @@ -2,8 +2,8 @@ from __future__ import absolute_import -from schema.unicorn_properties.publicationevaluationcompleted.marshaller import Marshaller -from schema.unicorn_properties.publicationevaluationcompleted.AWSEvent import AWSEvent -from schema.unicorn_properties.publicationevaluationcompleted.PublicationEvaluationCompleted import ( +from schema.unicorn_approvals.publicationevaluationcompleted.marshaller import Marshaller +from schema.unicorn_approvals.publicationevaluationcompleted.AWSEvent import AWSEvent +from schema.unicorn_approvals.publicationevaluationcompleted.PublicationEvaluationCompleted import ( PublicationEvaluationCompleted, ) diff --git a/unicorn_web/src/schema/unicorn_properties/publicationevaluationcompleted/marshaller.py b/unicorn_web/src/schema/unicorn_properties/publicationevaluationcompleted/marshaller.py index 9a42d94..0181a81 100644 --- a/unicorn_web/src/schema/unicorn_properties/publicationevaluationcompleted/marshaller.py +++ b/unicorn_web/src/schema/unicorn_properties/publicationevaluationcompleted/marshaller.py @@ -1,7 +1,7 @@ import datetime import re import six -import schema.unicorn_properties.publicationevaluationcompleted +import schema.unicorn_approvals.publicationevaluationcompleted class Marshaller: @@ -59,7 +59,7 @@ def unmarshall(cls, data, typeName): if typeName in cls.NATIVE_TYPES_MAPPING: typeName = cls.NATIVE_TYPES_MAPPING[typeName] else: - typeName = getattr(schema.unicorn_properties.publicationevaluationcompleted, typeName) + typeName = getattr(schema.unicorn_approvals.publicationevaluationcompleted, typeName) if typeName in cls.PRIMITIVE_TYPES: return cls.__unmarshall_primitive(data, typeName) From 0fbdd59e116ead747117098737f802833cc8e6c8 Mon Sep 17 00:00:00 2001 From: Stephen Liedig Date: Mon, 7 Jul 2025 08:39:54 +0800 Subject: [PATCH 07/36] chore: upgrade actions/upload-artifact from v3 to v4 in GitHub workflow --- .github/workflows/record_pr.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/record_pr.yml b/.github/workflows/record_pr.yml index 44f445a..70cbe15 100644 --- a/.github/workflows/record_pr.yml +++ b/.github/workflows/record_pr.yml @@ -16,7 +16,7 @@ jobs: script: | const script = require('.github/scripts/save_pr_details.js') await script({github, context, core}) - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: name: pr path: pr.txt From 2f100ee006b4947d73819dba5ecdf77946d3c65a Mon Sep 17 00:00:00 2001 From: Marco Buss Date: Mon, 7 Jul 2025 16:53:57 +0200 Subject: [PATCH 08/36] fixed small issues --- .../src/approvals_service/publication_approved_event_handler.py | 1 - .../publicationevaluationcompleted/AWSEvent.py | 0 .../PublicationEvaluationCompleted.py | 0 .../publicationevaluationcompleted/__init__.py | 0 .../publicationevaluationcompleted/marshaller.py | 0 .../eventbridge/put_event_publication_evaluation_completed.json | 2 +- 6 files changed, 1 insertion(+), 2 deletions(-) rename unicorn_web/src/schema/{unicorn_properties => unicorn_approvals}/publicationevaluationcompleted/AWSEvent.py (100%) rename unicorn_web/src/schema/{unicorn_properties => unicorn_approvals}/publicationevaluationcompleted/PublicationEvaluationCompleted.py (100%) rename unicorn_web/src/schema/{unicorn_properties => unicorn_approvals}/publicationevaluationcompleted/__init__.py (100%) rename unicorn_web/src/schema/{unicorn_properties => unicorn_approvals}/publicationevaluationcompleted/marshaller.py (100%) diff --git a/unicorn_web/src/approvals_service/publication_approved_event_handler.py b/unicorn_web/src/approvals_service/publication_approved_event_handler.py index 6e90227..2c252bb 100644 --- a/unicorn_web/src/approvals_service/publication_approved_event_handler.py +++ b/unicorn_web/src/approvals_service/publication_approved_event_handler.py @@ -17,7 +17,6 @@ PublicationEvaluationCompleted, ) - # Initialise Environment variables if (SERVICE_NAMESPACE := os.environ.get("SERVICE_NAMESPACE")) is None: raise InternalServerError("SERVICE_NAMESPACE environment variable is undefined") diff --git a/unicorn_web/src/schema/unicorn_properties/publicationevaluationcompleted/AWSEvent.py b/unicorn_web/src/schema/unicorn_approvals/publicationevaluationcompleted/AWSEvent.py similarity index 100% rename from unicorn_web/src/schema/unicorn_properties/publicationevaluationcompleted/AWSEvent.py rename to unicorn_web/src/schema/unicorn_approvals/publicationevaluationcompleted/AWSEvent.py diff --git a/unicorn_web/src/schema/unicorn_properties/publicationevaluationcompleted/PublicationEvaluationCompleted.py b/unicorn_web/src/schema/unicorn_approvals/publicationevaluationcompleted/PublicationEvaluationCompleted.py similarity index 100% rename from unicorn_web/src/schema/unicorn_properties/publicationevaluationcompleted/PublicationEvaluationCompleted.py rename to unicorn_web/src/schema/unicorn_approvals/publicationevaluationcompleted/PublicationEvaluationCompleted.py diff --git a/unicorn_web/src/schema/unicorn_properties/publicationevaluationcompleted/__init__.py b/unicorn_web/src/schema/unicorn_approvals/publicationevaluationcompleted/__init__.py similarity index 100% rename from unicorn_web/src/schema/unicorn_properties/publicationevaluationcompleted/__init__.py rename to unicorn_web/src/schema/unicorn_approvals/publicationevaluationcompleted/__init__.py diff --git a/unicorn_web/src/schema/unicorn_properties/publicationevaluationcompleted/marshaller.py b/unicorn_web/src/schema/unicorn_approvals/publicationevaluationcompleted/marshaller.py similarity index 100% rename from unicorn_web/src/schema/unicorn_properties/publicationevaluationcompleted/marshaller.py rename to unicorn_web/src/schema/unicorn_approvals/publicationevaluationcompleted/marshaller.py diff --git a/unicorn_web/tests/events/eventbridge/put_event_publication_evaluation_completed.json b/unicorn_web/tests/events/eventbridge/put_event_publication_evaluation_completed.json index 6b715f6..25e8b56 100644 --- a/unicorn_web/tests/events/eventbridge/put_event_publication_evaluation_completed.json +++ b/unicorn_web/tests/events/eventbridge/put_event_publication_evaluation_completed.json @@ -1,6 +1,6 @@ [ { - "Source": "unicorn.properties", + "Source": "unicorn.approvals", "Detail": "{\"property_id\":\"usa/anytown/main-street/111\",\"evaluation_result\": \"APPROVED\"}", "DetailType": "PublicationEvaluationCompleted", "EventBusName": "UnicornWebBus-local" From 75c6706a794b9e9c02e5bc7ee3d43b5959f25872 Mon Sep 17 00:00:00 2001 From: Stephen Liedig Date: Sat, 12 Jul 2025 12:30:09 +0800 Subject: [PATCH 09/36] refactor: rename properties_service to approvals_service and update related handlers and configurations --- unicorn_approvals/pyproject.toml | 6 +++--- .../{properties_service => approvals_service}/__init__.py | 0 .../contract_status_changed_event_handler.py | 0 .../{properties_service => approvals_service}/exceptions.py | 0 .../properties_approval_sync_function.py | 0 .../wait_for_contract_approval_function.py | 2 +- unicorn_approvals/template.yaml | 6 +++--- .../unit/test_contract_status_changed_event_handler.py | 4 ++-- .../tests/unit/test_properties_approval_sync_function.py | 4 ++-- .../tests/unit/test_wait_for_contract_approval_function.py | 2 +- 10 files changed, 12 insertions(+), 12 deletions(-) rename unicorn_approvals/src/{properties_service => approvals_service}/__init__.py (100%) rename unicorn_approvals/src/{properties_service => approvals_service}/contract_status_changed_event_handler.py (100%) rename unicorn_approvals/src/{properties_service => approvals_service}/exceptions.py (100%) rename unicorn_approvals/src/{properties_service => approvals_service}/properties_approval_sync_function.py (100%) rename unicorn_approvals/src/{properties_service => approvals_service}/wait_for_contract_approval_function.py (97%) diff --git a/unicorn_approvals/pyproject.toml b/unicorn_approvals/pyproject.toml index c3346df..7043d9f 100644 --- a/unicorn_approvals/pyproject.toml +++ b/unicorn_approvals/pyproject.toml @@ -1,5 +1,5 @@ [project] -name = "properties_service" +name = "approvals_service" version = "0.2.0" description = "Unicorn Properties Property Service" authors = [ @@ -27,5 +27,5 @@ dev = [ ] [tool.setuptools] -package-dir = {"properties_service" = "src"} -packages = ["properties_service"] +package-dir = {"approvals_service" = "src"} +packages = ["approvals_service"] diff --git a/unicorn_approvals/src/properties_service/__init__.py b/unicorn_approvals/src/approvals_service/__init__.py similarity index 100% rename from unicorn_approvals/src/properties_service/__init__.py rename to unicorn_approvals/src/approvals_service/__init__.py diff --git a/unicorn_approvals/src/properties_service/contract_status_changed_event_handler.py b/unicorn_approvals/src/approvals_service/contract_status_changed_event_handler.py similarity index 100% rename from unicorn_approvals/src/properties_service/contract_status_changed_event_handler.py rename to unicorn_approvals/src/approvals_service/contract_status_changed_event_handler.py diff --git a/unicorn_approvals/src/properties_service/exceptions.py b/unicorn_approvals/src/approvals_service/exceptions.py similarity index 100% rename from unicorn_approvals/src/properties_service/exceptions.py rename to unicorn_approvals/src/approvals_service/exceptions.py diff --git a/unicorn_approvals/src/properties_service/properties_approval_sync_function.py b/unicorn_approvals/src/approvals_service/properties_approval_sync_function.py similarity index 100% rename from unicorn_approvals/src/properties_service/properties_approval_sync_function.py rename to unicorn_approvals/src/approvals_service/properties_approval_sync_function.py diff --git a/unicorn_approvals/src/properties_service/wait_for_contract_approval_function.py b/unicorn_approvals/src/approvals_service/wait_for_contract_approval_function.py similarity index 97% rename from unicorn_approvals/src/properties_service/wait_for_contract_approval_function.py rename to unicorn_approvals/src/approvals_service/wait_for_contract_approval_function.py index 07ad5b6..0af233e 100644 --- a/unicorn_approvals/src/properties_service/wait_for_contract_approval_function.py +++ b/unicorn_approvals/src/approvals_service/wait_for_contract_approval_function.py @@ -10,7 +10,7 @@ from aws_lambda_powertools.event_handler.exceptions import InternalServerError from botocore.exceptions import ClientError -from properties_service.exceptions import ContractStatusNotFoundException +from approvals_service.exceptions import ContractStatusNotFoundException # Initialise Environment variables diff --git a/unicorn_approvals/template.yaml b/unicorn_approvals/template.yaml index 1b49300..41212d6 100644 --- a/unicorn_approvals/template.yaml +++ b/unicorn_approvals/template.yaml @@ -95,7 +95,7 @@ Resources: Type: AWS::Serverless::Function Properties: CodeUri: src/ - Handler: properties_service.contract_status_changed_event_handler.lambda_handler + Handler: approvals_service.contract_status_changed_event_handler.lambda_handler Policies: - DynamoDBWritePolicy: TableName: !Ref ContractStatusTable @@ -137,7 +137,7 @@ Resources: Type: AWS::Serverless::Function Properties: CodeUri: src/ - Handler: properties_service.properties_approval_sync_function.lambda_handler + Handler: approvals_service.properties_approval_sync_function.lambda_handler Policies: - DynamoDBReadPolicy: TableName: !Ref ContractStatusTable @@ -184,7 +184,7 @@ Resources: Type: AWS::Serverless::Function Properties: CodeUri: src/ - Handler: properties_service.wait_for_contract_approval_function.lambda_handler + Handler: approvals_service.wait_for_contract_approval_function.lambda_handler Policies: - DynamoDBCrudPolicy: TableName: !Ref ContractStatusTable diff --git a/unicorn_approvals/tests/unit/test_contract_status_changed_event_handler.py b/unicorn_approvals/tests/unit/test_contract_status_changed_event_handler.py index 0d14e86..451883a 100644 --- a/unicorn_approvals/tests/unit/test_contract_status_changed_event_handler.py +++ b/unicorn_approvals/tests/unit/test_contract_status_changed_event_handler.py @@ -14,7 +14,7 @@ def test_contract_status_changed_event_handler(dynamodb, lambda_context): eventbridge_event = load_event("eventbridge/contract_status_changed") - from properties_service import contract_status_changed_event_handler + from approvals_service import contract_status_changed_event_handler # Reload is required to prevent function setup reuse from another test reload(contract_status_changed_event_handler) @@ -30,7 +30,7 @@ def test_contract_status_changed_event_handler(dynamodb, lambda_context): def test_missing_property_id(dynamodb, lambda_context): eventbridge_event = {"detail": {}} - from properties_service import contract_status_changed_event_handler + from approvals_service import contract_status_changed_event_handler # Reload is required to prevent function setup reuse from another test reload(contract_status_changed_event_handler) diff --git a/unicorn_approvals/tests/unit/test_properties_approval_sync_function.py b/unicorn_approvals/tests/unit/test_properties_approval_sync_function.py index 2f8a18e..4e17b4a 100644 --- a/unicorn_approvals/tests/unit/test_properties_approval_sync_function.py +++ b/unicorn_approvals/tests/unit/test_properties_approval_sync_function.py @@ -12,7 +12,7 @@ def test_handle_status_changed_draft(stepfunction, lambda_context): ddbstream_event = load_event("ddb_stream_events/contract_status_changed_draft") - from properties_service import properties_approval_sync_function + from approvals_service import properties_approval_sync_function reload(properties_approval_sync_function) @@ -27,7 +27,7 @@ def test_handle_status_changed_approved(caplog, stepfunction, lambda_context): pass # ddbstream_event = load_event('ddb_stream_events/status_approved_waiting_for_approval') - # from properties_service import properties_approval_sync_function + # from approvals_service import properties_approval_sync_function # reload(properties_approval_sync_function) # ret = properties_approval_sync_function.lambda_handler(ddbstream_event, lambda_context) diff --git a/unicorn_approvals/tests/unit/test_wait_for_contract_approval_function.py b/unicorn_approvals/tests/unit/test_wait_for_contract_approval_function.py index a6ae95e..bd7db05 100644 --- a/unicorn_approvals/tests/unit/test_wait_for_contract_approval_function.py +++ b/unicorn_approvals/tests/unit/test_wait_for_contract_approval_function.py @@ -12,7 +12,7 @@ def test_handle_wait_for_contract_approval_function(dynamodb, lambda_context): stepfunctions_event = load_event("lambda/wait_for_contract_approval_function") - from properties_service import wait_for_contract_approval_function + from approvals_service import wait_for_contract_approval_function reload(wait_for_contract_approval_function) From c20cf8b861facc2e78afb656027a425d9fbc11be Mon Sep 17 00:00:00 2001 From: Stephen Liedig Date: Fri, 18 Jul 2025 10:47:51 +0800 Subject: [PATCH 10/36] chore: update Approvals readme --- unicorn_approvals/README.md | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/unicorn_approvals/README.md b/unicorn_approvals/README.md index ad4ebce..f70eb7f 100644 --- a/unicorn_approvals/README.md +++ b/unicorn_approvals/README.md @@ -1,22 +1,15 @@ -# Developing Unicorn Properties +# Developing Unicorn Approvals -![Properties Approval Architecture](https://static.us-east-1.prod.workshops.aws/public/f273b5fc-17cd-406b-9e63-1d331b00589d/static/images/architecture-properties.png) +![Properties Approval Architecture](https://static.us-east-1.prod.workshops.aws/public/f273b5fc-17cd-406b-9e63-1d331b00589d/static/images/architecture-approvals.png) ## Architecture overview -Unicorn Properties is primarily responsible for approving property listings for Unicorn Web. +**Unicorn Approvals** uses an AWS Step Functions state machine to approve property listings for Unicorn Web. The workflow checks for contract information, description sentiment and safe images, and verifies the contract is approved before approving the listing. It publishes the result via the `PublicationEvaluationCompleted` event. -A core component of Unicorn Properties is the approvals workflow. The approvals workflow is implemented using an AWS Step Functions state machine. At a high level, the workflow will: +A Unicorn Properties agent initiates the workflow by requesting to approve a listing, generating a `PublicationApprovalRequested` event with property information. To decouple from the Contracts Service, the Approval service maintains a local copy of contract status by consuming the ContractStatusChanged event. -* Check whether or not it has any contract information for the property it needs to approve. If there is no contract information, the approval process cannot be completed. -* Ensure the sentiment of the property description is positive and that there no unsafe images. All checks must pass for the listing to be made public. -* Ensure that the contract is in an APPROVED state before it can approve the listing. This accounts for a situation where the property listings are created before the contract has been signed and the services for Unicorn Properties are paid for. -* Publish the result of the workflow via the `PublicationEvaluationCompleted` event. +The workflow checks the contract state. If the contract is in the WaitForContractApproval state, it updates the contract status for the property with its task token, triggering a DynamoDB stream event. The Property approvals sync function handles these events and passes the task token back to the state machine based on the contract state. -The workflow is initiated by a request made by an Unicorn Properties **agent** to have the property approved for publication. Once they have created a property listing (added property details and photos), they initiate the request in Unicorn Web, which generates a `PublicationApprovalRequested` event. This event contains the property information which the workflow processes. +If the workflow completes successfully, it emits a PublicationEvaluationCompleted event with an **approved** or **declined** evaluation result, which Unicorn Web listens to update its publication flag. -In order process the approvals workflow successfully, the properties service needs to know the current status of a contract. To remain fully decoupled from the **Contracts Service**, it maintains a local copy of contract status by consuming the `ContractStatusChanged` event. This is eliminates the need for the Contracts service to expose an API that gives other services access to its database, and allows the Properties service to function autonomously. - -When the workflow is paused to check to see whether or not the contract is in an approved state, the `WaitForContractApproval` state will update a contract status for a specified property with its task token. This initiates a stream event on the DynamoDB table. The Property approvals sync function handles DynamoDB stream events. It determines whether or not to pass AWS Step Function task token back to the state machine based on the contract state. - -If workflow is completed successfully, it will emit a `PublicationEvaluationCompleted` event, with an evaluation result of `APPROVED` or `DECLINED`. This is what the Property Web will listen to in order to make the list available for publication. +**Note:** Upon deleting the CloudFormation stack for this service, check if the `ApprovalStateMachine` StepFunction doesn't have any executions in `RUNNING` state. If there are, cancel those execution prior to deleting the CloudFormation stack. From 173b11b6763eed1227e3898216d9d3db7172707d Mon Sep 17 00:00:00 2001 From: Stephen Liedig Date: Fri, 18 Jul 2025 10:54:10 +0800 Subject: [PATCH 11/36] chore: updated contracts readme --- unicorn_contracts/README.md | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/unicorn_contracts/README.md b/unicorn_contracts/README.md index 1cfad3b..61fdd99 100644 --- a/unicorn_contracts/README.md +++ b/unicorn_contracts/README.md @@ -4,13 +4,22 @@ ## Architecture overview -Unicorn Contract manages the contractual relationship between the customers and the Unicorn Properties agency. It's primary function is to allow Unicorn Properties agents to create a new contract for a property listing, and to have the contract approved once it's ready. +The **Unicorn Contracts** service manages contractual relationships between customers and Unicorn Properties agency. The service handles standard terms and conditions, property service rates, fees, and additional services. -The architecture is fairly straight forward. An API exposes the create contract and update contract methods. This information is recorded in a Amazon DynamoDB table which will contain all latest information about the contract and it's status. +Each property can have only one active contract. Properties use their address as a unique identifier instead of a GUID, which correlates across services. -Each time a new contract is created or updated, Unicorn Contracts publishes a `ContractStatusChanged` event to Amazon EventBridge signalling changes to the contract status. These events are consumed by **Unicorn Properties**, so it can track changes to contracts, without needing to take a direct dependency on Unicorn Contracts and it's database. +For example: `usa/anytown/main-street/111`. -Here is an example of an event that is published to EventBridge: +The contract workflow operates as follows: + +1. Agents submit contract creation/update commands through the Contracts API +1. The API sends requests to Amazon SQS +1. A Contracts function processes the queue messages and updates Amazon DynamoDB +1. DynamoDB Streams captures contract changes +1. Amazon EventBridge Pipes transforms the DynamoDB records into ContractStatusChanged events +1. Unicorn Approvals consumes these events to track contract changes without direct database dependencies + +An example of `ContractStatusChanged` event: ```json { From 7479130455d4cdd8af082c18e7c957b767492fa8 Mon Sep 17 00:00:00 2001 From: Stephen Liedig Date: Fri, 18 Jul 2025 10:58:35 +0800 Subject: [PATCH 12/36] chore: update web readme --- unicorn_web/README.md | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/unicorn_web/README.md b/unicorn_web/README.md index 4cec4a0..0bd021c 100644 --- a/unicorn_web/README.md +++ b/unicorn_web/README.md @@ -4,15 +4,27 @@ ## Architecture Overview -Unicorn Web is primarily responsible for allowing customers to search and view property listings. It also supports ability for agents to request approval for specific property. Those approval requests are sent to Property service for validation, before Properties table is updated with approval evaluation results. +Unicorn Web lets customers search for and view property listings. The Web API also allows Unicorn Properties agents to request approval for specific properties that they want to publish so they may be returned in customer searches results. These requests are sent to the Unicorn Approvals service for validation. -A core component of Unicorn Web are the Lambda functions which are responsible with completing API Gateway requests to: +Lambda functions handle API Gateway requests to: -- search approved property listings -This function interacts with DynamoDB table to retrieve property listings marked as `APPROVED`. The API Gateway implementation and lambda code support multiple types of search patterns, and allow searching by city, street, or house number. +- Search approved property listings: The **Search function** retrieves property listings marked as APPROVED from the DynamoDB table using multiple search patterns. -- request approval of property listing -This function sends an event to EventBridge requesting an approval for a property listing specified in the payload sent from client +- Request property listing approval: The **Approval function** sends an EventBridge event requesting approval for a property listing specified in the payload. -- publication approved function -There is also a lambda function responsible for receiving any "Approval Evaluation Completed" events from EventBridge. This function writes the evaluation result to DynamoDB table. +- Process approved listings: The **Publication Evaluation Event Handler function** processes `PublicationEvaluationCompleted` events from the Unicorn Approvals service and writes the evaluation result to the DynamoDB table. + +### Testing the APIs + +```bash +export API=`aws cloudformation describe-stacks --stack-name uni-prop-local-web --query "Stacks[0].Outputs[?OutputKey=='ApiUrl'].OutputValue" --output text` + +curl --location --request POST "${API}request_approval" \ +--header 'Content-Type: application/json' \ +--data-raw '{"PropertyId": "usa/anytown/main-street/111"}' + + +curl -X POST ${API_URL}request_approval \ + -H 'Content-Type: application/json' \ + -d '{"PropertyId":"usa/anytown/main-street/111"}' | jq +``` From f25e57ea06d80e48ba7b6d4fb16bd36c839461e2 Mon Sep 17 00:00:00 2001 From: Stephen Liedig Date: Fri, 18 Jul 2025 11:45:10 +0800 Subject: [PATCH 13/36] chore: updated main readme --- README.md | 40 ++++++++++++++++++---------------------- 1 file changed, 18 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 945edc9..41036a7 100644 --- a/README.md +++ b/README.md @@ -1,42 +1,38 @@ -AWS Serverless Developer Experience Workshop Reference Architecture +[![Build & Test Workflow](https://github.com/aws-samples/aws-serverless-developer-experience-workshop-python/actions/workflows/build_test.yml/badge.svg)](https://github.com/aws-samples/aws-serverless-developer-experience-workshop-python/actions/workflows/build_test.yml) + +< img src="./docs/workshop_logo.png" alt="AWS Serverless Developer Experience Workshop Reference Architecture" width="80%" /> # AWS Serverless Developer Experience workshop reference architecture (Python) -This repository contains the reference architecture for the AWS Serverless Developer Experience workshop. +This repository contains the Python reference architecture for the AWS Serverless Developer Experience workshop. -The AWS Serverless Developer Experience workshop provides you with an immersive experience as a serverless developer. The goal of this workshop is to provide you with hands-on experience building a serverless solution using the [**AWS Serverless Application Model (AWS SAM)**](https://aws.amazon.com/serverless/sam/) and **AWS SAM CLI**. +The AWS Serverless Developer Experience Workshop is a comprehensive, hands-on training program designed to equip developers with practical serverless development skills using the [**AWS Serverless Application Model (AWS SAM)**](https://aws.amazon.com/serverless/sam/) and **AWS SAM CLI**. -Along the way, you will learn about principals of distributed event-driven architectures, messaging patterns, orchestration, and observability and how to apply them in code. You will explore exciting open-source tools, the core features of Powertools for AWS Lambda, and simplified CI/CD deployments supported by AWS SAM Pipelines. +The workshop employs a practical, code-centric approach, emphasizing direct implementation and real-world scenario exploration to ensure you develop serverless development skills across several critical areas including distributed event-driven architectures, messaging patterns, orchestration, and observability. You will explore open-source tools, [Powertools for AWS](https://powertools.aws.dev/), and simplified CI/CD deployments with AWS SAM Pipelines. By the end, you will be familiar with serverless developer workflows, microservice composition using AWS SAM, serverless development best practices, and applied event-driven architectures. -At the end of this workshop, you will be familiar with Serverless developer workflows and microservice composition using AWS SAM, Serverless development best practices, and applied event-driven architectures. +The 6-8 hour workshop assumes your practical development skills in Python, TypeScript, Java, or .NET, and familiarity with [Amazon API Gateway](https://aws.amazon.com/apigateway/), [AWS Lambda](https://aws.amazon.com/lambda/), [Amazon EventBridge](https://aws.amazon.com/eventbridge/), [AWS Step Functions](https://aws.amazon.com/step-functions/), and [Amazon DynamoDB](https://aws.amazon.com/dynamodb/). ## Introducing the Unicorn Properties architecture ![AWS Serverless Developer Experience Workshop Reference Architecture](./docs/architecture.png) -Our use case is based on a real estate company called **Unicorn Properties**. - -As a real estate agency, **Unicorn Properties** needs to manage the publishing of new property listings and sale contracts linked to individual properties, and provide a way for their customers to view approved property listings. - -To support their needs, Unicorn Properties have adopted a serverless, event-driven approach to designing their architecture. This architecture is centred around two primary domains: **Contracts** (managed by the Contracts Service) and **Properties** (managed by the Web and Properties Services). - -The **Unicorn Contracts** service (namespace: `Unicorn.Contracts`) is a simplified service that manages the contractual relationship between a seller of a property and Unicorn Properties. Contracts are drawn up that define the property for sale, the terms and conditions that Unicorn Properties sets, and how much it will cost the seller to engage the services of the agency. +Real estate company **Unicorn Properties** needs to manage publishing of new property listings and sale contracts linked to individual properties, and provide a way for customers to view approved listings. They adopted a serverless, event-driven architecture with two primary domains: **Contracts** (managed by Contracts Service) and **Properties** (managed by Web and Approvals Services). -The **Unicorn Web** (namespace: `Unicorn.Web`) manages the details of a property listing to be published on the Unicorn Properties website. Every property listing has an address, a sale price, a description of the property, and some photos that members of the public can look at to get them interested in purchasing the property. Only properties that have been approved for publication can be made visible to the public. +**Unicorn Contracts** (using the `Unicorn.Contracts` namespace) service manages contractual relationships between property sellers and Unicorn Approvals, defining properties for sale, terms, and engagement costs. -The **Unicorn Properties** service (namespace: `Unicorn.Properties`) approves a property listings. This service implements a workflow that checks for the existence of a contract, makes sure that the content and the images are safe to publish, and finally checks that the contract has been approved. We don’t want to publish a property until we have an approved contract! +**Unicorn Approvals** (using the `Unicorn.Approvals` namespace) service approves property listings by implementing a workflow that checks for contract existence, content and image safety, and contract approval before publishing. -Have a go at building this architecture yourself! Head over to the [Serverless Developer Experience Workshop](https://catalog.workshops.aws/serverless-developer-experience) for more details. +**Unicorn Web** (using the `Unicorn.Web` namespace) manages property listing details (address, sale price, description, photos) to be published on the website, with only approved listings visible to the public. ## Credits -Throughout this workshop we wanted to introduce you to some Open Source tools that can help you build serverless applications. This is not an exhaustive list, just a small selection of what we will be using in the workshop. +This workshop introduces you to some open-source tools that can help you build serverless applications. This is not an exhaustive list, but a small selection of what you will be using in the workshop. Many thanks to all the AWS teams and community builders who have contributed to this list: -| Tools | Description | Download / Installation Instructions | -| --------------------- | ----------- | --------------------------------------- | -| cfn-lint | Validate AWS CloudFormation yaml/json templates against the AWS CloudFormation Resource Specification and additional checks. | https://github.com/aws-cloudformation/cfn-lint | -| cfn-lint-serverless | Compilation of rules to validate infrastructure-as-code templates against recommended practices for serverless applications. | https://github.com/awslabs/serverless-rules | -| @mhlabs/iam-policies-cli| CLI for generating AWS IAM policy documents or SAM policy templates based on the JSON definition used in the AWS Policy Generator. | https://github.com/mhlabs/iam-policies-cli | -| @mhlabs/evb-cli | Pattern generator and debugging tool for Amazon EventBridge | https://github.com/mhlabs/evb-cli | +| Tools | Description | Download / Installation Instructions | +| ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------- | +| cfn-lint | Validate AWS CloudFormation yaml/json templates against the AWS CloudFormation Resource Specification and additional checks. | https://github.com/aws-cloudformation/cfn-lint | +| cfn-lint-serverless | Compilation of rules to validate infrastructure-as-code templates against recommended practices for serverless applications. | https://github.com/awslabs/serverless-rules | +| @mhlabs/iam-policies-cli | CLI for generating AWS IAM policy documents or SAM policy templates based on the JSON definition used in the AWS Policy Generator. | https://github.com/mhlabs/iam-policies-cli | +| @mhlabs/evb-cli | Pattern generator and debugging tool for Amazon EventBridge | https://github.com/mhlabs/evb-cli | From efd46a240346bbee41a03698d2edb99fd3ee85df Mon Sep 17 00:00:00 2001 From: Stephen Liedig Date: Fri, 18 Jul 2025 12:02:41 +0800 Subject: [PATCH 14/36] chore: upgrade actions/checkout and actions/github-script to v4 and v7 respectively in GitHub workflows --- .github/workflows/auto_assign.yml | 2 +- .github/workflows/codeql-analysis.yml | 2 +- .github/workflows/label_pr_on_title.yml | 4 ++-- .github/workflows/on_label_added.yml | 4 ++-- .github/workflows/on_merged_pr.yml | 4 ++-- .github/workflows/on_opened_pr.yml | 8 ++++---- .github/workflows/record_pr.yml | 4 ++-- .github/workflows/reusable_export_pr_details.yml | 4 ++-- .github/workflows/reusable_unit_tests.yml | 2 +- 9 files changed, 17 insertions(+), 17 deletions(-) diff --git a/.github/workflows/auto_assign.yml b/.github/workflows/auto_assign.yml index 5728867..093e194 100644 --- a/.github/workflows/auto_assign.yml +++ b/.github/workflows/auto_assign.yml @@ -7,4 +7,4 @@ jobs: add-reviews: runs-on: ubuntu-latest steps: - - uses: kentaro-m/auto-assign-action@v1.2.5 \ No newline at end of file + - uses: kentaro-m/auto-assign-action@v2.0.0 \ No newline at end of file diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 08ca221..39956d6 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -25,7 +25,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL diff --git a/.github/workflows/label_pr_on_title.yml b/.github/workflows/label_pr_on_title.yml index 3815a49..e6ce47d 100644 --- a/.github/workflows/label_pr_on_title.yml +++ b/.github/workflows/label_pr_on_title.yml @@ -22,9 +22,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: "Label PR based on title" - uses: actions/github-script@v6 + uses: actions/github-script@v7 env: PR_NUMBER: ${{ needs.get_pr_details.outputs.prNumber }} PR_TITLE: ${{ needs.get_pr_details.outputs.prTitle }} diff --git a/.github/workflows/on_label_added.yml b/.github/workflows/on_label_added.yml index e9180d8..ab04444 100644 --- a/.github/workflows/on_label_added.yml +++ b/.github/workflows/on_label_added.yml @@ -23,10 +23,10 @@ jobs: issues: write pull-requests: write steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 # Maintenance: Persist state per PR as an artifact to avoid spam on label add - name: "Suggest split large Pull Request" - uses: actions/github-script@v6 + uses: actions/github-script@v7 env: PR_NUMBER: ${{ needs.get_pr_details.outputs.prNumber }} PR_ACTION: ${{ needs.get_pr_details.outputs.prAction }} diff --git a/.github/workflows/on_merged_pr.yml b/.github/workflows/on_merged_pr.yml index cd97e1c..2bce046 100644 --- a/.github/workflows/on_merged_pr.yml +++ b/.github/workflows/on_merged_pr.yml @@ -20,9 +20,9 @@ jobs: runs-on: ubuntu-latest if: needs.get_pr_details.outputs.prIsMerged == 'true' steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: "Label PR related issue for release" - uses: actions/github-script@v6 + uses: actions/github-script@v7 env: PR_NUMBER: ${{ needs.get_pr_details.outputs.prNumber }} PR_BODY: ${{ needs.get_pr_details.outputs.prBody }} diff --git a/.github/workflows/on_opened_pr.yml b/.github/workflows/on_opened_pr.yml index 043ff96..9712a3f 100644 --- a/.github/workflows/on_opened_pr.yml +++ b/.github/workflows/on_opened_pr.yml @@ -19,9 +19,9 @@ jobs: needs: get_pr_details runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: "Ensure related issue is present" - uses: actions/github-script@v6 + uses: actions/github-script@v7 env: PR_BODY: ${{ needs.get_pr_details.outputs.prBody }} PR_NUMBER: ${{ needs.get_pr_details.outputs.prNumber }} @@ -36,9 +36,9 @@ jobs: needs: get_pr_details runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: "Ensure acknowledgement section is present" - uses: actions/github-script@v6 + uses: actions/github-script@v7 env: PR_BODY: ${{ needs.get_pr_details.outputs.prBody }} PR_NUMBER: ${{ needs.get_pr_details.outputs.prNumber }} diff --git a/.github/workflows/record_pr.yml b/.github/workflows/record_pr.yml index 70cbe15..7ef50e4 100644 --- a/.github/workflows/record_pr.yml +++ b/.github/workflows/record_pr.yml @@ -9,9 +9,9 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: "Extract PR details" - uses: actions/github-script@v6 + uses: actions/github-script@v7 with: script: | const script = require('.github/scripts/save_pr_details.js') diff --git a/.github/workflows/reusable_export_pr_details.yml b/.github/workflows/reusable_export_pr_details.yml index a30b158..0b9956c 100644 --- a/.github/workflows/reusable_export_pr_details.yml +++ b/.github/workflows/reusable_export_pr_details.yml @@ -59,9 +59,9 @@ jobs: prIsMerged: ${{ steps.prIsMerged.outputs.prIsMerged }} steps: - name: Checkout repository # in case caller workflow doesn't checkout thus failing with file not found - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: "Download previously saved PR" - uses: actions/github-script@v6 + uses: actions/github-script@v7 env: WORKFLOW_ID: ${{ inputs.record_pr_workflow_id }} # For security, we only download artifacts tied to the successful PR recording workflow diff --git a/.github/workflows/reusable_unit_tests.yml b/.github/workflows/reusable_unit_tests.yml index 26974fd..ff944b7 100644 --- a/.github/workflows/reusable_unit_tests.yml +++ b/.github/workflows/reusable_unit_tests.yml @@ -12,7 +12,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: actions/setup-python@v4 with: { python-version: 3.12 } From a29b76829f90900b0d1581a96bedb76aa92f35d0 Mon Sep 17 00:00:00 2001 From: Stephen Liedig Date: Fri, 18 Jul 2025 12:24:39 +0800 Subject: [PATCH 15/36] chore: update README to reflect new build workflow and correct image tag --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 41036a7..77f3df5 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@ -[![Build & Test Workflow](https://github.com/aws-samples/aws-serverless-developer-experience-workshop-python/actions/workflows/build_test.yml/badge.svg)](https://github.com/aws-samples/aws-serverless-developer-experience-workshop-python/actions/workflows/build_test.yml) - -< img src="./docs/workshop_logo.png" alt="AWS Serverless Developer Experience Workshop Reference Architecture" width="80%" /> +[![Build & Test Workflow](https://github.com/aws-samples/aws-serverless-developer-experience-workshop-python/actions/workflows/build.yml/badge.svg)](https://github.com/aws-samples/aws-serverless-developer-experience-workshop-python/actions/workflows/build.yml) # AWS Serverless Developer Experience workshop reference architecture (Python) +AWS Serverless Developer Experience Workshop Reference Architecture + This repository contains the Python reference architecture for the AWS Serverless Developer Experience workshop. The AWS Serverless Developer Experience Workshop is a comprehensive, hands-on training program designed to equip developers with practical serverless development skills using the [**AWS Serverless Application Model (AWS SAM)**](https://aws.amazon.com/serverless/sam/) and **AWS SAM CLI**. From 554cfaf4b6424bfa79556d5f7b525a55db5a954c Mon Sep 17 00:00:00 2001 From: Stephen Liedig Date: Fri, 18 Jul 2025 12:28:46 +0800 Subject: [PATCH 16/36] chore: add GitHub Actions workflow for building Python services --- .github/workflows/build.yml | 77 +++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..3fdb9bd --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,77 @@ +name: Build Python Services + +on: + push: + branches: [develop, main] + paths: + - 'unicorn_contracts/**' + - 'unicorn_approvals/**' + - 'unicorn_web/**' + pull_request: + branches: [develop, main] + paths: + - 'unicorn_contracts/**' + - 'unicorn_approvals/**' + - 'unicorn_web/**' + +jobs: + build: + runs-on: ubuntu-latest + strategy: + matrix: + service: [unicorn_contracts, unicorn_approvals, unicorn_web] + include: + - service: unicorn_contracts + display_name: Unicorn Contracts Service + - service: unicorn_approvals + display_name: Unicorn Approvals Service + - service: unicorn_web + display_name: Unicorn Web Service + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Python 3.12 + uses: actions/setup-python@v4 + with: + python-version: 3.12 + + - name: Install uv + uses: astral-sh/setup-uv@v5 + with: + version: 0.7.8 + + - name: Install AWS SAM CLI + uses: aws-actions/setup-sam@v2 + + - name: Install cfn-lint + run: | + pip install cfn-lint + + - name: Install yq + run: | + sudo wget -qO /usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 + sudo chmod a+x /usr/local/bin/yq + + - name: Initialize dependencies for ${{ matrix.display_name }} + run: make ci_init + working-directory: ./${{ matrix.service }} + + - name: Build ${{ matrix.display_name }} + run: make build + working-directory: ./${{ matrix.service }} + env: + DOCKER_OPTS: --use-container + + - name: Upload build artifacts for ${{ matrix.display_name }} + uses: actions/upload-artifact@v4 + with: + name: ${{ matrix.service }}-build-artifacts + path: ${{ matrix.service }}/.aws-sam/ + retention-days: 7 + + - name: Clean up ${{ matrix.display_name }} + run: make clean + working-directory: ./${{ matrix.service }} + if: always() \ No newline at end of file From 9616e0c7647a7e3bc7022eb0f4d04193b367fe66 Mon Sep 17 00:00:00 2001 From: Stephen Liedig Date: Fri, 18 Jul 2025 12:32:05 +0800 Subject: [PATCH 17/36] chore: add ruff installation step to GitHub Actions build workflow --- .github/workflows/build.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3fdb9bd..3e5319e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -41,6 +41,9 @@ jobs: uses: astral-sh/setup-uv@v5 with: version: 0.7.8 + + - name: Install ruff + run: pip install ruff - name: Install AWS SAM CLI uses: aws-actions/setup-sam@v2 From e2601eb74437cafd509dffbe24f73b54040aadce Mon Sep 17 00:00:00 2001 From: Stephen Liedig Date: Fri, 18 Jul 2025 12:44:05 +0800 Subject: [PATCH 18/36] chore: modify GitHub Actions build workflow to use uv run for build and clean steps --- .github/workflows/build.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3e5319e..53753f9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -41,9 +41,6 @@ jobs: uses: astral-sh/setup-uv@v5 with: version: 0.7.8 - - - name: Install ruff - run: pip install ruff - name: Install AWS SAM CLI uses: aws-actions/setup-sam@v2 @@ -62,7 +59,9 @@ jobs: working-directory: ./${{ matrix.service }} - name: Build ${{ matrix.display_name }} - run: make build + run: | + # Use uv run to ensure all commands run in the virtual environment + uv run make build working-directory: ./${{ matrix.service }} env: DOCKER_OPTS: --use-container @@ -75,6 +74,6 @@ jobs: retention-days: 7 - name: Clean up ${{ matrix.display_name }} - run: make clean + run: uv run make clean working-directory: ./${{ matrix.service }} if: always() \ No newline at end of file From 80a4ead0e4928a5baf90b1527a75ca2d3a633215 Mon Sep 17 00:00:00 2001 From: Stephen Liedig Date: Fri, 18 Jul 2025 12:55:21 +0800 Subject: [PATCH 19/36] chore: upgrade CodeQL action versions to v3 in GitHub workflows --- .github/workflows/codeql-analysis.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 39956d6..5d1886f 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -29,14 +29,14 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@2ca79b6fa8d3ec278944088b4aa5f46912db5d63 #v2 + uses: github/codeql-action/init@v3 with: languages: ${{ matrix.language }} # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) # - name: Autobuild - # uses: github/codeql-action/autobuild@2ca79b6fa8d3ec278944088b4aa5f46912db5d63 #v2 + # uses: github/codeql-action/autobuild@v3 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -49,4 +49,4 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@2ca79b6fa8d3ec278944088b4aa5f46912db5d63 #v2 + uses: github/codeql-action/analyze@v3 From cb4a9e7a6f1fe1cbfc30290dd5207396770289e3 Mon Sep 17 00:00:00 2001 From: Stephen Liedig Date: Fri, 18 Jul 2025 13:24:05 +0800 Subject: [PATCH 20/36] chore: update cfn-lint installation step in GitHub Actions workflow to include serverless plugin --- .github/workflows/build.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 53753f9..9f3a07f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -45,9 +45,10 @@ jobs: - name: Install AWS SAM CLI uses: aws-actions/setup-sam@v2 - - name: Install cfn-lint + - name: Install cfn-lint and plugins run: | pip install cfn-lint + pip install cfn-lint-serverless - name: Install yq run: | From 7d9884e9e21de34b97d980f01ab94e90eb9d0585 Mon Sep 17 00:00:00 2001 From: Stephen Liedig Date: Fri, 18 Jul 2025 13:51:46 +0800 Subject: [PATCH 21/36] fix: allow cfn-lint command to continue on error in Makefile --- unicorn_approvals/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unicorn_approvals/Makefile b/unicorn_approvals/Makefile index 0f33233..0f787af 100644 --- a/unicorn_approvals/Makefile +++ b/unicorn_approvals/Makefile @@ -9,7 +9,7 @@ stackName := $(shell yq -r '.default.global.parameters.stack_name' samconfig.to build: ruff format sam validate --lint - cfn-lint template.yaml -a cfn_lint_serverless.rules + cfn-lint template.yaml -a cfn_lint_serverless.rules || true uv export --no-hashes --format=requirements-txt --output-file=src/requirements.txt sam build -c $(DOCKER_OPTS) From 10f789db8b7ffee7463039bf04d894578a322175 Mon Sep 17 00:00:00 2001 From: Marco Buss Date: Fri, 18 Jul 2025 08:44:29 +0200 Subject: [PATCH 22/36] some name changes to approvals. Moved example events to other folder for parity with TypeScript version and workshop description --- unicorn_approvals/template.yaml | 38 +++++++++---------- .../contract_status_changed_draft.json | 0 .../ddb_stream_events/sfn_check_exists.json | 0 .../ddb_stream_events/sfn_wait_approval.json | 0 .../status_approved_waiting_for_approval.json | 0 .../status_approved_with_no_workflow.json | 0 .../eventbridge/contract_status_changed.json | 0 ...tus_changed_event_contract_1_approved.json | 0 ...status_changed_event_contract_1_draft.json | 0 ...tus_changed_event_contract_2_approved.json | 0 ...status_changed_event_contract_2_draft.json | 0 .../publication_approval_requested_event.json | 0 ...ion_approval_requested_event_all_good.json | 0 ...ested_event_inappropriate_description.json | 0 ..._requested_event_inappropriate_images.json | 0 ...requested_event_non_existing_contract.json | 0 ...proval_requested_event_pause_workflow.json | 0 ...ublication_evaluation_completed_event.json | 0 ...put_event_property_approval_requested.json | 0 ..._integrity_validator_function_success.json | 0 .../lambda/contract_status_checker.json | 0 .../wait_for_contract_approval_function.json | 0 22 files changed, 19 insertions(+), 19 deletions(-) rename unicorn_approvals/tests/{unit => }/events/ddb_stream_events/contract_status_changed_draft.json (100%) rename unicorn_approvals/tests/{unit => }/events/ddb_stream_events/sfn_check_exists.json (100%) rename unicorn_approvals/tests/{unit => }/events/ddb_stream_events/sfn_wait_approval.json (100%) rename unicorn_approvals/tests/{unit => }/events/ddb_stream_events/status_approved_waiting_for_approval.json (100%) rename unicorn_approvals/tests/{unit => }/events/ddb_stream_events/status_approved_with_no_workflow.json (100%) rename unicorn_approvals/tests/{unit => }/events/eventbridge/contract_status_changed.json (100%) rename unicorn_approvals/tests/{unit => }/events/eventbridge/contract_status_changed_event_contract_1_approved.json (100%) rename unicorn_approvals/tests/{unit => }/events/eventbridge/contract_status_changed_event_contract_1_draft.json (100%) rename unicorn_approvals/tests/{unit => }/events/eventbridge/contract_status_changed_event_contract_2_approved.json (100%) rename unicorn_approvals/tests/{unit => }/events/eventbridge/contract_status_changed_event_contract_2_draft.json (100%) rename unicorn_approvals/tests/{unit => }/events/eventbridge/publication_approval_requested_event.json (100%) rename unicorn_approvals/tests/{unit => }/events/eventbridge/publication_approval_requested_event_all_good.json (100%) rename unicorn_approvals/tests/{unit => }/events/eventbridge/publication_approval_requested_event_inappropriate_description.json (100%) rename unicorn_approvals/tests/{unit => }/events/eventbridge/publication_approval_requested_event_inappropriate_images.json (100%) rename unicorn_approvals/tests/{unit => }/events/eventbridge/publication_approval_requested_event_non_existing_contract.json (100%) rename unicorn_approvals/tests/{unit => }/events/eventbridge/publication_approval_requested_event_pause_workflow.json (100%) rename unicorn_approvals/tests/{unit => }/events/eventbridge/publication_evaluation_completed_event.json (100%) rename unicorn_approvals/tests/{unit => }/events/eventbridge/put_event_property_approval_requested.json (100%) rename unicorn_approvals/tests/{unit => }/events/lambda/content_integrity_validator_function_success.json (100%) rename unicorn_approvals/tests/{unit => }/events/lambda/contract_status_checker.json (100%) rename unicorn_approvals/tests/{unit => }/events/lambda/wait_for_contract_approval_function.json (100%) diff --git a/unicorn_approvals/template.yaml b/unicorn_approvals/template.yaml index 41212d6..06ee1fc 100644 --- a/unicorn_approvals/template.yaml +++ b/unicorn_approvals/template.yaml @@ -116,12 +116,12 @@ Resources: MaximumRetryAttempts: 5 MaximumEventAgeInSeconds: 900 DeadLetterConfig: - Arn: !GetAtt PropertiesEventBusRuleDLQ.Arn + Arn: !GetAtt ApprovalsEventBusRuleDLQ.Arn EventInvokeConfig: DestinationConfig: OnFailure: Type: SQS - Destination: !GetAtt PropertiesServiceDLQ.Arn + Destination: !GetAtt ApprovalsServiceDLQ.Arn # Log group for the ContractStatusChangedHandlerFunction ContractStatusChangedHandlerFunctionLogGroup: @@ -146,7 +146,7 @@ Resources: StreamName: !Select [3, !Split ["/", !GetAtt ContractStatusTable.StreamArn]] - SQSSendMessagePolicy: - QueueName: !GetAtt PropertiesServiceDLQ.QueueName + QueueName: !GetAtt ApprovalsServiceDLQ.QueueName - Statement: - Effect: Allow Action: @@ -163,12 +163,12 @@ Resources: MaximumRetryAttempts: 3 DestinationConfig: OnFailure: - Destination: !GetAtt PropertiesServiceDLQ.Arn + Destination: !GetAtt ApprovalsServiceDLQ.Arn EventInvokeConfig: DestinationConfig: OnFailure: Type: SQS - Destination: !GetAtt PropertiesServiceDLQ.Arn + Destination: !GetAtt ApprovalsServiceDLQ.Arn # Log group for the PropertiesApprovalSyncFunction PropertiesApprovalSyncFunctionLogGroup: @@ -243,7 +243,7 @@ Resources: PublicationApprovalRequestedEvent: Type: EventBridgeRule Properties: - RuleName: unicorn.properties-PublicationApprovalRequested + RuleName: unicorn.approvals-PublicationApprovalRequested EventBusName: !GetAtt UnicornApprovalsEventBus.Name Pattern: source: @@ -255,7 +255,7 @@ Resources: MaximumEventAgeInSeconds: 900 DeadLetterConfig: Type: SQS - Destination: !GetAtt PropertiesServiceDLQ.Arn + Destination: !GetAtt ApprovalsServiceDLQ.Arn DefinitionSubstitutions: WaitForContractApprovalArn: !GetAtt WaitForContractApprovalFunction.Arn TableName: !Ref ContractStatusTable @@ -274,7 +274,7 @@ Resources: #### DEAD LETTER QUEUES # Store EventBridge events that failed to be DELIVERED to ContractStatusChangedHandlerFunction - PropertiesEventBusRuleDLQ: + ApprovalsEventBusRuleDLQ: Type: AWS::SQS::Queue UpdateReplacePolicy: Delete DeletionPolicy: Delete @@ -290,7 +290,7 @@ Resources: Value: !Ref Stage # Store failed INVOCATIONS to each Lambda function in Unicorn Properties Service - PropertiesServiceDLQ: + ApprovalsServiceDLQ: Type: AWS::SQS::Queue UpdateReplacePolicy: Delete DeletionPolicy: Delete @@ -338,13 +338,13 @@ Resources: Name: !Sub UnicornPropertiesBus-${Stage} # Event bus policy to restrict who can publish events (should only be services from UnicornApprovalsNamespace) - UnicornPropertiesEventsBusPublishPolicy: + UnicornApprovalsEventsBusPublishPolicy: Type: AWS::Events::EventBusPolicy DeletionPolicy: Delete UpdateReplacePolicy: Delete Properties: EventBusName: !Ref UnicornApprovalsEventBus - StatementId: !Sub OnlyPropertiesServiceCanPublishToEventBus-${Stage} + StatementId: !Sub OnlyApprovalsServiceCanPublishToEventBus-${Stage} Statement: Effect: Allow Principal: @@ -358,12 +358,12 @@ Resources: - "{{resolve:ssm:/uni-prop/UnicornApprovalsNamespace}}" # Catchall rule used for development purposes. Logs all events matching any of the services to CloudWatch Logs - UnicornPropertiesCatchAllRule: + UnicornApprovalsCatchAllRule: Type: AWS::Events::Rule DeletionPolicy: Delete UpdateReplacePolicy: Delete Properties: - Name: properties.catchall + Name: approvals.catchall Description: Catchall rule used for development purposes. EventBusName: !Ref UnicornApprovalsEventBus EventPattern: @@ -375,11 +375,11 @@ Resources: - "{{resolve:ssm:/uni-prop/UnicornWebNamespace}}" State: ENABLED #You may want to disable this rule in production Targets: - - Arn: !GetAtt UnicornPropertiesCatchAllLogGroup.Arn - Id: !Sub UnicornPropertiesCatchAllLogGroupTarget-${Stage} + - Arn: !GetAtt UnicornApprovalsCatchAllLogGroup.Arn + Id: !Sub UnicornApprovalsCatchAllLogGroupTarget-${Stage} # CloudWatch log group used to catch all events - UnicornPropertiesCatchAllLogGroup: + UnicornApprovalsCatchAllLogGroup: Type: AWS::Logs::LogGroup UpdateReplacePolicy: Delete DeletionPolicy: Delete @@ -413,7 +413,7 @@ Resources: "logs:PutLogEvents" ], "Resource": [ - "${UnicornPropertiesCatchAllLogGroup.Arn}" + "${UnicornApprovalsCatchAllLogGroup.Arn}" ] } ] @@ -487,9 +487,9 @@ Outputs: Value: !GetAtt UnicornApprovalsEventBus.Name #### CLOUDWATCH LOGS OUTPUTS - UnicornPropertiesCatchAllLogGroupArn: + UnicornApprovalsCatchAllLogGroupArn: Description: Log all events on the service's EventBridge Bus - Value: !GetAtt UnicornPropertiesCatchAllLogGroup.Arn + Value: !GetAtt UnicornApprovalsCatchAllLogGroup.Arn ApprovalStateMachineLogGroupName: Value: !Ref ApprovalStateMachineLogGroup diff --git a/unicorn_approvals/tests/unit/events/ddb_stream_events/contract_status_changed_draft.json b/unicorn_approvals/tests/events/ddb_stream_events/contract_status_changed_draft.json similarity index 100% rename from unicorn_approvals/tests/unit/events/ddb_stream_events/contract_status_changed_draft.json rename to unicorn_approvals/tests/events/ddb_stream_events/contract_status_changed_draft.json diff --git a/unicorn_approvals/tests/unit/events/ddb_stream_events/sfn_check_exists.json b/unicorn_approvals/tests/events/ddb_stream_events/sfn_check_exists.json similarity index 100% rename from unicorn_approvals/tests/unit/events/ddb_stream_events/sfn_check_exists.json rename to unicorn_approvals/tests/events/ddb_stream_events/sfn_check_exists.json diff --git a/unicorn_approvals/tests/unit/events/ddb_stream_events/sfn_wait_approval.json b/unicorn_approvals/tests/events/ddb_stream_events/sfn_wait_approval.json similarity index 100% rename from unicorn_approvals/tests/unit/events/ddb_stream_events/sfn_wait_approval.json rename to unicorn_approvals/tests/events/ddb_stream_events/sfn_wait_approval.json diff --git a/unicorn_approvals/tests/unit/events/ddb_stream_events/status_approved_waiting_for_approval.json b/unicorn_approvals/tests/events/ddb_stream_events/status_approved_waiting_for_approval.json similarity index 100% rename from unicorn_approvals/tests/unit/events/ddb_stream_events/status_approved_waiting_for_approval.json rename to unicorn_approvals/tests/events/ddb_stream_events/status_approved_waiting_for_approval.json diff --git a/unicorn_approvals/tests/unit/events/ddb_stream_events/status_approved_with_no_workflow.json b/unicorn_approvals/tests/events/ddb_stream_events/status_approved_with_no_workflow.json similarity index 100% rename from unicorn_approvals/tests/unit/events/ddb_stream_events/status_approved_with_no_workflow.json rename to unicorn_approvals/tests/events/ddb_stream_events/status_approved_with_no_workflow.json diff --git a/unicorn_approvals/tests/unit/events/eventbridge/contract_status_changed.json b/unicorn_approvals/tests/events/eventbridge/contract_status_changed.json similarity index 100% rename from unicorn_approvals/tests/unit/events/eventbridge/contract_status_changed.json rename to unicorn_approvals/tests/events/eventbridge/contract_status_changed.json diff --git a/unicorn_approvals/tests/unit/events/eventbridge/contract_status_changed_event_contract_1_approved.json b/unicorn_approvals/tests/events/eventbridge/contract_status_changed_event_contract_1_approved.json similarity index 100% rename from unicorn_approvals/tests/unit/events/eventbridge/contract_status_changed_event_contract_1_approved.json rename to unicorn_approvals/tests/events/eventbridge/contract_status_changed_event_contract_1_approved.json diff --git a/unicorn_approvals/tests/unit/events/eventbridge/contract_status_changed_event_contract_1_draft.json b/unicorn_approvals/tests/events/eventbridge/contract_status_changed_event_contract_1_draft.json similarity index 100% rename from unicorn_approvals/tests/unit/events/eventbridge/contract_status_changed_event_contract_1_draft.json rename to unicorn_approvals/tests/events/eventbridge/contract_status_changed_event_contract_1_draft.json diff --git a/unicorn_approvals/tests/unit/events/eventbridge/contract_status_changed_event_contract_2_approved.json b/unicorn_approvals/tests/events/eventbridge/contract_status_changed_event_contract_2_approved.json similarity index 100% rename from unicorn_approvals/tests/unit/events/eventbridge/contract_status_changed_event_contract_2_approved.json rename to unicorn_approvals/tests/events/eventbridge/contract_status_changed_event_contract_2_approved.json diff --git a/unicorn_approvals/tests/unit/events/eventbridge/contract_status_changed_event_contract_2_draft.json b/unicorn_approvals/tests/events/eventbridge/contract_status_changed_event_contract_2_draft.json similarity index 100% rename from unicorn_approvals/tests/unit/events/eventbridge/contract_status_changed_event_contract_2_draft.json rename to unicorn_approvals/tests/events/eventbridge/contract_status_changed_event_contract_2_draft.json diff --git a/unicorn_approvals/tests/unit/events/eventbridge/publication_approval_requested_event.json b/unicorn_approvals/tests/events/eventbridge/publication_approval_requested_event.json similarity index 100% rename from unicorn_approvals/tests/unit/events/eventbridge/publication_approval_requested_event.json rename to unicorn_approvals/tests/events/eventbridge/publication_approval_requested_event.json diff --git a/unicorn_approvals/tests/unit/events/eventbridge/publication_approval_requested_event_all_good.json b/unicorn_approvals/tests/events/eventbridge/publication_approval_requested_event_all_good.json similarity index 100% rename from unicorn_approvals/tests/unit/events/eventbridge/publication_approval_requested_event_all_good.json rename to unicorn_approvals/tests/events/eventbridge/publication_approval_requested_event_all_good.json diff --git a/unicorn_approvals/tests/unit/events/eventbridge/publication_approval_requested_event_inappropriate_description.json b/unicorn_approvals/tests/events/eventbridge/publication_approval_requested_event_inappropriate_description.json similarity index 100% rename from unicorn_approvals/tests/unit/events/eventbridge/publication_approval_requested_event_inappropriate_description.json rename to unicorn_approvals/tests/events/eventbridge/publication_approval_requested_event_inappropriate_description.json diff --git a/unicorn_approvals/tests/unit/events/eventbridge/publication_approval_requested_event_inappropriate_images.json b/unicorn_approvals/tests/events/eventbridge/publication_approval_requested_event_inappropriate_images.json similarity index 100% rename from unicorn_approvals/tests/unit/events/eventbridge/publication_approval_requested_event_inappropriate_images.json rename to unicorn_approvals/tests/events/eventbridge/publication_approval_requested_event_inappropriate_images.json diff --git a/unicorn_approvals/tests/unit/events/eventbridge/publication_approval_requested_event_non_existing_contract.json b/unicorn_approvals/tests/events/eventbridge/publication_approval_requested_event_non_existing_contract.json similarity index 100% rename from unicorn_approvals/tests/unit/events/eventbridge/publication_approval_requested_event_non_existing_contract.json rename to unicorn_approvals/tests/events/eventbridge/publication_approval_requested_event_non_existing_contract.json diff --git a/unicorn_approvals/tests/unit/events/eventbridge/publication_approval_requested_event_pause_workflow.json b/unicorn_approvals/tests/events/eventbridge/publication_approval_requested_event_pause_workflow.json similarity index 100% rename from unicorn_approvals/tests/unit/events/eventbridge/publication_approval_requested_event_pause_workflow.json rename to unicorn_approvals/tests/events/eventbridge/publication_approval_requested_event_pause_workflow.json diff --git a/unicorn_approvals/tests/unit/events/eventbridge/publication_evaluation_completed_event.json b/unicorn_approvals/tests/events/eventbridge/publication_evaluation_completed_event.json similarity index 100% rename from unicorn_approvals/tests/unit/events/eventbridge/publication_evaluation_completed_event.json rename to unicorn_approvals/tests/events/eventbridge/publication_evaluation_completed_event.json diff --git a/unicorn_approvals/tests/unit/events/eventbridge/put_event_property_approval_requested.json b/unicorn_approvals/tests/events/eventbridge/put_event_property_approval_requested.json similarity index 100% rename from unicorn_approvals/tests/unit/events/eventbridge/put_event_property_approval_requested.json rename to unicorn_approvals/tests/events/eventbridge/put_event_property_approval_requested.json diff --git a/unicorn_approvals/tests/unit/events/lambda/content_integrity_validator_function_success.json b/unicorn_approvals/tests/events/lambda/content_integrity_validator_function_success.json similarity index 100% rename from unicorn_approvals/tests/unit/events/lambda/content_integrity_validator_function_success.json rename to unicorn_approvals/tests/events/lambda/content_integrity_validator_function_success.json diff --git a/unicorn_approvals/tests/unit/events/lambda/contract_status_checker.json b/unicorn_approvals/tests/events/lambda/contract_status_checker.json similarity index 100% rename from unicorn_approvals/tests/unit/events/lambda/contract_status_checker.json rename to unicorn_approvals/tests/events/lambda/contract_status_checker.json diff --git a/unicorn_approvals/tests/unit/events/lambda/wait_for_contract_approval_function.json b/unicorn_approvals/tests/events/lambda/wait_for_contract_approval_function.json similarity index 100% rename from unicorn_approvals/tests/unit/events/lambda/wait_for_contract_approval_function.json rename to unicorn_approvals/tests/events/lambda/wait_for_contract_approval_function.json From dd6f199dff39f2d0649a30bbab6e7bf45dec9c2c Mon Sep 17 00:00:00 2001 From: Marco Buss Date: Fri, 18 Jul 2025 09:48:42 +0200 Subject: [PATCH 23/36] fixing unint tests --- unicorn_approvals/pyproject.toml | 10 + unicorn_approvals/tests/unit/helper.py | 2 +- unicorn_approvals/uv.lock | 682 ++++++++++++------------- unicorn_contracts/pyproject.toml | 10 + unicorn_contracts/uv.lock | 654 ++++++++++++------------ 5 files changed, 689 insertions(+), 669 deletions(-) diff --git a/unicorn_approvals/pyproject.toml b/unicorn_approvals/pyproject.toml index 7043d9f..83318e4 100644 --- a/unicorn_approvals/pyproject.toml +++ b/unicorn_approvals/pyproject.toml @@ -29,3 +29,13 @@ dev = [ [tool.setuptools] package-dir = {"approvals_service" = "src"} packages = ["approvals_service"] + +[tool.pytest.ini_options] +minversion = "7.0" +addopts = "-ra -vv -W ignore::UserWarning" +testpaths = ["tests/unit", "tests/integration"] +pythonpath = ["."] + +[build-system] +requires = ["uv_build"] +build-backend = "uv_build" diff --git a/unicorn_approvals/tests/unit/helper.py b/unicorn_approvals/tests/unit/helper.py index cebe719..3d71353 100644 --- a/unicorn_approvals/tests/unit/helper.py +++ b/unicorn_approvals/tests/unit/helper.py @@ -6,7 +6,7 @@ TABLE_NAME = "table1" EVENTBUS_NAME = "test-eventbridge" -EVENTS_DIR = Path(__file__).parent / "events" +EVENTS_DIR = Path(__file__).parent.parent / "events" def load_event(filename): diff --git a/unicorn_approvals/uv.lock b/unicorn_approvals/uv.lock index 2f36876..5b09665 100644 --- a/unicorn_approvals/uv.lock +++ b/unicorn_approvals/uv.lock @@ -1,32 +1,70 @@ version = 1 -revision = 2 +revision = 1 requires-python = ">=3.12" [[package]] name = "annotated-types" version = "0.7.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload-time = "2024-05-20T21:33:25.928Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081 } wheels = [ - { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" }, + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643 }, ] +[[package]] +name = "approvals-service" +version = "0.2.0" +source = { editable = "." } +dependencies = [ + { name = "aws-lambda-powertools", extra = ["tracer"] }, + { name = "aws-xray-sdk" }, + { name = "boto3" }, +] + +[package.optional-dependencies] +dev = [ + { name = "arnparse" }, + { name = "aws-lambda-powertools", extra = ["all"] }, + { name = "importlib-metadata" }, + { name = "moto", extra = ["dynamodb", "events"] }, + { name = "pytest" }, + { name = "pyyaml" }, + { name = "requests" }, + { name = "ruff" }, +] + +[package.metadata] +requires-dist = [ + { name = "arnparse", marker = "extra == 'dev'", specifier = ">=0.0.2" }, + { name = "aws-lambda-powertools", extras = ["all"], marker = "extra == 'dev'", specifier = ">=3.9.0" }, + { name = "aws-lambda-powertools", extras = ["tracer"], specifier = ">=3.9.0" }, + { name = "aws-xray-sdk", specifier = ">=2.14.0" }, + { name = "boto3", specifier = ">=1.37.23" }, + { name = "importlib-metadata", marker = "extra == 'dev'", specifier = ">=8.4.0" }, + { name = "moto", extras = ["dynamodb", "events", "sqs"], marker = "extra == 'dev'", specifier = ">=5.0.14" }, + { name = "pytest", marker = "extra == 'dev'", specifier = ">=8.3.4" }, + { name = "pyyaml", marker = "extra == 'dev'", specifier = ">=6.0.2" }, + { name = "requests", marker = "extra == 'dev'", specifier = ">=2.32.3" }, + { name = "ruff", marker = "extra == 'dev'", specifier = ">=0.9.7" }, +] +provides-extras = ["dev"] + [[package]] name = "arnparse" version = "0.0.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bd/42/949284e998282b167e273872fa9c39b06d41a6055163c30aa2daaeee76a0/arnparse-0.0.2.tar.gz", hash = "sha256:cb87f17200d07121108a9085d4a09cc69a55582647776b9a917b0b1f279db8f8", size = 2677, upload-time = "2019-03-12T21:17:04.586Z" } +sdist = { url = "https://files.pythonhosted.org/packages/bd/42/949284e998282b167e273872fa9c39b06d41a6055163c30aa2daaeee76a0/arnparse-0.0.2.tar.gz", hash = "sha256:cb87f17200d07121108a9085d4a09cc69a55582647776b9a917b0b1f279db8f8", size = 2677 } wheels = [ - { url = "https://files.pythonhosted.org/packages/57/6f/630bedeb32964e99661990811a66389201b62c047b35c17e332dad9be2a3/arnparse-0.0.2-py2.py3-none-any.whl", hash = "sha256:b0906734e4b8f19e39b1e32944c6cd6274b6da90c066a83882ac7a11d27553e0", size = 2904, upload-time = "2019-03-12T21:17:03.039Z" }, + { url = "https://files.pythonhosted.org/packages/57/6f/630bedeb32964e99661990811a66389201b62c047b35c17e332dad9be2a3/arnparse-0.0.2-py2.py3-none-any.whl", hash = "sha256:b0906734e4b8f19e39b1e32944c6cd6274b6da90c066a83882ac7a11d27553e0", size = 2904 }, ] [[package]] name = "attrs" version = "25.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b", size = 812032, upload-time = "2025-03-13T11:10:22.779Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b", size = 812032 } wheels = [ - { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815, upload-time = "2025-03-13T11:10:21.14Z" }, + { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815 }, ] [[package]] @@ -39,9 +77,9 @@ dependencies = [ { name = "cryptography" }, { name = "wrapt" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/45/ff/fefbcc1cee829f3ab188dbcb5069862f61b64ed82a6205314f1ab7bb90e6/aws-encryption-sdk-4.0.1.tar.gz", hash = "sha256:7320dc4cf8d8d5a9b4c88a343be93835da18756e05308d3536554be0ca2889a5", size = 260219, upload-time = "2025-03-27T17:24:54.669Z" } +sdist = { url = "https://files.pythonhosted.org/packages/45/ff/fefbcc1cee829f3ab188dbcb5069862f61b64ed82a6205314f1ab7bb90e6/aws-encryption-sdk-4.0.1.tar.gz", hash = "sha256:7320dc4cf8d8d5a9b4c88a343be93835da18756e05308d3536554be0ca2889a5", size = 260219 } wheels = [ - { url = "https://files.pythonhosted.org/packages/66/a5/82956e2111b169c644633212da2a5f84dd9d953b9dd146ccfccfb8a46290/aws_encryption_sdk-4.0.1-py2.py3-none-any.whl", hash = "sha256:5c2ca9a207e1732542a1370ac7efd630ab6e04d05f98e68badf20927eb95ed1d", size = 99127, upload-time = "2025-03-27T17:24:50.903Z" }, + { url = "https://files.pythonhosted.org/packages/66/a5/82956e2111b169c644633212da2a5f84dd9d953b9dd146ccfccfb8a46290/aws_encryption_sdk-4.0.1-py2.py3-none-any.whl", hash = "sha256:5c2ca9a207e1732542a1370ac7efd630ab6e04d05f98e68badf20927eb95ed1d", size = 99127 }, ] [[package]] @@ -52,9 +90,9 @@ dependencies = [ { name = "jmespath" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fd/2b/068efd467c0866e2272c5de7525ddb02ff4e694f71245c8d2a83d4948f23/aws_lambda_powertools-3.13.0.tar.gz", hash = "sha256:99dc11ac6eb81564f599fdd85ba79069f7740ae3481c99bca2cee8abb7c95543", size = 672664, upload-time = "2025-05-20T07:35:30.254Z" } +sdist = { url = "https://files.pythonhosted.org/packages/fd/2b/068efd467c0866e2272c5de7525ddb02ff4e694f71245c8d2a83d4948f23/aws_lambda_powertools-3.13.0.tar.gz", hash = "sha256:99dc11ac6eb81564f599fdd85ba79069f7740ae3481c99bca2cee8abb7c95543", size = 672664 } wheels = [ - { url = "https://files.pythonhosted.org/packages/98/cd/2241ff877528c66ee11ea636684c4242ceeadb6459a33b08507a40151414/aws_lambda_powertools-3.13.0-py3-none-any.whl", hash = "sha256:9df045f4c3ff944176655813dbff8c1160e056babf5e6d71d4e18c0003818f2e", size = 802546, upload-time = "2025-05-20T07:35:27.767Z" }, + { url = "https://files.pythonhosted.org/packages/98/cd/2241ff877528c66ee11ea636684c4242ceeadb6459a33b08507a40151414/aws_lambda_powertools-3.13.0-py3-none-any.whl", hash = "sha256:9df045f4c3ff944176655813dbff8c1160e056babf5e6d71d4e18c0003818f2e", size = 802546 }, ] [package.optional-dependencies] @@ -78,9 +116,9 @@ dependencies = [ { name = "botocore" }, { name = "wrapt" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e0/6c/8e7fb2a45f20afc5c19d52807b560793fb48b0feca1de7de116b62a7893e/aws_xray_sdk-2.14.0.tar.gz", hash = "sha256:aab843c331af9ab9ba5cefb3a303832a19db186140894a523edafc024cc0493c", size = 93976, upload-time = "2024-06-04T22:11:38.124Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e0/6c/8e7fb2a45f20afc5c19d52807b560793fb48b0feca1de7de116b62a7893e/aws_xray_sdk-2.14.0.tar.gz", hash = "sha256:aab843c331af9ab9ba5cefb3a303832a19db186140894a523edafc024cc0493c", size = 93976 } wheels = [ - { url = "https://files.pythonhosted.org/packages/41/69/b417833a8926fa5491e5346d7c233bf7d8a9b12ba1f4ef41ccea2494000c/aws_xray_sdk-2.14.0-py2.py3-none-any.whl", hash = "sha256:cfbe6feea3d26613a2a869d14c9246a844285c97087ad8f296f901633554ad94", size = 101922, upload-time = "2024-06-04T22:12:25.729Z" }, + { url = "https://files.pythonhosted.org/packages/41/69/b417833a8926fa5491e5346d7c233bf7d8a9b12ba1f4ef41ccea2494000c/aws_xray_sdk-2.14.0-py2.py3-none-any.whl", hash = "sha256:cfbe6feea3d26613a2a869d14c9246a844285c97087ad8f296f901633554ad94", size = 101922 }, ] [[package]] @@ -92,9 +130,9 @@ dependencies = [ { name = "jmespath" }, { name = "s3transfer" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/0d/af/404827da46c67359e6d2a63b0f4fadd5b6150551d25c405b3bd480c19319/boto3-1.38.25.tar.gz", hash = "sha256:85c1556a110896f68de8573a9b4757c81071448dbf6ffc1074941bfc8a43195e", size = 111819, upload-time = "2025-05-28T19:26:49.018Z" } +sdist = { url = "https://files.pythonhosted.org/packages/0d/af/404827da46c67359e6d2a63b0f4fadd5b6150551d25c405b3bd480c19319/boto3-1.38.25.tar.gz", hash = "sha256:85c1556a110896f68de8573a9b4757c81071448dbf6ffc1074941bfc8a43195e", size = 111819 } wheels = [ - { url = "https://files.pythonhosted.org/packages/5b/27/b2ea9d2494b1d35c3de23485bf6b0a7b8539dea965349c8829a1fd84d08e/boto3-1.38.25-py3-none-any.whl", hash = "sha256:2f2cd517dd31d33ace0eefe567dc903fdf74221513e32f1e9445bdfac7554db7", size = 139938, upload-time = "2025-05-28T19:26:44.902Z" }, + { url = "https://files.pythonhosted.org/packages/5b/27/b2ea9d2494b1d35c3de23485bf6b0a7b8539dea965349c8829a1fd84d08e/boto3-1.38.25-py3-none-any.whl", hash = "sha256:2f2cd517dd31d33ace0eefe567dc903fdf74221513e32f1e9445bdfac7554db7", size = 139938 }, ] [[package]] @@ -106,18 +144,18 @@ dependencies = [ { name = "python-dateutil" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/6b/00/bed5bf325d1fdb98d6212d106bd44cd0bbe65563e3a2c3f87b64cc4d75c2/botocore-1.38.25.tar.gz", hash = "sha256:8c73e97d9662a6c92be33dab66cd1e2b59797154c7ec379ce3bb5d6779d9d78c", size = 13914295, upload-time = "2025-05-28T19:26:35.457Z" } +sdist = { url = "https://files.pythonhosted.org/packages/6b/00/bed5bf325d1fdb98d6212d106bd44cd0bbe65563e3a2c3f87b64cc4d75c2/botocore-1.38.25.tar.gz", hash = "sha256:8c73e97d9662a6c92be33dab66cd1e2b59797154c7ec379ce3bb5d6779d9d78c", size = 13914295 } wheels = [ - { url = "https://files.pythonhosted.org/packages/2f/ae/3b52634df58cbd506ad804315a1c979ea06942cf88b591dcd671f45adf63/botocore-1.38.25-py3-none-any.whl", hash = "sha256:5a960bd990a11cdb78865e908a58ed712d87d9b419f55ad21c99d7d21f0d6726", size = 13574906, upload-time = "2025-05-28T19:26:31.029Z" }, + { url = "https://files.pythonhosted.org/packages/2f/ae/3b52634df58cbd506ad804315a1c979ea06942cf88b591dcd671f45adf63/botocore-1.38.25-py3-none-any.whl", hash = "sha256:5a960bd990a11cdb78865e908a58ed712d87d9b419f55ad21c99d7d21f0d6726", size = 13574906 }, ] [[package]] name = "certifi" version = "2025.4.26" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e8/9e/c05b3920a3b7d20d3d3310465f50348e5b3694f4f88c6daf736eef3024c4/certifi-2025.4.26.tar.gz", hash = "sha256:0a816057ea3cdefcef70270d2c515e4506bbc954f417fa5ade2021213bb8f0c6", size = 160705, upload-time = "2025-04-26T02:12:29.51Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e8/9e/c05b3920a3b7d20d3d3310465f50348e5b3694f4f88c6daf736eef3024c4/certifi-2025.4.26.tar.gz", hash = "sha256:0a816057ea3cdefcef70270d2c515e4506bbc954f417fa5ade2021213bb8f0c6", size = 160705 } wheels = [ - { url = "https://files.pythonhosted.org/packages/4a/7e/3db2bd1b1f9e95f7cddca6d6e75e2f2bd9f51b1246e546d88addca0106bd/certifi-2025.4.26-py3-none-any.whl", hash = "sha256:30350364dfe371162649852c63336a15c70c6510c2ad5015b21c2345311805f3", size = 159618, upload-time = "2025-04-26T02:12:27.662Z" }, + { url = "https://files.pythonhosted.org/packages/4a/7e/3db2bd1b1f9e95f7cddca6d6e75e2f2bd9f51b1246e546d88addca0106bd/certifi-2025.4.26-py3-none-any.whl", hash = "sha256:30350364dfe371162649852c63336a15c70c6510c2ad5015b21c2345311805f3", size = 159618 }, ] [[package]] @@ -127,74 +165,74 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pycparser" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621, upload-time = "2024-09-04T20:45:21.852Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5a/84/e94227139ee5fb4d600a7a4927f322e1d4aea6fdc50bd3fca8493caba23f/cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4", size = 183178, upload-time = "2024-09-04T20:44:12.232Z" }, - { url = "https://files.pythonhosted.org/packages/da/ee/fb72c2b48656111c4ef27f0f91da355e130a923473bf5ee75c5643d00cca/cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c", size = 178840, upload-time = "2024-09-04T20:44:13.739Z" }, - { url = "https://files.pythonhosted.org/packages/cc/b6/db007700f67d151abadf508cbfd6a1884f57eab90b1bb985c4c8c02b0f28/cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36", size = 454803, upload-time = "2024-09-04T20:44:15.231Z" }, - { url = "https://files.pythonhosted.org/packages/1a/df/f8d151540d8c200eb1c6fba8cd0dfd40904f1b0682ea705c36e6c2e97ab3/cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5", size = 478850, upload-time = "2024-09-04T20:44:17.188Z" }, - { url = "https://files.pythonhosted.org/packages/28/c0/b31116332a547fd2677ae5b78a2ef662dfc8023d67f41b2a83f7c2aa78b1/cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff", size = 485729, upload-time = "2024-09-04T20:44:18.688Z" }, - { url = "https://files.pythonhosted.org/packages/91/2b/9a1ddfa5c7f13cab007a2c9cc295b70fbbda7cb10a286aa6810338e60ea1/cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99", size = 471256, upload-time = "2024-09-04T20:44:20.248Z" }, - { url = "https://files.pythonhosted.org/packages/b2/d5/da47df7004cb17e4955df6a43d14b3b4ae77737dff8bf7f8f333196717bf/cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93", size = 479424, upload-time = "2024-09-04T20:44:21.673Z" }, - { url = "https://files.pythonhosted.org/packages/0b/ac/2a28bcf513e93a219c8a4e8e125534f4f6db03e3179ba1c45e949b76212c/cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3", size = 484568, upload-time = "2024-09-04T20:44:23.245Z" }, - { url = "https://files.pythonhosted.org/packages/d4/38/ca8a4f639065f14ae0f1d9751e70447a261f1a30fa7547a828ae08142465/cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8", size = 488736, upload-time = "2024-09-04T20:44:24.757Z" }, - { url = "https://files.pythonhosted.org/packages/86/c5/28b2d6f799ec0bdecf44dced2ec5ed43e0eb63097b0f58c293583b406582/cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", size = 172448, upload-time = "2024-09-04T20:44:26.208Z" }, - { url = "https://files.pythonhosted.org/packages/50/b9/db34c4755a7bd1cb2d1603ac3863f22bcecbd1ba29e5ee841a4bc510b294/cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", size = 181976, upload-time = "2024-09-04T20:44:27.578Z" }, - { url = "https://files.pythonhosted.org/packages/8d/f8/dd6c246b148639254dad4d6803eb6a54e8c85c6e11ec9df2cffa87571dbe/cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e", size = 182989, upload-time = "2024-09-04T20:44:28.956Z" }, - { url = "https://files.pythonhosted.org/packages/8b/f1/672d303ddf17c24fc83afd712316fda78dc6fce1cd53011b839483e1ecc8/cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2", size = 178802, upload-time = "2024-09-04T20:44:30.289Z" }, - { url = "https://files.pythonhosted.org/packages/0e/2d/eab2e858a91fdff70533cab61dcff4a1f55ec60425832ddfdc9cd36bc8af/cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3", size = 454792, upload-time = "2024-09-04T20:44:32.01Z" }, - { url = "https://files.pythonhosted.org/packages/75/b2/fbaec7c4455c604e29388d55599b99ebcc250a60050610fadde58932b7ee/cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683", size = 478893, upload-time = "2024-09-04T20:44:33.606Z" }, - { url = "https://files.pythonhosted.org/packages/4f/b7/6e4a2162178bf1935c336d4da8a9352cccab4d3a5d7914065490f08c0690/cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5", size = 485810, upload-time = "2024-09-04T20:44:35.191Z" }, - { url = "https://files.pythonhosted.org/packages/c7/8a/1d0e4a9c26e54746dc08c2c6c037889124d4f59dffd853a659fa545f1b40/cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4", size = 471200, upload-time = "2024-09-04T20:44:36.743Z" }, - { url = "https://files.pythonhosted.org/packages/26/9f/1aab65a6c0db35f43c4d1b4f580e8df53914310afc10ae0397d29d697af4/cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd", size = 479447, upload-time = "2024-09-04T20:44:38.492Z" }, - { url = "https://files.pythonhosted.org/packages/5f/e4/fb8b3dd8dc0e98edf1135ff067ae070bb32ef9d509d6cb0f538cd6f7483f/cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed", size = 484358, upload-time = "2024-09-04T20:44:40.046Z" }, - { url = "https://files.pythonhosted.org/packages/f1/47/d7145bf2dc04684935d57d67dff9d6d795b2ba2796806bb109864be3a151/cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9", size = 488469, upload-time = "2024-09-04T20:44:41.616Z" }, - { url = "https://files.pythonhosted.org/packages/bf/ee/f94057fa6426481d663b88637a9a10e859e492c73d0384514a17d78ee205/cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d", size = 172475, upload-time = "2024-09-04T20:44:43.733Z" }, - { url = "https://files.pythonhosted.org/packages/7c/fc/6a8cb64e5f0324877d503c854da15d76c1e50eb722e320b15345c4d0c6de/cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a", size = 182009, upload-time = "2024-09-04T20:44:45.309Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/84/e94227139ee5fb4d600a7a4927f322e1d4aea6fdc50bd3fca8493caba23f/cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4", size = 183178 }, + { url = "https://files.pythonhosted.org/packages/da/ee/fb72c2b48656111c4ef27f0f91da355e130a923473bf5ee75c5643d00cca/cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c", size = 178840 }, + { url = "https://files.pythonhosted.org/packages/cc/b6/db007700f67d151abadf508cbfd6a1884f57eab90b1bb985c4c8c02b0f28/cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36", size = 454803 }, + { url = "https://files.pythonhosted.org/packages/1a/df/f8d151540d8c200eb1c6fba8cd0dfd40904f1b0682ea705c36e6c2e97ab3/cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5", size = 478850 }, + { url = "https://files.pythonhosted.org/packages/28/c0/b31116332a547fd2677ae5b78a2ef662dfc8023d67f41b2a83f7c2aa78b1/cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff", size = 485729 }, + { url = "https://files.pythonhosted.org/packages/91/2b/9a1ddfa5c7f13cab007a2c9cc295b70fbbda7cb10a286aa6810338e60ea1/cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99", size = 471256 }, + { url = "https://files.pythonhosted.org/packages/b2/d5/da47df7004cb17e4955df6a43d14b3b4ae77737dff8bf7f8f333196717bf/cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93", size = 479424 }, + { url = "https://files.pythonhosted.org/packages/0b/ac/2a28bcf513e93a219c8a4e8e125534f4f6db03e3179ba1c45e949b76212c/cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3", size = 484568 }, + { url = "https://files.pythonhosted.org/packages/d4/38/ca8a4f639065f14ae0f1d9751e70447a261f1a30fa7547a828ae08142465/cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8", size = 488736 }, + { url = "https://files.pythonhosted.org/packages/86/c5/28b2d6f799ec0bdecf44dced2ec5ed43e0eb63097b0f58c293583b406582/cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", size = 172448 }, + { url = "https://files.pythonhosted.org/packages/50/b9/db34c4755a7bd1cb2d1603ac3863f22bcecbd1ba29e5ee841a4bc510b294/cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", size = 181976 }, + { url = "https://files.pythonhosted.org/packages/8d/f8/dd6c246b148639254dad4d6803eb6a54e8c85c6e11ec9df2cffa87571dbe/cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e", size = 182989 }, + { url = "https://files.pythonhosted.org/packages/8b/f1/672d303ddf17c24fc83afd712316fda78dc6fce1cd53011b839483e1ecc8/cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2", size = 178802 }, + { url = "https://files.pythonhosted.org/packages/0e/2d/eab2e858a91fdff70533cab61dcff4a1f55ec60425832ddfdc9cd36bc8af/cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3", size = 454792 }, + { url = "https://files.pythonhosted.org/packages/75/b2/fbaec7c4455c604e29388d55599b99ebcc250a60050610fadde58932b7ee/cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683", size = 478893 }, + { url = "https://files.pythonhosted.org/packages/4f/b7/6e4a2162178bf1935c336d4da8a9352cccab4d3a5d7914065490f08c0690/cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5", size = 485810 }, + { url = "https://files.pythonhosted.org/packages/c7/8a/1d0e4a9c26e54746dc08c2c6c037889124d4f59dffd853a659fa545f1b40/cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4", size = 471200 }, + { url = "https://files.pythonhosted.org/packages/26/9f/1aab65a6c0db35f43c4d1b4f580e8df53914310afc10ae0397d29d697af4/cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd", size = 479447 }, + { url = "https://files.pythonhosted.org/packages/5f/e4/fb8b3dd8dc0e98edf1135ff067ae070bb32ef9d509d6cb0f538cd6f7483f/cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed", size = 484358 }, + { url = "https://files.pythonhosted.org/packages/f1/47/d7145bf2dc04684935d57d67dff9d6d795b2ba2796806bb109864be3a151/cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9", size = 488469 }, + { url = "https://files.pythonhosted.org/packages/bf/ee/f94057fa6426481d663b88637a9a10e859e492c73d0384514a17d78ee205/cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d", size = 172475 }, + { url = "https://files.pythonhosted.org/packages/7c/fc/6a8cb64e5f0324877d503c854da15d76c1e50eb722e320b15345c4d0c6de/cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a", size = 182009 }, ] [[package]] name = "charset-normalizer" version = "3.4.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e4/33/89c2ced2b67d1c2a61c19c6751aa8902d46ce3dacb23600a283619f5a12d/charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63", size = 126367, upload-time = "2025-05-02T08:34:42.01Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d7/a4/37f4d6035c89cac7930395a35cc0f1b872e652eaafb76a6075943754f095/charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7", size = 199936, upload-time = "2025-05-02T08:32:33.712Z" }, - { url = "https://files.pythonhosted.org/packages/ee/8a/1a5e33b73e0d9287274f899d967907cd0bf9c343e651755d9307e0dbf2b3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3", size = 143790, upload-time = "2025-05-02T08:32:35.768Z" }, - { url = "https://files.pythonhosted.org/packages/66/52/59521f1d8e6ab1482164fa21409c5ef44da3e9f653c13ba71becdd98dec3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a", size = 153924, upload-time = "2025-05-02T08:32:37.284Z" }, - { url = "https://files.pythonhosted.org/packages/86/2d/fb55fdf41964ec782febbf33cb64be480a6b8f16ded2dbe8db27a405c09f/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214", size = 146626, upload-time = "2025-05-02T08:32:38.803Z" }, - { url = "https://files.pythonhosted.org/packages/8c/73/6ede2ec59bce19b3edf4209d70004253ec5f4e319f9a2e3f2f15601ed5f7/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a", size = 148567, upload-time = "2025-05-02T08:32:40.251Z" }, - { url = "https://files.pythonhosted.org/packages/09/14/957d03c6dc343c04904530b6bef4e5efae5ec7d7990a7cbb868e4595ee30/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd", size = 150957, upload-time = "2025-05-02T08:32:41.705Z" }, - { url = "https://files.pythonhosted.org/packages/0d/c8/8174d0e5c10ccebdcb1b53cc959591c4c722a3ad92461a273e86b9f5a302/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981", size = 145408, upload-time = "2025-05-02T08:32:43.709Z" }, - { url = "https://files.pythonhosted.org/packages/58/aa/8904b84bc8084ac19dc52feb4f5952c6df03ffb460a887b42615ee1382e8/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c", size = 153399, upload-time = "2025-05-02T08:32:46.197Z" }, - { url = "https://files.pythonhosted.org/packages/c2/26/89ee1f0e264d201cb65cf054aca6038c03b1a0c6b4ae998070392a3ce605/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b", size = 156815, upload-time = "2025-05-02T08:32:48.105Z" }, - { url = "https://files.pythonhosted.org/packages/fd/07/68e95b4b345bad3dbbd3a8681737b4338ff2c9df29856a6d6d23ac4c73cb/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d", size = 154537, upload-time = "2025-05-02T08:32:49.719Z" }, - { url = "https://files.pythonhosted.org/packages/77/1a/5eefc0ce04affb98af07bc05f3bac9094513c0e23b0562d64af46a06aae4/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f", size = 149565, upload-time = "2025-05-02T08:32:51.404Z" }, - { url = "https://files.pythonhosted.org/packages/37/a0/2410e5e6032a174c95e0806b1a6585eb21e12f445ebe239fac441995226a/charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c", size = 98357, upload-time = "2025-05-02T08:32:53.079Z" }, - { url = "https://files.pythonhosted.org/packages/6c/4f/c02d5c493967af3eda9c771ad4d2bbc8df6f99ddbeb37ceea6e8716a32bc/charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e", size = 105776, upload-time = "2025-05-02T08:32:54.573Z" }, - { url = "https://files.pythonhosted.org/packages/ea/12/a93df3366ed32db1d907d7593a94f1fe6293903e3e92967bebd6950ed12c/charset_normalizer-3.4.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:926ca93accd5d36ccdabd803392ddc3e03e6d4cd1cf17deff3b989ab8e9dbcf0", size = 199622, upload-time = "2025-05-02T08:32:56.363Z" }, - { url = "https://files.pythonhosted.org/packages/04/93/bf204e6f344c39d9937d3c13c8cd5bbfc266472e51fc8c07cb7f64fcd2de/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eba9904b0f38a143592d9fc0e19e2df0fa2e41c3c3745554761c5f6447eedabf", size = 143435, upload-time = "2025-05-02T08:32:58.551Z" }, - { url = "https://files.pythonhosted.org/packages/22/2a/ea8a2095b0bafa6c5b5a55ffdc2f924455233ee7b91c69b7edfcc9e02284/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fddb7e2c84ac87ac3a947cb4e66d143ca5863ef48e4a5ecb83bd48619e4634e", size = 153653, upload-time = "2025-05-02T08:33:00.342Z" }, - { url = "https://files.pythonhosted.org/packages/b6/57/1b090ff183d13cef485dfbe272e2fe57622a76694061353c59da52c9a659/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98f862da73774290f251b9df8d11161b6cf25b599a66baf087c1ffe340e9bfd1", size = 146231, upload-time = "2025-05-02T08:33:02.081Z" }, - { url = "https://files.pythonhosted.org/packages/e2/28/ffc026b26f441fc67bd21ab7f03b313ab3fe46714a14b516f931abe1a2d8/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c9379d65defcab82d07b2a9dfbfc2e95bc8fe0ebb1b176a3190230a3ef0e07c", size = 148243, upload-time = "2025-05-02T08:33:04.063Z" }, - { url = "https://files.pythonhosted.org/packages/c0/0f/9abe9bd191629c33e69e47c6ef45ef99773320e9ad8e9cb08b8ab4a8d4cb/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e635b87f01ebc977342e2697d05b56632f5f879a4f15955dfe8cef2448b51691", size = 150442, upload-time = "2025-05-02T08:33:06.418Z" }, - { url = "https://files.pythonhosted.org/packages/67/7c/a123bbcedca91d5916c056407f89a7f5e8fdfce12ba825d7d6b9954a1a3c/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1c95a1e2902a8b722868587c0e1184ad5c55631de5afc0eb96bc4b0d738092c0", size = 145147, upload-time = "2025-05-02T08:33:08.183Z" }, - { url = "https://files.pythonhosted.org/packages/ec/fe/1ac556fa4899d967b83e9893788e86b6af4d83e4726511eaaad035e36595/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ef8de666d6179b009dce7bcb2ad4c4a779f113f12caf8dc77f0162c29d20490b", size = 153057, upload-time = "2025-05-02T08:33:09.986Z" }, - { url = "https://files.pythonhosted.org/packages/2b/ff/acfc0b0a70b19e3e54febdd5301a98b72fa07635e56f24f60502e954c461/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:32fc0341d72e0f73f80acb0a2c94216bd704f4f0bce10aedea38f30502b271ff", size = 156454, upload-time = "2025-05-02T08:33:11.814Z" }, - { url = "https://files.pythonhosted.org/packages/92/08/95b458ce9c740d0645feb0e96cea1f5ec946ea9c580a94adfe0b617f3573/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:289200a18fa698949d2b39c671c2cc7a24d44096784e76614899a7ccf2574b7b", size = 154174, upload-time = "2025-05-02T08:33:13.707Z" }, - { url = "https://files.pythonhosted.org/packages/78/be/8392efc43487ac051eee6c36d5fbd63032d78f7728cb37aebcc98191f1ff/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a476b06fbcf359ad25d34a057b7219281286ae2477cc5ff5e3f70a246971148", size = 149166, upload-time = "2025-05-02T08:33:15.458Z" }, - { url = "https://files.pythonhosted.org/packages/44/96/392abd49b094d30b91d9fbda6a69519e95802250b777841cf3bda8fe136c/charset_normalizer-3.4.2-cp313-cp313-win32.whl", hash = "sha256:aaeeb6a479c7667fbe1099af9617c83aaca22182d6cf8c53966491a0f1b7ffb7", size = 98064, upload-time = "2025-05-02T08:33:17.06Z" }, - { url = "https://files.pythonhosted.org/packages/e9/b0/0200da600134e001d91851ddc797809e2fe0ea72de90e09bec5a2fbdaccb/charset_normalizer-3.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:aa6af9e7d59f9c12b33ae4e9450619cf2488e2bbe9b44030905877f0b2324980", size = 105641, upload-time = "2025-05-02T08:33:18.753Z" }, - { url = "https://files.pythonhosted.org/packages/20/94/c5790835a017658cbfabd07f3bfb549140c3ac458cfc196323996b10095a/charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0", size = 52626, upload-time = "2025-05-02T08:34:40.053Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/e4/33/89c2ced2b67d1c2a61c19c6751aa8902d46ce3dacb23600a283619f5a12d/charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63", size = 126367 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d7/a4/37f4d6035c89cac7930395a35cc0f1b872e652eaafb76a6075943754f095/charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7", size = 199936 }, + { url = "https://files.pythonhosted.org/packages/ee/8a/1a5e33b73e0d9287274f899d967907cd0bf9c343e651755d9307e0dbf2b3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3", size = 143790 }, + { url = "https://files.pythonhosted.org/packages/66/52/59521f1d8e6ab1482164fa21409c5ef44da3e9f653c13ba71becdd98dec3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a", size = 153924 }, + { url = "https://files.pythonhosted.org/packages/86/2d/fb55fdf41964ec782febbf33cb64be480a6b8f16ded2dbe8db27a405c09f/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214", size = 146626 }, + { url = "https://files.pythonhosted.org/packages/8c/73/6ede2ec59bce19b3edf4209d70004253ec5f4e319f9a2e3f2f15601ed5f7/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a", size = 148567 }, + { url = "https://files.pythonhosted.org/packages/09/14/957d03c6dc343c04904530b6bef4e5efae5ec7d7990a7cbb868e4595ee30/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd", size = 150957 }, + { url = "https://files.pythonhosted.org/packages/0d/c8/8174d0e5c10ccebdcb1b53cc959591c4c722a3ad92461a273e86b9f5a302/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981", size = 145408 }, + { url = "https://files.pythonhosted.org/packages/58/aa/8904b84bc8084ac19dc52feb4f5952c6df03ffb460a887b42615ee1382e8/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c", size = 153399 }, + { url = "https://files.pythonhosted.org/packages/c2/26/89ee1f0e264d201cb65cf054aca6038c03b1a0c6b4ae998070392a3ce605/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b", size = 156815 }, + { url = "https://files.pythonhosted.org/packages/fd/07/68e95b4b345bad3dbbd3a8681737b4338ff2c9df29856a6d6d23ac4c73cb/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d", size = 154537 }, + { url = "https://files.pythonhosted.org/packages/77/1a/5eefc0ce04affb98af07bc05f3bac9094513c0e23b0562d64af46a06aae4/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f", size = 149565 }, + { url = "https://files.pythonhosted.org/packages/37/a0/2410e5e6032a174c95e0806b1a6585eb21e12f445ebe239fac441995226a/charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c", size = 98357 }, + { url = "https://files.pythonhosted.org/packages/6c/4f/c02d5c493967af3eda9c771ad4d2bbc8df6f99ddbeb37ceea6e8716a32bc/charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e", size = 105776 }, + { url = "https://files.pythonhosted.org/packages/ea/12/a93df3366ed32db1d907d7593a94f1fe6293903e3e92967bebd6950ed12c/charset_normalizer-3.4.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:926ca93accd5d36ccdabd803392ddc3e03e6d4cd1cf17deff3b989ab8e9dbcf0", size = 199622 }, + { url = "https://files.pythonhosted.org/packages/04/93/bf204e6f344c39d9937d3c13c8cd5bbfc266472e51fc8c07cb7f64fcd2de/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eba9904b0f38a143592d9fc0e19e2df0fa2e41c3c3745554761c5f6447eedabf", size = 143435 }, + { url = "https://files.pythonhosted.org/packages/22/2a/ea8a2095b0bafa6c5b5a55ffdc2f924455233ee7b91c69b7edfcc9e02284/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fddb7e2c84ac87ac3a947cb4e66d143ca5863ef48e4a5ecb83bd48619e4634e", size = 153653 }, + { url = "https://files.pythonhosted.org/packages/b6/57/1b090ff183d13cef485dfbe272e2fe57622a76694061353c59da52c9a659/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98f862da73774290f251b9df8d11161b6cf25b599a66baf087c1ffe340e9bfd1", size = 146231 }, + { url = "https://files.pythonhosted.org/packages/e2/28/ffc026b26f441fc67bd21ab7f03b313ab3fe46714a14b516f931abe1a2d8/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c9379d65defcab82d07b2a9dfbfc2e95bc8fe0ebb1b176a3190230a3ef0e07c", size = 148243 }, + { url = "https://files.pythonhosted.org/packages/c0/0f/9abe9bd191629c33e69e47c6ef45ef99773320e9ad8e9cb08b8ab4a8d4cb/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e635b87f01ebc977342e2697d05b56632f5f879a4f15955dfe8cef2448b51691", size = 150442 }, + { url = "https://files.pythonhosted.org/packages/67/7c/a123bbcedca91d5916c056407f89a7f5e8fdfce12ba825d7d6b9954a1a3c/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1c95a1e2902a8b722868587c0e1184ad5c55631de5afc0eb96bc4b0d738092c0", size = 145147 }, + { url = "https://files.pythonhosted.org/packages/ec/fe/1ac556fa4899d967b83e9893788e86b6af4d83e4726511eaaad035e36595/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ef8de666d6179b009dce7bcb2ad4c4a779f113f12caf8dc77f0162c29d20490b", size = 153057 }, + { url = "https://files.pythonhosted.org/packages/2b/ff/acfc0b0a70b19e3e54febdd5301a98b72fa07635e56f24f60502e954c461/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:32fc0341d72e0f73f80acb0a2c94216bd704f4f0bce10aedea38f30502b271ff", size = 156454 }, + { url = "https://files.pythonhosted.org/packages/92/08/95b458ce9c740d0645feb0e96cea1f5ec946ea9c580a94adfe0b617f3573/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:289200a18fa698949d2b39c671c2cc7a24d44096784e76614899a7ccf2574b7b", size = 154174 }, + { url = "https://files.pythonhosted.org/packages/78/be/8392efc43487ac051eee6c36d5fbd63032d78f7728cb37aebcc98191f1ff/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a476b06fbcf359ad25d34a057b7219281286ae2477cc5ff5e3f70a246971148", size = 149166 }, + { url = "https://files.pythonhosted.org/packages/44/96/392abd49b094d30b91d9fbda6a69519e95802250b777841cf3bda8fe136c/charset_normalizer-3.4.2-cp313-cp313-win32.whl", hash = "sha256:aaeeb6a479c7667fbe1099af9617c83aaca22182d6cf8c53966491a0f1b7ffb7", size = 98064 }, + { url = "https://files.pythonhosted.org/packages/e9/b0/0200da600134e001d91851ddc797809e2fe0ea72de90e09bec5a2fbdaccb/charset_normalizer-3.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:aa6af9e7d59f9c12b33ae4e9450619cf2488e2bbe9b44030905877f0b2324980", size = 105641 }, + { url = "https://files.pythonhosted.org/packages/20/94/c5790835a017658cbfabd07f3bfb549140c3ac458cfc196323996b10095a/charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0", size = 52626 }, ] [[package]] name = "colorama" version = "0.4.6" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697 } wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 }, ] [[package]] @@ -204,32 +242,32 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/13/1f/9fa001e74a1993a9cadd2333bb889e50c66327b8594ac538ab8a04f915b7/cryptography-45.0.3.tar.gz", hash = "sha256:ec21313dd335c51d7877baf2972569f40a4291b76a0ce51391523ae358d05899", size = 744738, upload-time = "2025-05-25T14:17:24.777Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/82/b2/2345dc595998caa6f68adf84e8f8b50d18e9fc4638d32b22ea8daedd4b7a/cryptography-45.0.3-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:7573d9eebaeceeb55285205dbbb8753ac1e962af3d9640791d12b36864065e71", size = 7056239, upload-time = "2025-05-25T14:16:12.22Z" }, - { url = "https://files.pythonhosted.org/packages/71/3d/ac361649a0bfffc105e2298b720d8b862330a767dab27c06adc2ddbef96a/cryptography-45.0.3-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d377dde61c5d67eb4311eace661c3efda46c62113ff56bf05e2d679e02aebb5b", size = 4205541, upload-time = "2025-05-25T14:16:14.333Z" }, - { url = "https://files.pythonhosted.org/packages/70/3e/c02a043750494d5c445f769e9c9f67e550d65060e0bfce52d91c1362693d/cryptography-45.0.3-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fae1e637f527750811588e4582988932c222f8251f7b7ea93739acb624e1487f", size = 4433275, upload-time = "2025-05-25T14:16:16.421Z" }, - { url = "https://files.pythonhosted.org/packages/40/7a/9af0bfd48784e80eef3eb6fd6fde96fe706b4fc156751ce1b2b965dada70/cryptography-45.0.3-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:ca932e11218bcc9ef812aa497cdf669484870ecbcf2d99b765d6c27a86000942", size = 4209173, upload-time = "2025-05-25T14:16:18.163Z" }, - { url = "https://files.pythonhosted.org/packages/31/5f/d6f8753c8708912df52e67969e80ef70b8e8897306cd9eb8b98201f8c184/cryptography-45.0.3-cp311-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:af3f92b1dc25621f5fad065288a44ac790c5798e986a34d393ab27d2b27fcff9", size = 3898150, upload-time = "2025-05-25T14:16:20.34Z" }, - { url = "https://files.pythonhosted.org/packages/8b/50/f256ab79c671fb066e47336706dc398c3b1e125f952e07d54ce82cf4011a/cryptography-45.0.3-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:2f8f8f0b73b885ddd7f3d8c2b2234a7d3ba49002b0223f58cfde1bedd9563c56", size = 4466473, upload-time = "2025-05-25T14:16:22.605Z" }, - { url = "https://files.pythonhosted.org/packages/62/e7/312428336bb2df0848d0768ab5a062e11a32d18139447a76dfc19ada8eed/cryptography-45.0.3-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:9cc80ce69032ffa528b5e16d217fa4d8d4bb7d6ba8659c1b4d74a1b0f4235fca", size = 4211890, upload-time = "2025-05-25T14:16:24.738Z" }, - { url = "https://files.pythonhosted.org/packages/e7/53/8a130e22c1e432b3c14896ec5eb7ac01fb53c6737e1d705df7e0efb647c6/cryptography-45.0.3-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:c824c9281cb628015bfc3c59335163d4ca0540d49de4582d6c2637312907e4b1", size = 4466300, upload-time = "2025-05-25T14:16:26.768Z" }, - { url = "https://files.pythonhosted.org/packages/ba/75/6bb6579688ef805fd16a053005fce93944cdade465fc92ef32bbc5c40681/cryptography-45.0.3-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:5833bb4355cb377ebd880457663a972cd044e7f49585aee39245c0d592904578", size = 4332483, upload-time = "2025-05-25T14:16:28.316Z" }, - { url = "https://files.pythonhosted.org/packages/2f/11/2538f4e1ce05c6c4f81f43c1ef2bd6de7ae5e24ee284460ff6c77e42ca77/cryptography-45.0.3-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:9bb5bf55dcb69f7067d80354d0a348368da907345a2c448b0babc4215ccd3497", size = 4573714, upload-time = "2025-05-25T14:16:30.474Z" }, - { url = "https://files.pythonhosted.org/packages/f5/bb/e86e9cf07f73a98d84a4084e8fd420b0e82330a901d9cac8149f994c3417/cryptography-45.0.3-cp311-abi3-win32.whl", hash = "sha256:3ad69eeb92a9de9421e1f6685e85a10fbcfb75c833b42cc9bc2ba9fb00da4710", size = 2934752, upload-time = "2025-05-25T14:16:32.204Z" }, - { url = "https://files.pythonhosted.org/packages/c7/75/063bc9ddc3d1c73e959054f1fc091b79572e716ef74d6caaa56e945b4af9/cryptography-45.0.3-cp311-abi3-win_amd64.whl", hash = "sha256:97787952246a77d77934d41b62fb1b6f3581d83f71b44796a4158d93b8f5c490", size = 3412465, upload-time = "2025-05-25T14:16:33.888Z" }, - { url = "https://files.pythonhosted.org/packages/71/9b/04ead6015229a9396890d7654ee35ef630860fb42dc9ff9ec27f72157952/cryptography-45.0.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:c92519d242703b675ccefd0f0562eb45e74d438e001f8ab52d628e885751fb06", size = 7031892, upload-time = "2025-05-25T14:16:36.214Z" }, - { url = "https://files.pythonhosted.org/packages/46/c7/c7d05d0e133a09fc677b8a87953815c522697bdf025e5cac13ba419e7240/cryptography-45.0.3-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5edcb90da1843df85292ef3a313513766a78fbbb83f584a5a58fb001a5a9d57", size = 4196181, upload-time = "2025-05-25T14:16:37.934Z" }, - { url = "https://files.pythonhosted.org/packages/08/7a/6ad3aa796b18a683657cef930a986fac0045417e2dc428fd336cfc45ba52/cryptography-45.0.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38deed72285c7ed699864f964a3f4cf11ab3fb38e8d39cfcd96710cd2b5bb716", size = 4423370, upload-time = "2025-05-25T14:16:39.502Z" }, - { url = "https://files.pythonhosted.org/packages/4f/58/ec1461bfcb393525f597ac6a10a63938d18775b7803324072974b41a926b/cryptography-45.0.3-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:5555365a50efe1f486eed6ac7062c33b97ccef409f5970a0b6f205a7cfab59c8", size = 4197839, upload-time = "2025-05-25T14:16:41.322Z" }, - { url = "https://files.pythonhosted.org/packages/d4/3d/5185b117c32ad4f40846f579369a80e710d6146c2baa8ce09d01612750db/cryptography-45.0.3-cp37-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:9e4253ed8f5948a3589b3caee7ad9a5bf218ffd16869c516535325fece163dcc", size = 3886324, upload-time = "2025-05-25T14:16:43.041Z" }, - { url = "https://files.pythonhosted.org/packages/67/85/caba91a57d291a2ad46e74016d1f83ac294f08128b26e2a81e9b4f2d2555/cryptography-45.0.3-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:cfd84777b4b6684955ce86156cfb5e08d75e80dc2585e10d69e47f014f0a5342", size = 4450447, upload-time = "2025-05-25T14:16:44.759Z" }, - { url = "https://files.pythonhosted.org/packages/ae/d1/164e3c9d559133a38279215c712b8ba38e77735d3412f37711b9f8f6f7e0/cryptography-45.0.3-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:a2b56de3417fd5f48773ad8e91abaa700b678dc7fe1e0c757e1ae340779acf7b", size = 4200576, upload-time = "2025-05-25T14:16:46.438Z" }, - { url = "https://files.pythonhosted.org/packages/71/7a/e002d5ce624ed46dfc32abe1deff32190f3ac47ede911789ee936f5a4255/cryptography-45.0.3-cp37-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:57a6500d459e8035e813bd8b51b671977fb149a8c95ed814989da682314d0782", size = 4450308, upload-time = "2025-05-25T14:16:48.228Z" }, - { url = "https://files.pythonhosted.org/packages/87/ad/3fbff9c28cf09b0a71e98af57d74f3662dea4a174b12acc493de00ea3f28/cryptography-45.0.3-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:f22af3c78abfbc7cbcdf2c55d23c3e022e1a462ee2481011d518c7fb9c9f3d65", size = 4325125, upload-time = "2025-05-25T14:16:49.844Z" }, - { url = "https://files.pythonhosted.org/packages/f5/b4/51417d0cc01802304c1984d76e9592f15e4801abd44ef7ba657060520bf0/cryptography-45.0.3-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:232954730c362638544758a8160c4ee1b832dc011d2c41a306ad8f7cccc5bb0b", size = 4560038, upload-time = "2025-05-25T14:16:51.398Z" }, - { url = "https://files.pythonhosted.org/packages/80/38/d572f6482d45789a7202fb87d052deb7a7b136bf17473ebff33536727a2c/cryptography-45.0.3-cp37-abi3-win32.whl", hash = "sha256:cb6ab89421bc90e0422aca911c69044c2912fc3debb19bb3c1bfe28ee3dff6ab", size = 2924070, upload-time = "2025-05-25T14:16:53.472Z" }, - { url = "https://files.pythonhosted.org/packages/91/5a/61f39c0ff4443651cc64e626fa97ad3099249152039952be8f344d6b0c86/cryptography-45.0.3-cp37-abi3-win_amd64.whl", hash = "sha256:d54ae41e6bd70ea23707843021c778f151ca258081586f0cfa31d936ae43d1b2", size = 3395005, upload-time = "2025-05-25T14:16:55.134Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/13/1f/9fa001e74a1993a9cadd2333bb889e50c66327b8594ac538ab8a04f915b7/cryptography-45.0.3.tar.gz", hash = "sha256:ec21313dd335c51d7877baf2972569f40a4291b76a0ce51391523ae358d05899", size = 744738 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/82/b2/2345dc595998caa6f68adf84e8f8b50d18e9fc4638d32b22ea8daedd4b7a/cryptography-45.0.3-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:7573d9eebaeceeb55285205dbbb8753ac1e962af3d9640791d12b36864065e71", size = 7056239 }, + { url = "https://files.pythonhosted.org/packages/71/3d/ac361649a0bfffc105e2298b720d8b862330a767dab27c06adc2ddbef96a/cryptography-45.0.3-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d377dde61c5d67eb4311eace661c3efda46c62113ff56bf05e2d679e02aebb5b", size = 4205541 }, + { url = "https://files.pythonhosted.org/packages/70/3e/c02a043750494d5c445f769e9c9f67e550d65060e0bfce52d91c1362693d/cryptography-45.0.3-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fae1e637f527750811588e4582988932c222f8251f7b7ea93739acb624e1487f", size = 4433275 }, + { url = "https://files.pythonhosted.org/packages/40/7a/9af0bfd48784e80eef3eb6fd6fde96fe706b4fc156751ce1b2b965dada70/cryptography-45.0.3-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:ca932e11218bcc9ef812aa497cdf669484870ecbcf2d99b765d6c27a86000942", size = 4209173 }, + { url = "https://files.pythonhosted.org/packages/31/5f/d6f8753c8708912df52e67969e80ef70b8e8897306cd9eb8b98201f8c184/cryptography-45.0.3-cp311-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:af3f92b1dc25621f5fad065288a44ac790c5798e986a34d393ab27d2b27fcff9", size = 3898150 }, + { url = "https://files.pythonhosted.org/packages/8b/50/f256ab79c671fb066e47336706dc398c3b1e125f952e07d54ce82cf4011a/cryptography-45.0.3-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:2f8f8f0b73b885ddd7f3d8c2b2234a7d3ba49002b0223f58cfde1bedd9563c56", size = 4466473 }, + { url = "https://files.pythonhosted.org/packages/62/e7/312428336bb2df0848d0768ab5a062e11a32d18139447a76dfc19ada8eed/cryptography-45.0.3-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:9cc80ce69032ffa528b5e16d217fa4d8d4bb7d6ba8659c1b4d74a1b0f4235fca", size = 4211890 }, + { url = "https://files.pythonhosted.org/packages/e7/53/8a130e22c1e432b3c14896ec5eb7ac01fb53c6737e1d705df7e0efb647c6/cryptography-45.0.3-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:c824c9281cb628015bfc3c59335163d4ca0540d49de4582d6c2637312907e4b1", size = 4466300 }, + { url = "https://files.pythonhosted.org/packages/ba/75/6bb6579688ef805fd16a053005fce93944cdade465fc92ef32bbc5c40681/cryptography-45.0.3-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:5833bb4355cb377ebd880457663a972cd044e7f49585aee39245c0d592904578", size = 4332483 }, + { url = "https://files.pythonhosted.org/packages/2f/11/2538f4e1ce05c6c4f81f43c1ef2bd6de7ae5e24ee284460ff6c77e42ca77/cryptography-45.0.3-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:9bb5bf55dcb69f7067d80354d0a348368da907345a2c448b0babc4215ccd3497", size = 4573714 }, + { url = "https://files.pythonhosted.org/packages/f5/bb/e86e9cf07f73a98d84a4084e8fd420b0e82330a901d9cac8149f994c3417/cryptography-45.0.3-cp311-abi3-win32.whl", hash = "sha256:3ad69eeb92a9de9421e1f6685e85a10fbcfb75c833b42cc9bc2ba9fb00da4710", size = 2934752 }, + { url = "https://files.pythonhosted.org/packages/c7/75/063bc9ddc3d1c73e959054f1fc091b79572e716ef74d6caaa56e945b4af9/cryptography-45.0.3-cp311-abi3-win_amd64.whl", hash = "sha256:97787952246a77d77934d41b62fb1b6f3581d83f71b44796a4158d93b8f5c490", size = 3412465 }, + { url = "https://files.pythonhosted.org/packages/71/9b/04ead6015229a9396890d7654ee35ef630860fb42dc9ff9ec27f72157952/cryptography-45.0.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:c92519d242703b675ccefd0f0562eb45e74d438e001f8ab52d628e885751fb06", size = 7031892 }, + { url = "https://files.pythonhosted.org/packages/46/c7/c7d05d0e133a09fc677b8a87953815c522697bdf025e5cac13ba419e7240/cryptography-45.0.3-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5edcb90da1843df85292ef3a313513766a78fbbb83f584a5a58fb001a5a9d57", size = 4196181 }, + { url = "https://files.pythonhosted.org/packages/08/7a/6ad3aa796b18a683657cef930a986fac0045417e2dc428fd336cfc45ba52/cryptography-45.0.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38deed72285c7ed699864f964a3f4cf11ab3fb38e8d39cfcd96710cd2b5bb716", size = 4423370 }, + { url = "https://files.pythonhosted.org/packages/4f/58/ec1461bfcb393525f597ac6a10a63938d18775b7803324072974b41a926b/cryptography-45.0.3-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:5555365a50efe1f486eed6ac7062c33b97ccef409f5970a0b6f205a7cfab59c8", size = 4197839 }, + { url = "https://files.pythonhosted.org/packages/d4/3d/5185b117c32ad4f40846f579369a80e710d6146c2baa8ce09d01612750db/cryptography-45.0.3-cp37-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:9e4253ed8f5948a3589b3caee7ad9a5bf218ffd16869c516535325fece163dcc", size = 3886324 }, + { url = "https://files.pythonhosted.org/packages/67/85/caba91a57d291a2ad46e74016d1f83ac294f08128b26e2a81e9b4f2d2555/cryptography-45.0.3-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:cfd84777b4b6684955ce86156cfb5e08d75e80dc2585e10d69e47f014f0a5342", size = 4450447 }, + { url = "https://files.pythonhosted.org/packages/ae/d1/164e3c9d559133a38279215c712b8ba38e77735d3412f37711b9f8f6f7e0/cryptography-45.0.3-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:a2b56de3417fd5f48773ad8e91abaa700b678dc7fe1e0c757e1ae340779acf7b", size = 4200576 }, + { url = "https://files.pythonhosted.org/packages/71/7a/e002d5ce624ed46dfc32abe1deff32190f3ac47ede911789ee936f5a4255/cryptography-45.0.3-cp37-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:57a6500d459e8035e813bd8b51b671977fb149a8c95ed814989da682314d0782", size = 4450308 }, + { url = "https://files.pythonhosted.org/packages/87/ad/3fbff9c28cf09b0a71e98af57d74f3662dea4a174b12acc493de00ea3f28/cryptography-45.0.3-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:f22af3c78abfbc7cbcdf2c55d23c3e022e1a462ee2481011d518c7fb9c9f3d65", size = 4325125 }, + { url = "https://files.pythonhosted.org/packages/f5/b4/51417d0cc01802304c1984d76e9592f15e4801abd44ef7ba657060520bf0/cryptography-45.0.3-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:232954730c362638544758a8160c4ee1b832dc011d2c41a306ad8f7cccc5bb0b", size = 4560038 }, + { url = "https://files.pythonhosted.org/packages/80/38/d572f6482d45789a7202fb87d052deb7a7b136bf17473ebff33536727a2c/cryptography-45.0.3-cp37-abi3-win32.whl", hash = "sha256:cb6ab89421bc90e0422aca911c69044c2912fc3debb19bb3c1bfe28ee3dff6ab", size = 2924070 }, + { url = "https://files.pythonhosted.org/packages/91/5a/61f39c0ff4443651cc64e626fa97ad3099249152039952be8f344d6b0c86/cryptography-45.0.3-cp37-abi3-win_amd64.whl", hash = "sha256:d54ae41e6bd70ea23707843021c778f151ca258081586f0cfa31d936ae43d1b2", size = 3395005 }, ] [[package]] @@ -241,27 +279,27 @@ dependencies = [ { name = "requests" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/91/9b/4a2ea29aeba62471211598dac5d96825bb49348fa07e906ea930394a83ce/docker-7.1.0.tar.gz", hash = "sha256:ad8c70e6e3f8926cb8a92619b832b4ea5299e2831c14284663184e200546fa6c", size = 117834, upload-time = "2024-05-23T11:13:57.216Z" } +sdist = { url = "https://files.pythonhosted.org/packages/91/9b/4a2ea29aeba62471211598dac5d96825bb49348fa07e906ea930394a83ce/docker-7.1.0.tar.gz", hash = "sha256:ad8c70e6e3f8926cb8a92619b832b4ea5299e2831c14284663184e200546fa6c", size = 117834 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e3/26/57c6fb270950d476074c087527a558ccb6f4436657314bfb6cdf484114c4/docker-7.1.0-py3-none-any.whl", hash = "sha256:c96b93b7f0a746f9e77d325bcfb87422a3d8bd4f03136ae8a85b37f1898d5fc0", size = 147774, upload-time = "2024-05-23T11:13:55.01Z" }, + { url = "https://files.pythonhosted.org/packages/e3/26/57c6fb270950d476074c087527a558ccb6f4436657314bfb6cdf484114c4/docker-7.1.0-py3-none-any.whl", hash = "sha256:c96b93b7f0a746f9e77d325bcfb87422a3d8bd4f03136ae8a85b37f1898d5fc0", size = 147774 }, ] [[package]] name = "fastjsonschema" version = "2.21.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8b/50/4b769ce1ac4071a1ef6d86b1a3fb56cdc3a37615e8c5519e1af96cdac366/fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4", size = 373939, upload-time = "2024-12-02T10:55:15.133Z" } +sdist = { url = "https://files.pythonhosted.org/packages/8b/50/4b769ce1ac4071a1ef6d86b1a3fb56cdc3a37615e8c5519e1af96cdac366/fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4", size = 373939 } wheels = [ - { url = "https://files.pythonhosted.org/packages/90/2b/0817a2b257fe88725c25589d89aec060581aabf668707a8d03b2e9e0cb2a/fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667", size = 23924, upload-time = "2024-12-02T10:55:07.599Z" }, + { url = "https://files.pythonhosted.org/packages/90/2b/0817a2b257fe88725c25589d89aec060581aabf668707a8d03b2e9e0cb2a/fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667", size = 23924 }, ] [[package]] name = "idna" version = "3.10" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490, upload-time = "2024-09-15T18:07:39.745Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490 } wheels = [ - { 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" }, + { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442 }, ] [[package]] @@ -271,18 +309,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "zipp" }, ] -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" } +sdist = { url = "https://files.pythonhosted.org/packages/76/66/650a33bd90f786193e4de4b3ad86ea60b53c89b669a5c7be931fac31cdb0/importlib_metadata-8.7.0.tar.gz", hash = "sha256:d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000", size = 56641 } wheels = [ - { 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" }, + { url = "https://files.pythonhosted.org/packages/20/b0/36bd937216ec521246249be3bf9855081de4c5e06a0c9b4219dbeda50373/importlib_metadata-8.7.0-py3-none-any.whl", hash = "sha256:e5dd1551894c77868a30651cef00984d50e1002d06942a7101d34870c5f02afd", size = 27656 }, ] [[package]] name = "iniconfig" version = "2.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793, upload-time = "2025-03-19T20:09:59.721Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793 } wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050, upload-time = "2025-03-19T20:10:01.071Z" }, + { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050 }, ] [[package]] @@ -292,18 +330,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markupsafe" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload-time = "2025-03-05T20:05:02.478Z" } +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115 } wheels = [ - { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" }, + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899 }, ] [[package]] name = "jmespath" version = "1.0.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/00/2a/e867e8531cf3e36b41201936b7fa7ba7b5702dbef42922193f05c8976cd6/jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe", size = 25843, upload-time = "2022-06-17T18:00:12.224Z" } +sdist = { url = "https://files.pythonhosted.org/packages/00/2a/e867e8531cf3e36b41201936b7fa7ba7b5702dbef42922193f05c8976cd6/jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe", size = 25843 } wheels = [ - { url = "https://files.pythonhosted.org/packages/31/b4/b9b800c45527aadd64d5b442f9b932b00648617eb5d63d2c7a6587b7cafc/jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980", size = 20256, upload-time = "2022-06-17T18:00:10.251Z" }, + { url = "https://files.pythonhosted.org/packages/31/b4/b9b800c45527aadd64d5b442f9b932b00648617eb5d63d2c7a6587b7cafc/jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980", size = 20256 }, ] [[package]] @@ -313,47 +351,47 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "ply" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/6d/86/08646239a313f895186ff0a4573452038eed8c86f54380b3ebac34d32fb2/jsonpath-ng-1.7.0.tar.gz", hash = "sha256:f6f5f7fd4e5ff79c785f1573b394043b39849fb2bb47bcead935d12b00beab3c", size = 37838, upload-time = "2024-10-11T15:41:42.404Z" } +sdist = { url = "https://files.pythonhosted.org/packages/6d/86/08646239a313f895186ff0a4573452038eed8c86f54380b3ebac34d32fb2/jsonpath-ng-1.7.0.tar.gz", hash = "sha256:f6f5f7fd4e5ff79c785f1573b394043b39849fb2bb47bcead935d12b00beab3c", size = 37838 } wheels = [ - { url = "https://files.pythonhosted.org/packages/35/5a/73ecb3d82f8615f32ccdadeb9356726d6cae3a4bbc840b437ceb95708063/jsonpath_ng-1.7.0-py3-none-any.whl", hash = "sha256:f3d7f9e848cba1b6da28c55b1c26ff915dc9e0b1ba7e752a53d6da8d5cbd00b6", size = 30105, upload-time = "2024-11-20T17:58:30.418Z" }, + { url = "https://files.pythonhosted.org/packages/35/5a/73ecb3d82f8615f32ccdadeb9356726d6cae3a4bbc840b437ceb95708063/jsonpath_ng-1.7.0-py3-none-any.whl", hash = "sha256:f3d7f9e848cba1b6da28c55b1c26ff915dc9e0b1ba7e752a53d6da8d5cbd00b6", size = 30105 }, ] [[package]] name = "markupsafe" version = "3.0.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537, upload-time = "2024-10-18T15:21:54.129Z" } -wheels = [ - { 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, upload-time = "2024-10-18T15:21:13.777Z" }, - { 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, upload-time = "2024-10-18T15:21:14.822Z" }, - { 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, upload-time = "2024-10-18T15:21:15.642Z" }, - { 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, upload-time = "2024-10-18T15:21:17.133Z" }, - { 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, upload-time = "2024-10-18T15:21:18.064Z" }, - { 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, upload-time = "2024-10-18T15:21:18.859Z" }, - { 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, upload-time = "2024-10-18T15:21:19.671Z" }, - { 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, upload-time = "2024-10-18T15:21:20.971Z" }, - { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097, upload-time = "2024-10-18T15:21:22.646Z" }, - { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601, upload-time = "2024-10-18T15:21:23.499Z" }, - { 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, upload-time = "2024-10-18T15:21:24.577Z" }, - { 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, upload-time = "2024-10-18T15:21:25.382Z" }, - { 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, upload-time = "2024-10-18T15:21:26.199Z" }, - { url = "https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396", size = 23085, upload-time = "2024-10-18T15:21:27.029Z" }, - { url = "https://files.pythonhosted.org/packages/c2/cf/c9d56af24d56ea04daae7ac0940232d31d5a8354f2b457c6d856b2057d69/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79", size = 22978, upload-time = "2024-10-18T15:21:27.846Z" }, - { url = "https://files.pythonhosted.org/packages/2a/9f/8619835cd6a711d6272d62abb78c033bda638fdc54c4e7f4272cf1c0962b/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a", size = 24208, upload-time = "2024-10-18T15:21:28.744Z" }, - { url = "https://files.pythonhosted.org/packages/f9/bf/176950a1792b2cd2102b8ffeb5133e1ed984547b75db47c25a67d3359f77/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca", size = 23357, upload-time = "2024-10-18T15:21:29.545Z" }, - { url = "https://files.pythonhosted.org/packages/ce/4f/9a02c1d335caabe5c4efb90e1b6e8ee944aa245c1aaaab8e8a618987d816/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c", size = 23344, upload-time = "2024-10-18T15:21:30.366Z" }, - { url = "https://files.pythonhosted.org/packages/ee/55/c271b57db36f748f0e04a759ace9f8f759ccf22b4960c270c78a394f58be/MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1", size = 15101, upload-time = "2024-10-18T15:21:31.207Z" }, - { url = "https://files.pythonhosted.org/packages/29/88/07df22d2dd4df40aba9f3e402e6dc1b8ee86297dddbad4872bd5e7b0094f/MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f", size = 15603, upload-time = "2024-10-18T15:21:32.032Z" }, - { url = "https://files.pythonhosted.org/packages/62/6a/8b89d24db2d32d433dffcd6a8779159da109842434f1dd2f6e71f32f738c/MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c", size = 14510, upload-time = "2024-10-18T15:21:33.625Z" }, - { url = "https://files.pythonhosted.org/packages/7a/06/a10f955f70a2e5a9bf78d11a161029d278eeacbd35ef806c3fd17b13060d/MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb", size = 12486, upload-time = "2024-10-18T15:21:34.611Z" }, - { url = "https://files.pythonhosted.org/packages/34/cf/65d4a571869a1a9078198ca28f39fba5fbb910f952f9dbc5220afff9f5e6/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c", size = 25480, upload-time = "2024-10-18T15:21:35.398Z" }, - { url = "https://files.pythonhosted.org/packages/0c/e3/90e9651924c430b885468b56b3d597cabf6d72be4b24a0acd1fa0e12af67/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d", size = 23914, upload-time = "2024-10-18T15:21:36.231Z" }, - { url = "https://files.pythonhosted.org/packages/66/8c/6c7cf61f95d63bb866db39085150df1f2a5bd3335298f14a66b48e92659c/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe", size = 23796, upload-time = "2024-10-18T15:21:37.073Z" }, - { url = "https://files.pythonhosted.org/packages/bb/35/cbe9238ec3f47ac9a7c8b3df7a808e7cb50fe149dc7039f5f454b3fba218/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5", size = 25473, upload-time = "2024-10-18T15:21:37.932Z" }, - { url = "https://files.pythonhosted.org/packages/e6/32/7621a4382488aa283cc05e8984a9c219abad3bca087be9ec77e89939ded9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a", size = 24114, upload-time = "2024-10-18T15:21:39.799Z" }, - { url = "https://files.pythonhosted.org/packages/0d/80/0985960e4b89922cb5a0bac0ed39c5b96cbc1a536a99f30e8c220a996ed9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9", size = 24098, upload-time = "2024-10-18T15:21:40.813Z" }, - { url = "https://files.pythonhosted.org/packages/82/78/fedb03c7d5380df2427038ec8d973587e90561b2d90cd472ce9254cf348b/MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6", size = 15208, upload-time = "2024-10-18T15:21:41.814Z" }, - { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739, upload-time = "2024-10-18T15:21:42.784Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537 } +wheels = [ + { 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 }, + { 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 }, + { 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 }, + { 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 }, + { 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 }, + { 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 }, + { 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 }, + { 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 }, + { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097 }, + { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601 }, + { 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 }, + { 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 }, + { 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 }, + { url = "https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396", size = 23085 }, + { url = "https://files.pythonhosted.org/packages/c2/cf/c9d56af24d56ea04daae7ac0940232d31d5a8354f2b457c6d856b2057d69/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79", size = 22978 }, + { url = "https://files.pythonhosted.org/packages/2a/9f/8619835cd6a711d6272d62abb78c033bda638fdc54c4e7f4272cf1c0962b/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a", size = 24208 }, + { url = "https://files.pythonhosted.org/packages/f9/bf/176950a1792b2cd2102b8ffeb5133e1ed984547b75db47c25a67d3359f77/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca", size = 23357 }, + { url = "https://files.pythonhosted.org/packages/ce/4f/9a02c1d335caabe5c4efb90e1b6e8ee944aa245c1aaaab8e8a618987d816/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c", size = 23344 }, + { url = "https://files.pythonhosted.org/packages/ee/55/c271b57db36f748f0e04a759ace9f8f759ccf22b4960c270c78a394f58be/MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1", size = 15101 }, + { url = "https://files.pythonhosted.org/packages/29/88/07df22d2dd4df40aba9f3e402e6dc1b8ee86297dddbad4872bd5e7b0094f/MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f", size = 15603 }, + { url = "https://files.pythonhosted.org/packages/62/6a/8b89d24db2d32d433dffcd6a8779159da109842434f1dd2f6e71f32f738c/MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c", size = 14510 }, + { url = "https://files.pythonhosted.org/packages/7a/06/a10f955f70a2e5a9bf78d11a161029d278eeacbd35ef806c3fd17b13060d/MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb", size = 12486 }, + { url = "https://files.pythonhosted.org/packages/34/cf/65d4a571869a1a9078198ca28f39fba5fbb910f952f9dbc5220afff9f5e6/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c", size = 25480 }, + { url = "https://files.pythonhosted.org/packages/0c/e3/90e9651924c430b885468b56b3d597cabf6d72be4b24a0acd1fa0e12af67/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d", size = 23914 }, + { url = "https://files.pythonhosted.org/packages/66/8c/6c7cf61f95d63bb866db39085150df1f2a5bd3335298f14a66b48e92659c/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe", size = 23796 }, + { url = "https://files.pythonhosted.org/packages/bb/35/cbe9238ec3f47ac9a7c8b3df7a808e7cb50fe149dc7039f5f454b3fba218/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5", size = 25473 }, + { url = "https://files.pythonhosted.org/packages/e6/32/7621a4382488aa283cc05e8984a9c219abad3bca087be9ec77e89939ded9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a", size = 24114 }, + { url = "https://files.pythonhosted.org/packages/0d/80/0985960e4b89922cb5a0bac0ed39c5b96cbc1a536a99f30e8c220a996ed9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9", size = 24098 }, + { url = "https://files.pythonhosted.org/packages/82/78/fedb03c7d5380df2427038ec8d973587e90561b2d90cd472ce9254cf348b/MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6", size = 15208 }, + { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739 }, ] [[package]] @@ -371,9 +409,9 @@ dependencies = [ { name = "werkzeug" }, { name = "xmltodict" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/24/9f/5cacf53cbd26b4a77c817fd4fbec2ed38139ba2cfcd842c279aa19ee161f/moto-5.1.5.tar.gz", hash = "sha256:42b362ea9a16181e8e7b615ac212c294b882f020e9ae02f01230f167926df84e", size = 6893155, upload-time = "2025-05-24T12:19:55.398Z" } +sdist = { url = "https://files.pythonhosted.org/packages/24/9f/5cacf53cbd26b4a77c817fd4fbec2ed38139ba2cfcd842c279aa19ee161f/moto-5.1.5.tar.gz", hash = "sha256:42b362ea9a16181e8e7b615ac212c294b882f020e9ae02f01230f167926df84e", size = 6893155 } wheels = [ - { url = "https://files.pythonhosted.org/packages/84/0f/72a420e972a9e782d08843ced85d29f04c8470c66fc84ecb1c8a7e7abcf8/moto-5.1.5-py3-none-any.whl", hash = "sha256:866ae85eb5efe11a78f991127531878fd7f49177eb4a6680f47060430eb8932d", size = 4992353, upload-time = "2025-05-24T12:19:53.435Z" }, + { url = "https://files.pythonhosted.org/packages/84/0f/72a420e972a9e782d08843ced85d29f04c8470c66fc84ecb1c8a7e7abcf8/moto-5.1.5-py3-none-any.whl", hash = "sha256:866ae85eb5efe11a78f991127531878fd7f49177eb4a6680f47060430eb8932d", size = 4992353 }, ] [package.optional-dependencies] @@ -389,83 +427,45 @@ events = [ name = "packaging" version = "25.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727, upload-time = "2025-04-19T11:48:59.673Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727 } wheels = [ - { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload-time = "2025-04-19T11:48:57.875Z" }, + { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469 }, ] [[package]] name = "pluggy" version = "1.6.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412, upload-time = "2025-05-15T12:30:07.975Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412 } wheels = [ - { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" }, + { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538 }, ] [[package]] name = "ply" version = "3.11" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e5/69/882ee5c9d017149285cab114ebeab373308ef0f874fcdac9beb90e0ac4da/ply-3.11.tar.gz", hash = "sha256:00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3", size = 159130, upload-time = "2018-02-15T19:01:31.097Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e5/69/882ee5c9d017149285cab114ebeab373308ef0f874fcdac9beb90e0ac4da/ply-3.11.tar.gz", hash = "sha256:00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3", size = 159130 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a3/58/35da89ee790598a0700ea49b2a66594140f44dec458c07e8e3d4979137fc/ply-3.11-py2.py3-none-any.whl", hash = "sha256:096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce", size = 49567, upload-time = "2018-02-15T19:01:27.172Z" }, + { url = "https://files.pythonhosted.org/packages/a3/58/35da89ee790598a0700ea49b2a66594140f44dec458c07e8e3d4979137fc/ply-3.11-py2.py3-none-any.whl", hash = "sha256:096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce", size = 49567 }, ] -[[package]] -name = "properties-service" -version = "0.2.0" -source = { virtual = "." } -dependencies = [ - { name = "aws-lambda-powertools", extra = ["tracer"] }, - { name = "aws-xray-sdk" }, - { name = "boto3" }, -] - -[package.optional-dependencies] -dev = [ - { name = "arnparse" }, - { name = "aws-lambda-powertools", extra = ["all"] }, - { name = "importlib-metadata" }, - { name = "moto", extra = ["dynamodb", "events"] }, - { name = "pytest" }, - { name = "pyyaml" }, - { name = "requests" }, - { name = "ruff" }, -] - -[package.metadata] -requires-dist = [ - { name = "arnparse", marker = "extra == 'dev'", specifier = ">=0.0.2" }, - { name = "aws-lambda-powertools", extras = ["all"], marker = "extra == 'dev'", specifier = ">=3.9.0" }, - { name = "aws-lambda-powertools", extras = ["tracer"], specifier = ">=3.9.0" }, - { name = "aws-xray-sdk", specifier = ">=2.14.0" }, - { name = "boto3", specifier = ">=1.37.23" }, - { name = "importlib-metadata", marker = "extra == 'dev'", specifier = ">=8.4.0" }, - { name = "moto", extras = ["dynamodb", "events", "sqs"], marker = "extra == 'dev'", specifier = ">=5.0.14" }, - { name = "pytest", marker = "extra == 'dev'", specifier = ">=8.3.4" }, - { name = "pyyaml", marker = "extra == 'dev'", specifier = ">=6.0.2" }, - { name = "requests", marker = "extra == 'dev'", specifier = ">=2.32.3" }, - { name = "ruff", marker = "extra == 'dev'", specifier = ">=0.9.7" }, -] -provides-extras = ["dev"] - [[package]] name = "py-partiql-parser" version = "0.6.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/58/a1/0a2867e48b232b4f82c4929ef7135f2a5d72c3886b957dccf63c70aa2fcb/py_partiql_parser-0.6.1.tar.gz", hash = "sha256:8583ff2a0e15560ef3bc3df109a7714d17f87d81d33e8c38b7fed4e58a63215d", size = 17120, upload-time = "2024-12-25T22:06:41.327Z" } +sdist = { url = "https://files.pythonhosted.org/packages/58/a1/0a2867e48b232b4f82c4929ef7135f2a5d72c3886b957dccf63c70aa2fcb/py_partiql_parser-0.6.1.tar.gz", hash = "sha256:8583ff2a0e15560ef3bc3df109a7714d17f87d81d33e8c38b7fed4e58a63215d", size = 17120 } wheels = [ - { url = "https://files.pythonhosted.org/packages/97/84/0e410c20bbe9a504fc56e97908f13261c2b313d16cbb3b738556166f044a/py_partiql_parser-0.6.1-py2.py3-none-any.whl", hash = "sha256:ff6a48067bff23c37e9044021bf1d949c83e195490c17e020715e927fe5b2456", size = 23520, upload-time = "2024-12-25T22:06:39.106Z" }, + { url = "https://files.pythonhosted.org/packages/97/84/0e410c20bbe9a504fc56e97908f13261c2b313d16cbb3b738556166f044a/py_partiql_parser-0.6.1-py2.py3-none-any.whl", hash = "sha256:ff6a48067bff23c37e9044021bf1d949c83e195490c17e020715e927fe5b2456", size = 23520 }, ] [[package]] name = "pycparser" version = "2.22" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", size = 172736, upload-time = "2024-03-30T13:22:22.564Z" } +sdist = { url = "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", size = 172736 } wheels = [ - { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552, upload-time = "2024-03-30T13:22:20.476Z" }, + { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552 }, ] [[package]] @@ -478,9 +478,9 @@ dependencies = [ { name = "typing-extensions" }, { name = "typing-inspection" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f0/86/8ce9040065e8f924d642c58e4a344e33163a07f6b57f836d0d734e0ad3fb/pydantic-2.11.5.tar.gz", hash = "sha256:7f853db3d0ce78ce8bbb148c401c2cdd6431b3473c0cdff2755c7690952a7b7a", size = 787102, upload-time = "2025-05-22T21:18:08.761Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f0/86/8ce9040065e8f924d642c58e4a344e33163a07f6b57f836d0d734e0ad3fb/pydantic-2.11.5.tar.gz", hash = "sha256:7f853db3d0ce78ce8bbb148c401c2cdd6431b3473c0cdff2755c7690952a7b7a", size = 787102 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b5/69/831ed22b38ff9b4b64b66569f0e5b7b97cf3638346eb95a2147fdb49ad5f/pydantic-2.11.5-py3-none-any.whl", hash = "sha256:f9c26ba06f9747749ca1e5c94d6a85cb84254577553c8785576fd38fa64dc0f7", size = 444229, upload-time = "2025-05-22T21:18:06.329Z" }, + { url = "https://files.pythonhosted.org/packages/b5/69/831ed22b38ff9b4b64b66569f0e5b7b97cf3638346eb95a2147fdb49ad5f/pydantic-2.11.5-py3-none-any.whl", hash = "sha256:f9c26ba06f9747749ca1e5c94d6a85cb84254577553c8785576fd38fa64dc0f7", size = 444229 }, ] [[package]] @@ -490,39 +490,39 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc", size = 435195, upload-time = "2025-04-23T18:33:52.104Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/18/8a/2b41c97f554ec8c71f2a8a5f85cb56a8b0956addfe8b0efb5b3d77e8bdc3/pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc", size = 2009000, upload-time = "2025-04-23T18:31:25.863Z" }, - { url = "https://files.pythonhosted.org/packages/a1/02/6224312aacb3c8ecbaa959897af57181fb6cf3a3d7917fd44d0f2917e6f2/pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7", size = 1847996, upload-time = "2025-04-23T18:31:27.341Z" }, - { url = "https://files.pythonhosted.org/packages/d6/46/6dcdf084a523dbe0a0be59d054734b86a981726f221f4562aed313dbcb49/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025", size = 1880957, upload-time = "2025-04-23T18:31:28.956Z" }, - { url = "https://files.pythonhosted.org/packages/ec/6b/1ec2c03837ac00886ba8160ce041ce4e325b41d06a034adbef11339ae422/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011", size = 1964199, upload-time = "2025-04-23T18:31:31.025Z" }, - { url = "https://files.pythonhosted.org/packages/2d/1d/6bf34d6adb9debd9136bd197ca72642203ce9aaaa85cfcbfcf20f9696e83/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f", size = 2120296, upload-time = "2025-04-23T18:31:32.514Z" }, - { url = "https://files.pythonhosted.org/packages/e0/94/2bd0aaf5a591e974b32a9f7123f16637776c304471a0ab33cf263cf5591a/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88", size = 2676109, upload-time = "2025-04-23T18:31:33.958Z" }, - { url = "https://files.pythonhosted.org/packages/f9/41/4b043778cf9c4285d59742281a769eac371b9e47e35f98ad321349cc5d61/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1", size = 2002028, upload-time = "2025-04-23T18:31:39.095Z" }, - { url = "https://files.pythonhosted.org/packages/cb/d5/7bb781bf2748ce3d03af04d5c969fa1308880e1dca35a9bd94e1a96a922e/pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b", size = 2100044, upload-time = "2025-04-23T18:31:41.034Z" }, - { url = "https://files.pythonhosted.org/packages/fe/36/def5e53e1eb0ad896785702a5bbfd25eed546cdcf4087ad285021a90ed53/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1", size = 2058881, upload-time = "2025-04-23T18:31:42.757Z" }, - { url = "https://files.pythonhosted.org/packages/01/6c/57f8d70b2ee57fc3dc8b9610315949837fa8c11d86927b9bb044f8705419/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6", size = 2227034, upload-time = "2025-04-23T18:31:44.304Z" }, - { url = "https://files.pythonhosted.org/packages/27/b9/9c17f0396a82b3d5cbea4c24d742083422639e7bb1d5bf600e12cb176a13/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea", size = 2234187, upload-time = "2025-04-23T18:31:45.891Z" }, - { url = "https://files.pythonhosted.org/packages/b0/6a/adf5734ffd52bf86d865093ad70b2ce543415e0e356f6cacabbc0d9ad910/pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290", size = 1892628, upload-time = "2025-04-23T18:31:47.819Z" }, - { url = "https://files.pythonhosted.org/packages/43/e4/5479fecb3606c1368d496a825d8411e126133c41224c1e7238be58b87d7e/pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2", size = 1955866, upload-time = "2025-04-23T18:31:49.635Z" }, - { url = "https://files.pythonhosted.org/packages/0d/24/8b11e8b3e2be9dd82df4b11408a67c61bb4dc4f8e11b5b0fc888b38118b5/pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab", size = 1888894, upload-time = "2025-04-23T18:31:51.609Z" }, - { url = "https://files.pythonhosted.org/packages/46/8c/99040727b41f56616573a28771b1bfa08a3d3fe74d3d513f01251f79f172/pydantic_core-2.33.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1082dd3e2d7109ad8b7da48e1d4710c8d06c253cbc4a27c1cff4fbcaa97a9e3f", size = 2015688, upload-time = "2025-04-23T18:31:53.175Z" }, - { url = "https://files.pythonhosted.org/packages/3a/cc/5999d1eb705a6cefc31f0b4a90e9f7fc400539b1a1030529700cc1b51838/pydantic_core-2.33.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f517ca031dfc037a9c07e748cefd8d96235088b83b4f4ba8939105d20fa1dcd6", size = 1844808, upload-time = "2025-04-23T18:31:54.79Z" }, - { url = "https://files.pythonhosted.org/packages/6f/5e/a0a7b8885c98889a18b6e376f344da1ef323d270b44edf8174d6bce4d622/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a9f2c9dd19656823cb8250b0724ee9c60a82f3cdf68a080979d13092a3b0fef", size = 1885580, upload-time = "2025-04-23T18:31:57.393Z" }, - { url = "https://files.pythonhosted.org/packages/3b/2a/953581f343c7d11a304581156618c3f592435523dd9d79865903272c256a/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b0a451c263b01acebe51895bfb0e1cc842a5c666efe06cdf13846c7418caa9a", size = 1973859, upload-time = "2025-04-23T18:31:59.065Z" }, - { url = "https://files.pythonhosted.org/packages/e6/55/f1a813904771c03a3f97f676c62cca0c0a4138654107c1b61f19c644868b/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ea40a64d23faa25e62a70ad163571c0b342b8bf66d5fa612ac0dec4f069d916", size = 2120810, upload-time = "2025-04-23T18:32:00.78Z" }, - { url = "https://files.pythonhosted.org/packages/aa/c3/053389835a996e18853ba107a63caae0b9deb4a276c6b472931ea9ae6e48/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb2d542b4d66f9470e8065c5469ec676978d625a8b7a363f07d9a501a9cb36a", size = 2676498, upload-time = "2025-04-23T18:32:02.418Z" }, - { url = "https://files.pythonhosted.org/packages/eb/3c/f4abd740877a35abade05e437245b192f9d0ffb48bbbbd708df33d3cda37/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdac5d6ffa1b5a83bca06ffe7583f5576555e6c8b3a91fbd25ea7780f825f7d", size = 2000611, upload-time = "2025-04-23T18:32:04.152Z" }, - { url = "https://files.pythonhosted.org/packages/59/a7/63ef2fed1837d1121a894d0ce88439fe3e3b3e48c7543b2a4479eb99c2bd/pydantic_core-2.33.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04a1a413977ab517154eebb2d326da71638271477d6ad87a769102f7c2488c56", size = 2107924, upload-time = "2025-04-23T18:32:06.129Z" }, - { url = "https://files.pythonhosted.org/packages/04/8f/2551964ef045669801675f1cfc3b0d74147f4901c3ffa42be2ddb1f0efc4/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c8e7af2f4e0194c22b5b37205bfb293d166a7344a5b0d0eaccebc376546d77d5", size = 2063196, upload-time = "2025-04-23T18:32:08.178Z" }, - { url = "https://files.pythonhosted.org/packages/26/bd/d9602777e77fc6dbb0c7db9ad356e9a985825547dce5ad1d30ee04903918/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:5c92edd15cd58b3c2d34873597a1e20f13094f59cf88068adb18947df5455b4e", size = 2236389, upload-time = "2025-04-23T18:32:10.242Z" }, - { url = "https://files.pythonhosted.org/packages/42/db/0e950daa7e2230423ab342ae918a794964b053bec24ba8af013fc7c94846/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:65132b7b4a1c0beded5e057324b7e16e10910c106d43675d9bd87d4f38dde162", size = 2239223, upload-time = "2025-04-23T18:32:12.382Z" }, - { url = "https://files.pythonhosted.org/packages/58/4d/4f937099c545a8a17eb52cb67fe0447fd9a373b348ccfa9a87f141eeb00f/pydantic_core-2.33.2-cp313-cp313-win32.whl", hash = "sha256:52fb90784e0a242bb96ec53f42196a17278855b0f31ac7c3cc6f5c1ec4811849", size = 1900473, upload-time = "2025-04-23T18:32:14.034Z" }, - { url = "https://files.pythonhosted.org/packages/a0/75/4a0a9bac998d78d889def5e4ef2b065acba8cae8c93696906c3a91f310ca/pydantic_core-2.33.2-cp313-cp313-win_amd64.whl", hash = "sha256:c083a3bdd5a93dfe480f1125926afcdbf2917ae714bdb80b36d34318b2bec5d9", size = 1955269, upload-time = "2025-04-23T18:32:15.783Z" }, - { url = "https://files.pythonhosted.org/packages/f9/86/1beda0576969592f1497b4ce8e7bc8cbdf614c352426271b1b10d5f0aa64/pydantic_core-2.33.2-cp313-cp313-win_arm64.whl", hash = "sha256:e80b087132752f6b3d714f041ccf74403799d3b23a72722ea2e6ba2e892555b9", size = 1893921, upload-time = "2025-04-23T18:32:18.473Z" }, - { url = "https://files.pythonhosted.org/packages/a4/7d/e09391c2eebeab681df2b74bfe6c43422fffede8dc74187b2b0bf6fd7571/pydantic_core-2.33.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61c18fba8e5e9db3ab908620af374db0ac1baa69f0f32df4f61ae23f15e586ac", size = 1806162, upload-time = "2025-04-23T18:32:20.188Z" }, - { url = "https://files.pythonhosted.org/packages/f1/3d/847b6b1fed9f8ed3bb95a9ad04fbd0b212e832d4f0f50ff4d9ee5a9f15cf/pydantic_core-2.33.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95237e53bb015f67b63c91af7518a62a8660376a6a0db19b89acc77a4d6199f5", size = 1981560, upload-time = "2025-04-23T18:32:22.354Z" }, - { url = "https://files.pythonhosted.org/packages/6f/9a/e73262f6c6656262b5fdd723ad90f518f579b7bc8622e43a942eec53c938/pydantic_core-2.33.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c2fc0a768ef76c15ab9238afa6da7f69895bb5d1ee83aeea2e3509af4472d0b9", size = 1935777, upload-time = "2025-04-23T18:32:25.088Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc", size = 435195 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/8a/2b41c97f554ec8c71f2a8a5f85cb56a8b0956addfe8b0efb5b3d77e8bdc3/pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc", size = 2009000 }, + { url = "https://files.pythonhosted.org/packages/a1/02/6224312aacb3c8ecbaa959897af57181fb6cf3a3d7917fd44d0f2917e6f2/pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7", size = 1847996 }, + { url = "https://files.pythonhosted.org/packages/d6/46/6dcdf084a523dbe0a0be59d054734b86a981726f221f4562aed313dbcb49/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025", size = 1880957 }, + { url = "https://files.pythonhosted.org/packages/ec/6b/1ec2c03837ac00886ba8160ce041ce4e325b41d06a034adbef11339ae422/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011", size = 1964199 }, + { url = "https://files.pythonhosted.org/packages/2d/1d/6bf34d6adb9debd9136bd197ca72642203ce9aaaa85cfcbfcf20f9696e83/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f", size = 2120296 }, + { url = "https://files.pythonhosted.org/packages/e0/94/2bd0aaf5a591e974b32a9f7123f16637776c304471a0ab33cf263cf5591a/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88", size = 2676109 }, + { url = "https://files.pythonhosted.org/packages/f9/41/4b043778cf9c4285d59742281a769eac371b9e47e35f98ad321349cc5d61/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1", size = 2002028 }, + { url = "https://files.pythonhosted.org/packages/cb/d5/7bb781bf2748ce3d03af04d5c969fa1308880e1dca35a9bd94e1a96a922e/pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b", size = 2100044 }, + { url = "https://files.pythonhosted.org/packages/fe/36/def5e53e1eb0ad896785702a5bbfd25eed546cdcf4087ad285021a90ed53/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1", size = 2058881 }, + { url = "https://files.pythonhosted.org/packages/01/6c/57f8d70b2ee57fc3dc8b9610315949837fa8c11d86927b9bb044f8705419/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6", size = 2227034 }, + { url = "https://files.pythonhosted.org/packages/27/b9/9c17f0396a82b3d5cbea4c24d742083422639e7bb1d5bf600e12cb176a13/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea", size = 2234187 }, + { url = "https://files.pythonhosted.org/packages/b0/6a/adf5734ffd52bf86d865093ad70b2ce543415e0e356f6cacabbc0d9ad910/pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290", size = 1892628 }, + { url = "https://files.pythonhosted.org/packages/43/e4/5479fecb3606c1368d496a825d8411e126133c41224c1e7238be58b87d7e/pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2", size = 1955866 }, + { url = "https://files.pythonhosted.org/packages/0d/24/8b11e8b3e2be9dd82df4b11408a67c61bb4dc4f8e11b5b0fc888b38118b5/pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab", size = 1888894 }, + { url = "https://files.pythonhosted.org/packages/46/8c/99040727b41f56616573a28771b1bfa08a3d3fe74d3d513f01251f79f172/pydantic_core-2.33.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1082dd3e2d7109ad8b7da48e1d4710c8d06c253cbc4a27c1cff4fbcaa97a9e3f", size = 2015688 }, + { url = "https://files.pythonhosted.org/packages/3a/cc/5999d1eb705a6cefc31f0b4a90e9f7fc400539b1a1030529700cc1b51838/pydantic_core-2.33.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f517ca031dfc037a9c07e748cefd8d96235088b83b4f4ba8939105d20fa1dcd6", size = 1844808 }, + { url = "https://files.pythonhosted.org/packages/6f/5e/a0a7b8885c98889a18b6e376f344da1ef323d270b44edf8174d6bce4d622/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a9f2c9dd19656823cb8250b0724ee9c60a82f3cdf68a080979d13092a3b0fef", size = 1885580 }, + { url = "https://files.pythonhosted.org/packages/3b/2a/953581f343c7d11a304581156618c3f592435523dd9d79865903272c256a/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b0a451c263b01acebe51895bfb0e1cc842a5c666efe06cdf13846c7418caa9a", size = 1973859 }, + { url = "https://files.pythonhosted.org/packages/e6/55/f1a813904771c03a3f97f676c62cca0c0a4138654107c1b61f19c644868b/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ea40a64d23faa25e62a70ad163571c0b342b8bf66d5fa612ac0dec4f069d916", size = 2120810 }, + { url = "https://files.pythonhosted.org/packages/aa/c3/053389835a996e18853ba107a63caae0b9deb4a276c6b472931ea9ae6e48/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb2d542b4d66f9470e8065c5469ec676978d625a8b7a363f07d9a501a9cb36a", size = 2676498 }, + { url = "https://files.pythonhosted.org/packages/eb/3c/f4abd740877a35abade05e437245b192f9d0ffb48bbbbd708df33d3cda37/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdac5d6ffa1b5a83bca06ffe7583f5576555e6c8b3a91fbd25ea7780f825f7d", size = 2000611 }, + { url = "https://files.pythonhosted.org/packages/59/a7/63ef2fed1837d1121a894d0ce88439fe3e3b3e48c7543b2a4479eb99c2bd/pydantic_core-2.33.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04a1a413977ab517154eebb2d326da71638271477d6ad87a769102f7c2488c56", size = 2107924 }, + { url = "https://files.pythonhosted.org/packages/04/8f/2551964ef045669801675f1cfc3b0d74147f4901c3ffa42be2ddb1f0efc4/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c8e7af2f4e0194c22b5b37205bfb293d166a7344a5b0d0eaccebc376546d77d5", size = 2063196 }, + { url = "https://files.pythonhosted.org/packages/26/bd/d9602777e77fc6dbb0c7db9ad356e9a985825547dce5ad1d30ee04903918/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:5c92edd15cd58b3c2d34873597a1e20f13094f59cf88068adb18947df5455b4e", size = 2236389 }, + { url = "https://files.pythonhosted.org/packages/42/db/0e950daa7e2230423ab342ae918a794964b053bec24ba8af013fc7c94846/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:65132b7b4a1c0beded5e057324b7e16e10910c106d43675d9bd87d4f38dde162", size = 2239223 }, + { url = "https://files.pythonhosted.org/packages/58/4d/4f937099c545a8a17eb52cb67fe0447fd9a373b348ccfa9a87f141eeb00f/pydantic_core-2.33.2-cp313-cp313-win32.whl", hash = "sha256:52fb90784e0a242bb96ec53f42196a17278855b0f31ac7c3cc6f5c1ec4811849", size = 1900473 }, + { url = "https://files.pythonhosted.org/packages/a0/75/4a0a9bac998d78d889def5e4ef2b065acba8cae8c93696906c3a91f310ca/pydantic_core-2.33.2-cp313-cp313-win_amd64.whl", hash = "sha256:c083a3bdd5a93dfe480f1125926afcdbf2917ae714bdb80b36d34318b2bec5d9", size = 1955269 }, + { url = "https://files.pythonhosted.org/packages/f9/86/1beda0576969592f1497b4ce8e7bc8cbdf614c352426271b1b10d5f0aa64/pydantic_core-2.33.2-cp313-cp313-win_arm64.whl", hash = "sha256:e80b087132752f6b3d714f041ccf74403799d3b23a72722ea2e6ba2e892555b9", size = 1893921 }, + { url = "https://files.pythonhosted.org/packages/a4/7d/e09391c2eebeab681df2b74bfe6c43422fffede8dc74187b2b0bf6fd7571/pydantic_core-2.33.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61c18fba8e5e9db3ab908620af374db0ac1baa69f0f32df4f61ae23f15e586ac", size = 1806162 }, + { url = "https://files.pythonhosted.org/packages/f1/3d/847b6b1fed9f8ed3bb95a9ad04fbd0b212e832d4f0f50ff4d9ee5a9f15cf/pydantic_core-2.33.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95237e53bb015f67b63c91af7518a62a8660376a6a0db19b89acc77a4d6199f5", size = 1981560 }, + { url = "https://files.pythonhosted.org/packages/6f/9a/e73262f6c6656262b5fdd723ad90f518f579b7bc8622e43a942eec53c938/pydantic_core-2.33.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c2fc0a768ef76c15ab9238afa6da7f69895bb5d1ee83aeea2e3509af4472d0b9", size = 1935777 }, ] [[package]] @@ -534,9 +534,9 @@ dependencies = [ { name = "python-dotenv" }, { name = "typing-inspection" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/67/1d/42628a2c33e93f8e9acbde0d5d735fa0850f3e6a2f8cb1eb6c40b9a732ac/pydantic_settings-2.9.1.tar.gz", hash = "sha256:c509bf79d27563add44e8446233359004ed85066cd096d8b510f715e6ef5d268", size = 163234, upload-time = "2025-04-18T16:44:48.265Z" } +sdist = { url = "https://files.pythonhosted.org/packages/67/1d/42628a2c33e93f8e9acbde0d5d735fa0850f3e6a2f8cb1eb6c40b9a732ac/pydantic_settings-2.9.1.tar.gz", hash = "sha256:c509bf79d27563add44e8446233359004ed85066cd096d8b510f715e6ef5d268", size = 163234 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b6/5f/d6d641b490fd3ec2c4c13b4244d68deea3a1b970a97be64f34fb5504ff72/pydantic_settings-2.9.1-py3-none-any.whl", hash = "sha256:59b4f431b1defb26fe620c71a7d3968a710d719f5f4cdbbdb7926edeb770f6ef", size = 44356, upload-time = "2025-04-18T16:44:46.617Z" }, + { url = "https://files.pythonhosted.org/packages/b6/5f/d6d641b490fd3ec2c4c13b4244d68deea3a1b970a97be64f34fb5504ff72/pydantic_settings-2.9.1-py3-none-any.whl", hash = "sha256:59b4f431b1defb26fe620c71a7d3968a710d719f5f4cdbbdb7926edeb770f6ef", size = 44356 }, ] [[package]] @@ -549,9 +549,9 @@ dependencies = [ { name = "packaging" }, { name = "pluggy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ae/3c/c9d525a414d506893f0cd8a8d0de7706446213181570cdbd766691164e40/pytest-8.3.5.tar.gz", hash = "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845", size = 1450891, upload-time = "2025-03-02T12:54:54.503Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ae/3c/c9d525a414d506893f0cd8a8d0de7706446213181570cdbd766691164e40/pytest-8.3.5.tar.gz", hash = "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845", size = 1450891 } wheels = [ - { url = "https://files.pythonhosted.org/packages/30/3d/64ad57c803f1fa1e963a7946b6e0fea4a70df53c1a7fed304586539c2bac/pytest-8.3.5-py3-none-any.whl", hash = "sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820", size = 343634, upload-time = "2025-03-02T12:54:52.069Z" }, + { url = "https://files.pythonhosted.org/packages/30/3d/64ad57c803f1fa1e963a7946b6e0fea4a70df53c1a7fed304586539c2bac/pytest-8.3.5-py3-none-any.whl", hash = "sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820", size = 343634 }, ] [[package]] @@ -561,18 +561,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "six" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432 } wheels = [ - { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892 }, ] [[package]] name = "python-dotenv" version = "1.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/88/2c/7bb1416c5620485aa793f2de31d3df393d3686aa8a8506d11e10e13c5baf/python_dotenv-1.1.0.tar.gz", hash = "sha256:41f90bc6f5f177fb41f53e87666db362025010eb28f60a01c9143bfa33a2b2d5", size = 39920, upload-time = "2025-03-25T10:14:56.835Z" } +sdist = { url = "https://files.pythonhosted.org/packages/88/2c/7bb1416c5620485aa793f2de31d3df393d3686aa8a8506d11e10e13c5baf/python_dotenv-1.1.0.tar.gz", hash = "sha256:41f90bc6f5f177fb41f53e87666db362025010eb28f60a01c9143bfa33a2b2d5", size = 39920 } wheels = [ - { url = "https://files.pythonhosted.org/packages/1e/18/98a99ad95133c6a6e2005fe89faedf294a748bd5dc803008059409ac9b1e/python_dotenv-1.1.0-py3-none-any.whl", hash = "sha256:d7c01d9e2293916c18baf562d95698754b0dbbb5e74d457c45d4f6561fb9d55d", size = 20256, upload-time = "2025-03-25T10:14:55.034Z" }, + { url = "https://files.pythonhosted.org/packages/1e/18/98a99ad95133c6a6e2005fe89faedf294a748bd5dc803008059409ac9b1e/python_dotenv-1.1.0-py3-none-any.whl", hash = "sha256:d7c01d9e2293916c18baf562d95698754b0dbbb5e74d457c45d4f6561fb9d55d", size = 20256 }, ] [[package]] @@ -580,38 +580,38 @@ name = "pywin32" version = "310" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6b/ec/4fdbe47932f671d6e348474ea35ed94227fb5df56a7c30cbbb42cd396ed0/pywin32-310-cp312-cp312-win32.whl", hash = "sha256:8a75a5cc3893e83a108c05d82198880704c44bbaee4d06e442e471d3c9ea4f3d", size = 8796239, upload-time = "2025-03-17T00:55:58.807Z" }, - { url = "https://files.pythonhosted.org/packages/e3/e5/b0627f8bb84e06991bea89ad8153a9e50ace40b2e1195d68e9dff6b03d0f/pywin32-310-cp312-cp312-win_amd64.whl", hash = "sha256:bf5c397c9a9a19a6f62f3fb821fbf36cac08f03770056711f765ec1503972060", size = 9503839, upload-time = "2025-03-17T00:56:00.8Z" }, - { url = "https://files.pythonhosted.org/packages/1f/32/9ccf53748df72301a89713936645a664ec001abd35ecc8578beda593d37d/pywin32-310-cp312-cp312-win_arm64.whl", hash = "sha256:2349cc906eae872d0663d4d6290d13b90621eaf78964bb1578632ff20e152966", size = 8459470, upload-time = "2025-03-17T00:56:02.601Z" }, - { url = "https://files.pythonhosted.org/packages/1c/09/9c1b978ffc4ae53999e89c19c77ba882d9fce476729f23ef55211ea1c034/pywin32-310-cp313-cp313-win32.whl", hash = "sha256:5d241a659c496ada3253cd01cfaa779b048e90ce4b2b38cd44168ad555ce74ab", size = 8794384, upload-time = "2025-03-17T00:56:04.383Z" }, - { url = "https://files.pythonhosted.org/packages/45/3c/b4640f740ffebadd5d34df35fecba0e1cfef8fde9f3e594df91c28ad9b50/pywin32-310-cp313-cp313-win_amd64.whl", hash = "sha256:667827eb3a90208ddbdcc9e860c81bde63a135710e21e4cb3348968e4bd5249e", size = 9503039, upload-time = "2025-03-17T00:56:06.207Z" }, - { url = "https://files.pythonhosted.org/packages/b4/f4/f785020090fb050e7fb6d34b780f2231f302609dc964672f72bfaeb59a28/pywin32-310-cp313-cp313-win_arm64.whl", hash = "sha256:e308f831de771482b7cf692a1f308f8fca701b2d8f9dde6cc440c7da17e47b33", size = 8458152, upload-time = "2025-03-17T00:56:07.819Z" }, + { url = "https://files.pythonhosted.org/packages/6b/ec/4fdbe47932f671d6e348474ea35ed94227fb5df56a7c30cbbb42cd396ed0/pywin32-310-cp312-cp312-win32.whl", hash = "sha256:8a75a5cc3893e83a108c05d82198880704c44bbaee4d06e442e471d3c9ea4f3d", size = 8796239 }, + { url = "https://files.pythonhosted.org/packages/e3/e5/b0627f8bb84e06991bea89ad8153a9e50ace40b2e1195d68e9dff6b03d0f/pywin32-310-cp312-cp312-win_amd64.whl", hash = "sha256:bf5c397c9a9a19a6f62f3fb821fbf36cac08f03770056711f765ec1503972060", size = 9503839 }, + { url = "https://files.pythonhosted.org/packages/1f/32/9ccf53748df72301a89713936645a664ec001abd35ecc8578beda593d37d/pywin32-310-cp312-cp312-win_arm64.whl", hash = "sha256:2349cc906eae872d0663d4d6290d13b90621eaf78964bb1578632ff20e152966", size = 8459470 }, + { url = "https://files.pythonhosted.org/packages/1c/09/9c1b978ffc4ae53999e89c19c77ba882d9fce476729f23ef55211ea1c034/pywin32-310-cp313-cp313-win32.whl", hash = "sha256:5d241a659c496ada3253cd01cfaa779b048e90ce4b2b38cd44168ad555ce74ab", size = 8794384 }, + { url = "https://files.pythonhosted.org/packages/45/3c/b4640f740ffebadd5d34df35fecba0e1cfef8fde9f3e594df91c28ad9b50/pywin32-310-cp313-cp313-win_amd64.whl", hash = "sha256:667827eb3a90208ddbdcc9e860c81bde63a135710e21e4cb3348968e4bd5249e", size = 9503039 }, + { url = "https://files.pythonhosted.org/packages/b4/f4/f785020090fb050e7fb6d34b780f2231f302609dc964672f72bfaeb59a28/pywin32-310-cp313-cp313-win_arm64.whl", hash = "sha256:e308f831de771482b7cf692a1f308f8fca701b2d8f9dde6cc440c7da17e47b33", size = 8458152 }, ] [[package]] name = "pyyaml" version = "6.0.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631, upload-time = "2024-08-06T20:33:50.674Z" } -wheels = [ - { 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, upload-time = "2024-08-06T20:32:25.131Z" }, - { 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, upload-time = "2024-08-06T20:32:26.511Z" }, - { 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, upload-time = "2024-08-06T20:32:28.363Z" }, - { 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, upload-time = "2024-08-06T20:32:30.058Z" }, - { 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, upload-time = "2024-08-06T20:32:31.881Z" }, - { 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, upload-time = "2024-08-06T20:32:37.083Z" }, - { 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, upload-time = "2024-08-06T20:32:38.898Z" }, - { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591, upload-time = "2024-08-06T20:32:40.241Z" }, - { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338, upload-time = "2024-08-06T20:32:41.93Z" }, - { 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, upload-time = "2024-08-06T20:32:43.4Z" }, - { 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, upload-time = "2024-08-06T20:32:44.801Z" }, - { 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, upload-time = "2024-08-06T20:32:46.432Z" }, - { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361, upload-time = "2024-08-06T20:32:51.188Z" }, - { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523, upload-time = "2024-08-06T20:32:53.019Z" }, - { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660, upload-time = "2024-08-06T20:32:54.708Z" }, - { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597, upload-time = "2024-08-06T20:32:56.985Z" }, - { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527, upload-time = "2024-08-06T20:33:03.001Z" }, - { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446, upload-time = "2024-08-06T20:33:04.33Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631 } +wheels = [ + { 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 }, + { 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 }, + { 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 }, + { 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 }, + { 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 }, + { 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 }, + { 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 }, + { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591 }, + { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338 }, + { 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 }, + { 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 }, + { 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 }, + { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361 }, + { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523 }, + { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660 }, + { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597 }, + { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527 }, + { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446 }, ] [[package]] @@ -624,9 +624,9 @@ dependencies = [ { name = "idna" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", size = 131218, upload-time = "2024-05-29T15:37:49.536Z" } +sdist = { url = "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", size = 131218 } wheels = [ - { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928, upload-time = "2024-05-29T15:37:47.027Z" }, + { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928 }, ] [[package]] @@ -638,34 +638,34 @@ dependencies = [ { name = "requests" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/81/7e/2345ac3299bd62bd7163216702bbc88976c099cfceba5b889f2a457727a1/responses-0.25.7.tar.gz", hash = "sha256:8ebae11405d7a5df79ab6fd54277f6f2bc29b2d002d0dd2d5c632594d1ddcedb", size = 79203, upload-time = "2025-03-11T15:36:16.624Z" } +sdist = { url = "https://files.pythonhosted.org/packages/81/7e/2345ac3299bd62bd7163216702bbc88976c099cfceba5b889f2a457727a1/responses-0.25.7.tar.gz", hash = "sha256:8ebae11405d7a5df79ab6fd54277f6f2bc29b2d002d0dd2d5c632594d1ddcedb", size = 79203 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e4/fc/1d20b64fa90e81e4fa0a34c9b0240a6cfb1326b7e06d18a5432a9917c316/responses-0.25.7-py3-none-any.whl", hash = "sha256:92ca17416c90fe6b35921f52179bff29332076bb32694c0df02dcac2c6bc043c", size = 34732, upload-time = "2025-03-11T15:36:14.589Z" }, + { url = "https://files.pythonhosted.org/packages/e4/fc/1d20b64fa90e81e4fa0a34c9b0240a6cfb1326b7e06d18a5432a9917c316/responses-0.25.7-py3-none-any.whl", hash = "sha256:92ca17416c90fe6b35921f52179bff29332076bb32694c0df02dcac2c6bc043c", size = 34732 }, ] [[package]] name = "ruff" version = "0.11.11" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b2/53/ae4857030d59286924a8bdb30d213d6ff22d8f0957e738d0289990091dd8/ruff-0.11.11.tar.gz", hash = "sha256:7774173cc7c1980e6bf67569ebb7085989a78a103922fb83ef3dfe230cd0687d", size = 4186707, upload-time = "2025-05-22T19:19:34.363Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b2/53/ae4857030d59286924a8bdb30d213d6ff22d8f0957e738d0289990091dd8/ruff-0.11.11.tar.gz", hash = "sha256:7774173cc7c1980e6bf67569ebb7085989a78a103922fb83ef3dfe230cd0687d", size = 4186707 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b1/14/f2326676197bab099e2a24473158c21656fbf6a207c65f596ae15acb32b9/ruff-0.11.11-py3-none-linux_armv6l.whl", hash = "sha256:9924e5ae54125ed8958a4f7de320dab7380f6e9fa3195e3dc3b137c6842a0092", size = 10229049, upload-time = "2025-05-22T19:18:45.516Z" }, - { url = "https://files.pythonhosted.org/packages/9a/f3/bff7c92dd66c959e711688b2e0768e486bbca46b2f35ac319bb6cce04447/ruff-0.11.11-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:c8a93276393d91e952f790148eb226658dd275cddfde96c6ca304873f11d2ae4", size = 11053601, upload-time = "2025-05-22T19:18:49.269Z" }, - { url = "https://files.pythonhosted.org/packages/e2/38/8e1a3efd0ef9d8259346f986b77de0f62c7a5ff4a76563b6b39b68f793b9/ruff-0.11.11-py3-none-macosx_11_0_arm64.whl", hash = "sha256:d6e333dbe2e6ae84cdedefa943dfd6434753ad321764fd937eef9d6b62022bcd", size = 10367421, upload-time = "2025-05-22T19:18:51.754Z" }, - { url = "https://files.pythonhosted.org/packages/b4/50/557ad9dd4fb9d0bf524ec83a090a3932d284d1a8b48b5906b13b72800e5f/ruff-0.11.11-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7885d9a5e4c77b24e8c88aba8c80be9255fa22ab326019dac2356cff42089fc6", size = 10581980, upload-time = "2025-05-22T19:18:54.011Z" }, - { url = "https://files.pythonhosted.org/packages/c4/b2/e2ed82d6e2739ece94f1bdbbd1d81b712d3cdaf69f0a1d1f1a116b33f9ad/ruff-0.11.11-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1b5ab797fcc09121ed82e9b12b6f27e34859e4227080a42d090881be888755d4", size = 10089241, upload-time = "2025-05-22T19:18:56.041Z" }, - { url = "https://files.pythonhosted.org/packages/3d/9f/b4539f037a5302c450d7c695c82f80e98e48d0d667ecc250e6bdeb49b5c3/ruff-0.11.11-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e231ff3132c1119ece836487a02785f099a43992b95c2f62847d29bace3c75ac", size = 11699398, upload-time = "2025-05-22T19:18:58.248Z" }, - { url = "https://files.pythonhosted.org/packages/61/fb/32e029d2c0b17df65e6eaa5ce7aea5fbeaed22dddd9fcfbbf5fe37c6e44e/ruff-0.11.11-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:a97c9babe1d4081037a90289986925726b802d180cca784ac8da2bbbc335f709", size = 12427955, upload-time = "2025-05-22T19:19:00.981Z" }, - { url = "https://files.pythonhosted.org/packages/6e/e3/160488dbb11f18c8121cfd588e38095ba779ae208292765972f7732bfd95/ruff-0.11.11-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d8c4ddcbe8a19f59f57fd814b8b117d4fcea9bee7c0492e6cf5fdc22cfa563c8", size = 12069803, upload-time = "2025-05-22T19:19:03.258Z" }, - { url = "https://files.pythonhosted.org/packages/ff/16/3b006a875f84b3d0bff24bef26b8b3591454903f6f754b3f0a318589dcc3/ruff-0.11.11-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6224076c344a7694c6fbbb70d4f2a7b730f6d47d2a9dc1e7f9d9bb583faf390b", size = 11242630, upload-time = "2025-05-22T19:19:05.871Z" }, - { url = "https://files.pythonhosted.org/packages/65/0d/0338bb8ac0b97175c2d533e9c8cdc127166de7eb16d028a43c5ab9e75abd/ruff-0.11.11-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:882821fcdf7ae8db7a951df1903d9cb032bbe838852e5fc3c2b6c3ab54e39875", size = 11507310, upload-time = "2025-05-22T19:19:08.584Z" }, - { url = "https://files.pythonhosted.org/packages/6f/bf/d7130eb26174ce9b02348b9f86d5874eafbf9f68e5152e15e8e0a392e4a3/ruff-0.11.11-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:dcec2d50756463d9df075a26a85a6affbc1b0148873da3997286caf1ce03cae1", size = 10441144, upload-time = "2025-05-22T19:19:13.621Z" }, - { url = "https://files.pythonhosted.org/packages/b3/f3/4be2453b258c092ff7b1761987cf0749e70ca1340cd1bfb4def08a70e8d8/ruff-0.11.11-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:99c28505ecbaeb6594701a74e395b187ee083ee26478c1a795d35084d53ebd81", size = 10081987, upload-time = "2025-05-22T19:19:15.821Z" }, - { url = "https://files.pythonhosted.org/packages/6c/6e/dfa4d2030c5b5c13db158219f2ec67bf333e8a7748dccf34cfa2a6ab9ebc/ruff-0.11.11-py3-none-musllinux_1_2_i686.whl", hash = "sha256:9263f9e5aa4ff1dec765e99810f1cc53f0c868c5329b69f13845f699fe74f639", size = 11073922, upload-time = "2025-05-22T19:19:18.104Z" }, - { url = "https://files.pythonhosted.org/packages/ff/f4/f7b0b0c3d32b593a20ed8010fa2c1a01f2ce91e79dda6119fcc51d26c67b/ruff-0.11.11-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:64ac6f885e3ecb2fdbb71de2701d4e34526651f1e8503af8fb30d4915a3fe345", size = 11568537, upload-time = "2025-05-22T19:19:20.889Z" }, - { url = "https://files.pythonhosted.org/packages/d2/46/0e892064d0adc18bcc81deed9aaa9942a27fd2cd9b1b7791111ce468c25f/ruff-0.11.11-py3-none-win32.whl", hash = "sha256:1adcb9a18802268aaa891ffb67b1c94cd70578f126637118e8099b8e4adcf112", size = 10536492, upload-time = "2025-05-22T19:19:23.642Z" }, - { url = "https://files.pythonhosted.org/packages/1b/d9/232e79459850b9f327e9f1dc9c047a2a38a6f9689e1ec30024841fc4416c/ruff-0.11.11-py3-none-win_amd64.whl", hash = "sha256:748b4bb245f11e91a04a4ff0f96e386711df0a30412b9fe0c74d5bdc0e4a531f", size = 11612562, upload-time = "2025-05-22T19:19:27.013Z" }, - { url = "https://files.pythonhosted.org/packages/ce/eb/09c132cff3cc30b2e7244191dcce69437352d6d6709c0adf374f3e6f476e/ruff-0.11.11-py3-none-win_arm64.whl", hash = "sha256:6c51f136c0364ab1b774767aa8b86331bd8e9d414e2d107db7a2189f35ea1f7b", size = 10735951, upload-time = "2025-05-22T19:19:30.043Z" }, + { url = "https://files.pythonhosted.org/packages/b1/14/f2326676197bab099e2a24473158c21656fbf6a207c65f596ae15acb32b9/ruff-0.11.11-py3-none-linux_armv6l.whl", hash = "sha256:9924e5ae54125ed8958a4f7de320dab7380f6e9fa3195e3dc3b137c6842a0092", size = 10229049 }, + { url = "https://files.pythonhosted.org/packages/9a/f3/bff7c92dd66c959e711688b2e0768e486bbca46b2f35ac319bb6cce04447/ruff-0.11.11-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:c8a93276393d91e952f790148eb226658dd275cddfde96c6ca304873f11d2ae4", size = 11053601 }, + { url = "https://files.pythonhosted.org/packages/e2/38/8e1a3efd0ef9d8259346f986b77de0f62c7a5ff4a76563b6b39b68f793b9/ruff-0.11.11-py3-none-macosx_11_0_arm64.whl", hash = "sha256:d6e333dbe2e6ae84cdedefa943dfd6434753ad321764fd937eef9d6b62022bcd", size = 10367421 }, + { url = "https://files.pythonhosted.org/packages/b4/50/557ad9dd4fb9d0bf524ec83a090a3932d284d1a8b48b5906b13b72800e5f/ruff-0.11.11-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7885d9a5e4c77b24e8c88aba8c80be9255fa22ab326019dac2356cff42089fc6", size = 10581980 }, + { url = "https://files.pythonhosted.org/packages/c4/b2/e2ed82d6e2739ece94f1bdbbd1d81b712d3cdaf69f0a1d1f1a116b33f9ad/ruff-0.11.11-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1b5ab797fcc09121ed82e9b12b6f27e34859e4227080a42d090881be888755d4", size = 10089241 }, + { url = "https://files.pythonhosted.org/packages/3d/9f/b4539f037a5302c450d7c695c82f80e98e48d0d667ecc250e6bdeb49b5c3/ruff-0.11.11-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e231ff3132c1119ece836487a02785f099a43992b95c2f62847d29bace3c75ac", size = 11699398 }, + { url = "https://files.pythonhosted.org/packages/61/fb/32e029d2c0b17df65e6eaa5ce7aea5fbeaed22dddd9fcfbbf5fe37c6e44e/ruff-0.11.11-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:a97c9babe1d4081037a90289986925726b802d180cca784ac8da2bbbc335f709", size = 12427955 }, + { url = "https://files.pythonhosted.org/packages/6e/e3/160488dbb11f18c8121cfd588e38095ba779ae208292765972f7732bfd95/ruff-0.11.11-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d8c4ddcbe8a19f59f57fd814b8b117d4fcea9bee7c0492e6cf5fdc22cfa563c8", size = 12069803 }, + { url = "https://files.pythonhosted.org/packages/ff/16/3b006a875f84b3d0bff24bef26b8b3591454903f6f754b3f0a318589dcc3/ruff-0.11.11-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6224076c344a7694c6fbbb70d4f2a7b730f6d47d2a9dc1e7f9d9bb583faf390b", size = 11242630 }, + { url = "https://files.pythonhosted.org/packages/65/0d/0338bb8ac0b97175c2d533e9c8cdc127166de7eb16d028a43c5ab9e75abd/ruff-0.11.11-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:882821fcdf7ae8db7a951df1903d9cb032bbe838852e5fc3c2b6c3ab54e39875", size = 11507310 }, + { url = "https://files.pythonhosted.org/packages/6f/bf/d7130eb26174ce9b02348b9f86d5874eafbf9f68e5152e15e8e0a392e4a3/ruff-0.11.11-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:dcec2d50756463d9df075a26a85a6affbc1b0148873da3997286caf1ce03cae1", size = 10441144 }, + { url = "https://files.pythonhosted.org/packages/b3/f3/4be2453b258c092ff7b1761987cf0749e70ca1340cd1bfb4def08a70e8d8/ruff-0.11.11-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:99c28505ecbaeb6594701a74e395b187ee083ee26478c1a795d35084d53ebd81", size = 10081987 }, + { url = "https://files.pythonhosted.org/packages/6c/6e/dfa4d2030c5b5c13db158219f2ec67bf333e8a7748dccf34cfa2a6ab9ebc/ruff-0.11.11-py3-none-musllinux_1_2_i686.whl", hash = "sha256:9263f9e5aa4ff1dec765e99810f1cc53f0c868c5329b69f13845f699fe74f639", size = 11073922 }, + { url = "https://files.pythonhosted.org/packages/ff/f4/f7b0b0c3d32b593a20ed8010fa2c1a01f2ce91e79dda6119fcc51d26c67b/ruff-0.11.11-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:64ac6f885e3ecb2fdbb71de2701d4e34526651f1e8503af8fb30d4915a3fe345", size = 11568537 }, + { url = "https://files.pythonhosted.org/packages/d2/46/0e892064d0adc18bcc81deed9aaa9942a27fd2cd9b1b7791111ce468c25f/ruff-0.11.11-py3-none-win32.whl", hash = "sha256:1adcb9a18802268aaa891ffb67b1c94cd70578f126637118e8099b8e4adcf112", size = 10536492 }, + { url = "https://files.pythonhosted.org/packages/1b/d9/232e79459850b9f327e9f1dc9c047a2a38a6f9689e1ec30024841fc4416c/ruff-0.11.11-py3-none-win_amd64.whl", hash = "sha256:748b4bb245f11e91a04a4ff0f96e386711df0a30412b9fe0c74d5bdc0e4a531f", size = 11612562 }, + { url = "https://files.pythonhosted.org/packages/ce/eb/09c132cff3cc30b2e7244191dcce69437352d6d6709c0adf374f3e6f476e/ruff-0.11.11-py3-none-win_arm64.whl", hash = "sha256:6c51f136c0364ab1b774767aa8b86331bd8e9d414e2d107db7a2189f35ea1f7b", size = 10735951 }, ] [[package]] @@ -675,27 +675,27 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "botocore" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ed/5d/9dcc100abc6711e8247af5aa561fc07c4a046f72f659c3adea9a449e191a/s3transfer-0.13.0.tar.gz", hash = "sha256:f5e6db74eb7776a37208001113ea7aa97695368242b364d73e91c981ac522177", size = 150232, upload-time = "2025-05-22T19:24:50.245Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ed/5d/9dcc100abc6711e8247af5aa561fc07c4a046f72f659c3adea9a449e191a/s3transfer-0.13.0.tar.gz", hash = "sha256:f5e6db74eb7776a37208001113ea7aa97695368242b364d73e91c981ac522177", size = 150232 } wheels = [ - { url = "https://files.pythonhosted.org/packages/18/17/22bf8155aa0ea2305eefa3a6402e040df7ebe512d1310165eda1e233c3f8/s3transfer-0.13.0-py3-none-any.whl", hash = "sha256:0148ef34d6dd964d0d8cf4311b2b21c474693e57c2e069ec708ce043d2b527be", size = 85152, upload-time = "2025-05-22T19:24:48.703Z" }, + { url = "https://files.pythonhosted.org/packages/18/17/22bf8155aa0ea2305eefa3a6402e040df7ebe512d1310165eda1e233c3f8/s3transfer-0.13.0-py3-none-any.whl", hash = "sha256:0148ef34d6dd964d0d8cf4311b2b21c474693e57c2e069ec708ce043d2b527be", size = 85152 }, ] [[package]] name = "six" version = "1.17.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050 }, ] [[package]] name = "typing-extensions" version = "4.13.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f6/37/23083fcd6e35492953e8d2aaaa68b860eb422b34627b13f2ce3eb6106061/typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef", size = 106967, upload-time = "2025-04-10T14:19:05.416Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f6/37/23083fcd6e35492953e8d2aaaa68b860eb422b34627b13f2ce3eb6106061/typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef", size = 106967 } wheels = [ - { url = "https://files.pythonhosted.org/packages/8b/54/b1ae86c0973cc6f0210b53d508ca3641fb6d0c56823f288d108bc7ab3cc8/typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c", size = 45806, upload-time = "2025-04-10T14:19:03.967Z" }, + { url = "https://files.pythonhosted.org/packages/8b/54/b1ae86c0973cc6f0210b53d508ca3641fb6d0c56823f288d108bc7ab3cc8/typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c", size = 45806 }, ] [[package]] @@ -705,18 +705,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28", size = 75726, upload-time = "2025-05-21T18:55:23.885Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28", size = 75726 } wheels = [ - { url = "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51", size = 14552, upload-time = "2025-05-21T18:55:22.152Z" }, + { url = "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51", size = 14552 }, ] [[package]] name = "urllib3" version = "2.4.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8a/78/16493d9c386d8e60e442a35feac5e00f0913c0f4b7c217c11e8ec2ff53e0/urllib3-2.4.0.tar.gz", hash = "sha256:414bc6535b787febd7567804cc015fee39daab8ad86268f1310a9250697de466", size = 390672, upload-time = "2025-04-10T15:23:39.232Z" } +sdist = { url = "https://files.pythonhosted.org/packages/8a/78/16493d9c386d8e60e442a35feac5e00f0913c0f4b7c217c11e8ec2ff53e0/urllib3-2.4.0.tar.gz", hash = "sha256:414bc6535b787febd7567804cc015fee39daab8ad86268f1310a9250697de466", size = 390672 } wheels = [ - { url = "https://files.pythonhosted.org/packages/6b/11/cc635220681e93a0183390e26485430ca2c7b5f9d33b15c74c2861cb8091/urllib3-2.4.0-py3-none-any.whl", hash = "sha256:4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813", size = 128680, upload-time = "2025-04-10T15:23:37.377Z" }, + { url = "https://files.pythonhosted.org/packages/6b/11/cc635220681e93a0183390e26485430ca2c7b5f9d33b15c74c2861cb8091/urllib3-2.4.0-py3-none-any.whl", hash = "sha256:4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813", size = 128680 }, ] [[package]] @@ -726,67 +726,67 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markupsafe" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9f/69/83029f1f6300c5fb2471d621ab06f6ec6b3324685a2ce0f9777fd4a8b71e/werkzeug-3.1.3.tar.gz", hash = "sha256:60723ce945c19328679790e3282cc758aa4a6040e4bb330f53d30fa546d44746", size = 806925, upload-time = "2024-11-08T15:52:18.093Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9f/69/83029f1f6300c5fb2471d621ab06f6ec6b3324685a2ce0f9777fd4a8b71e/werkzeug-3.1.3.tar.gz", hash = "sha256:60723ce945c19328679790e3282cc758aa4a6040e4bb330f53d30fa546d44746", size = 806925 } wheels = [ - { url = "https://files.pythonhosted.org/packages/52/24/ab44c871b0f07f491e5d2ad12c9bd7358e527510618cb1b803a88e986db1/werkzeug-3.1.3-py3-none-any.whl", hash = "sha256:54b78bf3716d19a65be4fceccc0d1d7b89e608834989dfae50ea87564639213e", size = 224498, upload-time = "2024-11-08T15:52:16.132Z" }, + { url = "https://files.pythonhosted.org/packages/52/24/ab44c871b0f07f491e5d2ad12c9bd7358e527510618cb1b803a88e986db1/werkzeug-3.1.3-py3-none-any.whl", hash = "sha256:54b78bf3716d19a65be4fceccc0d1d7b89e608834989dfae50ea87564639213e", size = 224498 }, ] [[package]] name = "wrapt" version = "1.17.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c3/fc/e91cc220803d7bc4db93fb02facd8461c37364151b8494762cc88b0fbcef/wrapt-1.17.2.tar.gz", hash = "sha256:41388e9d4d1522446fe79d3213196bd9e3b301a336965b9e27ca2788ebd122f3", size = 55531, upload-time = "2025-01-14T10:35:45.465Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a1/bd/ab55f849fd1f9a58ed7ea47f5559ff09741b25f00c191231f9f059c83949/wrapt-1.17.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d5e2439eecc762cd85e7bd37161d4714aa03a33c5ba884e26c81559817ca0925", size = 53799, upload-time = "2025-01-14T10:33:57.4Z" }, - { url = "https://files.pythonhosted.org/packages/53/18/75ddc64c3f63988f5a1d7e10fb204ffe5762bc663f8023f18ecaf31a332e/wrapt-1.17.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fc7cb4c1c744f8c05cd5f9438a3caa6ab94ce8344e952d7c45a8ed59dd88392", size = 38821, upload-time = "2025-01-14T10:33:59.334Z" }, - { url = "https://files.pythonhosted.org/packages/48/2a/97928387d6ed1c1ebbfd4efc4133a0633546bec8481a2dd5ec961313a1c7/wrapt-1.17.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8fdbdb757d5390f7c675e558fd3186d590973244fab0c5fe63d373ade3e99d40", size = 38919, upload-time = "2025-01-14T10:34:04.093Z" }, - { url = "https://files.pythonhosted.org/packages/73/54/3bfe5a1febbbccb7a2f77de47b989c0b85ed3a6a41614b104204a788c20e/wrapt-1.17.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bb1d0dbf99411f3d871deb6faa9aabb9d4e744d67dcaaa05399af89d847a91d", size = 88721, upload-time = "2025-01-14T10:34:07.163Z" }, - { url = "https://files.pythonhosted.org/packages/25/cb/7262bc1b0300b4b64af50c2720ef958c2c1917525238d661c3e9a2b71b7b/wrapt-1.17.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d18a4865f46b8579d44e4fe1e2bcbc6472ad83d98e22a26c963d46e4c125ef0b", size = 80899, upload-time = "2025-01-14T10:34:09.82Z" }, - { url = "https://files.pythonhosted.org/packages/2a/5a/04cde32b07a7431d4ed0553a76fdb7a61270e78c5fd5a603e190ac389f14/wrapt-1.17.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc570b5f14a79734437cb7b0500376b6b791153314986074486e0b0fa8d71d98", size = 89222, upload-time = "2025-01-14T10:34:11.258Z" }, - { url = "https://files.pythonhosted.org/packages/09/28/2e45a4f4771fcfb109e244d5dbe54259e970362a311b67a965555ba65026/wrapt-1.17.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6d9187b01bebc3875bac9b087948a2bccefe464a7d8f627cf6e48b1bbae30f82", size = 86707, upload-time = "2025-01-14T10:34:12.49Z" }, - { url = "https://files.pythonhosted.org/packages/c6/d2/dcb56bf5f32fcd4bd9aacc77b50a539abdd5b6536872413fd3f428b21bed/wrapt-1.17.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9e8659775f1adf02eb1e6f109751268e493c73716ca5761f8acb695e52a756ae", size = 79685, upload-time = "2025-01-14T10:34:15.043Z" }, - { url = "https://files.pythonhosted.org/packages/80/4e/eb8b353e36711347893f502ce91c770b0b0929f8f0bed2670a6856e667a9/wrapt-1.17.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e8b2816ebef96d83657b56306152a93909a83f23994f4b30ad4573b00bd11bb9", size = 87567, upload-time = "2025-01-14T10:34:16.563Z" }, - { url = "https://files.pythonhosted.org/packages/17/27/4fe749a54e7fae6e7146f1c7d914d28ef599dacd4416566c055564080fe2/wrapt-1.17.2-cp312-cp312-win32.whl", hash = "sha256:468090021f391fe0056ad3e807e3d9034e0fd01adcd3bdfba977b6fdf4213ea9", size = 36672, upload-time = "2025-01-14T10:34:17.727Z" }, - { url = "https://files.pythonhosted.org/packages/15/06/1dbf478ea45c03e78a6a8c4be4fdc3c3bddea5c8de8a93bc971415e47f0f/wrapt-1.17.2-cp312-cp312-win_amd64.whl", hash = "sha256:ec89ed91f2fa8e3f52ae53cd3cf640d6feff92ba90d62236a81e4e563ac0e991", size = 38865, upload-time = "2025-01-14T10:34:19.577Z" }, - { url = "https://files.pythonhosted.org/packages/ce/b9/0ffd557a92f3b11d4c5d5e0c5e4ad057bd9eb8586615cdaf901409920b14/wrapt-1.17.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:6ed6ffac43aecfe6d86ec5b74b06a5be33d5bb9243d055141e8cabb12aa08125", size = 53800, upload-time = "2025-01-14T10:34:21.571Z" }, - { url = "https://files.pythonhosted.org/packages/c0/ef/8be90a0b7e73c32e550c73cfb2fa09db62234227ece47b0e80a05073b375/wrapt-1.17.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:35621ae4c00e056adb0009f8e86e28eb4a41a4bfa8f9bfa9fca7d343fe94f998", size = 38824, upload-time = "2025-01-14T10:34:22.999Z" }, - { url = "https://files.pythonhosted.org/packages/36/89/0aae34c10fe524cce30fe5fc433210376bce94cf74d05b0d68344c8ba46e/wrapt-1.17.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a604bf7a053f8362d27eb9fefd2097f82600b856d5abe996d623babd067b1ab5", size = 38920, upload-time = "2025-01-14T10:34:25.386Z" }, - { url = "https://files.pythonhosted.org/packages/3b/24/11c4510de906d77e0cfb5197f1b1445d4fec42c9a39ea853d482698ac681/wrapt-1.17.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cbabee4f083b6b4cd282f5b817a867cf0b1028c54d445b7ec7cfe6505057cf8", size = 88690, upload-time = "2025-01-14T10:34:28.058Z" }, - { url = "https://files.pythonhosted.org/packages/71/d7/cfcf842291267bf455b3e266c0c29dcb675b5540ee8b50ba1699abf3af45/wrapt-1.17.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49703ce2ddc220df165bd2962f8e03b84c89fee2d65e1c24a7defff6f988f4d6", size = 80861, upload-time = "2025-01-14T10:34:29.167Z" }, - { url = "https://files.pythonhosted.org/packages/d5/66/5d973e9f3e7370fd686fb47a9af3319418ed925c27d72ce16b791231576d/wrapt-1.17.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8112e52c5822fc4253f3901b676c55ddf288614dc7011634e2719718eaa187dc", size = 89174, upload-time = "2025-01-14T10:34:31.702Z" }, - { url = "https://files.pythonhosted.org/packages/a7/d3/8e17bb70f6ae25dabc1aaf990f86824e4fd98ee9cadf197054e068500d27/wrapt-1.17.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9fee687dce376205d9a494e9c121e27183b2a3df18037f89d69bd7b35bcf59e2", size = 86721, upload-time = "2025-01-14T10:34:32.91Z" }, - { url = "https://files.pythonhosted.org/packages/6f/54/f170dfb278fe1c30d0ff864513cff526d624ab8de3254b20abb9cffedc24/wrapt-1.17.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:18983c537e04d11cf027fbb60a1e8dfd5190e2b60cc27bc0808e653e7b218d1b", size = 79763, upload-time = "2025-01-14T10:34:34.903Z" }, - { url = "https://files.pythonhosted.org/packages/4a/98/de07243751f1c4a9b15c76019250210dd3486ce098c3d80d5f729cba029c/wrapt-1.17.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:703919b1633412ab54bcf920ab388735832fdcb9f9a00ae49387f0fe67dad504", size = 87585, upload-time = "2025-01-14T10:34:36.13Z" }, - { url = "https://files.pythonhosted.org/packages/f9/f0/13925f4bd6548013038cdeb11ee2cbd4e37c30f8bfd5db9e5a2a370d6e20/wrapt-1.17.2-cp313-cp313-win32.whl", hash = "sha256:abbb9e76177c35d4e8568e58650aa6926040d6a9f6f03435b7a522bf1c487f9a", size = 36676, upload-time = "2025-01-14T10:34:37.962Z" }, - { url = "https://files.pythonhosted.org/packages/bf/ae/743f16ef8c2e3628df3ddfd652b7d4c555d12c84b53f3d8218498f4ade9b/wrapt-1.17.2-cp313-cp313-win_amd64.whl", hash = "sha256:69606d7bb691b50a4240ce6b22ebb319c1cfb164e5f6569835058196e0f3a845", size = 38871, upload-time = "2025-01-14T10:34:39.13Z" }, - { url = "https://files.pythonhosted.org/packages/3d/bc/30f903f891a82d402ffb5fda27ec1d621cc97cb74c16fea0b6141f1d4e87/wrapt-1.17.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:4a721d3c943dae44f8e243b380cb645a709ba5bd35d3ad27bc2ed947e9c68192", size = 56312, upload-time = "2025-01-14T10:34:40.604Z" }, - { url = "https://files.pythonhosted.org/packages/8a/04/c97273eb491b5f1c918857cd26f314b74fc9b29224521f5b83f872253725/wrapt-1.17.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:766d8bbefcb9e00c3ac3b000d9acc51f1b399513f44d77dfe0eb026ad7c9a19b", size = 40062, upload-time = "2025-01-14T10:34:45.011Z" }, - { url = "https://files.pythonhosted.org/packages/4e/ca/3b7afa1eae3a9e7fefe499db9b96813f41828b9fdb016ee836c4c379dadb/wrapt-1.17.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e496a8ce2c256da1eb98bd15803a79bee00fc351f5dfb9ea82594a3f058309e0", size = 40155, upload-time = "2025-01-14T10:34:47.25Z" }, - { url = "https://files.pythonhosted.org/packages/89/be/7c1baed43290775cb9030c774bc53c860db140397047cc49aedaf0a15477/wrapt-1.17.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d615e4fe22f4ad3528448c193b218e077656ca9ccb22ce2cb20db730f8d306", size = 113471, upload-time = "2025-01-14T10:34:50.934Z" }, - { url = "https://files.pythonhosted.org/packages/32/98/4ed894cf012b6d6aae5f5cc974006bdeb92f0241775addad3f8cd6ab71c8/wrapt-1.17.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a5aaeff38654462bc4b09023918b7f21790efb807f54c000a39d41d69cf552cb", size = 101208, upload-time = "2025-01-14T10:34:52.297Z" }, - { url = "https://files.pythonhosted.org/packages/ea/fd/0c30f2301ca94e655e5e057012e83284ce8c545df7661a78d8bfca2fac7a/wrapt-1.17.2-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a7d15bbd2bc99e92e39f49a04653062ee6085c0e18b3b7512a4f2fe91f2d681", size = 109339, upload-time = "2025-01-14T10:34:53.489Z" }, - { url = "https://files.pythonhosted.org/packages/75/56/05d000de894c4cfcb84bcd6b1df6214297b8089a7bd324c21a4765e49b14/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:e3890b508a23299083e065f435a492b5435eba6e304a7114d2f919d400888cc6", size = 110232, upload-time = "2025-01-14T10:34:55.327Z" }, - { url = "https://files.pythonhosted.org/packages/53/f8/c3f6b2cf9b9277fb0813418e1503e68414cd036b3b099c823379c9575e6d/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:8c8b293cd65ad716d13d8dd3624e42e5a19cc2a2f1acc74b30c2c13f15cb61a6", size = 100476, upload-time = "2025-01-14T10:34:58.055Z" }, - { url = "https://files.pythonhosted.org/packages/a7/b1/0bb11e29aa5139d90b770ebbfa167267b1fc548d2302c30c8f7572851738/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4c82b8785d98cdd9fed4cac84d765d234ed3251bd6afe34cb7ac523cb93e8b4f", size = 106377, upload-time = "2025-01-14T10:34:59.3Z" }, - { url = "https://files.pythonhosted.org/packages/6a/e1/0122853035b40b3f333bbb25f1939fc1045e21dd518f7f0922b60c156f7c/wrapt-1.17.2-cp313-cp313t-win32.whl", hash = "sha256:13e6afb7fe71fe7485a4550a8844cc9ffbe263c0f1a1eea569bc7091d4898555", size = 37986, upload-time = "2025-01-14T10:35:00.498Z" }, - { url = "https://files.pythonhosted.org/packages/09/5e/1655cf481e079c1f22d0cabdd4e51733679932718dc23bf2db175f329b76/wrapt-1.17.2-cp313-cp313t-win_amd64.whl", hash = "sha256:eaf675418ed6b3b31c7a989fd007fa7c3be66ce14e5c3b27336383604c9da85c", size = 40750, upload-time = "2025-01-14T10:35:03.378Z" }, - { url = "https://files.pythonhosted.org/packages/2d/82/f56956041adef78f849db6b289b282e72b55ab8045a75abad81898c28d19/wrapt-1.17.2-py3-none-any.whl", hash = "sha256:b18f2d1533a71f069c7f82d524a52599053d4c7166e9dd374ae2136b7f40f7c8", size = 23594, upload-time = "2025-01-14T10:35:44.018Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/c3/fc/e91cc220803d7bc4db93fb02facd8461c37364151b8494762cc88b0fbcef/wrapt-1.17.2.tar.gz", hash = "sha256:41388e9d4d1522446fe79d3213196bd9e3b301a336965b9e27ca2788ebd122f3", size = 55531 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a1/bd/ab55f849fd1f9a58ed7ea47f5559ff09741b25f00c191231f9f059c83949/wrapt-1.17.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d5e2439eecc762cd85e7bd37161d4714aa03a33c5ba884e26c81559817ca0925", size = 53799 }, + { url = "https://files.pythonhosted.org/packages/53/18/75ddc64c3f63988f5a1d7e10fb204ffe5762bc663f8023f18ecaf31a332e/wrapt-1.17.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fc7cb4c1c744f8c05cd5f9438a3caa6ab94ce8344e952d7c45a8ed59dd88392", size = 38821 }, + { url = "https://files.pythonhosted.org/packages/48/2a/97928387d6ed1c1ebbfd4efc4133a0633546bec8481a2dd5ec961313a1c7/wrapt-1.17.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8fdbdb757d5390f7c675e558fd3186d590973244fab0c5fe63d373ade3e99d40", size = 38919 }, + { url = "https://files.pythonhosted.org/packages/73/54/3bfe5a1febbbccb7a2f77de47b989c0b85ed3a6a41614b104204a788c20e/wrapt-1.17.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bb1d0dbf99411f3d871deb6faa9aabb9d4e744d67dcaaa05399af89d847a91d", size = 88721 }, + { url = "https://files.pythonhosted.org/packages/25/cb/7262bc1b0300b4b64af50c2720ef958c2c1917525238d661c3e9a2b71b7b/wrapt-1.17.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d18a4865f46b8579d44e4fe1e2bcbc6472ad83d98e22a26c963d46e4c125ef0b", size = 80899 }, + { url = "https://files.pythonhosted.org/packages/2a/5a/04cde32b07a7431d4ed0553a76fdb7a61270e78c5fd5a603e190ac389f14/wrapt-1.17.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc570b5f14a79734437cb7b0500376b6b791153314986074486e0b0fa8d71d98", size = 89222 }, + { url = "https://files.pythonhosted.org/packages/09/28/2e45a4f4771fcfb109e244d5dbe54259e970362a311b67a965555ba65026/wrapt-1.17.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6d9187b01bebc3875bac9b087948a2bccefe464a7d8f627cf6e48b1bbae30f82", size = 86707 }, + { url = "https://files.pythonhosted.org/packages/c6/d2/dcb56bf5f32fcd4bd9aacc77b50a539abdd5b6536872413fd3f428b21bed/wrapt-1.17.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9e8659775f1adf02eb1e6f109751268e493c73716ca5761f8acb695e52a756ae", size = 79685 }, + { url = "https://files.pythonhosted.org/packages/80/4e/eb8b353e36711347893f502ce91c770b0b0929f8f0bed2670a6856e667a9/wrapt-1.17.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e8b2816ebef96d83657b56306152a93909a83f23994f4b30ad4573b00bd11bb9", size = 87567 }, + { url = "https://files.pythonhosted.org/packages/17/27/4fe749a54e7fae6e7146f1c7d914d28ef599dacd4416566c055564080fe2/wrapt-1.17.2-cp312-cp312-win32.whl", hash = "sha256:468090021f391fe0056ad3e807e3d9034e0fd01adcd3bdfba977b6fdf4213ea9", size = 36672 }, + { url = "https://files.pythonhosted.org/packages/15/06/1dbf478ea45c03e78a6a8c4be4fdc3c3bddea5c8de8a93bc971415e47f0f/wrapt-1.17.2-cp312-cp312-win_amd64.whl", hash = "sha256:ec89ed91f2fa8e3f52ae53cd3cf640d6feff92ba90d62236a81e4e563ac0e991", size = 38865 }, + { url = "https://files.pythonhosted.org/packages/ce/b9/0ffd557a92f3b11d4c5d5e0c5e4ad057bd9eb8586615cdaf901409920b14/wrapt-1.17.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:6ed6ffac43aecfe6d86ec5b74b06a5be33d5bb9243d055141e8cabb12aa08125", size = 53800 }, + { url = "https://files.pythonhosted.org/packages/c0/ef/8be90a0b7e73c32e550c73cfb2fa09db62234227ece47b0e80a05073b375/wrapt-1.17.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:35621ae4c00e056adb0009f8e86e28eb4a41a4bfa8f9bfa9fca7d343fe94f998", size = 38824 }, + { url = "https://files.pythonhosted.org/packages/36/89/0aae34c10fe524cce30fe5fc433210376bce94cf74d05b0d68344c8ba46e/wrapt-1.17.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a604bf7a053f8362d27eb9fefd2097f82600b856d5abe996d623babd067b1ab5", size = 38920 }, + { url = "https://files.pythonhosted.org/packages/3b/24/11c4510de906d77e0cfb5197f1b1445d4fec42c9a39ea853d482698ac681/wrapt-1.17.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cbabee4f083b6b4cd282f5b817a867cf0b1028c54d445b7ec7cfe6505057cf8", size = 88690 }, + { url = "https://files.pythonhosted.org/packages/71/d7/cfcf842291267bf455b3e266c0c29dcb675b5540ee8b50ba1699abf3af45/wrapt-1.17.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49703ce2ddc220df165bd2962f8e03b84c89fee2d65e1c24a7defff6f988f4d6", size = 80861 }, + { url = "https://files.pythonhosted.org/packages/d5/66/5d973e9f3e7370fd686fb47a9af3319418ed925c27d72ce16b791231576d/wrapt-1.17.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8112e52c5822fc4253f3901b676c55ddf288614dc7011634e2719718eaa187dc", size = 89174 }, + { url = "https://files.pythonhosted.org/packages/a7/d3/8e17bb70f6ae25dabc1aaf990f86824e4fd98ee9cadf197054e068500d27/wrapt-1.17.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9fee687dce376205d9a494e9c121e27183b2a3df18037f89d69bd7b35bcf59e2", size = 86721 }, + { url = "https://files.pythonhosted.org/packages/6f/54/f170dfb278fe1c30d0ff864513cff526d624ab8de3254b20abb9cffedc24/wrapt-1.17.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:18983c537e04d11cf027fbb60a1e8dfd5190e2b60cc27bc0808e653e7b218d1b", size = 79763 }, + { url = "https://files.pythonhosted.org/packages/4a/98/de07243751f1c4a9b15c76019250210dd3486ce098c3d80d5f729cba029c/wrapt-1.17.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:703919b1633412ab54bcf920ab388735832fdcb9f9a00ae49387f0fe67dad504", size = 87585 }, + { url = "https://files.pythonhosted.org/packages/f9/f0/13925f4bd6548013038cdeb11ee2cbd4e37c30f8bfd5db9e5a2a370d6e20/wrapt-1.17.2-cp313-cp313-win32.whl", hash = "sha256:abbb9e76177c35d4e8568e58650aa6926040d6a9f6f03435b7a522bf1c487f9a", size = 36676 }, + { url = "https://files.pythonhosted.org/packages/bf/ae/743f16ef8c2e3628df3ddfd652b7d4c555d12c84b53f3d8218498f4ade9b/wrapt-1.17.2-cp313-cp313-win_amd64.whl", hash = "sha256:69606d7bb691b50a4240ce6b22ebb319c1cfb164e5f6569835058196e0f3a845", size = 38871 }, + { url = "https://files.pythonhosted.org/packages/3d/bc/30f903f891a82d402ffb5fda27ec1d621cc97cb74c16fea0b6141f1d4e87/wrapt-1.17.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:4a721d3c943dae44f8e243b380cb645a709ba5bd35d3ad27bc2ed947e9c68192", size = 56312 }, + { url = "https://files.pythonhosted.org/packages/8a/04/c97273eb491b5f1c918857cd26f314b74fc9b29224521f5b83f872253725/wrapt-1.17.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:766d8bbefcb9e00c3ac3b000d9acc51f1b399513f44d77dfe0eb026ad7c9a19b", size = 40062 }, + { url = "https://files.pythonhosted.org/packages/4e/ca/3b7afa1eae3a9e7fefe499db9b96813f41828b9fdb016ee836c4c379dadb/wrapt-1.17.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e496a8ce2c256da1eb98bd15803a79bee00fc351f5dfb9ea82594a3f058309e0", size = 40155 }, + { url = "https://files.pythonhosted.org/packages/89/be/7c1baed43290775cb9030c774bc53c860db140397047cc49aedaf0a15477/wrapt-1.17.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d615e4fe22f4ad3528448c193b218e077656ca9ccb22ce2cb20db730f8d306", size = 113471 }, + { url = "https://files.pythonhosted.org/packages/32/98/4ed894cf012b6d6aae5f5cc974006bdeb92f0241775addad3f8cd6ab71c8/wrapt-1.17.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a5aaeff38654462bc4b09023918b7f21790efb807f54c000a39d41d69cf552cb", size = 101208 }, + { url = "https://files.pythonhosted.org/packages/ea/fd/0c30f2301ca94e655e5e057012e83284ce8c545df7661a78d8bfca2fac7a/wrapt-1.17.2-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a7d15bbd2bc99e92e39f49a04653062ee6085c0e18b3b7512a4f2fe91f2d681", size = 109339 }, + { url = "https://files.pythonhosted.org/packages/75/56/05d000de894c4cfcb84bcd6b1df6214297b8089a7bd324c21a4765e49b14/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:e3890b508a23299083e065f435a492b5435eba6e304a7114d2f919d400888cc6", size = 110232 }, + { url = "https://files.pythonhosted.org/packages/53/f8/c3f6b2cf9b9277fb0813418e1503e68414cd036b3b099c823379c9575e6d/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:8c8b293cd65ad716d13d8dd3624e42e5a19cc2a2f1acc74b30c2c13f15cb61a6", size = 100476 }, + { url = "https://files.pythonhosted.org/packages/a7/b1/0bb11e29aa5139d90b770ebbfa167267b1fc548d2302c30c8f7572851738/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4c82b8785d98cdd9fed4cac84d765d234ed3251bd6afe34cb7ac523cb93e8b4f", size = 106377 }, + { url = "https://files.pythonhosted.org/packages/6a/e1/0122853035b40b3f333bbb25f1939fc1045e21dd518f7f0922b60c156f7c/wrapt-1.17.2-cp313-cp313t-win32.whl", hash = "sha256:13e6afb7fe71fe7485a4550a8844cc9ffbe263c0f1a1eea569bc7091d4898555", size = 37986 }, + { url = "https://files.pythonhosted.org/packages/09/5e/1655cf481e079c1f22d0cabdd4e51733679932718dc23bf2db175f329b76/wrapt-1.17.2-cp313-cp313t-win_amd64.whl", hash = "sha256:eaf675418ed6b3b31c7a989fd007fa7c3be66ce14e5c3b27336383604c9da85c", size = 40750 }, + { url = "https://files.pythonhosted.org/packages/2d/82/f56956041adef78f849db6b289b282e72b55ab8045a75abad81898c28d19/wrapt-1.17.2-py3-none-any.whl", hash = "sha256:b18f2d1533a71f069c7f82d524a52599053d4c7166e9dd374ae2136b7f40f7c8", size = 23594 }, ] [[package]] name = "xmltodict" version = "0.14.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/50/05/51dcca9a9bf5e1bce52582683ce50980bcadbc4fa5143b9f2b19ab99958f/xmltodict-0.14.2.tar.gz", hash = "sha256:201e7c28bb210e374999d1dde6382923ab0ed1a8a5faeece48ab525b7810a553", size = 51942, upload-time = "2024-10-16T06:10:29.683Z" } +sdist = { url = "https://files.pythonhosted.org/packages/50/05/51dcca9a9bf5e1bce52582683ce50980bcadbc4fa5143b9f2b19ab99958f/xmltodict-0.14.2.tar.gz", hash = "sha256:201e7c28bb210e374999d1dde6382923ab0ed1a8a5faeece48ab525b7810a553", size = 51942 } wheels = [ - { url = "https://files.pythonhosted.org/packages/d6/45/fc303eb433e8a2a271739c98e953728422fa61a3c1f36077a49e395c972e/xmltodict-0.14.2-py2.py3-none-any.whl", hash = "sha256:20cc7d723ed729276e808f26fb6b3599f786cbc37e06c65e192ba77c40f20aac", size = 9981, upload-time = "2024-10-16T06:10:27.649Z" }, + { url = "https://files.pythonhosted.org/packages/d6/45/fc303eb433e8a2a271739c98e953728422fa61a3c1f36077a49e395c972e/xmltodict-0.14.2-py2.py3-none-any.whl", hash = "sha256:20cc7d723ed729276e808f26fb6b3599f786cbc37e06c65e192ba77c40f20aac", size = 9981 }, ] [[package]] name = "zipp" version = "3.22.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/12/b6/7b3d16792fdf94f146bed92be90b4eb4563569eca91513c8609aebf0c167/zipp-3.22.0.tar.gz", hash = "sha256:dd2f28c3ce4bc67507bfd3781d21b7bb2be31103b51a4553ad7d90b84e57ace5", size = 25257, upload-time = "2025-05-26T14:46:32.217Z" } +sdist = { url = "https://files.pythonhosted.org/packages/12/b6/7b3d16792fdf94f146bed92be90b4eb4563569eca91513c8609aebf0c167/zipp-3.22.0.tar.gz", hash = "sha256:dd2f28c3ce4bc67507bfd3781d21b7bb2be31103b51a4553ad7d90b84e57ace5", size = 25257 } wheels = [ - { url = "https://files.pythonhosted.org/packages/ad/da/f64669af4cae46f17b90798a827519ce3737d31dbafad65d391e49643dc4/zipp-3.22.0-py3-none-any.whl", hash = "sha256:fe208f65f2aca48b81f9e6fd8cf7b8b32c26375266b009b413d45306b6148343", size = 9796, upload-time = "2025-05-26T14:46:30.775Z" }, + { url = "https://files.pythonhosted.org/packages/ad/da/f64669af4cae46f17b90798a827519ce3737d31dbafad65d391e49643dc4/zipp-3.22.0-py3-none-any.whl", hash = "sha256:fe208f65f2aca48b81f9e6fd8cf7b8b32c26375266b009b413d45306b6148343", size = 9796 }, ] diff --git a/unicorn_contracts/pyproject.toml b/unicorn_contracts/pyproject.toml index 8cb837c..6b3a27b 100644 --- a/unicorn_contracts/pyproject.toml +++ b/unicorn_contracts/pyproject.toml @@ -30,3 +30,13 @@ dev = [ [tool.setuptools] package-dir = {"contracts_service" = "src"} packages = ["contracts_service"] + +[tool.pytest.ini_options] +minversion = "7.0" +addopts = "-ra -vv -W ignore::UserWarning" +testpaths = ["tests/unit", "tests/integration"] +pythonpath = ["."] + +[build-system] +requires = ["uv_build"] +build-backend = "uv_build" \ No newline at end of file diff --git a/unicorn_contracts/uv.lock b/unicorn_contracts/uv.lock index 18ac214..5b9c5e7 100644 --- a/unicorn_contracts/uv.lock +++ b/unicorn_contracts/uv.lock @@ -1,32 +1,32 @@ version = 1 -revision = 2 +revision = 1 requires-python = ">=3.12" [[package]] name = "annotated-types" version = "0.7.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload-time = "2024-05-20T21:33:25.928Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081 } wheels = [ - { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" }, + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643 }, ] [[package]] name = "arnparse" version = "0.0.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bd/42/949284e998282b167e273872fa9c39b06d41a6055163c30aa2daaeee76a0/arnparse-0.0.2.tar.gz", hash = "sha256:cb87f17200d07121108a9085d4a09cc69a55582647776b9a917b0b1f279db8f8", size = 2677, upload-time = "2019-03-12T21:17:04.586Z" } +sdist = { url = "https://files.pythonhosted.org/packages/bd/42/949284e998282b167e273872fa9c39b06d41a6055163c30aa2daaeee76a0/arnparse-0.0.2.tar.gz", hash = "sha256:cb87f17200d07121108a9085d4a09cc69a55582647776b9a917b0b1f279db8f8", size = 2677 } wheels = [ - { url = "https://files.pythonhosted.org/packages/57/6f/630bedeb32964e99661990811a66389201b62c047b35c17e332dad9be2a3/arnparse-0.0.2-py2.py3-none-any.whl", hash = "sha256:b0906734e4b8f19e39b1e32944c6cd6274b6da90c066a83882ac7a11d27553e0", size = 2904, upload-time = "2019-03-12T21:17:03.039Z" }, + { url = "https://files.pythonhosted.org/packages/57/6f/630bedeb32964e99661990811a66389201b62c047b35c17e332dad9be2a3/arnparse-0.0.2-py2.py3-none-any.whl", hash = "sha256:b0906734e4b8f19e39b1e32944c6cd6274b6da90c066a83882ac7a11d27553e0", size = 2904 }, ] [[package]] name = "attrs" version = "25.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b", size = 812032, upload-time = "2025-03-13T11:10:22.779Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b", size = 812032 } wheels = [ - { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815, upload-time = "2025-03-13T11:10:21.14Z" }, + { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815 }, ] [[package]] @@ -39,9 +39,9 @@ dependencies = [ { name = "cryptography" }, { name = "wrapt" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/45/ff/fefbcc1cee829f3ab188dbcb5069862f61b64ed82a6205314f1ab7bb90e6/aws-encryption-sdk-4.0.1.tar.gz", hash = "sha256:7320dc4cf8d8d5a9b4c88a343be93835da18756e05308d3536554be0ca2889a5", size = 260219, upload-time = "2025-03-27T17:24:54.669Z" } +sdist = { url = "https://files.pythonhosted.org/packages/45/ff/fefbcc1cee829f3ab188dbcb5069862f61b64ed82a6205314f1ab7bb90e6/aws-encryption-sdk-4.0.1.tar.gz", hash = "sha256:7320dc4cf8d8d5a9b4c88a343be93835da18756e05308d3536554be0ca2889a5", size = 260219 } wheels = [ - { url = "https://files.pythonhosted.org/packages/66/a5/82956e2111b169c644633212da2a5f84dd9d953b9dd146ccfccfb8a46290/aws_encryption_sdk-4.0.1-py2.py3-none-any.whl", hash = "sha256:5c2ca9a207e1732542a1370ac7efd630ab6e04d05f98e68badf20927eb95ed1d", size = 99127, upload-time = "2025-03-27T17:24:50.903Z" }, + { url = "https://files.pythonhosted.org/packages/66/a5/82956e2111b169c644633212da2a5f84dd9d953b9dd146ccfccfb8a46290/aws_encryption_sdk-4.0.1-py2.py3-none-any.whl", hash = "sha256:5c2ca9a207e1732542a1370ac7efd630ab6e04d05f98e68badf20927eb95ed1d", size = 99127 }, ] [[package]] @@ -52,9 +52,9 @@ dependencies = [ { name = "jmespath" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fd/2b/068efd467c0866e2272c5de7525ddb02ff4e694f71245c8d2a83d4948f23/aws_lambda_powertools-3.13.0.tar.gz", hash = "sha256:99dc11ac6eb81564f599fdd85ba79069f7740ae3481c99bca2cee8abb7c95543", size = 672664, upload-time = "2025-05-20T07:35:30.254Z" } +sdist = { url = "https://files.pythonhosted.org/packages/fd/2b/068efd467c0866e2272c5de7525ddb02ff4e694f71245c8d2a83d4948f23/aws_lambda_powertools-3.13.0.tar.gz", hash = "sha256:99dc11ac6eb81564f599fdd85ba79069f7740ae3481c99bca2cee8abb7c95543", size = 672664 } wheels = [ - { url = "https://files.pythonhosted.org/packages/98/cd/2241ff877528c66ee11ea636684c4242ceeadb6459a33b08507a40151414/aws_lambda_powertools-3.13.0-py3-none-any.whl", hash = "sha256:9df045f4c3ff944176655813dbff8c1160e056babf5e6d71d4e18c0003818f2e", size = 802546, upload-time = "2025-05-20T07:35:27.767Z" }, + { url = "https://files.pythonhosted.org/packages/98/cd/2241ff877528c66ee11ea636684c4242ceeadb6459a33b08507a40151414/aws_lambda_powertools-3.13.0-py3-none-any.whl", hash = "sha256:9df045f4c3ff944176655813dbff8c1160e056babf5e6d71d4e18c0003818f2e", size = 802546 }, ] [package.optional-dependencies] @@ -78,9 +78,9 @@ dependencies = [ { name = "botocore" }, { name = "wrapt" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e0/6c/8e7fb2a45f20afc5c19d52807b560793fb48b0feca1de7de116b62a7893e/aws_xray_sdk-2.14.0.tar.gz", hash = "sha256:aab843c331af9ab9ba5cefb3a303832a19db186140894a523edafc024cc0493c", size = 93976, upload-time = "2024-06-04T22:11:38.124Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e0/6c/8e7fb2a45f20afc5c19d52807b560793fb48b0feca1de7de116b62a7893e/aws_xray_sdk-2.14.0.tar.gz", hash = "sha256:aab843c331af9ab9ba5cefb3a303832a19db186140894a523edafc024cc0493c", size = 93976 } wheels = [ - { url = "https://files.pythonhosted.org/packages/41/69/b417833a8926fa5491e5346d7c233bf7d8a9b12ba1f4ef41ccea2494000c/aws_xray_sdk-2.14.0-py2.py3-none-any.whl", hash = "sha256:cfbe6feea3d26613a2a869d14c9246a844285c97087ad8f296f901633554ad94", size = 101922, upload-time = "2024-06-04T22:12:25.729Z" }, + { url = "https://files.pythonhosted.org/packages/41/69/b417833a8926fa5491e5346d7c233bf7d8a9b12ba1f4ef41ccea2494000c/aws_xray_sdk-2.14.0-py2.py3-none-any.whl", hash = "sha256:cfbe6feea3d26613a2a869d14c9246a844285c97087ad8f296f901633554ad94", size = 101922 }, ] [[package]] @@ -92,9 +92,9 @@ dependencies = [ { name = "jmespath" }, { name = "s3transfer" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/83/7d/cdd55376fe9b9102a843649cbd9cba38d49bfd570a89042c090550b23bf5/boto3-1.38.24.tar.gz", hash = "sha256:abdb8c760543e9c22026320e62e2934762b0c4ac4f42e8ea2a756f2d489b3135", size = 111854, upload-time = "2025-05-27T21:26:22.343Z" } +sdist = { url = "https://files.pythonhosted.org/packages/83/7d/cdd55376fe9b9102a843649cbd9cba38d49bfd570a89042c090550b23bf5/boto3-1.38.24.tar.gz", hash = "sha256:abdb8c760543e9c22026320e62e2934762b0c4ac4f42e8ea2a756f2d489b3135", size = 111854 } wheels = [ - { url = "https://files.pythonhosted.org/packages/2e/cc/78cf9f63bfa84d3f0ac4d5a527a3d141ede40554fd4718ec2634dee08683/boto3-1.38.24-py3-none-any.whl", hash = "sha256:1f95ec3ac88ae6381fa0409e4c2ad0a41f0caf5fd6d8ef45a9525406a3f58b18", size = 139938, upload-time = "2025-05-27T21:26:18.601Z" }, + { url = "https://files.pythonhosted.org/packages/2e/cc/78cf9f63bfa84d3f0ac4d5a527a3d141ede40554fd4718ec2634dee08683/boto3-1.38.24-py3-none-any.whl", hash = "sha256:1f95ec3ac88ae6381fa0409e4c2ad0a41f0caf5fd6d8ef45a9525406a3f58b18", size = 139938 }, ] [[package]] @@ -106,18 +106,18 @@ dependencies = [ { name = "python-dateutil" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/95/1b/1e38f24245e1b0461470176335bc0a443050459e9e64a0d881244a0a8a5e/botocore-1.38.24.tar.gz", hash = "sha256:43563d5c2dfd56ebbcd9e25f482fc45000bfaec5966b26c77b331bd340c46376", size = 13909191, upload-time = "2025-05-27T21:26:08.818Z" } +sdist = { url = "https://files.pythonhosted.org/packages/95/1b/1e38f24245e1b0461470176335bc0a443050459e9e64a0d881244a0a8a5e/botocore-1.38.24.tar.gz", hash = "sha256:43563d5c2dfd56ebbcd9e25f482fc45000bfaec5966b26c77b331bd340c46376", size = 13909191 } wheels = [ - { url = "https://files.pythonhosted.org/packages/6c/58/197221be8faf51ae4fb72c227601db468ef7981c107efbff27d794445942/botocore-1.38.24-py3-none-any.whl", hash = "sha256:5901667b96d3a8603479879ab097560216cdc4c2918d433fc6509555d0ada29c", size = 13570245, upload-time = "2025-05-27T21:26:04.669Z" }, + { url = "https://files.pythonhosted.org/packages/6c/58/197221be8faf51ae4fb72c227601db468ef7981c107efbff27d794445942/botocore-1.38.24-py3-none-any.whl", hash = "sha256:5901667b96d3a8603479879ab097560216cdc4c2918d433fc6509555d0ada29c", size = 13570245 }, ] [[package]] name = "certifi" version = "2025.4.26" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e8/9e/c05b3920a3b7d20d3d3310465f50348e5b3694f4f88c6daf736eef3024c4/certifi-2025.4.26.tar.gz", hash = "sha256:0a816057ea3cdefcef70270d2c515e4506bbc954f417fa5ade2021213bb8f0c6", size = 160705, upload-time = "2025-04-26T02:12:29.51Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e8/9e/c05b3920a3b7d20d3d3310465f50348e5b3694f4f88c6daf736eef3024c4/certifi-2025.4.26.tar.gz", hash = "sha256:0a816057ea3cdefcef70270d2c515e4506bbc954f417fa5ade2021213bb8f0c6", size = 160705 } wheels = [ - { url = "https://files.pythonhosted.org/packages/4a/7e/3db2bd1b1f9e95f7cddca6d6e75e2f2bd9f51b1246e546d88addca0106bd/certifi-2025.4.26-py3-none-any.whl", hash = "sha256:30350364dfe371162649852c63336a15c70c6510c2ad5015b21c2345311805f3", size = 159618, upload-time = "2025-04-26T02:12:27.662Z" }, + { url = "https://files.pythonhosted.org/packages/4a/7e/3db2bd1b1f9e95f7cddca6d6e75e2f2bd9f51b1246e546d88addca0106bd/certifi-2025.4.26-py3-none-any.whl", hash = "sha256:30350364dfe371162649852c63336a15c70c6510c2ad5015b21c2345311805f3", size = 159618 }, ] [[package]] @@ -127,80 +127,80 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pycparser" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621, upload-time = "2024-09-04T20:45:21.852Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5a/84/e94227139ee5fb4d600a7a4927f322e1d4aea6fdc50bd3fca8493caba23f/cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4", size = 183178, upload-time = "2024-09-04T20:44:12.232Z" }, - { url = "https://files.pythonhosted.org/packages/da/ee/fb72c2b48656111c4ef27f0f91da355e130a923473bf5ee75c5643d00cca/cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c", size = 178840, upload-time = "2024-09-04T20:44:13.739Z" }, - { url = "https://files.pythonhosted.org/packages/cc/b6/db007700f67d151abadf508cbfd6a1884f57eab90b1bb985c4c8c02b0f28/cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36", size = 454803, upload-time = "2024-09-04T20:44:15.231Z" }, - { url = "https://files.pythonhosted.org/packages/1a/df/f8d151540d8c200eb1c6fba8cd0dfd40904f1b0682ea705c36e6c2e97ab3/cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5", size = 478850, upload-time = "2024-09-04T20:44:17.188Z" }, - { url = "https://files.pythonhosted.org/packages/28/c0/b31116332a547fd2677ae5b78a2ef662dfc8023d67f41b2a83f7c2aa78b1/cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff", size = 485729, upload-time = "2024-09-04T20:44:18.688Z" }, - { url = "https://files.pythonhosted.org/packages/91/2b/9a1ddfa5c7f13cab007a2c9cc295b70fbbda7cb10a286aa6810338e60ea1/cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99", size = 471256, upload-time = "2024-09-04T20:44:20.248Z" }, - { url = "https://files.pythonhosted.org/packages/b2/d5/da47df7004cb17e4955df6a43d14b3b4ae77737dff8bf7f8f333196717bf/cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93", size = 479424, upload-time = "2024-09-04T20:44:21.673Z" }, - { url = "https://files.pythonhosted.org/packages/0b/ac/2a28bcf513e93a219c8a4e8e125534f4f6db03e3179ba1c45e949b76212c/cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3", size = 484568, upload-time = "2024-09-04T20:44:23.245Z" }, - { url = "https://files.pythonhosted.org/packages/d4/38/ca8a4f639065f14ae0f1d9751e70447a261f1a30fa7547a828ae08142465/cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8", size = 488736, upload-time = "2024-09-04T20:44:24.757Z" }, - { url = "https://files.pythonhosted.org/packages/86/c5/28b2d6f799ec0bdecf44dced2ec5ed43e0eb63097b0f58c293583b406582/cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", size = 172448, upload-time = "2024-09-04T20:44:26.208Z" }, - { url = "https://files.pythonhosted.org/packages/50/b9/db34c4755a7bd1cb2d1603ac3863f22bcecbd1ba29e5ee841a4bc510b294/cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", size = 181976, upload-time = "2024-09-04T20:44:27.578Z" }, - { url = "https://files.pythonhosted.org/packages/8d/f8/dd6c246b148639254dad4d6803eb6a54e8c85c6e11ec9df2cffa87571dbe/cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e", size = 182989, upload-time = "2024-09-04T20:44:28.956Z" }, - { url = "https://files.pythonhosted.org/packages/8b/f1/672d303ddf17c24fc83afd712316fda78dc6fce1cd53011b839483e1ecc8/cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2", size = 178802, upload-time = "2024-09-04T20:44:30.289Z" }, - { url = "https://files.pythonhosted.org/packages/0e/2d/eab2e858a91fdff70533cab61dcff4a1f55ec60425832ddfdc9cd36bc8af/cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3", size = 454792, upload-time = "2024-09-04T20:44:32.01Z" }, - { url = "https://files.pythonhosted.org/packages/75/b2/fbaec7c4455c604e29388d55599b99ebcc250a60050610fadde58932b7ee/cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683", size = 478893, upload-time = "2024-09-04T20:44:33.606Z" }, - { url = "https://files.pythonhosted.org/packages/4f/b7/6e4a2162178bf1935c336d4da8a9352cccab4d3a5d7914065490f08c0690/cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5", size = 485810, upload-time = "2024-09-04T20:44:35.191Z" }, - { url = "https://files.pythonhosted.org/packages/c7/8a/1d0e4a9c26e54746dc08c2c6c037889124d4f59dffd853a659fa545f1b40/cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4", size = 471200, upload-time = "2024-09-04T20:44:36.743Z" }, - { url = "https://files.pythonhosted.org/packages/26/9f/1aab65a6c0db35f43c4d1b4f580e8df53914310afc10ae0397d29d697af4/cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd", size = 479447, upload-time = "2024-09-04T20:44:38.492Z" }, - { url = "https://files.pythonhosted.org/packages/5f/e4/fb8b3dd8dc0e98edf1135ff067ae070bb32ef9d509d6cb0f538cd6f7483f/cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed", size = 484358, upload-time = "2024-09-04T20:44:40.046Z" }, - { url = "https://files.pythonhosted.org/packages/f1/47/d7145bf2dc04684935d57d67dff9d6d795b2ba2796806bb109864be3a151/cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9", size = 488469, upload-time = "2024-09-04T20:44:41.616Z" }, - { url = "https://files.pythonhosted.org/packages/bf/ee/f94057fa6426481d663b88637a9a10e859e492c73d0384514a17d78ee205/cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d", size = 172475, upload-time = "2024-09-04T20:44:43.733Z" }, - { url = "https://files.pythonhosted.org/packages/7c/fc/6a8cb64e5f0324877d503c854da15d76c1e50eb722e320b15345c4d0c6de/cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a", size = 182009, upload-time = "2024-09-04T20:44:45.309Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/84/e94227139ee5fb4d600a7a4927f322e1d4aea6fdc50bd3fca8493caba23f/cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4", size = 183178 }, + { url = "https://files.pythonhosted.org/packages/da/ee/fb72c2b48656111c4ef27f0f91da355e130a923473bf5ee75c5643d00cca/cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c", size = 178840 }, + { url = "https://files.pythonhosted.org/packages/cc/b6/db007700f67d151abadf508cbfd6a1884f57eab90b1bb985c4c8c02b0f28/cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36", size = 454803 }, + { url = "https://files.pythonhosted.org/packages/1a/df/f8d151540d8c200eb1c6fba8cd0dfd40904f1b0682ea705c36e6c2e97ab3/cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5", size = 478850 }, + { url = "https://files.pythonhosted.org/packages/28/c0/b31116332a547fd2677ae5b78a2ef662dfc8023d67f41b2a83f7c2aa78b1/cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff", size = 485729 }, + { url = "https://files.pythonhosted.org/packages/91/2b/9a1ddfa5c7f13cab007a2c9cc295b70fbbda7cb10a286aa6810338e60ea1/cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99", size = 471256 }, + { url = "https://files.pythonhosted.org/packages/b2/d5/da47df7004cb17e4955df6a43d14b3b4ae77737dff8bf7f8f333196717bf/cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93", size = 479424 }, + { url = "https://files.pythonhosted.org/packages/0b/ac/2a28bcf513e93a219c8a4e8e125534f4f6db03e3179ba1c45e949b76212c/cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3", size = 484568 }, + { url = "https://files.pythonhosted.org/packages/d4/38/ca8a4f639065f14ae0f1d9751e70447a261f1a30fa7547a828ae08142465/cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8", size = 488736 }, + { url = "https://files.pythonhosted.org/packages/86/c5/28b2d6f799ec0bdecf44dced2ec5ed43e0eb63097b0f58c293583b406582/cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", size = 172448 }, + { url = "https://files.pythonhosted.org/packages/50/b9/db34c4755a7bd1cb2d1603ac3863f22bcecbd1ba29e5ee841a4bc510b294/cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", size = 181976 }, + { url = "https://files.pythonhosted.org/packages/8d/f8/dd6c246b148639254dad4d6803eb6a54e8c85c6e11ec9df2cffa87571dbe/cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e", size = 182989 }, + { url = "https://files.pythonhosted.org/packages/8b/f1/672d303ddf17c24fc83afd712316fda78dc6fce1cd53011b839483e1ecc8/cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2", size = 178802 }, + { url = "https://files.pythonhosted.org/packages/0e/2d/eab2e858a91fdff70533cab61dcff4a1f55ec60425832ddfdc9cd36bc8af/cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3", size = 454792 }, + { url = "https://files.pythonhosted.org/packages/75/b2/fbaec7c4455c604e29388d55599b99ebcc250a60050610fadde58932b7ee/cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683", size = 478893 }, + { url = "https://files.pythonhosted.org/packages/4f/b7/6e4a2162178bf1935c336d4da8a9352cccab4d3a5d7914065490f08c0690/cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5", size = 485810 }, + { url = "https://files.pythonhosted.org/packages/c7/8a/1d0e4a9c26e54746dc08c2c6c037889124d4f59dffd853a659fa545f1b40/cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4", size = 471200 }, + { url = "https://files.pythonhosted.org/packages/26/9f/1aab65a6c0db35f43c4d1b4f580e8df53914310afc10ae0397d29d697af4/cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd", size = 479447 }, + { url = "https://files.pythonhosted.org/packages/5f/e4/fb8b3dd8dc0e98edf1135ff067ae070bb32ef9d509d6cb0f538cd6f7483f/cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed", size = 484358 }, + { url = "https://files.pythonhosted.org/packages/f1/47/d7145bf2dc04684935d57d67dff9d6d795b2ba2796806bb109864be3a151/cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9", size = 488469 }, + { url = "https://files.pythonhosted.org/packages/bf/ee/f94057fa6426481d663b88637a9a10e859e492c73d0384514a17d78ee205/cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d", size = 172475 }, + { url = "https://files.pythonhosted.org/packages/7c/fc/6a8cb64e5f0324877d503c854da15d76c1e50eb722e320b15345c4d0c6de/cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a", size = 182009 }, ] [[package]] name = "charset-normalizer" version = "3.4.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e4/33/89c2ced2b67d1c2a61c19c6751aa8902d46ce3dacb23600a283619f5a12d/charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63", size = 126367, upload-time = "2025-05-02T08:34:42.01Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d7/a4/37f4d6035c89cac7930395a35cc0f1b872e652eaafb76a6075943754f095/charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7", size = 199936, upload-time = "2025-05-02T08:32:33.712Z" }, - { url = "https://files.pythonhosted.org/packages/ee/8a/1a5e33b73e0d9287274f899d967907cd0bf9c343e651755d9307e0dbf2b3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3", size = 143790, upload-time = "2025-05-02T08:32:35.768Z" }, - { url = "https://files.pythonhosted.org/packages/66/52/59521f1d8e6ab1482164fa21409c5ef44da3e9f653c13ba71becdd98dec3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a", size = 153924, upload-time = "2025-05-02T08:32:37.284Z" }, - { url = "https://files.pythonhosted.org/packages/86/2d/fb55fdf41964ec782febbf33cb64be480a6b8f16ded2dbe8db27a405c09f/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214", size = 146626, upload-time = "2025-05-02T08:32:38.803Z" }, - { url = "https://files.pythonhosted.org/packages/8c/73/6ede2ec59bce19b3edf4209d70004253ec5f4e319f9a2e3f2f15601ed5f7/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a", size = 148567, upload-time = "2025-05-02T08:32:40.251Z" }, - { url = "https://files.pythonhosted.org/packages/09/14/957d03c6dc343c04904530b6bef4e5efae5ec7d7990a7cbb868e4595ee30/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd", size = 150957, upload-time = "2025-05-02T08:32:41.705Z" }, - { url = "https://files.pythonhosted.org/packages/0d/c8/8174d0e5c10ccebdcb1b53cc959591c4c722a3ad92461a273e86b9f5a302/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981", size = 145408, upload-time = "2025-05-02T08:32:43.709Z" }, - { url = "https://files.pythonhosted.org/packages/58/aa/8904b84bc8084ac19dc52feb4f5952c6df03ffb460a887b42615ee1382e8/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c", size = 153399, upload-time = "2025-05-02T08:32:46.197Z" }, - { url = "https://files.pythonhosted.org/packages/c2/26/89ee1f0e264d201cb65cf054aca6038c03b1a0c6b4ae998070392a3ce605/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b", size = 156815, upload-time = "2025-05-02T08:32:48.105Z" }, - { url = "https://files.pythonhosted.org/packages/fd/07/68e95b4b345bad3dbbd3a8681737b4338ff2c9df29856a6d6d23ac4c73cb/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d", size = 154537, upload-time = "2025-05-02T08:32:49.719Z" }, - { url = "https://files.pythonhosted.org/packages/77/1a/5eefc0ce04affb98af07bc05f3bac9094513c0e23b0562d64af46a06aae4/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f", size = 149565, upload-time = "2025-05-02T08:32:51.404Z" }, - { url = "https://files.pythonhosted.org/packages/37/a0/2410e5e6032a174c95e0806b1a6585eb21e12f445ebe239fac441995226a/charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c", size = 98357, upload-time = "2025-05-02T08:32:53.079Z" }, - { url = "https://files.pythonhosted.org/packages/6c/4f/c02d5c493967af3eda9c771ad4d2bbc8df6f99ddbeb37ceea6e8716a32bc/charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e", size = 105776, upload-time = "2025-05-02T08:32:54.573Z" }, - { url = "https://files.pythonhosted.org/packages/ea/12/a93df3366ed32db1d907d7593a94f1fe6293903e3e92967bebd6950ed12c/charset_normalizer-3.4.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:926ca93accd5d36ccdabd803392ddc3e03e6d4cd1cf17deff3b989ab8e9dbcf0", size = 199622, upload-time = "2025-05-02T08:32:56.363Z" }, - { url = "https://files.pythonhosted.org/packages/04/93/bf204e6f344c39d9937d3c13c8cd5bbfc266472e51fc8c07cb7f64fcd2de/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eba9904b0f38a143592d9fc0e19e2df0fa2e41c3c3745554761c5f6447eedabf", size = 143435, upload-time = "2025-05-02T08:32:58.551Z" }, - { url = "https://files.pythonhosted.org/packages/22/2a/ea8a2095b0bafa6c5b5a55ffdc2f924455233ee7b91c69b7edfcc9e02284/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fddb7e2c84ac87ac3a947cb4e66d143ca5863ef48e4a5ecb83bd48619e4634e", size = 153653, upload-time = "2025-05-02T08:33:00.342Z" }, - { url = "https://files.pythonhosted.org/packages/b6/57/1b090ff183d13cef485dfbe272e2fe57622a76694061353c59da52c9a659/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98f862da73774290f251b9df8d11161b6cf25b599a66baf087c1ffe340e9bfd1", size = 146231, upload-time = "2025-05-02T08:33:02.081Z" }, - { url = "https://files.pythonhosted.org/packages/e2/28/ffc026b26f441fc67bd21ab7f03b313ab3fe46714a14b516f931abe1a2d8/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c9379d65defcab82d07b2a9dfbfc2e95bc8fe0ebb1b176a3190230a3ef0e07c", size = 148243, upload-time = "2025-05-02T08:33:04.063Z" }, - { url = "https://files.pythonhosted.org/packages/c0/0f/9abe9bd191629c33e69e47c6ef45ef99773320e9ad8e9cb08b8ab4a8d4cb/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e635b87f01ebc977342e2697d05b56632f5f879a4f15955dfe8cef2448b51691", size = 150442, upload-time = "2025-05-02T08:33:06.418Z" }, - { url = "https://files.pythonhosted.org/packages/67/7c/a123bbcedca91d5916c056407f89a7f5e8fdfce12ba825d7d6b9954a1a3c/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1c95a1e2902a8b722868587c0e1184ad5c55631de5afc0eb96bc4b0d738092c0", size = 145147, upload-time = "2025-05-02T08:33:08.183Z" }, - { url = "https://files.pythonhosted.org/packages/ec/fe/1ac556fa4899d967b83e9893788e86b6af4d83e4726511eaaad035e36595/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ef8de666d6179b009dce7bcb2ad4c4a779f113f12caf8dc77f0162c29d20490b", size = 153057, upload-time = "2025-05-02T08:33:09.986Z" }, - { url = "https://files.pythonhosted.org/packages/2b/ff/acfc0b0a70b19e3e54febdd5301a98b72fa07635e56f24f60502e954c461/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:32fc0341d72e0f73f80acb0a2c94216bd704f4f0bce10aedea38f30502b271ff", size = 156454, upload-time = "2025-05-02T08:33:11.814Z" }, - { url = "https://files.pythonhosted.org/packages/92/08/95b458ce9c740d0645feb0e96cea1f5ec946ea9c580a94adfe0b617f3573/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:289200a18fa698949d2b39c671c2cc7a24d44096784e76614899a7ccf2574b7b", size = 154174, upload-time = "2025-05-02T08:33:13.707Z" }, - { url = "https://files.pythonhosted.org/packages/78/be/8392efc43487ac051eee6c36d5fbd63032d78f7728cb37aebcc98191f1ff/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a476b06fbcf359ad25d34a057b7219281286ae2477cc5ff5e3f70a246971148", size = 149166, upload-time = "2025-05-02T08:33:15.458Z" }, - { url = "https://files.pythonhosted.org/packages/44/96/392abd49b094d30b91d9fbda6a69519e95802250b777841cf3bda8fe136c/charset_normalizer-3.4.2-cp313-cp313-win32.whl", hash = "sha256:aaeeb6a479c7667fbe1099af9617c83aaca22182d6cf8c53966491a0f1b7ffb7", size = 98064, upload-time = "2025-05-02T08:33:17.06Z" }, - { url = "https://files.pythonhosted.org/packages/e9/b0/0200da600134e001d91851ddc797809e2fe0ea72de90e09bec5a2fbdaccb/charset_normalizer-3.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:aa6af9e7d59f9c12b33ae4e9450619cf2488e2bbe9b44030905877f0b2324980", size = 105641, upload-time = "2025-05-02T08:33:18.753Z" }, - { url = "https://files.pythonhosted.org/packages/20/94/c5790835a017658cbfabd07f3bfb549140c3ac458cfc196323996b10095a/charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0", size = 52626, upload-time = "2025-05-02T08:34:40.053Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/e4/33/89c2ced2b67d1c2a61c19c6751aa8902d46ce3dacb23600a283619f5a12d/charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63", size = 126367 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d7/a4/37f4d6035c89cac7930395a35cc0f1b872e652eaafb76a6075943754f095/charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7", size = 199936 }, + { url = "https://files.pythonhosted.org/packages/ee/8a/1a5e33b73e0d9287274f899d967907cd0bf9c343e651755d9307e0dbf2b3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3", size = 143790 }, + { url = "https://files.pythonhosted.org/packages/66/52/59521f1d8e6ab1482164fa21409c5ef44da3e9f653c13ba71becdd98dec3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a", size = 153924 }, + { url = "https://files.pythonhosted.org/packages/86/2d/fb55fdf41964ec782febbf33cb64be480a6b8f16ded2dbe8db27a405c09f/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214", size = 146626 }, + { url = "https://files.pythonhosted.org/packages/8c/73/6ede2ec59bce19b3edf4209d70004253ec5f4e319f9a2e3f2f15601ed5f7/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a", size = 148567 }, + { url = "https://files.pythonhosted.org/packages/09/14/957d03c6dc343c04904530b6bef4e5efae5ec7d7990a7cbb868e4595ee30/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd", size = 150957 }, + { url = "https://files.pythonhosted.org/packages/0d/c8/8174d0e5c10ccebdcb1b53cc959591c4c722a3ad92461a273e86b9f5a302/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981", size = 145408 }, + { url = "https://files.pythonhosted.org/packages/58/aa/8904b84bc8084ac19dc52feb4f5952c6df03ffb460a887b42615ee1382e8/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c", size = 153399 }, + { url = "https://files.pythonhosted.org/packages/c2/26/89ee1f0e264d201cb65cf054aca6038c03b1a0c6b4ae998070392a3ce605/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b", size = 156815 }, + { url = "https://files.pythonhosted.org/packages/fd/07/68e95b4b345bad3dbbd3a8681737b4338ff2c9df29856a6d6d23ac4c73cb/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d", size = 154537 }, + { url = "https://files.pythonhosted.org/packages/77/1a/5eefc0ce04affb98af07bc05f3bac9094513c0e23b0562d64af46a06aae4/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f", size = 149565 }, + { url = "https://files.pythonhosted.org/packages/37/a0/2410e5e6032a174c95e0806b1a6585eb21e12f445ebe239fac441995226a/charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c", size = 98357 }, + { url = "https://files.pythonhosted.org/packages/6c/4f/c02d5c493967af3eda9c771ad4d2bbc8df6f99ddbeb37ceea6e8716a32bc/charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e", size = 105776 }, + { url = "https://files.pythonhosted.org/packages/ea/12/a93df3366ed32db1d907d7593a94f1fe6293903e3e92967bebd6950ed12c/charset_normalizer-3.4.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:926ca93accd5d36ccdabd803392ddc3e03e6d4cd1cf17deff3b989ab8e9dbcf0", size = 199622 }, + { url = "https://files.pythonhosted.org/packages/04/93/bf204e6f344c39d9937d3c13c8cd5bbfc266472e51fc8c07cb7f64fcd2de/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eba9904b0f38a143592d9fc0e19e2df0fa2e41c3c3745554761c5f6447eedabf", size = 143435 }, + { url = "https://files.pythonhosted.org/packages/22/2a/ea8a2095b0bafa6c5b5a55ffdc2f924455233ee7b91c69b7edfcc9e02284/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fddb7e2c84ac87ac3a947cb4e66d143ca5863ef48e4a5ecb83bd48619e4634e", size = 153653 }, + { url = "https://files.pythonhosted.org/packages/b6/57/1b090ff183d13cef485dfbe272e2fe57622a76694061353c59da52c9a659/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98f862da73774290f251b9df8d11161b6cf25b599a66baf087c1ffe340e9bfd1", size = 146231 }, + { url = "https://files.pythonhosted.org/packages/e2/28/ffc026b26f441fc67bd21ab7f03b313ab3fe46714a14b516f931abe1a2d8/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c9379d65defcab82d07b2a9dfbfc2e95bc8fe0ebb1b176a3190230a3ef0e07c", size = 148243 }, + { url = "https://files.pythonhosted.org/packages/c0/0f/9abe9bd191629c33e69e47c6ef45ef99773320e9ad8e9cb08b8ab4a8d4cb/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e635b87f01ebc977342e2697d05b56632f5f879a4f15955dfe8cef2448b51691", size = 150442 }, + { url = "https://files.pythonhosted.org/packages/67/7c/a123bbcedca91d5916c056407f89a7f5e8fdfce12ba825d7d6b9954a1a3c/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1c95a1e2902a8b722868587c0e1184ad5c55631de5afc0eb96bc4b0d738092c0", size = 145147 }, + { url = "https://files.pythonhosted.org/packages/ec/fe/1ac556fa4899d967b83e9893788e86b6af4d83e4726511eaaad035e36595/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ef8de666d6179b009dce7bcb2ad4c4a779f113f12caf8dc77f0162c29d20490b", size = 153057 }, + { url = "https://files.pythonhosted.org/packages/2b/ff/acfc0b0a70b19e3e54febdd5301a98b72fa07635e56f24f60502e954c461/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:32fc0341d72e0f73f80acb0a2c94216bd704f4f0bce10aedea38f30502b271ff", size = 156454 }, + { url = "https://files.pythonhosted.org/packages/92/08/95b458ce9c740d0645feb0e96cea1f5ec946ea9c580a94adfe0b617f3573/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:289200a18fa698949d2b39c671c2cc7a24d44096784e76614899a7ccf2574b7b", size = 154174 }, + { url = "https://files.pythonhosted.org/packages/78/be/8392efc43487ac051eee6c36d5fbd63032d78f7728cb37aebcc98191f1ff/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a476b06fbcf359ad25d34a057b7219281286ae2477cc5ff5e3f70a246971148", size = 149166 }, + { url = "https://files.pythonhosted.org/packages/44/96/392abd49b094d30b91d9fbda6a69519e95802250b777841cf3bda8fe136c/charset_normalizer-3.4.2-cp313-cp313-win32.whl", hash = "sha256:aaeeb6a479c7667fbe1099af9617c83aaca22182d6cf8c53966491a0f1b7ffb7", size = 98064 }, + { url = "https://files.pythonhosted.org/packages/e9/b0/0200da600134e001d91851ddc797809e2fe0ea72de90e09bec5a2fbdaccb/charset_normalizer-3.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:aa6af9e7d59f9c12b33ae4e9450619cf2488e2bbe9b44030905877f0b2324980", size = 105641 }, + { url = "https://files.pythonhosted.org/packages/20/94/c5790835a017658cbfabd07f3bfb549140c3ac458cfc196323996b10095a/charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0", size = 52626 }, ] [[package]] name = "colorama" version = "0.4.6" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697 } wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 }, ] [[package]] name = "contracts-service" version = "0.2.0" -source = { virtual = "." } +source = { editable = "." } dependencies = [ { name = "aws-lambda-powertools", extra = ["tracer"] }, { name = "aws-xray-sdk" }, @@ -244,32 +244,32 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/13/1f/9fa001e74a1993a9cadd2333bb889e50c66327b8594ac538ab8a04f915b7/cryptography-45.0.3.tar.gz", hash = "sha256:ec21313dd335c51d7877baf2972569f40a4291b76a0ce51391523ae358d05899", size = 744738, upload-time = "2025-05-25T14:17:24.777Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/82/b2/2345dc595998caa6f68adf84e8f8b50d18e9fc4638d32b22ea8daedd4b7a/cryptography-45.0.3-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:7573d9eebaeceeb55285205dbbb8753ac1e962af3d9640791d12b36864065e71", size = 7056239, upload-time = "2025-05-25T14:16:12.22Z" }, - { url = "https://files.pythonhosted.org/packages/71/3d/ac361649a0bfffc105e2298b720d8b862330a767dab27c06adc2ddbef96a/cryptography-45.0.3-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d377dde61c5d67eb4311eace661c3efda46c62113ff56bf05e2d679e02aebb5b", size = 4205541, upload-time = "2025-05-25T14:16:14.333Z" }, - { url = "https://files.pythonhosted.org/packages/70/3e/c02a043750494d5c445f769e9c9f67e550d65060e0bfce52d91c1362693d/cryptography-45.0.3-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fae1e637f527750811588e4582988932c222f8251f7b7ea93739acb624e1487f", size = 4433275, upload-time = "2025-05-25T14:16:16.421Z" }, - { url = "https://files.pythonhosted.org/packages/40/7a/9af0bfd48784e80eef3eb6fd6fde96fe706b4fc156751ce1b2b965dada70/cryptography-45.0.3-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:ca932e11218bcc9ef812aa497cdf669484870ecbcf2d99b765d6c27a86000942", size = 4209173, upload-time = "2025-05-25T14:16:18.163Z" }, - { url = "https://files.pythonhosted.org/packages/31/5f/d6f8753c8708912df52e67969e80ef70b8e8897306cd9eb8b98201f8c184/cryptography-45.0.3-cp311-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:af3f92b1dc25621f5fad065288a44ac790c5798e986a34d393ab27d2b27fcff9", size = 3898150, upload-time = "2025-05-25T14:16:20.34Z" }, - { url = "https://files.pythonhosted.org/packages/8b/50/f256ab79c671fb066e47336706dc398c3b1e125f952e07d54ce82cf4011a/cryptography-45.0.3-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:2f8f8f0b73b885ddd7f3d8c2b2234a7d3ba49002b0223f58cfde1bedd9563c56", size = 4466473, upload-time = "2025-05-25T14:16:22.605Z" }, - { url = "https://files.pythonhosted.org/packages/62/e7/312428336bb2df0848d0768ab5a062e11a32d18139447a76dfc19ada8eed/cryptography-45.0.3-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:9cc80ce69032ffa528b5e16d217fa4d8d4bb7d6ba8659c1b4d74a1b0f4235fca", size = 4211890, upload-time = "2025-05-25T14:16:24.738Z" }, - { url = "https://files.pythonhosted.org/packages/e7/53/8a130e22c1e432b3c14896ec5eb7ac01fb53c6737e1d705df7e0efb647c6/cryptography-45.0.3-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:c824c9281cb628015bfc3c59335163d4ca0540d49de4582d6c2637312907e4b1", size = 4466300, upload-time = "2025-05-25T14:16:26.768Z" }, - { url = "https://files.pythonhosted.org/packages/ba/75/6bb6579688ef805fd16a053005fce93944cdade465fc92ef32bbc5c40681/cryptography-45.0.3-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:5833bb4355cb377ebd880457663a972cd044e7f49585aee39245c0d592904578", size = 4332483, upload-time = "2025-05-25T14:16:28.316Z" }, - { url = "https://files.pythonhosted.org/packages/2f/11/2538f4e1ce05c6c4f81f43c1ef2bd6de7ae5e24ee284460ff6c77e42ca77/cryptography-45.0.3-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:9bb5bf55dcb69f7067d80354d0a348368da907345a2c448b0babc4215ccd3497", size = 4573714, upload-time = "2025-05-25T14:16:30.474Z" }, - { url = "https://files.pythonhosted.org/packages/f5/bb/e86e9cf07f73a98d84a4084e8fd420b0e82330a901d9cac8149f994c3417/cryptography-45.0.3-cp311-abi3-win32.whl", hash = "sha256:3ad69eeb92a9de9421e1f6685e85a10fbcfb75c833b42cc9bc2ba9fb00da4710", size = 2934752, upload-time = "2025-05-25T14:16:32.204Z" }, - { url = "https://files.pythonhosted.org/packages/c7/75/063bc9ddc3d1c73e959054f1fc091b79572e716ef74d6caaa56e945b4af9/cryptography-45.0.3-cp311-abi3-win_amd64.whl", hash = "sha256:97787952246a77d77934d41b62fb1b6f3581d83f71b44796a4158d93b8f5c490", size = 3412465, upload-time = "2025-05-25T14:16:33.888Z" }, - { url = "https://files.pythonhosted.org/packages/71/9b/04ead6015229a9396890d7654ee35ef630860fb42dc9ff9ec27f72157952/cryptography-45.0.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:c92519d242703b675ccefd0f0562eb45e74d438e001f8ab52d628e885751fb06", size = 7031892, upload-time = "2025-05-25T14:16:36.214Z" }, - { url = "https://files.pythonhosted.org/packages/46/c7/c7d05d0e133a09fc677b8a87953815c522697bdf025e5cac13ba419e7240/cryptography-45.0.3-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5edcb90da1843df85292ef3a313513766a78fbbb83f584a5a58fb001a5a9d57", size = 4196181, upload-time = "2025-05-25T14:16:37.934Z" }, - { url = "https://files.pythonhosted.org/packages/08/7a/6ad3aa796b18a683657cef930a986fac0045417e2dc428fd336cfc45ba52/cryptography-45.0.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38deed72285c7ed699864f964a3f4cf11ab3fb38e8d39cfcd96710cd2b5bb716", size = 4423370, upload-time = "2025-05-25T14:16:39.502Z" }, - { url = "https://files.pythonhosted.org/packages/4f/58/ec1461bfcb393525f597ac6a10a63938d18775b7803324072974b41a926b/cryptography-45.0.3-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:5555365a50efe1f486eed6ac7062c33b97ccef409f5970a0b6f205a7cfab59c8", size = 4197839, upload-time = "2025-05-25T14:16:41.322Z" }, - { url = "https://files.pythonhosted.org/packages/d4/3d/5185b117c32ad4f40846f579369a80e710d6146c2baa8ce09d01612750db/cryptography-45.0.3-cp37-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:9e4253ed8f5948a3589b3caee7ad9a5bf218ffd16869c516535325fece163dcc", size = 3886324, upload-time = "2025-05-25T14:16:43.041Z" }, - { url = "https://files.pythonhosted.org/packages/67/85/caba91a57d291a2ad46e74016d1f83ac294f08128b26e2a81e9b4f2d2555/cryptography-45.0.3-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:cfd84777b4b6684955ce86156cfb5e08d75e80dc2585e10d69e47f014f0a5342", size = 4450447, upload-time = "2025-05-25T14:16:44.759Z" }, - { url = "https://files.pythonhosted.org/packages/ae/d1/164e3c9d559133a38279215c712b8ba38e77735d3412f37711b9f8f6f7e0/cryptography-45.0.3-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:a2b56de3417fd5f48773ad8e91abaa700b678dc7fe1e0c757e1ae340779acf7b", size = 4200576, upload-time = "2025-05-25T14:16:46.438Z" }, - { url = "https://files.pythonhosted.org/packages/71/7a/e002d5ce624ed46dfc32abe1deff32190f3ac47ede911789ee936f5a4255/cryptography-45.0.3-cp37-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:57a6500d459e8035e813bd8b51b671977fb149a8c95ed814989da682314d0782", size = 4450308, upload-time = "2025-05-25T14:16:48.228Z" }, - { url = "https://files.pythonhosted.org/packages/87/ad/3fbff9c28cf09b0a71e98af57d74f3662dea4a174b12acc493de00ea3f28/cryptography-45.0.3-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:f22af3c78abfbc7cbcdf2c55d23c3e022e1a462ee2481011d518c7fb9c9f3d65", size = 4325125, upload-time = "2025-05-25T14:16:49.844Z" }, - { url = "https://files.pythonhosted.org/packages/f5/b4/51417d0cc01802304c1984d76e9592f15e4801abd44ef7ba657060520bf0/cryptography-45.0.3-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:232954730c362638544758a8160c4ee1b832dc011d2c41a306ad8f7cccc5bb0b", size = 4560038, upload-time = "2025-05-25T14:16:51.398Z" }, - { url = "https://files.pythonhosted.org/packages/80/38/d572f6482d45789a7202fb87d052deb7a7b136bf17473ebff33536727a2c/cryptography-45.0.3-cp37-abi3-win32.whl", hash = "sha256:cb6ab89421bc90e0422aca911c69044c2912fc3debb19bb3c1bfe28ee3dff6ab", size = 2924070, upload-time = "2025-05-25T14:16:53.472Z" }, - { url = "https://files.pythonhosted.org/packages/91/5a/61f39c0ff4443651cc64e626fa97ad3099249152039952be8f344d6b0c86/cryptography-45.0.3-cp37-abi3-win_amd64.whl", hash = "sha256:d54ae41e6bd70ea23707843021c778f151ca258081586f0cfa31d936ae43d1b2", size = 3395005, upload-time = "2025-05-25T14:16:55.134Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/13/1f/9fa001e74a1993a9cadd2333bb889e50c66327b8594ac538ab8a04f915b7/cryptography-45.0.3.tar.gz", hash = "sha256:ec21313dd335c51d7877baf2972569f40a4291b76a0ce51391523ae358d05899", size = 744738 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/82/b2/2345dc595998caa6f68adf84e8f8b50d18e9fc4638d32b22ea8daedd4b7a/cryptography-45.0.3-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:7573d9eebaeceeb55285205dbbb8753ac1e962af3d9640791d12b36864065e71", size = 7056239 }, + { url = "https://files.pythonhosted.org/packages/71/3d/ac361649a0bfffc105e2298b720d8b862330a767dab27c06adc2ddbef96a/cryptography-45.0.3-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d377dde61c5d67eb4311eace661c3efda46c62113ff56bf05e2d679e02aebb5b", size = 4205541 }, + { url = "https://files.pythonhosted.org/packages/70/3e/c02a043750494d5c445f769e9c9f67e550d65060e0bfce52d91c1362693d/cryptography-45.0.3-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fae1e637f527750811588e4582988932c222f8251f7b7ea93739acb624e1487f", size = 4433275 }, + { url = "https://files.pythonhosted.org/packages/40/7a/9af0bfd48784e80eef3eb6fd6fde96fe706b4fc156751ce1b2b965dada70/cryptography-45.0.3-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:ca932e11218bcc9ef812aa497cdf669484870ecbcf2d99b765d6c27a86000942", size = 4209173 }, + { url = "https://files.pythonhosted.org/packages/31/5f/d6f8753c8708912df52e67969e80ef70b8e8897306cd9eb8b98201f8c184/cryptography-45.0.3-cp311-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:af3f92b1dc25621f5fad065288a44ac790c5798e986a34d393ab27d2b27fcff9", size = 3898150 }, + { url = "https://files.pythonhosted.org/packages/8b/50/f256ab79c671fb066e47336706dc398c3b1e125f952e07d54ce82cf4011a/cryptography-45.0.3-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:2f8f8f0b73b885ddd7f3d8c2b2234a7d3ba49002b0223f58cfde1bedd9563c56", size = 4466473 }, + { url = "https://files.pythonhosted.org/packages/62/e7/312428336bb2df0848d0768ab5a062e11a32d18139447a76dfc19ada8eed/cryptography-45.0.3-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:9cc80ce69032ffa528b5e16d217fa4d8d4bb7d6ba8659c1b4d74a1b0f4235fca", size = 4211890 }, + { url = "https://files.pythonhosted.org/packages/e7/53/8a130e22c1e432b3c14896ec5eb7ac01fb53c6737e1d705df7e0efb647c6/cryptography-45.0.3-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:c824c9281cb628015bfc3c59335163d4ca0540d49de4582d6c2637312907e4b1", size = 4466300 }, + { url = "https://files.pythonhosted.org/packages/ba/75/6bb6579688ef805fd16a053005fce93944cdade465fc92ef32bbc5c40681/cryptography-45.0.3-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:5833bb4355cb377ebd880457663a972cd044e7f49585aee39245c0d592904578", size = 4332483 }, + { url = "https://files.pythonhosted.org/packages/2f/11/2538f4e1ce05c6c4f81f43c1ef2bd6de7ae5e24ee284460ff6c77e42ca77/cryptography-45.0.3-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:9bb5bf55dcb69f7067d80354d0a348368da907345a2c448b0babc4215ccd3497", size = 4573714 }, + { url = "https://files.pythonhosted.org/packages/f5/bb/e86e9cf07f73a98d84a4084e8fd420b0e82330a901d9cac8149f994c3417/cryptography-45.0.3-cp311-abi3-win32.whl", hash = "sha256:3ad69eeb92a9de9421e1f6685e85a10fbcfb75c833b42cc9bc2ba9fb00da4710", size = 2934752 }, + { url = "https://files.pythonhosted.org/packages/c7/75/063bc9ddc3d1c73e959054f1fc091b79572e716ef74d6caaa56e945b4af9/cryptography-45.0.3-cp311-abi3-win_amd64.whl", hash = "sha256:97787952246a77d77934d41b62fb1b6f3581d83f71b44796a4158d93b8f5c490", size = 3412465 }, + { url = "https://files.pythonhosted.org/packages/71/9b/04ead6015229a9396890d7654ee35ef630860fb42dc9ff9ec27f72157952/cryptography-45.0.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:c92519d242703b675ccefd0f0562eb45e74d438e001f8ab52d628e885751fb06", size = 7031892 }, + { url = "https://files.pythonhosted.org/packages/46/c7/c7d05d0e133a09fc677b8a87953815c522697bdf025e5cac13ba419e7240/cryptography-45.0.3-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5edcb90da1843df85292ef3a313513766a78fbbb83f584a5a58fb001a5a9d57", size = 4196181 }, + { url = "https://files.pythonhosted.org/packages/08/7a/6ad3aa796b18a683657cef930a986fac0045417e2dc428fd336cfc45ba52/cryptography-45.0.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38deed72285c7ed699864f964a3f4cf11ab3fb38e8d39cfcd96710cd2b5bb716", size = 4423370 }, + { url = "https://files.pythonhosted.org/packages/4f/58/ec1461bfcb393525f597ac6a10a63938d18775b7803324072974b41a926b/cryptography-45.0.3-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:5555365a50efe1f486eed6ac7062c33b97ccef409f5970a0b6f205a7cfab59c8", size = 4197839 }, + { url = "https://files.pythonhosted.org/packages/d4/3d/5185b117c32ad4f40846f579369a80e710d6146c2baa8ce09d01612750db/cryptography-45.0.3-cp37-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:9e4253ed8f5948a3589b3caee7ad9a5bf218ffd16869c516535325fece163dcc", size = 3886324 }, + { url = "https://files.pythonhosted.org/packages/67/85/caba91a57d291a2ad46e74016d1f83ac294f08128b26e2a81e9b4f2d2555/cryptography-45.0.3-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:cfd84777b4b6684955ce86156cfb5e08d75e80dc2585e10d69e47f014f0a5342", size = 4450447 }, + { url = "https://files.pythonhosted.org/packages/ae/d1/164e3c9d559133a38279215c712b8ba38e77735d3412f37711b9f8f6f7e0/cryptography-45.0.3-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:a2b56de3417fd5f48773ad8e91abaa700b678dc7fe1e0c757e1ae340779acf7b", size = 4200576 }, + { url = "https://files.pythonhosted.org/packages/71/7a/e002d5ce624ed46dfc32abe1deff32190f3ac47ede911789ee936f5a4255/cryptography-45.0.3-cp37-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:57a6500d459e8035e813bd8b51b671977fb149a8c95ed814989da682314d0782", size = 4450308 }, + { url = "https://files.pythonhosted.org/packages/87/ad/3fbff9c28cf09b0a71e98af57d74f3662dea4a174b12acc493de00ea3f28/cryptography-45.0.3-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:f22af3c78abfbc7cbcdf2c55d23c3e022e1a462ee2481011d518c7fb9c9f3d65", size = 4325125 }, + { url = "https://files.pythonhosted.org/packages/f5/b4/51417d0cc01802304c1984d76e9592f15e4801abd44ef7ba657060520bf0/cryptography-45.0.3-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:232954730c362638544758a8160c4ee1b832dc011d2c41a306ad8f7cccc5bb0b", size = 4560038 }, + { url = "https://files.pythonhosted.org/packages/80/38/d572f6482d45789a7202fb87d052deb7a7b136bf17473ebff33536727a2c/cryptography-45.0.3-cp37-abi3-win32.whl", hash = "sha256:cb6ab89421bc90e0422aca911c69044c2912fc3debb19bb3c1bfe28ee3dff6ab", size = 2924070 }, + { url = "https://files.pythonhosted.org/packages/91/5a/61f39c0ff4443651cc64e626fa97ad3099249152039952be8f344d6b0c86/cryptography-45.0.3-cp37-abi3-win_amd64.whl", hash = "sha256:d54ae41e6bd70ea23707843021c778f151ca258081586f0cfa31d936ae43d1b2", size = 3395005 }, ] [[package]] @@ -281,27 +281,27 @@ dependencies = [ { name = "requests" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/91/9b/4a2ea29aeba62471211598dac5d96825bb49348fa07e906ea930394a83ce/docker-7.1.0.tar.gz", hash = "sha256:ad8c70e6e3f8926cb8a92619b832b4ea5299e2831c14284663184e200546fa6c", size = 117834, upload-time = "2024-05-23T11:13:57.216Z" } +sdist = { url = "https://files.pythonhosted.org/packages/91/9b/4a2ea29aeba62471211598dac5d96825bb49348fa07e906ea930394a83ce/docker-7.1.0.tar.gz", hash = "sha256:ad8c70e6e3f8926cb8a92619b832b4ea5299e2831c14284663184e200546fa6c", size = 117834 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e3/26/57c6fb270950d476074c087527a558ccb6f4436657314bfb6cdf484114c4/docker-7.1.0-py3-none-any.whl", hash = "sha256:c96b93b7f0a746f9e77d325bcfb87422a3d8bd4f03136ae8a85b37f1898d5fc0", size = 147774, upload-time = "2024-05-23T11:13:55.01Z" }, + { url = "https://files.pythonhosted.org/packages/e3/26/57c6fb270950d476074c087527a558ccb6f4436657314bfb6cdf484114c4/docker-7.1.0-py3-none-any.whl", hash = "sha256:c96b93b7f0a746f9e77d325bcfb87422a3d8bd4f03136ae8a85b37f1898d5fc0", size = 147774 }, ] [[package]] name = "fastjsonschema" version = "2.21.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8b/50/4b769ce1ac4071a1ef6d86b1a3fb56cdc3a37615e8c5519e1af96cdac366/fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4", size = 373939, upload-time = "2024-12-02T10:55:15.133Z" } +sdist = { url = "https://files.pythonhosted.org/packages/8b/50/4b769ce1ac4071a1ef6d86b1a3fb56cdc3a37615e8c5519e1af96cdac366/fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4", size = 373939 } wheels = [ - { url = "https://files.pythonhosted.org/packages/90/2b/0817a2b257fe88725c25589d89aec060581aabf668707a8d03b2e9e0cb2a/fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667", size = 23924, upload-time = "2024-12-02T10:55:07.599Z" }, + { url = "https://files.pythonhosted.org/packages/90/2b/0817a2b257fe88725c25589d89aec060581aabf668707a8d03b2e9e0cb2a/fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667", size = 23924 }, ] [[package]] name = "idna" version = "3.10" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490, upload-time = "2024-09-15T18:07:39.745Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490 } wheels = [ - { 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" }, + { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442 }, ] [[package]] @@ -311,18 +311,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "zipp" }, ] -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" } +sdist = { url = "https://files.pythonhosted.org/packages/76/66/650a33bd90f786193e4de4b3ad86ea60b53c89b669a5c7be931fac31cdb0/importlib_metadata-8.7.0.tar.gz", hash = "sha256:d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000", size = 56641 } wheels = [ - { 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" }, + { url = "https://files.pythonhosted.org/packages/20/b0/36bd937216ec521246249be3bf9855081de4c5e06a0c9b4219dbeda50373/importlib_metadata-8.7.0-py3-none-any.whl", hash = "sha256:e5dd1551894c77868a30651cef00984d50e1002d06942a7101d34870c5f02afd", size = 27656 }, ] [[package]] name = "iniconfig" version = "2.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793, upload-time = "2025-03-19T20:09:59.721Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793 } wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050, upload-time = "2025-03-19T20:10:01.071Z" }, + { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050 }, ] [[package]] @@ -332,18 +332,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markupsafe" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload-time = "2025-03-05T20:05:02.478Z" } +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115 } wheels = [ - { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" }, + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899 }, ] [[package]] name = "jmespath" version = "1.0.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/00/2a/e867e8531cf3e36b41201936b7fa7ba7b5702dbef42922193f05c8976cd6/jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe", size = 25843, upload-time = "2022-06-17T18:00:12.224Z" } +sdist = { url = "https://files.pythonhosted.org/packages/00/2a/e867e8531cf3e36b41201936b7fa7ba7b5702dbef42922193f05c8976cd6/jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe", size = 25843 } wheels = [ - { url = "https://files.pythonhosted.org/packages/31/b4/b9b800c45527aadd64d5b442f9b932b00648617eb5d63d2c7a6587b7cafc/jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980", size = 20256, upload-time = "2022-06-17T18:00:10.251Z" }, + { url = "https://files.pythonhosted.org/packages/31/b4/b9b800c45527aadd64d5b442f9b932b00648617eb5d63d2c7a6587b7cafc/jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980", size = 20256 }, ] [[package]] @@ -353,47 +353,47 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "ply" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/6d/86/08646239a313f895186ff0a4573452038eed8c86f54380b3ebac34d32fb2/jsonpath-ng-1.7.0.tar.gz", hash = "sha256:f6f5f7fd4e5ff79c785f1573b394043b39849fb2bb47bcead935d12b00beab3c", size = 37838, upload-time = "2024-10-11T15:41:42.404Z" } +sdist = { url = "https://files.pythonhosted.org/packages/6d/86/08646239a313f895186ff0a4573452038eed8c86f54380b3ebac34d32fb2/jsonpath-ng-1.7.0.tar.gz", hash = "sha256:f6f5f7fd4e5ff79c785f1573b394043b39849fb2bb47bcead935d12b00beab3c", size = 37838 } wheels = [ - { url = "https://files.pythonhosted.org/packages/35/5a/73ecb3d82f8615f32ccdadeb9356726d6cae3a4bbc840b437ceb95708063/jsonpath_ng-1.7.0-py3-none-any.whl", hash = "sha256:f3d7f9e848cba1b6da28c55b1c26ff915dc9e0b1ba7e752a53d6da8d5cbd00b6", size = 30105, upload-time = "2024-11-20T17:58:30.418Z" }, + { url = "https://files.pythonhosted.org/packages/35/5a/73ecb3d82f8615f32ccdadeb9356726d6cae3a4bbc840b437ceb95708063/jsonpath_ng-1.7.0-py3-none-any.whl", hash = "sha256:f3d7f9e848cba1b6da28c55b1c26ff915dc9e0b1ba7e752a53d6da8d5cbd00b6", size = 30105 }, ] [[package]] name = "markupsafe" version = "3.0.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537, upload-time = "2024-10-18T15:21:54.129Z" } -wheels = [ - { 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, upload-time = "2024-10-18T15:21:13.777Z" }, - { 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, upload-time = "2024-10-18T15:21:14.822Z" }, - { 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, upload-time = "2024-10-18T15:21:15.642Z" }, - { 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, upload-time = "2024-10-18T15:21:17.133Z" }, - { 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, upload-time = "2024-10-18T15:21:18.064Z" }, - { 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, upload-time = "2024-10-18T15:21:18.859Z" }, - { 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, upload-time = "2024-10-18T15:21:19.671Z" }, - { 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, upload-time = "2024-10-18T15:21:20.971Z" }, - { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097, upload-time = "2024-10-18T15:21:22.646Z" }, - { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601, upload-time = "2024-10-18T15:21:23.499Z" }, - { 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, upload-time = "2024-10-18T15:21:24.577Z" }, - { 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, upload-time = "2024-10-18T15:21:25.382Z" }, - { 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, upload-time = "2024-10-18T15:21:26.199Z" }, - { url = "https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396", size = 23085, upload-time = "2024-10-18T15:21:27.029Z" }, - { url = "https://files.pythonhosted.org/packages/c2/cf/c9d56af24d56ea04daae7ac0940232d31d5a8354f2b457c6d856b2057d69/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79", size = 22978, upload-time = "2024-10-18T15:21:27.846Z" }, - { url = "https://files.pythonhosted.org/packages/2a/9f/8619835cd6a711d6272d62abb78c033bda638fdc54c4e7f4272cf1c0962b/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a", size = 24208, upload-time = "2024-10-18T15:21:28.744Z" }, - { url = "https://files.pythonhosted.org/packages/f9/bf/176950a1792b2cd2102b8ffeb5133e1ed984547b75db47c25a67d3359f77/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca", size = 23357, upload-time = "2024-10-18T15:21:29.545Z" }, - { url = "https://files.pythonhosted.org/packages/ce/4f/9a02c1d335caabe5c4efb90e1b6e8ee944aa245c1aaaab8e8a618987d816/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c", size = 23344, upload-time = "2024-10-18T15:21:30.366Z" }, - { url = "https://files.pythonhosted.org/packages/ee/55/c271b57db36f748f0e04a759ace9f8f759ccf22b4960c270c78a394f58be/MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1", size = 15101, upload-time = "2024-10-18T15:21:31.207Z" }, - { url = "https://files.pythonhosted.org/packages/29/88/07df22d2dd4df40aba9f3e402e6dc1b8ee86297dddbad4872bd5e7b0094f/MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f", size = 15603, upload-time = "2024-10-18T15:21:32.032Z" }, - { url = "https://files.pythonhosted.org/packages/62/6a/8b89d24db2d32d433dffcd6a8779159da109842434f1dd2f6e71f32f738c/MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c", size = 14510, upload-time = "2024-10-18T15:21:33.625Z" }, - { url = "https://files.pythonhosted.org/packages/7a/06/a10f955f70a2e5a9bf78d11a161029d278eeacbd35ef806c3fd17b13060d/MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb", size = 12486, upload-time = "2024-10-18T15:21:34.611Z" }, - { url = "https://files.pythonhosted.org/packages/34/cf/65d4a571869a1a9078198ca28f39fba5fbb910f952f9dbc5220afff9f5e6/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c", size = 25480, upload-time = "2024-10-18T15:21:35.398Z" }, - { url = "https://files.pythonhosted.org/packages/0c/e3/90e9651924c430b885468b56b3d597cabf6d72be4b24a0acd1fa0e12af67/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d", size = 23914, upload-time = "2024-10-18T15:21:36.231Z" }, - { url = "https://files.pythonhosted.org/packages/66/8c/6c7cf61f95d63bb866db39085150df1f2a5bd3335298f14a66b48e92659c/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe", size = 23796, upload-time = "2024-10-18T15:21:37.073Z" }, - { url = "https://files.pythonhosted.org/packages/bb/35/cbe9238ec3f47ac9a7c8b3df7a808e7cb50fe149dc7039f5f454b3fba218/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5", size = 25473, upload-time = "2024-10-18T15:21:37.932Z" }, - { url = "https://files.pythonhosted.org/packages/e6/32/7621a4382488aa283cc05e8984a9c219abad3bca087be9ec77e89939ded9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a", size = 24114, upload-time = "2024-10-18T15:21:39.799Z" }, - { url = "https://files.pythonhosted.org/packages/0d/80/0985960e4b89922cb5a0bac0ed39c5b96cbc1a536a99f30e8c220a996ed9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9", size = 24098, upload-time = "2024-10-18T15:21:40.813Z" }, - { url = "https://files.pythonhosted.org/packages/82/78/fedb03c7d5380df2427038ec8d973587e90561b2d90cd472ce9254cf348b/MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6", size = 15208, upload-time = "2024-10-18T15:21:41.814Z" }, - { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739, upload-time = "2024-10-18T15:21:42.784Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537 } +wheels = [ + { 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 }, + { 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 }, + { 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 }, + { 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 }, + { 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 }, + { 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 }, + { 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 }, + { 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 }, + { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097 }, + { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601 }, + { 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 }, + { 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 }, + { 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 }, + { url = "https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396", size = 23085 }, + { url = "https://files.pythonhosted.org/packages/c2/cf/c9d56af24d56ea04daae7ac0940232d31d5a8354f2b457c6d856b2057d69/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79", size = 22978 }, + { url = "https://files.pythonhosted.org/packages/2a/9f/8619835cd6a711d6272d62abb78c033bda638fdc54c4e7f4272cf1c0962b/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a", size = 24208 }, + { url = "https://files.pythonhosted.org/packages/f9/bf/176950a1792b2cd2102b8ffeb5133e1ed984547b75db47c25a67d3359f77/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca", size = 23357 }, + { url = "https://files.pythonhosted.org/packages/ce/4f/9a02c1d335caabe5c4efb90e1b6e8ee944aa245c1aaaab8e8a618987d816/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c", size = 23344 }, + { url = "https://files.pythonhosted.org/packages/ee/55/c271b57db36f748f0e04a759ace9f8f759ccf22b4960c270c78a394f58be/MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1", size = 15101 }, + { url = "https://files.pythonhosted.org/packages/29/88/07df22d2dd4df40aba9f3e402e6dc1b8ee86297dddbad4872bd5e7b0094f/MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f", size = 15603 }, + { url = "https://files.pythonhosted.org/packages/62/6a/8b89d24db2d32d433dffcd6a8779159da109842434f1dd2f6e71f32f738c/MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c", size = 14510 }, + { url = "https://files.pythonhosted.org/packages/7a/06/a10f955f70a2e5a9bf78d11a161029d278eeacbd35ef806c3fd17b13060d/MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb", size = 12486 }, + { url = "https://files.pythonhosted.org/packages/34/cf/65d4a571869a1a9078198ca28f39fba5fbb910f952f9dbc5220afff9f5e6/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c", size = 25480 }, + { url = "https://files.pythonhosted.org/packages/0c/e3/90e9651924c430b885468b56b3d597cabf6d72be4b24a0acd1fa0e12af67/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d", size = 23914 }, + { url = "https://files.pythonhosted.org/packages/66/8c/6c7cf61f95d63bb866db39085150df1f2a5bd3335298f14a66b48e92659c/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe", size = 23796 }, + { url = "https://files.pythonhosted.org/packages/bb/35/cbe9238ec3f47ac9a7c8b3df7a808e7cb50fe149dc7039f5f454b3fba218/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5", size = 25473 }, + { url = "https://files.pythonhosted.org/packages/e6/32/7621a4382488aa283cc05e8984a9c219abad3bca087be9ec77e89939ded9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a", size = 24114 }, + { url = "https://files.pythonhosted.org/packages/0d/80/0985960e4b89922cb5a0bac0ed39c5b96cbc1a536a99f30e8c220a996ed9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9", size = 24098 }, + { url = "https://files.pythonhosted.org/packages/82/78/fedb03c7d5380df2427038ec8d973587e90561b2d90cd472ce9254cf348b/MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6", size = 15208 }, + { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739 }, ] [[package]] @@ -411,9 +411,9 @@ dependencies = [ { name = "werkzeug" }, { name = "xmltodict" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/24/9f/5cacf53cbd26b4a77c817fd4fbec2ed38139ba2cfcd842c279aa19ee161f/moto-5.1.5.tar.gz", hash = "sha256:42b362ea9a16181e8e7b615ac212c294b882f020e9ae02f01230f167926df84e", size = 6893155, upload-time = "2025-05-24T12:19:55.398Z" } +sdist = { url = "https://files.pythonhosted.org/packages/24/9f/5cacf53cbd26b4a77c817fd4fbec2ed38139ba2cfcd842c279aa19ee161f/moto-5.1.5.tar.gz", hash = "sha256:42b362ea9a16181e8e7b615ac212c294b882f020e9ae02f01230f167926df84e", size = 6893155 } wheels = [ - { url = "https://files.pythonhosted.org/packages/84/0f/72a420e972a9e782d08843ced85d29f04c8470c66fc84ecb1c8a7e7abcf8/moto-5.1.5-py3-none-any.whl", hash = "sha256:866ae85eb5efe11a78f991127531878fd7f49177eb4a6680f47060430eb8932d", size = 4992353, upload-time = "2025-05-24T12:19:53.435Z" }, + { url = "https://files.pythonhosted.org/packages/84/0f/72a420e972a9e782d08843ced85d29f04c8470c66fc84ecb1c8a7e7abcf8/moto-5.1.5-py3-none-any.whl", hash = "sha256:866ae85eb5efe11a78f991127531878fd7f49177eb4a6680f47060430eb8932d", size = 4992353 }, ] [package.optional-dependencies] @@ -429,45 +429,45 @@ events = [ name = "packaging" version = "25.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727, upload-time = "2025-04-19T11:48:59.673Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727 } wheels = [ - { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload-time = "2025-04-19T11:48:57.875Z" }, + { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469 }, ] [[package]] name = "pluggy" version = "1.6.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412, upload-time = "2025-05-15T12:30:07.975Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412 } wheels = [ - { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" }, + { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538 }, ] [[package]] name = "ply" version = "3.11" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e5/69/882ee5c9d017149285cab114ebeab373308ef0f874fcdac9beb90e0ac4da/ply-3.11.tar.gz", hash = "sha256:00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3", size = 159130, upload-time = "2018-02-15T19:01:31.097Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e5/69/882ee5c9d017149285cab114ebeab373308ef0f874fcdac9beb90e0ac4da/ply-3.11.tar.gz", hash = "sha256:00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3", size = 159130 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a3/58/35da89ee790598a0700ea49b2a66594140f44dec458c07e8e3d4979137fc/ply-3.11-py2.py3-none-any.whl", hash = "sha256:096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce", size = 49567, upload-time = "2018-02-15T19:01:27.172Z" }, + { url = "https://files.pythonhosted.org/packages/a3/58/35da89ee790598a0700ea49b2a66594140f44dec458c07e8e3d4979137fc/ply-3.11-py2.py3-none-any.whl", hash = "sha256:096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce", size = 49567 }, ] [[package]] name = "py-partiql-parser" version = "0.6.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/58/a1/0a2867e48b232b4f82c4929ef7135f2a5d72c3886b957dccf63c70aa2fcb/py_partiql_parser-0.6.1.tar.gz", hash = "sha256:8583ff2a0e15560ef3bc3df109a7714d17f87d81d33e8c38b7fed4e58a63215d", size = 17120, upload-time = "2024-12-25T22:06:41.327Z" } +sdist = { url = "https://files.pythonhosted.org/packages/58/a1/0a2867e48b232b4f82c4929ef7135f2a5d72c3886b957dccf63c70aa2fcb/py_partiql_parser-0.6.1.tar.gz", hash = "sha256:8583ff2a0e15560ef3bc3df109a7714d17f87d81d33e8c38b7fed4e58a63215d", size = 17120 } wheels = [ - { url = "https://files.pythonhosted.org/packages/97/84/0e410c20bbe9a504fc56e97908f13261c2b313d16cbb3b738556166f044a/py_partiql_parser-0.6.1-py2.py3-none-any.whl", hash = "sha256:ff6a48067bff23c37e9044021bf1d949c83e195490c17e020715e927fe5b2456", size = 23520, upload-time = "2024-12-25T22:06:39.106Z" }, + { url = "https://files.pythonhosted.org/packages/97/84/0e410c20bbe9a504fc56e97908f13261c2b313d16cbb3b738556166f044a/py_partiql_parser-0.6.1-py2.py3-none-any.whl", hash = "sha256:ff6a48067bff23c37e9044021bf1d949c83e195490c17e020715e927fe5b2456", size = 23520 }, ] [[package]] name = "pycparser" version = "2.22" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", size = 172736, upload-time = "2024-03-30T13:22:22.564Z" } +sdist = { url = "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", size = 172736 } wheels = [ - { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552, upload-time = "2024-03-30T13:22:20.476Z" }, + { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552 }, ] [[package]] @@ -480,9 +480,9 @@ dependencies = [ { name = "typing-extensions" }, { name = "typing-inspection" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f0/86/8ce9040065e8f924d642c58e4a344e33163a07f6b57f836d0d734e0ad3fb/pydantic-2.11.5.tar.gz", hash = "sha256:7f853db3d0ce78ce8bbb148c401c2cdd6431b3473c0cdff2755c7690952a7b7a", size = 787102, upload-time = "2025-05-22T21:18:08.761Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f0/86/8ce9040065e8f924d642c58e4a344e33163a07f6b57f836d0d734e0ad3fb/pydantic-2.11.5.tar.gz", hash = "sha256:7f853db3d0ce78ce8bbb148c401c2cdd6431b3473c0cdff2755c7690952a7b7a", size = 787102 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b5/69/831ed22b38ff9b4b64b66569f0e5b7b97cf3638346eb95a2147fdb49ad5f/pydantic-2.11.5-py3-none-any.whl", hash = "sha256:f9c26ba06f9747749ca1e5c94d6a85cb84254577553c8785576fd38fa64dc0f7", size = 444229, upload-time = "2025-05-22T21:18:06.329Z" }, + { url = "https://files.pythonhosted.org/packages/b5/69/831ed22b38ff9b4b64b66569f0e5b7b97cf3638346eb95a2147fdb49ad5f/pydantic-2.11.5-py3-none-any.whl", hash = "sha256:f9c26ba06f9747749ca1e5c94d6a85cb84254577553c8785576fd38fa64dc0f7", size = 444229 }, ] [[package]] @@ -492,39 +492,39 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc", size = 435195, upload-time = "2025-04-23T18:33:52.104Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/18/8a/2b41c97f554ec8c71f2a8a5f85cb56a8b0956addfe8b0efb5b3d77e8bdc3/pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc", size = 2009000, upload-time = "2025-04-23T18:31:25.863Z" }, - { url = "https://files.pythonhosted.org/packages/a1/02/6224312aacb3c8ecbaa959897af57181fb6cf3a3d7917fd44d0f2917e6f2/pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7", size = 1847996, upload-time = "2025-04-23T18:31:27.341Z" }, - { url = "https://files.pythonhosted.org/packages/d6/46/6dcdf084a523dbe0a0be59d054734b86a981726f221f4562aed313dbcb49/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025", size = 1880957, upload-time = "2025-04-23T18:31:28.956Z" }, - { url = "https://files.pythonhosted.org/packages/ec/6b/1ec2c03837ac00886ba8160ce041ce4e325b41d06a034adbef11339ae422/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011", size = 1964199, upload-time = "2025-04-23T18:31:31.025Z" }, - { url = "https://files.pythonhosted.org/packages/2d/1d/6bf34d6adb9debd9136bd197ca72642203ce9aaaa85cfcbfcf20f9696e83/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f", size = 2120296, upload-time = "2025-04-23T18:31:32.514Z" }, - { url = "https://files.pythonhosted.org/packages/e0/94/2bd0aaf5a591e974b32a9f7123f16637776c304471a0ab33cf263cf5591a/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88", size = 2676109, upload-time = "2025-04-23T18:31:33.958Z" }, - { url = "https://files.pythonhosted.org/packages/f9/41/4b043778cf9c4285d59742281a769eac371b9e47e35f98ad321349cc5d61/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1", size = 2002028, upload-time = "2025-04-23T18:31:39.095Z" }, - { url = "https://files.pythonhosted.org/packages/cb/d5/7bb781bf2748ce3d03af04d5c969fa1308880e1dca35a9bd94e1a96a922e/pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b", size = 2100044, upload-time = "2025-04-23T18:31:41.034Z" }, - { url = "https://files.pythonhosted.org/packages/fe/36/def5e53e1eb0ad896785702a5bbfd25eed546cdcf4087ad285021a90ed53/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1", size = 2058881, upload-time = "2025-04-23T18:31:42.757Z" }, - { url = "https://files.pythonhosted.org/packages/01/6c/57f8d70b2ee57fc3dc8b9610315949837fa8c11d86927b9bb044f8705419/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6", size = 2227034, upload-time = "2025-04-23T18:31:44.304Z" }, - { url = "https://files.pythonhosted.org/packages/27/b9/9c17f0396a82b3d5cbea4c24d742083422639e7bb1d5bf600e12cb176a13/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea", size = 2234187, upload-time = "2025-04-23T18:31:45.891Z" }, - { url = "https://files.pythonhosted.org/packages/b0/6a/adf5734ffd52bf86d865093ad70b2ce543415e0e356f6cacabbc0d9ad910/pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290", size = 1892628, upload-time = "2025-04-23T18:31:47.819Z" }, - { url = "https://files.pythonhosted.org/packages/43/e4/5479fecb3606c1368d496a825d8411e126133c41224c1e7238be58b87d7e/pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2", size = 1955866, upload-time = "2025-04-23T18:31:49.635Z" }, - { url = "https://files.pythonhosted.org/packages/0d/24/8b11e8b3e2be9dd82df4b11408a67c61bb4dc4f8e11b5b0fc888b38118b5/pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab", size = 1888894, upload-time = "2025-04-23T18:31:51.609Z" }, - { url = "https://files.pythonhosted.org/packages/46/8c/99040727b41f56616573a28771b1bfa08a3d3fe74d3d513f01251f79f172/pydantic_core-2.33.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1082dd3e2d7109ad8b7da48e1d4710c8d06c253cbc4a27c1cff4fbcaa97a9e3f", size = 2015688, upload-time = "2025-04-23T18:31:53.175Z" }, - { url = "https://files.pythonhosted.org/packages/3a/cc/5999d1eb705a6cefc31f0b4a90e9f7fc400539b1a1030529700cc1b51838/pydantic_core-2.33.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f517ca031dfc037a9c07e748cefd8d96235088b83b4f4ba8939105d20fa1dcd6", size = 1844808, upload-time = "2025-04-23T18:31:54.79Z" }, - { url = "https://files.pythonhosted.org/packages/6f/5e/a0a7b8885c98889a18b6e376f344da1ef323d270b44edf8174d6bce4d622/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a9f2c9dd19656823cb8250b0724ee9c60a82f3cdf68a080979d13092a3b0fef", size = 1885580, upload-time = "2025-04-23T18:31:57.393Z" }, - { url = "https://files.pythonhosted.org/packages/3b/2a/953581f343c7d11a304581156618c3f592435523dd9d79865903272c256a/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b0a451c263b01acebe51895bfb0e1cc842a5c666efe06cdf13846c7418caa9a", size = 1973859, upload-time = "2025-04-23T18:31:59.065Z" }, - { url = "https://files.pythonhosted.org/packages/e6/55/f1a813904771c03a3f97f676c62cca0c0a4138654107c1b61f19c644868b/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ea40a64d23faa25e62a70ad163571c0b342b8bf66d5fa612ac0dec4f069d916", size = 2120810, upload-time = "2025-04-23T18:32:00.78Z" }, - { url = "https://files.pythonhosted.org/packages/aa/c3/053389835a996e18853ba107a63caae0b9deb4a276c6b472931ea9ae6e48/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb2d542b4d66f9470e8065c5469ec676978d625a8b7a363f07d9a501a9cb36a", size = 2676498, upload-time = "2025-04-23T18:32:02.418Z" }, - { url = "https://files.pythonhosted.org/packages/eb/3c/f4abd740877a35abade05e437245b192f9d0ffb48bbbbd708df33d3cda37/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdac5d6ffa1b5a83bca06ffe7583f5576555e6c8b3a91fbd25ea7780f825f7d", size = 2000611, upload-time = "2025-04-23T18:32:04.152Z" }, - { url = "https://files.pythonhosted.org/packages/59/a7/63ef2fed1837d1121a894d0ce88439fe3e3b3e48c7543b2a4479eb99c2bd/pydantic_core-2.33.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04a1a413977ab517154eebb2d326da71638271477d6ad87a769102f7c2488c56", size = 2107924, upload-time = "2025-04-23T18:32:06.129Z" }, - { url = "https://files.pythonhosted.org/packages/04/8f/2551964ef045669801675f1cfc3b0d74147f4901c3ffa42be2ddb1f0efc4/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c8e7af2f4e0194c22b5b37205bfb293d166a7344a5b0d0eaccebc376546d77d5", size = 2063196, upload-time = "2025-04-23T18:32:08.178Z" }, - { url = "https://files.pythonhosted.org/packages/26/bd/d9602777e77fc6dbb0c7db9ad356e9a985825547dce5ad1d30ee04903918/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:5c92edd15cd58b3c2d34873597a1e20f13094f59cf88068adb18947df5455b4e", size = 2236389, upload-time = "2025-04-23T18:32:10.242Z" }, - { url = "https://files.pythonhosted.org/packages/42/db/0e950daa7e2230423ab342ae918a794964b053bec24ba8af013fc7c94846/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:65132b7b4a1c0beded5e057324b7e16e10910c106d43675d9bd87d4f38dde162", size = 2239223, upload-time = "2025-04-23T18:32:12.382Z" }, - { url = "https://files.pythonhosted.org/packages/58/4d/4f937099c545a8a17eb52cb67fe0447fd9a373b348ccfa9a87f141eeb00f/pydantic_core-2.33.2-cp313-cp313-win32.whl", hash = "sha256:52fb90784e0a242bb96ec53f42196a17278855b0f31ac7c3cc6f5c1ec4811849", size = 1900473, upload-time = "2025-04-23T18:32:14.034Z" }, - { url = "https://files.pythonhosted.org/packages/a0/75/4a0a9bac998d78d889def5e4ef2b065acba8cae8c93696906c3a91f310ca/pydantic_core-2.33.2-cp313-cp313-win_amd64.whl", hash = "sha256:c083a3bdd5a93dfe480f1125926afcdbf2917ae714bdb80b36d34318b2bec5d9", size = 1955269, upload-time = "2025-04-23T18:32:15.783Z" }, - { url = "https://files.pythonhosted.org/packages/f9/86/1beda0576969592f1497b4ce8e7bc8cbdf614c352426271b1b10d5f0aa64/pydantic_core-2.33.2-cp313-cp313-win_arm64.whl", hash = "sha256:e80b087132752f6b3d714f041ccf74403799d3b23a72722ea2e6ba2e892555b9", size = 1893921, upload-time = "2025-04-23T18:32:18.473Z" }, - { url = "https://files.pythonhosted.org/packages/a4/7d/e09391c2eebeab681df2b74bfe6c43422fffede8dc74187b2b0bf6fd7571/pydantic_core-2.33.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61c18fba8e5e9db3ab908620af374db0ac1baa69f0f32df4f61ae23f15e586ac", size = 1806162, upload-time = "2025-04-23T18:32:20.188Z" }, - { url = "https://files.pythonhosted.org/packages/f1/3d/847b6b1fed9f8ed3bb95a9ad04fbd0b212e832d4f0f50ff4d9ee5a9f15cf/pydantic_core-2.33.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95237e53bb015f67b63c91af7518a62a8660376a6a0db19b89acc77a4d6199f5", size = 1981560, upload-time = "2025-04-23T18:32:22.354Z" }, - { url = "https://files.pythonhosted.org/packages/6f/9a/e73262f6c6656262b5fdd723ad90f518f579b7bc8622e43a942eec53c938/pydantic_core-2.33.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c2fc0a768ef76c15ab9238afa6da7f69895bb5d1ee83aeea2e3509af4472d0b9", size = 1935777, upload-time = "2025-04-23T18:32:25.088Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc", size = 435195 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/8a/2b41c97f554ec8c71f2a8a5f85cb56a8b0956addfe8b0efb5b3d77e8bdc3/pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc", size = 2009000 }, + { url = "https://files.pythonhosted.org/packages/a1/02/6224312aacb3c8ecbaa959897af57181fb6cf3a3d7917fd44d0f2917e6f2/pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7", size = 1847996 }, + { url = "https://files.pythonhosted.org/packages/d6/46/6dcdf084a523dbe0a0be59d054734b86a981726f221f4562aed313dbcb49/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025", size = 1880957 }, + { url = "https://files.pythonhosted.org/packages/ec/6b/1ec2c03837ac00886ba8160ce041ce4e325b41d06a034adbef11339ae422/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011", size = 1964199 }, + { url = "https://files.pythonhosted.org/packages/2d/1d/6bf34d6adb9debd9136bd197ca72642203ce9aaaa85cfcbfcf20f9696e83/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f", size = 2120296 }, + { url = "https://files.pythonhosted.org/packages/e0/94/2bd0aaf5a591e974b32a9f7123f16637776c304471a0ab33cf263cf5591a/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88", size = 2676109 }, + { url = "https://files.pythonhosted.org/packages/f9/41/4b043778cf9c4285d59742281a769eac371b9e47e35f98ad321349cc5d61/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1", size = 2002028 }, + { url = "https://files.pythonhosted.org/packages/cb/d5/7bb781bf2748ce3d03af04d5c969fa1308880e1dca35a9bd94e1a96a922e/pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b", size = 2100044 }, + { url = "https://files.pythonhosted.org/packages/fe/36/def5e53e1eb0ad896785702a5bbfd25eed546cdcf4087ad285021a90ed53/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1", size = 2058881 }, + { url = "https://files.pythonhosted.org/packages/01/6c/57f8d70b2ee57fc3dc8b9610315949837fa8c11d86927b9bb044f8705419/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6", size = 2227034 }, + { url = "https://files.pythonhosted.org/packages/27/b9/9c17f0396a82b3d5cbea4c24d742083422639e7bb1d5bf600e12cb176a13/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea", size = 2234187 }, + { url = "https://files.pythonhosted.org/packages/b0/6a/adf5734ffd52bf86d865093ad70b2ce543415e0e356f6cacabbc0d9ad910/pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290", size = 1892628 }, + { url = "https://files.pythonhosted.org/packages/43/e4/5479fecb3606c1368d496a825d8411e126133c41224c1e7238be58b87d7e/pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2", size = 1955866 }, + { url = "https://files.pythonhosted.org/packages/0d/24/8b11e8b3e2be9dd82df4b11408a67c61bb4dc4f8e11b5b0fc888b38118b5/pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab", size = 1888894 }, + { url = "https://files.pythonhosted.org/packages/46/8c/99040727b41f56616573a28771b1bfa08a3d3fe74d3d513f01251f79f172/pydantic_core-2.33.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1082dd3e2d7109ad8b7da48e1d4710c8d06c253cbc4a27c1cff4fbcaa97a9e3f", size = 2015688 }, + { url = "https://files.pythonhosted.org/packages/3a/cc/5999d1eb705a6cefc31f0b4a90e9f7fc400539b1a1030529700cc1b51838/pydantic_core-2.33.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f517ca031dfc037a9c07e748cefd8d96235088b83b4f4ba8939105d20fa1dcd6", size = 1844808 }, + { url = "https://files.pythonhosted.org/packages/6f/5e/a0a7b8885c98889a18b6e376f344da1ef323d270b44edf8174d6bce4d622/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a9f2c9dd19656823cb8250b0724ee9c60a82f3cdf68a080979d13092a3b0fef", size = 1885580 }, + { url = "https://files.pythonhosted.org/packages/3b/2a/953581f343c7d11a304581156618c3f592435523dd9d79865903272c256a/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b0a451c263b01acebe51895bfb0e1cc842a5c666efe06cdf13846c7418caa9a", size = 1973859 }, + { url = "https://files.pythonhosted.org/packages/e6/55/f1a813904771c03a3f97f676c62cca0c0a4138654107c1b61f19c644868b/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ea40a64d23faa25e62a70ad163571c0b342b8bf66d5fa612ac0dec4f069d916", size = 2120810 }, + { url = "https://files.pythonhosted.org/packages/aa/c3/053389835a996e18853ba107a63caae0b9deb4a276c6b472931ea9ae6e48/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb2d542b4d66f9470e8065c5469ec676978d625a8b7a363f07d9a501a9cb36a", size = 2676498 }, + { url = "https://files.pythonhosted.org/packages/eb/3c/f4abd740877a35abade05e437245b192f9d0ffb48bbbbd708df33d3cda37/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdac5d6ffa1b5a83bca06ffe7583f5576555e6c8b3a91fbd25ea7780f825f7d", size = 2000611 }, + { url = "https://files.pythonhosted.org/packages/59/a7/63ef2fed1837d1121a894d0ce88439fe3e3b3e48c7543b2a4479eb99c2bd/pydantic_core-2.33.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04a1a413977ab517154eebb2d326da71638271477d6ad87a769102f7c2488c56", size = 2107924 }, + { url = "https://files.pythonhosted.org/packages/04/8f/2551964ef045669801675f1cfc3b0d74147f4901c3ffa42be2ddb1f0efc4/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c8e7af2f4e0194c22b5b37205bfb293d166a7344a5b0d0eaccebc376546d77d5", size = 2063196 }, + { url = "https://files.pythonhosted.org/packages/26/bd/d9602777e77fc6dbb0c7db9ad356e9a985825547dce5ad1d30ee04903918/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:5c92edd15cd58b3c2d34873597a1e20f13094f59cf88068adb18947df5455b4e", size = 2236389 }, + { url = "https://files.pythonhosted.org/packages/42/db/0e950daa7e2230423ab342ae918a794964b053bec24ba8af013fc7c94846/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:65132b7b4a1c0beded5e057324b7e16e10910c106d43675d9bd87d4f38dde162", size = 2239223 }, + { url = "https://files.pythonhosted.org/packages/58/4d/4f937099c545a8a17eb52cb67fe0447fd9a373b348ccfa9a87f141eeb00f/pydantic_core-2.33.2-cp313-cp313-win32.whl", hash = "sha256:52fb90784e0a242bb96ec53f42196a17278855b0f31ac7c3cc6f5c1ec4811849", size = 1900473 }, + { url = "https://files.pythonhosted.org/packages/a0/75/4a0a9bac998d78d889def5e4ef2b065acba8cae8c93696906c3a91f310ca/pydantic_core-2.33.2-cp313-cp313-win_amd64.whl", hash = "sha256:c083a3bdd5a93dfe480f1125926afcdbf2917ae714bdb80b36d34318b2bec5d9", size = 1955269 }, + { url = "https://files.pythonhosted.org/packages/f9/86/1beda0576969592f1497b4ce8e7bc8cbdf614c352426271b1b10d5f0aa64/pydantic_core-2.33.2-cp313-cp313-win_arm64.whl", hash = "sha256:e80b087132752f6b3d714f041ccf74403799d3b23a72722ea2e6ba2e892555b9", size = 1893921 }, + { url = "https://files.pythonhosted.org/packages/a4/7d/e09391c2eebeab681df2b74bfe6c43422fffede8dc74187b2b0bf6fd7571/pydantic_core-2.33.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61c18fba8e5e9db3ab908620af374db0ac1baa69f0f32df4f61ae23f15e586ac", size = 1806162 }, + { url = "https://files.pythonhosted.org/packages/f1/3d/847b6b1fed9f8ed3bb95a9ad04fbd0b212e832d4f0f50ff4d9ee5a9f15cf/pydantic_core-2.33.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95237e53bb015f67b63c91af7518a62a8660376a6a0db19b89acc77a4d6199f5", size = 1981560 }, + { url = "https://files.pythonhosted.org/packages/6f/9a/e73262f6c6656262b5fdd723ad90f518f579b7bc8622e43a942eec53c938/pydantic_core-2.33.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c2fc0a768ef76c15ab9238afa6da7f69895bb5d1ee83aeea2e3509af4472d0b9", size = 1935777 }, ] [[package]] @@ -536,9 +536,9 @@ dependencies = [ { name = "python-dotenv" }, { name = "typing-inspection" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/67/1d/42628a2c33e93f8e9acbde0d5d735fa0850f3e6a2f8cb1eb6c40b9a732ac/pydantic_settings-2.9.1.tar.gz", hash = "sha256:c509bf79d27563add44e8446233359004ed85066cd096d8b510f715e6ef5d268", size = 163234, upload-time = "2025-04-18T16:44:48.265Z" } +sdist = { url = "https://files.pythonhosted.org/packages/67/1d/42628a2c33e93f8e9acbde0d5d735fa0850f3e6a2f8cb1eb6c40b9a732ac/pydantic_settings-2.9.1.tar.gz", hash = "sha256:c509bf79d27563add44e8446233359004ed85066cd096d8b510f715e6ef5d268", size = 163234 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b6/5f/d6d641b490fd3ec2c4c13b4244d68deea3a1b970a97be64f34fb5504ff72/pydantic_settings-2.9.1-py3-none-any.whl", hash = "sha256:59b4f431b1defb26fe620c71a7d3968a710d719f5f4cdbbdb7926edeb770f6ef", size = 44356, upload-time = "2025-04-18T16:44:46.617Z" }, + { url = "https://files.pythonhosted.org/packages/b6/5f/d6d641b490fd3ec2c4c13b4244d68deea3a1b970a97be64f34fb5504ff72/pydantic_settings-2.9.1-py3-none-any.whl", hash = "sha256:59b4f431b1defb26fe620c71a7d3968a710d719f5f4cdbbdb7926edeb770f6ef", size = 44356 }, ] [[package]] @@ -551,9 +551,9 @@ dependencies = [ { name = "packaging" }, { name = "pluggy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ae/3c/c9d525a414d506893f0cd8a8d0de7706446213181570cdbd766691164e40/pytest-8.3.5.tar.gz", hash = "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845", size = 1450891, upload-time = "2025-03-02T12:54:54.503Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ae/3c/c9d525a414d506893f0cd8a8d0de7706446213181570cdbd766691164e40/pytest-8.3.5.tar.gz", hash = "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845", size = 1450891 } wheels = [ - { url = "https://files.pythonhosted.org/packages/30/3d/64ad57c803f1fa1e963a7946b6e0fea4a70df53c1a7fed304586539c2bac/pytest-8.3.5-py3-none-any.whl", hash = "sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820", size = 343634, upload-time = "2025-03-02T12:54:52.069Z" }, + { url = "https://files.pythonhosted.org/packages/30/3d/64ad57c803f1fa1e963a7946b6e0fea4a70df53c1a7fed304586539c2bac/pytest-8.3.5-py3-none-any.whl", hash = "sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820", size = 343634 }, ] [[package]] @@ -563,18 +563,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "six" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432 } wheels = [ - { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892 }, ] [[package]] name = "python-dotenv" version = "1.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/88/2c/7bb1416c5620485aa793f2de31d3df393d3686aa8a8506d11e10e13c5baf/python_dotenv-1.1.0.tar.gz", hash = "sha256:41f90bc6f5f177fb41f53e87666db362025010eb28f60a01c9143bfa33a2b2d5", size = 39920, upload-time = "2025-03-25T10:14:56.835Z" } +sdist = { url = "https://files.pythonhosted.org/packages/88/2c/7bb1416c5620485aa793f2de31d3df393d3686aa8a8506d11e10e13c5baf/python_dotenv-1.1.0.tar.gz", hash = "sha256:41f90bc6f5f177fb41f53e87666db362025010eb28f60a01c9143bfa33a2b2d5", size = 39920 } wheels = [ - { url = "https://files.pythonhosted.org/packages/1e/18/98a99ad95133c6a6e2005fe89faedf294a748bd5dc803008059409ac9b1e/python_dotenv-1.1.0-py3-none-any.whl", hash = "sha256:d7c01d9e2293916c18baf562d95698754b0dbbb5e74d457c45d4f6561fb9d55d", size = 20256, upload-time = "2025-03-25T10:14:55.034Z" }, + { url = "https://files.pythonhosted.org/packages/1e/18/98a99ad95133c6a6e2005fe89faedf294a748bd5dc803008059409ac9b1e/python_dotenv-1.1.0-py3-none-any.whl", hash = "sha256:d7c01d9e2293916c18baf562d95698754b0dbbb5e74d457c45d4f6561fb9d55d", size = 20256 }, ] [[package]] @@ -582,38 +582,38 @@ name = "pywin32" version = "310" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6b/ec/4fdbe47932f671d6e348474ea35ed94227fb5df56a7c30cbbb42cd396ed0/pywin32-310-cp312-cp312-win32.whl", hash = "sha256:8a75a5cc3893e83a108c05d82198880704c44bbaee4d06e442e471d3c9ea4f3d", size = 8796239, upload-time = "2025-03-17T00:55:58.807Z" }, - { url = "https://files.pythonhosted.org/packages/e3/e5/b0627f8bb84e06991bea89ad8153a9e50ace40b2e1195d68e9dff6b03d0f/pywin32-310-cp312-cp312-win_amd64.whl", hash = "sha256:bf5c397c9a9a19a6f62f3fb821fbf36cac08f03770056711f765ec1503972060", size = 9503839, upload-time = "2025-03-17T00:56:00.8Z" }, - { url = "https://files.pythonhosted.org/packages/1f/32/9ccf53748df72301a89713936645a664ec001abd35ecc8578beda593d37d/pywin32-310-cp312-cp312-win_arm64.whl", hash = "sha256:2349cc906eae872d0663d4d6290d13b90621eaf78964bb1578632ff20e152966", size = 8459470, upload-time = "2025-03-17T00:56:02.601Z" }, - { url = "https://files.pythonhosted.org/packages/1c/09/9c1b978ffc4ae53999e89c19c77ba882d9fce476729f23ef55211ea1c034/pywin32-310-cp313-cp313-win32.whl", hash = "sha256:5d241a659c496ada3253cd01cfaa779b048e90ce4b2b38cd44168ad555ce74ab", size = 8794384, upload-time = "2025-03-17T00:56:04.383Z" }, - { url = "https://files.pythonhosted.org/packages/45/3c/b4640f740ffebadd5d34df35fecba0e1cfef8fde9f3e594df91c28ad9b50/pywin32-310-cp313-cp313-win_amd64.whl", hash = "sha256:667827eb3a90208ddbdcc9e860c81bde63a135710e21e4cb3348968e4bd5249e", size = 9503039, upload-time = "2025-03-17T00:56:06.207Z" }, - { url = "https://files.pythonhosted.org/packages/b4/f4/f785020090fb050e7fb6d34b780f2231f302609dc964672f72bfaeb59a28/pywin32-310-cp313-cp313-win_arm64.whl", hash = "sha256:e308f831de771482b7cf692a1f308f8fca701b2d8f9dde6cc440c7da17e47b33", size = 8458152, upload-time = "2025-03-17T00:56:07.819Z" }, + { url = "https://files.pythonhosted.org/packages/6b/ec/4fdbe47932f671d6e348474ea35ed94227fb5df56a7c30cbbb42cd396ed0/pywin32-310-cp312-cp312-win32.whl", hash = "sha256:8a75a5cc3893e83a108c05d82198880704c44bbaee4d06e442e471d3c9ea4f3d", size = 8796239 }, + { url = "https://files.pythonhosted.org/packages/e3/e5/b0627f8bb84e06991bea89ad8153a9e50ace40b2e1195d68e9dff6b03d0f/pywin32-310-cp312-cp312-win_amd64.whl", hash = "sha256:bf5c397c9a9a19a6f62f3fb821fbf36cac08f03770056711f765ec1503972060", size = 9503839 }, + { url = "https://files.pythonhosted.org/packages/1f/32/9ccf53748df72301a89713936645a664ec001abd35ecc8578beda593d37d/pywin32-310-cp312-cp312-win_arm64.whl", hash = "sha256:2349cc906eae872d0663d4d6290d13b90621eaf78964bb1578632ff20e152966", size = 8459470 }, + { url = "https://files.pythonhosted.org/packages/1c/09/9c1b978ffc4ae53999e89c19c77ba882d9fce476729f23ef55211ea1c034/pywin32-310-cp313-cp313-win32.whl", hash = "sha256:5d241a659c496ada3253cd01cfaa779b048e90ce4b2b38cd44168ad555ce74ab", size = 8794384 }, + { url = "https://files.pythonhosted.org/packages/45/3c/b4640f740ffebadd5d34df35fecba0e1cfef8fde9f3e594df91c28ad9b50/pywin32-310-cp313-cp313-win_amd64.whl", hash = "sha256:667827eb3a90208ddbdcc9e860c81bde63a135710e21e4cb3348968e4bd5249e", size = 9503039 }, + { url = "https://files.pythonhosted.org/packages/b4/f4/f785020090fb050e7fb6d34b780f2231f302609dc964672f72bfaeb59a28/pywin32-310-cp313-cp313-win_arm64.whl", hash = "sha256:e308f831de771482b7cf692a1f308f8fca701b2d8f9dde6cc440c7da17e47b33", size = 8458152 }, ] [[package]] name = "pyyaml" version = "6.0.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631, upload-time = "2024-08-06T20:33:50.674Z" } -wheels = [ - { 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, upload-time = "2024-08-06T20:32:25.131Z" }, - { 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, upload-time = "2024-08-06T20:32:26.511Z" }, - { 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, upload-time = "2024-08-06T20:32:28.363Z" }, - { 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, upload-time = "2024-08-06T20:32:30.058Z" }, - { 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, upload-time = "2024-08-06T20:32:31.881Z" }, - { 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, upload-time = "2024-08-06T20:32:37.083Z" }, - { 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, upload-time = "2024-08-06T20:32:38.898Z" }, - { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591, upload-time = "2024-08-06T20:32:40.241Z" }, - { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338, upload-time = "2024-08-06T20:32:41.93Z" }, - { 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, upload-time = "2024-08-06T20:32:43.4Z" }, - { 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, upload-time = "2024-08-06T20:32:44.801Z" }, - { 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, upload-time = "2024-08-06T20:32:46.432Z" }, - { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361, upload-time = "2024-08-06T20:32:51.188Z" }, - { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523, upload-time = "2024-08-06T20:32:53.019Z" }, - { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660, upload-time = "2024-08-06T20:32:54.708Z" }, - { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597, upload-time = "2024-08-06T20:32:56.985Z" }, - { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527, upload-time = "2024-08-06T20:33:03.001Z" }, - { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446, upload-time = "2024-08-06T20:33:04.33Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631 } +wheels = [ + { 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 }, + { 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 }, + { 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 }, + { 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 }, + { 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 }, + { 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 }, + { 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 }, + { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591 }, + { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338 }, + { 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 }, + { 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 }, + { 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 }, + { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361 }, + { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523 }, + { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660 }, + { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597 }, + { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527 }, + { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446 }, ] [[package]] @@ -626,9 +626,9 @@ dependencies = [ { name = "idna" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", size = 131218, upload-time = "2024-05-29T15:37:49.536Z" } +sdist = { url = "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", size = 131218 } wheels = [ - { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928, upload-time = "2024-05-29T15:37:47.027Z" }, + { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928 }, ] [[package]] @@ -640,34 +640,34 @@ dependencies = [ { name = "requests" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/81/7e/2345ac3299bd62bd7163216702bbc88976c099cfceba5b889f2a457727a1/responses-0.25.7.tar.gz", hash = "sha256:8ebae11405d7a5df79ab6fd54277f6f2bc29b2d002d0dd2d5c632594d1ddcedb", size = 79203, upload-time = "2025-03-11T15:36:16.624Z" } +sdist = { url = "https://files.pythonhosted.org/packages/81/7e/2345ac3299bd62bd7163216702bbc88976c099cfceba5b889f2a457727a1/responses-0.25.7.tar.gz", hash = "sha256:8ebae11405d7a5df79ab6fd54277f6f2bc29b2d002d0dd2d5c632594d1ddcedb", size = 79203 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e4/fc/1d20b64fa90e81e4fa0a34c9b0240a6cfb1326b7e06d18a5432a9917c316/responses-0.25.7-py3-none-any.whl", hash = "sha256:92ca17416c90fe6b35921f52179bff29332076bb32694c0df02dcac2c6bc043c", size = 34732, upload-time = "2025-03-11T15:36:14.589Z" }, + { url = "https://files.pythonhosted.org/packages/e4/fc/1d20b64fa90e81e4fa0a34c9b0240a6cfb1326b7e06d18a5432a9917c316/responses-0.25.7-py3-none-any.whl", hash = "sha256:92ca17416c90fe6b35921f52179bff29332076bb32694c0df02dcac2c6bc043c", size = 34732 }, ] [[package]] name = "ruff" version = "0.11.11" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b2/53/ae4857030d59286924a8bdb30d213d6ff22d8f0957e738d0289990091dd8/ruff-0.11.11.tar.gz", hash = "sha256:7774173cc7c1980e6bf67569ebb7085989a78a103922fb83ef3dfe230cd0687d", size = 4186707, upload-time = "2025-05-22T19:19:34.363Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b2/53/ae4857030d59286924a8bdb30d213d6ff22d8f0957e738d0289990091dd8/ruff-0.11.11.tar.gz", hash = "sha256:7774173cc7c1980e6bf67569ebb7085989a78a103922fb83ef3dfe230cd0687d", size = 4186707 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b1/14/f2326676197bab099e2a24473158c21656fbf6a207c65f596ae15acb32b9/ruff-0.11.11-py3-none-linux_armv6l.whl", hash = "sha256:9924e5ae54125ed8958a4f7de320dab7380f6e9fa3195e3dc3b137c6842a0092", size = 10229049, upload-time = "2025-05-22T19:18:45.516Z" }, - { url = "https://files.pythonhosted.org/packages/9a/f3/bff7c92dd66c959e711688b2e0768e486bbca46b2f35ac319bb6cce04447/ruff-0.11.11-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:c8a93276393d91e952f790148eb226658dd275cddfde96c6ca304873f11d2ae4", size = 11053601, upload-time = "2025-05-22T19:18:49.269Z" }, - { url = "https://files.pythonhosted.org/packages/e2/38/8e1a3efd0ef9d8259346f986b77de0f62c7a5ff4a76563b6b39b68f793b9/ruff-0.11.11-py3-none-macosx_11_0_arm64.whl", hash = "sha256:d6e333dbe2e6ae84cdedefa943dfd6434753ad321764fd937eef9d6b62022bcd", size = 10367421, upload-time = "2025-05-22T19:18:51.754Z" }, - { url = "https://files.pythonhosted.org/packages/b4/50/557ad9dd4fb9d0bf524ec83a090a3932d284d1a8b48b5906b13b72800e5f/ruff-0.11.11-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7885d9a5e4c77b24e8c88aba8c80be9255fa22ab326019dac2356cff42089fc6", size = 10581980, upload-time = "2025-05-22T19:18:54.011Z" }, - { url = "https://files.pythonhosted.org/packages/c4/b2/e2ed82d6e2739ece94f1bdbbd1d81b712d3cdaf69f0a1d1f1a116b33f9ad/ruff-0.11.11-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1b5ab797fcc09121ed82e9b12b6f27e34859e4227080a42d090881be888755d4", size = 10089241, upload-time = "2025-05-22T19:18:56.041Z" }, - { url = "https://files.pythonhosted.org/packages/3d/9f/b4539f037a5302c450d7c695c82f80e98e48d0d667ecc250e6bdeb49b5c3/ruff-0.11.11-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e231ff3132c1119ece836487a02785f099a43992b95c2f62847d29bace3c75ac", size = 11699398, upload-time = "2025-05-22T19:18:58.248Z" }, - { url = "https://files.pythonhosted.org/packages/61/fb/32e029d2c0b17df65e6eaa5ce7aea5fbeaed22dddd9fcfbbf5fe37c6e44e/ruff-0.11.11-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:a97c9babe1d4081037a90289986925726b802d180cca784ac8da2bbbc335f709", size = 12427955, upload-time = "2025-05-22T19:19:00.981Z" }, - { url = "https://files.pythonhosted.org/packages/6e/e3/160488dbb11f18c8121cfd588e38095ba779ae208292765972f7732bfd95/ruff-0.11.11-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d8c4ddcbe8a19f59f57fd814b8b117d4fcea9bee7c0492e6cf5fdc22cfa563c8", size = 12069803, upload-time = "2025-05-22T19:19:03.258Z" }, - { url = "https://files.pythonhosted.org/packages/ff/16/3b006a875f84b3d0bff24bef26b8b3591454903f6f754b3f0a318589dcc3/ruff-0.11.11-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6224076c344a7694c6fbbb70d4f2a7b730f6d47d2a9dc1e7f9d9bb583faf390b", size = 11242630, upload-time = "2025-05-22T19:19:05.871Z" }, - { url = "https://files.pythonhosted.org/packages/65/0d/0338bb8ac0b97175c2d533e9c8cdc127166de7eb16d028a43c5ab9e75abd/ruff-0.11.11-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:882821fcdf7ae8db7a951df1903d9cb032bbe838852e5fc3c2b6c3ab54e39875", size = 11507310, upload-time = "2025-05-22T19:19:08.584Z" }, - { url = "https://files.pythonhosted.org/packages/6f/bf/d7130eb26174ce9b02348b9f86d5874eafbf9f68e5152e15e8e0a392e4a3/ruff-0.11.11-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:dcec2d50756463d9df075a26a85a6affbc1b0148873da3997286caf1ce03cae1", size = 10441144, upload-time = "2025-05-22T19:19:13.621Z" }, - { url = "https://files.pythonhosted.org/packages/b3/f3/4be2453b258c092ff7b1761987cf0749e70ca1340cd1bfb4def08a70e8d8/ruff-0.11.11-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:99c28505ecbaeb6594701a74e395b187ee083ee26478c1a795d35084d53ebd81", size = 10081987, upload-time = "2025-05-22T19:19:15.821Z" }, - { url = "https://files.pythonhosted.org/packages/6c/6e/dfa4d2030c5b5c13db158219f2ec67bf333e8a7748dccf34cfa2a6ab9ebc/ruff-0.11.11-py3-none-musllinux_1_2_i686.whl", hash = "sha256:9263f9e5aa4ff1dec765e99810f1cc53f0c868c5329b69f13845f699fe74f639", size = 11073922, upload-time = "2025-05-22T19:19:18.104Z" }, - { url = "https://files.pythonhosted.org/packages/ff/f4/f7b0b0c3d32b593a20ed8010fa2c1a01f2ce91e79dda6119fcc51d26c67b/ruff-0.11.11-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:64ac6f885e3ecb2fdbb71de2701d4e34526651f1e8503af8fb30d4915a3fe345", size = 11568537, upload-time = "2025-05-22T19:19:20.889Z" }, - { url = "https://files.pythonhosted.org/packages/d2/46/0e892064d0adc18bcc81deed9aaa9942a27fd2cd9b1b7791111ce468c25f/ruff-0.11.11-py3-none-win32.whl", hash = "sha256:1adcb9a18802268aaa891ffb67b1c94cd70578f126637118e8099b8e4adcf112", size = 10536492, upload-time = "2025-05-22T19:19:23.642Z" }, - { url = "https://files.pythonhosted.org/packages/1b/d9/232e79459850b9f327e9f1dc9c047a2a38a6f9689e1ec30024841fc4416c/ruff-0.11.11-py3-none-win_amd64.whl", hash = "sha256:748b4bb245f11e91a04a4ff0f96e386711df0a30412b9fe0c74d5bdc0e4a531f", size = 11612562, upload-time = "2025-05-22T19:19:27.013Z" }, - { url = "https://files.pythonhosted.org/packages/ce/eb/09c132cff3cc30b2e7244191dcce69437352d6d6709c0adf374f3e6f476e/ruff-0.11.11-py3-none-win_arm64.whl", hash = "sha256:6c51f136c0364ab1b774767aa8b86331bd8e9d414e2d107db7a2189f35ea1f7b", size = 10735951, upload-time = "2025-05-22T19:19:30.043Z" }, + { url = "https://files.pythonhosted.org/packages/b1/14/f2326676197bab099e2a24473158c21656fbf6a207c65f596ae15acb32b9/ruff-0.11.11-py3-none-linux_armv6l.whl", hash = "sha256:9924e5ae54125ed8958a4f7de320dab7380f6e9fa3195e3dc3b137c6842a0092", size = 10229049 }, + { url = "https://files.pythonhosted.org/packages/9a/f3/bff7c92dd66c959e711688b2e0768e486bbca46b2f35ac319bb6cce04447/ruff-0.11.11-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:c8a93276393d91e952f790148eb226658dd275cddfde96c6ca304873f11d2ae4", size = 11053601 }, + { url = "https://files.pythonhosted.org/packages/e2/38/8e1a3efd0ef9d8259346f986b77de0f62c7a5ff4a76563b6b39b68f793b9/ruff-0.11.11-py3-none-macosx_11_0_arm64.whl", hash = "sha256:d6e333dbe2e6ae84cdedefa943dfd6434753ad321764fd937eef9d6b62022bcd", size = 10367421 }, + { url = "https://files.pythonhosted.org/packages/b4/50/557ad9dd4fb9d0bf524ec83a090a3932d284d1a8b48b5906b13b72800e5f/ruff-0.11.11-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7885d9a5e4c77b24e8c88aba8c80be9255fa22ab326019dac2356cff42089fc6", size = 10581980 }, + { url = "https://files.pythonhosted.org/packages/c4/b2/e2ed82d6e2739ece94f1bdbbd1d81b712d3cdaf69f0a1d1f1a116b33f9ad/ruff-0.11.11-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1b5ab797fcc09121ed82e9b12b6f27e34859e4227080a42d090881be888755d4", size = 10089241 }, + { url = "https://files.pythonhosted.org/packages/3d/9f/b4539f037a5302c450d7c695c82f80e98e48d0d667ecc250e6bdeb49b5c3/ruff-0.11.11-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e231ff3132c1119ece836487a02785f099a43992b95c2f62847d29bace3c75ac", size = 11699398 }, + { url = "https://files.pythonhosted.org/packages/61/fb/32e029d2c0b17df65e6eaa5ce7aea5fbeaed22dddd9fcfbbf5fe37c6e44e/ruff-0.11.11-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:a97c9babe1d4081037a90289986925726b802d180cca784ac8da2bbbc335f709", size = 12427955 }, + { url = "https://files.pythonhosted.org/packages/6e/e3/160488dbb11f18c8121cfd588e38095ba779ae208292765972f7732bfd95/ruff-0.11.11-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d8c4ddcbe8a19f59f57fd814b8b117d4fcea9bee7c0492e6cf5fdc22cfa563c8", size = 12069803 }, + { url = "https://files.pythonhosted.org/packages/ff/16/3b006a875f84b3d0bff24bef26b8b3591454903f6f754b3f0a318589dcc3/ruff-0.11.11-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6224076c344a7694c6fbbb70d4f2a7b730f6d47d2a9dc1e7f9d9bb583faf390b", size = 11242630 }, + { url = "https://files.pythonhosted.org/packages/65/0d/0338bb8ac0b97175c2d533e9c8cdc127166de7eb16d028a43c5ab9e75abd/ruff-0.11.11-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:882821fcdf7ae8db7a951df1903d9cb032bbe838852e5fc3c2b6c3ab54e39875", size = 11507310 }, + { url = "https://files.pythonhosted.org/packages/6f/bf/d7130eb26174ce9b02348b9f86d5874eafbf9f68e5152e15e8e0a392e4a3/ruff-0.11.11-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:dcec2d50756463d9df075a26a85a6affbc1b0148873da3997286caf1ce03cae1", size = 10441144 }, + { url = "https://files.pythonhosted.org/packages/b3/f3/4be2453b258c092ff7b1761987cf0749e70ca1340cd1bfb4def08a70e8d8/ruff-0.11.11-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:99c28505ecbaeb6594701a74e395b187ee083ee26478c1a795d35084d53ebd81", size = 10081987 }, + { url = "https://files.pythonhosted.org/packages/6c/6e/dfa4d2030c5b5c13db158219f2ec67bf333e8a7748dccf34cfa2a6ab9ebc/ruff-0.11.11-py3-none-musllinux_1_2_i686.whl", hash = "sha256:9263f9e5aa4ff1dec765e99810f1cc53f0c868c5329b69f13845f699fe74f639", size = 11073922 }, + { url = "https://files.pythonhosted.org/packages/ff/f4/f7b0b0c3d32b593a20ed8010fa2c1a01f2ce91e79dda6119fcc51d26c67b/ruff-0.11.11-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:64ac6f885e3ecb2fdbb71de2701d4e34526651f1e8503af8fb30d4915a3fe345", size = 11568537 }, + { url = "https://files.pythonhosted.org/packages/d2/46/0e892064d0adc18bcc81deed9aaa9942a27fd2cd9b1b7791111ce468c25f/ruff-0.11.11-py3-none-win32.whl", hash = "sha256:1adcb9a18802268aaa891ffb67b1c94cd70578f126637118e8099b8e4adcf112", size = 10536492 }, + { url = "https://files.pythonhosted.org/packages/1b/d9/232e79459850b9f327e9f1dc9c047a2a38a6f9689e1ec30024841fc4416c/ruff-0.11.11-py3-none-win_amd64.whl", hash = "sha256:748b4bb245f11e91a04a4ff0f96e386711df0a30412b9fe0c74d5bdc0e4a531f", size = 11612562 }, + { url = "https://files.pythonhosted.org/packages/ce/eb/09c132cff3cc30b2e7244191dcce69437352d6d6709c0adf374f3e6f476e/ruff-0.11.11-py3-none-win_arm64.whl", hash = "sha256:6c51f136c0364ab1b774767aa8b86331bd8e9d414e2d107db7a2189f35ea1f7b", size = 10735951 }, ] [[package]] @@ -677,56 +677,56 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "botocore" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ed/5d/9dcc100abc6711e8247af5aa561fc07c4a046f72f659c3adea9a449e191a/s3transfer-0.13.0.tar.gz", hash = "sha256:f5e6db74eb7776a37208001113ea7aa97695368242b364d73e91c981ac522177", size = 150232, upload-time = "2025-05-22T19:24:50.245Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ed/5d/9dcc100abc6711e8247af5aa561fc07c4a046f72f659c3adea9a449e191a/s3transfer-0.13.0.tar.gz", hash = "sha256:f5e6db74eb7776a37208001113ea7aa97695368242b364d73e91c981ac522177", size = 150232 } wheels = [ - { url = "https://files.pythonhosted.org/packages/18/17/22bf8155aa0ea2305eefa3a6402e040df7ebe512d1310165eda1e233c3f8/s3transfer-0.13.0-py3-none-any.whl", hash = "sha256:0148ef34d6dd964d0d8cf4311b2b21c474693e57c2e069ec708ce043d2b527be", size = 85152, upload-time = "2025-05-22T19:24:48.703Z" }, + { url = "https://files.pythonhosted.org/packages/18/17/22bf8155aa0ea2305eefa3a6402e040df7ebe512d1310165eda1e233c3f8/s3transfer-0.13.0-py3-none-any.whl", hash = "sha256:0148ef34d6dd964d0d8cf4311b2b21c474693e57c2e069ec708ce043d2b527be", size = 85152 }, ] [[package]] name = "six" version = "1.17.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050 }, ] [[package]] name = "tomli" version = "2.2.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/18/87/302344fed471e44a87289cf4967697d07e532f2421fdaf868a303cbae4ff/tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff", size = 17175, upload-time = "2024-11-27T22:38:36.873Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/52/e1/f8af4c2fcde17500422858155aeb0d7e93477a0d59a98e56cbfe75070fd0/tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea", size = 132762, upload-time = "2024-11-27T22:38:07.731Z" }, - { url = "https://files.pythonhosted.org/packages/03/b8/152c68bb84fc00396b83e7bbddd5ec0bd3dd409db4195e2a9b3e398ad2e3/tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8", size = 123453, upload-time = "2024-11-27T22:38:09.384Z" }, - { url = "https://files.pythonhosted.org/packages/c8/d6/fc9267af9166f79ac528ff7e8c55c8181ded34eb4b0e93daa767b8841573/tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192", size = 233486, upload-time = "2024-11-27T22:38:10.329Z" }, - { url = "https://files.pythonhosted.org/packages/5c/51/51c3f2884d7bab89af25f678447ea7d297b53b5a3b5730a7cb2ef6069f07/tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222", size = 242349, upload-time = "2024-11-27T22:38:11.443Z" }, - { url = "https://files.pythonhosted.org/packages/ab/df/bfa89627d13a5cc22402e441e8a931ef2108403db390ff3345c05253935e/tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77", size = 252159, upload-time = "2024-11-27T22:38:13.099Z" }, - { url = "https://files.pythonhosted.org/packages/9e/6e/fa2b916dced65763a5168c6ccb91066f7639bdc88b48adda990db10c8c0b/tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6", size = 237243, upload-time = "2024-11-27T22:38:14.766Z" }, - { url = "https://files.pythonhosted.org/packages/b4/04/885d3b1f650e1153cbb93a6a9782c58a972b94ea4483ae4ac5cedd5e4a09/tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd", size = 259645, upload-time = "2024-11-27T22:38:15.843Z" }, - { url = "https://files.pythonhosted.org/packages/9c/de/6b432d66e986e501586da298e28ebeefd3edc2c780f3ad73d22566034239/tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e", size = 244584, upload-time = "2024-11-27T22:38:17.645Z" }, - { url = "https://files.pythonhosted.org/packages/1c/9a/47c0449b98e6e7d1be6cbac02f93dd79003234ddc4aaab6ba07a9a7482e2/tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98", size = 98875, upload-time = "2024-11-27T22:38:19.159Z" }, - { url = "https://files.pythonhosted.org/packages/ef/60/9b9638f081c6f1261e2688bd487625cd1e660d0a85bd469e91d8db969734/tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4", size = 109418, upload-time = "2024-11-27T22:38:20.064Z" }, - { url = "https://files.pythonhosted.org/packages/04/90/2ee5f2e0362cb8a0b6499dc44f4d7d48f8fff06d28ba46e6f1eaa61a1388/tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7", size = 132708, upload-time = "2024-11-27T22:38:21.659Z" }, - { url = "https://files.pythonhosted.org/packages/c0/ec/46b4108816de6b385141f082ba99e315501ccd0a2ea23db4a100dd3990ea/tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c", size = 123582, upload-time = "2024-11-27T22:38:22.693Z" }, - { url = "https://files.pythonhosted.org/packages/a0/bd/b470466d0137b37b68d24556c38a0cc819e8febe392d5b199dcd7f578365/tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13", size = 232543, upload-time = "2024-11-27T22:38:24.367Z" }, - { url = "https://files.pythonhosted.org/packages/d9/e5/82e80ff3b751373f7cead2815bcbe2d51c895b3c990686741a8e56ec42ab/tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281", size = 241691, upload-time = "2024-11-27T22:38:26.081Z" }, - { url = "https://files.pythonhosted.org/packages/05/7e/2a110bc2713557d6a1bfb06af23dd01e7dde52b6ee7dadc589868f9abfac/tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272", size = 251170, upload-time = "2024-11-27T22:38:27.921Z" }, - { url = "https://files.pythonhosted.org/packages/64/7b/22d713946efe00e0adbcdfd6d1aa119ae03fd0b60ebed51ebb3fa9f5a2e5/tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140", size = 236530, upload-time = "2024-11-27T22:38:29.591Z" }, - { url = "https://files.pythonhosted.org/packages/38/31/3a76f67da4b0cf37b742ca76beaf819dca0ebef26d78fc794a576e08accf/tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2", size = 258666, upload-time = "2024-11-27T22:38:30.639Z" }, - { url = "https://files.pythonhosted.org/packages/07/10/5af1293da642aded87e8a988753945d0cf7e00a9452d3911dd3bb354c9e2/tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744", size = 243954, upload-time = "2024-11-27T22:38:31.702Z" }, - { url = "https://files.pythonhosted.org/packages/5b/b9/1ed31d167be802da0fc95020d04cd27b7d7065cc6fbefdd2f9186f60d7bd/tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec", size = 98724, upload-time = "2024-11-27T22:38:32.837Z" }, - { url = "https://files.pythonhosted.org/packages/c7/32/b0963458706accd9afcfeb867c0f9175a741bf7b19cd424230714d722198/tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69", size = 109383, upload-time = "2024-11-27T22:38:34.455Z" }, - { url = "https://files.pythonhosted.org/packages/6e/c2/61d3e0f47e2b74ef40a68b9e6ad5984f6241a942f7cd3bbfbdbd03861ea9/tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc", size = 14257, upload-time = "2024-11-27T22:38:35.385Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/18/87/302344fed471e44a87289cf4967697d07e532f2421fdaf868a303cbae4ff/tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff", size = 17175 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/52/e1/f8af4c2fcde17500422858155aeb0d7e93477a0d59a98e56cbfe75070fd0/tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea", size = 132762 }, + { url = "https://files.pythonhosted.org/packages/03/b8/152c68bb84fc00396b83e7bbddd5ec0bd3dd409db4195e2a9b3e398ad2e3/tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8", size = 123453 }, + { url = "https://files.pythonhosted.org/packages/c8/d6/fc9267af9166f79ac528ff7e8c55c8181ded34eb4b0e93daa767b8841573/tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192", size = 233486 }, + { url = "https://files.pythonhosted.org/packages/5c/51/51c3f2884d7bab89af25f678447ea7d297b53b5a3b5730a7cb2ef6069f07/tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222", size = 242349 }, + { url = "https://files.pythonhosted.org/packages/ab/df/bfa89627d13a5cc22402e441e8a931ef2108403db390ff3345c05253935e/tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77", size = 252159 }, + { url = "https://files.pythonhosted.org/packages/9e/6e/fa2b916dced65763a5168c6ccb91066f7639bdc88b48adda990db10c8c0b/tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6", size = 237243 }, + { url = "https://files.pythonhosted.org/packages/b4/04/885d3b1f650e1153cbb93a6a9782c58a972b94ea4483ae4ac5cedd5e4a09/tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd", size = 259645 }, + { url = "https://files.pythonhosted.org/packages/9c/de/6b432d66e986e501586da298e28ebeefd3edc2c780f3ad73d22566034239/tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e", size = 244584 }, + { url = "https://files.pythonhosted.org/packages/1c/9a/47c0449b98e6e7d1be6cbac02f93dd79003234ddc4aaab6ba07a9a7482e2/tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98", size = 98875 }, + { url = "https://files.pythonhosted.org/packages/ef/60/9b9638f081c6f1261e2688bd487625cd1e660d0a85bd469e91d8db969734/tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4", size = 109418 }, + { url = "https://files.pythonhosted.org/packages/04/90/2ee5f2e0362cb8a0b6499dc44f4d7d48f8fff06d28ba46e6f1eaa61a1388/tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7", size = 132708 }, + { url = "https://files.pythonhosted.org/packages/c0/ec/46b4108816de6b385141f082ba99e315501ccd0a2ea23db4a100dd3990ea/tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c", size = 123582 }, + { url = "https://files.pythonhosted.org/packages/a0/bd/b470466d0137b37b68d24556c38a0cc819e8febe392d5b199dcd7f578365/tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13", size = 232543 }, + { url = "https://files.pythonhosted.org/packages/d9/e5/82e80ff3b751373f7cead2815bcbe2d51c895b3c990686741a8e56ec42ab/tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281", size = 241691 }, + { url = "https://files.pythonhosted.org/packages/05/7e/2a110bc2713557d6a1bfb06af23dd01e7dde52b6ee7dadc589868f9abfac/tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272", size = 251170 }, + { url = "https://files.pythonhosted.org/packages/64/7b/22d713946efe00e0adbcdfd6d1aa119ae03fd0b60ebed51ebb3fa9f5a2e5/tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140", size = 236530 }, + { url = "https://files.pythonhosted.org/packages/38/31/3a76f67da4b0cf37b742ca76beaf819dca0ebef26d78fc794a576e08accf/tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2", size = 258666 }, + { url = "https://files.pythonhosted.org/packages/07/10/5af1293da642aded87e8a988753945d0cf7e00a9452d3911dd3bb354c9e2/tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744", size = 243954 }, + { url = "https://files.pythonhosted.org/packages/5b/b9/1ed31d167be802da0fc95020d04cd27b7d7065cc6fbefdd2f9186f60d7bd/tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec", size = 98724 }, + { url = "https://files.pythonhosted.org/packages/c7/32/b0963458706accd9afcfeb867c0f9175a741bf7b19cd424230714d722198/tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69", size = 109383 }, + { url = "https://files.pythonhosted.org/packages/6e/c2/61d3e0f47e2b74ef40a68b9e6ad5984f6241a942f7cd3bbfbdbd03861ea9/tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc", size = 14257 }, ] [[package]] name = "typing-extensions" version = "4.13.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f6/37/23083fcd6e35492953e8d2aaaa68b860eb422b34627b13f2ce3eb6106061/typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef", size = 106967, upload-time = "2025-04-10T14:19:05.416Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f6/37/23083fcd6e35492953e8d2aaaa68b860eb422b34627b13f2ce3eb6106061/typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef", size = 106967 } wheels = [ - { url = "https://files.pythonhosted.org/packages/8b/54/b1ae86c0973cc6f0210b53d508ca3641fb6d0c56823f288d108bc7ab3cc8/typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c", size = 45806, upload-time = "2025-04-10T14:19:03.967Z" }, + { url = "https://files.pythonhosted.org/packages/8b/54/b1ae86c0973cc6f0210b53d508ca3641fb6d0c56823f288d108bc7ab3cc8/typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c", size = 45806 }, ] [[package]] @@ -736,18 +736,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28", size = 75726, upload-time = "2025-05-21T18:55:23.885Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28", size = 75726 } wheels = [ - { url = "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51", size = 14552, upload-time = "2025-05-21T18:55:22.152Z" }, + { url = "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51", size = 14552 }, ] [[package]] name = "urllib3" version = "2.4.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8a/78/16493d9c386d8e60e442a35feac5e00f0913c0f4b7c217c11e8ec2ff53e0/urllib3-2.4.0.tar.gz", hash = "sha256:414bc6535b787febd7567804cc015fee39daab8ad86268f1310a9250697de466", size = 390672, upload-time = "2025-04-10T15:23:39.232Z" } +sdist = { url = "https://files.pythonhosted.org/packages/8a/78/16493d9c386d8e60e442a35feac5e00f0913c0f4b7c217c11e8ec2ff53e0/urllib3-2.4.0.tar.gz", hash = "sha256:414bc6535b787febd7567804cc015fee39daab8ad86268f1310a9250697de466", size = 390672 } wheels = [ - { url = "https://files.pythonhosted.org/packages/6b/11/cc635220681e93a0183390e26485430ca2c7b5f9d33b15c74c2861cb8091/urllib3-2.4.0-py3-none-any.whl", hash = "sha256:4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813", size = 128680, upload-time = "2025-04-10T15:23:37.377Z" }, + { url = "https://files.pythonhosted.org/packages/6b/11/cc635220681e93a0183390e26485430ca2c7b5f9d33b15c74c2861cb8091/urllib3-2.4.0-py3-none-any.whl", hash = "sha256:4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813", size = 128680 }, ] [[package]] @@ -757,67 +757,67 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markupsafe" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9f/69/83029f1f6300c5fb2471d621ab06f6ec6b3324685a2ce0f9777fd4a8b71e/werkzeug-3.1.3.tar.gz", hash = "sha256:60723ce945c19328679790e3282cc758aa4a6040e4bb330f53d30fa546d44746", size = 806925, upload-time = "2024-11-08T15:52:18.093Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9f/69/83029f1f6300c5fb2471d621ab06f6ec6b3324685a2ce0f9777fd4a8b71e/werkzeug-3.1.3.tar.gz", hash = "sha256:60723ce945c19328679790e3282cc758aa4a6040e4bb330f53d30fa546d44746", size = 806925 } wheels = [ - { url = "https://files.pythonhosted.org/packages/52/24/ab44c871b0f07f491e5d2ad12c9bd7358e527510618cb1b803a88e986db1/werkzeug-3.1.3-py3-none-any.whl", hash = "sha256:54b78bf3716d19a65be4fceccc0d1d7b89e608834989dfae50ea87564639213e", size = 224498, upload-time = "2024-11-08T15:52:16.132Z" }, + { url = "https://files.pythonhosted.org/packages/52/24/ab44c871b0f07f491e5d2ad12c9bd7358e527510618cb1b803a88e986db1/werkzeug-3.1.3-py3-none-any.whl", hash = "sha256:54b78bf3716d19a65be4fceccc0d1d7b89e608834989dfae50ea87564639213e", size = 224498 }, ] [[package]] name = "wrapt" version = "1.17.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c3/fc/e91cc220803d7bc4db93fb02facd8461c37364151b8494762cc88b0fbcef/wrapt-1.17.2.tar.gz", hash = "sha256:41388e9d4d1522446fe79d3213196bd9e3b301a336965b9e27ca2788ebd122f3", size = 55531, upload-time = "2025-01-14T10:35:45.465Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a1/bd/ab55f849fd1f9a58ed7ea47f5559ff09741b25f00c191231f9f059c83949/wrapt-1.17.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d5e2439eecc762cd85e7bd37161d4714aa03a33c5ba884e26c81559817ca0925", size = 53799, upload-time = "2025-01-14T10:33:57.4Z" }, - { url = "https://files.pythonhosted.org/packages/53/18/75ddc64c3f63988f5a1d7e10fb204ffe5762bc663f8023f18ecaf31a332e/wrapt-1.17.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fc7cb4c1c744f8c05cd5f9438a3caa6ab94ce8344e952d7c45a8ed59dd88392", size = 38821, upload-time = "2025-01-14T10:33:59.334Z" }, - { url = "https://files.pythonhosted.org/packages/48/2a/97928387d6ed1c1ebbfd4efc4133a0633546bec8481a2dd5ec961313a1c7/wrapt-1.17.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8fdbdb757d5390f7c675e558fd3186d590973244fab0c5fe63d373ade3e99d40", size = 38919, upload-time = "2025-01-14T10:34:04.093Z" }, - { url = "https://files.pythonhosted.org/packages/73/54/3bfe5a1febbbccb7a2f77de47b989c0b85ed3a6a41614b104204a788c20e/wrapt-1.17.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bb1d0dbf99411f3d871deb6faa9aabb9d4e744d67dcaaa05399af89d847a91d", size = 88721, upload-time = "2025-01-14T10:34:07.163Z" }, - { url = "https://files.pythonhosted.org/packages/25/cb/7262bc1b0300b4b64af50c2720ef958c2c1917525238d661c3e9a2b71b7b/wrapt-1.17.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d18a4865f46b8579d44e4fe1e2bcbc6472ad83d98e22a26c963d46e4c125ef0b", size = 80899, upload-time = "2025-01-14T10:34:09.82Z" }, - { url = "https://files.pythonhosted.org/packages/2a/5a/04cde32b07a7431d4ed0553a76fdb7a61270e78c5fd5a603e190ac389f14/wrapt-1.17.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc570b5f14a79734437cb7b0500376b6b791153314986074486e0b0fa8d71d98", size = 89222, upload-time = "2025-01-14T10:34:11.258Z" }, - { url = "https://files.pythonhosted.org/packages/09/28/2e45a4f4771fcfb109e244d5dbe54259e970362a311b67a965555ba65026/wrapt-1.17.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6d9187b01bebc3875bac9b087948a2bccefe464a7d8f627cf6e48b1bbae30f82", size = 86707, upload-time = "2025-01-14T10:34:12.49Z" }, - { url = "https://files.pythonhosted.org/packages/c6/d2/dcb56bf5f32fcd4bd9aacc77b50a539abdd5b6536872413fd3f428b21bed/wrapt-1.17.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9e8659775f1adf02eb1e6f109751268e493c73716ca5761f8acb695e52a756ae", size = 79685, upload-time = "2025-01-14T10:34:15.043Z" }, - { url = "https://files.pythonhosted.org/packages/80/4e/eb8b353e36711347893f502ce91c770b0b0929f8f0bed2670a6856e667a9/wrapt-1.17.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e8b2816ebef96d83657b56306152a93909a83f23994f4b30ad4573b00bd11bb9", size = 87567, upload-time = "2025-01-14T10:34:16.563Z" }, - { url = "https://files.pythonhosted.org/packages/17/27/4fe749a54e7fae6e7146f1c7d914d28ef599dacd4416566c055564080fe2/wrapt-1.17.2-cp312-cp312-win32.whl", hash = "sha256:468090021f391fe0056ad3e807e3d9034e0fd01adcd3bdfba977b6fdf4213ea9", size = 36672, upload-time = "2025-01-14T10:34:17.727Z" }, - { url = "https://files.pythonhosted.org/packages/15/06/1dbf478ea45c03e78a6a8c4be4fdc3c3bddea5c8de8a93bc971415e47f0f/wrapt-1.17.2-cp312-cp312-win_amd64.whl", hash = "sha256:ec89ed91f2fa8e3f52ae53cd3cf640d6feff92ba90d62236a81e4e563ac0e991", size = 38865, upload-time = "2025-01-14T10:34:19.577Z" }, - { url = "https://files.pythonhosted.org/packages/ce/b9/0ffd557a92f3b11d4c5d5e0c5e4ad057bd9eb8586615cdaf901409920b14/wrapt-1.17.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:6ed6ffac43aecfe6d86ec5b74b06a5be33d5bb9243d055141e8cabb12aa08125", size = 53800, upload-time = "2025-01-14T10:34:21.571Z" }, - { url = "https://files.pythonhosted.org/packages/c0/ef/8be90a0b7e73c32e550c73cfb2fa09db62234227ece47b0e80a05073b375/wrapt-1.17.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:35621ae4c00e056adb0009f8e86e28eb4a41a4bfa8f9bfa9fca7d343fe94f998", size = 38824, upload-time = "2025-01-14T10:34:22.999Z" }, - { url = "https://files.pythonhosted.org/packages/36/89/0aae34c10fe524cce30fe5fc433210376bce94cf74d05b0d68344c8ba46e/wrapt-1.17.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a604bf7a053f8362d27eb9fefd2097f82600b856d5abe996d623babd067b1ab5", size = 38920, upload-time = "2025-01-14T10:34:25.386Z" }, - { url = "https://files.pythonhosted.org/packages/3b/24/11c4510de906d77e0cfb5197f1b1445d4fec42c9a39ea853d482698ac681/wrapt-1.17.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cbabee4f083b6b4cd282f5b817a867cf0b1028c54d445b7ec7cfe6505057cf8", size = 88690, upload-time = "2025-01-14T10:34:28.058Z" }, - { url = "https://files.pythonhosted.org/packages/71/d7/cfcf842291267bf455b3e266c0c29dcb675b5540ee8b50ba1699abf3af45/wrapt-1.17.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49703ce2ddc220df165bd2962f8e03b84c89fee2d65e1c24a7defff6f988f4d6", size = 80861, upload-time = "2025-01-14T10:34:29.167Z" }, - { url = "https://files.pythonhosted.org/packages/d5/66/5d973e9f3e7370fd686fb47a9af3319418ed925c27d72ce16b791231576d/wrapt-1.17.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8112e52c5822fc4253f3901b676c55ddf288614dc7011634e2719718eaa187dc", size = 89174, upload-time = "2025-01-14T10:34:31.702Z" }, - { url = "https://files.pythonhosted.org/packages/a7/d3/8e17bb70f6ae25dabc1aaf990f86824e4fd98ee9cadf197054e068500d27/wrapt-1.17.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9fee687dce376205d9a494e9c121e27183b2a3df18037f89d69bd7b35bcf59e2", size = 86721, upload-time = "2025-01-14T10:34:32.91Z" }, - { url = "https://files.pythonhosted.org/packages/6f/54/f170dfb278fe1c30d0ff864513cff526d624ab8de3254b20abb9cffedc24/wrapt-1.17.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:18983c537e04d11cf027fbb60a1e8dfd5190e2b60cc27bc0808e653e7b218d1b", size = 79763, upload-time = "2025-01-14T10:34:34.903Z" }, - { url = "https://files.pythonhosted.org/packages/4a/98/de07243751f1c4a9b15c76019250210dd3486ce098c3d80d5f729cba029c/wrapt-1.17.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:703919b1633412ab54bcf920ab388735832fdcb9f9a00ae49387f0fe67dad504", size = 87585, upload-time = "2025-01-14T10:34:36.13Z" }, - { url = "https://files.pythonhosted.org/packages/f9/f0/13925f4bd6548013038cdeb11ee2cbd4e37c30f8bfd5db9e5a2a370d6e20/wrapt-1.17.2-cp313-cp313-win32.whl", hash = "sha256:abbb9e76177c35d4e8568e58650aa6926040d6a9f6f03435b7a522bf1c487f9a", size = 36676, upload-time = "2025-01-14T10:34:37.962Z" }, - { url = "https://files.pythonhosted.org/packages/bf/ae/743f16ef8c2e3628df3ddfd652b7d4c555d12c84b53f3d8218498f4ade9b/wrapt-1.17.2-cp313-cp313-win_amd64.whl", hash = "sha256:69606d7bb691b50a4240ce6b22ebb319c1cfb164e5f6569835058196e0f3a845", size = 38871, upload-time = "2025-01-14T10:34:39.13Z" }, - { url = "https://files.pythonhosted.org/packages/3d/bc/30f903f891a82d402ffb5fda27ec1d621cc97cb74c16fea0b6141f1d4e87/wrapt-1.17.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:4a721d3c943dae44f8e243b380cb645a709ba5bd35d3ad27bc2ed947e9c68192", size = 56312, upload-time = "2025-01-14T10:34:40.604Z" }, - { url = "https://files.pythonhosted.org/packages/8a/04/c97273eb491b5f1c918857cd26f314b74fc9b29224521f5b83f872253725/wrapt-1.17.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:766d8bbefcb9e00c3ac3b000d9acc51f1b399513f44d77dfe0eb026ad7c9a19b", size = 40062, upload-time = "2025-01-14T10:34:45.011Z" }, - { url = "https://files.pythonhosted.org/packages/4e/ca/3b7afa1eae3a9e7fefe499db9b96813f41828b9fdb016ee836c4c379dadb/wrapt-1.17.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e496a8ce2c256da1eb98bd15803a79bee00fc351f5dfb9ea82594a3f058309e0", size = 40155, upload-time = "2025-01-14T10:34:47.25Z" }, - { url = "https://files.pythonhosted.org/packages/89/be/7c1baed43290775cb9030c774bc53c860db140397047cc49aedaf0a15477/wrapt-1.17.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d615e4fe22f4ad3528448c193b218e077656ca9ccb22ce2cb20db730f8d306", size = 113471, upload-time = "2025-01-14T10:34:50.934Z" }, - { url = "https://files.pythonhosted.org/packages/32/98/4ed894cf012b6d6aae5f5cc974006bdeb92f0241775addad3f8cd6ab71c8/wrapt-1.17.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a5aaeff38654462bc4b09023918b7f21790efb807f54c000a39d41d69cf552cb", size = 101208, upload-time = "2025-01-14T10:34:52.297Z" }, - { url = "https://files.pythonhosted.org/packages/ea/fd/0c30f2301ca94e655e5e057012e83284ce8c545df7661a78d8bfca2fac7a/wrapt-1.17.2-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a7d15bbd2bc99e92e39f49a04653062ee6085c0e18b3b7512a4f2fe91f2d681", size = 109339, upload-time = "2025-01-14T10:34:53.489Z" }, - { url = "https://files.pythonhosted.org/packages/75/56/05d000de894c4cfcb84bcd6b1df6214297b8089a7bd324c21a4765e49b14/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:e3890b508a23299083e065f435a492b5435eba6e304a7114d2f919d400888cc6", size = 110232, upload-time = "2025-01-14T10:34:55.327Z" }, - { url = "https://files.pythonhosted.org/packages/53/f8/c3f6b2cf9b9277fb0813418e1503e68414cd036b3b099c823379c9575e6d/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:8c8b293cd65ad716d13d8dd3624e42e5a19cc2a2f1acc74b30c2c13f15cb61a6", size = 100476, upload-time = "2025-01-14T10:34:58.055Z" }, - { url = "https://files.pythonhosted.org/packages/a7/b1/0bb11e29aa5139d90b770ebbfa167267b1fc548d2302c30c8f7572851738/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4c82b8785d98cdd9fed4cac84d765d234ed3251bd6afe34cb7ac523cb93e8b4f", size = 106377, upload-time = "2025-01-14T10:34:59.3Z" }, - { url = "https://files.pythonhosted.org/packages/6a/e1/0122853035b40b3f333bbb25f1939fc1045e21dd518f7f0922b60c156f7c/wrapt-1.17.2-cp313-cp313t-win32.whl", hash = "sha256:13e6afb7fe71fe7485a4550a8844cc9ffbe263c0f1a1eea569bc7091d4898555", size = 37986, upload-time = "2025-01-14T10:35:00.498Z" }, - { url = "https://files.pythonhosted.org/packages/09/5e/1655cf481e079c1f22d0cabdd4e51733679932718dc23bf2db175f329b76/wrapt-1.17.2-cp313-cp313t-win_amd64.whl", hash = "sha256:eaf675418ed6b3b31c7a989fd007fa7c3be66ce14e5c3b27336383604c9da85c", size = 40750, upload-time = "2025-01-14T10:35:03.378Z" }, - { url = "https://files.pythonhosted.org/packages/2d/82/f56956041adef78f849db6b289b282e72b55ab8045a75abad81898c28d19/wrapt-1.17.2-py3-none-any.whl", hash = "sha256:b18f2d1533a71f069c7f82d524a52599053d4c7166e9dd374ae2136b7f40f7c8", size = 23594, upload-time = "2025-01-14T10:35:44.018Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/c3/fc/e91cc220803d7bc4db93fb02facd8461c37364151b8494762cc88b0fbcef/wrapt-1.17.2.tar.gz", hash = "sha256:41388e9d4d1522446fe79d3213196bd9e3b301a336965b9e27ca2788ebd122f3", size = 55531 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a1/bd/ab55f849fd1f9a58ed7ea47f5559ff09741b25f00c191231f9f059c83949/wrapt-1.17.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d5e2439eecc762cd85e7bd37161d4714aa03a33c5ba884e26c81559817ca0925", size = 53799 }, + { url = "https://files.pythonhosted.org/packages/53/18/75ddc64c3f63988f5a1d7e10fb204ffe5762bc663f8023f18ecaf31a332e/wrapt-1.17.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fc7cb4c1c744f8c05cd5f9438a3caa6ab94ce8344e952d7c45a8ed59dd88392", size = 38821 }, + { url = "https://files.pythonhosted.org/packages/48/2a/97928387d6ed1c1ebbfd4efc4133a0633546bec8481a2dd5ec961313a1c7/wrapt-1.17.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8fdbdb757d5390f7c675e558fd3186d590973244fab0c5fe63d373ade3e99d40", size = 38919 }, + { url = "https://files.pythonhosted.org/packages/73/54/3bfe5a1febbbccb7a2f77de47b989c0b85ed3a6a41614b104204a788c20e/wrapt-1.17.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bb1d0dbf99411f3d871deb6faa9aabb9d4e744d67dcaaa05399af89d847a91d", size = 88721 }, + { url = "https://files.pythonhosted.org/packages/25/cb/7262bc1b0300b4b64af50c2720ef958c2c1917525238d661c3e9a2b71b7b/wrapt-1.17.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d18a4865f46b8579d44e4fe1e2bcbc6472ad83d98e22a26c963d46e4c125ef0b", size = 80899 }, + { url = "https://files.pythonhosted.org/packages/2a/5a/04cde32b07a7431d4ed0553a76fdb7a61270e78c5fd5a603e190ac389f14/wrapt-1.17.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc570b5f14a79734437cb7b0500376b6b791153314986074486e0b0fa8d71d98", size = 89222 }, + { url = "https://files.pythonhosted.org/packages/09/28/2e45a4f4771fcfb109e244d5dbe54259e970362a311b67a965555ba65026/wrapt-1.17.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6d9187b01bebc3875bac9b087948a2bccefe464a7d8f627cf6e48b1bbae30f82", size = 86707 }, + { url = "https://files.pythonhosted.org/packages/c6/d2/dcb56bf5f32fcd4bd9aacc77b50a539abdd5b6536872413fd3f428b21bed/wrapt-1.17.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9e8659775f1adf02eb1e6f109751268e493c73716ca5761f8acb695e52a756ae", size = 79685 }, + { url = "https://files.pythonhosted.org/packages/80/4e/eb8b353e36711347893f502ce91c770b0b0929f8f0bed2670a6856e667a9/wrapt-1.17.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e8b2816ebef96d83657b56306152a93909a83f23994f4b30ad4573b00bd11bb9", size = 87567 }, + { url = "https://files.pythonhosted.org/packages/17/27/4fe749a54e7fae6e7146f1c7d914d28ef599dacd4416566c055564080fe2/wrapt-1.17.2-cp312-cp312-win32.whl", hash = "sha256:468090021f391fe0056ad3e807e3d9034e0fd01adcd3bdfba977b6fdf4213ea9", size = 36672 }, + { url = "https://files.pythonhosted.org/packages/15/06/1dbf478ea45c03e78a6a8c4be4fdc3c3bddea5c8de8a93bc971415e47f0f/wrapt-1.17.2-cp312-cp312-win_amd64.whl", hash = "sha256:ec89ed91f2fa8e3f52ae53cd3cf640d6feff92ba90d62236a81e4e563ac0e991", size = 38865 }, + { url = "https://files.pythonhosted.org/packages/ce/b9/0ffd557a92f3b11d4c5d5e0c5e4ad057bd9eb8586615cdaf901409920b14/wrapt-1.17.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:6ed6ffac43aecfe6d86ec5b74b06a5be33d5bb9243d055141e8cabb12aa08125", size = 53800 }, + { url = "https://files.pythonhosted.org/packages/c0/ef/8be90a0b7e73c32e550c73cfb2fa09db62234227ece47b0e80a05073b375/wrapt-1.17.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:35621ae4c00e056adb0009f8e86e28eb4a41a4bfa8f9bfa9fca7d343fe94f998", size = 38824 }, + { url = "https://files.pythonhosted.org/packages/36/89/0aae34c10fe524cce30fe5fc433210376bce94cf74d05b0d68344c8ba46e/wrapt-1.17.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a604bf7a053f8362d27eb9fefd2097f82600b856d5abe996d623babd067b1ab5", size = 38920 }, + { url = "https://files.pythonhosted.org/packages/3b/24/11c4510de906d77e0cfb5197f1b1445d4fec42c9a39ea853d482698ac681/wrapt-1.17.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cbabee4f083b6b4cd282f5b817a867cf0b1028c54d445b7ec7cfe6505057cf8", size = 88690 }, + { url = "https://files.pythonhosted.org/packages/71/d7/cfcf842291267bf455b3e266c0c29dcb675b5540ee8b50ba1699abf3af45/wrapt-1.17.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49703ce2ddc220df165bd2962f8e03b84c89fee2d65e1c24a7defff6f988f4d6", size = 80861 }, + { url = "https://files.pythonhosted.org/packages/d5/66/5d973e9f3e7370fd686fb47a9af3319418ed925c27d72ce16b791231576d/wrapt-1.17.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8112e52c5822fc4253f3901b676c55ddf288614dc7011634e2719718eaa187dc", size = 89174 }, + { url = "https://files.pythonhosted.org/packages/a7/d3/8e17bb70f6ae25dabc1aaf990f86824e4fd98ee9cadf197054e068500d27/wrapt-1.17.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9fee687dce376205d9a494e9c121e27183b2a3df18037f89d69bd7b35bcf59e2", size = 86721 }, + { url = "https://files.pythonhosted.org/packages/6f/54/f170dfb278fe1c30d0ff864513cff526d624ab8de3254b20abb9cffedc24/wrapt-1.17.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:18983c537e04d11cf027fbb60a1e8dfd5190e2b60cc27bc0808e653e7b218d1b", size = 79763 }, + { url = "https://files.pythonhosted.org/packages/4a/98/de07243751f1c4a9b15c76019250210dd3486ce098c3d80d5f729cba029c/wrapt-1.17.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:703919b1633412ab54bcf920ab388735832fdcb9f9a00ae49387f0fe67dad504", size = 87585 }, + { url = "https://files.pythonhosted.org/packages/f9/f0/13925f4bd6548013038cdeb11ee2cbd4e37c30f8bfd5db9e5a2a370d6e20/wrapt-1.17.2-cp313-cp313-win32.whl", hash = "sha256:abbb9e76177c35d4e8568e58650aa6926040d6a9f6f03435b7a522bf1c487f9a", size = 36676 }, + { url = "https://files.pythonhosted.org/packages/bf/ae/743f16ef8c2e3628df3ddfd652b7d4c555d12c84b53f3d8218498f4ade9b/wrapt-1.17.2-cp313-cp313-win_amd64.whl", hash = "sha256:69606d7bb691b50a4240ce6b22ebb319c1cfb164e5f6569835058196e0f3a845", size = 38871 }, + { url = "https://files.pythonhosted.org/packages/3d/bc/30f903f891a82d402ffb5fda27ec1d621cc97cb74c16fea0b6141f1d4e87/wrapt-1.17.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:4a721d3c943dae44f8e243b380cb645a709ba5bd35d3ad27bc2ed947e9c68192", size = 56312 }, + { url = "https://files.pythonhosted.org/packages/8a/04/c97273eb491b5f1c918857cd26f314b74fc9b29224521f5b83f872253725/wrapt-1.17.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:766d8bbefcb9e00c3ac3b000d9acc51f1b399513f44d77dfe0eb026ad7c9a19b", size = 40062 }, + { url = "https://files.pythonhosted.org/packages/4e/ca/3b7afa1eae3a9e7fefe499db9b96813f41828b9fdb016ee836c4c379dadb/wrapt-1.17.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e496a8ce2c256da1eb98bd15803a79bee00fc351f5dfb9ea82594a3f058309e0", size = 40155 }, + { url = "https://files.pythonhosted.org/packages/89/be/7c1baed43290775cb9030c774bc53c860db140397047cc49aedaf0a15477/wrapt-1.17.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d615e4fe22f4ad3528448c193b218e077656ca9ccb22ce2cb20db730f8d306", size = 113471 }, + { url = "https://files.pythonhosted.org/packages/32/98/4ed894cf012b6d6aae5f5cc974006bdeb92f0241775addad3f8cd6ab71c8/wrapt-1.17.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a5aaeff38654462bc4b09023918b7f21790efb807f54c000a39d41d69cf552cb", size = 101208 }, + { url = "https://files.pythonhosted.org/packages/ea/fd/0c30f2301ca94e655e5e057012e83284ce8c545df7661a78d8bfca2fac7a/wrapt-1.17.2-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a7d15bbd2bc99e92e39f49a04653062ee6085c0e18b3b7512a4f2fe91f2d681", size = 109339 }, + { url = "https://files.pythonhosted.org/packages/75/56/05d000de894c4cfcb84bcd6b1df6214297b8089a7bd324c21a4765e49b14/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:e3890b508a23299083e065f435a492b5435eba6e304a7114d2f919d400888cc6", size = 110232 }, + { url = "https://files.pythonhosted.org/packages/53/f8/c3f6b2cf9b9277fb0813418e1503e68414cd036b3b099c823379c9575e6d/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:8c8b293cd65ad716d13d8dd3624e42e5a19cc2a2f1acc74b30c2c13f15cb61a6", size = 100476 }, + { url = "https://files.pythonhosted.org/packages/a7/b1/0bb11e29aa5139d90b770ebbfa167267b1fc548d2302c30c8f7572851738/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4c82b8785d98cdd9fed4cac84d765d234ed3251bd6afe34cb7ac523cb93e8b4f", size = 106377 }, + { url = "https://files.pythonhosted.org/packages/6a/e1/0122853035b40b3f333bbb25f1939fc1045e21dd518f7f0922b60c156f7c/wrapt-1.17.2-cp313-cp313t-win32.whl", hash = "sha256:13e6afb7fe71fe7485a4550a8844cc9ffbe263c0f1a1eea569bc7091d4898555", size = 37986 }, + { url = "https://files.pythonhosted.org/packages/09/5e/1655cf481e079c1f22d0cabdd4e51733679932718dc23bf2db175f329b76/wrapt-1.17.2-cp313-cp313t-win_amd64.whl", hash = "sha256:eaf675418ed6b3b31c7a989fd007fa7c3be66ce14e5c3b27336383604c9da85c", size = 40750 }, + { url = "https://files.pythonhosted.org/packages/2d/82/f56956041adef78f849db6b289b282e72b55ab8045a75abad81898c28d19/wrapt-1.17.2-py3-none-any.whl", hash = "sha256:b18f2d1533a71f069c7f82d524a52599053d4c7166e9dd374ae2136b7f40f7c8", size = 23594 }, ] [[package]] name = "xmltodict" version = "0.14.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/50/05/51dcca9a9bf5e1bce52582683ce50980bcadbc4fa5143b9f2b19ab99958f/xmltodict-0.14.2.tar.gz", hash = "sha256:201e7c28bb210e374999d1dde6382923ab0ed1a8a5faeece48ab525b7810a553", size = 51942, upload-time = "2024-10-16T06:10:29.683Z" } +sdist = { url = "https://files.pythonhosted.org/packages/50/05/51dcca9a9bf5e1bce52582683ce50980bcadbc4fa5143b9f2b19ab99958f/xmltodict-0.14.2.tar.gz", hash = "sha256:201e7c28bb210e374999d1dde6382923ab0ed1a8a5faeece48ab525b7810a553", size = 51942 } wheels = [ - { url = "https://files.pythonhosted.org/packages/d6/45/fc303eb433e8a2a271739c98e953728422fa61a3c1f36077a49e395c972e/xmltodict-0.14.2-py2.py3-none-any.whl", hash = "sha256:20cc7d723ed729276e808f26fb6b3599f786cbc37e06c65e192ba77c40f20aac", size = 9981, upload-time = "2024-10-16T06:10:27.649Z" }, + { url = "https://files.pythonhosted.org/packages/d6/45/fc303eb433e8a2a271739c98e953728422fa61a3c1f36077a49e395c972e/xmltodict-0.14.2-py2.py3-none-any.whl", hash = "sha256:20cc7d723ed729276e808f26fb6b3599f786cbc37e06c65e192ba77c40f20aac", size = 9981 }, ] [[package]] name = "zipp" version = "3.22.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/12/b6/7b3d16792fdf94f146bed92be90b4eb4563569eca91513c8609aebf0c167/zipp-3.22.0.tar.gz", hash = "sha256:dd2f28c3ce4bc67507bfd3781d21b7bb2be31103b51a4553ad7d90b84e57ace5", size = 25257, upload-time = "2025-05-26T14:46:32.217Z" } +sdist = { url = "https://files.pythonhosted.org/packages/12/b6/7b3d16792fdf94f146bed92be90b4eb4563569eca91513c8609aebf0c167/zipp-3.22.0.tar.gz", hash = "sha256:dd2f28c3ce4bc67507bfd3781d21b7bb2be31103b51a4553ad7d90b84e57ace5", size = 25257 } wheels = [ - { url = "https://files.pythonhosted.org/packages/ad/da/f64669af4cae46f17b90798a827519ce3737d31dbafad65d391e49643dc4/zipp-3.22.0-py3-none-any.whl", hash = "sha256:fe208f65f2aca48b81f9e6fd8cf7b8b32c26375266b009b413d45306b6148343", size = 9796, upload-time = "2025-05-26T14:46:30.775Z" }, + { url = "https://files.pythonhosted.org/packages/ad/da/f64669af4cae46f17b90798a827519ce3737d31dbafad65d391e49643dc4/zipp-3.22.0-py3-none-any.whl", hash = "sha256:fe208f65f2aca48b81f9e6fd8cf7b8b32c26375266b009b413d45306b6148343", size = 9796 }, ] From f383b3dc376d87f5a5d5293e7a69a471960a5383 Mon Sep 17 00:00:00 2001 From: Marco Buss Date: Fri, 18 Jul 2025 12:01:14 +0200 Subject: [PATCH 24/36] downgrade cfn-lint serverless-rules because of an issue with v0.3.3 --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9f3a07f..1fc36e4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -48,7 +48,7 @@ jobs: - name: Install cfn-lint and plugins run: | pip install cfn-lint - pip install cfn-lint-serverless + pip install cfn-lint-serverless==0.3.2 - name: Install yq run: | From c08309f08945433fd2ed66eac24ac0f35a296b15 Mon Sep 17 00:00:00 2001 From: Stephen Liedig Date: Mon, 21 Jul 2025 10:09:26 +0800 Subject: [PATCH 25/36] Revert "downgrade cfn-lint serverless-rules because of an issue with v0.3.3" This reverts commit f383b3dc376d87f5a5d5293e7a69a471960a5383. --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1fc36e4..9f3a07f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -48,7 +48,7 @@ jobs: - name: Install cfn-lint and plugins run: | pip install cfn-lint - pip install cfn-lint-serverless==0.3.2 + pip install cfn-lint-serverless - name: Install yq run: | From c360375e0b63225916a5d9cbd4bcdc0ab7430bc6 Mon Sep 17 00:00:00 2001 From: Stephen Liedig Date: Tue, 22 Jul 2025 13:15:15 +0800 Subject: [PATCH 26/36] chore: update architecture diagram --- docs/architecture.png | Bin 188874 -> 110379 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/architecture.png b/docs/architecture.png index 1e741f218fc6bb6e938e76cbfc7eaf8f55712c5c..903363bbfa84e00a3ac13403654015d38ca6f2b8 100644 GIT binary patch literal 110379 zcmeGEg``fNar9mbb~YqA|2A*AgQEugVNpc zUa0rp?&sOh_x%CydmIA{*Kp06wbn1s^IRa56eJ(qBff`(g!DjK3aX5R1gb$oLJ>f} z3tS^D3w&{mwtnQ3P)P@LftZHxiNvk~CCQ)fss+1*2YWg`~^tvHi(a?Xh6p z!zi(`R|p2ij7%|b6f0w0IYQx5=nwhlDwY!pDF#1o!=D$CR4xr(YELR8X^qDVE1f)p5VW^;jJ$b-hMb74e?{G{1Ene!6YrKRfV=%C`}u7Jq-+5eBv zObHhNyg&ApYJt>kaM{K<+!)7B;d7`h5K~pf|EQSesnuxjU%oTf)MW2is`JX&cz)tl znqOZPti}!<3+s7<>rq5%s&4wT&8aGE5*}+7C5j?que}b!)1`1>7y)Paf39VE2<|T9 zhmF;;+gO#ZiEjMrRhvG?GT&I;PGgcqN@fAan|TrUtE2G*LAR%gJT_t8-bkdvo}`V9 zji|)OAHs!Nudgn?Wy{8+94$>dpYARsJbr~m{N(jKtla|ljdZg+AGw*uajSW0Eerd) z+`Dhy&8hMRdBiV9#7n*Y9orZ_1N#s=p*`pa*a|)mJd#E-Q#o6P*M9Z>Sb^3D->fgu z^h+55||We zi;=ku1CLJs@^sI9^Mhpg;`>*r@V-*>(LCq#pE(5i_G<$MljUZb)o-X$-L{{Nl z?vcMItc2i6$5&Fw2MaThf>Y-s!rvVHR z?t^=}RW%p$gT@+uGHs8o>v?7(aDBSuJP${EbGmDAdUlpe<+weK&~0#CIG(cUvM6r& z2)mmt2jT=fK$~+lOQ}u!65zlVlPKS``eDjkf-|HhpPG+IArz>&YKRBB)`rr&O3R~0 z8XGnOcBVV8Ha`z4Wy=usCGlVjU+&)dDEB@S#%|Maq)uCo=w13=Y7|REZ-hvHC9JqW zZK!j$ze44K;H8T*F)%RbK^-yX67?-6<~C>eR-~9Fq*-c+YF)SWw42DVpW9-LgaHXiL*q{zUC9v zx=-2f4o0sn&lolOf>`wMOlkgYPk`gcr`pxO*}ru=Bn)Q~WbkX~_b7Y{itq;{Pv$okF(|2jL3f1e+R+ESXoH^(el0WUY6YNJylD|NC-}Ci)qS2%7om*Dj zUOSVFqM;TYBlV&kPhNf4#rZ~Yz7VjlAE0cdB6#s);PR;G=xRXc)v8N{+#Z9fRpNO%vsTaP?_T^WTzK~p>^SZg};gj3ZC}=TGZf+KtemgAhI?82V zZkh-d-lx%2ple-A>~YbpqNTm_6VuDTRGA26a`@=+;Jjw!Up|};1wxb>wGAe{1PWx{ z3IvS+V^Xg{T(%AEP*G8H*9TV0dNTthYMW_e4Gj%r9HJV$?b{ykd^*liNKuwN>#AYb zhC41=3zSAgLB{kAsZ7)M`HE(ruO<(Z9=aYos2A&oYUsM4YFAp?65X^T@bX-PAF>{r zT8FdO@A}w9*KgNu#2m#}%RaUI{?+PgNIl}PXS{pX9_z)Nz}-227s47}@#${t$lcRd zyH}?8as+KMB#8or^cT+eqjV>c4sxA+g=QXH7p|}7rsy&njq6Fd8r+c^rN%i|eUus|uphm~EJeq7hB(45XN+McP$)`SHyPRm(e)O77iTZZt9 zPc_bwls>i?>rD~=dlBAm zX$+*OtM98B)>0md*;T=(ZiZHT{q0QAK8+GIj$q=FpmORhv zvsbqXAcv9OL=pS@Uoe|`H7I5$8CENKxZ%5Qp!;y=Q2*lo)2hg2TYX+u1Ce@DMP-1Iubz5UhKKuXMx@djCW0db$hdYV^Cj#Zkv zy}Kv?_mxakLvSiAIQWCdP%qkjqI6#>uoL8UeITFV1h?01=Er38fTob>YE(G@Q(;@Z$vqXKsFHsKe_~@PG8^QC@JZ!v+&FOO@@>-e&mucU)CH zUuN(kB;k^^YI?C*)Th5U41sH@`&~MO^?goxyvrAbkg^NosY)xglR@E|`aJeJL50L8 z7=XJd^NY)PUt3L;r*FIjl2Y8g+F~}DGhvKj^)^>N0YB`qy2`sPiE_~SFFi0`nd z9hiEAt%{0@6=w_S-OCfP>4&s_0RcBjOU@CcesGVPl82&lbBz1bHTFGfF9-?9+!#_c z%r=gxHX@cfQBk#WTgJWT;XG}h5Zu|Uv}Wq&j4F-rtL>n&C4=3~0d%t27K55cZecV< z8`MzGEA&g7PuV@mP8x63BzM}QOAnuRcr35E+TyJ_|Esj?5cQ6Ob%?$<0wR9QBNR_h z&rfvGm1@@WDVNqocXW=JU5*!H^ZAN8AC4VM z8@`XNFwP^wl67C`@Z?H(vLU7?iP=`x8M8tAR~*{ay)7(HW^Gr0k8YAI(z>k1K@p-3 zU&0J)MX@NaB>5pJioR**&{B8cPmU7Ot?7YtZMELEGih$#iMz&fO=D#jj#Y&g&PVhK5vVL-+UAEz*ia<~zICKlyW!K>$S^)8~0P^!u>jz3CiU&IfB7 z0y#%2j+sQhO>-2|D&v%u!ziHpHOL=du0(J-F_-H=Vn{yhIE>EN#d6s?$h|)xV{<=3 z^Pw+)cjnA8G&gg{D1`%h>Eu0C$?|tG%0LWEGRU9V?O!uzSOB#f_BUC1WU_Bnqhq|O9%H{xN8?_c>wjw7 z8@cyIl=3U+wQYl(#uo+norS6DAl+EWzibT|mm%`D5bvI9mHsnvkroUoIW~*D=9wkj_wZh&#Z8u_I=UKSU3)>)6|BPz3a}_erX@&E( zrnKj&TBykBv{0bg9^X(EnW%nz{?U5&_G{_EAyA84LJ#Vih1KeJd?KGqnOKWgjUq8E z&xcp*b?$2P)Bb5az1?nGU3)#vc3Qxsi8$)$e>*drS%PwL)XktmlgyvzwC?&xReMe= zaT4+z-6+}m#aJ#n^t8pDX@IJ!9Hv>Qo>e#-y!?K{0HGkh>+6V4KKZayq)CAFTT~n( zreo^X)k0S8fVr-of{xAay~_x((Rfeqnw>Kgd&#Be%3w$P+w`;H&9T>eT}M1KLn3h& z|11KR0;Tm2v~Ji%&Kf9*IN1!y+a^nEw~Y2Ib%;1Qf;1}-JpZOcFzMp`sH_FAm}l9j_aNzHSy zojn47ohW%0H%E)P;Y@HyXy%T}RS?5TCsKe={So!?KnI8VeX-LrPxMX4l$X!Pn&YIB z8}DLZvjv!0pq}dJjIQi+dGQynpE~9t0%>s*ZVVgBA6!H}@gU3E>G2wTGZFXxU*Q~h zA|VdA@3%K5#eXiok-*S=TsFUCDhah1qs=cUxRYb>EIuSXgLT1cyh&vYc1o%|7_6aH zr$}wlMu8=v>k*j{+KgbeM2RnuXwQp~p20cUqSmb7)!B~HrE_qA%dQ7$#(6xs3*;W# z@tCv!7#j+V4ThUk{cCLWQ=-ul&O+TmTjw;k3agb)87g!#kNhpZ3(Y4(W1H_3+j_8C zR-S`K;@NLbWw%19`I%kIqGo+4N5Ms7 zqU1II{m$t#towZ6K64$vv}>9sn?YtfTo zo|~eMk(c>#25*DpO`D!Ju-Nw9^BvfPdxwSU_jA#hOcVusn0q|_I~d}#1M}(VP5SUp zp!h=(TkD} zU!yB6GZ7bU#{OC3AhrB*QW6b$_{v-bRcoppYrF5@cIcsm8;(FFO|p~Gp>sO! zbaRet)+8gB{nxq4upo=bh8>pHhlkJ8={6sQge|7!o1AhN`+XXviKsN>i8A$ipfbu4 zqs>p`$+}*hHz4rW7Qm_LfV3Ql{Mqf#MFu963`Gagv6kVp_1T<-CUuzse#Yymq*BLE ztDS3$7CsAx`WNmGUW$<*7zipHA?Y2Qc<~a7QGo`c9yU<@9aHazU48S$kJhC13S|EZ z@k$&hY>f>M3&bn`1wk>8qaddci|V4vut6UoHq`dka_)^3R&lE@#sr|mUl9uubZt)U zC*LkjeWVCbuVax51OlC>%hF--k7PVtTn@7#h`{l8qt`>eNp-MqNi8k1WWa7_Z^zk* z{;|&aN65W!BB+!5XlW#-ji9|;q7j+y@2z%bg%1i{-1oRR?wI)e>P7BQHj(dAS9n)X zEVC`px{!`n0zgX$36H{PzD}KEm_u-x610-S^Ay?Z>WFZCWDm<}Z)8N31y+p%U{#sj zYB4rg$2xQXyulP*l@k1CmhfN@%1$Hl-3f`Wp;MWU=~epe2DEf-3%kDa0VxH(svU8B zPI~VN^3&VDhvSOre@z#yK3~s&k*{9J{Pcr(02U*hnS%od7?EFgC( zy}nI9#4?WmG+?umB90h+W`v?U+L0TN(2gzh?iD=D-?%4{%#0E*6hKWLG;^CpL^8lc z&+M|w_W6E;QttpDOfFU65w_qVj_3JL`o2VNOftT=-c3zSWj|b3-vjOL$=ruO7|^#m zCmZ+uFZ9j}euTFG%@eCh{6WDJQfmM~fl5j)h4F7IU9sxa;sdZ+^+r+M?l(z_3}Eqa zWJ`grF9RrJodFnXe#!pq!$z4&@7GKT%+c+Bo;g(y#6`_))!|7C8pS-&bU>@DXJU?2 zJAw$PHts!m&|%YbnpX3S7{#Vwu9Z> z%~n-2{*n|Psz(+2Ehr`?>P4_;atR#BhKy^;VHCn)xhgroa5QIUUekeO1eLfyuf`HL zuq@>0u`+a=e}}tzgmrFPz0Q|= zU3<-Uuqo;2?(#cr`*s+Ly1Mf5Ijn=CzhwC)-=amfmOwKF+*Z&Cpj8>Z`9(T)ivWHq zDJ2zX?ltFeV$dE4u3k;Fc(c%o8c1Ri%cRC(Gb><{O*^JF6mV#hR`&Vx9)Nx^XUKzC zz@wGcGeO5&Q#8!XvPY~3F2HVpNk}lk^TyZvQ4Z1qrNBxvwQP3~>Zuw|*4VFET5YYx z4)XyGHXk<{xC08Bu6KFdc(Ki2F-FGksJ}g3!=Tq#|1!SMWWE`G+^e((EWg0@^@WZ5 z#a2~!U!SUdbph^Uzyz_GkOtKX~A1tODRq#>@3877A zbOYdCI0k(}2=w^m+ zYYI-#mqKtc88jFf7^F<{$;`Hxl6h^#bPyZq9=ID>l~z-e=Xe?|>!bNgXOLql-6&%1Y=KravMv9-@)VnRZ~Ck)kfC#yydRp`}E(Z$?3UV)J9B z`24ZR@(dlne5dY_E-3Z&1+AdC0Ejy?Pv6#5Ro(i_72tDY*E#KU0uB%n7x!_prmznM zh4i zqL?&_3Je`)JTJCxp-?;F7|KITLN?VI85o;lG`jXuXQ+y8x##7cByF zEiI7W&R!E&N;_XyPSDG4`(lK(95N8seiM~`@cGrC`d+zp^}=1L0`@gvV(qlbK0Dat z0z_^84^*rJ7#SIR%4B^X|5SlJJAynkk7|FQ;o%&Ukt=ePCvqVPW0!#7$uficef`>(%JkxO zd2$@2$iUSQ=SEF~pQWAchH{3U(j_k7D~MFnA*%%Mn~GJ%M-@5zgvBdRvXYq!!&rKGSwv z?R&JMtC6qHN_&lOOow|QbDath4^y?$^73j%QUYv@y*5$vn}!Z?+EGWUg)a#fT_+mc zoGK~<1JSiVhmr9!eUn95?CR)X{PsmXp-tLzjLJGVYSZP1c=xMd>rq;M{vauJZA_&> zD9Wtdyo?vyP*iWyoM1BluZX`LgV67yKY^x?7$J>kd$K4F^jU)D54L2N(y*-_$0J}Z_9 zxxsrI#4%EsDCX5ZZ4kN-J-u-dQEw7)Sf@O#K= zI!fW>z@$ua*j!EAral8(^lfO$zC|5|oD^%Qe^r`rWd#w(h$z-sllVOPRA;fPedZ>p zVyb{vVLebLFx?HjWMa>h16ZmTISOP?UVm*iMW%CrJPZV3#$D@rT{#@CkIG)56l)`- zVG#-`e7UUsgsd-pZ5q$+J~r)BDiyos_4ZWvDXz zQC_W&Xu?(3up8!aG#Ug4;m6r&r2)-V6MNI8ate>-cO_K(r%C-0lx;vx(Wui6B^P|z z;TK87bTaE!9JH~&7|hNmrv{^=^)3bR#WiO{3*2}6&wmH5KMl8@(aG`d{e)t&`-8DmXquxudk=q)SC^&8Y(zSL&P1vh2)7+deu zAA}|5FI$wV796Y%R+(=ntM{`i6>6+zBVLRFb#87=ulrM*SxcQN>l8J6)Kc>nuhH|Y z8=yk_gGEO6YiV;)Bl~78##vUY=f?iRDF%3Ymxd z#rd<8i__EZt87Qcg~zta?J}}a)$}qro)-|fp9v2$B8gUdm6p@siGj3EaQ1u63`A_a zrsmJhETu}vct^E7)fZ#7c`Z#hKgP5r!$@t>dDB#G%7){2V<7f8!TcK1mAUcUHMPP~ zRjx+y6QHEPDScg?6zxub}0A8lxy&Yt7Mb>=u8*6fY0Jom0T`27$ zSJ}2Idr$*<5^pstvHTK9vArqi64P2uo`Q{6$J#)@z&vO{K!^=aeaHq21bAvD9)9o} zh$3O#^yrrZ${Th340+i3Eu~GMEjNuVQ6J4ZcMt_t8fK}838X*j@Kbag<8#^1!i{v? z{0;{g>y>Qg06ywVj01q*lCL3=$tai^zV>@xty3#gv>m?5Fp(jSRzY|1)NWAXG8)1b zhD#y8edCLPx0%29t5^I}sj&c^pvm!={lf1~a8^MCO4J_;wwkI`V+X515U(NZ(uNg~ zI4xip)>PMZ##s8B@8hK=*KX7%hBJ`Tw5$g53+aL=KBw&vfJ?gVJ$jh>)KZeq9m!>z z9%ej8nG8OPZl5IPeUlz!kX_t%_Ngj*DP8nkOrUCworwtdZmUEuS9 z1G~n`9TnmDt(6Wtxq?;Do1ZR(*-QELG+# zzoEfu6i|7!+B55LHj1Ogj|syM*S9~iT4j5=jf-MzvYpj3r{wc(pZBur6;vDNJ2dP} zuTRD2WMzG7-mRsi+kS6&7L&%hwsjF}4?fLezp$DY+|oP8iC0>S8NLEr2wt2`on&;- zsF)a@t(YyY)#kKMkJHPZSZa#>>im_C(P2LaB|4Xx+;*N7CHyJ{(qq8g^7Xji=&Sg) zBc!z50PO1LLm5{R4TnQ6#c)?r7R4!P4?(*4S#@77H@MW`;NXjP##iv3;p>#Cjf3u= z*Sv#sjo51!nI~OF6A*nNvhZ?lHv_c`UVPy@|CVK3zO#q^0W?nI0p&^~!M{BE_DORu zMqqR7WnU+AV^Dl=r|`S-*d_+%vHD}1-4luKT}KXo&~gRF#&5g;ACSNl zp`aN5O-Lc*Ru6&RVixs$`+UG1n*iU*b$lU~%cxiq>u*Rbjoj>AH2XBUsQXZs+{A+%ElMye0|G z{V4aXKwV(EPSVjh`SGi;-e*$YE)$HA2vCrZ$nhRgd*~_7H>XCw5FIZU0pIe-N}$12 zi&H*dor}Caw)P!pXrqD45}`WQ+(i~Il3YAh?ZH z=Xm|SgbIM-{1Os~V&hX&!vOUZ4I`s8XEayt64U6X7k4yt90(Q{7e~bN51auMKzUl| zbp8(aAW%gb_9t=!+8Mt^K7jWYIOuzP3bZVvnx9SkTMvH@?*ZNBCx^g_asHk9cZu8< zd5(gvhay1U9lZiObv?D3)CUAipR}ur@_zyvFiVi3wHw|l%^o`GHc z#P$!8zzwcKJvLq_LfpL*>r-jQH+aE6v{x;x+;0hc(1X{g7BY9Ebmx3WYUXH`dhdKH zv8wloR(49|wdXFNSJ9X6AA;t^p6RA>GNEhfUBk=C-EiJI9k`#g`TtHRHMjCMewwjA z%m;EY^)GqV=J(Q1fG)`&n<7j)nl1yN>H)Y7qL3h)1=OvK zd(eHa(*-p5!*7z+*XJ91W7;;1@RhF_;($=C5?3SZCR2{O5y8KxD14O#r37z5@uQvv zO{K$vcWD<>`hE)EoMBT_Q&ZaG!{tEFN-J^mxfyQ&nODiHL2_F6hW#F9nXHY;iu|CT zNAvHnnW)SFtm*Vj%`)+`?c=J?8~f69PK1Oig!*=g$`x0w~l^#5-ezfQ}`kKZ!@YpdOkLk5jrV zuCGsy_8vkarrIKi2vYjx5CVfzMjHXLg3+4tcn1V`Qc2VYba>T_W72G&<9%#wjfb$u zuLe}(-cXkz&{qUf1K+j|>NI=(lw_%xthCB^9!%mHeCmINcoPwNXPI{FwV}re;M0a9 zpI#h~0yxw&yf?H3r!Kqb^La)2LiVYC8gc$1+o0gpGEL1ds;p%twT8mKr)`byyo<5+ z5zX`uO$bC629!lRLR{R;>6u!mog&zRv5%0DP>+tnK!?mm-}}chU%?rY)A$|SFMO#k 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 +K=@VUVY_)Ysm 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 z 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�t&Qm-fq#0CnOW5FSGV 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
    |z3iUJKvw0qDb=Y+ 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%0Aw=*+abdg3#F7_Di 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 From 8bde59db9e231a45b8e14fce0fffe8f6ab9691eb Mon Sep 17 00:00:00 2001 From: Stephen Liedig Date: Tue, 22 Jul 2025 14:02:04 +0800 Subject: [PATCH 27/36] refactor: update event source and rule names to use 'unicorn.approvals' --- unicorn_approvals/integration/subscriptions.yaml | 4 ++-- unicorn_approvals/template.yaml | 2 +- .../eventbridge/publication_evaluation_completed_event.json | 2 +- unicorn_approvals/tests/unit/helper.py | 6 +++--- unicorn_web/tests/unit/events/property_approved.json | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/unicorn_approvals/integration/subscriptions.yaml b/unicorn_approvals/integration/subscriptions.yaml index 5929ffd..90bce06 100644 --- a/unicorn_approvals/integration/subscriptions.yaml +++ b/unicorn_approvals/integration/subscriptions.yaml @@ -19,7 +19,7 @@ Resources: DeletionPolicy: Delete UpdateReplacePolicy: Delete Properties: - Name: unicorn.properties-ContractStatusChanged + Name: unicorn.approvals-ContractStatusChanged Description: Contract Status Changed subscription EventBusName: Fn::Sub: "{{resolve:ssm:/uni-prop/${Stage}/UnicornContractsEventBusArn}}" @@ -42,7 +42,7 @@ Resources: DeletionPolicy: Delete UpdateReplacePolicy: Delete Properties: - Name: unicorn.properties-PublicationApprovalRequested + Name: unicorn.approvals-PublicationApprovalRequested Description: Publication evaluation completed subscription EventBusName: Fn::Sub: "{{resolve:ssm:/uni-prop/${Stage}/UnicornWebEventBusArn}}" diff --git a/unicorn_approvals/template.yaml b/unicorn_approvals/template.yaml index 06ee1fc..bb3d023 100644 --- a/unicorn_approvals/template.yaml +++ b/unicorn_approvals/template.yaml @@ -105,7 +105,7 @@ Resources: StatusChangedEvent: Type: EventBridgeRule Properties: - RuleName: unicorn.properties-ContractStatusChanged + RuleName: unicorn.approvals-ContractStatusChanged EventBusName: !GetAtt UnicornApprovalsEventBus.Name Pattern: source: diff --git a/unicorn_approvals/tests/events/eventbridge/publication_evaluation_completed_event.json b/unicorn_approvals/tests/events/eventbridge/publication_evaluation_completed_event.json index b96c3a6..aeeabc0 100644 --- a/unicorn_approvals/tests/events/eventbridge/publication_evaluation_completed_event.json +++ b/unicorn_approvals/tests/events/eventbridge/publication_evaluation_completed_event.json @@ -2,7 +2,7 @@ "version": "0", "id": "f849f683-76e1-1c84-669d-544a9828dfef", "detail-type": "PublicationEvaluationCompleted", - "source": "unicorn.properties", + "source": "unicorn.approvals", "account": "123456789012", "time": "2022-08-16T06:33:05Z", "region": "ap-southeast-2", diff --git a/unicorn_approvals/tests/unit/helper.py b/unicorn_approvals/tests/unit/helper.py index 3d71353..0b6367d 100644 --- a/unicorn_approvals/tests/unit/helper.py +++ b/unicorn_approvals/tests/unit/helper.py @@ -18,12 +18,12 @@ def return_env_vars_dict(k={}): "AWS_DEFAULT_REGION": "ap-southeast-2", "CONTRACT_STATUS_TABLE": TABLE_NAME, "EVENT_BUS": EVENTBUS_NAME, - "SERVICE_NAMESPACE": "unicorn.properties", - "POWERTOOLS_SERVICE_NAME": "unicorn.properties", + "SERVICE_NAMESPACE": "unicorn.approvals", + "POWERTOOLS_SERVICE_NAME": "unicorn.approvals", "POWERTOOLS_TRACE_DISABLED": "true", "POWERTOOLS_LOGGER_LOG_EVENT": "true", "POWERTOOLS_LOGGER_SAMPLE_RATE": "0.1", - "POWERTOOLS_METRICS_NAMESPACE": "unicorn.properties", + "POWERTOOLS_METRICS_NAMESPACE": "unicorn.approvals", "LOG_LEVEL": "INFO", } d.update(k) diff --git a/unicorn_web/tests/unit/events/property_approved.json b/unicorn_web/tests/unit/events/property_approved.json index 9047063..2541251 100644 --- a/unicorn_web/tests/unit/events/property_approved.json +++ b/unicorn_web/tests/unit/events/property_approved.json @@ -2,7 +2,7 @@ "version": "0", "id": "a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa", "detail-type": "PublicationEvaluationCompleted", - "source": "unicorn.properties", + "source": "unicorn.approvals", "account": "111122223333", "time": "2022-12-01T01:01:01Z", "region": "ap-southeast-1", From 812cedeb1b6c31e7e409dd2bb4522e5726489e8f Mon Sep 17 00:00:00 2001 From: Stephen Liedig Date: Thu, 24 Jul 2025 16:12:13 +0800 Subject: [PATCH 28/36] refactor: renames ApprovalService to PublicationManagerService for handling publication approval requests and events --- pyproject.toml | 6 ++++++ unicorn_approvals/template.yaml | 6 +++--- .../tests/unit/test_properties_approval_sync_function.py | 2 +- .../__init__.py | 0 .../publication_approved_event_handler.py | 0 .../request_approval_function.py | 0 unicorn_web/template.yaml | 4 ++-- .../tests/unit/test_publication_approved_event_handler.py | 2 +- unicorn_web/tests/unit/test_request_approval_function.py | 8 ++++---- 9 files changed, 17 insertions(+), 11 deletions(-) create mode 100644 pyproject.toml rename unicorn_web/src/{approvals_service => publication_manager_service}/__init__.py (100%) rename unicorn_web/src/{approvals_service => publication_manager_service}/publication_approved_event_handler.py (100%) rename unicorn_web/src/{approvals_service => publication_manager_service}/request_approval_function.py (100%) diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..97cced0 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,6 @@ +[project] +name = "aws-serverless-developer-experience-workshop-python" +version = "0.1.0" +description = "Add your description here" +requires-python = ">=3.12" +dependencies = [] diff --git a/unicorn_approvals/template.yaml b/unicorn_approvals/template.yaml index bb3d023..eb3c24b 100644 --- a/unicorn_approvals/template.yaml +++ b/unicorn_approvals/template.yaml @@ -95,7 +95,7 @@ Resources: Type: AWS::Serverless::Function Properties: CodeUri: src/ - Handler: approvals_service.contract_status_changed_event_handler.lambda_handler + Handler: publication_manager_service.contract_status_changed_event_handler.lambda_handler Policies: - DynamoDBWritePolicy: TableName: !Ref ContractStatusTable @@ -137,7 +137,7 @@ Resources: Type: AWS::Serverless::Function Properties: CodeUri: src/ - Handler: approvals_service.properties_approval_sync_function.lambda_handler + Handler: publication_manager_service.properties_approval_sync_function.lambda_handler Policies: - DynamoDBReadPolicy: TableName: !Ref ContractStatusTable @@ -184,7 +184,7 @@ Resources: Type: AWS::Serverless::Function Properties: CodeUri: src/ - Handler: approvals_service.wait_for_contract_approval_function.lambda_handler + Handler: publication_manager_service.wait_for_contract_approval_function.lambda_handler Policies: - DynamoDBCrudPolicy: TableName: !Ref ContractStatusTable diff --git a/unicorn_approvals/tests/unit/test_properties_approval_sync_function.py b/unicorn_approvals/tests/unit/test_properties_approval_sync_function.py index 4e17b4a..6d12769 100644 --- a/unicorn_approvals/tests/unit/test_properties_approval_sync_function.py +++ b/unicorn_approvals/tests/unit/test_properties_approval_sync_function.py @@ -27,7 +27,7 @@ def test_handle_status_changed_approved(caplog, stepfunction, lambda_context): pass # ddbstream_event = load_event('ddb_stream_events/status_approved_waiting_for_approval') - # from approvals_service import properties_approval_sync_function + # from publication_manager_service import properties_approval_sync_function # reload(properties_approval_sync_function) # ret = properties_approval_sync_function.lambda_handler(ddbstream_event, lambda_context) diff --git a/unicorn_web/src/approvals_service/__init__.py b/unicorn_web/src/publication_manager_service/__init__.py similarity index 100% rename from unicorn_web/src/approvals_service/__init__.py rename to unicorn_web/src/publication_manager_service/__init__.py diff --git a/unicorn_web/src/approvals_service/publication_approved_event_handler.py b/unicorn_web/src/publication_manager_service/publication_approved_event_handler.py similarity index 100% rename from unicorn_web/src/approvals_service/publication_approved_event_handler.py rename to unicorn_web/src/publication_manager_service/publication_approved_event_handler.py diff --git a/unicorn_web/src/approvals_service/request_approval_function.py b/unicorn_web/src/publication_manager_service/request_approval_function.py similarity index 100% rename from unicorn_web/src/approvals_service/request_approval_function.py rename to unicorn_web/src/publication_manager_service/request_approval_function.py diff --git a/unicorn_web/template.yaml b/unicorn_web/template.yaml index 130366f..b2c54de 100644 --- a/unicorn_web/template.yaml +++ b/unicorn_web/template.yaml @@ -111,7 +111,7 @@ Resources: Type: AWS::Serverless::Function Properties: CodeUri: src/ - Handler: approvals_service.request_approval_function.lambda_handler + Handler: publication_manager_service.request_approval_function.lambda_handler Policies: - EventBridgePutEventsPolicy: EventBusName: !Ref UnicornWebEventBus @@ -141,7 +141,7 @@ Resources: Type: AWS::Serverless::Function Properties: CodeUri: src/ - Handler: approvals_service.publication_approved_event_handler.lambda_handler + Handler: publication_manager_service.publication_approved_event_handler.lambda_handler Policies: - DynamoDBCrudPolicy: TableName: !Ref WebTable diff --git a/unicorn_web/tests/unit/test_publication_approved_event_handler.py b/unicorn_web/tests/unit/test_publication_approved_event_handler.py index 755520c..caecd16 100644 --- a/unicorn_web/tests/unit/test_publication_approved_event_handler.py +++ b/unicorn_web/tests/unit/test_publication_approved_event_handler.py @@ -24,7 +24,7 @@ # eventbridge_event = load_event('events/property_approved.json') # property_id = eventbridge_event['detail']['property_id'] -# import approvals_service.publication_approved_event_handler as app +# import publication_manager_service.publication_approved_event_handler as app # reload(app) # Reload is required to prevent function setup reuse from another test # create_ddb_table_property_web(dynamodb) diff --git a/unicorn_web/tests/unit/test_request_approval_function.py b/unicorn_web/tests/unit/test_request_approval_function.py index 8cdd023..e5737b6 100644 --- a/unicorn_web/tests/unit/test_request_approval_function.py +++ b/unicorn_web/tests/unit/test_request_approval_function.py @@ -58,7 +58,7 @@ def test_valid_event(dynamodb, eventbridge, sqs, lambda_context): # apigw_event = load_event('events/request_approval_bad_input.json') # # Loading function here so that mocking works correctly. -# import approvals_service.request_approval_function as app +# import publication_manager_service.request_approval_function as app # # Reload is required to prevent function setup reuse from another test # reload(app) @@ -79,7 +79,7 @@ def test_valid_event(dynamodb, eventbridge, sqs, lambda_context): # apigw_event = load_event('events/request_invalid_property_id.json') # # Loading function here so that mocking works correctly. -# import approvals_service.request_approval_function as app +# import publication_manager_service.request_approval_function as app # # Reload is required to prevent function setup reuse from another test # reload(app) @@ -100,7 +100,7 @@ def test_valid_event(dynamodb, eventbridge, sqs, lambda_context): # apigw_event = load_event('events/request_already_approved.json') # # Loading function here so that mocking works correctly. -# import approvals_service.request_approval_function as app +# import publication_manager_service.request_approval_function as app # # Reload is required to prevent function setup reuse from another test # reload(app) @@ -121,7 +121,7 @@ def test_valid_event(dynamodb, eventbridge, sqs, lambda_context): # apigw_event = load_event('events/request_non_existent_property.json') # # Loading function here so that mocking works correctly. -# import approvals_service.request_approval_function as app +# import publication_manager_service.request_approval_function as app # # Reload is required to prevent function setup reuse from another test # reload(app) From 21d33dcc04485ea5d077befa3a99fd929a697989 Mon Sep 17 00:00:00 2001 From: Stephen Liedig Date: Tue, 29 Jul 2025 12:20:25 +0800 Subject: [PATCH 29/36] fix: remove error suppression for cfn-lint command. Removed uv build-system configuration for Approvals and Contracts --- unicorn_approvals/Makefile | 2 +- unicorn_approvals/pyproject.toml | 4 - unicorn_approvals/template.yaml | 1 - unicorn_approvals/uv.lock | 661 ++++++++++++++++--------------- unicorn_contracts/pyproject.toml | 6 +- unicorn_contracts/uv.lock | 654 +++++++++++++++--------------- 6 files changed, 666 insertions(+), 662 deletions(-) diff --git a/unicorn_approvals/Makefile b/unicorn_approvals/Makefile index 0f787af..0f33233 100644 --- a/unicorn_approvals/Makefile +++ b/unicorn_approvals/Makefile @@ -9,7 +9,7 @@ stackName := $(shell yq -r '.default.global.parameters.stack_name' samconfig.to build: ruff format sam validate --lint - cfn-lint template.yaml -a cfn_lint_serverless.rules || true + cfn-lint template.yaml -a cfn_lint_serverless.rules uv export --no-hashes --format=requirements-txt --output-file=src/requirements.txt sam build -c $(DOCKER_OPTS) diff --git a/unicorn_approvals/pyproject.toml b/unicorn_approvals/pyproject.toml index 83318e4..2fce544 100644 --- a/unicorn_approvals/pyproject.toml +++ b/unicorn_approvals/pyproject.toml @@ -35,7 +35,3 @@ minversion = "7.0" addopts = "-ra -vv -W ignore::UserWarning" testpaths = ["tests/unit", "tests/integration"] pythonpath = ["."] - -[build-system] -requires = ["uv_build"] -build-backend = "uv_build" diff --git a/unicorn_approvals/template.yaml b/unicorn_approvals/template.yaml index eb3c24b..168e8f9 100644 --- a/unicorn_approvals/template.yaml +++ b/unicorn_approvals/template.yaml @@ -16,7 +16,6 @@ Metadata: - WS2001 # Rule disabled because check does not support !ToJsonString transform - ES1001 # Rule disabled because our Lambda functions don't need DestinationConfig.OnFailure - W3002 # Rule disabled as nested templates are being packaged - - E3030 # Rule disabled due to using cfn-lint-serverless rules v0.3 Parameters: Stage: diff --git a/unicorn_approvals/uv.lock b/unicorn_approvals/uv.lock index 5b09665..1aa79ba 100644 --- a/unicorn_approvals/uv.lock +++ b/unicorn_approvals/uv.lock @@ -1,14 +1,14 @@ version = 1 -revision = 1 -requires-python = ">=3.12" +revision = 2 +requires-python = ">=3.12.11" [[package]] name = "annotated-types" version = "0.7.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081 } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload-time = "2024-05-20T21:33:25.928Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643 }, + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" }, ] [[package]] @@ -53,23 +53,23 @@ provides-extras = ["dev"] name = "arnparse" version = "0.0.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bd/42/949284e998282b167e273872fa9c39b06d41a6055163c30aa2daaeee76a0/arnparse-0.0.2.tar.gz", hash = "sha256:cb87f17200d07121108a9085d4a09cc69a55582647776b9a917b0b1f279db8f8", size = 2677 } +sdist = { url = "https://files.pythonhosted.org/packages/bd/42/949284e998282b167e273872fa9c39b06d41a6055163c30aa2daaeee76a0/arnparse-0.0.2.tar.gz", hash = "sha256:cb87f17200d07121108a9085d4a09cc69a55582647776b9a917b0b1f279db8f8", size = 2677, upload-time = "2019-03-12T21:17:04.586Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/57/6f/630bedeb32964e99661990811a66389201b62c047b35c17e332dad9be2a3/arnparse-0.0.2-py2.py3-none-any.whl", hash = "sha256:b0906734e4b8f19e39b1e32944c6cd6274b6da90c066a83882ac7a11d27553e0", size = 2904 }, + { url = "https://files.pythonhosted.org/packages/57/6f/630bedeb32964e99661990811a66389201b62c047b35c17e332dad9be2a3/arnparse-0.0.2-py2.py3-none-any.whl", hash = "sha256:b0906734e4b8f19e39b1e32944c6cd6274b6da90c066a83882ac7a11d27553e0", size = 2904, upload-time = "2019-03-12T21:17:03.039Z" }, ] [[package]] name = "attrs" version = "25.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b", size = 812032 } +sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b", size = 812032, upload-time = "2025-03-13T11:10:22.779Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815 }, + { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815, upload-time = "2025-03-13T11:10:21.14Z" }, ] [[package]] name = "aws-encryption-sdk" -version = "4.0.1" +version = "4.0.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "attrs" }, @@ -77,22 +77,22 @@ dependencies = [ { name = "cryptography" }, { name = "wrapt" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/45/ff/fefbcc1cee829f3ab188dbcb5069862f61b64ed82a6205314f1ab7bb90e6/aws-encryption-sdk-4.0.1.tar.gz", hash = "sha256:7320dc4cf8d8d5a9b4c88a343be93835da18756e05308d3536554be0ca2889a5", size = 260219 } +sdist = { url = "https://files.pythonhosted.org/packages/a3/85/d2cc3ccb44cbd325347fe895cc449e1e3ad8097e68e33763b9fdf6ff88df/aws_encryption_sdk-4.0.2.tar.gz", hash = "sha256:911a900980732e509b86e0443fe3bdcee480760a460e0f702f360565a20f3888", size = 260341, upload-time = "2025-07-02T17:09:36.249Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/66/a5/82956e2111b169c644633212da2a5f84dd9d953b9dd146ccfccfb8a46290/aws_encryption_sdk-4.0.1-py2.py3-none-any.whl", hash = "sha256:5c2ca9a207e1732542a1370ac7efd630ab6e04d05f98e68badf20927eb95ed1d", size = 99127 }, + { url = "https://files.pythonhosted.org/packages/1f/89/f4bec3d892f339927524824b3baf41391559118f1f0b4e162c208e15157e/aws_encryption_sdk-4.0.2-py2.py3-none-any.whl", hash = "sha256:73d9aadc3b10927148f3e057e51e0c15f0e68431df6d3ef45d8af83fefe7156f", size = 99130, upload-time = "2025-07-02T17:09:35.116Z" }, ] [[package]] name = "aws-lambda-powertools" -version = "3.13.0" +version = "3.17.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jmespath" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fd/2b/068efd467c0866e2272c5de7525ddb02ff4e694f71245c8d2a83d4948f23/aws_lambda_powertools-3.13.0.tar.gz", hash = "sha256:99dc11ac6eb81564f599fdd85ba79069f7740ae3481c99bca2cee8abb7c95543", size = 672664 } +sdist = { url = "https://files.pythonhosted.org/packages/a8/bd/668cb3857f66907774af965475c952b07c12ce66aa9fd042c09df5cbb2cd/aws_lambda_powertools-3.17.0.tar.gz", hash = "sha256:153c5be7d36449c2a3ce554341b3cb28c127070c678069fea39709d4e114e4ce", size = 685174, upload-time = "2025-07-15T08:18:44.636Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/98/cd/2241ff877528c66ee11ea636684c4242ceeadb6459a33b08507a40151414/aws_lambda_powertools-3.13.0-py3-none-any.whl", hash = "sha256:9df045f4c3ff944176655813dbff8c1160e056babf5e6d71d4e18c0003818f2e", size = 802546 }, + { url = "https://files.pythonhosted.org/packages/56/d9/954d101974f7f81375429f540bcfe4efde806c49ea7d46d5c00fbfc6b8b9/aws_lambda_powertools-3.17.0-py3-none-any.whl", hash = "sha256:ed2d23ba1af73a5e4ad0fcdae66caeb9aef1cb9d95d324ccaa2a377b48688035", size = 826398, upload-time = "2025-07-15T08:18:42.454Z" }, ] [package.optional-dependencies] @@ -116,46 +116,46 @@ dependencies = [ { name = "botocore" }, { name = "wrapt" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e0/6c/8e7fb2a45f20afc5c19d52807b560793fb48b0feca1de7de116b62a7893e/aws_xray_sdk-2.14.0.tar.gz", hash = "sha256:aab843c331af9ab9ba5cefb3a303832a19db186140894a523edafc024cc0493c", size = 93976 } +sdist = { url = "https://files.pythonhosted.org/packages/e0/6c/8e7fb2a45f20afc5c19d52807b560793fb48b0feca1de7de116b62a7893e/aws_xray_sdk-2.14.0.tar.gz", hash = "sha256:aab843c331af9ab9ba5cefb3a303832a19db186140894a523edafc024cc0493c", size = 93976, upload-time = "2024-06-04T22:11:38.124Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/41/69/b417833a8926fa5491e5346d7c233bf7d8a9b12ba1f4ef41ccea2494000c/aws_xray_sdk-2.14.0-py2.py3-none-any.whl", hash = "sha256:cfbe6feea3d26613a2a869d14c9246a844285c97087ad8f296f901633554ad94", size = 101922 }, + { url = "https://files.pythonhosted.org/packages/41/69/b417833a8926fa5491e5346d7c233bf7d8a9b12ba1f4ef41ccea2494000c/aws_xray_sdk-2.14.0-py2.py3-none-any.whl", hash = "sha256:cfbe6feea3d26613a2a869d14c9246a844285c97087ad8f296f901633554ad94", size = 101922, upload-time = "2024-06-04T22:12:25.729Z" }, ] [[package]] name = "boto3" -version = "1.38.25" +version = "1.39.14" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "botocore" }, { name = "jmespath" }, { name = "s3transfer" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/0d/af/404827da46c67359e6d2a63b0f4fadd5b6150551d25c405b3bd480c19319/boto3-1.38.25.tar.gz", hash = "sha256:85c1556a110896f68de8573a9b4757c81071448dbf6ffc1074941bfc8a43195e", size = 111819 } +sdist = { url = "https://files.pythonhosted.org/packages/66/8f/acc7d434730e0c931ece4b46c983bf5afb7ae63abb545b535f0eda538476/boto3-1.39.14.tar.gz", hash = "sha256:fabb16360a93b449d5241006485bcc761c26694e75ac01009f4459f114acc06e", size = 111844, upload-time = "2025-07-25T19:25:26.943Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5b/27/b2ea9d2494b1d35c3de23485bf6b0a7b8539dea965349c8829a1fd84d08e/boto3-1.38.25-py3-none-any.whl", hash = "sha256:2f2cd517dd31d33ace0eefe567dc903fdf74221513e32f1e9445bdfac7554db7", size = 139938 }, + { url = "https://files.pythonhosted.org/packages/93/9a/01ea17a58a27b7f4a7a6f6e2f4d4191b9e92362b77b6d58689f2d7eccb99/boto3-1.39.14-py3-none-any.whl", hash = "sha256:82c6868cad18c3bd4170915e9525f9af5f83e9779c528417f8863629558fc2d0", size = 139898, upload-time = "2025-07-25T19:25:25.506Z" }, ] [[package]] name = "botocore" -version = "1.38.25" +version = "1.39.14" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jmespath" }, { name = "python-dateutil" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/6b/00/bed5bf325d1fdb98d6212d106bd44cd0bbe65563e3a2c3f87b64cc4d75c2/botocore-1.38.25.tar.gz", hash = "sha256:8c73e97d9662a6c92be33dab66cd1e2b59797154c7ec379ce3bb5d6779d9d78c", size = 13914295 } +sdist = { url = "https://files.pythonhosted.org/packages/cc/ca/8994676a67f0a9d39a0844124f196c4dedc2fbca370c839f61246c1fea6d/botocore-1.39.14.tar.gz", hash = "sha256:7fc44d4ad13b524e5d8a6296785776ef5898ac026ff74df9b35313831d507926", size = 14226110, upload-time = "2025-07-25T19:25:17.751Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2f/ae/3b52634df58cbd506ad804315a1c979ea06942cf88b591dcd671f45adf63/botocore-1.38.25-py3-none-any.whl", hash = "sha256:5a960bd990a11cdb78865e908a58ed712d87d9b419f55ad21c99d7d21f0d6726", size = 13574906 }, + { url = "https://files.pythonhosted.org/packages/08/c0/6b8200686c1f9ea44ab0daab0223b04799d60ccf882b9d7f770fbb40571e/botocore-1.39.14-py3-none-any.whl", hash = "sha256:4ed551c77194167b7e8063f33059bc2f9b2ead0ed4ee33dc7857273648ed4349", size = 13888318, upload-time = "2025-07-25T19:25:13.386Z" }, ] [[package]] name = "certifi" -version = "2025.4.26" +version = "2025.7.14" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e8/9e/c05b3920a3b7d20d3d3310465f50348e5b3694f4f88c6daf736eef3024c4/certifi-2025.4.26.tar.gz", hash = "sha256:0a816057ea3cdefcef70270d2c515e4506bbc954f417fa5ade2021213bb8f0c6", size = 160705 } +sdist = { url = "https://files.pythonhosted.org/packages/b3/76/52c535bcebe74590f296d6c77c86dabf761c41980e1347a2422e4aa2ae41/certifi-2025.7.14.tar.gz", hash = "sha256:8ea99dbdfaaf2ba2f9bac77b9249ef62ec5218e7c2b2e903378ed5fccf765995", size = 163981, upload-time = "2025-07-14T03:29:28.449Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/4a/7e/3db2bd1b1f9e95f7cddca6d6e75e2f2bd9f51b1246e546d88addca0106bd/certifi-2025.4.26-py3-none-any.whl", hash = "sha256:30350364dfe371162649852c63336a15c70c6510c2ad5015b21c2345311805f3", size = 159618 }, + { url = "https://files.pythonhosted.org/packages/4f/52/34c6cf5bb9285074dc3531c437b3919e825d976fde097a7a73f79e726d03/certifi-2025.7.14-py3-none-any.whl", hash = "sha256:6b31f564a415d79ee77df69d757bb49a5bb53bd9f756cbbe24394ffd6fc1f4b2", size = 162722, upload-time = "2025-07-14T03:29:26.863Z" }, ] [[package]] @@ -165,109 +165,109 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pycparser" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5a/84/e94227139ee5fb4d600a7a4927f322e1d4aea6fdc50bd3fca8493caba23f/cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4", size = 183178 }, - { url = "https://files.pythonhosted.org/packages/da/ee/fb72c2b48656111c4ef27f0f91da355e130a923473bf5ee75c5643d00cca/cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c", size = 178840 }, - { url = "https://files.pythonhosted.org/packages/cc/b6/db007700f67d151abadf508cbfd6a1884f57eab90b1bb985c4c8c02b0f28/cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36", size = 454803 }, - { url = "https://files.pythonhosted.org/packages/1a/df/f8d151540d8c200eb1c6fba8cd0dfd40904f1b0682ea705c36e6c2e97ab3/cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5", size = 478850 }, - { url = "https://files.pythonhosted.org/packages/28/c0/b31116332a547fd2677ae5b78a2ef662dfc8023d67f41b2a83f7c2aa78b1/cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff", size = 485729 }, - { url = "https://files.pythonhosted.org/packages/91/2b/9a1ddfa5c7f13cab007a2c9cc295b70fbbda7cb10a286aa6810338e60ea1/cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99", size = 471256 }, - { url = "https://files.pythonhosted.org/packages/b2/d5/da47df7004cb17e4955df6a43d14b3b4ae77737dff8bf7f8f333196717bf/cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93", size = 479424 }, - { url = "https://files.pythonhosted.org/packages/0b/ac/2a28bcf513e93a219c8a4e8e125534f4f6db03e3179ba1c45e949b76212c/cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3", size = 484568 }, - { url = "https://files.pythonhosted.org/packages/d4/38/ca8a4f639065f14ae0f1d9751e70447a261f1a30fa7547a828ae08142465/cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8", size = 488736 }, - { url = "https://files.pythonhosted.org/packages/86/c5/28b2d6f799ec0bdecf44dced2ec5ed43e0eb63097b0f58c293583b406582/cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", size = 172448 }, - { url = "https://files.pythonhosted.org/packages/50/b9/db34c4755a7bd1cb2d1603ac3863f22bcecbd1ba29e5ee841a4bc510b294/cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", size = 181976 }, - { url = "https://files.pythonhosted.org/packages/8d/f8/dd6c246b148639254dad4d6803eb6a54e8c85c6e11ec9df2cffa87571dbe/cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e", size = 182989 }, - { url = "https://files.pythonhosted.org/packages/8b/f1/672d303ddf17c24fc83afd712316fda78dc6fce1cd53011b839483e1ecc8/cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2", size = 178802 }, - { url = "https://files.pythonhosted.org/packages/0e/2d/eab2e858a91fdff70533cab61dcff4a1f55ec60425832ddfdc9cd36bc8af/cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3", size = 454792 }, - { url = "https://files.pythonhosted.org/packages/75/b2/fbaec7c4455c604e29388d55599b99ebcc250a60050610fadde58932b7ee/cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683", size = 478893 }, - { url = "https://files.pythonhosted.org/packages/4f/b7/6e4a2162178bf1935c336d4da8a9352cccab4d3a5d7914065490f08c0690/cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5", size = 485810 }, - { url = "https://files.pythonhosted.org/packages/c7/8a/1d0e4a9c26e54746dc08c2c6c037889124d4f59dffd853a659fa545f1b40/cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4", size = 471200 }, - { url = "https://files.pythonhosted.org/packages/26/9f/1aab65a6c0db35f43c4d1b4f580e8df53914310afc10ae0397d29d697af4/cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd", size = 479447 }, - { url = "https://files.pythonhosted.org/packages/5f/e4/fb8b3dd8dc0e98edf1135ff067ae070bb32ef9d509d6cb0f538cd6f7483f/cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed", size = 484358 }, - { url = "https://files.pythonhosted.org/packages/f1/47/d7145bf2dc04684935d57d67dff9d6d795b2ba2796806bb109864be3a151/cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9", size = 488469 }, - { url = "https://files.pythonhosted.org/packages/bf/ee/f94057fa6426481d663b88637a9a10e859e492c73d0384514a17d78ee205/cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d", size = 172475 }, - { url = "https://files.pythonhosted.org/packages/7c/fc/6a8cb64e5f0324877d503c854da15d76c1e50eb722e320b15345c4d0c6de/cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a", size = 182009 }, +sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621, upload-time = "2024-09-04T20:45:21.852Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/84/e94227139ee5fb4d600a7a4927f322e1d4aea6fdc50bd3fca8493caba23f/cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4", size = 183178, upload-time = "2024-09-04T20:44:12.232Z" }, + { url = "https://files.pythonhosted.org/packages/da/ee/fb72c2b48656111c4ef27f0f91da355e130a923473bf5ee75c5643d00cca/cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c", size = 178840, upload-time = "2024-09-04T20:44:13.739Z" }, + { url = "https://files.pythonhosted.org/packages/cc/b6/db007700f67d151abadf508cbfd6a1884f57eab90b1bb985c4c8c02b0f28/cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36", size = 454803, upload-time = "2024-09-04T20:44:15.231Z" }, + { url = "https://files.pythonhosted.org/packages/1a/df/f8d151540d8c200eb1c6fba8cd0dfd40904f1b0682ea705c36e6c2e97ab3/cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5", size = 478850, upload-time = "2024-09-04T20:44:17.188Z" }, + { url = "https://files.pythonhosted.org/packages/28/c0/b31116332a547fd2677ae5b78a2ef662dfc8023d67f41b2a83f7c2aa78b1/cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff", size = 485729, upload-time = "2024-09-04T20:44:18.688Z" }, + { url = "https://files.pythonhosted.org/packages/91/2b/9a1ddfa5c7f13cab007a2c9cc295b70fbbda7cb10a286aa6810338e60ea1/cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99", size = 471256, upload-time = "2024-09-04T20:44:20.248Z" }, + { url = "https://files.pythonhosted.org/packages/b2/d5/da47df7004cb17e4955df6a43d14b3b4ae77737dff8bf7f8f333196717bf/cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93", size = 479424, upload-time = "2024-09-04T20:44:21.673Z" }, + { url = "https://files.pythonhosted.org/packages/0b/ac/2a28bcf513e93a219c8a4e8e125534f4f6db03e3179ba1c45e949b76212c/cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3", size = 484568, upload-time = "2024-09-04T20:44:23.245Z" }, + { url = "https://files.pythonhosted.org/packages/d4/38/ca8a4f639065f14ae0f1d9751e70447a261f1a30fa7547a828ae08142465/cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8", size = 488736, upload-time = "2024-09-04T20:44:24.757Z" }, + { url = "https://files.pythonhosted.org/packages/86/c5/28b2d6f799ec0bdecf44dced2ec5ed43e0eb63097b0f58c293583b406582/cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", size = 172448, upload-time = "2024-09-04T20:44:26.208Z" }, + { url = "https://files.pythonhosted.org/packages/50/b9/db34c4755a7bd1cb2d1603ac3863f22bcecbd1ba29e5ee841a4bc510b294/cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", size = 181976, upload-time = "2024-09-04T20:44:27.578Z" }, + { url = "https://files.pythonhosted.org/packages/8d/f8/dd6c246b148639254dad4d6803eb6a54e8c85c6e11ec9df2cffa87571dbe/cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e", size = 182989, upload-time = "2024-09-04T20:44:28.956Z" }, + { url = "https://files.pythonhosted.org/packages/8b/f1/672d303ddf17c24fc83afd712316fda78dc6fce1cd53011b839483e1ecc8/cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2", size = 178802, upload-time = "2024-09-04T20:44:30.289Z" }, + { url = "https://files.pythonhosted.org/packages/0e/2d/eab2e858a91fdff70533cab61dcff4a1f55ec60425832ddfdc9cd36bc8af/cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3", size = 454792, upload-time = "2024-09-04T20:44:32.01Z" }, + { url = "https://files.pythonhosted.org/packages/75/b2/fbaec7c4455c604e29388d55599b99ebcc250a60050610fadde58932b7ee/cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683", size = 478893, upload-time = "2024-09-04T20:44:33.606Z" }, + { url = "https://files.pythonhosted.org/packages/4f/b7/6e4a2162178bf1935c336d4da8a9352cccab4d3a5d7914065490f08c0690/cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5", size = 485810, upload-time = "2024-09-04T20:44:35.191Z" }, + { url = "https://files.pythonhosted.org/packages/c7/8a/1d0e4a9c26e54746dc08c2c6c037889124d4f59dffd853a659fa545f1b40/cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4", size = 471200, upload-time = "2024-09-04T20:44:36.743Z" }, + { url = "https://files.pythonhosted.org/packages/26/9f/1aab65a6c0db35f43c4d1b4f580e8df53914310afc10ae0397d29d697af4/cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd", size = 479447, upload-time = "2024-09-04T20:44:38.492Z" }, + { url = "https://files.pythonhosted.org/packages/5f/e4/fb8b3dd8dc0e98edf1135ff067ae070bb32ef9d509d6cb0f538cd6f7483f/cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed", size = 484358, upload-time = "2024-09-04T20:44:40.046Z" }, + { url = "https://files.pythonhosted.org/packages/f1/47/d7145bf2dc04684935d57d67dff9d6d795b2ba2796806bb109864be3a151/cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9", size = 488469, upload-time = "2024-09-04T20:44:41.616Z" }, + { url = "https://files.pythonhosted.org/packages/bf/ee/f94057fa6426481d663b88637a9a10e859e492c73d0384514a17d78ee205/cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d", size = 172475, upload-time = "2024-09-04T20:44:43.733Z" }, + { url = "https://files.pythonhosted.org/packages/7c/fc/6a8cb64e5f0324877d503c854da15d76c1e50eb722e320b15345c4d0c6de/cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a", size = 182009, upload-time = "2024-09-04T20:44:45.309Z" }, ] [[package]] name = "charset-normalizer" version = "3.4.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e4/33/89c2ced2b67d1c2a61c19c6751aa8902d46ce3dacb23600a283619f5a12d/charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63", size = 126367 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d7/a4/37f4d6035c89cac7930395a35cc0f1b872e652eaafb76a6075943754f095/charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7", size = 199936 }, - { url = "https://files.pythonhosted.org/packages/ee/8a/1a5e33b73e0d9287274f899d967907cd0bf9c343e651755d9307e0dbf2b3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3", size = 143790 }, - { url = "https://files.pythonhosted.org/packages/66/52/59521f1d8e6ab1482164fa21409c5ef44da3e9f653c13ba71becdd98dec3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a", size = 153924 }, - { url = "https://files.pythonhosted.org/packages/86/2d/fb55fdf41964ec782febbf33cb64be480a6b8f16ded2dbe8db27a405c09f/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214", size = 146626 }, - { url = "https://files.pythonhosted.org/packages/8c/73/6ede2ec59bce19b3edf4209d70004253ec5f4e319f9a2e3f2f15601ed5f7/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a", size = 148567 }, - { url = "https://files.pythonhosted.org/packages/09/14/957d03c6dc343c04904530b6bef4e5efae5ec7d7990a7cbb868e4595ee30/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd", size = 150957 }, - { url = "https://files.pythonhosted.org/packages/0d/c8/8174d0e5c10ccebdcb1b53cc959591c4c722a3ad92461a273e86b9f5a302/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981", size = 145408 }, - { url = "https://files.pythonhosted.org/packages/58/aa/8904b84bc8084ac19dc52feb4f5952c6df03ffb460a887b42615ee1382e8/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c", size = 153399 }, - { url = "https://files.pythonhosted.org/packages/c2/26/89ee1f0e264d201cb65cf054aca6038c03b1a0c6b4ae998070392a3ce605/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b", size = 156815 }, - { url = "https://files.pythonhosted.org/packages/fd/07/68e95b4b345bad3dbbd3a8681737b4338ff2c9df29856a6d6d23ac4c73cb/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d", size = 154537 }, - { url = "https://files.pythonhosted.org/packages/77/1a/5eefc0ce04affb98af07bc05f3bac9094513c0e23b0562d64af46a06aae4/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f", size = 149565 }, - { url = "https://files.pythonhosted.org/packages/37/a0/2410e5e6032a174c95e0806b1a6585eb21e12f445ebe239fac441995226a/charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c", size = 98357 }, - { url = "https://files.pythonhosted.org/packages/6c/4f/c02d5c493967af3eda9c771ad4d2bbc8df6f99ddbeb37ceea6e8716a32bc/charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e", size = 105776 }, - { url = "https://files.pythonhosted.org/packages/ea/12/a93df3366ed32db1d907d7593a94f1fe6293903e3e92967bebd6950ed12c/charset_normalizer-3.4.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:926ca93accd5d36ccdabd803392ddc3e03e6d4cd1cf17deff3b989ab8e9dbcf0", size = 199622 }, - { url = "https://files.pythonhosted.org/packages/04/93/bf204e6f344c39d9937d3c13c8cd5bbfc266472e51fc8c07cb7f64fcd2de/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eba9904b0f38a143592d9fc0e19e2df0fa2e41c3c3745554761c5f6447eedabf", size = 143435 }, - { url = "https://files.pythonhosted.org/packages/22/2a/ea8a2095b0bafa6c5b5a55ffdc2f924455233ee7b91c69b7edfcc9e02284/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fddb7e2c84ac87ac3a947cb4e66d143ca5863ef48e4a5ecb83bd48619e4634e", size = 153653 }, - { url = "https://files.pythonhosted.org/packages/b6/57/1b090ff183d13cef485dfbe272e2fe57622a76694061353c59da52c9a659/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98f862da73774290f251b9df8d11161b6cf25b599a66baf087c1ffe340e9bfd1", size = 146231 }, - { url = "https://files.pythonhosted.org/packages/e2/28/ffc026b26f441fc67bd21ab7f03b313ab3fe46714a14b516f931abe1a2d8/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c9379d65defcab82d07b2a9dfbfc2e95bc8fe0ebb1b176a3190230a3ef0e07c", size = 148243 }, - { url = "https://files.pythonhosted.org/packages/c0/0f/9abe9bd191629c33e69e47c6ef45ef99773320e9ad8e9cb08b8ab4a8d4cb/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e635b87f01ebc977342e2697d05b56632f5f879a4f15955dfe8cef2448b51691", size = 150442 }, - { url = "https://files.pythonhosted.org/packages/67/7c/a123bbcedca91d5916c056407f89a7f5e8fdfce12ba825d7d6b9954a1a3c/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1c95a1e2902a8b722868587c0e1184ad5c55631de5afc0eb96bc4b0d738092c0", size = 145147 }, - { url = "https://files.pythonhosted.org/packages/ec/fe/1ac556fa4899d967b83e9893788e86b6af4d83e4726511eaaad035e36595/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ef8de666d6179b009dce7bcb2ad4c4a779f113f12caf8dc77f0162c29d20490b", size = 153057 }, - { url = "https://files.pythonhosted.org/packages/2b/ff/acfc0b0a70b19e3e54febdd5301a98b72fa07635e56f24f60502e954c461/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:32fc0341d72e0f73f80acb0a2c94216bd704f4f0bce10aedea38f30502b271ff", size = 156454 }, - { url = "https://files.pythonhosted.org/packages/92/08/95b458ce9c740d0645feb0e96cea1f5ec946ea9c580a94adfe0b617f3573/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:289200a18fa698949d2b39c671c2cc7a24d44096784e76614899a7ccf2574b7b", size = 154174 }, - { url = "https://files.pythonhosted.org/packages/78/be/8392efc43487ac051eee6c36d5fbd63032d78f7728cb37aebcc98191f1ff/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a476b06fbcf359ad25d34a057b7219281286ae2477cc5ff5e3f70a246971148", size = 149166 }, - { url = "https://files.pythonhosted.org/packages/44/96/392abd49b094d30b91d9fbda6a69519e95802250b777841cf3bda8fe136c/charset_normalizer-3.4.2-cp313-cp313-win32.whl", hash = "sha256:aaeeb6a479c7667fbe1099af9617c83aaca22182d6cf8c53966491a0f1b7ffb7", size = 98064 }, - { url = "https://files.pythonhosted.org/packages/e9/b0/0200da600134e001d91851ddc797809e2fe0ea72de90e09bec5a2fbdaccb/charset_normalizer-3.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:aa6af9e7d59f9c12b33ae4e9450619cf2488e2bbe9b44030905877f0b2324980", size = 105641 }, - { url = "https://files.pythonhosted.org/packages/20/94/c5790835a017658cbfabd07f3bfb549140c3ac458cfc196323996b10095a/charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0", size = 52626 }, +sdist = { url = "https://files.pythonhosted.org/packages/e4/33/89c2ced2b67d1c2a61c19c6751aa8902d46ce3dacb23600a283619f5a12d/charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63", size = 126367, upload-time = "2025-05-02T08:34:42.01Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d7/a4/37f4d6035c89cac7930395a35cc0f1b872e652eaafb76a6075943754f095/charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7", size = 199936, upload-time = "2025-05-02T08:32:33.712Z" }, + { url = "https://files.pythonhosted.org/packages/ee/8a/1a5e33b73e0d9287274f899d967907cd0bf9c343e651755d9307e0dbf2b3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3", size = 143790, upload-time = "2025-05-02T08:32:35.768Z" }, + { url = "https://files.pythonhosted.org/packages/66/52/59521f1d8e6ab1482164fa21409c5ef44da3e9f653c13ba71becdd98dec3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a", size = 153924, upload-time = "2025-05-02T08:32:37.284Z" }, + { url = "https://files.pythonhosted.org/packages/86/2d/fb55fdf41964ec782febbf33cb64be480a6b8f16ded2dbe8db27a405c09f/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214", size = 146626, upload-time = "2025-05-02T08:32:38.803Z" }, + { url = "https://files.pythonhosted.org/packages/8c/73/6ede2ec59bce19b3edf4209d70004253ec5f4e319f9a2e3f2f15601ed5f7/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a", size = 148567, upload-time = "2025-05-02T08:32:40.251Z" }, + { url = "https://files.pythonhosted.org/packages/09/14/957d03c6dc343c04904530b6bef4e5efae5ec7d7990a7cbb868e4595ee30/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd", size = 150957, upload-time = "2025-05-02T08:32:41.705Z" }, + { url = "https://files.pythonhosted.org/packages/0d/c8/8174d0e5c10ccebdcb1b53cc959591c4c722a3ad92461a273e86b9f5a302/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981", size = 145408, upload-time = "2025-05-02T08:32:43.709Z" }, + { url = "https://files.pythonhosted.org/packages/58/aa/8904b84bc8084ac19dc52feb4f5952c6df03ffb460a887b42615ee1382e8/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c", size = 153399, upload-time = "2025-05-02T08:32:46.197Z" }, + { url = "https://files.pythonhosted.org/packages/c2/26/89ee1f0e264d201cb65cf054aca6038c03b1a0c6b4ae998070392a3ce605/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b", size = 156815, upload-time = "2025-05-02T08:32:48.105Z" }, + { url = "https://files.pythonhosted.org/packages/fd/07/68e95b4b345bad3dbbd3a8681737b4338ff2c9df29856a6d6d23ac4c73cb/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d", size = 154537, upload-time = "2025-05-02T08:32:49.719Z" }, + { url = "https://files.pythonhosted.org/packages/77/1a/5eefc0ce04affb98af07bc05f3bac9094513c0e23b0562d64af46a06aae4/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f", size = 149565, upload-time = "2025-05-02T08:32:51.404Z" }, + { url = "https://files.pythonhosted.org/packages/37/a0/2410e5e6032a174c95e0806b1a6585eb21e12f445ebe239fac441995226a/charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c", size = 98357, upload-time = "2025-05-02T08:32:53.079Z" }, + { url = "https://files.pythonhosted.org/packages/6c/4f/c02d5c493967af3eda9c771ad4d2bbc8df6f99ddbeb37ceea6e8716a32bc/charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e", size = 105776, upload-time = "2025-05-02T08:32:54.573Z" }, + { url = "https://files.pythonhosted.org/packages/ea/12/a93df3366ed32db1d907d7593a94f1fe6293903e3e92967bebd6950ed12c/charset_normalizer-3.4.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:926ca93accd5d36ccdabd803392ddc3e03e6d4cd1cf17deff3b989ab8e9dbcf0", size = 199622, upload-time = "2025-05-02T08:32:56.363Z" }, + { url = "https://files.pythonhosted.org/packages/04/93/bf204e6f344c39d9937d3c13c8cd5bbfc266472e51fc8c07cb7f64fcd2de/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eba9904b0f38a143592d9fc0e19e2df0fa2e41c3c3745554761c5f6447eedabf", size = 143435, upload-time = "2025-05-02T08:32:58.551Z" }, + { url = "https://files.pythonhosted.org/packages/22/2a/ea8a2095b0bafa6c5b5a55ffdc2f924455233ee7b91c69b7edfcc9e02284/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fddb7e2c84ac87ac3a947cb4e66d143ca5863ef48e4a5ecb83bd48619e4634e", size = 153653, upload-time = "2025-05-02T08:33:00.342Z" }, + { url = "https://files.pythonhosted.org/packages/b6/57/1b090ff183d13cef485dfbe272e2fe57622a76694061353c59da52c9a659/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98f862da73774290f251b9df8d11161b6cf25b599a66baf087c1ffe340e9bfd1", size = 146231, upload-time = "2025-05-02T08:33:02.081Z" }, + { url = "https://files.pythonhosted.org/packages/e2/28/ffc026b26f441fc67bd21ab7f03b313ab3fe46714a14b516f931abe1a2d8/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c9379d65defcab82d07b2a9dfbfc2e95bc8fe0ebb1b176a3190230a3ef0e07c", size = 148243, upload-time = "2025-05-02T08:33:04.063Z" }, + { url = "https://files.pythonhosted.org/packages/c0/0f/9abe9bd191629c33e69e47c6ef45ef99773320e9ad8e9cb08b8ab4a8d4cb/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e635b87f01ebc977342e2697d05b56632f5f879a4f15955dfe8cef2448b51691", size = 150442, upload-time = "2025-05-02T08:33:06.418Z" }, + { url = "https://files.pythonhosted.org/packages/67/7c/a123bbcedca91d5916c056407f89a7f5e8fdfce12ba825d7d6b9954a1a3c/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1c95a1e2902a8b722868587c0e1184ad5c55631de5afc0eb96bc4b0d738092c0", size = 145147, upload-time = "2025-05-02T08:33:08.183Z" }, + { url = "https://files.pythonhosted.org/packages/ec/fe/1ac556fa4899d967b83e9893788e86b6af4d83e4726511eaaad035e36595/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ef8de666d6179b009dce7bcb2ad4c4a779f113f12caf8dc77f0162c29d20490b", size = 153057, upload-time = "2025-05-02T08:33:09.986Z" }, + { url = "https://files.pythonhosted.org/packages/2b/ff/acfc0b0a70b19e3e54febdd5301a98b72fa07635e56f24f60502e954c461/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:32fc0341d72e0f73f80acb0a2c94216bd704f4f0bce10aedea38f30502b271ff", size = 156454, upload-time = "2025-05-02T08:33:11.814Z" }, + { url = "https://files.pythonhosted.org/packages/92/08/95b458ce9c740d0645feb0e96cea1f5ec946ea9c580a94adfe0b617f3573/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:289200a18fa698949d2b39c671c2cc7a24d44096784e76614899a7ccf2574b7b", size = 154174, upload-time = "2025-05-02T08:33:13.707Z" }, + { url = "https://files.pythonhosted.org/packages/78/be/8392efc43487ac051eee6c36d5fbd63032d78f7728cb37aebcc98191f1ff/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a476b06fbcf359ad25d34a057b7219281286ae2477cc5ff5e3f70a246971148", size = 149166, upload-time = "2025-05-02T08:33:15.458Z" }, + { url = "https://files.pythonhosted.org/packages/44/96/392abd49b094d30b91d9fbda6a69519e95802250b777841cf3bda8fe136c/charset_normalizer-3.4.2-cp313-cp313-win32.whl", hash = "sha256:aaeeb6a479c7667fbe1099af9617c83aaca22182d6cf8c53966491a0f1b7ffb7", size = 98064, upload-time = "2025-05-02T08:33:17.06Z" }, + { url = "https://files.pythonhosted.org/packages/e9/b0/0200da600134e001d91851ddc797809e2fe0ea72de90e09bec5a2fbdaccb/charset_normalizer-3.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:aa6af9e7d59f9c12b33ae4e9450619cf2488e2bbe9b44030905877f0b2324980", size = 105641, upload-time = "2025-05-02T08:33:18.753Z" }, + { url = "https://files.pythonhosted.org/packages/20/94/c5790835a017658cbfabd07f3bfb549140c3ac458cfc196323996b10095a/charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0", size = 52626, upload-time = "2025-05-02T08:34:40.053Z" }, ] [[package]] name = "colorama" version = "0.4.6" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697 } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 }, + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, ] [[package]] name = "cryptography" -version = "45.0.3" +version = "45.0.5" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/13/1f/9fa001e74a1993a9cadd2333bb889e50c66327b8594ac538ab8a04f915b7/cryptography-45.0.3.tar.gz", hash = "sha256:ec21313dd335c51d7877baf2972569f40a4291b76a0ce51391523ae358d05899", size = 744738 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/82/b2/2345dc595998caa6f68adf84e8f8b50d18e9fc4638d32b22ea8daedd4b7a/cryptography-45.0.3-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:7573d9eebaeceeb55285205dbbb8753ac1e962af3d9640791d12b36864065e71", size = 7056239 }, - { url = "https://files.pythonhosted.org/packages/71/3d/ac361649a0bfffc105e2298b720d8b862330a767dab27c06adc2ddbef96a/cryptography-45.0.3-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d377dde61c5d67eb4311eace661c3efda46c62113ff56bf05e2d679e02aebb5b", size = 4205541 }, - { url = "https://files.pythonhosted.org/packages/70/3e/c02a043750494d5c445f769e9c9f67e550d65060e0bfce52d91c1362693d/cryptography-45.0.3-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fae1e637f527750811588e4582988932c222f8251f7b7ea93739acb624e1487f", size = 4433275 }, - { url = "https://files.pythonhosted.org/packages/40/7a/9af0bfd48784e80eef3eb6fd6fde96fe706b4fc156751ce1b2b965dada70/cryptography-45.0.3-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:ca932e11218bcc9ef812aa497cdf669484870ecbcf2d99b765d6c27a86000942", size = 4209173 }, - { url = "https://files.pythonhosted.org/packages/31/5f/d6f8753c8708912df52e67969e80ef70b8e8897306cd9eb8b98201f8c184/cryptography-45.0.3-cp311-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:af3f92b1dc25621f5fad065288a44ac790c5798e986a34d393ab27d2b27fcff9", size = 3898150 }, - { url = "https://files.pythonhosted.org/packages/8b/50/f256ab79c671fb066e47336706dc398c3b1e125f952e07d54ce82cf4011a/cryptography-45.0.3-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:2f8f8f0b73b885ddd7f3d8c2b2234a7d3ba49002b0223f58cfde1bedd9563c56", size = 4466473 }, - { url = "https://files.pythonhosted.org/packages/62/e7/312428336bb2df0848d0768ab5a062e11a32d18139447a76dfc19ada8eed/cryptography-45.0.3-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:9cc80ce69032ffa528b5e16d217fa4d8d4bb7d6ba8659c1b4d74a1b0f4235fca", size = 4211890 }, - { url = "https://files.pythonhosted.org/packages/e7/53/8a130e22c1e432b3c14896ec5eb7ac01fb53c6737e1d705df7e0efb647c6/cryptography-45.0.3-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:c824c9281cb628015bfc3c59335163d4ca0540d49de4582d6c2637312907e4b1", size = 4466300 }, - { url = "https://files.pythonhosted.org/packages/ba/75/6bb6579688ef805fd16a053005fce93944cdade465fc92ef32bbc5c40681/cryptography-45.0.3-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:5833bb4355cb377ebd880457663a972cd044e7f49585aee39245c0d592904578", size = 4332483 }, - { url = "https://files.pythonhosted.org/packages/2f/11/2538f4e1ce05c6c4f81f43c1ef2bd6de7ae5e24ee284460ff6c77e42ca77/cryptography-45.0.3-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:9bb5bf55dcb69f7067d80354d0a348368da907345a2c448b0babc4215ccd3497", size = 4573714 }, - { url = "https://files.pythonhosted.org/packages/f5/bb/e86e9cf07f73a98d84a4084e8fd420b0e82330a901d9cac8149f994c3417/cryptography-45.0.3-cp311-abi3-win32.whl", hash = "sha256:3ad69eeb92a9de9421e1f6685e85a10fbcfb75c833b42cc9bc2ba9fb00da4710", size = 2934752 }, - { url = "https://files.pythonhosted.org/packages/c7/75/063bc9ddc3d1c73e959054f1fc091b79572e716ef74d6caaa56e945b4af9/cryptography-45.0.3-cp311-abi3-win_amd64.whl", hash = "sha256:97787952246a77d77934d41b62fb1b6f3581d83f71b44796a4158d93b8f5c490", size = 3412465 }, - { url = "https://files.pythonhosted.org/packages/71/9b/04ead6015229a9396890d7654ee35ef630860fb42dc9ff9ec27f72157952/cryptography-45.0.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:c92519d242703b675ccefd0f0562eb45e74d438e001f8ab52d628e885751fb06", size = 7031892 }, - { url = "https://files.pythonhosted.org/packages/46/c7/c7d05d0e133a09fc677b8a87953815c522697bdf025e5cac13ba419e7240/cryptography-45.0.3-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5edcb90da1843df85292ef3a313513766a78fbbb83f584a5a58fb001a5a9d57", size = 4196181 }, - { url = "https://files.pythonhosted.org/packages/08/7a/6ad3aa796b18a683657cef930a986fac0045417e2dc428fd336cfc45ba52/cryptography-45.0.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38deed72285c7ed699864f964a3f4cf11ab3fb38e8d39cfcd96710cd2b5bb716", size = 4423370 }, - { url = "https://files.pythonhosted.org/packages/4f/58/ec1461bfcb393525f597ac6a10a63938d18775b7803324072974b41a926b/cryptography-45.0.3-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:5555365a50efe1f486eed6ac7062c33b97ccef409f5970a0b6f205a7cfab59c8", size = 4197839 }, - { url = "https://files.pythonhosted.org/packages/d4/3d/5185b117c32ad4f40846f579369a80e710d6146c2baa8ce09d01612750db/cryptography-45.0.3-cp37-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:9e4253ed8f5948a3589b3caee7ad9a5bf218ffd16869c516535325fece163dcc", size = 3886324 }, - { url = "https://files.pythonhosted.org/packages/67/85/caba91a57d291a2ad46e74016d1f83ac294f08128b26e2a81e9b4f2d2555/cryptography-45.0.3-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:cfd84777b4b6684955ce86156cfb5e08d75e80dc2585e10d69e47f014f0a5342", size = 4450447 }, - { url = "https://files.pythonhosted.org/packages/ae/d1/164e3c9d559133a38279215c712b8ba38e77735d3412f37711b9f8f6f7e0/cryptography-45.0.3-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:a2b56de3417fd5f48773ad8e91abaa700b678dc7fe1e0c757e1ae340779acf7b", size = 4200576 }, - { url = "https://files.pythonhosted.org/packages/71/7a/e002d5ce624ed46dfc32abe1deff32190f3ac47ede911789ee936f5a4255/cryptography-45.0.3-cp37-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:57a6500d459e8035e813bd8b51b671977fb149a8c95ed814989da682314d0782", size = 4450308 }, - { url = "https://files.pythonhosted.org/packages/87/ad/3fbff9c28cf09b0a71e98af57d74f3662dea4a174b12acc493de00ea3f28/cryptography-45.0.3-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:f22af3c78abfbc7cbcdf2c55d23c3e022e1a462ee2481011d518c7fb9c9f3d65", size = 4325125 }, - { url = "https://files.pythonhosted.org/packages/f5/b4/51417d0cc01802304c1984d76e9592f15e4801abd44ef7ba657060520bf0/cryptography-45.0.3-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:232954730c362638544758a8160c4ee1b832dc011d2c41a306ad8f7cccc5bb0b", size = 4560038 }, - { url = "https://files.pythonhosted.org/packages/80/38/d572f6482d45789a7202fb87d052deb7a7b136bf17473ebff33536727a2c/cryptography-45.0.3-cp37-abi3-win32.whl", hash = "sha256:cb6ab89421bc90e0422aca911c69044c2912fc3debb19bb3c1bfe28ee3dff6ab", size = 2924070 }, - { url = "https://files.pythonhosted.org/packages/91/5a/61f39c0ff4443651cc64e626fa97ad3099249152039952be8f344d6b0c86/cryptography-45.0.3-cp37-abi3-win_amd64.whl", hash = "sha256:d54ae41e6bd70ea23707843021c778f151ca258081586f0cfa31d936ae43d1b2", size = 3395005 }, +sdist = { url = "https://files.pythonhosted.org/packages/95/1e/49527ac611af559665f71cbb8f92b332b5ec9c6fbc4e88b0f8e92f5e85df/cryptography-45.0.5.tar.gz", hash = "sha256:72e76caa004ab63accdf26023fccd1d087f6d90ec6048ff33ad0445abf7f605a", size = 744903, upload-time = "2025-07-02T13:06:25.941Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f0/fb/09e28bc0c46d2c547085e60897fea96310574c70fb21cd58a730a45f3403/cryptography-45.0.5-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:101ee65078f6dd3e5a028d4f19c07ffa4dd22cce6a20eaa160f8b5219911e7d8", size = 7043092, upload-time = "2025-07-02T13:05:01.514Z" }, + { url = "https://files.pythonhosted.org/packages/b1/05/2194432935e29b91fb649f6149c1a4f9e6d3d9fc880919f4ad1bcc22641e/cryptography-45.0.5-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3a264aae5f7fbb089dbc01e0242d3b67dffe3e6292e1f5182122bdf58e65215d", size = 4205926, upload-time = "2025-07-02T13:05:04.741Z" }, + { url = "https://files.pythonhosted.org/packages/07/8b/9ef5da82350175e32de245646b1884fc01124f53eb31164c77f95a08d682/cryptography-45.0.5-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e74d30ec9c7cb2f404af331d5b4099a9b322a8a6b25c4632755c8757345baac5", size = 4429235, upload-time = "2025-07-02T13:05:07.084Z" }, + { url = "https://files.pythonhosted.org/packages/7c/e1/c809f398adde1994ee53438912192d92a1d0fc0f2d7582659d9ef4c28b0c/cryptography-45.0.5-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:3af26738f2db354aafe492fb3869e955b12b2ef2e16908c8b9cb928128d42c57", size = 4209785, upload-time = "2025-07-02T13:05:09.321Z" }, + { url = "https://files.pythonhosted.org/packages/d0/8b/07eb6bd5acff58406c5e806eff34a124936f41a4fb52909ffa4d00815f8c/cryptography-45.0.5-cp311-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e6c00130ed423201c5bc5544c23359141660b07999ad82e34e7bb8f882bb78e0", size = 3893050, upload-time = "2025-07-02T13:05:11.069Z" }, + { url = "https://files.pythonhosted.org/packages/ec/ef/3333295ed58d900a13c92806b67e62f27876845a9a908c939f040887cca9/cryptography-45.0.5-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:dd420e577921c8c2d31289536c386aaa30140b473835e97f83bc71ea9d2baf2d", size = 4457379, upload-time = "2025-07-02T13:05:13.32Z" }, + { url = "https://files.pythonhosted.org/packages/d9/9d/44080674dee514dbb82b21d6fa5d1055368f208304e2ab1828d85c9de8f4/cryptography-45.0.5-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:d05a38884db2ba215218745f0781775806bde4f32e07b135348355fe8e4991d9", size = 4209355, upload-time = "2025-07-02T13:05:15.017Z" }, + { url = "https://files.pythonhosted.org/packages/c9/d8/0749f7d39f53f8258e5c18a93131919ac465ee1f9dccaf1b3f420235e0b5/cryptography-45.0.5-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:ad0caded895a00261a5b4aa9af828baede54638754b51955a0ac75576b831b27", size = 4456087, upload-time = "2025-07-02T13:05:16.945Z" }, + { url = "https://files.pythonhosted.org/packages/09/d7/92acac187387bf08902b0bf0699816f08553927bdd6ba3654da0010289b4/cryptography-45.0.5-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:9024beb59aca9d31d36fcdc1604dd9bbeed0a55bface9f1908df19178e2f116e", size = 4332873, upload-time = "2025-07-02T13:05:18.743Z" }, + { url = "https://files.pythonhosted.org/packages/03/c2/840e0710da5106a7c3d4153c7215b2736151bba60bf4491bdb421df5056d/cryptography-45.0.5-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:91098f02ca81579c85f66df8a588c78f331ca19089763d733e34ad359f474174", size = 4564651, upload-time = "2025-07-02T13:05:21.382Z" }, + { url = "https://files.pythonhosted.org/packages/2e/92/cc723dd6d71e9747a887b94eb3827825c6c24b9e6ce2bb33b847d31d5eaa/cryptography-45.0.5-cp311-abi3-win32.whl", hash = "sha256:926c3ea71a6043921050eaa639137e13dbe7b4ab25800932a8498364fc1abec9", size = 2929050, upload-time = "2025-07-02T13:05:23.39Z" }, + { url = "https://files.pythonhosted.org/packages/1f/10/197da38a5911a48dd5389c043de4aec4b3c94cb836299b01253940788d78/cryptography-45.0.5-cp311-abi3-win_amd64.whl", hash = "sha256:b85980d1e345fe769cfc57c57db2b59cff5464ee0c045d52c0df087e926fbe63", size = 3403224, upload-time = "2025-07-02T13:05:25.202Z" }, + { url = "https://files.pythonhosted.org/packages/fe/2b/160ce8c2765e7a481ce57d55eba1546148583e7b6f85514472b1d151711d/cryptography-45.0.5-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:f3562c2f23c612f2e4a6964a61d942f891d29ee320edb62ff48ffb99f3de9ae8", size = 7017143, upload-time = "2025-07-02T13:05:27.229Z" }, + { url = "https://files.pythonhosted.org/packages/c2/e7/2187be2f871c0221a81f55ee3105d3cf3e273c0a0853651d7011eada0d7e/cryptography-45.0.5-cp37-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3fcfbefc4a7f332dece7272a88e410f611e79458fab97b5efe14e54fe476f4fd", size = 4197780, upload-time = "2025-07-02T13:05:29.299Z" }, + { url = "https://files.pythonhosted.org/packages/b9/cf/84210c447c06104e6be9122661159ad4ce7a8190011669afceeaea150524/cryptography-45.0.5-cp37-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:460f8c39ba66af7db0545a8c6f2eabcbc5a5528fc1cf6c3fa9a1e44cec33385e", size = 4420091, upload-time = "2025-07-02T13:05:31.221Z" }, + { url = "https://files.pythonhosted.org/packages/3e/6a/cb8b5c8bb82fafffa23aeff8d3a39822593cee6e2f16c5ca5c2ecca344f7/cryptography-45.0.5-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:9b4cf6318915dccfe218e69bbec417fdd7c7185aa7aab139a2c0beb7468c89f0", size = 4198711, upload-time = "2025-07-02T13:05:33.062Z" }, + { url = "https://files.pythonhosted.org/packages/04/f7/36d2d69df69c94cbb2473871926daf0f01ad8e00fe3986ac3c1e8c4ca4b3/cryptography-45.0.5-cp37-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:2089cc8f70a6e454601525e5bf2779e665d7865af002a5dec8d14e561002e135", size = 3883299, upload-time = "2025-07-02T13:05:34.94Z" }, + { url = "https://files.pythonhosted.org/packages/82/c7/f0ea40f016de72f81288e9fe8d1f6748036cb5ba6118774317a3ffc6022d/cryptography-45.0.5-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:0027d566d65a38497bc37e0dd7c2f8ceda73597d2ac9ba93810204f56f52ebc7", size = 4450558, upload-time = "2025-07-02T13:05:37.288Z" }, + { url = "https://files.pythonhosted.org/packages/06/ae/94b504dc1a3cdf642d710407c62e86296f7da9e66f27ab12a1ee6fdf005b/cryptography-45.0.5-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:be97d3a19c16a9be00edf79dca949c8fa7eff621763666a145f9f9535a5d7f42", size = 4198020, upload-time = "2025-07-02T13:05:39.102Z" }, + { url = "https://files.pythonhosted.org/packages/05/2b/aaf0adb845d5dabb43480f18f7ca72e94f92c280aa983ddbd0bcd6ecd037/cryptography-45.0.5-cp37-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:7760c1c2e1a7084153a0f68fab76e754083b126a47d0117c9ed15e69e2103492", size = 4449759, upload-time = "2025-07-02T13:05:41.398Z" }, + { url = "https://files.pythonhosted.org/packages/91/e4/f17e02066de63e0100a3a01b56f8f1016973a1d67551beaf585157a86b3f/cryptography-45.0.5-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:6ff8728d8d890b3dda5765276d1bc6fb099252915a2cd3aff960c4c195745dd0", size = 4319991, upload-time = "2025-07-02T13:05:43.64Z" }, + { url = "https://files.pythonhosted.org/packages/f2/2e/e2dbd629481b499b14516eed933f3276eb3239f7cee2dcfa4ee6b44d4711/cryptography-45.0.5-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:7259038202a47fdecee7e62e0fd0b0738b6daa335354396c6ddebdbe1206af2a", size = 4554189, upload-time = "2025-07-02T13:05:46.045Z" }, + { url = "https://files.pythonhosted.org/packages/f8/ea/a78a0c38f4c8736287b71c2ea3799d173d5ce778c7d6e3c163a95a05ad2a/cryptography-45.0.5-cp37-abi3-win32.whl", hash = "sha256:1e1da5accc0c750056c556a93c3e9cb828970206c68867712ca5805e46dc806f", size = 2911769, upload-time = "2025-07-02T13:05:48.329Z" }, + { url = "https://files.pythonhosted.org/packages/79/b3/28ac139109d9005ad3f6b6f8976ffede6706a6478e21c889ce36c840918e/cryptography-45.0.5-cp37-abi3-win_amd64.whl", hash = "sha256:90cb0a7bb35959f37e23303b7eed0a32280510030daba3f7fdfbb65defde6a97", size = 3390016, upload-time = "2025-07-02T13:05:50.811Z" }, ] [[package]] @@ -279,27 +279,27 @@ dependencies = [ { name = "requests" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/91/9b/4a2ea29aeba62471211598dac5d96825bb49348fa07e906ea930394a83ce/docker-7.1.0.tar.gz", hash = "sha256:ad8c70e6e3f8926cb8a92619b832b4ea5299e2831c14284663184e200546fa6c", size = 117834 } +sdist = { url = "https://files.pythonhosted.org/packages/91/9b/4a2ea29aeba62471211598dac5d96825bb49348fa07e906ea930394a83ce/docker-7.1.0.tar.gz", hash = "sha256:ad8c70e6e3f8926cb8a92619b832b4ea5299e2831c14284663184e200546fa6c", size = 117834, upload-time = "2024-05-23T11:13:57.216Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e3/26/57c6fb270950d476074c087527a558ccb6f4436657314bfb6cdf484114c4/docker-7.1.0-py3-none-any.whl", hash = "sha256:c96b93b7f0a746f9e77d325bcfb87422a3d8bd4f03136ae8a85b37f1898d5fc0", size = 147774 }, + { url = "https://files.pythonhosted.org/packages/e3/26/57c6fb270950d476074c087527a558ccb6f4436657314bfb6cdf484114c4/docker-7.1.0-py3-none-any.whl", hash = "sha256:c96b93b7f0a746f9e77d325bcfb87422a3d8bd4f03136ae8a85b37f1898d5fc0", size = 147774, upload-time = "2024-05-23T11:13:55.01Z" }, ] [[package]] name = "fastjsonschema" version = "2.21.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8b/50/4b769ce1ac4071a1ef6d86b1a3fb56cdc3a37615e8c5519e1af96cdac366/fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4", size = 373939 } +sdist = { url = "https://files.pythonhosted.org/packages/8b/50/4b769ce1ac4071a1ef6d86b1a3fb56cdc3a37615e8c5519e1af96cdac366/fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4", size = 373939, upload-time = "2024-12-02T10:55:15.133Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/90/2b/0817a2b257fe88725c25589d89aec060581aabf668707a8d03b2e9e0cb2a/fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667", size = 23924 }, + { url = "https://files.pythonhosted.org/packages/90/2b/0817a2b257fe88725c25589d89aec060581aabf668707a8d03b2e9e0cb2a/fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667", size = 23924, upload-time = "2024-12-02T10:55:07.599Z" }, ] [[package]] name = "idna" version = "3.10" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490 } +sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490, upload-time = "2024-09-15T18:07:39.745Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442 }, + { 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" }, ] [[package]] @@ -309,18 +309,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "zipp" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/76/66/650a33bd90f786193e4de4b3ad86ea60b53c89b669a5c7be931fac31cdb0/importlib_metadata-8.7.0.tar.gz", hash = "sha256:d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000", size = 56641 } +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" } wheels = [ - { url = "https://files.pythonhosted.org/packages/20/b0/36bd937216ec521246249be3bf9855081de4c5e06a0c9b4219dbeda50373/importlib_metadata-8.7.0-py3-none-any.whl", hash = "sha256:e5dd1551894c77868a30651cef00984d50e1002d06942a7101d34870c5f02afd", size = 27656 }, + { 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" }, ] [[package]] name = "iniconfig" version = "2.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793 } +sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793, upload-time = "2025-03-19T20:09:59.721Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050 }, + { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050, upload-time = "2025-03-19T20:10:01.071Z" }, ] [[package]] @@ -330,18 +330,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markupsafe" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115 } +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload-time = "2025-03-05T20:05:02.478Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899 }, + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" }, ] [[package]] name = "jmespath" version = "1.0.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/00/2a/e867e8531cf3e36b41201936b7fa7ba7b5702dbef42922193f05c8976cd6/jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe", size = 25843 } +sdist = { url = "https://files.pythonhosted.org/packages/00/2a/e867e8531cf3e36b41201936b7fa7ba7b5702dbef42922193f05c8976cd6/jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe", size = 25843, upload-time = "2022-06-17T18:00:12.224Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/31/b4/b9b800c45527aadd64d5b442f9b932b00648617eb5d63d2c7a6587b7cafc/jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980", size = 20256 }, + { url = "https://files.pythonhosted.org/packages/31/b4/b9b800c45527aadd64d5b442f9b932b00648617eb5d63d2c7a6587b7cafc/jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980", size = 20256, upload-time = "2022-06-17T18:00:10.251Z" }, ] [[package]] @@ -351,52 +351,52 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "ply" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/6d/86/08646239a313f895186ff0a4573452038eed8c86f54380b3ebac34d32fb2/jsonpath-ng-1.7.0.tar.gz", hash = "sha256:f6f5f7fd4e5ff79c785f1573b394043b39849fb2bb47bcead935d12b00beab3c", size = 37838 } +sdist = { url = "https://files.pythonhosted.org/packages/6d/86/08646239a313f895186ff0a4573452038eed8c86f54380b3ebac34d32fb2/jsonpath-ng-1.7.0.tar.gz", hash = "sha256:f6f5f7fd4e5ff79c785f1573b394043b39849fb2bb47bcead935d12b00beab3c", size = 37838, upload-time = "2024-10-11T15:41:42.404Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/35/5a/73ecb3d82f8615f32ccdadeb9356726d6cae3a4bbc840b437ceb95708063/jsonpath_ng-1.7.0-py3-none-any.whl", hash = "sha256:f3d7f9e848cba1b6da28c55b1c26ff915dc9e0b1ba7e752a53d6da8d5cbd00b6", size = 30105 }, + { url = "https://files.pythonhosted.org/packages/35/5a/73ecb3d82f8615f32ccdadeb9356726d6cae3a4bbc840b437ceb95708063/jsonpath_ng-1.7.0-py3-none-any.whl", hash = "sha256:f3d7f9e848cba1b6da28c55b1c26ff915dc9e0b1ba7e752a53d6da8d5cbd00b6", size = 30105, upload-time = "2024-11-20T17:58:30.418Z" }, ] [[package]] name = "markupsafe" version = "3.0.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537 } -wheels = [ - { 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 }, - { 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 }, - { 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 }, - { 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 }, - { 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 }, - { 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 }, - { 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 }, - { 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 }, - { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097 }, - { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601 }, - { 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 }, - { 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 }, - { 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 }, - { url = "https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396", size = 23085 }, - { url = "https://files.pythonhosted.org/packages/c2/cf/c9d56af24d56ea04daae7ac0940232d31d5a8354f2b457c6d856b2057d69/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79", size = 22978 }, - { url = "https://files.pythonhosted.org/packages/2a/9f/8619835cd6a711d6272d62abb78c033bda638fdc54c4e7f4272cf1c0962b/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a", size = 24208 }, - { url = "https://files.pythonhosted.org/packages/f9/bf/176950a1792b2cd2102b8ffeb5133e1ed984547b75db47c25a67d3359f77/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca", size = 23357 }, - { url = "https://files.pythonhosted.org/packages/ce/4f/9a02c1d335caabe5c4efb90e1b6e8ee944aa245c1aaaab8e8a618987d816/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c", size = 23344 }, - { url = "https://files.pythonhosted.org/packages/ee/55/c271b57db36f748f0e04a759ace9f8f759ccf22b4960c270c78a394f58be/MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1", size = 15101 }, - { url = "https://files.pythonhosted.org/packages/29/88/07df22d2dd4df40aba9f3e402e6dc1b8ee86297dddbad4872bd5e7b0094f/MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f", size = 15603 }, - { url = "https://files.pythonhosted.org/packages/62/6a/8b89d24db2d32d433dffcd6a8779159da109842434f1dd2f6e71f32f738c/MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c", size = 14510 }, - { url = "https://files.pythonhosted.org/packages/7a/06/a10f955f70a2e5a9bf78d11a161029d278eeacbd35ef806c3fd17b13060d/MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb", size = 12486 }, - { url = "https://files.pythonhosted.org/packages/34/cf/65d4a571869a1a9078198ca28f39fba5fbb910f952f9dbc5220afff9f5e6/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c", size = 25480 }, - { url = "https://files.pythonhosted.org/packages/0c/e3/90e9651924c430b885468b56b3d597cabf6d72be4b24a0acd1fa0e12af67/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d", size = 23914 }, - { url = "https://files.pythonhosted.org/packages/66/8c/6c7cf61f95d63bb866db39085150df1f2a5bd3335298f14a66b48e92659c/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe", size = 23796 }, - { url = "https://files.pythonhosted.org/packages/bb/35/cbe9238ec3f47ac9a7c8b3df7a808e7cb50fe149dc7039f5f454b3fba218/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5", size = 25473 }, - { url = "https://files.pythonhosted.org/packages/e6/32/7621a4382488aa283cc05e8984a9c219abad3bca087be9ec77e89939ded9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a", size = 24114 }, - { url = "https://files.pythonhosted.org/packages/0d/80/0985960e4b89922cb5a0bac0ed39c5b96cbc1a536a99f30e8c220a996ed9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9", size = 24098 }, - { url = "https://files.pythonhosted.org/packages/82/78/fedb03c7d5380df2427038ec8d973587e90561b2d90cd472ce9254cf348b/MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6", size = 15208 }, - { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739 }, +sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537, upload-time = "2024-10-18T15:21:54.129Z" } +wheels = [ + { 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, upload-time = "2024-10-18T15:21:13.777Z" }, + { 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, upload-time = "2024-10-18T15:21:14.822Z" }, + { 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, upload-time = "2024-10-18T15:21:15.642Z" }, + { 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, upload-time = "2024-10-18T15:21:17.133Z" }, + { 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, upload-time = "2024-10-18T15:21:18.064Z" }, + { 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, upload-time = "2024-10-18T15:21:18.859Z" }, + { 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, upload-time = "2024-10-18T15:21:19.671Z" }, + { 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, upload-time = "2024-10-18T15:21:20.971Z" }, + { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097, upload-time = "2024-10-18T15:21:22.646Z" }, + { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601, upload-time = "2024-10-18T15:21:23.499Z" }, + { 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, upload-time = "2024-10-18T15:21:24.577Z" }, + { 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, upload-time = "2024-10-18T15:21:25.382Z" }, + { 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, upload-time = "2024-10-18T15:21:26.199Z" }, + { url = "https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396", size = 23085, upload-time = "2024-10-18T15:21:27.029Z" }, + { url = "https://files.pythonhosted.org/packages/c2/cf/c9d56af24d56ea04daae7ac0940232d31d5a8354f2b457c6d856b2057d69/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79", size = 22978, upload-time = "2024-10-18T15:21:27.846Z" }, + { url = "https://files.pythonhosted.org/packages/2a/9f/8619835cd6a711d6272d62abb78c033bda638fdc54c4e7f4272cf1c0962b/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a", size = 24208, upload-time = "2024-10-18T15:21:28.744Z" }, + { url = "https://files.pythonhosted.org/packages/f9/bf/176950a1792b2cd2102b8ffeb5133e1ed984547b75db47c25a67d3359f77/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca", size = 23357, upload-time = "2024-10-18T15:21:29.545Z" }, + { url = "https://files.pythonhosted.org/packages/ce/4f/9a02c1d335caabe5c4efb90e1b6e8ee944aa245c1aaaab8e8a618987d816/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c", size = 23344, upload-time = "2024-10-18T15:21:30.366Z" }, + { url = "https://files.pythonhosted.org/packages/ee/55/c271b57db36f748f0e04a759ace9f8f759ccf22b4960c270c78a394f58be/MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1", size = 15101, upload-time = "2024-10-18T15:21:31.207Z" }, + { url = "https://files.pythonhosted.org/packages/29/88/07df22d2dd4df40aba9f3e402e6dc1b8ee86297dddbad4872bd5e7b0094f/MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f", size = 15603, upload-time = "2024-10-18T15:21:32.032Z" }, + { url = "https://files.pythonhosted.org/packages/62/6a/8b89d24db2d32d433dffcd6a8779159da109842434f1dd2f6e71f32f738c/MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c", size = 14510, upload-time = "2024-10-18T15:21:33.625Z" }, + { url = "https://files.pythonhosted.org/packages/7a/06/a10f955f70a2e5a9bf78d11a161029d278eeacbd35ef806c3fd17b13060d/MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb", size = 12486, upload-time = "2024-10-18T15:21:34.611Z" }, + { url = "https://files.pythonhosted.org/packages/34/cf/65d4a571869a1a9078198ca28f39fba5fbb910f952f9dbc5220afff9f5e6/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c", size = 25480, upload-time = "2024-10-18T15:21:35.398Z" }, + { url = "https://files.pythonhosted.org/packages/0c/e3/90e9651924c430b885468b56b3d597cabf6d72be4b24a0acd1fa0e12af67/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d", size = 23914, upload-time = "2024-10-18T15:21:36.231Z" }, + { url = "https://files.pythonhosted.org/packages/66/8c/6c7cf61f95d63bb866db39085150df1f2a5bd3335298f14a66b48e92659c/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe", size = 23796, upload-time = "2024-10-18T15:21:37.073Z" }, + { url = "https://files.pythonhosted.org/packages/bb/35/cbe9238ec3f47ac9a7c8b3df7a808e7cb50fe149dc7039f5f454b3fba218/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5", size = 25473, upload-time = "2024-10-18T15:21:37.932Z" }, + { url = "https://files.pythonhosted.org/packages/e6/32/7621a4382488aa283cc05e8984a9c219abad3bca087be9ec77e89939ded9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a", size = 24114, upload-time = "2024-10-18T15:21:39.799Z" }, + { url = "https://files.pythonhosted.org/packages/0d/80/0985960e4b89922cb5a0bac0ed39c5b96cbc1a536a99f30e8c220a996ed9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9", size = 24098, upload-time = "2024-10-18T15:21:40.813Z" }, + { url = "https://files.pythonhosted.org/packages/82/78/fedb03c7d5380df2427038ec8d973587e90561b2d90cd472ce9254cf348b/MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6", size = 15208, upload-time = "2024-10-18T15:21:41.814Z" }, + { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739, upload-time = "2024-10-18T15:21:42.784Z" }, ] [[package]] name = "moto" -version = "5.1.5" +version = "5.1.8" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "boto3" }, @@ -409,9 +409,9 @@ dependencies = [ { name = "werkzeug" }, { name = "xmltodict" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/24/9f/5cacf53cbd26b4a77c817fd4fbec2ed38139ba2cfcd842c279aa19ee161f/moto-5.1.5.tar.gz", hash = "sha256:42b362ea9a16181e8e7b615ac212c294b882f020e9ae02f01230f167926df84e", size = 6893155 } +sdist = { url = "https://files.pythonhosted.org/packages/19/e8/986b38d3459124168e21b8ea3311a9a26e930bc84b1e9ede16e5bccd574c/moto-5.1.8.tar.gz", hash = "sha256:5c2f63c051b7c13224cb1483917c85a796468d7e37dcd5d1a5b8de66729de3f4", size = 7039961, upload-time = "2025-07-06T21:51:01.943Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/84/0f/72a420e972a9e782d08843ced85d29f04c8470c66fc84ecb1c8a7e7abcf8/moto-5.1.5-py3-none-any.whl", hash = "sha256:866ae85eb5efe11a78f991127531878fd7f49177eb4a6680f47060430eb8932d", size = 4992353 }, + { url = "https://files.pythonhosted.org/packages/f1/a9/7dc06460777b2c1e7a91bb485e9dd600a88331aeac73ca88a8a6d437900f/moto-5.1.8-py3-none-any.whl", hash = "sha256:12f3a15100da7de019c671a516dbba33b14072faba103f16ca79a39b8c803b7d", size = 5108867, upload-time = "2025-07-06T21:50:59.911Z" }, ] [package.optional-dependencies] @@ -427,50 +427,50 @@ events = [ name = "packaging" version = "25.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727 } +sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727, upload-time = "2025-04-19T11:48:59.673Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469 }, + { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload-time = "2025-04-19T11:48:57.875Z" }, ] [[package]] name = "pluggy" version = "1.6.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412 } +sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412, upload-time = "2025-05-15T12:30:07.975Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538 }, + { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" }, ] [[package]] name = "ply" version = "3.11" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e5/69/882ee5c9d017149285cab114ebeab373308ef0f874fcdac9beb90e0ac4da/ply-3.11.tar.gz", hash = "sha256:00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3", size = 159130 } +sdist = { url = "https://files.pythonhosted.org/packages/e5/69/882ee5c9d017149285cab114ebeab373308ef0f874fcdac9beb90e0ac4da/ply-3.11.tar.gz", hash = "sha256:00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3", size = 159130, upload-time = "2018-02-15T19:01:31.097Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a3/58/35da89ee790598a0700ea49b2a66594140f44dec458c07e8e3d4979137fc/ply-3.11-py2.py3-none-any.whl", hash = "sha256:096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce", size = 49567 }, + { url = "https://files.pythonhosted.org/packages/a3/58/35da89ee790598a0700ea49b2a66594140f44dec458c07e8e3d4979137fc/ply-3.11-py2.py3-none-any.whl", hash = "sha256:096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce", size = 49567, upload-time = "2018-02-15T19:01:27.172Z" }, ] [[package]] name = "py-partiql-parser" version = "0.6.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/58/a1/0a2867e48b232b4f82c4929ef7135f2a5d72c3886b957dccf63c70aa2fcb/py_partiql_parser-0.6.1.tar.gz", hash = "sha256:8583ff2a0e15560ef3bc3df109a7714d17f87d81d33e8c38b7fed4e58a63215d", size = 17120 } +sdist = { url = "https://files.pythonhosted.org/packages/58/a1/0a2867e48b232b4f82c4929ef7135f2a5d72c3886b957dccf63c70aa2fcb/py_partiql_parser-0.6.1.tar.gz", hash = "sha256:8583ff2a0e15560ef3bc3df109a7714d17f87d81d33e8c38b7fed4e58a63215d", size = 17120, upload-time = "2024-12-25T22:06:41.327Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/97/84/0e410c20bbe9a504fc56e97908f13261c2b313d16cbb3b738556166f044a/py_partiql_parser-0.6.1-py2.py3-none-any.whl", hash = "sha256:ff6a48067bff23c37e9044021bf1d949c83e195490c17e020715e927fe5b2456", size = 23520 }, + { url = "https://files.pythonhosted.org/packages/97/84/0e410c20bbe9a504fc56e97908f13261c2b313d16cbb3b738556166f044a/py_partiql_parser-0.6.1-py2.py3-none-any.whl", hash = "sha256:ff6a48067bff23c37e9044021bf1d949c83e195490c17e020715e927fe5b2456", size = 23520, upload-time = "2024-12-25T22:06:39.106Z" }, ] [[package]] name = "pycparser" version = "2.22" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", size = 172736 } +sdist = { url = "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", size = 172736, upload-time = "2024-03-30T13:22:22.564Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552 }, + { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552, upload-time = "2024-03-30T13:22:20.476Z" }, ] [[package]] name = "pydantic" -version = "2.11.5" +version = "2.11.7" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "annotated-types" }, @@ -478,9 +478,9 @@ dependencies = [ { name = "typing-extensions" }, { name = "typing-inspection" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f0/86/8ce9040065e8f924d642c58e4a344e33163a07f6b57f836d0d734e0ad3fb/pydantic-2.11.5.tar.gz", hash = "sha256:7f853db3d0ce78ce8bbb148c401c2cdd6431b3473c0cdff2755c7690952a7b7a", size = 787102 } +sdist = { url = "https://files.pythonhosted.org/packages/00/dd/4325abf92c39ba8623b5af936ddb36ffcfe0beae70405d456ab1fb2f5b8c/pydantic-2.11.7.tar.gz", hash = "sha256:d989c3c6cb79469287b1569f7447a17848c998458d49ebe294e975b9baf0f0db", size = 788350, upload-time = "2025-06-14T08:33:17.137Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b5/69/831ed22b38ff9b4b64b66569f0e5b7b97cf3638346eb95a2147fdb49ad5f/pydantic-2.11.5-py3-none-any.whl", hash = "sha256:f9c26ba06f9747749ca1e5c94d6a85cb84254577553c8785576fd38fa64dc0f7", size = 444229 }, + { url = "https://files.pythonhosted.org/packages/6a/c0/ec2b1c8712ca690e5d61979dee872603e92b8a32f94cc1b72d53beab008a/pydantic-2.11.7-py3-none-any.whl", hash = "sha256:dde5df002701f6de26248661f6835bbe296a47bf73990135c7d07ce741b9623b", size = 444782, upload-time = "2025-06-14T08:33:14.905Z" }, ] [[package]] @@ -490,68 +490,78 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc", size = 435195 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/18/8a/2b41c97f554ec8c71f2a8a5f85cb56a8b0956addfe8b0efb5b3d77e8bdc3/pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc", size = 2009000 }, - { url = "https://files.pythonhosted.org/packages/a1/02/6224312aacb3c8ecbaa959897af57181fb6cf3a3d7917fd44d0f2917e6f2/pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7", size = 1847996 }, - { url = "https://files.pythonhosted.org/packages/d6/46/6dcdf084a523dbe0a0be59d054734b86a981726f221f4562aed313dbcb49/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025", size = 1880957 }, - { url = "https://files.pythonhosted.org/packages/ec/6b/1ec2c03837ac00886ba8160ce041ce4e325b41d06a034adbef11339ae422/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011", size = 1964199 }, - { url = "https://files.pythonhosted.org/packages/2d/1d/6bf34d6adb9debd9136bd197ca72642203ce9aaaa85cfcbfcf20f9696e83/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f", size = 2120296 }, - { url = "https://files.pythonhosted.org/packages/e0/94/2bd0aaf5a591e974b32a9f7123f16637776c304471a0ab33cf263cf5591a/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88", size = 2676109 }, - { url = "https://files.pythonhosted.org/packages/f9/41/4b043778cf9c4285d59742281a769eac371b9e47e35f98ad321349cc5d61/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1", size = 2002028 }, - { url = "https://files.pythonhosted.org/packages/cb/d5/7bb781bf2748ce3d03af04d5c969fa1308880e1dca35a9bd94e1a96a922e/pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b", size = 2100044 }, - { url = "https://files.pythonhosted.org/packages/fe/36/def5e53e1eb0ad896785702a5bbfd25eed546cdcf4087ad285021a90ed53/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1", size = 2058881 }, - { url = "https://files.pythonhosted.org/packages/01/6c/57f8d70b2ee57fc3dc8b9610315949837fa8c11d86927b9bb044f8705419/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6", size = 2227034 }, - { url = "https://files.pythonhosted.org/packages/27/b9/9c17f0396a82b3d5cbea4c24d742083422639e7bb1d5bf600e12cb176a13/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea", size = 2234187 }, - { url = "https://files.pythonhosted.org/packages/b0/6a/adf5734ffd52bf86d865093ad70b2ce543415e0e356f6cacabbc0d9ad910/pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290", size = 1892628 }, - { url = "https://files.pythonhosted.org/packages/43/e4/5479fecb3606c1368d496a825d8411e126133c41224c1e7238be58b87d7e/pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2", size = 1955866 }, - { url = "https://files.pythonhosted.org/packages/0d/24/8b11e8b3e2be9dd82df4b11408a67c61bb4dc4f8e11b5b0fc888b38118b5/pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab", size = 1888894 }, - { url = "https://files.pythonhosted.org/packages/46/8c/99040727b41f56616573a28771b1bfa08a3d3fe74d3d513f01251f79f172/pydantic_core-2.33.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1082dd3e2d7109ad8b7da48e1d4710c8d06c253cbc4a27c1cff4fbcaa97a9e3f", size = 2015688 }, - { url = "https://files.pythonhosted.org/packages/3a/cc/5999d1eb705a6cefc31f0b4a90e9f7fc400539b1a1030529700cc1b51838/pydantic_core-2.33.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f517ca031dfc037a9c07e748cefd8d96235088b83b4f4ba8939105d20fa1dcd6", size = 1844808 }, - { url = "https://files.pythonhosted.org/packages/6f/5e/a0a7b8885c98889a18b6e376f344da1ef323d270b44edf8174d6bce4d622/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a9f2c9dd19656823cb8250b0724ee9c60a82f3cdf68a080979d13092a3b0fef", size = 1885580 }, - { url = "https://files.pythonhosted.org/packages/3b/2a/953581f343c7d11a304581156618c3f592435523dd9d79865903272c256a/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b0a451c263b01acebe51895bfb0e1cc842a5c666efe06cdf13846c7418caa9a", size = 1973859 }, - { url = "https://files.pythonhosted.org/packages/e6/55/f1a813904771c03a3f97f676c62cca0c0a4138654107c1b61f19c644868b/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ea40a64d23faa25e62a70ad163571c0b342b8bf66d5fa612ac0dec4f069d916", size = 2120810 }, - { url = "https://files.pythonhosted.org/packages/aa/c3/053389835a996e18853ba107a63caae0b9deb4a276c6b472931ea9ae6e48/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb2d542b4d66f9470e8065c5469ec676978d625a8b7a363f07d9a501a9cb36a", size = 2676498 }, - { url = "https://files.pythonhosted.org/packages/eb/3c/f4abd740877a35abade05e437245b192f9d0ffb48bbbbd708df33d3cda37/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdac5d6ffa1b5a83bca06ffe7583f5576555e6c8b3a91fbd25ea7780f825f7d", size = 2000611 }, - { url = "https://files.pythonhosted.org/packages/59/a7/63ef2fed1837d1121a894d0ce88439fe3e3b3e48c7543b2a4479eb99c2bd/pydantic_core-2.33.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04a1a413977ab517154eebb2d326da71638271477d6ad87a769102f7c2488c56", size = 2107924 }, - { url = "https://files.pythonhosted.org/packages/04/8f/2551964ef045669801675f1cfc3b0d74147f4901c3ffa42be2ddb1f0efc4/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c8e7af2f4e0194c22b5b37205bfb293d166a7344a5b0d0eaccebc376546d77d5", size = 2063196 }, - { url = "https://files.pythonhosted.org/packages/26/bd/d9602777e77fc6dbb0c7db9ad356e9a985825547dce5ad1d30ee04903918/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:5c92edd15cd58b3c2d34873597a1e20f13094f59cf88068adb18947df5455b4e", size = 2236389 }, - { url = "https://files.pythonhosted.org/packages/42/db/0e950daa7e2230423ab342ae918a794964b053bec24ba8af013fc7c94846/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:65132b7b4a1c0beded5e057324b7e16e10910c106d43675d9bd87d4f38dde162", size = 2239223 }, - { url = "https://files.pythonhosted.org/packages/58/4d/4f937099c545a8a17eb52cb67fe0447fd9a373b348ccfa9a87f141eeb00f/pydantic_core-2.33.2-cp313-cp313-win32.whl", hash = "sha256:52fb90784e0a242bb96ec53f42196a17278855b0f31ac7c3cc6f5c1ec4811849", size = 1900473 }, - { url = "https://files.pythonhosted.org/packages/a0/75/4a0a9bac998d78d889def5e4ef2b065acba8cae8c93696906c3a91f310ca/pydantic_core-2.33.2-cp313-cp313-win_amd64.whl", hash = "sha256:c083a3bdd5a93dfe480f1125926afcdbf2917ae714bdb80b36d34318b2bec5d9", size = 1955269 }, - { url = "https://files.pythonhosted.org/packages/f9/86/1beda0576969592f1497b4ce8e7bc8cbdf614c352426271b1b10d5f0aa64/pydantic_core-2.33.2-cp313-cp313-win_arm64.whl", hash = "sha256:e80b087132752f6b3d714f041ccf74403799d3b23a72722ea2e6ba2e892555b9", size = 1893921 }, - { url = "https://files.pythonhosted.org/packages/a4/7d/e09391c2eebeab681df2b74bfe6c43422fffede8dc74187b2b0bf6fd7571/pydantic_core-2.33.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61c18fba8e5e9db3ab908620af374db0ac1baa69f0f32df4f61ae23f15e586ac", size = 1806162 }, - { url = "https://files.pythonhosted.org/packages/f1/3d/847b6b1fed9f8ed3bb95a9ad04fbd0b212e832d4f0f50ff4d9ee5a9f15cf/pydantic_core-2.33.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95237e53bb015f67b63c91af7518a62a8660376a6a0db19b89acc77a4d6199f5", size = 1981560 }, - { url = "https://files.pythonhosted.org/packages/6f/9a/e73262f6c6656262b5fdd723ad90f518f579b7bc8622e43a942eec53c938/pydantic_core-2.33.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c2fc0a768ef76c15ab9238afa6da7f69895bb5d1ee83aeea2e3509af4472d0b9", size = 1935777 }, +sdist = { url = "https://files.pythonhosted.org/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc", size = 435195, upload-time = "2025-04-23T18:33:52.104Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/8a/2b41c97f554ec8c71f2a8a5f85cb56a8b0956addfe8b0efb5b3d77e8bdc3/pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc", size = 2009000, upload-time = "2025-04-23T18:31:25.863Z" }, + { url = "https://files.pythonhosted.org/packages/a1/02/6224312aacb3c8ecbaa959897af57181fb6cf3a3d7917fd44d0f2917e6f2/pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7", size = 1847996, upload-time = "2025-04-23T18:31:27.341Z" }, + { url = "https://files.pythonhosted.org/packages/d6/46/6dcdf084a523dbe0a0be59d054734b86a981726f221f4562aed313dbcb49/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025", size = 1880957, upload-time = "2025-04-23T18:31:28.956Z" }, + { url = "https://files.pythonhosted.org/packages/ec/6b/1ec2c03837ac00886ba8160ce041ce4e325b41d06a034adbef11339ae422/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011", size = 1964199, upload-time = "2025-04-23T18:31:31.025Z" }, + { url = "https://files.pythonhosted.org/packages/2d/1d/6bf34d6adb9debd9136bd197ca72642203ce9aaaa85cfcbfcf20f9696e83/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f", size = 2120296, upload-time = "2025-04-23T18:31:32.514Z" }, + { url = "https://files.pythonhosted.org/packages/e0/94/2bd0aaf5a591e974b32a9f7123f16637776c304471a0ab33cf263cf5591a/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88", size = 2676109, upload-time = "2025-04-23T18:31:33.958Z" }, + { url = "https://files.pythonhosted.org/packages/f9/41/4b043778cf9c4285d59742281a769eac371b9e47e35f98ad321349cc5d61/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1", size = 2002028, upload-time = "2025-04-23T18:31:39.095Z" }, + { url = "https://files.pythonhosted.org/packages/cb/d5/7bb781bf2748ce3d03af04d5c969fa1308880e1dca35a9bd94e1a96a922e/pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b", size = 2100044, upload-time = "2025-04-23T18:31:41.034Z" }, + { url = "https://files.pythonhosted.org/packages/fe/36/def5e53e1eb0ad896785702a5bbfd25eed546cdcf4087ad285021a90ed53/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1", size = 2058881, upload-time = "2025-04-23T18:31:42.757Z" }, + { url = "https://files.pythonhosted.org/packages/01/6c/57f8d70b2ee57fc3dc8b9610315949837fa8c11d86927b9bb044f8705419/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6", size = 2227034, upload-time = "2025-04-23T18:31:44.304Z" }, + { url = "https://files.pythonhosted.org/packages/27/b9/9c17f0396a82b3d5cbea4c24d742083422639e7bb1d5bf600e12cb176a13/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea", size = 2234187, upload-time = "2025-04-23T18:31:45.891Z" }, + { url = "https://files.pythonhosted.org/packages/b0/6a/adf5734ffd52bf86d865093ad70b2ce543415e0e356f6cacabbc0d9ad910/pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290", size = 1892628, upload-time = "2025-04-23T18:31:47.819Z" }, + { url = "https://files.pythonhosted.org/packages/43/e4/5479fecb3606c1368d496a825d8411e126133c41224c1e7238be58b87d7e/pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2", size = 1955866, upload-time = "2025-04-23T18:31:49.635Z" }, + { url = "https://files.pythonhosted.org/packages/0d/24/8b11e8b3e2be9dd82df4b11408a67c61bb4dc4f8e11b5b0fc888b38118b5/pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab", size = 1888894, upload-time = "2025-04-23T18:31:51.609Z" }, + { url = "https://files.pythonhosted.org/packages/46/8c/99040727b41f56616573a28771b1bfa08a3d3fe74d3d513f01251f79f172/pydantic_core-2.33.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1082dd3e2d7109ad8b7da48e1d4710c8d06c253cbc4a27c1cff4fbcaa97a9e3f", size = 2015688, upload-time = "2025-04-23T18:31:53.175Z" }, + { url = "https://files.pythonhosted.org/packages/3a/cc/5999d1eb705a6cefc31f0b4a90e9f7fc400539b1a1030529700cc1b51838/pydantic_core-2.33.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f517ca031dfc037a9c07e748cefd8d96235088b83b4f4ba8939105d20fa1dcd6", size = 1844808, upload-time = "2025-04-23T18:31:54.79Z" }, + { url = "https://files.pythonhosted.org/packages/6f/5e/a0a7b8885c98889a18b6e376f344da1ef323d270b44edf8174d6bce4d622/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a9f2c9dd19656823cb8250b0724ee9c60a82f3cdf68a080979d13092a3b0fef", size = 1885580, upload-time = "2025-04-23T18:31:57.393Z" }, + { url = "https://files.pythonhosted.org/packages/3b/2a/953581f343c7d11a304581156618c3f592435523dd9d79865903272c256a/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b0a451c263b01acebe51895bfb0e1cc842a5c666efe06cdf13846c7418caa9a", size = 1973859, upload-time = "2025-04-23T18:31:59.065Z" }, + { url = "https://files.pythonhosted.org/packages/e6/55/f1a813904771c03a3f97f676c62cca0c0a4138654107c1b61f19c644868b/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ea40a64d23faa25e62a70ad163571c0b342b8bf66d5fa612ac0dec4f069d916", size = 2120810, upload-time = "2025-04-23T18:32:00.78Z" }, + { url = "https://files.pythonhosted.org/packages/aa/c3/053389835a996e18853ba107a63caae0b9deb4a276c6b472931ea9ae6e48/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb2d542b4d66f9470e8065c5469ec676978d625a8b7a363f07d9a501a9cb36a", size = 2676498, upload-time = "2025-04-23T18:32:02.418Z" }, + { url = "https://files.pythonhosted.org/packages/eb/3c/f4abd740877a35abade05e437245b192f9d0ffb48bbbbd708df33d3cda37/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdac5d6ffa1b5a83bca06ffe7583f5576555e6c8b3a91fbd25ea7780f825f7d", size = 2000611, upload-time = "2025-04-23T18:32:04.152Z" }, + { url = "https://files.pythonhosted.org/packages/59/a7/63ef2fed1837d1121a894d0ce88439fe3e3b3e48c7543b2a4479eb99c2bd/pydantic_core-2.33.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04a1a413977ab517154eebb2d326da71638271477d6ad87a769102f7c2488c56", size = 2107924, upload-time = "2025-04-23T18:32:06.129Z" }, + { url = "https://files.pythonhosted.org/packages/04/8f/2551964ef045669801675f1cfc3b0d74147f4901c3ffa42be2ddb1f0efc4/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c8e7af2f4e0194c22b5b37205bfb293d166a7344a5b0d0eaccebc376546d77d5", size = 2063196, upload-time = "2025-04-23T18:32:08.178Z" }, + { url = "https://files.pythonhosted.org/packages/26/bd/d9602777e77fc6dbb0c7db9ad356e9a985825547dce5ad1d30ee04903918/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:5c92edd15cd58b3c2d34873597a1e20f13094f59cf88068adb18947df5455b4e", size = 2236389, upload-time = "2025-04-23T18:32:10.242Z" }, + { url = "https://files.pythonhosted.org/packages/42/db/0e950daa7e2230423ab342ae918a794964b053bec24ba8af013fc7c94846/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:65132b7b4a1c0beded5e057324b7e16e10910c106d43675d9bd87d4f38dde162", size = 2239223, upload-time = "2025-04-23T18:32:12.382Z" }, + { url = "https://files.pythonhosted.org/packages/58/4d/4f937099c545a8a17eb52cb67fe0447fd9a373b348ccfa9a87f141eeb00f/pydantic_core-2.33.2-cp313-cp313-win32.whl", hash = "sha256:52fb90784e0a242bb96ec53f42196a17278855b0f31ac7c3cc6f5c1ec4811849", size = 1900473, upload-time = "2025-04-23T18:32:14.034Z" }, + { url = "https://files.pythonhosted.org/packages/a0/75/4a0a9bac998d78d889def5e4ef2b065acba8cae8c93696906c3a91f310ca/pydantic_core-2.33.2-cp313-cp313-win_amd64.whl", hash = "sha256:c083a3bdd5a93dfe480f1125926afcdbf2917ae714bdb80b36d34318b2bec5d9", size = 1955269, upload-time = "2025-04-23T18:32:15.783Z" }, + { url = "https://files.pythonhosted.org/packages/f9/86/1beda0576969592f1497b4ce8e7bc8cbdf614c352426271b1b10d5f0aa64/pydantic_core-2.33.2-cp313-cp313-win_arm64.whl", hash = "sha256:e80b087132752f6b3d714f041ccf74403799d3b23a72722ea2e6ba2e892555b9", size = 1893921, upload-time = "2025-04-23T18:32:18.473Z" }, + { url = "https://files.pythonhosted.org/packages/a4/7d/e09391c2eebeab681df2b74bfe6c43422fffede8dc74187b2b0bf6fd7571/pydantic_core-2.33.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61c18fba8e5e9db3ab908620af374db0ac1baa69f0f32df4f61ae23f15e586ac", size = 1806162, upload-time = "2025-04-23T18:32:20.188Z" }, + { url = "https://files.pythonhosted.org/packages/f1/3d/847b6b1fed9f8ed3bb95a9ad04fbd0b212e832d4f0f50ff4d9ee5a9f15cf/pydantic_core-2.33.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95237e53bb015f67b63c91af7518a62a8660376a6a0db19b89acc77a4d6199f5", size = 1981560, upload-time = "2025-04-23T18:32:22.354Z" }, + { url = "https://files.pythonhosted.org/packages/6f/9a/e73262f6c6656262b5fdd723ad90f518f579b7bc8622e43a942eec53c938/pydantic_core-2.33.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c2fc0a768ef76c15ab9238afa6da7f69895bb5d1ee83aeea2e3509af4472d0b9", size = 1935777, upload-time = "2025-04-23T18:32:25.088Z" }, ] [[package]] name = "pydantic-settings" -version = "2.9.1" +version = "2.10.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pydantic" }, { name = "python-dotenv" }, { name = "typing-inspection" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/67/1d/42628a2c33e93f8e9acbde0d5d735fa0850f3e6a2f8cb1eb6c40b9a732ac/pydantic_settings-2.9.1.tar.gz", hash = "sha256:c509bf79d27563add44e8446233359004ed85066cd096d8b510f715e6ef5d268", size = 163234 } +sdist = { url = "https://files.pythonhosted.org/packages/68/85/1ea668bbab3c50071ca613c6ab30047fb36ab0da1b92fa8f17bbc38fd36c/pydantic_settings-2.10.1.tar.gz", hash = "sha256:06f0062169818d0f5524420a360d632d5857b83cffd4d42fe29597807a1614ee", size = 172583, upload-time = "2025-06-24T13:26:46.841Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b6/5f/d6d641b490fd3ec2c4c13b4244d68deea3a1b970a97be64f34fb5504ff72/pydantic_settings-2.9.1-py3-none-any.whl", hash = "sha256:59b4f431b1defb26fe620c71a7d3968a710d719f5f4cdbbdb7926edeb770f6ef", size = 44356 }, + { url = "https://files.pythonhosted.org/packages/58/f0/427018098906416f580e3cf1366d3b1abfb408a0652e9f31600c24a1903c/pydantic_settings-2.10.1-py3-none-any.whl", hash = "sha256:a60952460b99cf661dc25c29c0ef171721f98bfcb52ef8d9ea4c943d7c8cc796", size = 45235, upload-time = "2025-06-24T13:26:45.485Z" }, +] + +[[package]] +name = "pygments" +version = "2.19.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631, upload-time = "2025-06-21T13:39:12.283Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload-time = "2025-06-21T13:39:07.939Z" }, ] [[package]] name = "pytest" -version = "8.3.5" +version = "8.4.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, { name = "iniconfig" }, { name = "packaging" }, { name = "pluggy" }, + { name = "pygments" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ae/3c/c9d525a414d506893f0cd8a8d0de7706446213181570cdbd766691164e40/pytest-8.3.5.tar.gz", hash = "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845", size = 1450891 } +sdist = { url = "https://files.pythonhosted.org/packages/08/ba/45911d754e8eba3d5a841a5ce61a65a685ff1798421ac054f85aa8747dfb/pytest-8.4.1.tar.gz", hash = "sha256:7c67fd69174877359ed9371ec3af8a3d2b04741818c51e5e99cc1742251fa93c", size = 1517714, upload-time = "2025-06-18T05:48:06.109Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/30/3d/64ad57c803f1fa1e963a7946b6e0fea4a70df53c1a7fed304586539c2bac/pytest-8.3.5-py3-none-any.whl", hash = "sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820", size = 343634 }, + { url = "https://files.pythonhosted.org/packages/29/16/c8a903f4c4dffe7a12843191437d7cd8e32751d5de349d45d3fe69544e87/pytest-8.4.1-py3-none-any.whl", hash = "sha256:539c70ba6fcead8e78eebbf1115e8b589e7565830d7d006a8723f19ac8a0afb7", size = 365474, upload-time = "2025-06-18T05:48:03.955Z" }, ] [[package]] @@ -561,62 +571,65 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "six" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432 } +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892 }, + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, ] [[package]] name = "python-dotenv" -version = "1.1.0" +version = "1.1.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/88/2c/7bb1416c5620485aa793f2de31d3df393d3686aa8a8506d11e10e13c5baf/python_dotenv-1.1.0.tar.gz", hash = "sha256:41f90bc6f5f177fb41f53e87666db362025010eb28f60a01c9143bfa33a2b2d5", size = 39920 } +sdist = { url = "https://files.pythonhosted.org/packages/f6/b0/4bc07ccd3572a2f9df7e6782f52b0c6c90dcbb803ac4a167702d7d0dfe1e/python_dotenv-1.1.1.tar.gz", hash = "sha256:a8a6399716257f45be6a007360200409fce5cda2661e3dec71d23dc15f6189ab", size = 41978, upload-time = "2025-06-24T04:21:07.341Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/1e/18/98a99ad95133c6a6e2005fe89faedf294a748bd5dc803008059409ac9b1e/python_dotenv-1.1.0-py3-none-any.whl", hash = "sha256:d7c01d9e2293916c18baf562d95698754b0dbbb5e74d457c45d4f6561fb9d55d", size = 20256 }, + { url = "https://files.pythonhosted.org/packages/5f/ed/539768cf28c661b5b068d66d96a2f155c4971a5d55684a514c1a0e0dec2f/python_dotenv-1.1.1-py3-none-any.whl", hash = "sha256:31f23644fe2602f88ff55e1f5c79ba497e01224ee7737937930c448e4d0e24dc", size = 20556, upload-time = "2025-06-24T04:21:06.073Z" }, ] [[package]] name = "pywin32" -version = "310" +version = "311" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6b/ec/4fdbe47932f671d6e348474ea35ed94227fb5df56a7c30cbbb42cd396ed0/pywin32-310-cp312-cp312-win32.whl", hash = "sha256:8a75a5cc3893e83a108c05d82198880704c44bbaee4d06e442e471d3c9ea4f3d", size = 8796239 }, - { url = "https://files.pythonhosted.org/packages/e3/e5/b0627f8bb84e06991bea89ad8153a9e50ace40b2e1195d68e9dff6b03d0f/pywin32-310-cp312-cp312-win_amd64.whl", hash = "sha256:bf5c397c9a9a19a6f62f3fb821fbf36cac08f03770056711f765ec1503972060", size = 9503839 }, - { url = "https://files.pythonhosted.org/packages/1f/32/9ccf53748df72301a89713936645a664ec001abd35ecc8578beda593d37d/pywin32-310-cp312-cp312-win_arm64.whl", hash = "sha256:2349cc906eae872d0663d4d6290d13b90621eaf78964bb1578632ff20e152966", size = 8459470 }, - { url = "https://files.pythonhosted.org/packages/1c/09/9c1b978ffc4ae53999e89c19c77ba882d9fce476729f23ef55211ea1c034/pywin32-310-cp313-cp313-win32.whl", hash = "sha256:5d241a659c496ada3253cd01cfaa779b048e90ce4b2b38cd44168ad555ce74ab", size = 8794384 }, - { url = "https://files.pythonhosted.org/packages/45/3c/b4640f740ffebadd5d34df35fecba0e1cfef8fde9f3e594df91c28ad9b50/pywin32-310-cp313-cp313-win_amd64.whl", hash = "sha256:667827eb3a90208ddbdcc9e860c81bde63a135710e21e4cb3348968e4bd5249e", size = 9503039 }, - { url = "https://files.pythonhosted.org/packages/b4/f4/f785020090fb050e7fb6d34b780f2231f302609dc964672f72bfaeb59a28/pywin32-310-cp313-cp313-win_arm64.whl", hash = "sha256:e308f831de771482b7cf692a1f308f8fca701b2d8f9dde6cc440c7da17e47b33", size = 8458152 }, + { 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" }, + { 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" }, + { 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" }, + { url = "https://files.pythonhosted.org/packages/a5/be/3fd5de0979fcb3994bfee0d65ed8ca9506a8a1260651b86174f6a86f52b3/pywin32-311-cp313-cp313-win32.whl", hash = "sha256:f95ba5a847cba10dd8c4d8fefa9f2a6cf283b8b88ed6178fa8a6c1ab16054d0d", size = 8705700, upload-time = "2025-07-14T20:13:26.471Z" }, + { url = "https://files.pythonhosted.org/packages/e3/28/e0a1909523c6890208295a29e05c2adb2126364e289826c0a8bc7297bd5c/pywin32-311-cp313-cp313-win_amd64.whl", hash = "sha256:718a38f7e5b058e76aee1c56ddd06908116d35147e133427e59a3983f703a20d", size = 9494700, upload-time = "2025-07-14T20:13:28.243Z" }, + { url = "https://files.pythonhosted.org/packages/04/bf/90339ac0f55726dce7d794e6d79a18a91265bdf3aa70b6b9ca52f35e022a/pywin32-311-cp313-cp313-win_arm64.whl", hash = "sha256:7b4075d959648406202d92a2310cb990fea19b535c7f4a78d3f5e10b926eeb8a", size = 8709318, upload-time = "2025-07-14T20:13:30.348Z" }, + { 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" }, + { 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" }, + { 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" }, ] [[package]] name = "pyyaml" version = "6.0.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631 } -wheels = [ - { 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 }, - { 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 }, - { 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 }, - { 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 }, - { 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 }, - { 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 }, - { 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 }, - { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591 }, - { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338 }, - { 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 }, - { 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 }, - { 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 }, - { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361 }, - { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523 }, - { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660 }, - { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597 }, - { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527 }, - { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446 }, +sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631, upload-time = "2024-08-06T20:33:50.674Z" } +wheels = [ + { 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, upload-time = "2024-08-06T20:32:25.131Z" }, + { 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, upload-time = "2024-08-06T20:32:26.511Z" }, + { 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, upload-time = "2024-08-06T20:32:28.363Z" }, + { 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, upload-time = "2024-08-06T20:32:30.058Z" }, + { 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, upload-time = "2024-08-06T20:32:31.881Z" }, + { 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, upload-time = "2024-08-06T20:32:37.083Z" }, + { 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, upload-time = "2024-08-06T20:32:38.898Z" }, + { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591, upload-time = "2024-08-06T20:32:40.241Z" }, + { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338, upload-time = "2024-08-06T20:32:41.93Z" }, + { 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, upload-time = "2024-08-06T20:32:43.4Z" }, + { 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, upload-time = "2024-08-06T20:32:44.801Z" }, + { 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, upload-time = "2024-08-06T20:32:46.432Z" }, + { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361, upload-time = "2024-08-06T20:32:51.188Z" }, + { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523, upload-time = "2024-08-06T20:32:53.019Z" }, + { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660, upload-time = "2024-08-06T20:32:54.708Z" }, + { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597, upload-time = "2024-08-06T20:32:56.985Z" }, + { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527, upload-time = "2024-08-06T20:33:03.001Z" }, + { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446, upload-time = "2024-08-06T20:33:04.33Z" }, ] [[package]] name = "requests" -version = "2.32.3" +version = "2.32.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "certifi" }, @@ -624,9 +637,9 @@ dependencies = [ { name = "idna" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", size = 131218 } +sdist = { url = "https://files.pythonhosted.org/packages/e1/0a/929373653770d8a0d7ea76c37de6e41f11eb07559b103b1c02cafb3f7cf8/requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422", size = 135258, upload-time = "2025-06-09T16:43:07.34Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928 }, + { url = "https://files.pythonhosted.org/packages/7c/e4/56027c4a6b4ae70ca9de302488c5ca95ad4a39e190093d6c1a8ace08341b/requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c", size = 64847, upload-time = "2025-06-09T16:43:05.728Z" }, ] [[package]] @@ -638,64 +651,64 @@ dependencies = [ { name = "requests" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/81/7e/2345ac3299bd62bd7163216702bbc88976c099cfceba5b889f2a457727a1/responses-0.25.7.tar.gz", hash = "sha256:8ebae11405d7a5df79ab6fd54277f6f2bc29b2d002d0dd2d5c632594d1ddcedb", size = 79203 } +sdist = { url = "https://files.pythonhosted.org/packages/81/7e/2345ac3299bd62bd7163216702bbc88976c099cfceba5b889f2a457727a1/responses-0.25.7.tar.gz", hash = "sha256:8ebae11405d7a5df79ab6fd54277f6f2bc29b2d002d0dd2d5c632594d1ddcedb", size = 79203, upload-time = "2025-03-11T15:36:16.624Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e4/fc/1d20b64fa90e81e4fa0a34c9b0240a6cfb1326b7e06d18a5432a9917c316/responses-0.25.7-py3-none-any.whl", hash = "sha256:92ca17416c90fe6b35921f52179bff29332076bb32694c0df02dcac2c6bc043c", size = 34732 }, + { url = "https://files.pythonhosted.org/packages/e4/fc/1d20b64fa90e81e4fa0a34c9b0240a6cfb1326b7e06d18a5432a9917c316/responses-0.25.7-py3-none-any.whl", hash = "sha256:92ca17416c90fe6b35921f52179bff29332076bb32694c0df02dcac2c6bc043c", size = 34732, upload-time = "2025-03-11T15:36:14.589Z" }, ] [[package]] name = "ruff" -version = "0.11.11" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b2/53/ae4857030d59286924a8bdb30d213d6ff22d8f0957e738d0289990091dd8/ruff-0.11.11.tar.gz", hash = "sha256:7774173cc7c1980e6bf67569ebb7085989a78a103922fb83ef3dfe230cd0687d", size = 4186707 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b1/14/f2326676197bab099e2a24473158c21656fbf6a207c65f596ae15acb32b9/ruff-0.11.11-py3-none-linux_armv6l.whl", hash = "sha256:9924e5ae54125ed8958a4f7de320dab7380f6e9fa3195e3dc3b137c6842a0092", size = 10229049 }, - { url = "https://files.pythonhosted.org/packages/9a/f3/bff7c92dd66c959e711688b2e0768e486bbca46b2f35ac319bb6cce04447/ruff-0.11.11-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:c8a93276393d91e952f790148eb226658dd275cddfde96c6ca304873f11d2ae4", size = 11053601 }, - { url = "https://files.pythonhosted.org/packages/e2/38/8e1a3efd0ef9d8259346f986b77de0f62c7a5ff4a76563b6b39b68f793b9/ruff-0.11.11-py3-none-macosx_11_0_arm64.whl", hash = "sha256:d6e333dbe2e6ae84cdedefa943dfd6434753ad321764fd937eef9d6b62022bcd", size = 10367421 }, - { url = "https://files.pythonhosted.org/packages/b4/50/557ad9dd4fb9d0bf524ec83a090a3932d284d1a8b48b5906b13b72800e5f/ruff-0.11.11-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7885d9a5e4c77b24e8c88aba8c80be9255fa22ab326019dac2356cff42089fc6", size = 10581980 }, - { url = "https://files.pythonhosted.org/packages/c4/b2/e2ed82d6e2739ece94f1bdbbd1d81b712d3cdaf69f0a1d1f1a116b33f9ad/ruff-0.11.11-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1b5ab797fcc09121ed82e9b12b6f27e34859e4227080a42d090881be888755d4", size = 10089241 }, - { url = "https://files.pythonhosted.org/packages/3d/9f/b4539f037a5302c450d7c695c82f80e98e48d0d667ecc250e6bdeb49b5c3/ruff-0.11.11-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e231ff3132c1119ece836487a02785f099a43992b95c2f62847d29bace3c75ac", size = 11699398 }, - { url = "https://files.pythonhosted.org/packages/61/fb/32e029d2c0b17df65e6eaa5ce7aea5fbeaed22dddd9fcfbbf5fe37c6e44e/ruff-0.11.11-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:a97c9babe1d4081037a90289986925726b802d180cca784ac8da2bbbc335f709", size = 12427955 }, - { url = "https://files.pythonhosted.org/packages/6e/e3/160488dbb11f18c8121cfd588e38095ba779ae208292765972f7732bfd95/ruff-0.11.11-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d8c4ddcbe8a19f59f57fd814b8b117d4fcea9bee7c0492e6cf5fdc22cfa563c8", size = 12069803 }, - { url = "https://files.pythonhosted.org/packages/ff/16/3b006a875f84b3d0bff24bef26b8b3591454903f6f754b3f0a318589dcc3/ruff-0.11.11-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6224076c344a7694c6fbbb70d4f2a7b730f6d47d2a9dc1e7f9d9bb583faf390b", size = 11242630 }, - { url = "https://files.pythonhosted.org/packages/65/0d/0338bb8ac0b97175c2d533e9c8cdc127166de7eb16d028a43c5ab9e75abd/ruff-0.11.11-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:882821fcdf7ae8db7a951df1903d9cb032bbe838852e5fc3c2b6c3ab54e39875", size = 11507310 }, - { url = "https://files.pythonhosted.org/packages/6f/bf/d7130eb26174ce9b02348b9f86d5874eafbf9f68e5152e15e8e0a392e4a3/ruff-0.11.11-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:dcec2d50756463d9df075a26a85a6affbc1b0148873da3997286caf1ce03cae1", size = 10441144 }, - { url = "https://files.pythonhosted.org/packages/b3/f3/4be2453b258c092ff7b1761987cf0749e70ca1340cd1bfb4def08a70e8d8/ruff-0.11.11-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:99c28505ecbaeb6594701a74e395b187ee083ee26478c1a795d35084d53ebd81", size = 10081987 }, - { url = "https://files.pythonhosted.org/packages/6c/6e/dfa4d2030c5b5c13db158219f2ec67bf333e8a7748dccf34cfa2a6ab9ebc/ruff-0.11.11-py3-none-musllinux_1_2_i686.whl", hash = "sha256:9263f9e5aa4ff1dec765e99810f1cc53f0c868c5329b69f13845f699fe74f639", size = 11073922 }, - { url = "https://files.pythonhosted.org/packages/ff/f4/f7b0b0c3d32b593a20ed8010fa2c1a01f2ce91e79dda6119fcc51d26c67b/ruff-0.11.11-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:64ac6f885e3ecb2fdbb71de2701d4e34526651f1e8503af8fb30d4915a3fe345", size = 11568537 }, - { url = "https://files.pythonhosted.org/packages/d2/46/0e892064d0adc18bcc81deed9aaa9942a27fd2cd9b1b7791111ce468c25f/ruff-0.11.11-py3-none-win32.whl", hash = "sha256:1adcb9a18802268aaa891ffb67b1c94cd70578f126637118e8099b8e4adcf112", size = 10536492 }, - { url = "https://files.pythonhosted.org/packages/1b/d9/232e79459850b9f327e9f1dc9c047a2a38a6f9689e1ec30024841fc4416c/ruff-0.11.11-py3-none-win_amd64.whl", hash = "sha256:748b4bb245f11e91a04a4ff0f96e386711df0a30412b9fe0c74d5bdc0e4a531f", size = 11612562 }, - { url = "https://files.pythonhosted.org/packages/ce/eb/09c132cff3cc30b2e7244191dcce69437352d6d6709c0adf374f3e6f476e/ruff-0.11.11-py3-none-win_arm64.whl", hash = "sha256:6c51f136c0364ab1b774767aa8b86331bd8e9d414e2d107db7a2189f35ea1f7b", size = 10735951 }, +version = "0.12.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/30/cd/01015eb5034605fd98d829c5839ec2c6b4582b479707f7c1c2af861e8258/ruff-0.12.5.tar.gz", hash = "sha256:b209db6102b66f13625940b7f8c7d0f18e20039bb7f6101fbdac935c9612057e", size = 5170722, upload-time = "2025-07-24T13:26:37.456Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d4/de/ad2f68f0798ff15dd8c0bcc2889558970d9a685b3249565a937cd820ad34/ruff-0.12.5-py3-none-linux_armv6l.whl", hash = "sha256:1de2c887e9dec6cb31fcb9948299de5b2db38144e66403b9660c9548a67abd92", size = 11819133, upload-time = "2025-07-24T13:25:56.369Z" }, + { url = "https://files.pythonhosted.org/packages/f8/fc/c6b65cd0e7fbe60f17e7ad619dca796aa49fbca34bb9bea5f8faf1ec2643/ruff-0.12.5-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:d1ab65e7d8152f519e7dea4de892317c9da7a108da1c56b6a3c1d5e7cf4c5e9a", size = 12501114, upload-time = "2025-07-24T13:25:59.471Z" }, + { url = "https://files.pythonhosted.org/packages/c5/de/c6bec1dce5ead9f9e6a946ea15e8d698c35f19edc508289d70a577921b30/ruff-0.12.5-py3-none-macosx_11_0_arm64.whl", hash = "sha256:962775ed5b27c7aa3fdc0d8f4d4433deae7659ef99ea20f783d666e77338b8cf", size = 11716873, upload-time = "2025-07-24T13:26:01.496Z" }, + { url = "https://files.pythonhosted.org/packages/a1/16/cf372d2ebe91e4eb5b82a2275c3acfa879e0566a7ac94d331ea37b765ac8/ruff-0.12.5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:73b4cae449597e7195a49eb1cdca89fd9fbb16140c7579899e87f4c85bf82f73", size = 11958829, upload-time = "2025-07-24T13:26:03.721Z" }, + { url = "https://files.pythonhosted.org/packages/25/bf/cd07e8f6a3a6ec746c62556b4c4b79eeb9b0328b362bb8431b7b8afd3856/ruff-0.12.5-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8b13489c3dc50de5e2d40110c0cce371e00186b880842e245186ca862bf9a1ac", size = 11626619, upload-time = "2025-07-24T13:26:06.118Z" }, + { url = "https://files.pythonhosted.org/packages/d8/c9/c2ccb3b8cbb5661ffda6925f81a13edbb786e623876141b04919d1128370/ruff-0.12.5-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f1504fea81461cf4841778b3ef0a078757602a3b3ea4b008feb1308cb3f23e08", size = 13221894, upload-time = "2025-07-24T13:26:08.292Z" }, + { url = "https://files.pythonhosted.org/packages/6b/58/68a5be2c8e5590ecdad922b2bcd5583af19ba648f7648f95c51c3c1eca81/ruff-0.12.5-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:c7da4129016ae26c32dfcbd5b671fe652b5ab7fc40095d80dcff78175e7eddd4", size = 14163909, upload-time = "2025-07-24T13:26:10.474Z" }, + { url = "https://files.pythonhosted.org/packages/bd/d1/ef6b19622009ba8386fdb792c0743f709cf917b0b2f1400589cbe4739a33/ruff-0.12.5-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ca972c80f7ebcfd8af75a0f18b17c42d9f1ef203d163669150453f50ca98ab7b", size = 13583652, upload-time = "2025-07-24T13:26:13.381Z" }, + { url = "https://files.pythonhosted.org/packages/62/e3/1c98c566fe6809a0c83751d825a03727f242cdbe0d142c9e292725585521/ruff-0.12.5-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8dbbf9f25dfb501f4237ae7501d6364b76a01341c6f1b2cd6764fe449124bb2a", size = 12700451, upload-time = "2025-07-24T13:26:15.488Z" }, + { url = "https://files.pythonhosted.org/packages/24/ff/96058f6506aac0fbc0d0fc0d60b0d0bd746240a0594657a2d94ad28033ba/ruff-0.12.5-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c47dea6ae39421851685141ba9734767f960113d51e83fd7bb9958d5be8763a", size = 12937465, upload-time = "2025-07-24T13:26:17.808Z" }, + { url = "https://files.pythonhosted.org/packages/eb/d3/68bc5e7ab96c94b3589d1789f2dd6dd4b27b263310019529ac9be1e8f31b/ruff-0.12.5-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:c5076aa0e61e30f848846f0265c873c249d4b558105b221be1828f9f79903dc5", size = 11771136, upload-time = "2025-07-24T13:26:20.422Z" }, + { url = "https://files.pythonhosted.org/packages/52/75/7356af30a14584981cabfefcf6106dea98cec9a7af4acb5daaf4b114845f/ruff-0.12.5-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:a5a4c7830dadd3d8c39b1cc85386e2c1e62344f20766be6f173c22fb5f72f293", size = 11601644, upload-time = "2025-07-24T13:26:22.928Z" }, + { url = "https://files.pythonhosted.org/packages/c2/67/91c71d27205871737cae11025ee2b098f512104e26ffd8656fd93d0ada0a/ruff-0.12.5-py3-none-musllinux_1_2_i686.whl", hash = "sha256:46699f73c2b5b137b9dc0fc1a190b43e35b008b398c6066ea1350cce6326adcb", size = 12478068, upload-time = "2025-07-24T13:26:26.134Z" }, + { url = "https://files.pythonhosted.org/packages/34/04/b6b00383cf2f48e8e78e14eb258942fdf2a9bf0287fbf5cdd398b749193a/ruff-0.12.5-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:5a655a0a0d396f0f072faafc18ebd59adde8ca85fb848dc1b0d9f024b9c4d3bb", size = 12991537, upload-time = "2025-07-24T13:26:28.533Z" }, + { url = "https://files.pythonhosted.org/packages/3e/b9/053d6445dc7544fb6594785056d8ece61daae7214859ada4a152ad56b6e0/ruff-0.12.5-py3-none-win32.whl", hash = "sha256:dfeb2627c459b0b78ca2bbdc38dd11cc9a0a88bf91db982058b26ce41714ffa9", size = 11751575, upload-time = "2025-07-24T13:26:30.835Z" }, + { url = "https://files.pythonhosted.org/packages/bc/0f/ab16e8259493137598b9149734fec2e06fdeda9837e6f634f5c4e35916da/ruff-0.12.5-py3-none-win_amd64.whl", hash = "sha256:ae0d90cf5f49466c954991b9d8b953bd093c32c27608e409ae3564c63c5306a5", size = 12882273, upload-time = "2025-07-24T13:26:32.929Z" }, + { url = "https://files.pythonhosted.org/packages/00/db/c376b0661c24cf770cb8815268190668ec1330eba8374a126ceef8c72d55/ruff-0.12.5-py3-none-win_arm64.whl", hash = "sha256:48cdbfc633de2c5c37d9f090ba3b352d1576b0015bfc3bc98eaf230275b7e805", size = 11951564, upload-time = "2025-07-24T13:26:34.994Z" }, ] [[package]] name = "s3transfer" -version = "0.13.0" +version = "0.13.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "botocore" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ed/5d/9dcc100abc6711e8247af5aa561fc07c4a046f72f659c3adea9a449e191a/s3transfer-0.13.0.tar.gz", hash = "sha256:f5e6db74eb7776a37208001113ea7aa97695368242b364d73e91c981ac522177", size = 150232 } +sdist = { url = "https://files.pythonhosted.org/packages/6d/05/d52bf1e65044b4e5e27d4e63e8d1579dbdec54fce685908ae09bc3720030/s3transfer-0.13.1.tar.gz", hash = "sha256:c3fdba22ba1bd367922f27ec8032d6a1cf5f10c934fb5d68cf60fd5a23d936cf", size = 150589, upload-time = "2025-07-18T19:22:42.31Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/18/17/22bf8155aa0ea2305eefa3a6402e040df7ebe512d1310165eda1e233c3f8/s3transfer-0.13.0-py3-none-any.whl", hash = "sha256:0148ef34d6dd964d0d8cf4311b2b21c474693e57c2e069ec708ce043d2b527be", size = 85152 }, + { url = "https://files.pythonhosted.org/packages/6d/4f/d073e09df851cfa251ef7840007d04db3293a0482ce607d2b993926089be/s3transfer-0.13.1-py3-none-any.whl", hash = "sha256:a981aa7429be23fe6dfc13e80e4020057cbab622b08c0315288758d67cabc724", size = 85308, upload-time = "2025-07-18T19:22:40.947Z" }, ] [[package]] name = "six" version = "1.17.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031 } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050 }, + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, ] [[package]] name = "typing-extensions" -version = "4.13.2" +version = "4.14.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f6/37/23083fcd6e35492953e8d2aaaa68b860eb422b34627b13f2ce3eb6106061/typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef", size = 106967 } +sdist = { url = "https://files.pythonhosted.org/packages/98/5a/da40306b885cc8c09109dc2e1abd358d5684b1425678151cdaed4731c822/typing_extensions-4.14.1.tar.gz", hash = "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36", size = 107673, upload-time = "2025-07-04T13:28:34.16Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8b/54/b1ae86c0973cc6f0210b53d508ca3641fb6d0c56823f288d108bc7ab3cc8/typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c", size = 45806 }, + { url = "https://files.pythonhosted.org/packages/b5/00/d631e67a838026495268c2f6884f3711a15a9a2a96cd244fdaea53b823fb/typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76", size = 43906, upload-time = "2025-07-04T13:28:32.743Z" }, ] [[package]] @@ -705,18 +718,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28", size = 75726 } +sdist = { url = "https://files.pythonhosted.org/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28", size = 75726, upload-time = "2025-05-21T18:55:23.885Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51", size = 14552 }, + { url = "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51", size = 14552, upload-time = "2025-05-21T18:55:22.152Z" }, ] [[package]] name = "urllib3" -version = "2.4.0" +version = "2.5.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8a/78/16493d9c386d8e60e442a35feac5e00f0913c0f4b7c217c11e8ec2ff53e0/urllib3-2.4.0.tar.gz", hash = "sha256:414bc6535b787febd7567804cc015fee39daab8ad86268f1310a9250697de466", size = 390672 } +sdist = { url = "https://files.pythonhosted.org/packages/15/22/9ee70a2574a4f4599c47dd506532914ce044817c7752a79b6a51286319bc/urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760", size = 393185, upload-time = "2025-06-18T14:07:41.644Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6b/11/cc635220681e93a0183390e26485430ca2c7b5f9d33b15c74c2861cb8091/urllib3-2.4.0-py3-none-any.whl", hash = "sha256:4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813", size = 128680 }, + { url = "https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc", size = 129795, upload-time = "2025-06-18T14:07:40.39Z" }, ] [[package]] @@ -726,67 +739,67 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markupsafe" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9f/69/83029f1f6300c5fb2471d621ab06f6ec6b3324685a2ce0f9777fd4a8b71e/werkzeug-3.1.3.tar.gz", hash = "sha256:60723ce945c19328679790e3282cc758aa4a6040e4bb330f53d30fa546d44746", size = 806925 } +sdist = { url = "https://files.pythonhosted.org/packages/9f/69/83029f1f6300c5fb2471d621ab06f6ec6b3324685a2ce0f9777fd4a8b71e/werkzeug-3.1.3.tar.gz", hash = "sha256:60723ce945c19328679790e3282cc758aa4a6040e4bb330f53d30fa546d44746", size = 806925, upload-time = "2024-11-08T15:52:18.093Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/52/24/ab44c871b0f07f491e5d2ad12c9bd7358e527510618cb1b803a88e986db1/werkzeug-3.1.3-py3-none-any.whl", hash = "sha256:54b78bf3716d19a65be4fceccc0d1d7b89e608834989dfae50ea87564639213e", size = 224498 }, + { url = "https://files.pythonhosted.org/packages/52/24/ab44c871b0f07f491e5d2ad12c9bd7358e527510618cb1b803a88e986db1/werkzeug-3.1.3-py3-none-any.whl", hash = "sha256:54b78bf3716d19a65be4fceccc0d1d7b89e608834989dfae50ea87564639213e", size = 224498, upload-time = "2024-11-08T15:52:16.132Z" }, ] [[package]] name = "wrapt" version = "1.17.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c3/fc/e91cc220803d7bc4db93fb02facd8461c37364151b8494762cc88b0fbcef/wrapt-1.17.2.tar.gz", hash = "sha256:41388e9d4d1522446fe79d3213196bd9e3b301a336965b9e27ca2788ebd122f3", size = 55531 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a1/bd/ab55f849fd1f9a58ed7ea47f5559ff09741b25f00c191231f9f059c83949/wrapt-1.17.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d5e2439eecc762cd85e7bd37161d4714aa03a33c5ba884e26c81559817ca0925", size = 53799 }, - { url = "https://files.pythonhosted.org/packages/53/18/75ddc64c3f63988f5a1d7e10fb204ffe5762bc663f8023f18ecaf31a332e/wrapt-1.17.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fc7cb4c1c744f8c05cd5f9438a3caa6ab94ce8344e952d7c45a8ed59dd88392", size = 38821 }, - { url = "https://files.pythonhosted.org/packages/48/2a/97928387d6ed1c1ebbfd4efc4133a0633546bec8481a2dd5ec961313a1c7/wrapt-1.17.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8fdbdb757d5390f7c675e558fd3186d590973244fab0c5fe63d373ade3e99d40", size = 38919 }, - { url = "https://files.pythonhosted.org/packages/73/54/3bfe5a1febbbccb7a2f77de47b989c0b85ed3a6a41614b104204a788c20e/wrapt-1.17.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bb1d0dbf99411f3d871deb6faa9aabb9d4e744d67dcaaa05399af89d847a91d", size = 88721 }, - { url = "https://files.pythonhosted.org/packages/25/cb/7262bc1b0300b4b64af50c2720ef958c2c1917525238d661c3e9a2b71b7b/wrapt-1.17.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d18a4865f46b8579d44e4fe1e2bcbc6472ad83d98e22a26c963d46e4c125ef0b", size = 80899 }, - { url = "https://files.pythonhosted.org/packages/2a/5a/04cde32b07a7431d4ed0553a76fdb7a61270e78c5fd5a603e190ac389f14/wrapt-1.17.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc570b5f14a79734437cb7b0500376b6b791153314986074486e0b0fa8d71d98", size = 89222 }, - { url = "https://files.pythonhosted.org/packages/09/28/2e45a4f4771fcfb109e244d5dbe54259e970362a311b67a965555ba65026/wrapt-1.17.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6d9187b01bebc3875bac9b087948a2bccefe464a7d8f627cf6e48b1bbae30f82", size = 86707 }, - { url = "https://files.pythonhosted.org/packages/c6/d2/dcb56bf5f32fcd4bd9aacc77b50a539abdd5b6536872413fd3f428b21bed/wrapt-1.17.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9e8659775f1adf02eb1e6f109751268e493c73716ca5761f8acb695e52a756ae", size = 79685 }, - { url = "https://files.pythonhosted.org/packages/80/4e/eb8b353e36711347893f502ce91c770b0b0929f8f0bed2670a6856e667a9/wrapt-1.17.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e8b2816ebef96d83657b56306152a93909a83f23994f4b30ad4573b00bd11bb9", size = 87567 }, - { url = "https://files.pythonhosted.org/packages/17/27/4fe749a54e7fae6e7146f1c7d914d28ef599dacd4416566c055564080fe2/wrapt-1.17.2-cp312-cp312-win32.whl", hash = "sha256:468090021f391fe0056ad3e807e3d9034e0fd01adcd3bdfba977b6fdf4213ea9", size = 36672 }, - { url = "https://files.pythonhosted.org/packages/15/06/1dbf478ea45c03e78a6a8c4be4fdc3c3bddea5c8de8a93bc971415e47f0f/wrapt-1.17.2-cp312-cp312-win_amd64.whl", hash = "sha256:ec89ed91f2fa8e3f52ae53cd3cf640d6feff92ba90d62236a81e4e563ac0e991", size = 38865 }, - { url = "https://files.pythonhosted.org/packages/ce/b9/0ffd557a92f3b11d4c5d5e0c5e4ad057bd9eb8586615cdaf901409920b14/wrapt-1.17.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:6ed6ffac43aecfe6d86ec5b74b06a5be33d5bb9243d055141e8cabb12aa08125", size = 53800 }, - { url = "https://files.pythonhosted.org/packages/c0/ef/8be90a0b7e73c32e550c73cfb2fa09db62234227ece47b0e80a05073b375/wrapt-1.17.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:35621ae4c00e056adb0009f8e86e28eb4a41a4bfa8f9bfa9fca7d343fe94f998", size = 38824 }, - { url = "https://files.pythonhosted.org/packages/36/89/0aae34c10fe524cce30fe5fc433210376bce94cf74d05b0d68344c8ba46e/wrapt-1.17.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a604bf7a053f8362d27eb9fefd2097f82600b856d5abe996d623babd067b1ab5", size = 38920 }, - { url = "https://files.pythonhosted.org/packages/3b/24/11c4510de906d77e0cfb5197f1b1445d4fec42c9a39ea853d482698ac681/wrapt-1.17.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cbabee4f083b6b4cd282f5b817a867cf0b1028c54d445b7ec7cfe6505057cf8", size = 88690 }, - { url = "https://files.pythonhosted.org/packages/71/d7/cfcf842291267bf455b3e266c0c29dcb675b5540ee8b50ba1699abf3af45/wrapt-1.17.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49703ce2ddc220df165bd2962f8e03b84c89fee2d65e1c24a7defff6f988f4d6", size = 80861 }, - { url = "https://files.pythonhosted.org/packages/d5/66/5d973e9f3e7370fd686fb47a9af3319418ed925c27d72ce16b791231576d/wrapt-1.17.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8112e52c5822fc4253f3901b676c55ddf288614dc7011634e2719718eaa187dc", size = 89174 }, - { url = "https://files.pythonhosted.org/packages/a7/d3/8e17bb70f6ae25dabc1aaf990f86824e4fd98ee9cadf197054e068500d27/wrapt-1.17.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9fee687dce376205d9a494e9c121e27183b2a3df18037f89d69bd7b35bcf59e2", size = 86721 }, - { url = "https://files.pythonhosted.org/packages/6f/54/f170dfb278fe1c30d0ff864513cff526d624ab8de3254b20abb9cffedc24/wrapt-1.17.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:18983c537e04d11cf027fbb60a1e8dfd5190e2b60cc27bc0808e653e7b218d1b", size = 79763 }, - { url = "https://files.pythonhosted.org/packages/4a/98/de07243751f1c4a9b15c76019250210dd3486ce098c3d80d5f729cba029c/wrapt-1.17.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:703919b1633412ab54bcf920ab388735832fdcb9f9a00ae49387f0fe67dad504", size = 87585 }, - { url = "https://files.pythonhosted.org/packages/f9/f0/13925f4bd6548013038cdeb11ee2cbd4e37c30f8bfd5db9e5a2a370d6e20/wrapt-1.17.2-cp313-cp313-win32.whl", hash = "sha256:abbb9e76177c35d4e8568e58650aa6926040d6a9f6f03435b7a522bf1c487f9a", size = 36676 }, - { url = "https://files.pythonhosted.org/packages/bf/ae/743f16ef8c2e3628df3ddfd652b7d4c555d12c84b53f3d8218498f4ade9b/wrapt-1.17.2-cp313-cp313-win_amd64.whl", hash = "sha256:69606d7bb691b50a4240ce6b22ebb319c1cfb164e5f6569835058196e0f3a845", size = 38871 }, - { url = "https://files.pythonhosted.org/packages/3d/bc/30f903f891a82d402ffb5fda27ec1d621cc97cb74c16fea0b6141f1d4e87/wrapt-1.17.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:4a721d3c943dae44f8e243b380cb645a709ba5bd35d3ad27bc2ed947e9c68192", size = 56312 }, - { url = "https://files.pythonhosted.org/packages/8a/04/c97273eb491b5f1c918857cd26f314b74fc9b29224521f5b83f872253725/wrapt-1.17.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:766d8bbefcb9e00c3ac3b000d9acc51f1b399513f44d77dfe0eb026ad7c9a19b", size = 40062 }, - { url = "https://files.pythonhosted.org/packages/4e/ca/3b7afa1eae3a9e7fefe499db9b96813f41828b9fdb016ee836c4c379dadb/wrapt-1.17.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e496a8ce2c256da1eb98bd15803a79bee00fc351f5dfb9ea82594a3f058309e0", size = 40155 }, - { url = "https://files.pythonhosted.org/packages/89/be/7c1baed43290775cb9030c774bc53c860db140397047cc49aedaf0a15477/wrapt-1.17.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d615e4fe22f4ad3528448c193b218e077656ca9ccb22ce2cb20db730f8d306", size = 113471 }, - { url = "https://files.pythonhosted.org/packages/32/98/4ed894cf012b6d6aae5f5cc974006bdeb92f0241775addad3f8cd6ab71c8/wrapt-1.17.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a5aaeff38654462bc4b09023918b7f21790efb807f54c000a39d41d69cf552cb", size = 101208 }, - { url = "https://files.pythonhosted.org/packages/ea/fd/0c30f2301ca94e655e5e057012e83284ce8c545df7661a78d8bfca2fac7a/wrapt-1.17.2-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a7d15bbd2bc99e92e39f49a04653062ee6085c0e18b3b7512a4f2fe91f2d681", size = 109339 }, - { url = "https://files.pythonhosted.org/packages/75/56/05d000de894c4cfcb84bcd6b1df6214297b8089a7bd324c21a4765e49b14/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:e3890b508a23299083e065f435a492b5435eba6e304a7114d2f919d400888cc6", size = 110232 }, - { url = "https://files.pythonhosted.org/packages/53/f8/c3f6b2cf9b9277fb0813418e1503e68414cd036b3b099c823379c9575e6d/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:8c8b293cd65ad716d13d8dd3624e42e5a19cc2a2f1acc74b30c2c13f15cb61a6", size = 100476 }, - { url = "https://files.pythonhosted.org/packages/a7/b1/0bb11e29aa5139d90b770ebbfa167267b1fc548d2302c30c8f7572851738/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4c82b8785d98cdd9fed4cac84d765d234ed3251bd6afe34cb7ac523cb93e8b4f", size = 106377 }, - { url = "https://files.pythonhosted.org/packages/6a/e1/0122853035b40b3f333bbb25f1939fc1045e21dd518f7f0922b60c156f7c/wrapt-1.17.2-cp313-cp313t-win32.whl", hash = "sha256:13e6afb7fe71fe7485a4550a8844cc9ffbe263c0f1a1eea569bc7091d4898555", size = 37986 }, - { url = "https://files.pythonhosted.org/packages/09/5e/1655cf481e079c1f22d0cabdd4e51733679932718dc23bf2db175f329b76/wrapt-1.17.2-cp313-cp313t-win_amd64.whl", hash = "sha256:eaf675418ed6b3b31c7a989fd007fa7c3be66ce14e5c3b27336383604c9da85c", size = 40750 }, - { url = "https://files.pythonhosted.org/packages/2d/82/f56956041adef78f849db6b289b282e72b55ab8045a75abad81898c28d19/wrapt-1.17.2-py3-none-any.whl", hash = "sha256:b18f2d1533a71f069c7f82d524a52599053d4c7166e9dd374ae2136b7f40f7c8", size = 23594 }, +sdist = { url = "https://files.pythonhosted.org/packages/c3/fc/e91cc220803d7bc4db93fb02facd8461c37364151b8494762cc88b0fbcef/wrapt-1.17.2.tar.gz", hash = "sha256:41388e9d4d1522446fe79d3213196bd9e3b301a336965b9e27ca2788ebd122f3", size = 55531, upload-time = "2025-01-14T10:35:45.465Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a1/bd/ab55f849fd1f9a58ed7ea47f5559ff09741b25f00c191231f9f059c83949/wrapt-1.17.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d5e2439eecc762cd85e7bd37161d4714aa03a33c5ba884e26c81559817ca0925", size = 53799, upload-time = "2025-01-14T10:33:57.4Z" }, + { url = "https://files.pythonhosted.org/packages/53/18/75ddc64c3f63988f5a1d7e10fb204ffe5762bc663f8023f18ecaf31a332e/wrapt-1.17.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fc7cb4c1c744f8c05cd5f9438a3caa6ab94ce8344e952d7c45a8ed59dd88392", size = 38821, upload-time = "2025-01-14T10:33:59.334Z" }, + { url = "https://files.pythonhosted.org/packages/48/2a/97928387d6ed1c1ebbfd4efc4133a0633546bec8481a2dd5ec961313a1c7/wrapt-1.17.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8fdbdb757d5390f7c675e558fd3186d590973244fab0c5fe63d373ade3e99d40", size = 38919, upload-time = "2025-01-14T10:34:04.093Z" }, + { url = "https://files.pythonhosted.org/packages/73/54/3bfe5a1febbbccb7a2f77de47b989c0b85ed3a6a41614b104204a788c20e/wrapt-1.17.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bb1d0dbf99411f3d871deb6faa9aabb9d4e744d67dcaaa05399af89d847a91d", size = 88721, upload-time = "2025-01-14T10:34:07.163Z" }, + { url = "https://files.pythonhosted.org/packages/25/cb/7262bc1b0300b4b64af50c2720ef958c2c1917525238d661c3e9a2b71b7b/wrapt-1.17.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d18a4865f46b8579d44e4fe1e2bcbc6472ad83d98e22a26c963d46e4c125ef0b", size = 80899, upload-time = "2025-01-14T10:34:09.82Z" }, + { url = "https://files.pythonhosted.org/packages/2a/5a/04cde32b07a7431d4ed0553a76fdb7a61270e78c5fd5a603e190ac389f14/wrapt-1.17.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc570b5f14a79734437cb7b0500376b6b791153314986074486e0b0fa8d71d98", size = 89222, upload-time = "2025-01-14T10:34:11.258Z" }, + { url = "https://files.pythonhosted.org/packages/09/28/2e45a4f4771fcfb109e244d5dbe54259e970362a311b67a965555ba65026/wrapt-1.17.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6d9187b01bebc3875bac9b087948a2bccefe464a7d8f627cf6e48b1bbae30f82", size = 86707, upload-time = "2025-01-14T10:34:12.49Z" }, + { url = "https://files.pythonhosted.org/packages/c6/d2/dcb56bf5f32fcd4bd9aacc77b50a539abdd5b6536872413fd3f428b21bed/wrapt-1.17.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9e8659775f1adf02eb1e6f109751268e493c73716ca5761f8acb695e52a756ae", size = 79685, upload-time = "2025-01-14T10:34:15.043Z" }, + { url = "https://files.pythonhosted.org/packages/80/4e/eb8b353e36711347893f502ce91c770b0b0929f8f0bed2670a6856e667a9/wrapt-1.17.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e8b2816ebef96d83657b56306152a93909a83f23994f4b30ad4573b00bd11bb9", size = 87567, upload-time = "2025-01-14T10:34:16.563Z" }, + { url = "https://files.pythonhosted.org/packages/17/27/4fe749a54e7fae6e7146f1c7d914d28ef599dacd4416566c055564080fe2/wrapt-1.17.2-cp312-cp312-win32.whl", hash = "sha256:468090021f391fe0056ad3e807e3d9034e0fd01adcd3bdfba977b6fdf4213ea9", size = 36672, upload-time = "2025-01-14T10:34:17.727Z" }, + { url = "https://files.pythonhosted.org/packages/15/06/1dbf478ea45c03e78a6a8c4be4fdc3c3bddea5c8de8a93bc971415e47f0f/wrapt-1.17.2-cp312-cp312-win_amd64.whl", hash = "sha256:ec89ed91f2fa8e3f52ae53cd3cf640d6feff92ba90d62236a81e4e563ac0e991", size = 38865, upload-time = "2025-01-14T10:34:19.577Z" }, + { url = "https://files.pythonhosted.org/packages/ce/b9/0ffd557a92f3b11d4c5d5e0c5e4ad057bd9eb8586615cdaf901409920b14/wrapt-1.17.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:6ed6ffac43aecfe6d86ec5b74b06a5be33d5bb9243d055141e8cabb12aa08125", size = 53800, upload-time = "2025-01-14T10:34:21.571Z" }, + { url = "https://files.pythonhosted.org/packages/c0/ef/8be90a0b7e73c32e550c73cfb2fa09db62234227ece47b0e80a05073b375/wrapt-1.17.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:35621ae4c00e056adb0009f8e86e28eb4a41a4bfa8f9bfa9fca7d343fe94f998", size = 38824, upload-time = "2025-01-14T10:34:22.999Z" }, + { url = "https://files.pythonhosted.org/packages/36/89/0aae34c10fe524cce30fe5fc433210376bce94cf74d05b0d68344c8ba46e/wrapt-1.17.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a604bf7a053f8362d27eb9fefd2097f82600b856d5abe996d623babd067b1ab5", size = 38920, upload-time = "2025-01-14T10:34:25.386Z" }, + { url = "https://files.pythonhosted.org/packages/3b/24/11c4510de906d77e0cfb5197f1b1445d4fec42c9a39ea853d482698ac681/wrapt-1.17.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cbabee4f083b6b4cd282f5b817a867cf0b1028c54d445b7ec7cfe6505057cf8", size = 88690, upload-time = "2025-01-14T10:34:28.058Z" }, + { url = "https://files.pythonhosted.org/packages/71/d7/cfcf842291267bf455b3e266c0c29dcb675b5540ee8b50ba1699abf3af45/wrapt-1.17.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49703ce2ddc220df165bd2962f8e03b84c89fee2d65e1c24a7defff6f988f4d6", size = 80861, upload-time = "2025-01-14T10:34:29.167Z" }, + { url = "https://files.pythonhosted.org/packages/d5/66/5d973e9f3e7370fd686fb47a9af3319418ed925c27d72ce16b791231576d/wrapt-1.17.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8112e52c5822fc4253f3901b676c55ddf288614dc7011634e2719718eaa187dc", size = 89174, upload-time = "2025-01-14T10:34:31.702Z" }, + { url = "https://files.pythonhosted.org/packages/a7/d3/8e17bb70f6ae25dabc1aaf990f86824e4fd98ee9cadf197054e068500d27/wrapt-1.17.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9fee687dce376205d9a494e9c121e27183b2a3df18037f89d69bd7b35bcf59e2", size = 86721, upload-time = "2025-01-14T10:34:32.91Z" }, + { url = "https://files.pythonhosted.org/packages/6f/54/f170dfb278fe1c30d0ff864513cff526d624ab8de3254b20abb9cffedc24/wrapt-1.17.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:18983c537e04d11cf027fbb60a1e8dfd5190e2b60cc27bc0808e653e7b218d1b", size = 79763, upload-time = "2025-01-14T10:34:34.903Z" }, + { url = "https://files.pythonhosted.org/packages/4a/98/de07243751f1c4a9b15c76019250210dd3486ce098c3d80d5f729cba029c/wrapt-1.17.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:703919b1633412ab54bcf920ab388735832fdcb9f9a00ae49387f0fe67dad504", size = 87585, upload-time = "2025-01-14T10:34:36.13Z" }, + { url = "https://files.pythonhosted.org/packages/f9/f0/13925f4bd6548013038cdeb11ee2cbd4e37c30f8bfd5db9e5a2a370d6e20/wrapt-1.17.2-cp313-cp313-win32.whl", hash = "sha256:abbb9e76177c35d4e8568e58650aa6926040d6a9f6f03435b7a522bf1c487f9a", size = 36676, upload-time = "2025-01-14T10:34:37.962Z" }, + { url = "https://files.pythonhosted.org/packages/bf/ae/743f16ef8c2e3628df3ddfd652b7d4c555d12c84b53f3d8218498f4ade9b/wrapt-1.17.2-cp313-cp313-win_amd64.whl", hash = "sha256:69606d7bb691b50a4240ce6b22ebb319c1cfb164e5f6569835058196e0f3a845", size = 38871, upload-time = "2025-01-14T10:34:39.13Z" }, + { url = "https://files.pythonhosted.org/packages/3d/bc/30f903f891a82d402ffb5fda27ec1d621cc97cb74c16fea0b6141f1d4e87/wrapt-1.17.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:4a721d3c943dae44f8e243b380cb645a709ba5bd35d3ad27bc2ed947e9c68192", size = 56312, upload-time = "2025-01-14T10:34:40.604Z" }, + { url = "https://files.pythonhosted.org/packages/8a/04/c97273eb491b5f1c918857cd26f314b74fc9b29224521f5b83f872253725/wrapt-1.17.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:766d8bbefcb9e00c3ac3b000d9acc51f1b399513f44d77dfe0eb026ad7c9a19b", size = 40062, upload-time = "2025-01-14T10:34:45.011Z" }, + { url = "https://files.pythonhosted.org/packages/4e/ca/3b7afa1eae3a9e7fefe499db9b96813f41828b9fdb016ee836c4c379dadb/wrapt-1.17.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e496a8ce2c256da1eb98bd15803a79bee00fc351f5dfb9ea82594a3f058309e0", size = 40155, upload-time = "2025-01-14T10:34:47.25Z" }, + { url = "https://files.pythonhosted.org/packages/89/be/7c1baed43290775cb9030c774bc53c860db140397047cc49aedaf0a15477/wrapt-1.17.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d615e4fe22f4ad3528448c193b218e077656ca9ccb22ce2cb20db730f8d306", size = 113471, upload-time = "2025-01-14T10:34:50.934Z" }, + { url = "https://files.pythonhosted.org/packages/32/98/4ed894cf012b6d6aae5f5cc974006bdeb92f0241775addad3f8cd6ab71c8/wrapt-1.17.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a5aaeff38654462bc4b09023918b7f21790efb807f54c000a39d41d69cf552cb", size = 101208, upload-time = "2025-01-14T10:34:52.297Z" }, + { url = "https://files.pythonhosted.org/packages/ea/fd/0c30f2301ca94e655e5e057012e83284ce8c545df7661a78d8bfca2fac7a/wrapt-1.17.2-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a7d15bbd2bc99e92e39f49a04653062ee6085c0e18b3b7512a4f2fe91f2d681", size = 109339, upload-time = "2025-01-14T10:34:53.489Z" }, + { url = "https://files.pythonhosted.org/packages/75/56/05d000de894c4cfcb84bcd6b1df6214297b8089a7bd324c21a4765e49b14/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:e3890b508a23299083e065f435a492b5435eba6e304a7114d2f919d400888cc6", size = 110232, upload-time = "2025-01-14T10:34:55.327Z" }, + { url = "https://files.pythonhosted.org/packages/53/f8/c3f6b2cf9b9277fb0813418e1503e68414cd036b3b099c823379c9575e6d/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:8c8b293cd65ad716d13d8dd3624e42e5a19cc2a2f1acc74b30c2c13f15cb61a6", size = 100476, upload-time = "2025-01-14T10:34:58.055Z" }, + { url = "https://files.pythonhosted.org/packages/a7/b1/0bb11e29aa5139d90b770ebbfa167267b1fc548d2302c30c8f7572851738/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4c82b8785d98cdd9fed4cac84d765d234ed3251bd6afe34cb7ac523cb93e8b4f", size = 106377, upload-time = "2025-01-14T10:34:59.3Z" }, + { url = "https://files.pythonhosted.org/packages/6a/e1/0122853035b40b3f333bbb25f1939fc1045e21dd518f7f0922b60c156f7c/wrapt-1.17.2-cp313-cp313t-win32.whl", hash = "sha256:13e6afb7fe71fe7485a4550a8844cc9ffbe263c0f1a1eea569bc7091d4898555", size = 37986, upload-time = "2025-01-14T10:35:00.498Z" }, + { url = "https://files.pythonhosted.org/packages/09/5e/1655cf481e079c1f22d0cabdd4e51733679932718dc23bf2db175f329b76/wrapt-1.17.2-cp313-cp313t-win_amd64.whl", hash = "sha256:eaf675418ed6b3b31c7a989fd007fa7c3be66ce14e5c3b27336383604c9da85c", size = 40750, upload-time = "2025-01-14T10:35:03.378Z" }, + { url = "https://files.pythonhosted.org/packages/2d/82/f56956041adef78f849db6b289b282e72b55ab8045a75abad81898c28d19/wrapt-1.17.2-py3-none-any.whl", hash = "sha256:b18f2d1533a71f069c7f82d524a52599053d4c7166e9dd374ae2136b7f40f7c8", size = 23594, upload-time = "2025-01-14T10:35:44.018Z" }, ] [[package]] name = "xmltodict" version = "0.14.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/50/05/51dcca9a9bf5e1bce52582683ce50980bcadbc4fa5143b9f2b19ab99958f/xmltodict-0.14.2.tar.gz", hash = "sha256:201e7c28bb210e374999d1dde6382923ab0ed1a8a5faeece48ab525b7810a553", size = 51942 } +sdist = { url = "https://files.pythonhosted.org/packages/50/05/51dcca9a9bf5e1bce52582683ce50980bcadbc4fa5143b9f2b19ab99958f/xmltodict-0.14.2.tar.gz", hash = "sha256:201e7c28bb210e374999d1dde6382923ab0ed1a8a5faeece48ab525b7810a553", size = 51942, upload-time = "2024-10-16T06:10:29.683Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d6/45/fc303eb433e8a2a271739c98e953728422fa61a3c1f36077a49e395c972e/xmltodict-0.14.2-py2.py3-none-any.whl", hash = "sha256:20cc7d723ed729276e808f26fb6b3599f786cbc37e06c65e192ba77c40f20aac", size = 9981 }, + { url = "https://files.pythonhosted.org/packages/d6/45/fc303eb433e8a2a271739c98e953728422fa61a3c1f36077a49e395c972e/xmltodict-0.14.2-py2.py3-none-any.whl", hash = "sha256:20cc7d723ed729276e808f26fb6b3599f786cbc37e06c65e192ba77c40f20aac", size = 9981, upload-time = "2024-10-16T06:10:27.649Z" }, ] [[package]] name = "zipp" -version = "3.22.0" +version = "3.23.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/12/b6/7b3d16792fdf94f146bed92be90b4eb4563569eca91513c8609aebf0c167/zipp-3.22.0.tar.gz", hash = "sha256:dd2f28c3ce4bc67507bfd3781d21b7bb2be31103b51a4553ad7d90b84e57ace5", size = 25257 } +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" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ad/da/f64669af4cae46f17b90798a827519ce3737d31dbafad65d391e49643dc4/zipp-3.22.0-py3-none-any.whl", hash = "sha256:fe208f65f2aca48b81f9e6fd8cf7b8b32c26375266b009b413d45306b6148343", size = 9796 }, + { 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" }, ] diff --git a/unicorn_contracts/pyproject.toml b/unicorn_contracts/pyproject.toml index 6b3a27b..8a9311f 100644 --- a/unicorn_contracts/pyproject.toml +++ b/unicorn_contracts/pyproject.toml @@ -35,8 +35,4 @@ packages = ["contracts_service"] minversion = "7.0" addopts = "-ra -vv -W ignore::UserWarning" testpaths = ["tests/unit", "tests/integration"] -pythonpath = ["."] - -[build-system] -requires = ["uv_build"] -build-backend = "uv_build" \ No newline at end of file +pythonpath = ["."] \ No newline at end of file diff --git a/unicorn_contracts/uv.lock b/unicorn_contracts/uv.lock index 5b9c5e7..18ac214 100644 --- a/unicorn_contracts/uv.lock +++ b/unicorn_contracts/uv.lock @@ -1,32 +1,32 @@ version = 1 -revision = 1 +revision = 2 requires-python = ">=3.12" [[package]] name = "annotated-types" version = "0.7.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081 } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload-time = "2024-05-20T21:33:25.928Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643 }, + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" }, ] [[package]] name = "arnparse" version = "0.0.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bd/42/949284e998282b167e273872fa9c39b06d41a6055163c30aa2daaeee76a0/arnparse-0.0.2.tar.gz", hash = "sha256:cb87f17200d07121108a9085d4a09cc69a55582647776b9a917b0b1f279db8f8", size = 2677 } +sdist = { url = "https://files.pythonhosted.org/packages/bd/42/949284e998282b167e273872fa9c39b06d41a6055163c30aa2daaeee76a0/arnparse-0.0.2.tar.gz", hash = "sha256:cb87f17200d07121108a9085d4a09cc69a55582647776b9a917b0b1f279db8f8", size = 2677, upload-time = "2019-03-12T21:17:04.586Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/57/6f/630bedeb32964e99661990811a66389201b62c047b35c17e332dad9be2a3/arnparse-0.0.2-py2.py3-none-any.whl", hash = "sha256:b0906734e4b8f19e39b1e32944c6cd6274b6da90c066a83882ac7a11d27553e0", size = 2904 }, + { url = "https://files.pythonhosted.org/packages/57/6f/630bedeb32964e99661990811a66389201b62c047b35c17e332dad9be2a3/arnparse-0.0.2-py2.py3-none-any.whl", hash = "sha256:b0906734e4b8f19e39b1e32944c6cd6274b6da90c066a83882ac7a11d27553e0", size = 2904, upload-time = "2019-03-12T21:17:03.039Z" }, ] [[package]] name = "attrs" version = "25.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b", size = 812032 } +sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b", size = 812032, upload-time = "2025-03-13T11:10:22.779Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815 }, + { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815, upload-time = "2025-03-13T11:10:21.14Z" }, ] [[package]] @@ -39,9 +39,9 @@ dependencies = [ { name = "cryptography" }, { name = "wrapt" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/45/ff/fefbcc1cee829f3ab188dbcb5069862f61b64ed82a6205314f1ab7bb90e6/aws-encryption-sdk-4.0.1.tar.gz", hash = "sha256:7320dc4cf8d8d5a9b4c88a343be93835da18756e05308d3536554be0ca2889a5", size = 260219 } +sdist = { url = "https://files.pythonhosted.org/packages/45/ff/fefbcc1cee829f3ab188dbcb5069862f61b64ed82a6205314f1ab7bb90e6/aws-encryption-sdk-4.0.1.tar.gz", hash = "sha256:7320dc4cf8d8d5a9b4c88a343be93835da18756e05308d3536554be0ca2889a5", size = 260219, upload-time = "2025-03-27T17:24:54.669Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/66/a5/82956e2111b169c644633212da2a5f84dd9d953b9dd146ccfccfb8a46290/aws_encryption_sdk-4.0.1-py2.py3-none-any.whl", hash = "sha256:5c2ca9a207e1732542a1370ac7efd630ab6e04d05f98e68badf20927eb95ed1d", size = 99127 }, + { url = "https://files.pythonhosted.org/packages/66/a5/82956e2111b169c644633212da2a5f84dd9d953b9dd146ccfccfb8a46290/aws_encryption_sdk-4.0.1-py2.py3-none-any.whl", hash = "sha256:5c2ca9a207e1732542a1370ac7efd630ab6e04d05f98e68badf20927eb95ed1d", size = 99127, upload-time = "2025-03-27T17:24:50.903Z" }, ] [[package]] @@ -52,9 +52,9 @@ dependencies = [ { name = "jmespath" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fd/2b/068efd467c0866e2272c5de7525ddb02ff4e694f71245c8d2a83d4948f23/aws_lambda_powertools-3.13.0.tar.gz", hash = "sha256:99dc11ac6eb81564f599fdd85ba79069f7740ae3481c99bca2cee8abb7c95543", size = 672664 } +sdist = { url = "https://files.pythonhosted.org/packages/fd/2b/068efd467c0866e2272c5de7525ddb02ff4e694f71245c8d2a83d4948f23/aws_lambda_powertools-3.13.0.tar.gz", hash = "sha256:99dc11ac6eb81564f599fdd85ba79069f7740ae3481c99bca2cee8abb7c95543", size = 672664, upload-time = "2025-05-20T07:35:30.254Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/98/cd/2241ff877528c66ee11ea636684c4242ceeadb6459a33b08507a40151414/aws_lambda_powertools-3.13.0-py3-none-any.whl", hash = "sha256:9df045f4c3ff944176655813dbff8c1160e056babf5e6d71d4e18c0003818f2e", size = 802546 }, + { url = "https://files.pythonhosted.org/packages/98/cd/2241ff877528c66ee11ea636684c4242ceeadb6459a33b08507a40151414/aws_lambda_powertools-3.13.0-py3-none-any.whl", hash = "sha256:9df045f4c3ff944176655813dbff8c1160e056babf5e6d71d4e18c0003818f2e", size = 802546, upload-time = "2025-05-20T07:35:27.767Z" }, ] [package.optional-dependencies] @@ -78,9 +78,9 @@ dependencies = [ { name = "botocore" }, { name = "wrapt" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e0/6c/8e7fb2a45f20afc5c19d52807b560793fb48b0feca1de7de116b62a7893e/aws_xray_sdk-2.14.0.tar.gz", hash = "sha256:aab843c331af9ab9ba5cefb3a303832a19db186140894a523edafc024cc0493c", size = 93976 } +sdist = { url = "https://files.pythonhosted.org/packages/e0/6c/8e7fb2a45f20afc5c19d52807b560793fb48b0feca1de7de116b62a7893e/aws_xray_sdk-2.14.0.tar.gz", hash = "sha256:aab843c331af9ab9ba5cefb3a303832a19db186140894a523edafc024cc0493c", size = 93976, upload-time = "2024-06-04T22:11:38.124Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/41/69/b417833a8926fa5491e5346d7c233bf7d8a9b12ba1f4ef41ccea2494000c/aws_xray_sdk-2.14.0-py2.py3-none-any.whl", hash = "sha256:cfbe6feea3d26613a2a869d14c9246a844285c97087ad8f296f901633554ad94", size = 101922 }, + { url = "https://files.pythonhosted.org/packages/41/69/b417833a8926fa5491e5346d7c233bf7d8a9b12ba1f4ef41ccea2494000c/aws_xray_sdk-2.14.0-py2.py3-none-any.whl", hash = "sha256:cfbe6feea3d26613a2a869d14c9246a844285c97087ad8f296f901633554ad94", size = 101922, upload-time = "2024-06-04T22:12:25.729Z" }, ] [[package]] @@ -92,9 +92,9 @@ dependencies = [ { name = "jmespath" }, { name = "s3transfer" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/83/7d/cdd55376fe9b9102a843649cbd9cba38d49bfd570a89042c090550b23bf5/boto3-1.38.24.tar.gz", hash = "sha256:abdb8c760543e9c22026320e62e2934762b0c4ac4f42e8ea2a756f2d489b3135", size = 111854 } +sdist = { url = "https://files.pythonhosted.org/packages/83/7d/cdd55376fe9b9102a843649cbd9cba38d49bfd570a89042c090550b23bf5/boto3-1.38.24.tar.gz", hash = "sha256:abdb8c760543e9c22026320e62e2934762b0c4ac4f42e8ea2a756f2d489b3135", size = 111854, upload-time = "2025-05-27T21:26:22.343Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2e/cc/78cf9f63bfa84d3f0ac4d5a527a3d141ede40554fd4718ec2634dee08683/boto3-1.38.24-py3-none-any.whl", hash = "sha256:1f95ec3ac88ae6381fa0409e4c2ad0a41f0caf5fd6d8ef45a9525406a3f58b18", size = 139938 }, + { url = "https://files.pythonhosted.org/packages/2e/cc/78cf9f63bfa84d3f0ac4d5a527a3d141ede40554fd4718ec2634dee08683/boto3-1.38.24-py3-none-any.whl", hash = "sha256:1f95ec3ac88ae6381fa0409e4c2ad0a41f0caf5fd6d8ef45a9525406a3f58b18", size = 139938, upload-time = "2025-05-27T21:26:18.601Z" }, ] [[package]] @@ -106,18 +106,18 @@ dependencies = [ { name = "python-dateutil" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/95/1b/1e38f24245e1b0461470176335bc0a443050459e9e64a0d881244a0a8a5e/botocore-1.38.24.tar.gz", hash = "sha256:43563d5c2dfd56ebbcd9e25f482fc45000bfaec5966b26c77b331bd340c46376", size = 13909191 } +sdist = { url = "https://files.pythonhosted.org/packages/95/1b/1e38f24245e1b0461470176335bc0a443050459e9e64a0d881244a0a8a5e/botocore-1.38.24.tar.gz", hash = "sha256:43563d5c2dfd56ebbcd9e25f482fc45000bfaec5966b26c77b331bd340c46376", size = 13909191, upload-time = "2025-05-27T21:26:08.818Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6c/58/197221be8faf51ae4fb72c227601db468ef7981c107efbff27d794445942/botocore-1.38.24-py3-none-any.whl", hash = "sha256:5901667b96d3a8603479879ab097560216cdc4c2918d433fc6509555d0ada29c", size = 13570245 }, + { url = "https://files.pythonhosted.org/packages/6c/58/197221be8faf51ae4fb72c227601db468ef7981c107efbff27d794445942/botocore-1.38.24-py3-none-any.whl", hash = "sha256:5901667b96d3a8603479879ab097560216cdc4c2918d433fc6509555d0ada29c", size = 13570245, upload-time = "2025-05-27T21:26:04.669Z" }, ] [[package]] name = "certifi" version = "2025.4.26" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e8/9e/c05b3920a3b7d20d3d3310465f50348e5b3694f4f88c6daf736eef3024c4/certifi-2025.4.26.tar.gz", hash = "sha256:0a816057ea3cdefcef70270d2c515e4506bbc954f417fa5ade2021213bb8f0c6", size = 160705 } +sdist = { url = "https://files.pythonhosted.org/packages/e8/9e/c05b3920a3b7d20d3d3310465f50348e5b3694f4f88c6daf736eef3024c4/certifi-2025.4.26.tar.gz", hash = "sha256:0a816057ea3cdefcef70270d2c515e4506bbc954f417fa5ade2021213bb8f0c6", size = 160705, upload-time = "2025-04-26T02:12:29.51Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/4a/7e/3db2bd1b1f9e95f7cddca6d6e75e2f2bd9f51b1246e546d88addca0106bd/certifi-2025.4.26-py3-none-any.whl", hash = "sha256:30350364dfe371162649852c63336a15c70c6510c2ad5015b21c2345311805f3", size = 159618 }, + { url = "https://files.pythonhosted.org/packages/4a/7e/3db2bd1b1f9e95f7cddca6d6e75e2f2bd9f51b1246e546d88addca0106bd/certifi-2025.4.26-py3-none-any.whl", hash = "sha256:30350364dfe371162649852c63336a15c70c6510c2ad5015b21c2345311805f3", size = 159618, upload-time = "2025-04-26T02:12:27.662Z" }, ] [[package]] @@ -127,80 +127,80 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pycparser" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5a/84/e94227139ee5fb4d600a7a4927f322e1d4aea6fdc50bd3fca8493caba23f/cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4", size = 183178 }, - { url = "https://files.pythonhosted.org/packages/da/ee/fb72c2b48656111c4ef27f0f91da355e130a923473bf5ee75c5643d00cca/cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c", size = 178840 }, - { url = "https://files.pythonhosted.org/packages/cc/b6/db007700f67d151abadf508cbfd6a1884f57eab90b1bb985c4c8c02b0f28/cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36", size = 454803 }, - { url = "https://files.pythonhosted.org/packages/1a/df/f8d151540d8c200eb1c6fba8cd0dfd40904f1b0682ea705c36e6c2e97ab3/cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5", size = 478850 }, - { url = "https://files.pythonhosted.org/packages/28/c0/b31116332a547fd2677ae5b78a2ef662dfc8023d67f41b2a83f7c2aa78b1/cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff", size = 485729 }, - { url = "https://files.pythonhosted.org/packages/91/2b/9a1ddfa5c7f13cab007a2c9cc295b70fbbda7cb10a286aa6810338e60ea1/cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99", size = 471256 }, - { url = "https://files.pythonhosted.org/packages/b2/d5/da47df7004cb17e4955df6a43d14b3b4ae77737dff8bf7f8f333196717bf/cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93", size = 479424 }, - { url = "https://files.pythonhosted.org/packages/0b/ac/2a28bcf513e93a219c8a4e8e125534f4f6db03e3179ba1c45e949b76212c/cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3", size = 484568 }, - { url = "https://files.pythonhosted.org/packages/d4/38/ca8a4f639065f14ae0f1d9751e70447a261f1a30fa7547a828ae08142465/cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8", size = 488736 }, - { url = "https://files.pythonhosted.org/packages/86/c5/28b2d6f799ec0bdecf44dced2ec5ed43e0eb63097b0f58c293583b406582/cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", size = 172448 }, - { url = "https://files.pythonhosted.org/packages/50/b9/db34c4755a7bd1cb2d1603ac3863f22bcecbd1ba29e5ee841a4bc510b294/cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", size = 181976 }, - { url = "https://files.pythonhosted.org/packages/8d/f8/dd6c246b148639254dad4d6803eb6a54e8c85c6e11ec9df2cffa87571dbe/cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e", size = 182989 }, - { url = "https://files.pythonhosted.org/packages/8b/f1/672d303ddf17c24fc83afd712316fda78dc6fce1cd53011b839483e1ecc8/cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2", size = 178802 }, - { url = "https://files.pythonhosted.org/packages/0e/2d/eab2e858a91fdff70533cab61dcff4a1f55ec60425832ddfdc9cd36bc8af/cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3", size = 454792 }, - { url = "https://files.pythonhosted.org/packages/75/b2/fbaec7c4455c604e29388d55599b99ebcc250a60050610fadde58932b7ee/cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683", size = 478893 }, - { url = "https://files.pythonhosted.org/packages/4f/b7/6e4a2162178bf1935c336d4da8a9352cccab4d3a5d7914065490f08c0690/cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5", size = 485810 }, - { url = "https://files.pythonhosted.org/packages/c7/8a/1d0e4a9c26e54746dc08c2c6c037889124d4f59dffd853a659fa545f1b40/cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4", size = 471200 }, - { url = "https://files.pythonhosted.org/packages/26/9f/1aab65a6c0db35f43c4d1b4f580e8df53914310afc10ae0397d29d697af4/cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd", size = 479447 }, - { url = "https://files.pythonhosted.org/packages/5f/e4/fb8b3dd8dc0e98edf1135ff067ae070bb32ef9d509d6cb0f538cd6f7483f/cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed", size = 484358 }, - { url = "https://files.pythonhosted.org/packages/f1/47/d7145bf2dc04684935d57d67dff9d6d795b2ba2796806bb109864be3a151/cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9", size = 488469 }, - { url = "https://files.pythonhosted.org/packages/bf/ee/f94057fa6426481d663b88637a9a10e859e492c73d0384514a17d78ee205/cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d", size = 172475 }, - { url = "https://files.pythonhosted.org/packages/7c/fc/6a8cb64e5f0324877d503c854da15d76c1e50eb722e320b15345c4d0c6de/cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a", size = 182009 }, +sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621, upload-time = "2024-09-04T20:45:21.852Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/84/e94227139ee5fb4d600a7a4927f322e1d4aea6fdc50bd3fca8493caba23f/cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4", size = 183178, upload-time = "2024-09-04T20:44:12.232Z" }, + { url = "https://files.pythonhosted.org/packages/da/ee/fb72c2b48656111c4ef27f0f91da355e130a923473bf5ee75c5643d00cca/cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c", size = 178840, upload-time = "2024-09-04T20:44:13.739Z" }, + { url = "https://files.pythonhosted.org/packages/cc/b6/db007700f67d151abadf508cbfd6a1884f57eab90b1bb985c4c8c02b0f28/cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36", size = 454803, upload-time = "2024-09-04T20:44:15.231Z" }, + { url = "https://files.pythonhosted.org/packages/1a/df/f8d151540d8c200eb1c6fba8cd0dfd40904f1b0682ea705c36e6c2e97ab3/cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5", size = 478850, upload-time = "2024-09-04T20:44:17.188Z" }, + { url = "https://files.pythonhosted.org/packages/28/c0/b31116332a547fd2677ae5b78a2ef662dfc8023d67f41b2a83f7c2aa78b1/cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff", size = 485729, upload-time = "2024-09-04T20:44:18.688Z" }, + { url = "https://files.pythonhosted.org/packages/91/2b/9a1ddfa5c7f13cab007a2c9cc295b70fbbda7cb10a286aa6810338e60ea1/cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99", size = 471256, upload-time = "2024-09-04T20:44:20.248Z" }, + { url = "https://files.pythonhosted.org/packages/b2/d5/da47df7004cb17e4955df6a43d14b3b4ae77737dff8bf7f8f333196717bf/cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93", size = 479424, upload-time = "2024-09-04T20:44:21.673Z" }, + { url = "https://files.pythonhosted.org/packages/0b/ac/2a28bcf513e93a219c8a4e8e125534f4f6db03e3179ba1c45e949b76212c/cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3", size = 484568, upload-time = "2024-09-04T20:44:23.245Z" }, + { url = "https://files.pythonhosted.org/packages/d4/38/ca8a4f639065f14ae0f1d9751e70447a261f1a30fa7547a828ae08142465/cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8", size = 488736, upload-time = "2024-09-04T20:44:24.757Z" }, + { url = "https://files.pythonhosted.org/packages/86/c5/28b2d6f799ec0bdecf44dced2ec5ed43e0eb63097b0f58c293583b406582/cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", size = 172448, upload-time = "2024-09-04T20:44:26.208Z" }, + { url = "https://files.pythonhosted.org/packages/50/b9/db34c4755a7bd1cb2d1603ac3863f22bcecbd1ba29e5ee841a4bc510b294/cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", size = 181976, upload-time = "2024-09-04T20:44:27.578Z" }, + { url = "https://files.pythonhosted.org/packages/8d/f8/dd6c246b148639254dad4d6803eb6a54e8c85c6e11ec9df2cffa87571dbe/cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e", size = 182989, upload-time = "2024-09-04T20:44:28.956Z" }, + { url = "https://files.pythonhosted.org/packages/8b/f1/672d303ddf17c24fc83afd712316fda78dc6fce1cd53011b839483e1ecc8/cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2", size = 178802, upload-time = "2024-09-04T20:44:30.289Z" }, + { url = "https://files.pythonhosted.org/packages/0e/2d/eab2e858a91fdff70533cab61dcff4a1f55ec60425832ddfdc9cd36bc8af/cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3", size = 454792, upload-time = "2024-09-04T20:44:32.01Z" }, + { url = "https://files.pythonhosted.org/packages/75/b2/fbaec7c4455c604e29388d55599b99ebcc250a60050610fadde58932b7ee/cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683", size = 478893, upload-time = "2024-09-04T20:44:33.606Z" }, + { url = "https://files.pythonhosted.org/packages/4f/b7/6e4a2162178bf1935c336d4da8a9352cccab4d3a5d7914065490f08c0690/cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5", size = 485810, upload-time = "2024-09-04T20:44:35.191Z" }, + { url = "https://files.pythonhosted.org/packages/c7/8a/1d0e4a9c26e54746dc08c2c6c037889124d4f59dffd853a659fa545f1b40/cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4", size = 471200, upload-time = "2024-09-04T20:44:36.743Z" }, + { url = "https://files.pythonhosted.org/packages/26/9f/1aab65a6c0db35f43c4d1b4f580e8df53914310afc10ae0397d29d697af4/cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd", size = 479447, upload-time = "2024-09-04T20:44:38.492Z" }, + { url = "https://files.pythonhosted.org/packages/5f/e4/fb8b3dd8dc0e98edf1135ff067ae070bb32ef9d509d6cb0f538cd6f7483f/cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed", size = 484358, upload-time = "2024-09-04T20:44:40.046Z" }, + { url = "https://files.pythonhosted.org/packages/f1/47/d7145bf2dc04684935d57d67dff9d6d795b2ba2796806bb109864be3a151/cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9", size = 488469, upload-time = "2024-09-04T20:44:41.616Z" }, + { url = "https://files.pythonhosted.org/packages/bf/ee/f94057fa6426481d663b88637a9a10e859e492c73d0384514a17d78ee205/cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d", size = 172475, upload-time = "2024-09-04T20:44:43.733Z" }, + { url = "https://files.pythonhosted.org/packages/7c/fc/6a8cb64e5f0324877d503c854da15d76c1e50eb722e320b15345c4d0c6de/cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a", size = 182009, upload-time = "2024-09-04T20:44:45.309Z" }, ] [[package]] name = "charset-normalizer" version = "3.4.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e4/33/89c2ced2b67d1c2a61c19c6751aa8902d46ce3dacb23600a283619f5a12d/charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63", size = 126367 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d7/a4/37f4d6035c89cac7930395a35cc0f1b872e652eaafb76a6075943754f095/charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7", size = 199936 }, - { url = "https://files.pythonhosted.org/packages/ee/8a/1a5e33b73e0d9287274f899d967907cd0bf9c343e651755d9307e0dbf2b3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3", size = 143790 }, - { url = "https://files.pythonhosted.org/packages/66/52/59521f1d8e6ab1482164fa21409c5ef44da3e9f653c13ba71becdd98dec3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a", size = 153924 }, - { url = "https://files.pythonhosted.org/packages/86/2d/fb55fdf41964ec782febbf33cb64be480a6b8f16ded2dbe8db27a405c09f/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214", size = 146626 }, - { url = "https://files.pythonhosted.org/packages/8c/73/6ede2ec59bce19b3edf4209d70004253ec5f4e319f9a2e3f2f15601ed5f7/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a", size = 148567 }, - { url = "https://files.pythonhosted.org/packages/09/14/957d03c6dc343c04904530b6bef4e5efae5ec7d7990a7cbb868e4595ee30/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd", size = 150957 }, - { url = "https://files.pythonhosted.org/packages/0d/c8/8174d0e5c10ccebdcb1b53cc959591c4c722a3ad92461a273e86b9f5a302/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981", size = 145408 }, - { url = "https://files.pythonhosted.org/packages/58/aa/8904b84bc8084ac19dc52feb4f5952c6df03ffb460a887b42615ee1382e8/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c", size = 153399 }, - { url = "https://files.pythonhosted.org/packages/c2/26/89ee1f0e264d201cb65cf054aca6038c03b1a0c6b4ae998070392a3ce605/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b", size = 156815 }, - { url = "https://files.pythonhosted.org/packages/fd/07/68e95b4b345bad3dbbd3a8681737b4338ff2c9df29856a6d6d23ac4c73cb/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d", size = 154537 }, - { url = "https://files.pythonhosted.org/packages/77/1a/5eefc0ce04affb98af07bc05f3bac9094513c0e23b0562d64af46a06aae4/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f", size = 149565 }, - { url = "https://files.pythonhosted.org/packages/37/a0/2410e5e6032a174c95e0806b1a6585eb21e12f445ebe239fac441995226a/charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c", size = 98357 }, - { url = "https://files.pythonhosted.org/packages/6c/4f/c02d5c493967af3eda9c771ad4d2bbc8df6f99ddbeb37ceea6e8716a32bc/charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e", size = 105776 }, - { url = "https://files.pythonhosted.org/packages/ea/12/a93df3366ed32db1d907d7593a94f1fe6293903e3e92967bebd6950ed12c/charset_normalizer-3.4.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:926ca93accd5d36ccdabd803392ddc3e03e6d4cd1cf17deff3b989ab8e9dbcf0", size = 199622 }, - { url = "https://files.pythonhosted.org/packages/04/93/bf204e6f344c39d9937d3c13c8cd5bbfc266472e51fc8c07cb7f64fcd2de/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eba9904b0f38a143592d9fc0e19e2df0fa2e41c3c3745554761c5f6447eedabf", size = 143435 }, - { url = "https://files.pythonhosted.org/packages/22/2a/ea8a2095b0bafa6c5b5a55ffdc2f924455233ee7b91c69b7edfcc9e02284/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fddb7e2c84ac87ac3a947cb4e66d143ca5863ef48e4a5ecb83bd48619e4634e", size = 153653 }, - { url = "https://files.pythonhosted.org/packages/b6/57/1b090ff183d13cef485dfbe272e2fe57622a76694061353c59da52c9a659/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98f862da73774290f251b9df8d11161b6cf25b599a66baf087c1ffe340e9bfd1", size = 146231 }, - { url = "https://files.pythonhosted.org/packages/e2/28/ffc026b26f441fc67bd21ab7f03b313ab3fe46714a14b516f931abe1a2d8/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c9379d65defcab82d07b2a9dfbfc2e95bc8fe0ebb1b176a3190230a3ef0e07c", size = 148243 }, - { url = "https://files.pythonhosted.org/packages/c0/0f/9abe9bd191629c33e69e47c6ef45ef99773320e9ad8e9cb08b8ab4a8d4cb/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e635b87f01ebc977342e2697d05b56632f5f879a4f15955dfe8cef2448b51691", size = 150442 }, - { url = "https://files.pythonhosted.org/packages/67/7c/a123bbcedca91d5916c056407f89a7f5e8fdfce12ba825d7d6b9954a1a3c/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1c95a1e2902a8b722868587c0e1184ad5c55631de5afc0eb96bc4b0d738092c0", size = 145147 }, - { url = "https://files.pythonhosted.org/packages/ec/fe/1ac556fa4899d967b83e9893788e86b6af4d83e4726511eaaad035e36595/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ef8de666d6179b009dce7bcb2ad4c4a779f113f12caf8dc77f0162c29d20490b", size = 153057 }, - { url = "https://files.pythonhosted.org/packages/2b/ff/acfc0b0a70b19e3e54febdd5301a98b72fa07635e56f24f60502e954c461/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:32fc0341d72e0f73f80acb0a2c94216bd704f4f0bce10aedea38f30502b271ff", size = 156454 }, - { url = "https://files.pythonhosted.org/packages/92/08/95b458ce9c740d0645feb0e96cea1f5ec946ea9c580a94adfe0b617f3573/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:289200a18fa698949d2b39c671c2cc7a24d44096784e76614899a7ccf2574b7b", size = 154174 }, - { url = "https://files.pythonhosted.org/packages/78/be/8392efc43487ac051eee6c36d5fbd63032d78f7728cb37aebcc98191f1ff/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a476b06fbcf359ad25d34a057b7219281286ae2477cc5ff5e3f70a246971148", size = 149166 }, - { url = "https://files.pythonhosted.org/packages/44/96/392abd49b094d30b91d9fbda6a69519e95802250b777841cf3bda8fe136c/charset_normalizer-3.4.2-cp313-cp313-win32.whl", hash = "sha256:aaeeb6a479c7667fbe1099af9617c83aaca22182d6cf8c53966491a0f1b7ffb7", size = 98064 }, - { url = "https://files.pythonhosted.org/packages/e9/b0/0200da600134e001d91851ddc797809e2fe0ea72de90e09bec5a2fbdaccb/charset_normalizer-3.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:aa6af9e7d59f9c12b33ae4e9450619cf2488e2bbe9b44030905877f0b2324980", size = 105641 }, - { url = "https://files.pythonhosted.org/packages/20/94/c5790835a017658cbfabd07f3bfb549140c3ac458cfc196323996b10095a/charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0", size = 52626 }, +sdist = { url = "https://files.pythonhosted.org/packages/e4/33/89c2ced2b67d1c2a61c19c6751aa8902d46ce3dacb23600a283619f5a12d/charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63", size = 126367, upload-time = "2025-05-02T08:34:42.01Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d7/a4/37f4d6035c89cac7930395a35cc0f1b872e652eaafb76a6075943754f095/charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7", size = 199936, upload-time = "2025-05-02T08:32:33.712Z" }, + { url = "https://files.pythonhosted.org/packages/ee/8a/1a5e33b73e0d9287274f899d967907cd0bf9c343e651755d9307e0dbf2b3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3", size = 143790, upload-time = "2025-05-02T08:32:35.768Z" }, + { url = "https://files.pythonhosted.org/packages/66/52/59521f1d8e6ab1482164fa21409c5ef44da3e9f653c13ba71becdd98dec3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a", size = 153924, upload-time = "2025-05-02T08:32:37.284Z" }, + { url = "https://files.pythonhosted.org/packages/86/2d/fb55fdf41964ec782febbf33cb64be480a6b8f16ded2dbe8db27a405c09f/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214", size = 146626, upload-time = "2025-05-02T08:32:38.803Z" }, + { url = "https://files.pythonhosted.org/packages/8c/73/6ede2ec59bce19b3edf4209d70004253ec5f4e319f9a2e3f2f15601ed5f7/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a", size = 148567, upload-time = "2025-05-02T08:32:40.251Z" }, + { url = "https://files.pythonhosted.org/packages/09/14/957d03c6dc343c04904530b6bef4e5efae5ec7d7990a7cbb868e4595ee30/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd", size = 150957, upload-time = "2025-05-02T08:32:41.705Z" }, + { url = "https://files.pythonhosted.org/packages/0d/c8/8174d0e5c10ccebdcb1b53cc959591c4c722a3ad92461a273e86b9f5a302/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981", size = 145408, upload-time = "2025-05-02T08:32:43.709Z" }, + { url = "https://files.pythonhosted.org/packages/58/aa/8904b84bc8084ac19dc52feb4f5952c6df03ffb460a887b42615ee1382e8/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c", size = 153399, upload-time = "2025-05-02T08:32:46.197Z" }, + { url = "https://files.pythonhosted.org/packages/c2/26/89ee1f0e264d201cb65cf054aca6038c03b1a0c6b4ae998070392a3ce605/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b", size = 156815, upload-time = "2025-05-02T08:32:48.105Z" }, + { url = "https://files.pythonhosted.org/packages/fd/07/68e95b4b345bad3dbbd3a8681737b4338ff2c9df29856a6d6d23ac4c73cb/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d", size = 154537, upload-time = "2025-05-02T08:32:49.719Z" }, + { url = "https://files.pythonhosted.org/packages/77/1a/5eefc0ce04affb98af07bc05f3bac9094513c0e23b0562d64af46a06aae4/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f", size = 149565, upload-time = "2025-05-02T08:32:51.404Z" }, + { url = "https://files.pythonhosted.org/packages/37/a0/2410e5e6032a174c95e0806b1a6585eb21e12f445ebe239fac441995226a/charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c", size = 98357, upload-time = "2025-05-02T08:32:53.079Z" }, + { url = "https://files.pythonhosted.org/packages/6c/4f/c02d5c493967af3eda9c771ad4d2bbc8df6f99ddbeb37ceea6e8716a32bc/charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e", size = 105776, upload-time = "2025-05-02T08:32:54.573Z" }, + { url = "https://files.pythonhosted.org/packages/ea/12/a93df3366ed32db1d907d7593a94f1fe6293903e3e92967bebd6950ed12c/charset_normalizer-3.4.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:926ca93accd5d36ccdabd803392ddc3e03e6d4cd1cf17deff3b989ab8e9dbcf0", size = 199622, upload-time = "2025-05-02T08:32:56.363Z" }, + { url = "https://files.pythonhosted.org/packages/04/93/bf204e6f344c39d9937d3c13c8cd5bbfc266472e51fc8c07cb7f64fcd2de/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eba9904b0f38a143592d9fc0e19e2df0fa2e41c3c3745554761c5f6447eedabf", size = 143435, upload-time = "2025-05-02T08:32:58.551Z" }, + { url = "https://files.pythonhosted.org/packages/22/2a/ea8a2095b0bafa6c5b5a55ffdc2f924455233ee7b91c69b7edfcc9e02284/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fddb7e2c84ac87ac3a947cb4e66d143ca5863ef48e4a5ecb83bd48619e4634e", size = 153653, upload-time = "2025-05-02T08:33:00.342Z" }, + { url = "https://files.pythonhosted.org/packages/b6/57/1b090ff183d13cef485dfbe272e2fe57622a76694061353c59da52c9a659/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98f862da73774290f251b9df8d11161b6cf25b599a66baf087c1ffe340e9bfd1", size = 146231, upload-time = "2025-05-02T08:33:02.081Z" }, + { url = "https://files.pythonhosted.org/packages/e2/28/ffc026b26f441fc67bd21ab7f03b313ab3fe46714a14b516f931abe1a2d8/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c9379d65defcab82d07b2a9dfbfc2e95bc8fe0ebb1b176a3190230a3ef0e07c", size = 148243, upload-time = "2025-05-02T08:33:04.063Z" }, + { url = "https://files.pythonhosted.org/packages/c0/0f/9abe9bd191629c33e69e47c6ef45ef99773320e9ad8e9cb08b8ab4a8d4cb/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e635b87f01ebc977342e2697d05b56632f5f879a4f15955dfe8cef2448b51691", size = 150442, upload-time = "2025-05-02T08:33:06.418Z" }, + { url = "https://files.pythonhosted.org/packages/67/7c/a123bbcedca91d5916c056407f89a7f5e8fdfce12ba825d7d6b9954a1a3c/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1c95a1e2902a8b722868587c0e1184ad5c55631de5afc0eb96bc4b0d738092c0", size = 145147, upload-time = "2025-05-02T08:33:08.183Z" }, + { url = "https://files.pythonhosted.org/packages/ec/fe/1ac556fa4899d967b83e9893788e86b6af4d83e4726511eaaad035e36595/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ef8de666d6179b009dce7bcb2ad4c4a779f113f12caf8dc77f0162c29d20490b", size = 153057, upload-time = "2025-05-02T08:33:09.986Z" }, + { url = "https://files.pythonhosted.org/packages/2b/ff/acfc0b0a70b19e3e54febdd5301a98b72fa07635e56f24f60502e954c461/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:32fc0341d72e0f73f80acb0a2c94216bd704f4f0bce10aedea38f30502b271ff", size = 156454, upload-time = "2025-05-02T08:33:11.814Z" }, + { url = "https://files.pythonhosted.org/packages/92/08/95b458ce9c740d0645feb0e96cea1f5ec946ea9c580a94adfe0b617f3573/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:289200a18fa698949d2b39c671c2cc7a24d44096784e76614899a7ccf2574b7b", size = 154174, upload-time = "2025-05-02T08:33:13.707Z" }, + { url = "https://files.pythonhosted.org/packages/78/be/8392efc43487ac051eee6c36d5fbd63032d78f7728cb37aebcc98191f1ff/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a476b06fbcf359ad25d34a057b7219281286ae2477cc5ff5e3f70a246971148", size = 149166, upload-time = "2025-05-02T08:33:15.458Z" }, + { url = "https://files.pythonhosted.org/packages/44/96/392abd49b094d30b91d9fbda6a69519e95802250b777841cf3bda8fe136c/charset_normalizer-3.4.2-cp313-cp313-win32.whl", hash = "sha256:aaeeb6a479c7667fbe1099af9617c83aaca22182d6cf8c53966491a0f1b7ffb7", size = 98064, upload-time = "2025-05-02T08:33:17.06Z" }, + { url = "https://files.pythonhosted.org/packages/e9/b0/0200da600134e001d91851ddc797809e2fe0ea72de90e09bec5a2fbdaccb/charset_normalizer-3.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:aa6af9e7d59f9c12b33ae4e9450619cf2488e2bbe9b44030905877f0b2324980", size = 105641, upload-time = "2025-05-02T08:33:18.753Z" }, + { url = "https://files.pythonhosted.org/packages/20/94/c5790835a017658cbfabd07f3bfb549140c3ac458cfc196323996b10095a/charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0", size = 52626, upload-time = "2025-05-02T08:34:40.053Z" }, ] [[package]] name = "colorama" version = "0.4.6" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697 } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 }, + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, ] [[package]] name = "contracts-service" version = "0.2.0" -source = { editable = "." } +source = { virtual = "." } dependencies = [ { name = "aws-lambda-powertools", extra = ["tracer"] }, { name = "aws-xray-sdk" }, @@ -244,32 +244,32 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/13/1f/9fa001e74a1993a9cadd2333bb889e50c66327b8594ac538ab8a04f915b7/cryptography-45.0.3.tar.gz", hash = "sha256:ec21313dd335c51d7877baf2972569f40a4291b76a0ce51391523ae358d05899", size = 744738 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/82/b2/2345dc595998caa6f68adf84e8f8b50d18e9fc4638d32b22ea8daedd4b7a/cryptography-45.0.3-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:7573d9eebaeceeb55285205dbbb8753ac1e962af3d9640791d12b36864065e71", size = 7056239 }, - { url = "https://files.pythonhosted.org/packages/71/3d/ac361649a0bfffc105e2298b720d8b862330a767dab27c06adc2ddbef96a/cryptography-45.0.3-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d377dde61c5d67eb4311eace661c3efda46c62113ff56bf05e2d679e02aebb5b", size = 4205541 }, - { url = "https://files.pythonhosted.org/packages/70/3e/c02a043750494d5c445f769e9c9f67e550d65060e0bfce52d91c1362693d/cryptography-45.0.3-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fae1e637f527750811588e4582988932c222f8251f7b7ea93739acb624e1487f", size = 4433275 }, - { url = "https://files.pythonhosted.org/packages/40/7a/9af0bfd48784e80eef3eb6fd6fde96fe706b4fc156751ce1b2b965dada70/cryptography-45.0.3-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:ca932e11218bcc9ef812aa497cdf669484870ecbcf2d99b765d6c27a86000942", size = 4209173 }, - { url = "https://files.pythonhosted.org/packages/31/5f/d6f8753c8708912df52e67969e80ef70b8e8897306cd9eb8b98201f8c184/cryptography-45.0.3-cp311-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:af3f92b1dc25621f5fad065288a44ac790c5798e986a34d393ab27d2b27fcff9", size = 3898150 }, - { url = "https://files.pythonhosted.org/packages/8b/50/f256ab79c671fb066e47336706dc398c3b1e125f952e07d54ce82cf4011a/cryptography-45.0.3-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:2f8f8f0b73b885ddd7f3d8c2b2234a7d3ba49002b0223f58cfde1bedd9563c56", size = 4466473 }, - { url = "https://files.pythonhosted.org/packages/62/e7/312428336bb2df0848d0768ab5a062e11a32d18139447a76dfc19ada8eed/cryptography-45.0.3-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:9cc80ce69032ffa528b5e16d217fa4d8d4bb7d6ba8659c1b4d74a1b0f4235fca", size = 4211890 }, - { url = "https://files.pythonhosted.org/packages/e7/53/8a130e22c1e432b3c14896ec5eb7ac01fb53c6737e1d705df7e0efb647c6/cryptography-45.0.3-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:c824c9281cb628015bfc3c59335163d4ca0540d49de4582d6c2637312907e4b1", size = 4466300 }, - { url = "https://files.pythonhosted.org/packages/ba/75/6bb6579688ef805fd16a053005fce93944cdade465fc92ef32bbc5c40681/cryptography-45.0.3-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:5833bb4355cb377ebd880457663a972cd044e7f49585aee39245c0d592904578", size = 4332483 }, - { url = "https://files.pythonhosted.org/packages/2f/11/2538f4e1ce05c6c4f81f43c1ef2bd6de7ae5e24ee284460ff6c77e42ca77/cryptography-45.0.3-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:9bb5bf55dcb69f7067d80354d0a348368da907345a2c448b0babc4215ccd3497", size = 4573714 }, - { url = "https://files.pythonhosted.org/packages/f5/bb/e86e9cf07f73a98d84a4084e8fd420b0e82330a901d9cac8149f994c3417/cryptography-45.0.3-cp311-abi3-win32.whl", hash = "sha256:3ad69eeb92a9de9421e1f6685e85a10fbcfb75c833b42cc9bc2ba9fb00da4710", size = 2934752 }, - { url = "https://files.pythonhosted.org/packages/c7/75/063bc9ddc3d1c73e959054f1fc091b79572e716ef74d6caaa56e945b4af9/cryptography-45.0.3-cp311-abi3-win_amd64.whl", hash = "sha256:97787952246a77d77934d41b62fb1b6f3581d83f71b44796a4158d93b8f5c490", size = 3412465 }, - { url = "https://files.pythonhosted.org/packages/71/9b/04ead6015229a9396890d7654ee35ef630860fb42dc9ff9ec27f72157952/cryptography-45.0.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:c92519d242703b675ccefd0f0562eb45e74d438e001f8ab52d628e885751fb06", size = 7031892 }, - { url = "https://files.pythonhosted.org/packages/46/c7/c7d05d0e133a09fc677b8a87953815c522697bdf025e5cac13ba419e7240/cryptography-45.0.3-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5edcb90da1843df85292ef3a313513766a78fbbb83f584a5a58fb001a5a9d57", size = 4196181 }, - { url = "https://files.pythonhosted.org/packages/08/7a/6ad3aa796b18a683657cef930a986fac0045417e2dc428fd336cfc45ba52/cryptography-45.0.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38deed72285c7ed699864f964a3f4cf11ab3fb38e8d39cfcd96710cd2b5bb716", size = 4423370 }, - { url = "https://files.pythonhosted.org/packages/4f/58/ec1461bfcb393525f597ac6a10a63938d18775b7803324072974b41a926b/cryptography-45.0.3-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:5555365a50efe1f486eed6ac7062c33b97ccef409f5970a0b6f205a7cfab59c8", size = 4197839 }, - { url = "https://files.pythonhosted.org/packages/d4/3d/5185b117c32ad4f40846f579369a80e710d6146c2baa8ce09d01612750db/cryptography-45.0.3-cp37-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:9e4253ed8f5948a3589b3caee7ad9a5bf218ffd16869c516535325fece163dcc", size = 3886324 }, - { url = "https://files.pythonhosted.org/packages/67/85/caba91a57d291a2ad46e74016d1f83ac294f08128b26e2a81e9b4f2d2555/cryptography-45.0.3-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:cfd84777b4b6684955ce86156cfb5e08d75e80dc2585e10d69e47f014f0a5342", size = 4450447 }, - { url = "https://files.pythonhosted.org/packages/ae/d1/164e3c9d559133a38279215c712b8ba38e77735d3412f37711b9f8f6f7e0/cryptography-45.0.3-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:a2b56de3417fd5f48773ad8e91abaa700b678dc7fe1e0c757e1ae340779acf7b", size = 4200576 }, - { url = "https://files.pythonhosted.org/packages/71/7a/e002d5ce624ed46dfc32abe1deff32190f3ac47ede911789ee936f5a4255/cryptography-45.0.3-cp37-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:57a6500d459e8035e813bd8b51b671977fb149a8c95ed814989da682314d0782", size = 4450308 }, - { url = "https://files.pythonhosted.org/packages/87/ad/3fbff9c28cf09b0a71e98af57d74f3662dea4a174b12acc493de00ea3f28/cryptography-45.0.3-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:f22af3c78abfbc7cbcdf2c55d23c3e022e1a462ee2481011d518c7fb9c9f3d65", size = 4325125 }, - { url = "https://files.pythonhosted.org/packages/f5/b4/51417d0cc01802304c1984d76e9592f15e4801abd44ef7ba657060520bf0/cryptography-45.0.3-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:232954730c362638544758a8160c4ee1b832dc011d2c41a306ad8f7cccc5bb0b", size = 4560038 }, - { url = "https://files.pythonhosted.org/packages/80/38/d572f6482d45789a7202fb87d052deb7a7b136bf17473ebff33536727a2c/cryptography-45.0.3-cp37-abi3-win32.whl", hash = "sha256:cb6ab89421bc90e0422aca911c69044c2912fc3debb19bb3c1bfe28ee3dff6ab", size = 2924070 }, - { url = "https://files.pythonhosted.org/packages/91/5a/61f39c0ff4443651cc64e626fa97ad3099249152039952be8f344d6b0c86/cryptography-45.0.3-cp37-abi3-win_amd64.whl", hash = "sha256:d54ae41e6bd70ea23707843021c778f151ca258081586f0cfa31d936ae43d1b2", size = 3395005 }, +sdist = { url = "https://files.pythonhosted.org/packages/13/1f/9fa001e74a1993a9cadd2333bb889e50c66327b8594ac538ab8a04f915b7/cryptography-45.0.3.tar.gz", hash = "sha256:ec21313dd335c51d7877baf2972569f40a4291b76a0ce51391523ae358d05899", size = 744738, upload-time = "2025-05-25T14:17:24.777Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/82/b2/2345dc595998caa6f68adf84e8f8b50d18e9fc4638d32b22ea8daedd4b7a/cryptography-45.0.3-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:7573d9eebaeceeb55285205dbbb8753ac1e962af3d9640791d12b36864065e71", size = 7056239, upload-time = "2025-05-25T14:16:12.22Z" }, + { url = "https://files.pythonhosted.org/packages/71/3d/ac361649a0bfffc105e2298b720d8b862330a767dab27c06adc2ddbef96a/cryptography-45.0.3-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d377dde61c5d67eb4311eace661c3efda46c62113ff56bf05e2d679e02aebb5b", size = 4205541, upload-time = "2025-05-25T14:16:14.333Z" }, + { url = "https://files.pythonhosted.org/packages/70/3e/c02a043750494d5c445f769e9c9f67e550d65060e0bfce52d91c1362693d/cryptography-45.0.3-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fae1e637f527750811588e4582988932c222f8251f7b7ea93739acb624e1487f", size = 4433275, upload-time = "2025-05-25T14:16:16.421Z" }, + { url = "https://files.pythonhosted.org/packages/40/7a/9af0bfd48784e80eef3eb6fd6fde96fe706b4fc156751ce1b2b965dada70/cryptography-45.0.3-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:ca932e11218bcc9ef812aa497cdf669484870ecbcf2d99b765d6c27a86000942", size = 4209173, upload-time = "2025-05-25T14:16:18.163Z" }, + { url = "https://files.pythonhosted.org/packages/31/5f/d6f8753c8708912df52e67969e80ef70b8e8897306cd9eb8b98201f8c184/cryptography-45.0.3-cp311-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:af3f92b1dc25621f5fad065288a44ac790c5798e986a34d393ab27d2b27fcff9", size = 3898150, upload-time = "2025-05-25T14:16:20.34Z" }, + { url = "https://files.pythonhosted.org/packages/8b/50/f256ab79c671fb066e47336706dc398c3b1e125f952e07d54ce82cf4011a/cryptography-45.0.3-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:2f8f8f0b73b885ddd7f3d8c2b2234a7d3ba49002b0223f58cfde1bedd9563c56", size = 4466473, upload-time = "2025-05-25T14:16:22.605Z" }, + { url = "https://files.pythonhosted.org/packages/62/e7/312428336bb2df0848d0768ab5a062e11a32d18139447a76dfc19ada8eed/cryptography-45.0.3-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:9cc80ce69032ffa528b5e16d217fa4d8d4bb7d6ba8659c1b4d74a1b0f4235fca", size = 4211890, upload-time = "2025-05-25T14:16:24.738Z" }, + { url = "https://files.pythonhosted.org/packages/e7/53/8a130e22c1e432b3c14896ec5eb7ac01fb53c6737e1d705df7e0efb647c6/cryptography-45.0.3-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:c824c9281cb628015bfc3c59335163d4ca0540d49de4582d6c2637312907e4b1", size = 4466300, upload-time = "2025-05-25T14:16:26.768Z" }, + { url = "https://files.pythonhosted.org/packages/ba/75/6bb6579688ef805fd16a053005fce93944cdade465fc92ef32bbc5c40681/cryptography-45.0.3-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:5833bb4355cb377ebd880457663a972cd044e7f49585aee39245c0d592904578", size = 4332483, upload-time = "2025-05-25T14:16:28.316Z" }, + { url = "https://files.pythonhosted.org/packages/2f/11/2538f4e1ce05c6c4f81f43c1ef2bd6de7ae5e24ee284460ff6c77e42ca77/cryptography-45.0.3-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:9bb5bf55dcb69f7067d80354d0a348368da907345a2c448b0babc4215ccd3497", size = 4573714, upload-time = "2025-05-25T14:16:30.474Z" }, + { url = "https://files.pythonhosted.org/packages/f5/bb/e86e9cf07f73a98d84a4084e8fd420b0e82330a901d9cac8149f994c3417/cryptography-45.0.3-cp311-abi3-win32.whl", hash = "sha256:3ad69eeb92a9de9421e1f6685e85a10fbcfb75c833b42cc9bc2ba9fb00da4710", size = 2934752, upload-time = "2025-05-25T14:16:32.204Z" }, + { url = "https://files.pythonhosted.org/packages/c7/75/063bc9ddc3d1c73e959054f1fc091b79572e716ef74d6caaa56e945b4af9/cryptography-45.0.3-cp311-abi3-win_amd64.whl", hash = "sha256:97787952246a77d77934d41b62fb1b6f3581d83f71b44796a4158d93b8f5c490", size = 3412465, upload-time = "2025-05-25T14:16:33.888Z" }, + { url = "https://files.pythonhosted.org/packages/71/9b/04ead6015229a9396890d7654ee35ef630860fb42dc9ff9ec27f72157952/cryptography-45.0.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:c92519d242703b675ccefd0f0562eb45e74d438e001f8ab52d628e885751fb06", size = 7031892, upload-time = "2025-05-25T14:16:36.214Z" }, + { url = "https://files.pythonhosted.org/packages/46/c7/c7d05d0e133a09fc677b8a87953815c522697bdf025e5cac13ba419e7240/cryptography-45.0.3-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5edcb90da1843df85292ef3a313513766a78fbbb83f584a5a58fb001a5a9d57", size = 4196181, upload-time = "2025-05-25T14:16:37.934Z" }, + { url = "https://files.pythonhosted.org/packages/08/7a/6ad3aa796b18a683657cef930a986fac0045417e2dc428fd336cfc45ba52/cryptography-45.0.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38deed72285c7ed699864f964a3f4cf11ab3fb38e8d39cfcd96710cd2b5bb716", size = 4423370, upload-time = "2025-05-25T14:16:39.502Z" }, + { url = "https://files.pythonhosted.org/packages/4f/58/ec1461bfcb393525f597ac6a10a63938d18775b7803324072974b41a926b/cryptography-45.0.3-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:5555365a50efe1f486eed6ac7062c33b97ccef409f5970a0b6f205a7cfab59c8", size = 4197839, upload-time = "2025-05-25T14:16:41.322Z" }, + { url = "https://files.pythonhosted.org/packages/d4/3d/5185b117c32ad4f40846f579369a80e710d6146c2baa8ce09d01612750db/cryptography-45.0.3-cp37-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:9e4253ed8f5948a3589b3caee7ad9a5bf218ffd16869c516535325fece163dcc", size = 3886324, upload-time = "2025-05-25T14:16:43.041Z" }, + { url = "https://files.pythonhosted.org/packages/67/85/caba91a57d291a2ad46e74016d1f83ac294f08128b26e2a81e9b4f2d2555/cryptography-45.0.3-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:cfd84777b4b6684955ce86156cfb5e08d75e80dc2585e10d69e47f014f0a5342", size = 4450447, upload-time = "2025-05-25T14:16:44.759Z" }, + { url = "https://files.pythonhosted.org/packages/ae/d1/164e3c9d559133a38279215c712b8ba38e77735d3412f37711b9f8f6f7e0/cryptography-45.0.3-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:a2b56de3417fd5f48773ad8e91abaa700b678dc7fe1e0c757e1ae340779acf7b", size = 4200576, upload-time = "2025-05-25T14:16:46.438Z" }, + { url = "https://files.pythonhosted.org/packages/71/7a/e002d5ce624ed46dfc32abe1deff32190f3ac47ede911789ee936f5a4255/cryptography-45.0.3-cp37-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:57a6500d459e8035e813bd8b51b671977fb149a8c95ed814989da682314d0782", size = 4450308, upload-time = "2025-05-25T14:16:48.228Z" }, + { url = "https://files.pythonhosted.org/packages/87/ad/3fbff9c28cf09b0a71e98af57d74f3662dea4a174b12acc493de00ea3f28/cryptography-45.0.3-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:f22af3c78abfbc7cbcdf2c55d23c3e022e1a462ee2481011d518c7fb9c9f3d65", size = 4325125, upload-time = "2025-05-25T14:16:49.844Z" }, + { url = "https://files.pythonhosted.org/packages/f5/b4/51417d0cc01802304c1984d76e9592f15e4801abd44ef7ba657060520bf0/cryptography-45.0.3-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:232954730c362638544758a8160c4ee1b832dc011d2c41a306ad8f7cccc5bb0b", size = 4560038, upload-time = "2025-05-25T14:16:51.398Z" }, + { url = "https://files.pythonhosted.org/packages/80/38/d572f6482d45789a7202fb87d052deb7a7b136bf17473ebff33536727a2c/cryptography-45.0.3-cp37-abi3-win32.whl", hash = "sha256:cb6ab89421bc90e0422aca911c69044c2912fc3debb19bb3c1bfe28ee3dff6ab", size = 2924070, upload-time = "2025-05-25T14:16:53.472Z" }, + { url = "https://files.pythonhosted.org/packages/91/5a/61f39c0ff4443651cc64e626fa97ad3099249152039952be8f344d6b0c86/cryptography-45.0.3-cp37-abi3-win_amd64.whl", hash = "sha256:d54ae41e6bd70ea23707843021c778f151ca258081586f0cfa31d936ae43d1b2", size = 3395005, upload-time = "2025-05-25T14:16:55.134Z" }, ] [[package]] @@ -281,27 +281,27 @@ dependencies = [ { name = "requests" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/91/9b/4a2ea29aeba62471211598dac5d96825bb49348fa07e906ea930394a83ce/docker-7.1.0.tar.gz", hash = "sha256:ad8c70e6e3f8926cb8a92619b832b4ea5299e2831c14284663184e200546fa6c", size = 117834 } +sdist = { url = "https://files.pythonhosted.org/packages/91/9b/4a2ea29aeba62471211598dac5d96825bb49348fa07e906ea930394a83ce/docker-7.1.0.tar.gz", hash = "sha256:ad8c70e6e3f8926cb8a92619b832b4ea5299e2831c14284663184e200546fa6c", size = 117834, upload-time = "2024-05-23T11:13:57.216Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e3/26/57c6fb270950d476074c087527a558ccb6f4436657314bfb6cdf484114c4/docker-7.1.0-py3-none-any.whl", hash = "sha256:c96b93b7f0a746f9e77d325bcfb87422a3d8bd4f03136ae8a85b37f1898d5fc0", size = 147774 }, + { url = "https://files.pythonhosted.org/packages/e3/26/57c6fb270950d476074c087527a558ccb6f4436657314bfb6cdf484114c4/docker-7.1.0-py3-none-any.whl", hash = "sha256:c96b93b7f0a746f9e77d325bcfb87422a3d8bd4f03136ae8a85b37f1898d5fc0", size = 147774, upload-time = "2024-05-23T11:13:55.01Z" }, ] [[package]] name = "fastjsonschema" version = "2.21.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8b/50/4b769ce1ac4071a1ef6d86b1a3fb56cdc3a37615e8c5519e1af96cdac366/fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4", size = 373939 } +sdist = { url = "https://files.pythonhosted.org/packages/8b/50/4b769ce1ac4071a1ef6d86b1a3fb56cdc3a37615e8c5519e1af96cdac366/fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4", size = 373939, upload-time = "2024-12-02T10:55:15.133Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/90/2b/0817a2b257fe88725c25589d89aec060581aabf668707a8d03b2e9e0cb2a/fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667", size = 23924 }, + { url = "https://files.pythonhosted.org/packages/90/2b/0817a2b257fe88725c25589d89aec060581aabf668707a8d03b2e9e0cb2a/fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667", size = 23924, upload-time = "2024-12-02T10:55:07.599Z" }, ] [[package]] name = "idna" version = "3.10" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490 } +sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490, upload-time = "2024-09-15T18:07:39.745Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442 }, + { 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" }, ] [[package]] @@ -311,18 +311,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "zipp" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/76/66/650a33bd90f786193e4de4b3ad86ea60b53c89b669a5c7be931fac31cdb0/importlib_metadata-8.7.0.tar.gz", hash = "sha256:d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000", size = 56641 } +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" } wheels = [ - { url = "https://files.pythonhosted.org/packages/20/b0/36bd937216ec521246249be3bf9855081de4c5e06a0c9b4219dbeda50373/importlib_metadata-8.7.0-py3-none-any.whl", hash = "sha256:e5dd1551894c77868a30651cef00984d50e1002d06942a7101d34870c5f02afd", size = 27656 }, + { 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" }, ] [[package]] name = "iniconfig" version = "2.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793 } +sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793, upload-time = "2025-03-19T20:09:59.721Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050 }, + { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050, upload-time = "2025-03-19T20:10:01.071Z" }, ] [[package]] @@ -332,18 +332,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markupsafe" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115 } +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload-time = "2025-03-05T20:05:02.478Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899 }, + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" }, ] [[package]] name = "jmespath" version = "1.0.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/00/2a/e867e8531cf3e36b41201936b7fa7ba7b5702dbef42922193f05c8976cd6/jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe", size = 25843 } +sdist = { url = "https://files.pythonhosted.org/packages/00/2a/e867e8531cf3e36b41201936b7fa7ba7b5702dbef42922193f05c8976cd6/jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe", size = 25843, upload-time = "2022-06-17T18:00:12.224Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/31/b4/b9b800c45527aadd64d5b442f9b932b00648617eb5d63d2c7a6587b7cafc/jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980", size = 20256 }, + { url = "https://files.pythonhosted.org/packages/31/b4/b9b800c45527aadd64d5b442f9b932b00648617eb5d63d2c7a6587b7cafc/jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980", size = 20256, upload-time = "2022-06-17T18:00:10.251Z" }, ] [[package]] @@ -353,47 +353,47 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "ply" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/6d/86/08646239a313f895186ff0a4573452038eed8c86f54380b3ebac34d32fb2/jsonpath-ng-1.7.0.tar.gz", hash = "sha256:f6f5f7fd4e5ff79c785f1573b394043b39849fb2bb47bcead935d12b00beab3c", size = 37838 } +sdist = { url = "https://files.pythonhosted.org/packages/6d/86/08646239a313f895186ff0a4573452038eed8c86f54380b3ebac34d32fb2/jsonpath-ng-1.7.0.tar.gz", hash = "sha256:f6f5f7fd4e5ff79c785f1573b394043b39849fb2bb47bcead935d12b00beab3c", size = 37838, upload-time = "2024-10-11T15:41:42.404Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/35/5a/73ecb3d82f8615f32ccdadeb9356726d6cae3a4bbc840b437ceb95708063/jsonpath_ng-1.7.0-py3-none-any.whl", hash = "sha256:f3d7f9e848cba1b6da28c55b1c26ff915dc9e0b1ba7e752a53d6da8d5cbd00b6", size = 30105 }, + { url = "https://files.pythonhosted.org/packages/35/5a/73ecb3d82f8615f32ccdadeb9356726d6cae3a4bbc840b437ceb95708063/jsonpath_ng-1.7.0-py3-none-any.whl", hash = "sha256:f3d7f9e848cba1b6da28c55b1c26ff915dc9e0b1ba7e752a53d6da8d5cbd00b6", size = 30105, upload-time = "2024-11-20T17:58:30.418Z" }, ] [[package]] name = "markupsafe" version = "3.0.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537 } -wheels = [ - { 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 }, - { 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 }, - { 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 }, - { 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 }, - { 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 }, - { 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 }, - { 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 }, - { 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 }, - { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097 }, - { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601 }, - { 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 }, - { 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 }, - { 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 }, - { url = "https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396", size = 23085 }, - { url = "https://files.pythonhosted.org/packages/c2/cf/c9d56af24d56ea04daae7ac0940232d31d5a8354f2b457c6d856b2057d69/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79", size = 22978 }, - { url = "https://files.pythonhosted.org/packages/2a/9f/8619835cd6a711d6272d62abb78c033bda638fdc54c4e7f4272cf1c0962b/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a", size = 24208 }, - { url = "https://files.pythonhosted.org/packages/f9/bf/176950a1792b2cd2102b8ffeb5133e1ed984547b75db47c25a67d3359f77/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca", size = 23357 }, - { url = "https://files.pythonhosted.org/packages/ce/4f/9a02c1d335caabe5c4efb90e1b6e8ee944aa245c1aaaab8e8a618987d816/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c", size = 23344 }, - { url = "https://files.pythonhosted.org/packages/ee/55/c271b57db36f748f0e04a759ace9f8f759ccf22b4960c270c78a394f58be/MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1", size = 15101 }, - { url = "https://files.pythonhosted.org/packages/29/88/07df22d2dd4df40aba9f3e402e6dc1b8ee86297dddbad4872bd5e7b0094f/MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f", size = 15603 }, - { url = "https://files.pythonhosted.org/packages/62/6a/8b89d24db2d32d433dffcd6a8779159da109842434f1dd2f6e71f32f738c/MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c", size = 14510 }, - { url = "https://files.pythonhosted.org/packages/7a/06/a10f955f70a2e5a9bf78d11a161029d278eeacbd35ef806c3fd17b13060d/MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb", size = 12486 }, - { url = "https://files.pythonhosted.org/packages/34/cf/65d4a571869a1a9078198ca28f39fba5fbb910f952f9dbc5220afff9f5e6/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c", size = 25480 }, - { url = "https://files.pythonhosted.org/packages/0c/e3/90e9651924c430b885468b56b3d597cabf6d72be4b24a0acd1fa0e12af67/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d", size = 23914 }, - { url = "https://files.pythonhosted.org/packages/66/8c/6c7cf61f95d63bb866db39085150df1f2a5bd3335298f14a66b48e92659c/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe", size = 23796 }, - { url = "https://files.pythonhosted.org/packages/bb/35/cbe9238ec3f47ac9a7c8b3df7a808e7cb50fe149dc7039f5f454b3fba218/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5", size = 25473 }, - { url = "https://files.pythonhosted.org/packages/e6/32/7621a4382488aa283cc05e8984a9c219abad3bca087be9ec77e89939ded9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a", size = 24114 }, - { url = "https://files.pythonhosted.org/packages/0d/80/0985960e4b89922cb5a0bac0ed39c5b96cbc1a536a99f30e8c220a996ed9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9", size = 24098 }, - { url = "https://files.pythonhosted.org/packages/82/78/fedb03c7d5380df2427038ec8d973587e90561b2d90cd472ce9254cf348b/MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6", size = 15208 }, - { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739 }, +sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537, upload-time = "2024-10-18T15:21:54.129Z" } +wheels = [ + { 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, upload-time = "2024-10-18T15:21:13.777Z" }, + { 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, upload-time = "2024-10-18T15:21:14.822Z" }, + { 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, upload-time = "2024-10-18T15:21:15.642Z" }, + { 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, upload-time = "2024-10-18T15:21:17.133Z" }, + { 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, upload-time = "2024-10-18T15:21:18.064Z" }, + { 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, upload-time = "2024-10-18T15:21:18.859Z" }, + { 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, upload-time = "2024-10-18T15:21:19.671Z" }, + { 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, upload-time = "2024-10-18T15:21:20.971Z" }, + { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097, upload-time = "2024-10-18T15:21:22.646Z" }, + { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601, upload-time = "2024-10-18T15:21:23.499Z" }, + { 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, upload-time = "2024-10-18T15:21:24.577Z" }, + { 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, upload-time = "2024-10-18T15:21:25.382Z" }, + { 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, upload-time = "2024-10-18T15:21:26.199Z" }, + { url = "https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396", size = 23085, upload-time = "2024-10-18T15:21:27.029Z" }, + { url = "https://files.pythonhosted.org/packages/c2/cf/c9d56af24d56ea04daae7ac0940232d31d5a8354f2b457c6d856b2057d69/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79", size = 22978, upload-time = "2024-10-18T15:21:27.846Z" }, + { url = "https://files.pythonhosted.org/packages/2a/9f/8619835cd6a711d6272d62abb78c033bda638fdc54c4e7f4272cf1c0962b/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a", size = 24208, upload-time = "2024-10-18T15:21:28.744Z" }, + { url = "https://files.pythonhosted.org/packages/f9/bf/176950a1792b2cd2102b8ffeb5133e1ed984547b75db47c25a67d3359f77/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca", size = 23357, upload-time = "2024-10-18T15:21:29.545Z" }, + { url = "https://files.pythonhosted.org/packages/ce/4f/9a02c1d335caabe5c4efb90e1b6e8ee944aa245c1aaaab8e8a618987d816/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c", size = 23344, upload-time = "2024-10-18T15:21:30.366Z" }, + { url = "https://files.pythonhosted.org/packages/ee/55/c271b57db36f748f0e04a759ace9f8f759ccf22b4960c270c78a394f58be/MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1", size = 15101, upload-time = "2024-10-18T15:21:31.207Z" }, + { url = "https://files.pythonhosted.org/packages/29/88/07df22d2dd4df40aba9f3e402e6dc1b8ee86297dddbad4872bd5e7b0094f/MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f", size = 15603, upload-time = "2024-10-18T15:21:32.032Z" }, + { url = "https://files.pythonhosted.org/packages/62/6a/8b89d24db2d32d433dffcd6a8779159da109842434f1dd2f6e71f32f738c/MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c", size = 14510, upload-time = "2024-10-18T15:21:33.625Z" }, + { url = "https://files.pythonhosted.org/packages/7a/06/a10f955f70a2e5a9bf78d11a161029d278eeacbd35ef806c3fd17b13060d/MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb", size = 12486, upload-time = "2024-10-18T15:21:34.611Z" }, + { url = "https://files.pythonhosted.org/packages/34/cf/65d4a571869a1a9078198ca28f39fba5fbb910f952f9dbc5220afff9f5e6/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c", size = 25480, upload-time = "2024-10-18T15:21:35.398Z" }, + { url = "https://files.pythonhosted.org/packages/0c/e3/90e9651924c430b885468b56b3d597cabf6d72be4b24a0acd1fa0e12af67/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d", size = 23914, upload-time = "2024-10-18T15:21:36.231Z" }, + { url = "https://files.pythonhosted.org/packages/66/8c/6c7cf61f95d63bb866db39085150df1f2a5bd3335298f14a66b48e92659c/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe", size = 23796, upload-time = "2024-10-18T15:21:37.073Z" }, + { url = "https://files.pythonhosted.org/packages/bb/35/cbe9238ec3f47ac9a7c8b3df7a808e7cb50fe149dc7039f5f454b3fba218/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5", size = 25473, upload-time = "2024-10-18T15:21:37.932Z" }, + { url = "https://files.pythonhosted.org/packages/e6/32/7621a4382488aa283cc05e8984a9c219abad3bca087be9ec77e89939ded9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a", size = 24114, upload-time = "2024-10-18T15:21:39.799Z" }, + { url = "https://files.pythonhosted.org/packages/0d/80/0985960e4b89922cb5a0bac0ed39c5b96cbc1a536a99f30e8c220a996ed9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9", size = 24098, upload-time = "2024-10-18T15:21:40.813Z" }, + { url = "https://files.pythonhosted.org/packages/82/78/fedb03c7d5380df2427038ec8d973587e90561b2d90cd472ce9254cf348b/MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6", size = 15208, upload-time = "2024-10-18T15:21:41.814Z" }, + { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739, upload-time = "2024-10-18T15:21:42.784Z" }, ] [[package]] @@ -411,9 +411,9 @@ dependencies = [ { name = "werkzeug" }, { name = "xmltodict" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/24/9f/5cacf53cbd26b4a77c817fd4fbec2ed38139ba2cfcd842c279aa19ee161f/moto-5.1.5.tar.gz", hash = "sha256:42b362ea9a16181e8e7b615ac212c294b882f020e9ae02f01230f167926df84e", size = 6893155 } +sdist = { url = "https://files.pythonhosted.org/packages/24/9f/5cacf53cbd26b4a77c817fd4fbec2ed38139ba2cfcd842c279aa19ee161f/moto-5.1.5.tar.gz", hash = "sha256:42b362ea9a16181e8e7b615ac212c294b882f020e9ae02f01230f167926df84e", size = 6893155, upload-time = "2025-05-24T12:19:55.398Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/84/0f/72a420e972a9e782d08843ced85d29f04c8470c66fc84ecb1c8a7e7abcf8/moto-5.1.5-py3-none-any.whl", hash = "sha256:866ae85eb5efe11a78f991127531878fd7f49177eb4a6680f47060430eb8932d", size = 4992353 }, + { url = "https://files.pythonhosted.org/packages/84/0f/72a420e972a9e782d08843ced85d29f04c8470c66fc84ecb1c8a7e7abcf8/moto-5.1.5-py3-none-any.whl", hash = "sha256:866ae85eb5efe11a78f991127531878fd7f49177eb4a6680f47060430eb8932d", size = 4992353, upload-time = "2025-05-24T12:19:53.435Z" }, ] [package.optional-dependencies] @@ -429,45 +429,45 @@ events = [ name = "packaging" version = "25.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727 } +sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727, upload-time = "2025-04-19T11:48:59.673Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469 }, + { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload-time = "2025-04-19T11:48:57.875Z" }, ] [[package]] name = "pluggy" version = "1.6.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412 } +sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412, upload-time = "2025-05-15T12:30:07.975Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538 }, + { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" }, ] [[package]] name = "ply" version = "3.11" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e5/69/882ee5c9d017149285cab114ebeab373308ef0f874fcdac9beb90e0ac4da/ply-3.11.tar.gz", hash = "sha256:00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3", size = 159130 } +sdist = { url = "https://files.pythonhosted.org/packages/e5/69/882ee5c9d017149285cab114ebeab373308ef0f874fcdac9beb90e0ac4da/ply-3.11.tar.gz", hash = "sha256:00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3", size = 159130, upload-time = "2018-02-15T19:01:31.097Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a3/58/35da89ee790598a0700ea49b2a66594140f44dec458c07e8e3d4979137fc/ply-3.11-py2.py3-none-any.whl", hash = "sha256:096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce", size = 49567 }, + { url = "https://files.pythonhosted.org/packages/a3/58/35da89ee790598a0700ea49b2a66594140f44dec458c07e8e3d4979137fc/ply-3.11-py2.py3-none-any.whl", hash = "sha256:096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce", size = 49567, upload-time = "2018-02-15T19:01:27.172Z" }, ] [[package]] name = "py-partiql-parser" version = "0.6.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/58/a1/0a2867e48b232b4f82c4929ef7135f2a5d72c3886b957dccf63c70aa2fcb/py_partiql_parser-0.6.1.tar.gz", hash = "sha256:8583ff2a0e15560ef3bc3df109a7714d17f87d81d33e8c38b7fed4e58a63215d", size = 17120 } +sdist = { url = "https://files.pythonhosted.org/packages/58/a1/0a2867e48b232b4f82c4929ef7135f2a5d72c3886b957dccf63c70aa2fcb/py_partiql_parser-0.6.1.tar.gz", hash = "sha256:8583ff2a0e15560ef3bc3df109a7714d17f87d81d33e8c38b7fed4e58a63215d", size = 17120, upload-time = "2024-12-25T22:06:41.327Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/97/84/0e410c20bbe9a504fc56e97908f13261c2b313d16cbb3b738556166f044a/py_partiql_parser-0.6.1-py2.py3-none-any.whl", hash = "sha256:ff6a48067bff23c37e9044021bf1d949c83e195490c17e020715e927fe5b2456", size = 23520 }, + { url = "https://files.pythonhosted.org/packages/97/84/0e410c20bbe9a504fc56e97908f13261c2b313d16cbb3b738556166f044a/py_partiql_parser-0.6.1-py2.py3-none-any.whl", hash = "sha256:ff6a48067bff23c37e9044021bf1d949c83e195490c17e020715e927fe5b2456", size = 23520, upload-time = "2024-12-25T22:06:39.106Z" }, ] [[package]] name = "pycparser" version = "2.22" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", size = 172736 } +sdist = { url = "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", size = 172736, upload-time = "2024-03-30T13:22:22.564Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552 }, + { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552, upload-time = "2024-03-30T13:22:20.476Z" }, ] [[package]] @@ -480,9 +480,9 @@ dependencies = [ { name = "typing-extensions" }, { name = "typing-inspection" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f0/86/8ce9040065e8f924d642c58e4a344e33163a07f6b57f836d0d734e0ad3fb/pydantic-2.11.5.tar.gz", hash = "sha256:7f853db3d0ce78ce8bbb148c401c2cdd6431b3473c0cdff2755c7690952a7b7a", size = 787102 } +sdist = { url = "https://files.pythonhosted.org/packages/f0/86/8ce9040065e8f924d642c58e4a344e33163a07f6b57f836d0d734e0ad3fb/pydantic-2.11.5.tar.gz", hash = "sha256:7f853db3d0ce78ce8bbb148c401c2cdd6431b3473c0cdff2755c7690952a7b7a", size = 787102, upload-time = "2025-05-22T21:18:08.761Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b5/69/831ed22b38ff9b4b64b66569f0e5b7b97cf3638346eb95a2147fdb49ad5f/pydantic-2.11.5-py3-none-any.whl", hash = "sha256:f9c26ba06f9747749ca1e5c94d6a85cb84254577553c8785576fd38fa64dc0f7", size = 444229 }, + { url = "https://files.pythonhosted.org/packages/b5/69/831ed22b38ff9b4b64b66569f0e5b7b97cf3638346eb95a2147fdb49ad5f/pydantic-2.11.5-py3-none-any.whl", hash = "sha256:f9c26ba06f9747749ca1e5c94d6a85cb84254577553c8785576fd38fa64dc0f7", size = 444229, upload-time = "2025-05-22T21:18:06.329Z" }, ] [[package]] @@ -492,39 +492,39 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc", size = 435195 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/18/8a/2b41c97f554ec8c71f2a8a5f85cb56a8b0956addfe8b0efb5b3d77e8bdc3/pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc", size = 2009000 }, - { url = "https://files.pythonhosted.org/packages/a1/02/6224312aacb3c8ecbaa959897af57181fb6cf3a3d7917fd44d0f2917e6f2/pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7", size = 1847996 }, - { url = "https://files.pythonhosted.org/packages/d6/46/6dcdf084a523dbe0a0be59d054734b86a981726f221f4562aed313dbcb49/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025", size = 1880957 }, - { url = "https://files.pythonhosted.org/packages/ec/6b/1ec2c03837ac00886ba8160ce041ce4e325b41d06a034adbef11339ae422/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011", size = 1964199 }, - { url = "https://files.pythonhosted.org/packages/2d/1d/6bf34d6adb9debd9136bd197ca72642203ce9aaaa85cfcbfcf20f9696e83/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f", size = 2120296 }, - { url = "https://files.pythonhosted.org/packages/e0/94/2bd0aaf5a591e974b32a9f7123f16637776c304471a0ab33cf263cf5591a/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88", size = 2676109 }, - { url = "https://files.pythonhosted.org/packages/f9/41/4b043778cf9c4285d59742281a769eac371b9e47e35f98ad321349cc5d61/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1", size = 2002028 }, - { url = "https://files.pythonhosted.org/packages/cb/d5/7bb781bf2748ce3d03af04d5c969fa1308880e1dca35a9bd94e1a96a922e/pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b", size = 2100044 }, - { url = "https://files.pythonhosted.org/packages/fe/36/def5e53e1eb0ad896785702a5bbfd25eed546cdcf4087ad285021a90ed53/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1", size = 2058881 }, - { url = "https://files.pythonhosted.org/packages/01/6c/57f8d70b2ee57fc3dc8b9610315949837fa8c11d86927b9bb044f8705419/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6", size = 2227034 }, - { url = "https://files.pythonhosted.org/packages/27/b9/9c17f0396a82b3d5cbea4c24d742083422639e7bb1d5bf600e12cb176a13/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea", size = 2234187 }, - { url = "https://files.pythonhosted.org/packages/b0/6a/adf5734ffd52bf86d865093ad70b2ce543415e0e356f6cacabbc0d9ad910/pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290", size = 1892628 }, - { url = "https://files.pythonhosted.org/packages/43/e4/5479fecb3606c1368d496a825d8411e126133c41224c1e7238be58b87d7e/pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2", size = 1955866 }, - { url = "https://files.pythonhosted.org/packages/0d/24/8b11e8b3e2be9dd82df4b11408a67c61bb4dc4f8e11b5b0fc888b38118b5/pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab", size = 1888894 }, - { url = "https://files.pythonhosted.org/packages/46/8c/99040727b41f56616573a28771b1bfa08a3d3fe74d3d513f01251f79f172/pydantic_core-2.33.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1082dd3e2d7109ad8b7da48e1d4710c8d06c253cbc4a27c1cff4fbcaa97a9e3f", size = 2015688 }, - { url = "https://files.pythonhosted.org/packages/3a/cc/5999d1eb705a6cefc31f0b4a90e9f7fc400539b1a1030529700cc1b51838/pydantic_core-2.33.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f517ca031dfc037a9c07e748cefd8d96235088b83b4f4ba8939105d20fa1dcd6", size = 1844808 }, - { url = "https://files.pythonhosted.org/packages/6f/5e/a0a7b8885c98889a18b6e376f344da1ef323d270b44edf8174d6bce4d622/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a9f2c9dd19656823cb8250b0724ee9c60a82f3cdf68a080979d13092a3b0fef", size = 1885580 }, - { url = "https://files.pythonhosted.org/packages/3b/2a/953581f343c7d11a304581156618c3f592435523dd9d79865903272c256a/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b0a451c263b01acebe51895bfb0e1cc842a5c666efe06cdf13846c7418caa9a", size = 1973859 }, - { url = "https://files.pythonhosted.org/packages/e6/55/f1a813904771c03a3f97f676c62cca0c0a4138654107c1b61f19c644868b/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ea40a64d23faa25e62a70ad163571c0b342b8bf66d5fa612ac0dec4f069d916", size = 2120810 }, - { url = "https://files.pythonhosted.org/packages/aa/c3/053389835a996e18853ba107a63caae0b9deb4a276c6b472931ea9ae6e48/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb2d542b4d66f9470e8065c5469ec676978d625a8b7a363f07d9a501a9cb36a", size = 2676498 }, - { url = "https://files.pythonhosted.org/packages/eb/3c/f4abd740877a35abade05e437245b192f9d0ffb48bbbbd708df33d3cda37/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdac5d6ffa1b5a83bca06ffe7583f5576555e6c8b3a91fbd25ea7780f825f7d", size = 2000611 }, - { url = "https://files.pythonhosted.org/packages/59/a7/63ef2fed1837d1121a894d0ce88439fe3e3b3e48c7543b2a4479eb99c2bd/pydantic_core-2.33.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04a1a413977ab517154eebb2d326da71638271477d6ad87a769102f7c2488c56", size = 2107924 }, - { url = "https://files.pythonhosted.org/packages/04/8f/2551964ef045669801675f1cfc3b0d74147f4901c3ffa42be2ddb1f0efc4/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c8e7af2f4e0194c22b5b37205bfb293d166a7344a5b0d0eaccebc376546d77d5", size = 2063196 }, - { url = "https://files.pythonhosted.org/packages/26/bd/d9602777e77fc6dbb0c7db9ad356e9a985825547dce5ad1d30ee04903918/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:5c92edd15cd58b3c2d34873597a1e20f13094f59cf88068adb18947df5455b4e", size = 2236389 }, - { url = "https://files.pythonhosted.org/packages/42/db/0e950daa7e2230423ab342ae918a794964b053bec24ba8af013fc7c94846/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:65132b7b4a1c0beded5e057324b7e16e10910c106d43675d9bd87d4f38dde162", size = 2239223 }, - { url = "https://files.pythonhosted.org/packages/58/4d/4f937099c545a8a17eb52cb67fe0447fd9a373b348ccfa9a87f141eeb00f/pydantic_core-2.33.2-cp313-cp313-win32.whl", hash = "sha256:52fb90784e0a242bb96ec53f42196a17278855b0f31ac7c3cc6f5c1ec4811849", size = 1900473 }, - { url = "https://files.pythonhosted.org/packages/a0/75/4a0a9bac998d78d889def5e4ef2b065acba8cae8c93696906c3a91f310ca/pydantic_core-2.33.2-cp313-cp313-win_amd64.whl", hash = "sha256:c083a3bdd5a93dfe480f1125926afcdbf2917ae714bdb80b36d34318b2bec5d9", size = 1955269 }, - { url = "https://files.pythonhosted.org/packages/f9/86/1beda0576969592f1497b4ce8e7bc8cbdf614c352426271b1b10d5f0aa64/pydantic_core-2.33.2-cp313-cp313-win_arm64.whl", hash = "sha256:e80b087132752f6b3d714f041ccf74403799d3b23a72722ea2e6ba2e892555b9", size = 1893921 }, - { url = "https://files.pythonhosted.org/packages/a4/7d/e09391c2eebeab681df2b74bfe6c43422fffede8dc74187b2b0bf6fd7571/pydantic_core-2.33.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61c18fba8e5e9db3ab908620af374db0ac1baa69f0f32df4f61ae23f15e586ac", size = 1806162 }, - { url = "https://files.pythonhosted.org/packages/f1/3d/847b6b1fed9f8ed3bb95a9ad04fbd0b212e832d4f0f50ff4d9ee5a9f15cf/pydantic_core-2.33.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95237e53bb015f67b63c91af7518a62a8660376a6a0db19b89acc77a4d6199f5", size = 1981560 }, - { url = "https://files.pythonhosted.org/packages/6f/9a/e73262f6c6656262b5fdd723ad90f518f579b7bc8622e43a942eec53c938/pydantic_core-2.33.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c2fc0a768ef76c15ab9238afa6da7f69895bb5d1ee83aeea2e3509af4472d0b9", size = 1935777 }, +sdist = { url = "https://files.pythonhosted.org/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc", size = 435195, upload-time = "2025-04-23T18:33:52.104Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/8a/2b41c97f554ec8c71f2a8a5f85cb56a8b0956addfe8b0efb5b3d77e8bdc3/pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc", size = 2009000, upload-time = "2025-04-23T18:31:25.863Z" }, + { url = "https://files.pythonhosted.org/packages/a1/02/6224312aacb3c8ecbaa959897af57181fb6cf3a3d7917fd44d0f2917e6f2/pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7", size = 1847996, upload-time = "2025-04-23T18:31:27.341Z" }, + { url = "https://files.pythonhosted.org/packages/d6/46/6dcdf084a523dbe0a0be59d054734b86a981726f221f4562aed313dbcb49/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025", size = 1880957, upload-time = "2025-04-23T18:31:28.956Z" }, + { url = "https://files.pythonhosted.org/packages/ec/6b/1ec2c03837ac00886ba8160ce041ce4e325b41d06a034adbef11339ae422/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011", size = 1964199, upload-time = "2025-04-23T18:31:31.025Z" }, + { url = "https://files.pythonhosted.org/packages/2d/1d/6bf34d6adb9debd9136bd197ca72642203ce9aaaa85cfcbfcf20f9696e83/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f", size = 2120296, upload-time = "2025-04-23T18:31:32.514Z" }, + { url = "https://files.pythonhosted.org/packages/e0/94/2bd0aaf5a591e974b32a9f7123f16637776c304471a0ab33cf263cf5591a/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88", size = 2676109, upload-time = "2025-04-23T18:31:33.958Z" }, + { url = "https://files.pythonhosted.org/packages/f9/41/4b043778cf9c4285d59742281a769eac371b9e47e35f98ad321349cc5d61/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1", size = 2002028, upload-time = "2025-04-23T18:31:39.095Z" }, + { url = "https://files.pythonhosted.org/packages/cb/d5/7bb781bf2748ce3d03af04d5c969fa1308880e1dca35a9bd94e1a96a922e/pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b", size = 2100044, upload-time = "2025-04-23T18:31:41.034Z" }, + { url = "https://files.pythonhosted.org/packages/fe/36/def5e53e1eb0ad896785702a5bbfd25eed546cdcf4087ad285021a90ed53/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1", size = 2058881, upload-time = "2025-04-23T18:31:42.757Z" }, + { url = "https://files.pythonhosted.org/packages/01/6c/57f8d70b2ee57fc3dc8b9610315949837fa8c11d86927b9bb044f8705419/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6", size = 2227034, upload-time = "2025-04-23T18:31:44.304Z" }, + { url = "https://files.pythonhosted.org/packages/27/b9/9c17f0396a82b3d5cbea4c24d742083422639e7bb1d5bf600e12cb176a13/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea", size = 2234187, upload-time = "2025-04-23T18:31:45.891Z" }, + { url = "https://files.pythonhosted.org/packages/b0/6a/adf5734ffd52bf86d865093ad70b2ce543415e0e356f6cacabbc0d9ad910/pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290", size = 1892628, upload-time = "2025-04-23T18:31:47.819Z" }, + { url = "https://files.pythonhosted.org/packages/43/e4/5479fecb3606c1368d496a825d8411e126133c41224c1e7238be58b87d7e/pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2", size = 1955866, upload-time = "2025-04-23T18:31:49.635Z" }, + { url = "https://files.pythonhosted.org/packages/0d/24/8b11e8b3e2be9dd82df4b11408a67c61bb4dc4f8e11b5b0fc888b38118b5/pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab", size = 1888894, upload-time = "2025-04-23T18:31:51.609Z" }, + { url = "https://files.pythonhosted.org/packages/46/8c/99040727b41f56616573a28771b1bfa08a3d3fe74d3d513f01251f79f172/pydantic_core-2.33.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1082dd3e2d7109ad8b7da48e1d4710c8d06c253cbc4a27c1cff4fbcaa97a9e3f", size = 2015688, upload-time = "2025-04-23T18:31:53.175Z" }, + { url = "https://files.pythonhosted.org/packages/3a/cc/5999d1eb705a6cefc31f0b4a90e9f7fc400539b1a1030529700cc1b51838/pydantic_core-2.33.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f517ca031dfc037a9c07e748cefd8d96235088b83b4f4ba8939105d20fa1dcd6", size = 1844808, upload-time = "2025-04-23T18:31:54.79Z" }, + { url = "https://files.pythonhosted.org/packages/6f/5e/a0a7b8885c98889a18b6e376f344da1ef323d270b44edf8174d6bce4d622/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a9f2c9dd19656823cb8250b0724ee9c60a82f3cdf68a080979d13092a3b0fef", size = 1885580, upload-time = "2025-04-23T18:31:57.393Z" }, + { url = "https://files.pythonhosted.org/packages/3b/2a/953581f343c7d11a304581156618c3f592435523dd9d79865903272c256a/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b0a451c263b01acebe51895bfb0e1cc842a5c666efe06cdf13846c7418caa9a", size = 1973859, upload-time = "2025-04-23T18:31:59.065Z" }, + { url = "https://files.pythonhosted.org/packages/e6/55/f1a813904771c03a3f97f676c62cca0c0a4138654107c1b61f19c644868b/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ea40a64d23faa25e62a70ad163571c0b342b8bf66d5fa612ac0dec4f069d916", size = 2120810, upload-time = "2025-04-23T18:32:00.78Z" }, + { url = "https://files.pythonhosted.org/packages/aa/c3/053389835a996e18853ba107a63caae0b9deb4a276c6b472931ea9ae6e48/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb2d542b4d66f9470e8065c5469ec676978d625a8b7a363f07d9a501a9cb36a", size = 2676498, upload-time = "2025-04-23T18:32:02.418Z" }, + { url = "https://files.pythonhosted.org/packages/eb/3c/f4abd740877a35abade05e437245b192f9d0ffb48bbbbd708df33d3cda37/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdac5d6ffa1b5a83bca06ffe7583f5576555e6c8b3a91fbd25ea7780f825f7d", size = 2000611, upload-time = "2025-04-23T18:32:04.152Z" }, + { url = "https://files.pythonhosted.org/packages/59/a7/63ef2fed1837d1121a894d0ce88439fe3e3b3e48c7543b2a4479eb99c2bd/pydantic_core-2.33.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04a1a413977ab517154eebb2d326da71638271477d6ad87a769102f7c2488c56", size = 2107924, upload-time = "2025-04-23T18:32:06.129Z" }, + { url = "https://files.pythonhosted.org/packages/04/8f/2551964ef045669801675f1cfc3b0d74147f4901c3ffa42be2ddb1f0efc4/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c8e7af2f4e0194c22b5b37205bfb293d166a7344a5b0d0eaccebc376546d77d5", size = 2063196, upload-time = "2025-04-23T18:32:08.178Z" }, + { url = "https://files.pythonhosted.org/packages/26/bd/d9602777e77fc6dbb0c7db9ad356e9a985825547dce5ad1d30ee04903918/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:5c92edd15cd58b3c2d34873597a1e20f13094f59cf88068adb18947df5455b4e", size = 2236389, upload-time = "2025-04-23T18:32:10.242Z" }, + { url = "https://files.pythonhosted.org/packages/42/db/0e950daa7e2230423ab342ae918a794964b053bec24ba8af013fc7c94846/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:65132b7b4a1c0beded5e057324b7e16e10910c106d43675d9bd87d4f38dde162", size = 2239223, upload-time = "2025-04-23T18:32:12.382Z" }, + { url = "https://files.pythonhosted.org/packages/58/4d/4f937099c545a8a17eb52cb67fe0447fd9a373b348ccfa9a87f141eeb00f/pydantic_core-2.33.2-cp313-cp313-win32.whl", hash = "sha256:52fb90784e0a242bb96ec53f42196a17278855b0f31ac7c3cc6f5c1ec4811849", size = 1900473, upload-time = "2025-04-23T18:32:14.034Z" }, + { url = "https://files.pythonhosted.org/packages/a0/75/4a0a9bac998d78d889def5e4ef2b065acba8cae8c93696906c3a91f310ca/pydantic_core-2.33.2-cp313-cp313-win_amd64.whl", hash = "sha256:c083a3bdd5a93dfe480f1125926afcdbf2917ae714bdb80b36d34318b2bec5d9", size = 1955269, upload-time = "2025-04-23T18:32:15.783Z" }, + { url = "https://files.pythonhosted.org/packages/f9/86/1beda0576969592f1497b4ce8e7bc8cbdf614c352426271b1b10d5f0aa64/pydantic_core-2.33.2-cp313-cp313-win_arm64.whl", hash = "sha256:e80b087132752f6b3d714f041ccf74403799d3b23a72722ea2e6ba2e892555b9", size = 1893921, upload-time = "2025-04-23T18:32:18.473Z" }, + { url = "https://files.pythonhosted.org/packages/a4/7d/e09391c2eebeab681df2b74bfe6c43422fffede8dc74187b2b0bf6fd7571/pydantic_core-2.33.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61c18fba8e5e9db3ab908620af374db0ac1baa69f0f32df4f61ae23f15e586ac", size = 1806162, upload-time = "2025-04-23T18:32:20.188Z" }, + { url = "https://files.pythonhosted.org/packages/f1/3d/847b6b1fed9f8ed3bb95a9ad04fbd0b212e832d4f0f50ff4d9ee5a9f15cf/pydantic_core-2.33.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95237e53bb015f67b63c91af7518a62a8660376a6a0db19b89acc77a4d6199f5", size = 1981560, upload-time = "2025-04-23T18:32:22.354Z" }, + { url = "https://files.pythonhosted.org/packages/6f/9a/e73262f6c6656262b5fdd723ad90f518f579b7bc8622e43a942eec53c938/pydantic_core-2.33.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c2fc0a768ef76c15ab9238afa6da7f69895bb5d1ee83aeea2e3509af4472d0b9", size = 1935777, upload-time = "2025-04-23T18:32:25.088Z" }, ] [[package]] @@ -536,9 +536,9 @@ dependencies = [ { name = "python-dotenv" }, { name = "typing-inspection" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/67/1d/42628a2c33e93f8e9acbde0d5d735fa0850f3e6a2f8cb1eb6c40b9a732ac/pydantic_settings-2.9.1.tar.gz", hash = "sha256:c509bf79d27563add44e8446233359004ed85066cd096d8b510f715e6ef5d268", size = 163234 } +sdist = { url = "https://files.pythonhosted.org/packages/67/1d/42628a2c33e93f8e9acbde0d5d735fa0850f3e6a2f8cb1eb6c40b9a732ac/pydantic_settings-2.9.1.tar.gz", hash = "sha256:c509bf79d27563add44e8446233359004ed85066cd096d8b510f715e6ef5d268", size = 163234, upload-time = "2025-04-18T16:44:48.265Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b6/5f/d6d641b490fd3ec2c4c13b4244d68deea3a1b970a97be64f34fb5504ff72/pydantic_settings-2.9.1-py3-none-any.whl", hash = "sha256:59b4f431b1defb26fe620c71a7d3968a710d719f5f4cdbbdb7926edeb770f6ef", size = 44356 }, + { url = "https://files.pythonhosted.org/packages/b6/5f/d6d641b490fd3ec2c4c13b4244d68deea3a1b970a97be64f34fb5504ff72/pydantic_settings-2.9.1-py3-none-any.whl", hash = "sha256:59b4f431b1defb26fe620c71a7d3968a710d719f5f4cdbbdb7926edeb770f6ef", size = 44356, upload-time = "2025-04-18T16:44:46.617Z" }, ] [[package]] @@ -551,9 +551,9 @@ dependencies = [ { name = "packaging" }, { name = "pluggy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ae/3c/c9d525a414d506893f0cd8a8d0de7706446213181570cdbd766691164e40/pytest-8.3.5.tar.gz", hash = "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845", size = 1450891 } +sdist = { url = "https://files.pythonhosted.org/packages/ae/3c/c9d525a414d506893f0cd8a8d0de7706446213181570cdbd766691164e40/pytest-8.3.5.tar.gz", hash = "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845", size = 1450891, upload-time = "2025-03-02T12:54:54.503Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/30/3d/64ad57c803f1fa1e963a7946b6e0fea4a70df53c1a7fed304586539c2bac/pytest-8.3.5-py3-none-any.whl", hash = "sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820", size = 343634 }, + { url = "https://files.pythonhosted.org/packages/30/3d/64ad57c803f1fa1e963a7946b6e0fea4a70df53c1a7fed304586539c2bac/pytest-8.3.5-py3-none-any.whl", hash = "sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820", size = 343634, upload-time = "2025-03-02T12:54:52.069Z" }, ] [[package]] @@ -563,18 +563,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "six" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432 } +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892 }, + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, ] [[package]] name = "python-dotenv" version = "1.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/88/2c/7bb1416c5620485aa793f2de31d3df393d3686aa8a8506d11e10e13c5baf/python_dotenv-1.1.0.tar.gz", hash = "sha256:41f90bc6f5f177fb41f53e87666db362025010eb28f60a01c9143bfa33a2b2d5", size = 39920 } +sdist = { url = "https://files.pythonhosted.org/packages/88/2c/7bb1416c5620485aa793f2de31d3df393d3686aa8a8506d11e10e13c5baf/python_dotenv-1.1.0.tar.gz", hash = "sha256:41f90bc6f5f177fb41f53e87666db362025010eb28f60a01c9143bfa33a2b2d5", size = 39920, upload-time = "2025-03-25T10:14:56.835Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/1e/18/98a99ad95133c6a6e2005fe89faedf294a748bd5dc803008059409ac9b1e/python_dotenv-1.1.0-py3-none-any.whl", hash = "sha256:d7c01d9e2293916c18baf562d95698754b0dbbb5e74d457c45d4f6561fb9d55d", size = 20256 }, + { url = "https://files.pythonhosted.org/packages/1e/18/98a99ad95133c6a6e2005fe89faedf294a748bd5dc803008059409ac9b1e/python_dotenv-1.1.0-py3-none-any.whl", hash = "sha256:d7c01d9e2293916c18baf562d95698754b0dbbb5e74d457c45d4f6561fb9d55d", size = 20256, upload-time = "2025-03-25T10:14:55.034Z" }, ] [[package]] @@ -582,38 +582,38 @@ name = "pywin32" version = "310" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6b/ec/4fdbe47932f671d6e348474ea35ed94227fb5df56a7c30cbbb42cd396ed0/pywin32-310-cp312-cp312-win32.whl", hash = "sha256:8a75a5cc3893e83a108c05d82198880704c44bbaee4d06e442e471d3c9ea4f3d", size = 8796239 }, - { url = "https://files.pythonhosted.org/packages/e3/e5/b0627f8bb84e06991bea89ad8153a9e50ace40b2e1195d68e9dff6b03d0f/pywin32-310-cp312-cp312-win_amd64.whl", hash = "sha256:bf5c397c9a9a19a6f62f3fb821fbf36cac08f03770056711f765ec1503972060", size = 9503839 }, - { url = "https://files.pythonhosted.org/packages/1f/32/9ccf53748df72301a89713936645a664ec001abd35ecc8578beda593d37d/pywin32-310-cp312-cp312-win_arm64.whl", hash = "sha256:2349cc906eae872d0663d4d6290d13b90621eaf78964bb1578632ff20e152966", size = 8459470 }, - { url = "https://files.pythonhosted.org/packages/1c/09/9c1b978ffc4ae53999e89c19c77ba882d9fce476729f23ef55211ea1c034/pywin32-310-cp313-cp313-win32.whl", hash = "sha256:5d241a659c496ada3253cd01cfaa779b048e90ce4b2b38cd44168ad555ce74ab", size = 8794384 }, - { url = "https://files.pythonhosted.org/packages/45/3c/b4640f740ffebadd5d34df35fecba0e1cfef8fde9f3e594df91c28ad9b50/pywin32-310-cp313-cp313-win_amd64.whl", hash = "sha256:667827eb3a90208ddbdcc9e860c81bde63a135710e21e4cb3348968e4bd5249e", size = 9503039 }, - { url = "https://files.pythonhosted.org/packages/b4/f4/f785020090fb050e7fb6d34b780f2231f302609dc964672f72bfaeb59a28/pywin32-310-cp313-cp313-win_arm64.whl", hash = "sha256:e308f831de771482b7cf692a1f308f8fca701b2d8f9dde6cc440c7da17e47b33", size = 8458152 }, + { url = "https://files.pythonhosted.org/packages/6b/ec/4fdbe47932f671d6e348474ea35ed94227fb5df56a7c30cbbb42cd396ed0/pywin32-310-cp312-cp312-win32.whl", hash = "sha256:8a75a5cc3893e83a108c05d82198880704c44bbaee4d06e442e471d3c9ea4f3d", size = 8796239, upload-time = "2025-03-17T00:55:58.807Z" }, + { url = "https://files.pythonhosted.org/packages/e3/e5/b0627f8bb84e06991bea89ad8153a9e50ace40b2e1195d68e9dff6b03d0f/pywin32-310-cp312-cp312-win_amd64.whl", hash = "sha256:bf5c397c9a9a19a6f62f3fb821fbf36cac08f03770056711f765ec1503972060", size = 9503839, upload-time = "2025-03-17T00:56:00.8Z" }, + { url = "https://files.pythonhosted.org/packages/1f/32/9ccf53748df72301a89713936645a664ec001abd35ecc8578beda593d37d/pywin32-310-cp312-cp312-win_arm64.whl", hash = "sha256:2349cc906eae872d0663d4d6290d13b90621eaf78964bb1578632ff20e152966", size = 8459470, upload-time = "2025-03-17T00:56:02.601Z" }, + { url = "https://files.pythonhosted.org/packages/1c/09/9c1b978ffc4ae53999e89c19c77ba882d9fce476729f23ef55211ea1c034/pywin32-310-cp313-cp313-win32.whl", hash = "sha256:5d241a659c496ada3253cd01cfaa779b048e90ce4b2b38cd44168ad555ce74ab", size = 8794384, upload-time = "2025-03-17T00:56:04.383Z" }, + { url = "https://files.pythonhosted.org/packages/45/3c/b4640f740ffebadd5d34df35fecba0e1cfef8fde9f3e594df91c28ad9b50/pywin32-310-cp313-cp313-win_amd64.whl", hash = "sha256:667827eb3a90208ddbdcc9e860c81bde63a135710e21e4cb3348968e4bd5249e", size = 9503039, upload-time = "2025-03-17T00:56:06.207Z" }, + { url = "https://files.pythonhosted.org/packages/b4/f4/f785020090fb050e7fb6d34b780f2231f302609dc964672f72bfaeb59a28/pywin32-310-cp313-cp313-win_arm64.whl", hash = "sha256:e308f831de771482b7cf692a1f308f8fca701b2d8f9dde6cc440c7da17e47b33", size = 8458152, upload-time = "2025-03-17T00:56:07.819Z" }, ] [[package]] name = "pyyaml" version = "6.0.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631 } -wheels = [ - { 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 }, - { 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 }, - { 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 }, - { 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 }, - { 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 }, - { 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 }, - { 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 }, - { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591 }, - { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338 }, - { 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 }, - { 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 }, - { 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 }, - { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361 }, - { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523 }, - { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660 }, - { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597 }, - { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527 }, - { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446 }, +sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631, upload-time = "2024-08-06T20:33:50.674Z" } +wheels = [ + { 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, upload-time = "2024-08-06T20:32:25.131Z" }, + { 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, upload-time = "2024-08-06T20:32:26.511Z" }, + { 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, upload-time = "2024-08-06T20:32:28.363Z" }, + { 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, upload-time = "2024-08-06T20:32:30.058Z" }, + { 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, upload-time = "2024-08-06T20:32:31.881Z" }, + { 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, upload-time = "2024-08-06T20:32:37.083Z" }, + { 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, upload-time = "2024-08-06T20:32:38.898Z" }, + { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591, upload-time = "2024-08-06T20:32:40.241Z" }, + { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338, upload-time = "2024-08-06T20:32:41.93Z" }, + { 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, upload-time = "2024-08-06T20:32:43.4Z" }, + { 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, upload-time = "2024-08-06T20:32:44.801Z" }, + { 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, upload-time = "2024-08-06T20:32:46.432Z" }, + { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361, upload-time = "2024-08-06T20:32:51.188Z" }, + { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523, upload-time = "2024-08-06T20:32:53.019Z" }, + { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660, upload-time = "2024-08-06T20:32:54.708Z" }, + { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597, upload-time = "2024-08-06T20:32:56.985Z" }, + { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527, upload-time = "2024-08-06T20:33:03.001Z" }, + { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446, upload-time = "2024-08-06T20:33:04.33Z" }, ] [[package]] @@ -626,9 +626,9 @@ dependencies = [ { name = "idna" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", size = 131218 } +sdist = { url = "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", size = 131218, upload-time = "2024-05-29T15:37:49.536Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928 }, + { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928, upload-time = "2024-05-29T15:37:47.027Z" }, ] [[package]] @@ -640,34 +640,34 @@ dependencies = [ { name = "requests" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/81/7e/2345ac3299bd62bd7163216702bbc88976c099cfceba5b889f2a457727a1/responses-0.25.7.tar.gz", hash = "sha256:8ebae11405d7a5df79ab6fd54277f6f2bc29b2d002d0dd2d5c632594d1ddcedb", size = 79203 } +sdist = { url = "https://files.pythonhosted.org/packages/81/7e/2345ac3299bd62bd7163216702bbc88976c099cfceba5b889f2a457727a1/responses-0.25.7.tar.gz", hash = "sha256:8ebae11405d7a5df79ab6fd54277f6f2bc29b2d002d0dd2d5c632594d1ddcedb", size = 79203, upload-time = "2025-03-11T15:36:16.624Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e4/fc/1d20b64fa90e81e4fa0a34c9b0240a6cfb1326b7e06d18a5432a9917c316/responses-0.25.7-py3-none-any.whl", hash = "sha256:92ca17416c90fe6b35921f52179bff29332076bb32694c0df02dcac2c6bc043c", size = 34732 }, + { url = "https://files.pythonhosted.org/packages/e4/fc/1d20b64fa90e81e4fa0a34c9b0240a6cfb1326b7e06d18a5432a9917c316/responses-0.25.7-py3-none-any.whl", hash = "sha256:92ca17416c90fe6b35921f52179bff29332076bb32694c0df02dcac2c6bc043c", size = 34732, upload-time = "2025-03-11T15:36:14.589Z" }, ] [[package]] name = "ruff" version = "0.11.11" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b2/53/ae4857030d59286924a8bdb30d213d6ff22d8f0957e738d0289990091dd8/ruff-0.11.11.tar.gz", hash = "sha256:7774173cc7c1980e6bf67569ebb7085989a78a103922fb83ef3dfe230cd0687d", size = 4186707 } +sdist = { url = "https://files.pythonhosted.org/packages/b2/53/ae4857030d59286924a8bdb30d213d6ff22d8f0957e738d0289990091dd8/ruff-0.11.11.tar.gz", hash = "sha256:7774173cc7c1980e6bf67569ebb7085989a78a103922fb83ef3dfe230cd0687d", size = 4186707, upload-time = "2025-05-22T19:19:34.363Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b1/14/f2326676197bab099e2a24473158c21656fbf6a207c65f596ae15acb32b9/ruff-0.11.11-py3-none-linux_armv6l.whl", hash = "sha256:9924e5ae54125ed8958a4f7de320dab7380f6e9fa3195e3dc3b137c6842a0092", size = 10229049 }, - { url = "https://files.pythonhosted.org/packages/9a/f3/bff7c92dd66c959e711688b2e0768e486bbca46b2f35ac319bb6cce04447/ruff-0.11.11-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:c8a93276393d91e952f790148eb226658dd275cddfde96c6ca304873f11d2ae4", size = 11053601 }, - { url = "https://files.pythonhosted.org/packages/e2/38/8e1a3efd0ef9d8259346f986b77de0f62c7a5ff4a76563b6b39b68f793b9/ruff-0.11.11-py3-none-macosx_11_0_arm64.whl", hash = "sha256:d6e333dbe2e6ae84cdedefa943dfd6434753ad321764fd937eef9d6b62022bcd", size = 10367421 }, - { url = "https://files.pythonhosted.org/packages/b4/50/557ad9dd4fb9d0bf524ec83a090a3932d284d1a8b48b5906b13b72800e5f/ruff-0.11.11-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7885d9a5e4c77b24e8c88aba8c80be9255fa22ab326019dac2356cff42089fc6", size = 10581980 }, - { url = "https://files.pythonhosted.org/packages/c4/b2/e2ed82d6e2739ece94f1bdbbd1d81b712d3cdaf69f0a1d1f1a116b33f9ad/ruff-0.11.11-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1b5ab797fcc09121ed82e9b12b6f27e34859e4227080a42d090881be888755d4", size = 10089241 }, - { url = "https://files.pythonhosted.org/packages/3d/9f/b4539f037a5302c450d7c695c82f80e98e48d0d667ecc250e6bdeb49b5c3/ruff-0.11.11-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e231ff3132c1119ece836487a02785f099a43992b95c2f62847d29bace3c75ac", size = 11699398 }, - { url = "https://files.pythonhosted.org/packages/61/fb/32e029d2c0b17df65e6eaa5ce7aea5fbeaed22dddd9fcfbbf5fe37c6e44e/ruff-0.11.11-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:a97c9babe1d4081037a90289986925726b802d180cca784ac8da2bbbc335f709", size = 12427955 }, - { url = "https://files.pythonhosted.org/packages/6e/e3/160488dbb11f18c8121cfd588e38095ba779ae208292765972f7732bfd95/ruff-0.11.11-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d8c4ddcbe8a19f59f57fd814b8b117d4fcea9bee7c0492e6cf5fdc22cfa563c8", size = 12069803 }, - { url = "https://files.pythonhosted.org/packages/ff/16/3b006a875f84b3d0bff24bef26b8b3591454903f6f754b3f0a318589dcc3/ruff-0.11.11-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6224076c344a7694c6fbbb70d4f2a7b730f6d47d2a9dc1e7f9d9bb583faf390b", size = 11242630 }, - { url = "https://files.pythonhosted.org/packages/65/0d/0338bb8ac0b97175c2d533e9c8cdc127166de7eb16d028a43c5ab9e75abd/ruff-0.11.11-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:882821fcdf7ae8db7a951df1903d9cb032bbe838852e5fc3c2b6c3ab54e39875", size = 11507310 }, - { url = "https://files.pythonhosted.org/packages/6f/bf/d7130eb26174ce9b02348b9f86d5874eafbf9f68e5152e15e8e0a392e4a3/ruff-0.11.11-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:dcec2d50756463d9df075a26a85a6affbc1b0148873da3997286caf1ce03cae1", size = 10441144 }, - { url = "https://files.pythonhosted.org/packages/b3/f3/4be2453b258c092ff7b1761987cf0749e70ca1340cd1bfb4def08a70e8d8/ruff-0.11.11-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:99c28505ecbaeb6594701a74e395b187ee083ee26478c1a795d35084d53ebd81", size = 10081987 }, - { url = "https://files.pythonhosted.org/packages/6c/6e/dfa4d2030c5b5c13db158219f2ec67bf333e8a7748dccf34cfa2a6ab9ebc/ruff-0.11.11-py3-none-musllinux_1_2_i686.whl", hash = "sha256:9263f9e5aa4ff1dec765e99810f1cc53f0c868c5329b69f13845f699fe74f639", size = 11073922 }, - { url = "https://files.pythonhosted.org/packages/ff/f4/f7b0b0c3d32b593a20ed8010fa2c1a01f2ce91e79dda6119fcc51d26c67b/ruff-0.11.11-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:64ac6f885e3ecb2fdbb71de2701d4e34526651f1e8503af8fb30d4915a3fe345", size = 11568537 }, - { url = "https://files.pythonhosted.org/packages/d2/46/0e892064d0adc18bcc81deed9aaa9942a27fd2cd9b1b7791111ce468c25f/ruff-0.11.11-py3-none-win32.whl", hash = "sha256:1adcb9a18802268aaa891ffb67b1c94cd70578f126637118e8099b8e4adcf112", size = 10536492 }, - { url = "https://files.pythonhosted.org/packages/1b/d9/232e79459850b9f327e9f1dc9c047a2a38a6f9689e1ec30024841fc4416c/ruff-0.11.11-py3-none-win_amd64.whl", hash = "sha256:748b4bb245f11e91a04a4ff0f96e386711df0a30412b9fe0c74d5bdc0e4a531f", size = 11612562 }, - { url = "https://files.pythonhosted.org/packages/ce/eb/09c132cff3cc30b2e7244191dcce69437352d6d6709c0adf374f3e6f476e/ruff-0.11.11-py3-none-win_arm64.whl", hash = "sha256:6c51f136c0364ab1b774767aa8b86331bd8e9d414e2d107db7a2189f35ea1f7b", size = 10735951 }, + { url = "https://files.pythonhosted.org/packages/b1/14/f2326676197bab099e2a24473158c21656fbf6a207c65f596ae15acb32b9/ruff-0.11.11-py3-none-linux_armv6l.whl", hash = "sha256:9924e5ae54125ed8958a4f7de320dab7380f6e9fa3195e3dc3b137c6842a0092", size = 10229049, upload-time = "2025-05-22T19:18:45.516Z" }, + { url = "https://files.pythonhosted.org/packages/9a/f3/bff7c92dd66c959e711688b2e0768e486bbca46b2f35ac319bb6cce04447/ruff-0.11.11-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:c8a93276393d91e952f790148eb226658dd275cddfde96c6ca304873f11d2ae4", size = 11053601, upload-time = "2025-05-22T19:18:49.269Z" }, + { url = "https://files.pythonhosted.org/packages/e2/38/8e1a3efd0ef9d8259346f986b77de0f62c7a5ff4a76563b6b39b68f793b9/ruff-0.11.11-py3-none-macosx_11_0_arm64.whl", hash = "sha256:d6e333dbe2e6ae84cdedefa943dfd6434753ad321764fd937eef9d6b62022bcd", size = 10367421, upload-time = "2025-05-22T19:18:51.754Z" }, + { url = "https://files.pythonhosted.org/packages/b4/50/557ad9dd4fb9d0bf524ec83a090a3932d284d1a8b48b5906b13b72800e5f/ruff-0.11.11-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7885d9a5e4c77b24e8c88aba8c80be9255fa22ab326019dac2356cff42089fc6", size = 10581980, upload-time = "2025-05-22T19:18:54.011Z" }, + { url = "https://files.pythonhosted.org/packages/c4/b2/e2ed82d6e2739ece94f1bdbbd1d81b712d3cdaf69f0a1d1f1a116b33f9ad/ruff-0.11.11-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1b5ab797fcc09121ed82e9b12b6f27e34859e4227080a42d090881be888755d4", size = 10089241, upload-time = "2025-05-22T19:18:56.041Z" }, + { url = "https://files.pythonhosted.org/packages/3d/9f/b4539f037a5302c450d7c695c82f80e98e48d0d667ecc250e6bdeb49b5c3/ruff-0.11.11-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e231ff3132c1119ece836487a02785f099a43992b95c2f62847d29bace3c75ac", size = 11699398, upload-time = "2025-05-22T19:18:58.248Z" }, + { url = "https://files.pythonhosted.org/packages/61/fb/32e029d2c0b17df65e6eaa5ce7aea5fbeaed22dddd9fcfbbf5fe37c6e44e/ruff-0.11.11-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:a97c9babe1d4081037a90289986925726b802d180cca784ac8da2bbbc335f709", size = 12427955, upload-time = "2025-05-22T19:19:00.981Z" }, + { url = "https://files.pythonhosted.org/packages/6e/e3/160488dbb11f18c8121cfd588e38095ba779ae208292765972f7732bfd95/ruff-0.11.11-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d8c4ddcbe8a19f59f57fd814b8b117d4fcea9bee7c0492e6cf5fdc22cfa563c8", size = 12069803, upload-time = "2025-05-22T19:19:03.258Z" }, + { url = "https://files.pythonhosted.org/packages/ff/16/3b006a875f84b3d0bff24bef26b8b3591454903f6f754b3f0a318589dcc3/ruff-0.11.11-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6224076c344a7694c6fbbb70d4f2a7b730f6d47d2a9dc1e7f9d9bb583faf390b", size = 11242630, upload-time = "2025-05-22T19:19:05.871Z" }, + { url = "https://files.pythonhosted.org/packages/65/0d/0338bb8ac0b97175c2d533e9c8cdc127166de7eb16d028a43c5ab9e75abd/ruff-0.11.11-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:882821fcdf7ae8db7a951df1903d9cb032bbe838852e5fc3c2b6c3ab54e39875", size = 11507310, upload-time = "2025-05-22T19:19:08.584Z" }, + { url = "https://files.pythonhosted.org/packages/6f/bf/d7130eb26174ce9b02348b9f86d5874eafbf9f68e5152e15e8e0a392e4a3/ruff-0.11.11-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:dcec2d50756463d9df075a26a85a6affbc1b0148873da3997286caf1ce03cae1", size = 10441144, upload-time = "2025-05-22T19:19:13.621Z" }, + { url = "https://files.pythonhosted.org/packages/b3/f3/4be2453b258c092ff7b1761987cf0749e70ca1340cd1bfb4def08a70e8d8/ruff-0.11.11-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:99c28505ecbaeb6594701a74e395b187ee083ee26478c1a795d35084d53ebd81", size = 10081987, upload-time = "2025-05-22T19:19:15.821Z" }, + { url = "https://files.pythonhosted.org/packages/6c/6e/dfa4d2030c5b5c13db158219f2ec67bf333e8a7748dccf34cfa2a6ab9ebc/ruff-0.11.11-py3-none-musllinux_1_2_i686.whl", hash = "sha256:9263f9e5aa4ff1dec765e99810f1cc53f0c868c5329b69f13845f699fe74f639", size = 11073922, upload-time = "2025-05-22T19:19:18.104Z" }, + { url = "https://files.pythonhosted.org/packages/ff/f4/f7b0b0c3d32b593a20ed8010fa2c1a01f2ce91e79dda6119fcc51d26c67b/ruff-0.11.11-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:64ac6f885e3ecb2fdbb71de2701d4e34526651f1e8503af8fb30d4915a3fe345", size = 11568537, upload-time = "2025-05-22T19:19:20.889Z" }, + { url = "https://files.pythonhosted.org/packages/d2/46/0e892064d0adc18bcc81deed9aaa9942a27fd2cd9b1b7791111ce468c25f/ruff-0.11.11-py3-none-win32.whl", hash = "sha256:1adcb9a18802268aaa891ffb67b1c94cd70578f126637118e8099b8e4adcf112", size = 10536492, upload-time = "2025-05-22T19:19:23.642Z" }, + { url = "https://files.pythonhosted.org/packages/1b/d9/232e79459850b9f327e9f1dc9c047a2a38a6f9689e1ec30024841fc4416c/ruff-0.11.11-py3-none-win_amd64.whl", hash = "sha256:748b4bb245f11e91a04a4ff0f96e386711df0a30412b9fe0c74d5bdc0e4a531f", size = 11612562, upload-time = "2025-05-22T19:19:27.013Z" }, + { url = "https://files.pythonhosted.org/packages/ce/eb/09c132cff3cc30b2e7244191dcce69437352d6d6709c0adf374f3e6f476e/ruff-0.11.11-py3-none-win_arm64.whl", hash = "sha256:6c51f136c0364ab1b774767aa8b86331bd8e9d414e2d107db7a2189f35ea1f7b", size = 10735951, upload-time = "2025-05-22T19:19:30.043Z" }, ] [[package]] @@ -677,56 +677,56 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "botocore" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ed/5d/9dcc100abc6711e8247af5aa561fc07c4a046f72f659c3adea9a449e191a/s3transfer-0.13.0.tar.gz", hash = "sha256:f5e6db74eb7776a37208001113ea7aa97695368242b364d73e91c981ac522177", size = 150232 } +sdist = { url = "https://files.pythonhosted.org/packages/ed/5d/9dcc100abc6711e8247af5aa561fc07c4a046f72f659c3adea9a449e191a/s3transfer-0.13.0.tar.gz", hash = "sha256:f5e6db74eb7776a37208001113ea7aa97695368242b364d73e91c981ac522177", size = 150232, upload-time = "2025-05-22T19:24:50.245Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/18/17/22bf8155aa0ea2305eefa3a6402e040df7ebe512d1310165eda1e233c3f8/s3transfer-0.13.0-py3-none-any.whl", hash = "sha256:0148ef34d6dd964d0d8cf4311b2b21c474693e57c2e069ec708ce043d2b527be", size = 85152 }, + { url = "https://files.pythonhosted.org/packages/18/17/22bf8155aa0ea2305eefa3a6402e040df7ebe512d1310165eda1e233c3f8/s3transfer-0.13.0-py3-none-any.whl", hash = "sha256:0148ef34d6dd964d0d8cf4311b2b21c474693e57c2e069ec708ce043d2b527be", size = 85152, upload-time = "2025-05-22T19:24:48.703Z" }, ] [[package]] name = "six" version = "1.17.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031 } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050 }, + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, ] [[package]] name = "tomli" version = "2.2.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/18/87/302344fed471e44a87289cf4967697d07e532f2421fdaf868a303cbae4ff/tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff", size = 17175 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/52/e1/f8af4c2fcde17500422858155aeb0d7e93477a0d59a98e56cbfe75070fd0/tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea", size = 132762 }, - { url = "https://files.pythonhosted.org/packages/03/b8/152c68bb84fc00396b83e7bbddd5ec0bd3dd409db4195e2a9b3e398ad2e3/tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8", size = 123453 }, - { url = "https://files.pythonhosted.org/packages/c8/d6/fc9267af9166f79ac528ff7e8c55c8181ded34eb4b0e93daa767b8841573/tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192", size = 233486 }, - { url = "https://files.pythonhosted.org/packages/5c/51/51c3f2884d7bab89af25f678447ea7d297b53b5a3b5730a7cb2ef6069f07/tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222", size = 242349 }, - { url = "https://files.pythonhosted.org/packages/ab/df/bfa89627d13a5cc22402e441e8a931ef2108403db390ff3345c05253935e/tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77", size = 252159 }, - { url = "https://files.pythonhosted.org/packages/9e/6e/fa2b916dced65763a5168c6ccb91066f7639bdc88b48adda990db10c8c0b/tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6", size = 237243 }, - { url = "https://files.pythonhosted.org/packages/b4/04/885d3b1f650e1153cbb93a6a9782c58a972b94ea4483ae4ac5cedd5e4a09/tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd", size = 259645 }, - { url = "https://files.pythonhosted.org/packages/9c/de/6b432d66e986e501586da298e28ebeefd3edc2c780f3ad73d22566034239/tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e", size = 244584 }, - { url = "https://files.pythonhosted.org/packages/1c/9a/47c0449b98e6e7d1be6cbac02f93dd79003234ddc4aaab6ba07a9a7482e2/tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98", size = 98875 }, - { url = "https://files.pythonhosted.org/packages/ef/60/9b9638f081c6f1261e2688bd487625cd1e660d0a85bd469e91d8db969734/tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4", size = 109418 }, - { url = "https://files.pythonhosted.org/packages/04/90/2ee5f2e0362cb8a0b6499dc44f4d7d48f8fff06d28ba46e6f1eaa61a1388/tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7", size = 132708 }, - { url = "https://files.pythonhosted.org/packages/c0/ec/46b4108816de6b385141f082ba99e315501ccd0a2ea23db4a100dd3990ea/tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c", size = 123582 }, - { url = "https://files.pythonhosted.org/packages/a0/bd/b470466d0137b37b68d24556c38a0cc819e8febe392d5b199dcd7f578365/tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13", size = 232543 }, - { url = "https://files.pythonhosted.org/packages/d9/e5/82e80ff3b751373f7cead2815bcbe2d51c895b3c990686741a8e56ec42ab/tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281", size = 241691 }, - { url = "https://files.pythonhosted.org/packages/05/7e/2a110bc2713557d6a1bfb06af23dd01e7dde52b6ee7dadc589868f9abfac/tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272", size = 251170 }, - { url = "https://files.pythonhosted.org/packages/64/7b/22d713946efe00e0adbcdfd6d1aa119ae03fd0b60ebed51ebb3fa9f5a2e5/tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140", size = 236530 }, - { url = "https://files.pythonhosted.org/packages/38/31/3a76f67da4b0cf37b742ca76beaf819dca0ebef26d78fc794a576e08accf/tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2", size = 258666 }, - { url = "https://files.pythonhosted.org/packages/07/10/5af1293da642aded87e8a988753945d0cf7e00a9452d3911dd3bb354c9e2/tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744", size = 243954 }, - { url = "https://files.pythonhosted.org/packages/5b/b9/1ed31d167be802da0fc95020d04cd27b7d7065cc6fbefdd2f9186f60d7bd/tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec", size = 98724 }, - { url = "https://files.pythonhosted.org/packages/c7/32/b0963458706accd9afcfeb867c0f9175a741bf7b19cd424230714d722198/tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69", size = 109383 }, - { url = "https://files.pythonhosted.org/packages/6e/c2/61d3e0f47e2b74ef40a68b9e6ad5984f6241a942f7cd3bbfbdbd03861ea9/tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc", size = 14257 }, +sdist = { url = "https://files.pythonhosted.org/packages/18/87/302344fed471e44a87289cf4967697d07e532f2421fdaf868a303cbae4ff/tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff", size = 17175, upload-time = "2024-11-27T22:38:36.873Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/52/e1/f8af4c2fcde17500422858155aeb0d7e93477a0d59a98e56cbfe75070fd0/tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea", size = 132762, upload-time = "2024-11-27T22:38:07.731Z" }, + { url = "https://files.pythonhosted.org/packages/03/b8/152c68bb84fc00396b83e7bbddd5ec0bd3dd409db4195e2a9b3e398ad2e3/tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8", size = 123453, upload-time = "2024-11-27T22:38:09.384Z" }, + { url = "https://files.pythonhosted.org/packages/c8/d6/fc9267af9166f79ac528ff7e8c55c8181ded34eb4b0e93daa767b8841573/tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192", size = 233486, upload-time = "2024-11-27T22:38:10.329Z" }, + { url = "https://files.pythonhosted.org/packages/5c/51/51c3f2884d7bab89af25f678447ea7d297b53b5a3b5730a7cb2ef6069f07/tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222", size = 242349, upload-time = "2024-11-27T22:38:11.443Z" }, + { url = "https://files.pythonhosted.org/packages/ab/df/bfa89627d13a5cc22402e441e8a931ef2108403db390ff3345c05253935e/tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77", size = 252159, upload-time = "2024-11-27T22:38:13.099Z" }, + { url = "https://files.pythonhosted.org/packages/9e/6e/fa2b916dced65763a5168c6ccb91066f7639bdc88b48adda990db10c8c0b/tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6", size = 237243, upload-time = "2024-11-27T22:38:14.766Z" }, + { url = "https://files.pythonhosted.org/packages/b4/04/885d3b1f650e1153cbb93a6a9782c58a972b94ea4483ae4ac5cedd5e4a09/tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd", size = 259645, upload-time = "2024-11-27T22:38:15.843Z" }, + { url = "https://files.pythonhosted.org/packages/9c/de/6b432d66e986e501586da298e28ebeefd3edc2c780f3ad73d22566034239/tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e", size = 244584, upload-time = "2024-11-27T22:38:17.645Z" }, + { url = "https://files.pythonhosted.org/packages/1c/9a/47c0449b98e6e7d1be6cbac02f93dd79003234ddc4aaab6ba07a9a7482e2/tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98", size = 98875, upload-time = "2024-11-27T22:38:19.159Z" }, + { url = "https://files.pythonhosted.org/packages/ef/60/9b9638f081c6f1261e2688bd487625cd1e660d0a85bd469e91d8db969734/tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4", size = 109418, upload-time = "2024-11-27T22:38:20.064Z" }, + { url = "https://files.pythonhosted.org/packages/04/90/2ee5f2e0362cb8a0b6499dc44f4d7d48f8fff06d28ba46e6f1eaa61a1388/tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7", size = 132708, upload-time = "2024-11-27T22:38:21.659Z" }, + { url = "https://files.pythonhosted.org/packages/c0/ec/46b4108816de6b385141f082ba99e315501ccd0a2ea23db4a100dd3990ea/tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c", size = 123582, upload-time = "2024-11-27T22:38:22.693Z" }, + { url = "https://files.pythonhosted.org/packages/a0/bd/b470466d0137b37b68d24556c38a0cc819e8febe392d5b199dcd7f578365/tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13", size = 232543, upload-time = "2024-11-27T22:38:24.367Z" }, + { url = "https://files.pythonhosted.org/packages/d9/e5/82e80ff3b751373f7cead2815bcbe2d51c895b3c990686741a8e56ec42ab/tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281", size = 241691, upload-time = "2024-11-27T22:38:26.081Z" }, + { url = "https://files.pythonhosted.org/packages/05/7e/2a110bc2713557d6a1bfb06af23dd01e7dde52b6ee7dadc589868f9abfac/tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272", size = 251170, upload-time = "2024-11-27T22:38:27.921Z" }, + { url = "https://files.pythonhosted.org/packages/64/7b/22d713946efe00e0adbcdfd6d1aa119ae03fd0b60ebed51ebb3fa9f5a2e5/tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140", size = 236530, upload-time = "2024-11-27T22:38:29.591Z" }, + { url = "https://files.pythonhosted.org/packages/38/31/3a76f67da4b0cf37b742ca76beaf819dca0ebef26d78fc794a576e08accf/tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2", size = 258666, upload-time = "2024-11-27T22:38:30.639Z" }, + { url = "https://files.pythonhosted.org/packages/07/10/5af1293da642aded87e8a988753945d0cf7e00a9452d3911dd3bb354c9e2/tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744", size = 243954, upload-time = "2024-11-27T22:38:31.702Z" }, + { url = "https://files.pythonhosted.org/packages/5b/b9/1ed31d167be802da0fc95020d04cd27b7d7065cc6fbefdd2f9186f60d7bd/tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec", size = 98724, upload-time = "2024-11-27T22:38:32.837Z" }, + { url = "https://files.pythonhosted.org/packages/c7/32/b0963458706accd9afcfeb867c0f9175a741bf7b19cd424230714d722198/tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69", size = 109383, upload-time = "2024-11-27T22:38:34.455Z" }, + { url = "https://files.pythonhosted.org/packages/6e/c2/61d3e0f47e2b74ef40a68b9e6ad5984f6241a942f7cd3bbfbdbd03861ea9/tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc", size = 14257, upload-time = "2024-11-27T22:38:35.385Z" }, ] [[package]] name = "typing-extensions" version = "4.13.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f6/37/23083fcd6e35492953e8d2aaaa68b860eb422b34627b13f2ce3eb6106061/typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef", size = 106967 } +sdist = { url = "https://files.pythonhosted.org/packages/f6/37/23083fcd6e35492953e8d2aaaa68b860eb422b34627b13f2ce3eb6106061/typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef", size = 106967, upload-time = "2025-04-10T14:19:05.416Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8b/54/b1ae86c0973cc6f0210b53d508ca3641fb6d0c56823f288d108bc7ab3cc8/typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c", size = 45806 }, + { url = "https://files.pythonhosted.org/packages/8b/54/b1ae86c0973cc6f0210b53d508ca3641fb6d0c56823f288d108bc7ab3cc8/typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c", size = 45806, upload-time = "2025-04-10T14:19:03.967Z" }, ] [[package]] @@ -736,18 +736,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28", size = 75726 } +sdist = { url = "https://files.pythonhosted.org/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28", size = 75726, upload-time = "2025-05-21T18:55:23.885Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51", size = 14552 }, + { url = "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51", size = 14552, upload-time = "2025-05-21T18:55:22.152Z" }, ] [[package]] name = "urllib3" version = "2.4.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8a/78/16493d9c386d8e60e442a35feac5e00f0913c0f4b7c217c11e8ec2ff53e0/urllib3-2.4.0.tar.gz", hash = "sha256:414bc6535b787febd7567804cc015fee39daab8ad86268f1310a9250697de466", size = 390672 } +sdist = { url = "https://files.pythonhosted.org/packages/8a/78/16493d9c386d8e60e442a35feac5e00f0913c0f4b7c217c11e8ec2ff53e0/urllib3-2.4.0.tar.gz", hash = "sha256:414bc6535b787febd7567804cc015fee39daab8ad86268f1310a9250697de466", size = 390672, upload-time = "2025-04-10T15:23:39.232Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6b/11/cc635220681e93a0183390e26485430ca2c7b5f9d33b15c74c2861cb8091/urllib3-2.4.0-py3-none-any.whl", hash = "sha256:4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813", size = 128680 }, + { url = "https://files.pythonhosted.org/packages/6b/11/cc635220681e93a0183390e26485430ca2c7b5f9d33b15c74c2861cb8091/urllib3-2.4.0-py3-none-any.whl", hash = "sha256:4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813", size = 128680, upload-time = "2025-04-10T15:23:37.377Z" }, ] [[package]] @@ -757,67 +757,67 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markupsafe" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9f/69/83029f1f6300c5fb2471d621ab06f6ec6b3324685a2ce0f9777fd4a8b71e/werkzeug-3.1.3.tar.gz", hash = "sha256:60723ce945c19328679790e3282cc758aa4a6040e4bb330f53d30fa546d44746", size = 806925 } +sdist = { url = "https://files.pythonhosted.org/packages/9f/69/83029f1f6300c5fb2471d621ab06f6ec6b3324685a2ce0f9777fd4a8b71e/werkzeug-3.1.3.tar.gz", hash = "sha256:60723ce945c19328679790e3282cc758aa4a6040e4bb330f53d30fa546d44746", size = 806925, upload-time = "2024-11-08T15:52:18.093Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/52/24/ab44c871b0f07f491e5d2ad12c9bd7358e527510618cb1b803a88e986db1/werkzeug-3.1.3-py3-none-any.whl", hash = "sha256:54b78bf3716d19a65be4fceccc0d1d7b89e608834989dfae50ea87564639213e", size = 224498 }, + { url = "https://files.pythonhosted.org/packages/52/24/ab44c871b0f07f491e5d2ad12c9bd7358e527510618cb1b803a88e986db1/werkzeug-3.1.3-py3-none-any.whl", hash = "sha256:54b78bf3716d19a65be4fceccc0d1d7b89e608834989dfae50ea87564639213e", size = 224498, upload-time = "2024-11-08T15:52:16.132Z" }, ] [[package]] name = "wrapt" version = "1.17.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c3/fc/e91cc220803d7bc4db93fb02facd8461c37364151b8494762cc88b0fbcef/wrapt-1.17.2.tar.gz", hash = "sha256:41388e9d4d1522446fe79d3213196bd9e3b301a336965b9e27ca2788ebd122f3", size = 55531 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a1/bd/ab55f849fd1f9a58ed7ea47f5559ff09741b25f00c191231f9f059c83949/wrapt-1.17.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d5e2439eecc762cd85e7bd37161d4714aa03a33c5ba884e26c81559817ca0925", size = 53799 }, - { url = "https://files.pythonhosted.org/packages/53/18/75ddc64c3f63988f5a1d7e10fb204ffe5762bc663f8023f18ecaf31a332e/wrapt-1.17.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fc7cb4c1c744f8c05cd5f9438a3caa6ab94ce8344e952d7c45a8ed59dd88392", size = 38821 }, - { url = "https://files.pythonhosted.org/packages/48/2a/97928387d6ed1c1ebbfd4efc4133a0633546bec8481a2dd5ec961313a1c7/wrapt-1.17.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8fdbdb757d5390f7c675e558fd3186d590973244fab0c5fe63d373ade3e99d40", size = 38919 }, - { url = "https://files.pythonhosted.org/packages/73/54/3bfe5a1febbbccb7a2f77de47b989c0b85ed3a6a41614b104204a788c20e/wrapt-1.17.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bb1d0dbf99411f3d871deb6faa9aabb9d4e744d67dcaaa05399af89d847a91d", size = 88721 }, - { url = "https://files.pythonhosted.org/packages/25/cb/7262bc1b0300b4b64af50c2720ef958c2c1917525238d661c3e9a2b71b7b/wrapt-1.17.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d18a4865f46b8579d44e4fe1e2bcbc6472ad83d98e22a26c963d46e4c125ef0b", size = 80899 }, - { url = "https://files.pythonhosted.org/packages/2a/5a/04cde32b07a7431d4ed0553a76fdb7a61270e78c5fd5a603e190ac389f14/wrapt-1.17.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc570b5f14a79734437cb7b0500376b6b791153314986074486e0b0fa8d71d98", size = 89222 }, - { url = "https://files.pythonhosted.org/packages/09/28/2e45a4f4771fcfb109e244d5dbe54259e970362a311b67a965555ba65026/wrapt-1.17.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6d9187b01bebc3875bac9b087948a2bccefe464a7d8f627cf6e48b1bbae30f82", size = 86707 }, - { url = "https://files.pythonhosted.org/packages/c6/d2/dcb56bf5f32fcd4bd9aacc77b50a539abdd5b6536872413fd3f428b21bed/wrapt-1.17.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9e8659775f1adf02eb1e6f109751268e493c73716ca5761f8acb695e52a756ae", size = 79685 }, - { url = "https://files.pythonhosted.org/packages/80/4e/eb8b353e36711347893f502ce91c770b0b0929f8f0bed2670a6856e667a9/wrapt-1.17.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e8b2816ebef96d83657b56306152a93909a83f23994f4b30ad4573b00bd11bb9", size = 87567 }, - { url = "https://files.pythonhosted.org/packages/17/27/4fe749a54e7fae6e7146f1c7d914d28ef599dacd4416566c055564080fe2/wrapt-1.17.2-cp312-cp312-win32.whl", hash = "sha256:468090021f391fe0056ad3e807e3d9034e0fd01adcd3bdfba977b6fdf4213ea9", size = 36672 }, - { url = "https://files.pythonhosted.org/packages/15/06/1dbf478ea45c03e78a6a8c4be4fdc3c3bddea5c8de8a93bc971415e47f0f/wrapt-1.17.2-cp312-cp312-win_amd64.whl", hash = "sha256:ec89ed91f2fa8e3f52ae53cd3cf640d6feff92ba90d62236a81e4e563ac0e991", size = 38865 }, - { url = "https://files.pythonhosted.org/packages/ce/b9/0ffd557a92f3b11d4c5d5e0c5e4ad057bd9eb8586615cdaf901409920b14/wrapt-1.17.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:6ed6ffac43aecfe6d86ec5b74b06a5be33d5bb9243d055141e8cabb12aa08125", size = 53800 }, - { url = "https://files.pythonhosted.org/packages/c0/ef/8be90a0b7e73c32e550c73cfb2fa09db62234227ece47b0e80a05073b375/wrapt-1.17.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:35621ae4c00e056adb0009f8e86e28eb4a41a4bfa8f9bfa9fca7d343fe94f998", size = 38824 }, - { url = "https://files.pythonhosted.org/packages/36/89/0aae34c10fe524cce30fe5fc433210376bce94cf74d05b0d68344c8ba46e/wrapt-1.17.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a604bf7a053f8362d27eb9fefd2097f82600b856d5abe996d623babd067b1ab5", size = 38920 }, - { url = "https://files.pythonhosted.org/packages/3b/24/11c4510de906d77e0cfb5197f1b1445d4fec42c9a39ea853d482698ac681/wrapt-1.17.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cbabee4f083b6b4cd282f5b817a867cf0b1028c54d445b7ec7cfe6505057cf8", size = 88690 }, - { url = "https://files.pythonhosted.org/packages/71/d7/cfcf842291267bf455b3e266c0c29dcb675b5540ee8b50ba1699abf3af45/wrapt-1.17.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49703ce2ddc220df165bd2962f8e03b84c89fee2d65e1c24a7defff6f988f4d6", size = 80861 }, - { url = "https://files.pythonhosted.org/packages/d5/66/5d973e9f3e7370fd686fb47a9af3319418ed925c27d72ce16b791231576d/wrapt-1.17.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8112e52c5822fc4253f3901b676c55ddf288614dc7011634e2719718eaa187dc", size = 89174 }, - { url = "https://files.pythonhosted.org/packages/a7/d3/8e17bb70f6ae25dabc1aaf990f86824e4fd98ee9cadf197054e068500d27/wrapt-1.17.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9fee687dce376205d9a494e9c121e27183b2a3df18037f89d69bd7b35bcf59e2", size = 86721 }, - { url = "https://files.pythonhosted.org/packages/6f/54/f170dfb278fe1c30d0ff864513cff526d624ab8de3254b20abb9cffedc24/wrapt-1.17.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:18983c537e04d11cf027fbb60a1e8dfd5190e2b60cc27bc0808e653e7b218d1b", size = 79763 }, - { url = "https://files.pythonhosted.org/packages/4a/98/de07243751f1c4a9b15c76019250210dd3486ce098c3d80d5f729cba029c/wrapt-1.17.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:703919b1633412ab54bcf920ab388735832fdcb9f9a00ae49387f0fe67dad504", size = 87585 }, - { url = "https://files.pythonhosted.org/packages/f9/f0/13925f4bd6548013038cdeb11ee2cbd4e37c30f8bfd5db9e5a2a370d6e20/wrapt-1.17.2-cp313-cp313-win32.whl", hash = "sha256:abbb9e76177c35d4e8568e58650aa6926040d6a9f6f03435b7a522bf1c487f9a", size = 36676 }, - { url = "https://files.pythonhosted.org/packages/bf/ae/743f16ef8c2e3628df3ddfd652b7d4c555d12c84b53f3d8218498f4ade9b/wrapt-1.17.2-cp313-cp313-win_amd64.whl", hash = "sha256:69606d7bb691b50a4240ce6b22ebb319c1cfb164e5f6569835058196e0f3a845", size = 38871 }, - { url = "https://files.pythonhosted.org/packages/3d/bc/30f903f891a82d402ffb5fda27ec1d621cc97cb74c16fea0b6141f1d4e87/wrapt-1.17.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:4a721d3c943dae44f8e243b380cb645a709ba5bd35d3ad27bc2ed947e9c68192", size = 56312 }, - { url = "https://files.pythonhosted.org/packages/8a/04/c97273eb491b5f1c918857cd26f314b74fc9b29224521f5b83f872253725/wrapt-1.17.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:766d8bbefcb9e00c3ac3b000d9acc51f1b399513f44d77dfe0eb026ad7c9a19b", size = 40062 }, - { url = "https://files.pythonhosted.org/packages/4e/ca/3b7afa1eae3a9e7fefe499db9b96813f41828b9fdb016ee836c4c379dadb/wrapt-1.17.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e496a8ce2c256da1eb98bd15803a79bee00fc351f5dfb9ea82594a3f058309e0", size = 40155 }, - { url = "https://files.pythonhosted.org/packages/89/be/7c1baed43290775cb9030c774bc53c860db140397047cc49aedaf0a15477/wrapt-1.17.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d615e4fe22f4ad3528448c193b218e077656ca9ccb22ce2cb20db730f8d306", size = 113471 }, - { url = "https://files.pythonhosted.org/packages/32/98/4ed894cf012b6d6aae5f5cc974006bdeb92f0241775addad3f8cd6ab71c8/wrapt-1.17.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a5aaeff38654462bc4b09023918b7f21790efb807f54c000a39d41d69cf552cb", size = 101208 }, - { url = "https://files.pythonhosted.org/packages/ea/fd/0c30f2301ca94e655e5e057012e83284ce8c545df7661a78d8bfca2fac7a/wrapt-1.17.2-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a7d15bbd2bc99e92e39f49a04653062ee6085c0e18b3b7512a4f2fe91f2d681", size = 109339 }, - { url = "https://files.pythonhosted.org/packages/75/56/05d000de894c4cfcb84bcd6b1df6214297b8089a7bd324c21a4765e49b14/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:e3890b508a23299083e065f435a492b5435eba6e304a7114d2f919d400888cc6", size = 110232 }, - { url = "https://files.pythonhosted.org/packages/53/f8/c3f6b2cf9b9277fb0813418e1503e68414cd036b3b099c823379c9575e6d/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:8c8b293cd65ad716d13d8dd3624e42e5a19cc2a2f1acc74b30c2c13f15cb61a6", size = 100476 }, - { url = "https://files.pythonhosted.org/packages/a7/b1/0bb11e29aa5139d90b770ebbfa167267b1fc548d2302c30c8f7572851738/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4c82b8785d98cdd9fed4cac84d765d234ed3251bd6afe34cb7ac523cb93e8b4f", size = 106377 }, - { url = "https://files.pythonhosted.org/packages/6a/e1/0122853035b40b3f333bbb25f1939fc1045e21dd518f7f0922b60c156f7c/wrapt-1.17.2-cp313-cp313t-win32.whl", hash = "sha256:13e6afb7fe71fe7485a4550a8844cc9ffbe263c0f1a1eea569bc7091d4898555", size = 37986 }, - { url = "https://files.pythonhosted.org/packages/09/5e/1655cf481e079c1f22d0cabdd4e51733679932718dc23bf2db175f329b76/wrapt-1.17.2-cp313-cp313t-win_amd64.whl", hash = "sha256:eaf675418ed6b3b31c7a989fd007fa7c3be66ce14e5c3b27336383604c9da85c", size = 40750 }, - { url = "https://files.pythonhosted.org/packages/2d/82/f56956041adef78f849db6b289b282e72b55ab8045a75abad81898c28d19/wrapt-1.17.2-py3-none-any.whl", hash = "sha256:b18f2d1533a71f069c7f82d524a52599053d4c7166e9dd374ae2136b7f40f7c8", size = 23594 }, +sdist = { url = "https://files.pythonhosted.org/packages/c3/fc/e91cc220803d7bc4db93fb02facd8461c37364151b8494762cc88b0fbcef/wrapt-1.17.2.tar.gz", hash = "sha256:41388e9d4d1522446fe79d3213196bd9e3b301a336965b9e27ca2788ebd122f3", size = 55531, upload-time = "2025-01-14T10:35:45.465Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a1/bd/ab55f849fd1f9a58ed7ea47f5559ff09741b25f00c191231f9f059c83949/wrapt-1.17.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d5e2439eecc762cd85e7bd37161d4714aa03a33c5ba884e26c81559817ca0925", size = 53799, upload-time = "2025-01-14T10:33:57.4Z" }, + { url = "https://files.pythonhosted.org/packages/53/18/75ddc64c3f63988f5a1d7e10fb204ffe5762bc663f8023f18ecaf31a332e/wrapt-1.17.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fc7cb4c1c744f8c05cd5f9438a3caa6ab94ce8344e952d7c45a8ed59dd88392", size = 38821, upload-time = "2025-01-14T10:33:59.334Z" }, + { url = "https://files.pythonhosted.org/packages/48/2a/97928387d6ed1c1ebbfd4efc4133a0633546bec8481a2dd5ec961313a1c7/wrapt-1.17.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8fdbdb757d5390f7c675e558fd3186d590973244fab0c5fe63d373ade3e99d40", size = 38919, upload-time = "2025-01-14T10:34:04.093Z" }, + { url = "https://files.pythonhosted.org/packages/73/54/3bfe5a1febbbccb7a2f77de47b989c0b85ed3a6a41614b104204a788c20e/wrapt-1.17.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bb1d0dbf99411f3d871deb6faa9aabb9d4e744d67dcaaa05399af89d847a91d", size = 88721, upload-time = "2025-01-14T10:34:07.163Z" }, + { url = "https://files.pythonhosted.org/packages/25/cb/7262bc1b0300b4b64af50c2720ef958c2c1917525238d661c3e9a2b71b7b/wrapt-1.17.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d18a4865f46b8579d44e4fe1e2bcbc6472ad83d98e22a26c963d46e4c125ef0b", size = 80899, upload-time = "2025-01-14T10:34:09.82Z" }, + { url = "https://files.pythonhosted.org/packages/2a/5a/04cde32b07a7431d4ed0553a76fdb7a61270e78c5fd5a603e190ac389f14/wrapt-1.17.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc570b5f14a79734437cb7b0500376b6b791153314986074486e0b0fa8d71d98", size = 89222, upload-time = "2025-01-14T10:34:11.258Z" }, + { url = "https://files.pythonhosted.org/packages/09/28/2e45a4f4771fcfb109e244d5dbe54259e970362a311b67a965555ba65026/wrapt-1.17.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6d9187b01bebc3875bac9b087948a2bccefe464a7d8f627cf6e48b1bbae30f82", size = 86707, upload-time = "2025-01-14T10:34:12.49Z" }, + { url = "https://files.pythonhosted.org/packages/c6/d2/dcb56bf5f32fcd4bd9aacc77b50a539abdd5b6536872413fd3f428b21bed/wrapt-1.17.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9e8659775f1adf02eb1e6f109751268e493c73716ca5761f8acb695e52a756ae", size = 79685, upload-time = "2025-01-14T10:34:15.043Z" }, + { url = "https://files.pythonhosted.org/packages/80/4e/eb8b353e36711347893f502ce91c770b0b0929f8f0bed2670a6856e667a9/wrapt-1.17.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e8b2816ebef96d83657b56306152a93909a83f23994f4b30ad4573b00bd11bb9", size = 87567, upload-time = "2025-01-14T10:34:16.563Z" }, + { url = "https://files.pythonhosted.org/packages/17/27/4fe749a54e7fae6e7146f1c7d914d28ef599dacd4416566c055564080fe2/wrapt-1.17.2-cp312-cp312-win32.whl", hash = "sha256:468090021f391fe0056ad3e807e3d9034e0fd01adcd3bdfba977b6fdf4213ea9", size = 36672, upload-time = "2025-01-14T10:34:17.727Z" }, + { url = "https://files.pythonhosted.org/packages/15/06/1dbf478ea45c03e78a6a8c4be4fdc3c3bddea5c8de8a93bc971415e47f0f/wrapt-1.17.2-cp312-cp312-win_amd64.whl", hash = "sha256:ec89ed91f2fa8e3f52ae53cd3cf640d6feff92ba90d62236a81e4e563ac0e991", size = 38865, upload-time = "2025-01-14T10:34:19.577Z" }, + { url = "https://files.pythonhosted.org/packages/ce/b9/0ffd557a92f3b11d4c5d5e0c5e4ad057bd9eb8586615cdaf901409920b14/wrapt-1.17.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:6ed6ffac43aecfe6d86ec5b74b06a5be33d5bb9243d055141e8cabb12aa08125", size = 53800, upload-time = "2025-01-14T10:34:21.571Z" }, + { url = "https://files.pythonhosted.org/packages/c0/ef/8be90a0b7e73c32e550c73cfb2fa09db62234227ece47b0e80a05073b375/wrapt-1.17.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:35621ae4c00e056adb0009f8e86e28eb4a41a4bfa8f9bfa9fca7d343fe94f998", size = 38824, upload-time = "2025-01-14T10:34:22.999Z" }, + { url = "https://files.pythonhosted.org/packages/36/89/0aae34c10fe524cce30fe5fc433210376bce94cf74d05b0d68344c8ba46e/wrapt-1.17.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a604bf7a053f8362d27eb9fefd2097f82600b856d5abe996d623babd067b1ab5", size = 38920, upload-time = "2025-01-14T10:34:25.386Z" }, + { url = "https://files.pythonhosted.org/packages/3b/24/11c4510de906d77e0cfb5197f1b1445d4fec42c9a39ea853d482698ac681/wrapt-1.17.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cbabee4f083b6b4cd282f5b817a867cf0b1028c54d445b7ec7cfe6505057cf8", size = 88690, upload-time = "2025-01-14T10:34:28.058Z" }, + { url = "https://files.pythonhosted.org/packages/71/d7/cfcf842291267bf455b3e266c0c29dcb675b5540ee8b50ba1699abf3af45/wrapt-1.17.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49703ce2ddc220df165bd2962f8e03b84c89fee2d65e1c24a7defff6f988f4d6", size = 80861, upload-time = "2025-01-14T10:34:29.167Z" }, + { url = "https://files.pythonhosted.org/packages/d5/66/5d973e9f3e7370fd686fb47a9af3319418ed925c27d72ce16b791231576d/wrapt-1.17.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8112e52c5822fc4253f3901b676c55ddf288614dc7011634e2719718eaa187dc", size = 89174, upload-time = "2025-01-14T10:34:31.702Z" }, + { url = "https://files.pythonhosted.org/packages/a7/d3/8e17bb70f6ae25dabc1aaf990f86824e4fd98ee9cadf197054e068500d27/wrapt-1.17.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9fee687dce376205d9a494e9c121e27183b2a3df18037f89d69bd7b35bcf59e2", size = 86721, upload-time = "2025-01-14T10:34:32.91Z" }, + { url = "https://files.pythonhosted.org/packages/6f/54/f170dfb278fe1c30d0ff864513cff526d624ab8de3254b20abb9cffedc24/wrapt-1.17.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:18983c537e04d11cf027fbb60a1e8dfd5190e2b60cc27bc0808e653e7b218d1b", size = 79763, upload-time = "2025-01-14T10:34:34.903Z" }, + { url = "https://files.pythonhosted.org/packages/4a/98/de07243751f1c4a9b15c76019250210dd3486ce098c3d80d5f729cba029c/wrapt-1.17.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:703919b1633412ab54bcf920ab388735832fdcb9f9a00ae49387f0fe67dad504", size = 87585, upload-time = "2025-01-14T10:34:36.13Z" }, + { url = "https://files.pythonhosted.org/packages/f9/f0/13925f4bd6548013038cdeb11ee2cbd4e37c30f8bfd5db9e5a2a370d6e20/wrapt-1.17.2-cp313-cp313-win32.whl", hash = "sha256:abbb9e76177c35d4e8568e58650aa6926040d6a9f6f03435b7a522bf1c487f9a", size = 36676, upload-time = "2025-01-14T10:34:37.962Z" }, + { url = "https://files.pythonhosted.org/packages/bf/ae/743f16ef8c2e3628df3ddfd652b7d4c555d12c84b53f3d8218498f4ade9b/wrapt-1.17.2-cp313-cp313-win_amd64.whl", hash = "sha256:69606d7bb691b50a4240ce6b22ebb319c1cfb164e5f6569835058196e0f3a845", size = 38871, upload-time = "2025-01-14T10:34:39.13Z" }, + { url = "https://files.pythonhosted.org/packages/3d/bc/30f903f891a82d402ffb5fda27ec1d621cc97cb74c16fea0b6141f1d4e87/wrapt-1.17.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:4a721d3c943dae44f8e243b380cb645a709ba5bd35d3ad27bc2ed947e9c68192", size = 56312, upload-time = "2025-01-14T10:34:40.604Z" }, + { url = "https://files.pythonhosted.org/packages/8a/04/c97273eb491b5f1c918857cd26f314b74fc9b29224521f5b83f872253725/wrapt-1.17.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:766d8bbefcb9e00c3ac3b000d9acc51f1b399513f44d77dfe0eb026ad7c9a19b", size = 40062, upload-time = "2025-01-14T10:34:45.011Z" }, + { url = "https://files.pythonhosted.org/packages/4e/ca/3b7afa1eae3a9e7fefe499db9b96813f41828b9fdb016ee836c4c379dadb/wrapt-1.17.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e496a8ce2c256da1eb98bd15803a79bee00fc351f5dfb9ea82594a3f058309e0", size = 40155, upload-time = "2025-01-14T10:34:47.25Z" }, + { url = "https://files.pythonhosted.org/packages/89/be/7c1baed43290775cb9030c774bc53c860db140397047cc49aedaf0a15477/wrapt-1.17.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d615e4fe22f4ad3528448c193b218e077656ca9ccb22ce2cb20db730f8d306", size = 113471, upload-time = "2025-01-14T10:34:50.934Z" }, + { url = "https://files.pythonhosted.org/packages/32/98/4ed894cf012b6d6aae5f5cc974006bdeb92f0241775addad3f8cd6ab71c8/wrapt-1.17.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a5aaeff38654462bc4b09023918b7f21790efb807f54c000a39d41d69cf552cb", size = 101208, upload-time = "2025-01-14T10:34:52.297Z" }, + { url = "https://files.pythonhosted.org/packages/ea/fd/0c30f2301ca94e655e5e057012e83284ce8c545df7661a78d8bfca2fac7a/wrapt-1.17.2-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a7d15bbd2bc99e92e39f49a04653062ee6085c0e18b3b7512a4f2fe91f2d681", size = 109339, upload-time = "2025-01-14T10:34:53.489Z" }, + { url = "https://files.pythonhosted.org/packages/75/56/05d000de894c4cfcb84bcd6b1df6214297b8089a7bd324c21a4765e49b14/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:e3890b508a23299083e065f435a492b5435eba6e304a7114d2f919d400888cc6", size = 110232, upload-time = "2025-01-14T10:34:55.327Z" }, + { url = "https://files.pythonhosted.org/packages/53/f8/c3f6b2cf9b9277fb0813418e1503e68414cd036b3b099c823379c9575e6d/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:8c8b293cd65ad716d13d8dd3624e42e5a19cc2a2f1acc74b30c2c13f15cb61a6", size = 100476, upload-time = "2025-01-14T10:34:58.055Z" }, + { url = "https://files.pythonhosted.org/packages/a7/b1/0bb11e29aa5139d90b770ebbfa167267b1fc548d2302c30c8f7572851738/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4c82b8785d98cdd9fed4cac84d765d234ed3251bd6afe34cb7ac523cb93e8b4f", size = 106377, upload-time = "2025-01-14T10:34:59.3Z" }, + { url = "https://files.pythonhosted.org/packages/6a/e1/0122853035b40b3f333bbb25f1939fc1045e21dd518f7f0922b60c156f7c/wrapt-1.17.2-cp313-cp313t-win32.whl", hash = "sha256:13e6afb7fe71fe7485a4550a8844cc9ffbe263c0f1a1eea569bc7091d4898555", size = 37986, upload-time = "2025-01-14T10:35:00.498Z" }, + { url = "https://files.pythonhosted.org/packages/09/5e/1655cf481e079c1f22d0cabdd4e51733679932718dc23bf2db175f329b76/wrapt-1.17.2-cp313-cp313t-win_amd64.whl", hash = "sha256:eaf675418ed6b3b31c7a989fd007fa7c3be66ce14e5c3b27336383604c9da85c", size = 40750, upload-time = "2025-01-14T10:35:03.378Z" }, + { url = "https://files.pythonhosted.org/packages/2d/82/f56956041adef78f849db6b289b282e72b55ab8045a75abad81898c28d19/wrapt-1.17.2-py3-none-any.whl", hash = "sha256:b18f2d1533a71f069c7f82d524a52599053d4c7166e9dd374ae2136b7f40f7c8", size = 23594, upload-time = "2025-01-14T10:35:44.018Z" }, ] [[package]] name = "xmltodict" version = "0.14.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/50/05/51dcca9a9bf5e1bce52582683ce50980bcadbc4fa5143b9f2b19ab99958f/xmltodict-0.14.2.tar.gz", hash = "sha256:201e7c28bb210e374999d1dde6382923ab0ed1a8a5faeece48ab525b7810a553", size = 51942 } +sdist = { url = "https://files.pythonhosted.org/packages/50/05/51dcca9a9bf5e1bce52582683ce50980bcadbc4fa5143b9f2b19ab99958f/xmltodict-0.14.2.tar.gz", hash = "sha256:201e7c28bb210e374999d1dde6382923ab0ed1a8a5faeece48ab525b7810a553", size = 51942, upload-time = "2024-10-16T06:10:29.683Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d6/45/fc303eb433e8a2a271739c98e953728422fa61a3c1f36077a49e395c972e/xmltodict-0.14.2-py2.py3-none-any.whl", hash = "sha256:20cc7d723ed729276e808f26fb6b3599f786cbc37e06c65e192ba77c40f20aac", size = 9981 }, + { url = "https://files.pythonhosted.org/packages/d6/45/fc303eb433e8a2a271739c98e953728422fa61a3c1f36077a49e395c972e/xmltodict-0.14.2-py2.py3-none-any.whl", hash = "sha256:20cc7d723ed729276e808f26fb6b3599f786cbc37e06c65e192ba77c40f20aac", size = 9981, upload-time = "2024-10-16T06:10:27.649Z" }, ] [[package]] name = "zipp" version = "3.22.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/12/b6/7b3d16792fdf94f146bed92be90b4eb4563569eca91513c8609aebf0c167/zipp-3.22.0.tar.gz", hash = "sha256:dd2f28c3ce4bc67507bfd3781d21b7bb2be31103b51a4553ad7d90b84e57ace5", size = 25257 } +sdist = { url = "https://files.pythonhosted.org/packages/12/b6/7b3d16792fdf94f146bed92be90b4eb4563569eca91513c8609aebf0c167/zipp-3.22.0.tar.gz", hash = "sha256:dd2f28c3ce4bc67507bfd3781d21b7bb2be31103b51a4553ad7d90b84e57ace5", size = 25257, upload-time = "2025-05-26T14:46:32.217Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ad/da/f64669af4cae46f17b90798a827519ce3737d31dbafad65d391e49643dc4/zipp-3.22.0-py3-none-any.whl", hash = "sha256:fe208f65f2aca48b81f9e6fd8cf7b8b32c26375266b009b413d45306b6148343", size = 9796 }, + { url = "https://files.pythonhosted.org/packages/ad/da/f64669af4cae46f17b90798a827519ce3737d31dbafad65d391e49643dc4/zipp-3.22.0-py3-none-any.whl", hash = "sha256:fe208f65f2aca48b81f9e6fd8cf7b8b32c26375266b009b413d45306b6148343", size = 9796, upload-time = "2025-05-26T14:46:30.775Z" }, ] From def059cc0ba62087fc46d15af04156d1f65ba3ca Mon Sep 17 00:00:00 2001 From: Stephen Liedig Date: Tue, 29 Jul 2025 12:28:11 +0800 Subject: [PATCH 30/36] fix: update import path for request approval function to use PublicationManagerService --- unicorn_web/tests/unit/test_request_approval_function.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unicorn_web/tests/unit/test_request_approval_function.py b/unicorn_web/tests/unit/test_request_approval_function.py index e5737b6..d9365bf 100644 --- a/unicorn_web/tests/unit/test_request_approval_function.py +++ b/unicorn_web/tests/unit/test_request_approval_function.py @@ -22,7 +22,7 @@ def test_valid_event(dynamodb, eventbridge, sqs, lambda_context): event = sqs_event([{"body": payload, "attributes": {"HttpMethod": "POST"}}]) # Loading function here so that mocking works correctly. - from approvals_service import request_approval_function + from publication_manager_service import request_approval_function # Reload is required to prevent function setup reuse from another test reload(request_approval_function) From 7162170a0b73257e5204b3d16e9004302cd28ddb Mon Sep 17 00:00:00 2001 From: Stephen Liedig Date: Thu, 31 Jul 2025 11:28:34 +0800 Subject: [PATCH 31/36] chore: minor update to readme file --- unicorn_web/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unicorn_web/README.md b/unicorn_web/README.md index 0bd021c..38e17ea 100644 --- a/unicorn_web/README.md +++ b/unicorn_web/README.md @@ -10,7 +10,7 @@ Lambda functions handle API Gateway requests to: - Search approved property listings: The **Search function** retrieves property listings marked as APPROVED from the DynamoDB table using multiple search patterns. -- Request property listing approval: The **Approval function** sends an EventBridge event requesting approval for a property listing specified in the payload. +- Request property listing approval: The **Request Approval function** sends an EventBridge event requesting approval for a property listing specified in the payload. - Process approved listings: The **Publication Evaluation Event Handler function** processes `PublicationEvaluationCompleted` events from the Unicorn Approvals service and writes the evaluation result to the DynamoDB table. From ab26a383f364e570bfdf4688d545e8ef898fff92 Mon Sep 17 00:00:00 2001 From: Stephen Liedig Date: Tue, 5 Aug 2025 17:40:35 +0800 Subject: [PATCH 32/36] chore: updated approvals readme --- unicorn_approvals/src/README.md | 26 ++++++++------------------ 1 file changed, 8 insertions(+), 18 deletions(-) diff --git a/unicorn_approvals/src/README.md b/unicorn_approvals/src/README.md index f4b82a2..f442855 100644 --- a/unicorn_approvals/src/README.md +++ b/unicorn_approvals/src/README.md @@ -1,25 +1,15 @@ -# ContractStatusChanged +# Developing Unicorn Approvals -*Automatically generated by the [Amazon Event Schemas](https://aws.amazon.com/)* +![Properties Approval Architecture](https://static.us-east-1.prod.workshops.aws/public/f273b5fc-17cd-406b-9e63-1d331b00589d/static/images/architecture-approvals.png) -## Requirements +## Architecture overview -1. Python 36+ -2. six 1.12.0 -3. regex 2019.11.1 +**Unicorn Approvals** uses an AWS Step Functions state machine to approve property listings for Unicorn Web. The workflow checks for contract information, description sentiment and safe images, and verifies the contract is approved before approving the listing. It publishes the result via the `PublicationEvaluationCompleted` event. -## Install Dependencies -### pip users +A Unicorn Properties agent initiates the workflow by requesting to approve a listing, generating a `PublicationApprovalRequested` event with property information. To decouple from the Contracts Service, the Approval service maintains a local copy of contract status by consuming the ContractStatusChanged event. -Create and update it in current project's **requirements.txt**: +The workflow checks the contract state. If the contract is in the WaitForContractApproval state, it updates the contract status for the property with its task token, triggering a DynamoDB stream event. The Property approvals sync function handles these events and passes the task token back to the state machine based on the contract state. -``` -six == 1.12.0 -regex == 2019.11.1 -``` +If the workflow completes successfully, it emits a PublicationEvaluationCompleted event with an **approved** or **declined** evaluation result, which Unicorn Web listens to update its publication flag. -Run Command: - -```sh -pip3 install -r requirements.txt -``` +**Note:** Upon deleting the CloudFormation stack for this service, check if the `ApprovalStateMachine` StepFunction doesn't have any executions in `RUNNING` state. If there are, cancel those execution prior to deleting the CloudFormation stack. \ No newline at end of file From 81521e3a89a366a2720e09e4efe298fc5644091d Mon Sep 17 00:00:00 2001 From: Stephen Liedig Date: Tue, 5 Aug 2025 17:48:00 +0800 Subject: [PATCH 33/36] chore: updated bus name in test events --- .../contract_status_changed_event_contract_1_approved.json | 2 +- .../contract_status_changed_event_contract_1_draft.json | 2 +- .../contract_status_changed_event_contract_2_approved.json | 2 +- .../contract_status_changed_event_contract_2_draft.json | 2 +- .../publication_approval_requested_event_all_good.json | 2 +- ...tion_approval_requested_event_inappropriate_description.json | 2 +- ...blication_approval_requested_event_inappropriate_images.json | 2 +- ...lication_approval_requested_event_non_existing_contract.json | 2 +- .../publication_approval_requested_event_pause_workflow.json | 2 +- .../eventbridge/put_event_property_approval_requested.json | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/unicorn_approvals/tests/events/eventbridge/contract_status_changed_event_contract_1_approved.json b/unicorn_approvals/tests/events/eventbridge/contract_status_changed_event_contract_1_approved.json index 776aee1..a484d18 100644 --- a/unicorn_approvals/tests/events/eventbridge/contract_status_changed_event_contract_1_approved.json +++ b/unicorn_approvals/tests/events/eventbridge/contract_status_changed_event_contract_1_approved.json @@ -2,7 +2,7 @@ { "DetailType": "ContractStatusChanged", "Source": "unicorn.contracts", - "EventBusName": "UnicornPropertiesBus-local", + "EventBusName": "UnicornApprovalsBus-local", "Detail": "{ \"contract_updated_on\": \"10/08/2022 19:56:30\", \"contract_id\": \"f2bedc80-3dc8-4544-9140-9b606d71a6ee\", \"property_id\": \"usa/anytown/main-street/111\", \"contract_status\": \"APPROVED\" }" } ] diff --git a/unicorn_approvals/tests/events/eventbridge/contract_status_changed_event_contract_1_draft.json b/unicorn_approvals/tests/events/eventbridge/contract_status_changed_event_contract_1_draft.json index a50374f..0da247a 100644 --- a/unicorn_approvals/tests/events/eventbridge/contract_status_changed_event_contract_1_draft.json +++ b/unicorn_approvals/tests/events/eventbridge/contract_status_changed_event_contract_1_draft.json @@ -2,7 +2,7 @@ { "DetailType": "ContractStatusChanged", "Source": "unicorn.contracts", - "EventBusName": "UnicornPropertiesBus-local", + "EventBusName": "UnicornApprovalsBus-local", "Detail": "{ \"contract_updated_on\": \"10/08/2022 19:56:30\", \"contract_id\": \"f2bedc80-3dc8-4544-9140-9b606d71a6ee\", \"property_id\": \"usa/anytown/main-street/111\", \"contract_status\": \"DRAFT\" }" } ] diff --git a/unicorn_approvals/tests/events/eventbridge/contract_status_changed_event_contract_2_approved.json b/unicorn_approvals/tests/events/eventbridge/contract_status_changed_event_contract_2_approved.json index 99936c7..2b6f023 100644 --- a/unicorn_approvals/tests/events/eventbridge/contract_status_changed_event_contract_2_approved.json +++ b/unicorn_approvals/tests/events/eventbridge/contract_status_changed_event_contract_2_approved.json @@ -2,7 +2,7 @@ { "DetailType": "ContractStatusChanged", "Source": "unicorn.contracts", - "EventBusName": "UnicornPropertiesBus-local", + "EventBusName": "UnicornApprovalsBus-local", "Detail": "{ \"contract_updated_on\": \"10/08/2022 19:56:30\", \"contract_id\": \"9183453b-d284-4466-a2d9-f00b1d569ad7\", \"property_id\": \"usa/anytown/main-street/222\", \"contract_status\": \"APPROVED\" }" } ] diff --git a/unicorn_approvals/tests/events/eventbridge/contract_status_changed_event_contract_2_draft.json b/unicorn_approvals/tests/events/eventbridge/contract_status_changed_event_contract_2_draft.json index e98b1b3..c2fe23d 100644 --- a/unicorn_approvals/tests/events/eventbridge/contract_status_changed_event_contract_2_draft.json +++ b/unicorn_approvals/tests/events/eventbridge/contract_status_changed_event_contract_2_draft.json @@ -2,7 +2,7 @@ { "DetailType": "ContractStatusChanged", "Source": "unicorn.contracts", - "EventBusName": "UnicornPropertiesBus-local", + "EventBusName": "UnicornApprovalsBus-local", "Detail": "{ \"contract_updated_on\": \"10/08/2022 19:56:30\", \"contract_id\": \"9183453b-d284-4466-a2d9-f00b1d569ad7\", \"property_id\": \"usa/anytown/main-street/222\", \"contract_status\": \"DRAFT\" }" } ] diff --git a/unicorn_approvals/tests/events/eventbridge/publication_approval_requested_event_all_good.json b/unicorn_approvals/tests/events/eventbridge/publication_approval_requested_event_all_good.json index 6d05077..ff30e2c 100644 --- a/unicorn_approvals/tests/events/eventbridge/publication_approval_requested_event_all_good.json +++ b/unicorn_approvals/tests/events/eventbridge/publication_approval_requested_event_all_good.json @@ -2,7 +2,7 @@ { "DetailType": "PublicationApprovalRequested", "Source": "unicorn.web", - "EventBusName": "UnicornPropertiesBus-local", + "EventBusName": "UnicornApprovalsBus-local", "Detail": "{\"property_id\":\"usa/anytown/main-street/222\",\"address\":{\"country\":\"USA\",\"city\":\"Anytown\",\"street\":\"Main Street\",\"number\":222},\"description\":\"This classic Anytown estate comes with a covetable lake view. The romantic and comfortable backyard is the perfect setting for unicorn get-togethers. The open concept Main Stable is fully equipped with all the desired amenities. Second floor features 6 straw bales including large Rainbow Suite with private training pool terrace and Jr Sparkles Suite.\",\"contract\":\"sale\",\"listprice\":200,\"currency\":\"SPL\",\"images\":[\"property_images/prop1_exterior1.jpg\",\"property_images/prop1_interior1.jpg\",\"property_images/prop1_interior2.jpg\",\"property_images/prop1_interior3.jpg\"]}" } ] diff --git a/unicorn_approvals/tests/events/eventbridge/publication_approval_requested_event_inappropriate_description.json b/unicorn_approvals/tests/events/eventbridge/publication_approval_requested_event_inappropriate_description.json index ce594c1..14fc8c4 100644 --- a/unicorn_approvals/tests/events/eventbridge/publication_approval_requested_event_inappropriate_description.json +++ b/unicorn_approvals/tests/events/eventbridge/publication_approval_requested_event_inappropriate_description.json @@ -2,7 +2,7 @@ { "DetailType": "PublicationApprovalRequested", "Source": "unicorn.web", - "EventBusName": "UnicornPropertiesBus-local", + "EventBusName": "UnicornApprovalsBus-local", "Detail": "{\"property_id\":\"usa/anytown/main-street/111\",\"address\":{\"country\":\"USA\",\"city\":\"Anytown\",\"street\":\"Main Street\",\"number\":111},\"description\":\"This is a property for goblins. The property has the worst quality and is atrocious when it comes to design. The property is not clean whatsoever, and will make any property owner have buyers' remorse as soon the property is bought. Keep away from this property as much as possible!\",\"contract\":\"sale\",\"listprice\":200,\"currency\":\"SPL\",\"images\":[\"property_images/prop1_exterior1.jpg\",\"property_images/prop1_interior1.jpg\",\"property_images/prop1_interior2.jpg\",\"property_images/prop1_interior3.jpg\"]}" } ] diff --git a/unicorn_approvals/tests/events/eventbridge/publication_approval_requested_event_inappropriate_images.json b/unicorn_approvals/tests/events/eventbridge/publication_approval_requested_event_inappropriate_images.json index eb9c5ab..3e72041 100644 --- a/unicorn_approvals/tests/events/eventbridge/publication_approval_requested_event_inappropriate_images.json +++ b/unicorn_approvals/tests/events/eventbridge/publication_approval_requested_event_inappropriate_images.json @@ -2,7 +2,7 @@ { "DetailType": "PublicationApprovalRequested", "Source": "unicorn.web", - "EventBusName": "UnicornPropertiesBus-local", + "EventBusName": "UnicornApprovalsBus-local", "Detail": "{\"property_id\":\"usa/anytown/main-street/111\",\"address\":{\"country\":\"USA\",\"city\":\"Anytown\",\"street\":\"Main Street\",\"number\":111},\"description\":\"This classic Anytown estate comes with a covetable lake view. The romantic and comfortable backyard is the perfect setting for unicorn get-togethers. The open concept Main Stable is fully equipped with all the desired amenities. Second floor features 6 straw bales including large Rainbow Suite with private training pool terrace and Jr Sparkles Suite.\",\"contract\":\"sale\",\"listprice\":200,\"currency\":\"SPL\",\"images\":[\"property_images/prop1_exterior1.jpg\",\"property_images/prop1_interior1.jpg\",\"property_images/prop1_interior2.jpg\",\"property_images/prop1_interior3.jpg\",\"property_images/prop1_interior4-bad.jpg\"]}" } ] diff --git a/unicorn_approvals/tests/events/eventbridge/publication_approval_requested_event_non_existing_contract.json b/unicorn_approvals/tests/events/eventbridge/publication_approval_requested_event_non_existing_contract.json index 7066219..d5f137d 100644 --- a/unicorn_approvals/tests/events/eventbridge/publication_approval_requested_event_non_existing_contract.json +++ b/unicorn_approvals/tests/events/eventbridge/publication_approval_requested_event_non_existing_contract.json @@ -2,7 +2,7 @@ { "DetailType": "PublicationApprovalRequested", "Source": "unicorn.web", - "EventBusName": "UnicornPropertiesBus-local", + "EventBusName": "UnicornApprovalsBus-local", "Detail": "{\"property_id\":\"usa/anytown/main-street/333\",\"address\":{\"country\":\"USA\",\"city\":\"Anytown\",\"street\":\"Main Street\",\"number\":333},\"description\":\"This classic Anytown estate comes with a covetable lake view. The romantic and comfortable backyard is the perfect setting for unicorn get-togethers. The open concept Main Stable is fully equipped with all the desired amenities. Second floor features 6 straw bales including large Rainbow Suite with private training pool terrace and Jr Sparkles Suite.\",\"contract\":\"sale\",\"listprice\":200,\"currency\":\"SPL\",\"images\":[\"property_images/prop1_exterior1.jpg\",\"property_images/prop1_interior1.jpg\",\"property_images/prop1_interior2.jpg\",\"property_images/prop1_interior3.jpg\"]}" } ] diff --git a/unicorn_approvals/tests/events/eventbridge/publication_approval_requested_event_pause_workflow.json b/unicorn_approvals/tests/events/eventbridge/publication_approval_requested_event_pause_workflow.json index 8f804ab..ee5206a 100644 --- a/unicorn_approvals/tests/events/eventbridge/publication_approval_requested_event_pause_workflow.json +++ b/unicorn_approvals/tests/events/eventbridge/publication_approval_requested_event_pause_workflow.json @@ -2,7 +2,7 @@ { "DetailType": "PublicationApprovalRequested", "Source": "unicorn.web", - "EventBusName": "UnicornPropertiesBus-local", + "EventBusName": "UnicornApprovalsBus-local", "Detail": "{\"property_id\":\"usa/anytown/main-street/111\",\"address\":{\"country\":\"USA\",\"city\":\"Anytown\",\"street\":\"Main Street\",\"number\":111},\"description\":\"This classic Anytown estate comes with a covetable lake view. The romantic and comfortable backyard is the perfect setting for unicorn get-togethers. The open concept Main Stable is fully equipped with all the desired amenities. Second floor features 6 straw bales including large Rainbow Suite with private training pool terrace and Jr Sparkles Suite.\",\"contract\":\"sale\",\"listprice\":200,\"currency\":\"SPL\",\"images\":[\"property_images/prop1_exterior1.jpg\",\"property_images/prop1_interior1.jpg\",\"property_images/prop1_interior2.jpg\",\"property_images/prop1_interior3.jpg\"]}" } ] diff --git a/unicorn_approvals/tests/events/eventbridge/put_event_property_approval_requested.json b/unicorn_approvals/tests/events/eventbridge/put_event_property_approval_requested.json index b3d9d71..068a030 100644 --- a/unicorn_approvals/tests/events/eventbridge/put_event_property_approval_requested.json +++ b/unicorn_approvals/tests/events/eventbridge/put_event_property_approval_requested.json @@ -3,6 +3,6 @@ "Source": "unicorn.web", "Detail": "{ \"property_id\": \"usa/anytown/main-street/111\", \"country\": \"USA\", \"city\": \"Anytown\", \"street\": \"Main Street\", \"number\": 111, \"description\": \"This classic Anytown estate comes with a covetable lake view. The romantic and comfortable backyard is the perfect setting for unicorn get-togethers. The open concept Main Stable is fully equipped with all the desired amenities. Second floor features 6 straw bales including large Rainbow Suite with private training pool terrace and Jr Sparkles Suite.\", \"contract\": \"sale\", \"listprice\": 200, \"currency\": \"SPL\", \"images\": [ \"prop1_exterior1.jpg\", \"prop1_interior1.jpg\", \"prop1_interior2.jpg\", \"prop1_interior3.jpg\", \"prop1_interior4-bad.jpg\" ] }", "DetailType": "PublicationApprovalRequested", - "EventBusName": "UnicornPropertiesBus-local" + "EventBusName": "UnicornApprovalsBus-local" } ] From 3a35caada4839dc48e300745d0118acd13b307f5 Mon Sep 17 00:00:00 2001 From: Stephen Liedig Date: Tue, 5 Aug 2025 17:51:40 +0800 Subject: [PATCH 34/36] chore: updated readme and spelling mistakes --- README.md | 2 +- unicorn_approvals/README.md | 4 ++-- unicorn_approvals/src/README.md | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 77f3df5..144797e 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ The 6-8 hour workshop assumes your practical development skills in Python, TypeS ![AWS Serverless Developer Experience Workshop Reference Architecture](./docs/architecture.png) -Real estate company **Unicorn Properties** needs to manage publishing of new property listings and sale contracts linked to individual properties, and provide a way for customers to view approved listings. They adopted a serverless, event-driven architecture with two primary domains: **Contracts** (managed by Contracts Service) and **Properties** (managed by Web and Approvals Services). +Real estate company **Unicorn Properties** needs to manage publishing of new property listings and sale contracts linked to individual properties, and provide a way for customers to view approved listings. They adopted a serverless, event-driven architecture with two primary domains: **Contracts** (managed by the Contracts Service) and **Properties** (managed by the Web and Approvals Services). **Unicorn Contracts** (using the `Unicorn.Contracts` namespace) service manages contractual relationships between property sellers and Unicorn Approvals, defining properties for sale, terms, and engagement costs. diff --git a/unicorn_approvals/README.md b/unicorn_approvals/README.md index f70eb7f..008a8ad 100644 --- a/unicorn_approvals/README.md +++ b/unicorn_approvals/README.md @@ -6,9 +6,9 @@ **Unicorn Approvals** uses an AWS Step Functions state machine to approve property listings for Unicorn Web. The workflow checks for contract information, description sentiment and safe images, and verifies the contract is approved before approving the listing. It publishes the result via the `PublicationEvaluationCompleted` event. -A Unicorn Properties agent initiates the workflow by requesting to approve a listing, generating a `PublicationApprovalRequested` event with property information. To decouple from the Contracts Service, the Approval service maintains a local copy of contract status by consuming the ContractStatusChanged event. +A Unicorn Properties agent initiates the workflow by requesting to approve a listing, generating a `PublicationApprovalRequested` event with property information. To decouple from the Contracts Service, the Approvals service maintains a local copy of contract status by consuming the ContractStatusChanged event. -The workflow checks the contract state. If the contract is in the WaitForContractApproval state, it updates the contract status for the property with its task token, triggering a DynamoDB stream event. The Property approvals sync function handles these events and passes the task token back to the state machine based on the contract state. +The workflow checks the contract state. If the contract is in the WaitForContractApproval state, it updates the contract status for the property with its task token, triggering a DynamoDB stream event. The Property Approval Sync function handles these events and passes the task token back to the state machine based on the contract state. If the workflow completes successfully, it emits a PublicationEvaluationCompleted event with an **approved** or **declined** evaluation result, which Unicorn Web listens to update its publication flag. diff --git a/unicorn_approvals/src/README.md b/unicorn_approvals/src/README.md index f442855..78cbc75 100644 --- a/unicorn_approvals/src/README.md +++ b/unicorn_approvals/src/README.md @@ -6,9 +6,9 @@ **Unicorn Approvals** uses an AWS Step Functions state machine to approve property listings for Unicorn Web. The workflow checks for contract information, description sentiment and safe images, and verifies the contract is approved before approving the listing. It publishes the result via the `PublicationEvaluationCompleted` event. -A Unicorn Properties agent initiates the workflow by requesting to approve a listing, generating a `PublicationApprovalRequested` event with property information. To decouple from the Contracts Service, the Approval service maintains a local copy of contract status by consuming the ContractStatusChanged event. +A Unicorn Properties agent initiates the workflow by requesting to approve a listing, generating a `PublicationApprovalRequested` event with property information. To decouple from the Contracts Service, the Approvals service maintains a local copy of contract status by consuming the ContractStatusChanged event. -The workflow checks the contract state. If the contract is in the WaitForContractApproval state, it updates the contract status for the property with its task token, triggering a DynamoDB stream event. The Property approvals sync function handles these events and passes the task token back to the state machine based on the contract state. +The workflow checks the contract state. If the contract is in the WaitForContractApproval state, it updates the contract status for the property with its task token, triggering a DynamoDB stream event. The Property Approval Sync function handles these events and passes the task token back to the state machine based on the contract state. If the workflow completes successfully, it emits a PublicationEvaluationCompleted event with an **approved** or **declined** evaluation result, which Unicorn Web listens to update its publication flag. From 4f52d9df1c4f7a568a676339460f2735dbf2ef21 Mon Sep 17 00:00:00 2001 From: Stephen Liedig Date: Tue, 5 Aug 2025 21:56:50 +0800 Subject: [PATCH 35/36] chore: bumped dependencies --- unicorn_approvals/pyproject.toml | 12 ++-- unicorn_approvals/uv.lock | 88 +++++++++++++++--------------- unicorn_contracts/pyproject.toml | 12 ++-- unicorn_contracts/uv.lock | 94 ++++++++++++++++++-------------- unicorn_web/pyproject.toml | 12 ++-- unicorn_web/uv.lock | 94 ++++++++++++++++++-------------- 6 files changed, 166 insertions(+), 146 deletions(-) diff --git a/unicorn_approvals/pyproject.toml b/unicorn_approvals/pyproject.toml index 2fce544..81739cd 100644 --- a/unicorn_approvals/pyproject.toml +++ b/unicorn_approvals/pyproject.toml @@ -9,21 +9,21 @@ readme = "README.md" requires-python = ">=3.12" dependencies = [ - "aws-lambda-powertools[tracer]>=3.9.0", + "aws-lambda-powertools[tracer]>=3.18.0", "aws-xray-sdk>=2.14.0", - "boto3>=1.37.23", + "boto3>=1.40.2", ] [project.optional-dependencies] dev = [ - "aws-lambda-powertools[all]>=3.9.0", + "aws-lambda-powertools[all]>=3.18.0", "requests>=2.32.3", - "moto[dynamodb,events,sqs]>=5.0.14", + "moto[dynamodb,events,sqs]>=5.1.9", "importlib-metadata>=8.4.0", "pyyaml>=6.0.2", "arnparse>=0.0.2", - "pytest>=8.3.4", - "ruff>=0.9.7", + "pytest>=8.4.1", + "ruff>=0.12.7", ] [tool.setuptools] diff --git a/unicorn_approvals/uv.lock b/unicorn_approvals/uv.lock index 1aa79ba..15725a7 100644 --- a/unicorn_approvals/uv.lock +++ b/unicorn_approvals/uv.lock @@ -1,6 +1,6 @@ version = 1 revision = 2 -requires-python = ">=3.12.11" +requires-python = ">=3.12" [[package]] name = "annotated-types" @@ -14,7 +14,7 @@ wheels = [ [[package]] name = "approvals-service" version = "0.2.0" -source = { editable = "." } +source = { virtual = "." } dependencies = [ { name = "aws-lambda-powertools", extra = ["tracer"] }, { name = "aws-xray-sdk" }, @@ -36,16 +36,16 @@ dev = [ [package.metadata] requires-dist = [ { name = "arnparse", marker = "extra == 'dev'", specifier = ">=0.0.2" }, - { name = "aws-lambda-powertools", extras = ["all"], marker = "extra == 'dev'", specifier = ">=3.9.0" }, - { name = "aws-lambda-powertools", extras = ["tracer"], specifier = ">=3.9.0" }, + { name = "aws-lambda-powertools", extras = ["all"], marker = "extra == 'dev'", specifier = ">=3.18.0" }, + { name = "aws-lambda-powertools", extras = ["tracer"], specifier = ">=3.18.0" }, { name = "aws-xray-sdk", specifier = ">=2.14.0" }, - { name = "boto3", specifier = ">=1.37.23" }, + { name = "boto3", specifier = ">=1.40.2" }, { name = "importlib-metadata", marker = "extra == 'dev'", specifier = ">=8.4.0" }, - { name = "moto", extras = ["dynamodb", "events", "sqs"], marker = "extra == 'dev'", specifier = ">=5.0.14" }, - { name = "pytest", marker = "extra == 'dev'", specifier = ">=8.3.4" }, + { name = "moto", extras = ["dynamodb", "events", "sqs"], marker = "extra == 'dev'", specifier = ">=5.1.9" }, + { name = "pytest", marker = "extra == 'dev'", specifier = ">=8.4.1" }, { name = "pyyaml", marker = "extra == 'dev'", specifier = ">=6.0.2" }, { name = "requests", marker = "extra == 'dev'", specifier = ">=2.32.3" }, - { name = "ruff", marker = "extra == 'dev'", specifier = ">=0.9.7" }, + { name = "ruff", marker = "extra == 'dev'", specifier = ">=0.12.7" }, ] provides-extras = ["dev"] @@ -84,15 +84,15 @@ wheels = [ [[package]] name = "aws-lambda-powertools" -version = "3.17.0" +version = "3.18.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jmespath" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a8/bd/668cb3857f66907774af965475c952b07c12ce66aa9fd042c09df5cbb2cd/aws_lambda_powertools-3.17.0.tar.gz", hash = "sha256:153c5be7d36449c2a3ce554341b3cb28c127070c678069fea39709d4e114e4ce", size = 685174, upload-time = "2025-07-15T08:18:44.636Z" } +sdist = { url = "https://files.pythonhosted.org/packages/0b/d9/5ba420bbe1aef011559e035a1d1ef82a6d30500610116e7feb2f2b5dcda7/aws_lambda_powertools-3.18.0.tar.gz", hash = "sha256:74f484b03dfb733769828bf8e9f33ac427cd57c477a9ceae2dc19f643051e3c3", size = 686276, upload-time = "2025-07-29T08:22:50.901Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/56/d9/954d101974f7f81375429f540bcfe4efde806c49ea7d46d5c00fbfc6b8b9/aws_lambda_powertools-3.17.0-py3-none-any.whl", hash = "sha256:ed2d23ba1af73a5e4ad0fcdae66caeb9aef1cb9d95d324ccaa2a377b48688035", size = 826398, upload-time = "2025-07-15T08:18:42.454Z" }, + { url = "https://files.pythonhosted.org/packages/42/b1/ca638f5ce0f4d1c4c75412342c08d124142facf89104f9d3659e9c395c63/aws_lambda_powertools-3.18.0-py3-none-any.whl", hash = "sha256:5afb230abf4e64bce00d35e858a4e83ae99c667f648c1f4d246e4bb022715df8", size = 828005, upload-time = "2025-07-29T08:22:48.807Z" }, ] [package.optional-dependencies] @@ -123,39 +123,39 @@ wheels = [ [[package]] name = "boto3" -version = "1.39.14" +version = "1.40.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "botocore" }, { name = "jmespath" }, { name = "s3transfer" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/66/8f/acc7d434730e0c931ece4b46c983bf5afb7ae63abb545b535f0eda538476/boto3-1.39.14.tar.gz", hash = "sha256:fabb16360a93b449d5241006485bcc761c26694e75ac01009f4459f114acc06e", size = 111844, upload-time = "2025-07-25T19:25:26.943Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d1/c0/9ceff05d2243f169765ae9db08fa6f085d026af71a778cd083dc972f0f2b/boto3-1.40.2.tar.gz", hash = "sha256:2dfbc214fdbf94abfd61eec687ea39089d05af43bb00be792c76f3a6c1393f7b", size = 111826, upload-time = "2025-08-04T19:31:51.959Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/93/9a/01ea17a58a27b7f4a7a6f6e2f4d4191b9e92362b77b6d58689f2d7eccb99/boto3-1.39.14-py3-none-any.whl", hash = "sha256:82c6868cad18c3bd4170915e9525f9af5f83e9779c528417f8863629558fc2d0", size = 139898, upload-time = "2025-07-25T19:25:25.506Z" }, + { url = "https://files.pythonhosted.org/packages/f7/66/01bccaaebcd1365ce1334be042765e49ccf23787887afb8e43c6d4bc2f6e/boto3-1.40.2-py3-none-any.whl", hash = "sha256:3d99325ee874190e8f3bfd38823987327c826cdfbab943420851bdb7684d727c", size = 139882, upload-time = "2025-08-04T19:31:50.493Z" }, ] [[package]] name = "botocore" -version = "1.39.14" +version = "1.40.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jmespath" }, { name = "python-dateutil" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/cc/ca/8994676a67f0a9d39a0844124f196c4dedc2fbca370c839f61246c1fea6d/botocore-1.39.14.tar.gz", hash = "sha256:7fc44d4ad13b524e5d8a6296785776ef5898ac026ff74df9b35313831d507926", size = 14226110, upload-time = "2025-07-25T19:25:17.751Z" } +sdist = { url = "https://files.pythonhosted.org/packages/20/e5/e7d68381042a6d50510c8d4629f39922ce27ff32f45baf852ba6534342c5/botocore-1.40.2.tar.gz", hash = "sha256:77c4710bf37b28e897833b5b1f47d6a83e45a29985cd01a560dfdb8b6ad524e5", size = 14284599, upload-time = "2025-08-04T19:31:42.064Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/08/c0/6b8200686c1f9ea44ab0daab0223b04799d60ccf882b9d7f770fbb40571e/botocore-1.39.14-py3-none-any.whl", hash = "sha256:4ed551c77194167b7e8063f33059bc2f9b2ead0ed4ee33dc7857273648ed4349", size = 13888318, upload-time = "2025-07-25T19:25:13.386Z" }, + { url = "https://files.pythonhosted.org/packages/16/56/dd25fb9e47060e8f7e353208678fefb65d1b06704ea30983cad8bdd81370/botocore-1.40.2-py3-none-any.whl", hash = "sha256:a31e6269af05498f8dc1c7f2b3f34448a0f16c79a8601c0389ecddab51b2c2ab", size = 13944886, upload-time = "2025-08-04T19:31:37.027Z" }, ] [[package]] name = "certifi" -version = "2025.7.14" +version = "2025.8.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b3/76/52c535bcebe74590f296d6c77c86dabf761c41980e1347a2422e4aa2ae41/certifi-2025.7.14.tar.gz", hash = "sha256:8ea99dbdfaaf2ba2f9bac77b9249ef62ec5218e7c2b2e903378ed5fccf765995", size = 163981, upload-time = "2025-07-14T03:29:28.449Z" } +sdist = { url = "https://files.pythonhosted.org/packages/dc/67/960ebe6bf230a96cda2e0abcf73af550ec4f090005363542f0765df162e0/certifi-2025.8.3.tar.gz", hash = "sha256:e564105f78ded564e3ae7c923924435e1daa7463faeab5bb932bc53ffae63407", size = 162386, upload-time = "2025-08-03T03:07:47.08Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/4f/52/34c6cf5bb9285074dc3531c437b3919e825d976fde097a7a73f79e726d03/certifi-2025.7.14-py3-none-any.whl", hash = "sha256:6b31f564a415d79ee77df69d757bb49a5bb53bd9f756cbbe24394ffd6fc1f4b2", size = 162722, upload-time = "2025-07-14T03:29:26.863Z" }, + { url = "https://files.pythonhosted.org/packages/e5/48/1549795ba7742c948d2ad169c1c8cdbae65bc450d6cd753d124b17c8cd32/certifi-2025.8.3-py3-none-any.whl", hash = "sha256:f6c12493cfb1b06ba2ff328595af9350c65d6644968e5d3a2ffd78699af217a5", size = 161216, upload-time = "2025-08-03T03:07:45.777Z" }, ] [[package]] @@ -396,7 +396,7 @@ wheels = [ [[package]] name = "moto" -version = "5.1.8" +version = "5.1.9" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "boto3" }, @@ -409,9 +409,9 @@ dependencies = [ { name = "werkzeug" }, { name = "xmltodict" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/19/e8/986b38d3459124168e21b8ea3311a9a26e930bc84b1e9ede16e5bccd574c/moto-5.1.8.tar.gz", hash = "sha256:5c2f63c051b7c13224cb1483917c85a796468d7e37dcd5d1a5b8de66729de3f4", size = 7039961, upload-time = "2025-07-06T21:51:01.943Z" } +sdist = { url = "https://files.pythonhosted.org/packages/33/62/767e0f65066489b50580a25182025fec19825cbed499ae2044da1e779ed6/moto-5.1.9.tar.gz", hash = "sha256:0c4f0387b06b5d24c0ce90f8f89f31a565cc05789189c5d59b5df02594f2e371", size = 7041662, upload-time = "2025-07-28T19:24:48.773Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f1/a9/7dc06460777b2c1e7a91bb485e9dd600a88331aeac73ca88a8a6d437900f/moto-5.1.8-py3-none-any.whl", hash = "sha256:12f3a15100da7de019c671a516dbba33b14072faba103f16ca79a39b8c803b7d", size = 5108867, upload-time = "2025-07-06T21:50:59.911Z" }, + { url = "https://files.pythonhosted.org/packages/4e/0b/fd37926e3fd597df879d7c360f1641850023d30b1d67ba6686f4e33ab1fb/moto-5.1.9-py3-none-any.whl", hash = "sha256:e9ba7e4764a6088ccc34e3cc846ae719861ca202409fa865573de40a3e805b9b", size = 5216109, upload-time = "2025-07-28T19:24:45.997Z" }, ] [package.optional-dependencies] @@ -658,27 +658,27 @@ wheels = [ [[package]] name = "ruff" -version = "0.12.5" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/30/cd/01015eb5034605fd98d829c5839ec2c6b4582b479707f7c1c2af861e8258/ruff-0.12.5.tar.gz", hash = "sha256:b209db6102b66f13625940b7f8c7d0f18e20039bb7f6101fbdac935c9612057e", size = 5170722, upload-time = "2025-07-24T13:26:37.456Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d4/de/ad2f68f0798ff15dd8c0bcc2889558970d9a685b3249565a937cd820ad34/ruff-0.12.5-py3-none-linux_armv6l.whl", hash = "sha256:1de2c887e9dec6cb31fcb9948299de5b2db38144e66403b9660c9548a67abd92", size = 11819133, upload-time = "2025-07-24T13:25:56.369Z" }, - { url = "https://files.pythonhosted.org/packages/f8/fc/c6b65cd0e7fbe60f17e7ad619dca796aa49fbca34bb9bea5f8faf1ec2643/ruff-0.12.5-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:d1ab65e7d8152f519e7dea4de892317c9da7a108da1c56b6a3c1d5e7cf4c5e9a", size = 12501114, upload-time = "2025-07-24T13:25:59.471Z" }, - { url = "https://files.pythonhosted.org/packages/c5/de/c6bec1dce5ead9f9e6a946ea15e8d698c35f19edc508289d70a577921b30/ruff-0.12.5-py3-none-macosx_11_0_arm64.whl", hash = "sha256:962775ed5b27c7aa3fdc0d8f4d4433deae7659ef99ea20f783d666e77338b8cf", size = 11716873, upload-time = "2025-07-24T13:26:01.496Z" }, - { url = "https://files.pythonhosted.org/packages/a1/16/cf372d2ebe91e4eb5b82a2275c3acfa879e0566a7ac94d331ea37b765ac8/ruff-0.12.5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:73b4cae449597e7195a49eb1cdca89fd9fbb16140c7579899e87f4c85bf82f73", size = 11958829, upload-time = "2025-07-24T13:26:03.721Z" }, - { url = "https://files.pythonhosted.org/packages/25/bf/cd07e8f6a3a6ec746c62556b4c4b79eeb9b0328b362bb8431b7b8afd3856/ruff-0.12.5-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8b13489c3dc50de5e2d40110c0cce371e00186b880842e245186ca862bf9a1ac", size = 11626619, upload-time = "2025-07-24T13:26:06.118Z" }, - { url = "https://files.pythonhosted.org/packages/d8/c9/c2ccb3b8cbb5661ffda6925f81a13edbb786e623876141b04919d1128370/ruff-0.12.5-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f1504fea81461cf4841778b3ef0a078757602a3b3ea4b008feb1308cb3f23e08", size = 13221894, upload-time = "2025-07-24T13:26:08.292Z" }, - { url = "https://files.pythonhosted.org/packages/6b/58/68a5be2c8e5590ecdad922b2bcd5583af19ba648f7648f95c51c3c1eca81/ruff-0.12.5-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:c7da4129016ae26c32dfcbd5b671fe652b5ab7fc40095d80dcff78175e7eddd4", size = 14163909, upload-time = "2025-07-24T13:26:10.474Z" }, - { url = "https://files.pythonhosted.org/packages/bd/d1/ef6b19622009ba8386fdb792c0743f709cf917b0b2f1400589cbe4739a33/ruff-0.12.5-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ca972c80f7ebcfd8af75a0f18b17c42d9f1ef203d163669150453f50ca98ab7b", size = 13583652, upload-time = "2025-07-24T13:26:13.381Z" }, - { url = "https://files.pythonhosted.org/packages/62/e3/1c98c566fe6809a0c83751d825a03727f242cdbe0d142c9e292725585521/ruff-0.12.5-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8dbbf9f25dfb501f4237ae7501d6364b76a01341c6f1b2cd6764fe449124bb2a", size = 12700451, upload-time = "2025-07-24T13:26:15.488Z" }, - { url = "https://files.pythonhosted.org/packages/24/ff/96058f6506aac0fbc0d0fc0d60b0d0bd746240a0594657a2d94ad28033ba/ruff-0.12.5-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c47dea6ae39421851685141ba9734767f960113d51e83fd7bb9958d5be8763a", size = 12937465, upload-time = "2025-07-24T13:26:17.808Z" }, - { url = "https://files.pythonhosted.org/packages/eb/d3/68bc5e7ab96c94b3589d1789f2dd6dd4b27b263310019529ac9be1e8f31b/ruff-0.12.5-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:c5076aa0e61e30f848846f0265c873c249d4b558105b221be1828f9f79903dc5", size = 11771136, upload-time = "2025-07-24T13:26:20.422Z" }, - { url = "https://files.pythonhosted.org/packages/52/75/7356af30a14584981cabfefcf6106dea98cec9a7af4acb5daaf4b114845f/ruff-0.12.5-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:a5a4c7830dadd3d8c39b1cc85386e2c1e62344f20766be6f173c22fb5f72f293", size = 11601644, upload-time = "2025-07-24T13:26:22.928Z" }, - { url = "https://files.pythonhosted.org/packages/c2/67/91c71d27205871737cae11025ee2b098f512104e26ffd8656fd93d0ada0a/ruff-0.12.5-py3-none-musllinux_1_2_i686.whl", hash = "sha256:46699f73c2b5b137b9dc0fc1a190b43e35b008b398c6066ea1350cce6326adcb", size = 12478068, upload-time = "2025-07-24T13:26:26.134Z" }, - { url = "https://files.pythonhosted.org/packages/34/04/b6b00383cf2f48e8e78e14eb258942fdf2a9bf0287fbf5cdd398b749193a/ruff-0.12.5-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:5a655a0a0d396f0f072faafc18ebd59adde8ca85fb848dc1b0d9f024b9c4d3bb", size = 12991537, upload-time = "2025-07-24T13:26:28.533Z" }, - { url = "https://files.pythonhosted.org/packages/3e/b9/053d6445dc7544fb6594785056d8ece61daae7214859ada4a152ad56b6e0/ruff-0.12.5-py3-none-win32.whl", hash = "sha256:dfeb2627c459b0b78ca2bbdc38dd11cc9a0a88bf91db982058b26ce41714ffa9", size = 11751575, upload-time = "2025-07-24T13:26:30.835Z" }, - { url = "https://files.pythonhosted.org/packages/bc/0f/ab16e8259493137598b9149734fec2e06fdeda9837e6f634f5c4e35916da/ruff-0.12.5-py3-none-win_amd64.whl", hash = "sha256:ae0d90cf5f49466c954991b9d8b953bd093c32c27608e409ae3564c63c5306a5", size = 12882273, upload-time = "2025-07-24T13:26:32.929Z" }, - { url = "https://files.pythonhosted.org/packages/00/db/c376b0661c24cf770cb8815268190668ec1330eba8374a126ceef8c72d55/ruff-0.12.5-py3-none-win_arm64.whl", hash = "sha256:48cdbfc633de2c5c37d9f090ba3b352d1576b0015bfc3bc98eaf230275b7e805", size = 11951564, upload-time = "2025-07-24T13:26:34.994Z" }, +version = "0.12.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a1/81/0bd3594fa0f690466e41bd033bdcdf86cba8288345ac77ad4afbe5ec743a/ruff-0.12.7.tar.gz", hash = "sha256:1fc3193f238bc2d7968772c82831a4ff69252f673be371fb49663f0068b7ec71", size = 5197814, upload-time = "2025-07-29T22:32:35.877Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e1/d2/6cb35e9c85e7a91e8d22ab32ae07ac39cc34a71f1009a6f9e4a2a019e602/ruff-0.12.7-py3-none-linux_armv6l.whl", hash = "sha256:76e4f31529899b8c434c3c1dede98c4483b89590e15fb49f2d46183801565303", size = 11852189, upload-time = "2025-07-29T22:31:41.281Z" }, + { url = "https://files.pythonhosted.org/packages/63/5b/a4136b9921aa84638f1a6be7fb086f8cad0fde538ba76bda3682f2599a2f/ruff-0.12.7-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:789b7a03e72507c54fb3ba6209e4bb36517b90f1a3569ea17084e3fd295500fb", size = 12519389, upload-time = "2025-07-29T22:31:54.265Z" }, + { url = "https://files.pythonhosted.org/packages/a8/c9/3e24a8472484269b6b1821794141f879c54645a111ded4b6f58f9ab0705f/ruff-0.12.7-py3-none-macosx_11_0_arm64.whl", hash = "sha256:2e1c2a3b8626339bb6369116e7030a4cf194ea48f49b64bb505732a7fce4f4e3", size = 11743384, upload-time = "2025-07-29T22:31:59.575Z" }, + { url = "https://files.pythonhosted.org/packages/26/7c/458dd25deeb3452c43eaee853c0b17a1e84169f8021a26d500ead77964fd/ruff-0.12.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32dec41817623d388e645612ec70d5757a6d9c035f3744a52c7b195a57e03860", size = 11943759, upload-time = "2025-07-29T22:32:01.95Z" }, + { url = "https://files.pythonhosted.org/packages/7f/8b/658798472ef260ca050e400ab96ef7e85c366c39cf3dfbef4d0a46a528b6/ruff-0.12.7-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:47ef751f722053a5df5fa48d412dbb54d41ab9b17875c6840a58ec63ff0c247c", size = 11654028, upload-time = "2025-07-29T22:32:04.367Z" }, + { url = "https://files.pythonhosted.org/packages/a8/86/9c2336f13b2a3326d06d39178fd3448dcc7025f82514d1b15816fe42bfe8/ruff-0.12.7-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a828a5fc25a3efd3e1ff7b241fd392686c9386f20e5ac90aa9234a5faa12c423", size = 13225209, upload-time = "2025-07-29T22:32:06.952Z" }, + { url = "https://files.pythonhosted.org/packages/76/69/df73f65f53d6c463b19b6b312fd2391dc36425d926ec237a7ed028a90fc1/ruff-0.12.7-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:5726f59b171111fa6a69d82aef48f00b56598b03a22f0f4170664ff4d8298efb", size = 14182353, upload-time = "2025-07-29T22:32:10.053Z" }, + { url = "https://files.pythonhosted.org/packages/58/1e/de6cda406d99fea84b66811c189b5ea139814b98125b052424b55d28a41c/ruff-0.12.7-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:74e6f5c04c4dd4aba223f4fe6e7104f79e0eebf7d307e4f9b18c18362124bccd", size = 13631555, upload-time = "2025-07-29T22:32:12.644Z" }, + { url = "https://files.pythonhosted.org/packages/6f/ae/625d46d5164a6cc9261945a5e89df24457dc8262539ace3ac36c40f0b51e/ruff-0.12.7-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5d0bfe4e77fba61bf2ccadf8cf005d6133e3ce08793bbe870dd1c734f2699a3e", size = 12667556, upload-time = "2025-07-29T22:32:15.312Z" }, + { url = "https://files.pythonhosted.org/packages/55/bf/9cb1ea5e3066779e42ade8d0cd3d3b0582a5720a814ae1586f85014656b6/ruff-0.12.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06bfb01e1623bf7f59ea749a841da56f8f653d641bfd046edee32ede7ff6c606", size = 12939784, upload-time = "2025-07-29T22:32:17.69Z" }, + { url = "https://files.pythonhosted.org/packages/55/7f/7ead2663be5627c04be83754c4f3096603bf5e99ed856c7cd29618c691bd/ruff-0.12.7-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:e41df94a957d50083fd09b916d6e89e497246698c3f3d5c681c8b3e7b9bb4ac8", size = 11771356, upload-time = "2025-07-29T22:32:20.134Z" }, + { url = "https://files.pythonhosted.org/packages/17/40/a95352ea16edf78cd3a938085dccc55df692a4d8ba1b3af7accbe2c806b0/ruff-0.12.7-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:4000623300563c709458d0ce170c3d0d788c23a058912f28bbadc6f905d67afa", size = 11612124, upload-time = "2025-07-29T22:32:22.645Z" }, + { url = "https://files.pythonhosted.org/packages/4d/74/633b04871c669e23b8917877e812376827c06df866e1677f15abfadc95cb/ruff-0.12.7-py3-none-musllinux_1_2_i686.whl", hash = "sha256:69ffe0e5f9b2cf2b8e289a3f8945b402a1b19eff24ec389f45f23c42a3dd6fb5", size = 12479945, upload-time = "2025-07-29T22:32:24.765Z" }, + { url = "https://files.pythonhosted.org/packages/be/34/c3ef2d7799c9778b835a76189c6f53c179d3bdebc8c65288c29032e03613/ruff-0.12.7-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:a07a5c8ffa2611a52732bdc67bf88e243abd84fe2d7f6daef3826b59abbfeda4", size = 12998677, upload-time = "2025-07-29T22:32:27.022Z" }, + { url = "https://files.pythonhosted.org/packages/77/ab/aca2e756ad7b09b3d662a41773f3edcbd262872a4fc81f920dc1ffa44541/ruff-0.12.7-py3-none-win32.whl", hash = "sha256:c928f1b2ec59fb77dfdf70e0419408898b63998789cc98197e15f560b9e77f77", size = 11756687, upload-time = "2025-07-29T22:32:29.381Z" }, + { url = "https://files.pythonhosted.org/packages/b4/71/26d45a5042bc71db22ddd8252ca9d01e9ca454f230e2996bb04f16d72799/ruff-0.12.7-py3-none-win_amd64.whl", hash = "sha256:9c18f3d707ee9edf89da76131956aba1270c6348bfee8f6c647de841eac7194f", size = 12912365, upload-time = "2025-07-29T22:32:31.517Z" }, + { url = "https://files.pythonhosted.org/packages/4c/9b/0b8aa09817b63e78d94b4977f18b1fcaead3165a5ee49251c5d5c245bb2d/ruff-0.12.7-py3-none-win_arm64.whl", hash = "sha256:dfce05101dbd11833a0776716d5d1578641b7fddb537fe7fa956ab85d1769b69", size = 11982083, upload-time = "2025-07-29T22:32:33.881Z" }, ] [[package]] diff --git a/unicorn_contracts/pyproject.toml b/unicorn_contracts/pyproject.toml index 8a9311f..a4007d4 100644 --- a/unicorn_contracts/pyproject.toml +++ b/unicorn_contracts/pyproject.toml @@ -9,21 +9,21 @@ readme = "README.md" requires-python = ">=3.12" dependencies = [ - "aws-lambda-powertools[tracer]>=3.9.0", + "aws-lambda-powertools[tracer]>=3.18.0", "aws-xray-sdk>=2.14.0", - "boto3>=1.37.23", + "boto3>=1.40.2", ] [project.optional-dependencies] dev = [ - "aws-lambda-powertools[all]>=3.9.0", + "aws-lambda-powertools[all]>=3.18.0", "requests>=2.32.3", - "moto[dynamodb,events,sqs]>=5.0.14", + "moto[dynamodb,events,sqs]>=5.1.9", "importlib-metadata>=8.4.0", "pyyaml>=6.0.2", "arnparse>=0.0.2", - "pytest>=8.3.4", - "ruff>=0.9.7", + "pytest>=8.4.1", + "ruff>=0.12.7", "tomli>=2.2.1", ] diff --git a/unicorn_contracts/uv.lock b/unicorn_contracts/uv.lock index 18ac214..4a802fb 100644 --- a/unicorn_contracts/uv.lock +++ b/unicorn_contracts/uv.lock @@ -46,15 +46,15 @@ wheels = [ [[package]] name = "aws-lambda-powertools" -version = "3.13.0" +version = "3.18.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jmespath" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fd/2b/068efd467c0866e2272c5de7525ddb02ff4e694f71245c8d2a83d4948f23/aws_lambda_powertools-3.13.0.tar.gz", hash = "sha256:99dc11ac6eb81564f599fdd85ba79069f7740ae3481c99bca2cee8abb7c95543", size = 672664, upload-time = "2025-05-20T07:35:30.254Z" } +sdist = { url = "https://files.pythonhosted.org/packages/0b/d9/5ba420bbe1aef011559e035a1d1ef82a6d30500610116e7feb2f2b5dcda7/aws_lambda_powertools-3.18.0.tar.gz", hash = "sha256:74f484b03dfb733769828bf8e9f33ac427cd57c477a9ceae2dc19f643051e3c3", size = 686276, upload-time = "2025-07-29T08:22:50.901Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/98/cd/2241ff877528c66ee11ea636684c4242ceeadb6459a33b08507a40151414/aws_lambda_powertools-3.13.0-py3-none-any.whl", hash = "sha256:9df045f4c3ff944176655813dbff8c1160e056babf5e6d71d4e18c0003818f2e", size = 802546, upload-time = "2025-05-20T07:35:27.767Z" }, + { url = "https://files.pythonhosted.org/packages/42/b1/ca638f5ce0f4d1c4c75412342c08d124142facf89104f9d3659e9c395c63/aws_lambda_powertools-3.18.0-py3-none-any.whl", hash = "sha256:5afb230abf4e64bce00d35e858a4e83ae99c667f648c1f4d246e4bb022715df8", size = 828005, upload-time = "2025-07-29T08:22:48.807Z" }, ] [package.optional-dependencies] @@ -85,30 +85,30 @@ wheels = [ [[package]] name = "boto3" -version = "1.38.24" +version = "1.40.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "botocore" }, { name = "jmespath" }, { name = "s3transfer" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/83/7d/cdd55376fe9b9102a843649cbd9cba38d49bfd570a89042c090550b23bf5/boto3-1.38.24.tar.gz", hash = "sha256:abdb8c760543e9c22026320e62e2934762b0c4ac4f42e8ea2a756f2d489b3135", size = 111854, upload-time = "2025-05-27T21:26:22.343Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d1/c0/9ceff05d2243f169765ae9db08fa6f085d026af71a778cd083dc972f0f2b/boto3-1.40.2.tar.gz", hash = "sha256:2dfbc214fdbf94abfd61eec687ea39089d05af43bb00be792c76f3a6c1393f7b", size = 111826, upload-time = "2025-08-04T19:31:51.959Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2e/cc/78cf9f63bfa84d3f0ac4d5a527a3d141ede40554fd4718ec2634dee08683/boto3-1.38.24-py3-none-any.whl", hash = "sha256:1f95ec3ac88ae6381fa0409e4c2ad0a41f0caf5fd6d8ef45a9525406a3f58b18", size = 139938, upload-time = "2025-05-27T21:26:18.601Z" }, + { url = "https://files.pythonhosted.org/packages/f7/66/01bccaaebcd1365ce1334be042765e49ccf23787887afb8e43c6d4bc2f6e/boto3-1.40.2-py3-none-any.whl", hash = "sha256:3d99325ee874190e8f3bfd38823987327c826cdfbab943420851bdb7684d727c", size = 139882, upload-time = "2025-08-04T19:31:50.493Z" }, ] [[package]] name = "botocore" -version = "1.38.24" +version = "1.40.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jmespath" }, { name = "python-dateutil" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/95/1b/1e38f24245e1b0461470176335bc0a443050459e9e64a0d881244a0a8a5e/botocore-1.38.24.tar.gz", hash = "sha256:43563d5c2dfd56ebbcd9e25f482fc45000bfaec5966b26c77b331bd340c46376", size = 13909191, upload-time = "2025-05-27T21:26:08.818Z" } +sdist = { url = "https://files.pythonhosted.org/packages/20/e5/e7d68381042a6d50510c8d4629f39922ce27ff32f45baf852ba6534342c5/botocore-1.40.2.tar.gz", hash = "sha256:77c4710bf37b28e897833b5b1f47d6a83e45a29985cd01a560dfdb8b6ad524e5", size = 14284599, upload-time = "2025-08-04T19:31:42.064Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6c/58/197221be8faf51ae4fb72c227601db468ef7981c107efbff27d794445942/botocore-1.38.24-py3-none-any.whl", hash = "sha256:5901667b96d3a8603479879ab097560216cdc4c2918d433fc6509555d0ada29c", size = 13570245, upload-time = "2025-05-27T21:26:04.669Z" }, + { url = "https://files.pythonhosted.org/packages/16/56/dd25fb9e47060e8f7e353208678fefb65d1b06704ea30983cad8bdd81370/botocore-1.40.2-py3-none-any.whl", hash = "sha256:a31e6269af05498f8dc1c7f2b3f34448a0f16c79a8601c0389ecddab51b2c2ab", size = 13944886, upload-time = "2025-08-04T19:31:37.027Z" }, ] [[package]] @@ -223,16 +223,16 @@ dev = [ [package.metadata] requires-dist = [ { name = "arnparse", marker = "extra == 'dev'", specifier = ">=0.0.2" }, - { name = "aws-lambda-powertools", extras = ["all"], marker = "extra == 'dev'", specifier = ">=3.9.0" }, - { name = "aws-lambda-powertools", extras = ["tracer"], specifier = ">=3.9.0" }, + { name = "aws-lambda-powertools", extras = ["all"], marker = "extra == 'dev'", specifier = ">=3.18.0" }, + { name = "aws-lambda-powertools", extras = ["tracer"], specifier = ">=3.18.0" }, { name = "aws-xray-sdk", specifier = ">=2.14.0" }, - { name = "boto3", specifier = ">=1.37.23" }, + { name = "boto3", specifier = ">=1.40.2" }, { name = "importlib-metadata", marker = "extra == 'dev'", specifier = ">=8.4.0" }, - { name = "moto", extras = ["dynamodb", "events", "sqs"], marker = "extra == 'dev'", specifier = ">=5.0.14" }, - { name = "pytest", marker = "extra == 'dev'", specifier = ">=8.3.4" }, + { name = "moto", extras = ["dynamodb", "events", "sqs"], marker = "extra == 'dev'", specifier = ">=5.1.9" }, + { name = "pytest", marker = "extra == 'dev'", specifier = ">=8.4.1" }, { name = "pyyaml", marker = "extra == 'dev'", specifier = ">=6.0.2" }, { name = "requests", marker = "extra == 'dev'", specifier = ">=2.32.3" }, - { name = "ruff", marker = "extra == 'dev'", specifier = ">=0.9.7" }, + { name = "ruff", marker = "extra == 'dev'", specifier = ">=0.12.7" }, { name = "tomli", marker = "extra == 'dev'", specifier = ">=2.2.1" }, ] provides-extras = ["dev"] @@ -398,7 +398,7 @@ wheels = [ [[package]] name = "moto" -version = "5.1.5" +version = "5.1.9" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "boto3" }, @@ -411,9 +411,9 @@ dependencies = [ { name = "werkzeug" }, { name = "xmltodict" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/24/9f/5cacf53cbd26b4a77c817fd4fbec2ed38139ba2cfcd842c279aa19ee161f/moto-5.1.5.tar.gz", hash = "sha256:42b362ea9a16181e8e7b615ac212c294b882f020e9ae02f01230f167926df84e", size = 6893155, upload-time = "2025-05-24T12:19:55.398Z" } +sdist = { url = "https://files.pythonhosted.org/packages/33/62/767e0f65066489b50580a25182025fec19825cbed499ae2044da1e779ed6/moto-5.1.9.tar.gz", hash = "sha256:0c4f0387b06b5d24c0ce90f8f89f31a565cc05789189c5d59b5df02594f2e371", size = 7041662, upload-time = "2025-07-28T19:24:48.773Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/84/0f/72a420e972a9e782d08843ced85d29f04c8470c66fc84ecb1c8a7e7abcf8/moto-5.1.5-py3-none-any.whl", hash = "sha256:866ae85eb5efe11a78f991127531878fd7f49177eb4a6680f47060430eb8932d", size = 4992353, upload-time = "2025-05-24T12:19:53.435Z" }, + { url = "https://files.pythonhosted.org/packages/4e/0b/fd37926e3fd597df879d7c360f1641850023d30b1d67ba6686f4e33ab1fb/moto-5.1.9-py3-none-any.whl", hash = "sha256:e9ba7e4764a6088ccc34e3cc846ae719861ca202409fa865573de40a3e805b9b", size = 5216109, upload-time = "2025-07-28T19:24:45.997Z" }, ] [package.optional-dependencies] @@ -541,19 +541,29 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b6/5f/d6d641b490fd3ec2c4c13b4244d68deea3a1b970a97be64f34fb5504ff72/pydantic_settings-2.9.1-py3-none-any.whl", hash = "sha256:59b4f431b1defb26fe620c71a7d3968a710d719f5f4cdbbdb7926edeb770f6ef", size = 44356, upload-time = "2025-04-18T16:44:46.617Z" }, ] +[[package]] +name = "pygments" +version = "2.19.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631, upload-time = "2025-06-21T13:39:12.283Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload-time = "2025-06-21T13:39:07.939Z" }, +] + [[package]] name = "pytest" -version = "8.3.5" +version = "8.4.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, { name = "iniconfig" }, { name = "packaging" }, { name = "pluggy" }, + { name = "pygments" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ae/3c/c9d525a414d506893f0cd8a8d0de7706446213181570cdbd766691164e40/pytest-8.3.5.tar.gz", hash = "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845", size = 1450891, upload-time = "2025-03-02T12:54:54.503Z" } +sdist = { url = "https://files.pythonhosted.org/packages/08/ba/45911d754e8eba3d5a841a5ce61a65a685ff1798421ac054f85aa8747dfb/pytest-8.4.1.tar.gz", hash = "sha256:7c67fd69174877359ed9371ec3af8a3d2b04741818c51e5e99cc1742251fa93c", size = 1517714, upload-time = "2025-06-18T05:48:06.109Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/30/3d/64ad57c803f1fa1e963a7946b6e0fea4a70df53c1a7fed304586539c2bac/pytest-8.3.5-py3-none-any.whl", hash = "sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820", size = 343634, upload-time = "2025-03-02T12:54:52.069Z" }, + { url = "https://files.pythonhosted.org/packages/29/16/c8a903f4c4dffe7a12843191437d7cd8e32751d5de349d45d3fe69544e87/pytest-8.4.1-py3-none-any.whl", hash = "sha256:539c70ba6fcead8e78eebbf1115e8b589e7565830d7d006a8723f19ac8a0afb7", size = 365474, upload-time = "2025-06-18T05:48:03.955Z" }, ] [[package]] @@ -647,27 +657,27 @@ wheels = [ [[package]] name = "ruff" -version = "0.11.11" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b2/53/ae4857030d59286924a8bdb30d213d6ff22d8f0957e738d0289990091dd8/ruff-0.11.11.tar.gz", hash = "sha256:7774173cc7c1980e6bf67569ebb7085989a78a103922fb83ef3dfe230cd0687d", size = 4186707, upload-time = "2025-05-22T19:19:34.363Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b1/14/f2326676197bab099e2a24473158c21656fbf6a207c65f596ae15acb32b9/ruff-0.11.11-py3-none-linux_armv6l.whl", hash = "sha256:9924e5ae54125ed8958a4f7de320dab7380f6e9fa3195e3dc3b137c6842a0092", size = 10229049, upload-time = "2025-05-22T19:18:45.516Z" }, - { url = "https://files.pythonhosted.org/packages/9a/f3/bff7c92dd66c959e711688b2e0768e486bbca46b2f35ac319bb6cce04447/ruff-0.11.11-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:c8a93276393d91e952f790148eb226658dd275cddfde96c6ca304873f11d2ae4", size = 11053601, upload-time = "2025-05-22T19:18:49.269Z" }, - { url = "https://files.pythonhosted.org/packages/e2/38/8e1a3efd0ef9d8259346f986b77de0f62c7a5ff4a76563b6b39b68f793b9/ruff-0.11.11-py3-none-macosx_11_0_arm64.whl", hash = "sha256:d6e333dbe2e6ae84cdedefa943dfd6434753ad321764fd937eef9d6b62022bcd", size = 10367421, upload-time = "2025-05-22T19:18:51.754Z" }, - { url = "https://files.pythonhosted.org/packages/b4/50/557ad9dd4fb9d0bf524ec83a090a3932d284d1a8b48b5906b13b72800e5f/ruff-0.11.11-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7885d9a5e4c77b24e8c88aba8c80be9255fa22ab326019dac2356cff42089fc6", size = 10581980, upload-time = "2025-05-22T19:18:54.011Z" }, - { url = "https://files.pythonhosted.org/packages/c4/b2/e2ed82d6e2739ece94f1bdbbd1d81b712d3cdaf69f0a1d1f1a116b33f9ad/ruff-0.11.11-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1b5ab797fcc09121ed82e9b12b6f27e34859e4227080a42d090881be888755d4", size = 10089241, upload-time = "2025-05-22T19:18:56.041Z" }, - { url = "https://files.pythonhosted.org/packages/3d/9f/b4539f037a5302c450d7c695c82f80e98e48d0d667ecc250e6bdeb49b5c3/ruff-0.11.11-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e231ff3132c1119ece836487a02785f099a43992b95c2f62847d29bace3c75ac", size = 11699398, upload-time = "2025-05-22T19:18:58.248Z" }, - { url = "https://files.pythonhosted.org/packages/61/fb/32e029d2c0b17df65e6eaa5ce7aea5fbeaed22dddd9fcfbbf5fe37c6e44e/ruff-0.11.11-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:a97c9babe1d4081037a90289986925726b802d180cca784ac8da2bbbc335f709", size = 12427955, upload-time = "2025-05-22T19:19:00.981Z" }, - { url = "https://files.pythonhosted.org/packages/6e/e3/160488dbb11f18c8121cfd588e38095ba779ae208292765972f7732bfd95/ruff-0.11.11-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d8c4ddcbe8a19f59f57fd814b8b117d4fcea9bee7c0492e6cf5fdc22cfa563c8", size = 12069803, upload-time = "2025-05-22T19:19:03.258Z" }, - { url = "https://files.pythonhosted.org/packages/ff/16/3b006a875f84b3d0bff24bef26b8b3591454903f6f754b3f0a318589dcc3/ruff-0.11.11-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6224076c344a7694c6fbbb70d4f2a7b730f6d47d2a9dc1e7f9d9bb583faf390b", size = 11242630, upload-time = "2025-05-22T19:19:05.871Z" }, - { url = "https://files.pythonhosted.org/packages/65/0d/0338bb8ac0b97175c2d533e9c8cdc127166de7eb16d028a43c5ab9e75abd/ruff-0.11.11-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:882821fcdf7ae8db7a951df1903d9cb032bbe838852e5fc3c2b6c3ab54e39875", size = 11507310, upload-time = "2025-05-22T19:19:08.584Z" }, - { url = "https://files.pythonhosted.org/packages/6f/bf/d7130eb26174ce9b02348b9f86d5874eafbf9f68e5152e15e8e0a392e4a3/ruff-0.11.11-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:dcec2d50756463d9df075a26a85a6affbc1b0148873da3997286caf1ce03cae1", size = 10441144, upload-time = "2025-05-22T19:19:13.621Z" }, - { url = "https://files.pythonhosted.org/packages/b3/f3/4be2453b258c092ff7b1761987cf0749e70ca1340cd1bfb4def08a70e8d8/ruff-0.11.11-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:99c28505ecbaeb6594701a74e395b187ee083ee26478c1a795d35084d53ebd81", size = 10081987, upload-time = "2025-05-22T19:19:15.821Z" }, - { url = "https://files.pythonhosted.org/packages/6c/6e/dfa4d2030c5b5c13db158219f2ec67bf333e8a7748dccf34cfa2a6ab9ebc/ruff-0.11.11-py3-none-musllinux_1_2_i686.whl", hash = "sha256:9263f9e5aa4ff1dec765e99810f1cc53f0c868c5329b69f13845f699fe74f639", size = 11073922, upload-time = "2025-05-22T19:19:18.104Z" }, - { url = "https://files.pythonhosted.org/packages/ff/f4/f7b0b0c3d32b593a20ed8010fa2c1a01f2ce91e79dda6119fcc51d26c67b/ruff-0.11.11-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:64ac6f885e3ecb2fdbb71de2701d4e34526651f1e8503af8fb30d4915a3fe345", size = 11568537, upload-time = "2025-05-22T19:19:20.889Z" }, - { url = "https://files.pythonhosted.org/packages/d2/46/0e892064d0adc18bcc81deed9aaa9942a27fd2cd9b1b7791111ce468c25f/ruff-0.11.11-py3-none-win32.whl", hash = "sha256:1adcb9a18802268aaa891ffb67b1c94cd70578f126637118e8099b8e4adcf112", size = 10536492, upload-time = "2025-05-22T19:19:23.642Z" }, - { url = "https://files.pythonhosted.org/packages/1b/d9/232e79459850b9f327e9f1dc9c047a2a38a6f9689e1ec30024841fc4416c/ruff-0.11.11-py3-none-win_amd64.whl", hash = "sha256:748b4bb245f11e91a04a4ff0f96e386711df0a30412b9fe0c74d5bdc0e4a531f", size = 11612562, upload-time = "2025-05-22T19:19:27.013Z" }, - { url = "https://files.pythonhosted.org/packages/ce/eb/09c132cff3cc30b2e7244191dcce69437352d6d6709c0adf374f3e6f476e/ruff-0.11.11-py3-none-win_arm64.whl", hash = "sha256:6c51f136c0364ab1b774767aa8b86331bd8e9d414e2d107db7a2189f35ea1f7b", size = 10735951, upload-time = "2025-05-22T19:19:30.043Z" }, +version = "0.12.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a1/81/0bd3594fa0f690466e41bd033bdcdf86cba8288345ac77ad4afbe5ec743a/ruff-0.12.7.tar.gz", hash = "sha256:1fc3193f238bc2d7968772c82831a4ff69252f673be371fb49663f0068b7ec71", size = 5197814, upload-time = "2025-07-29T22:32:35.877Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e1/d2/6cb35e9c85e7a91e8d22ab32ae07ac39cc34a71f1009a6f9e4a2a019e602/ruff-0.12.7-py3-none-linux_armv6l.whl", hash = "sha256:76e4f31529899b8c434c3c1dede98c4483b89590e15fb49f2d46183801565303", size = 11852189, upload-time = "2025-07-29T22:31:41.281Z" }, + { url = "https://files.pythonhosted.org/packages/63/5b/a4136b9921aa84638f1a6be7fb086f8cad0fde538ba76bda3682f2599a2f/ruff-0.12.7-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:789b7a03e72507c54fb3ba6209e4bb36517b90f1a3569ea17084e3fd295500fb", size = 12519389, upload-time = "2025-07-29T22:31:54.265Z" }, + { url = "https://files.pythonhosted.org/packages/a8/c9/3e24a8472484269b6b1821794141f879c54645a111ded4b6f58f9ab0705f/ruff-0.12.7-py3-none-macosx_11_0_arm64.whl", hash = "sha256:2e1c2a3b8626339bb6369116e7030a4cf194ea48f49b64bb505732a7fce4f4e3", size = 11743384, upload-time = "2025-07-29T22:31:59.575Z" }, + { url = "https://files.pythonhosted.org/packages/26/7c/458dd25deeb3452c43eaee853c0b17a1e84169f8021a26d500ead77964fd/ruff-0.12.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32dec41817623d388e645612ec70d5757a6d9c035f3744a52c7b195a57e03860", size = 11943759, upload-time = "2025-07-29T22:32:01.95Z" }, + { url = "https://files.pythonhosted.org/packages/7f/8b/658798472ef260ca050e400ab96ef7e85c366c39cf3dfbef4d0a46a528b6/ruff-0.12.7-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:47ef751f722053a5df5fa48d412dbb54d41ab9b17875c6840a58ec63ff0c247c", size = 11654028, upload-time = "2025-07-29T22:32:04.367Z" }, + { url = "https://files.pythonhosted.org/packages/a8/86/9c2336f13b2a3326d06d39178fd3448dcc7025f82514d1b15816fe42bfe8/ruff-0.12.7-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a828a5fc25a3efd3e1ff7b241fd392686c9386f20e5ac90aa9234a5faa12c423", size = 13225209, upload-time = "2025-07-29T22:32:06.952Z" }, + { url = "https://files.pythonhosted.org/packages/76/69/df73f65f53d6c463b19b6b312fd2391dc36425d926ec237a7ed028a90fc1/ruff-0.12.7-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:5726f59b171111fa6a69d82aef48f00b56598b03a22f0f4170664ff4d8298efb", size = 14182353, upload-time = "2025-07-29T22:32:10.053Z" }, + { url = "https://files.pythonhosted.org/packages/58/1e/de6cda406d99fea84b66811c189b5ea139814b98125b052424b55d28a41c/ruff-0.12.7-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:74e6f5c04c4dd4aba223f4fe6e7104f79e0eebf7d307e4f9b18c18362124bccd", size = 13631555, upload-time = "2025-07-29T22:32:12.644Z" }, + { url = "https://files.pythonhosted.org/packages/6f/ae/625d46d5164a6cc9261945a5e89df24457dc8262539ace3ac36c40f0b51e/ruff-0.12.7-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5d0bfe4e77fba61bf2ccadf8cf005d6133e3ce08793bbe870dd1c734f2699a3e", size = 12667556, upload-time = "2025-07-29T22:32:15.312Z" }, + { url = "https://files.pythonhosted.org/packages/55/bf/9cb1ea5e3066779e42ade8d0cd3d3b0582a5720a814ae1586f85014656b6/ruff-0.12.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06bfb01e1623bf7f59ea749a841da56f8f653d641bfd046edee32ede7ff6c606", size = 12939784, upload-time = "2025-07-29T22:32:17.69Z" }, + { url = "https://files.pythonhosted.org/packages/55/7f/7ead2663be5627c04be83754c4f3096603bf5e99ed856c7cd29618c691bd/ruff-0.12.7-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:e41df94a957d50083fd09b916d6e89e497246698c3f3d5c681c8b3e7b9bb4ac8", size = 11771356, upload-time = "2025-07-29T22:32:20.134Z" }, + { url = "https://files.pythonhosted.org/packages/17/40/a95352ea16edf78cd3a938085dccc55df692a4d8ba1b3af7accbe2c806b0/ruff-0.12.7-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:4000623300563c709458d0ce170c3d0d788c23a058912f28bbadc6f905d67afa", size = 11612124, upload-time = "2025-07-29T22:32:22.645Z" }, + { url = "https://files.pythonhosted.org/packages/4d/74/633b04871c669e23b8917877e812376827c06df866e1677f15abfadc95cb/ruff-0.12.7-py3-none-musllinux_1_2_i686.whl", hash = "sha256:69ffe0e5f9b2cf2b8e289a3f8945b402a1b19eff24ec389f45f23c42a3dd6fb5", size = 12479945, upload-time = "2025-07-29T22:32:24.765Z" }, + { url = "https://files.pythonhosted.org/packages/be/34/c3ef2d7799c9778b835a76189c6f53c179d3bdebc8c65288c29032e03613/ruff-0.12.7-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:a07a5c8ffa2611a52732bdc67bf88e243abd84fe2d7f6daef3826b59abbfeda4", size = 12998677, upload-time = "2025-07-29T22:32:27.022Z" }, + { url = "https://files.pythonhosted.org/packages/77/ab/aca2e756ad7b09b3d662a41773f3edcbd262872a4fc81f920dc1ffa44541/ruff-0.12.7-py3-none-win32.whl", hash = "sha256:c928f1b2ec59fb77dfdf70e0419408898b63998789cc98197e15f560b9e77f77", size = 11756687, upload-time = "2025-07-29T22:32:29.381Z" }, + { url = "https://files.pythonhosted.org/packages/b4/71/26d45a5042bc71db22ddd8252ca9d01e9ca454f230e2996bb04f16d72799/ruff-0.12.7-py3-none-win_amd64.whl", hash = "sha256:9c18f3d707ee9edf89da76131956aba1270c6348bfee8f6c647de841eac7194f", size = 12912365, upload-time = "2025-07-29T22:32:31.517Z" }, + { url = "https://files.pythonhosted.org/packages/4c/9b/0b8aa09817b63e78d94b4977f18b1fcaead3165a5ee49251c5d5c245bb2d/ruff-0.12.7-py3-none-win_arm64.whl", hash = "sha256:dfce05101dbd11833a0776716d5d1578641b7fddb537fe7fa956ab85d1769b69", size = 11982083, upload-time = "2025-07-29T22:32:33.881Z" }, ] [[package]] diff --git a/unicorn_web/pyproject.toml b/unicorn_web/pyproject.toml index dd1d532..c1c00c5 100644 --- a/unicorn_web/pyproject.toml +++ b/unicorn_web/pyproject.toml @@ -9,22 +9,22 @@ readme = "README.md" requires-python = ">=3.12" dependencies = [ - "aws-lambda-powertools[tracer]>=3.9.0", + "aws-lambda-powertools[tracer]>=3.18.0", "aws-xray-sdk>=2.14.0", - "boto3>=1.37.23", + "boto3>=1.40.2", "requests>=2.32.3", "crhelper>=2.0.11", ] [project.optional-dependencies] dev = [ - "aws-lambda-powertools[all]>=3.9.0", - "moto[dynamodb,events,sqs]>=5.0.14", + "aws-lambda-powertools[all]>=3.18.0", + "moto[dynamodb,events,sqs]>=5.1.9", "importlib-metadata>=8.4.0", "pyyaml>=6.0.2", "arnparse>=0.0.2", - "pytest>=8.3.4", - "ruff>=0.9.7", + "pytest>=8.4.1", + "ruff>=0.12.7", ] [tool.setuptools] diff --git a/unicorn_web/uv.lock b/unicorn_web/uv.lock index a1e76c8..25aa393 100644 --- a/unicorn_web/uv.lock +++ b/unicorn_web/uv.lock @@ -46,15 +46,15 @@ wheels = [ [[package]] name = "aws-lambda-powertools" -version = "3.13.0" +version = "3.18.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jmespath" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fd/2b/068efd467c0866e2272c5de7525ddb02ff4e694f71245c8d2a83d4948f23/aws_lambda_powertools-3.13.0.tar.gz", hash = "sha256:99dc11ac6eb81564f599fdd85ba79069f7740ae3481c99bca2cee8abb7c95543", size = 672664, upload-time = "2025-05-20T07:35:30.254Z" } +sdist = { url = "https://files.pythonhosted.org/packages/0b/d9/5ba420bbe1aef011559e035a1d1ef82a6d30500610116e7feb2f2b5dcda7/aws_lambda_powertools-3.18.0.tar.gz", hash = "sha256:74f484b03dfb733769828bf8e9f33ac427cd57c477a9ceae2dc19f643051e3c3", size = 686276, upload-time = "2025-07-29T08:22:50.901Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/98/cd/2241ff877528c66ee11ea636684c4242ceeadb6459a33b08507a40151414/aws_lambda_powertools-3.13.0-py3-none-any.whl", hash = "sha256:9df045f4c3ff944176655813dbff8c1160e056babf5e6d71d4e18c0003818f2e", size = 802546, upload-time = "2025-05-20T07:35:27.767Z" }, + { url = "https://files.pythonhosted.org/packages/42/b1/ca638f5ce0f4d1c4c75412342c08d124142facf89104f9d3659e9c395c63/aws_lambda_powertools-3.18.0-py3-none-any.whl", hash = "sha256:5afb230abf4e64bce00d35e858a4e83ae99c667f648c1f4d246e4bb022715df8", size = 828005, upload-time = "2025-07-29T08:22:48.807Z" }, ] [package.optional-dependencies] @@ -85,30 +85,30 @@ wheels = [ [[package]] name = "boto3" -version = "1.38.25" +version = "1.40.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "botocore" }, { name = "jmespath" }, { name = "s3transfer" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/0d/af/404827da46c67359e6d2a63b0f4fadd5b6150551d25c405b3bd480c19319/boto3-1.38.25.tar.gz", hash = "sha256:85c1556a110896f68de8573a9b4757c81071448dbf6ffc1074941bfc8a43195e", size = 111819, upload-time = "2025-05-28T19:26:49.018Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d1/c0/9ceff05d2243f169765ae9db08fa6f085d026af71a778cd083dc972f0f2b/boto3-1.40.2.tar.gz", hash = "sha256:2dfbc214fdbf94abfd61eec687ea39089d05af43bb00be792c76f3a6c1393f7b", size = 111826, upload-time = "2025-08-04T19:31:51.959Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5b/27/b2ea9d2494b1d35c3de23485bf6b0a7b8539dea965349c8829a1fd84d08e/boto3-1.38.25-py3-none-any.whl", hash = "sha256:2f2cd517dd31d33ace0eefe567dc903fdf74221513e32f1e9445bdfac7554db7", size = 139938, upload-time = "2025-05-28T19:26:44.902Z" }, + { url = "https://files.pythonhosted.org/packages/f7/66/01bccaaebcd1365ce1334be042765e49ccf23787887afb8e43c6d4bc2f6e/boto3-1.40.2-py3-none-any.whl", hash = "sha256:3d99325ee874190e8f3bfd38823987327c826cdfbab943420851bdb7684d727c", size = 139882, upload-time = "2025-08-04T19:31:50.493Z" }, ] [[package]] name = "botocore" -version = "1.38.25" +version = "1.40.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jmespath" }, { name = "python-dateutil" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/6b/00/bed5bf325d1fdb98d6212d106bd44cd0bbe65563e3a2c3f87b64cc4d75c2/botocore-1.38.25.tar.gz", hash = "sha256:8c73e97d9662a6c92be33dab66cd1e2b59797154c7ec379ce3bb5d6779d9d78c", size = 13914295, upload-time = "2025-05-28T19:26:35.457Z" } +sdist = { url = "https://files.pythonhosted.org/packages/20/e5/e7d68381042a6d50510c8d4629f39922ce27ff32f45baf852ba6534342c5/botocore-1.40.2.tar.gz", hash = "sha256:77c4710bf37b28e897833b5b1f47d6a83e45a29985cd01a560dfdb8b6ad524e5", size = 14284599, upload-time = "2025-08-04T19:31:42.064Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2f/ae/3b52634df58cbd506ad804315a1c979ea06942cf88b591dcd671f45adf63/botocore-1.38.25-py3-none-any.whl", hash = "sha256:5a960bd990a11cdb78865e908a58ed712d87d9b419f55ad21c99d7d21f0d6726", size = 13574906, upload-time = "2025-05-28T19:26:31.029Z" }, + { url = "https://files.pythonhosted.org/packages/16/56/dd25fb9e47060e8f7e353208678fefb65d1b06704ea30983cad8bdd81370/botocore-1.40.2-py3-none-any.whl", hash = "sha256:a31e6269af05498f8dc1c7f2b3f34448a0f16c79a8601c0389ecddab51b2c2ab", size = 13944886, upload-time = "2025-08-04T19:31:37.027Z" }, ] [[package]] @@ -367,7 +367,7 @@ wheels = [ [[package]] name = "moto" -version = "5.1.5" +version = "5.1.9" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "boto3" }, @@ -380,9 +380,9 @@ dependencies = [ { name = "werkzeug" }, { name = "xmltodict" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/24/9f/5cacf53cbd26b4a77c817fd4fbec2ed38139ba2cfcd842c279aa19ee161f/moto-5.1.5.tar.gz", hash = "sha256:42b362ea9a16181e8e7b615ac212c294b882f020e9ae02f01230f167926df84e", size = 6893155, upload-time = "2025-05-24T12:19:55.398Z" } +sdist = { url = "https://files.pythonhosted.org/packages/33/62/767e0f65066489b50580a25182025fec19825cbed499ae2044da1e779ed6/moto-5.1.9.tar.gz", hash = "sha256:0c4f0387b06b5d24c0ce90f8f89f31a565cc05789189c5d59b5df02594f2e371", size = 7041662, upload-time = "2025-07-28T19:24:48.773Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/84/0f/72a420e972a9e782d08843ced85d29f04c8470c66fc84ecb1c8a7e7abcf8/moto-5.1.5-py3-none-any.whl", hash = "sha256:866ae85eb5efe11a78f991127531878fd7f49177eb4a6680f47060430eb8932d", size = 4992353, upload-time = "2025-05-24T12:19:53.435Z" }, + { url = "https://files.pythonhosted.org/packages/4e/0b/fd37926e3fd597df879d7c360f1641850023d30b1d67ba6686f4e33ab1fb/moto-5.1.9-py3-none-any.whl", hash = "sha256:e9ba7e4764a6088ccc34e3cc846ae719861ca202409fa865573de40a3e805b9b", size = 5216109, upload-time = "2025-07-28T19:24:45.997Z" }, ] [package.optional-dependencies] @@ -510,19 +510,29 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b6/5f/d6d641b490fd3ec2c4c13b4244d68deea3a1b970a97be64f34fb5504ff72/pydantic_settings-2.9.1-py3-none-any.whl", hash = "sha256:59b4f431b1defb26fe620c71a7d3968a710d719f5f4cdbbdb7926edeb770f6ef", size = 44356, upload-time = "2025-04-18T16:44:46.617Z" }, ] +[[package]] +name = "pygments" +version = "2.19.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631, upload-time = "2025-06-21T13:39:12.283Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload-time = "2025-06-21T13:39:07.939Z" }, +] + [[package]] name = "pytest" -version = "8.3.5" +version = "8.4.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, { name = "iniconfig" }, { name = "packaging" }, { name = "pluggy" }, + { name = "pygments" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ae/3c/c9d525a414d506893f0cd8a8d0de7706446213181570cdbd766691164e40/pytest-8.3.5.tar.gz", hash = "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845", size = 1450891, upload-time = "2025-03-02T12:54:54.503Z" } +sdist = { url = "https://files.pythonhosted.org/packages/08/ba/45911d754e8eba3d5a841a5ce61a65a685ff1798421ac054f85aa8747dfb/pytest-8.4.1.tar.gz", hash = "sha256:7c67fd69174877359ed9371ec3af8a3d2b04741818c51e5e99cc1742251fa93c", size = 1517714, upload-time = "2025-06-18T05:48:06.109Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/30/3d/64ad57c803f1fa1e963a7946b6e0fea4a70df53c1a7fed304586539c2bac/pytest-8.3.5-py3-none-any.whl", hash = "sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820", size = 343634, upload-time = "2025-03-02T12:54:52.069Z" }, + { url = "https://files.pythonhosted.org/packages/29/16/c8a903f4c4dffe7a12843191437d7cd8e32751d5de349d45d3fe69544e87/pytest-8.4.1-py3-none-any.whl", hash = "sha256:539c70ba6fcead8e78eebbf1115e8b589e7565830d7d006a8723f19ac8a0afb7", size = 365474, upload-time = "2025-06-18T05:48:03.955Z" }, ] [[package]] @@ -616,27 +626,27 @@ wheels = [ [[package]] name = "ruff" -version = "0.11.11" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b2/53/ae4857030d59286924a8bdb30d213d6ff22d8f0957e738d0289990091dd8/ruff-0.11.11.tar.gz", hash = "sha256:7774173cc7c1980e6bf67569ebb7085989a78a103922fb83ef3dfe230cd0687d", size = 4186707, upload-time = "2025-05-22T19:19:34.363Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b1/14/f2326676197bab099e2a24473158c21656fbf6a207c65f596ae15acb32b9/ruff-0.11.11-py3-none-linux_armv6l.whl", hash = "sha256:9924e5ae54125ed8958a4f7de320dab7380f6e9fa3195e3dc3b137c6842a0092", size = 10229049, upload-time = "2025-05-22T19:18:45.516Z" }, - { url = "https://files.pythonhosted.org/packages/9a/f3/bff7c92dd66c959e711688b2e0768e486bbca46b2f35ac319bb6cce04447/ruff-0.11.11-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:c8a93276393d91e952f790148eb226658dd275cddfde96c6ca304873f11d2ae4", size = 11053601, upload-time = "2025-05-22T19:18:49.269Z" }, - { url = "https://files.pythonhosted.org/packages/e2/38/8e1a3efd0ef9d8259346f986b77de0f62c7a5ff4a76563b6b39b68f793b9/ruff-0.11.11-py3-none-macosx_11_0_arm64.whl", hash = "sha256:d6e333dbe2e6ae84cdedefa943dfd6434753ad321764fd937eef9d6b62022bcd", size = 10367421, upload-time = "2025-05-22T19:18:51.754Z" }, - { url = "https://files.pythonhosted.org/packages/b4/50/557ad9dd4fb9d0bf524ec83a090a3932d284d1a8b48b5906b13b72800e5f/ruff-0.11.11-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7885d9a5e4c77b24e8c88aba8c80be9255fa22ab326019dac2356cff42089fc6", size = 10581980, upload-time = "2025-05-22T19:18:54.011Z" }, - { url = "https://files.pythonhosted.org/packages/c4/b2/e2ed82d6e2739ece94f1bdbbd1d81b712d3cdaf69f0a1d1f1a116b33f9ad/ruff-0.11.11-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1b5ab797fcc09121ed82e9b12b6f27e34859e4227080a42d090881be888755d4", size = 10089241, upload-time = "2025-05-22T19:18:56.041Z" }, - { url = "https://files.pythonhosted.org/packages/3d/9f/b4539f037a5302c450d7c695c82f80e98e48d0d667ecc250e6bdeb49b5c3/ruff-0.11.11-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e231ff3132c1119ece836487a02785f099a43992b95c2f62847d29bace3c75ac", size = 11699398, upload-time = "2025-05-22T19:18:58.248Z" }, - { url = "https://files.pythonhosted.org/packages/61/fb/32e029d2c0b17df65e6eaa5ce7aea5fbeaed22dddd9fcfbbf5fe37c6e44e/ruff-0.11.11-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:a97c9babe1d4081037a90289986925726b802d180cca784ac8da2bbbc335f709", size = 12427955, upload-time = "2025-05-22T19:19:00.981Z" }, - { url = "https://files.pythonhosted.org/packages/6e/e3/160488dbb11f18c8121cfd588e38095ba779ae208292765972f7732bfd95/ruff-0.11.11-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d8c4ddcbe8a19f59f57fd814b8b117d4fcea9bee7c0492e6cf5fdc22cfa563c8", size = 12069803, upload-time = "2025-05-22T19:19:03.258Z" }, - { url = "https://files.pythonhosted.org/packages/ff/16/3b006a875f84b3d0bff24bef26b8b3591454903f6f754b3f0a318589dcc3/ruff-0.11.11-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6224076c344a7694c6fbbb70d4f2a7b730f6d47d2a9dc1e7f9d9bb583faf390b", size = 11242630, upload-time = "2025-05-22T19:19:05.871Z" }, - { url = "https://files.pythonhosted.org/packages/65/0d/0338bb8ac0b97175c2d533e9c8cdc127166de7eb16d028a43c5ab9e75abd/ruff-0.11.11-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:882821fcdf7ae8db7a951df1903d9cb032bbe838852e5fc3c2b6c3ab54e39875", size = 11507310, upload-time = "2025-05-22T19:19:08.584Z" }, - { url = "https://files.pythonhosted.org/packages/6f/bf/d7130eb26174ce9b02348b9f86d5874eafbf9f68e5152e15e8e0a392e4a3/ruff-0.11.11-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:dcec2d50756463d9df075a26a85a6affbc1b0148873da3997286caf1ce03cae1", size = 10441144, upload-time = "2025-05-22T19:19:13.621Z" }, - { url = "https://files.pythonhosted.org/packages/b3/f3/4be2453b258c092ff7b1761987cf0749e70ca1340cd1bfb4def08a70e8d8/ruff-0.11.11-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:99c28505ecbaeb6594701a74e395b187ee083ee26478c1a795d35084d53ebd81", size = 10081987, upload-time = "2025-05-22T19:19:15.821Z" }, - { url = "https://files.pythonhosted.org/packages/6c/6e/dfa4d2030c5b5c13db158219f2ec67bf333e8a7748dccf34cfa2a6ab9ebc/ruff-0.11.11-py3-none-musllinux_1_2_i686.whl", hash = "sha256:9263f9e5aa4ff1dec765e99810f1cc53f0c868c5329b69f13845f699fe74f639", size = 11073922, upload-time = "2025-05-22T19:19:18.104Z" }, - { url = "https://files.pythonhosted.org/packages/ff/f4/f7b0b0c3d32b593a20ed8010fa2c1a01f2ce91e79dda6119fcc51d26c67b/ruff-0.11.11-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:64ac6f885e3ecb2fdbb71de2701d4e34526651f1e8503af8fb30d4915a3fe345", size = 11568537, upload-time = "2025-05-22T19:19:20.889Z" }, - { url = "https://files.pythonhosted.org/packages/d2/46/0e892064d0adc18bcc81deed9aaa9942a27fd2cd9b1b7791111ce468c25f/ruff-0.11.11-py3-none-win32.whl", hash = "sha256:1adcb9a18802268aaa891ffb67b1c94cd70578f126637118e8099b8e4adcf112", size = 10536492, upload-time = "2025-05-22T19:19:23.642Z" }, - { url = "https://files.pythonhosted.org/packages/1b/d9/232e79459850b9f327e9f1dc9c047a2a38a6f9689e1ec30024841fc4416c/ruff-0.11.11-py3-none-win_amd64.whl", hash = "sha256:748b4bb245f11e91a04a4ff0f96e386711df0a30412b9fe0c74d5bdc0e4a531f", size = 11612562, upload-time = "2025-05-22T19:19:27.013Z" }, - { url = "https://files.pythonhosted.org/packages/ce/eb/09c132cff3cc30b2e7244191dcce69437352d6d6709c0adf374f3e6f476e/ruff-0.11.11-py3-none-win_arm64.whl", hash = "sha256:6c51f136c0364ab1b774767aa8b86331bd8e9d414e2d107db7a2189f35ea1f7b", size = 10735951, upload-time = "2025-05-22T19:19:30.043Z" }, +version = "0.12.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a1/81/0bd3594fa0f690466e41bd033bdcdf86cba8288345ac77ad4afbe5ec743a/ruff-0.12.7.tar.gz", hash = "sha256:1fc3193f238bc2d7968772c82831a4ff69252f673be371fb49663f0068b7ec71", size = 5197814, upload-time = "2025-07-29T22:32:35.877Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e1/d2/6cb35e9c85e7a91e8d22ab32ae07ac39cc34a71f1009a6f9e4a2a019e602/ruff-0.12.7-py3-none-linux_armv6l.whl", hash = "sha256:76e4f31529899b8c434c3c1dede98c4483b89590e15fb49f2d46183801565303", size = 11852189, upload-time = "2025-07-29T22:31:41.281Z" }, + { url = "https://files.pythonhosted.org/packages/63/5b/a4136b9921aa84638f1a6be7fb086f8cad0fde538ba76bda3682f2599a2f/ruff-0.12.7-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:789b7a03e72507c54fb3ba6209e4bb36517b90f1a3569ea17084e3fd295500fb", size = 12519389, upload-time = "2025-07-29T22:31:54.265Z" }, + { url = "https://files.pythonhosted.org/packages/a8/c9/3e24a8472484269b6b1821794141f879c54645a111ded4b6f58f9ab0705f/ruff-0.12.7-py3-none-macosx_11_0_arm64.whl", hash = "sha256:2e1c2a3b8626339bb6369116e7030a4cf194ea48f49b64bb505732a7fce4f4e3", size = 11743384, upload-time = "2025-07-29T22:31:59.575Z" }, + { url = "https://files.pythonhosted.org/packages/26/7c/458dd25deeb3452c43eaee853c0b17a1e84169f8021a26d500ead77964fd/ruff-0.12.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32dec41817623d388e645612ec70d5757a6d9c035f3744a52c7b195a57e03860", size = 11943759, upload-time = "2025-07-29T22:32:01.95Z" }, + { url = "https://files.pythonhosted.org/packages/7f/8b/658798472ef260ca050e400ab96ef7e85c366c39cf3dfbef4d0a46a528b6/ruff-0.12.7-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:47ef751f722053a5df5fa48d412dbb54d41ab9b17875c6840a58ec63ff0c247c", size = 11654028, upload-time = "2025-07-29T22:32:04.367Z" }, + { url = "https://files.pythonhosted.org/packages/a8/86/9c2336f13b2a3326d06d39178fd3448dcc7025f82514d1b15816fe42bfe8/ruff-0.12.7-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a828a5fc25a3efd3e1ff7b241fd392686c9386f20e5ac90aa9234a5faa12c423", size = 13225209, upload-time = "2025-07-29T22:32:06.952Z" }, + { url = "https://files.pythonhosted.org/packages/76/69/df73f65f53d6c463b19b6b312fd2391dc36425d926ec237a7ed028a90fc1/ruff-0.12.7-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:5726f59b171111fa6a69d82aef48f00b56598b03a22f0f4170664ff4d8298efb", size = 14182353, upload-time = "2025-07-29T22:32:10.053Z" }, + { url = "https://files.pythonhosted.org/packages/58/1e/de6cda406d99fea84b66811c189b5ea139814b98125b052424b55d28a41c/ruff-0.12.7-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:74e6f5c04c4dd4aba223f4fe6e7104f79e0eebf7d307e4f9b18c18362124bccd", size = 13631555, upload-time = "2025-07-29T22:32:12.644Z" }, + { url = "https://files.pythonhosted.org/packages/6f/ae/625d46d5164a6cc9261945a5e89df24457dc8262539ace3ac36c40f0b51e/ruff-0.12.7-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5d0bfe4e77fba61bf2ccadf8cf005d6133e3ce08793bbe870dd1c734f2699a3e", size = 12667556, upload-time = "2025-07-29T22:32:15.312Z" }, + { url = "https://files.pythonhosted.org/packages/55/bf/9cb1ea5e3066779e42ade8d0cd3d3b0582a5720a814ae1586f85014656b6/ruff-0.12.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06bfb01e1623bf7f59ea749a841da56f8f653d641bfd046edee32ede7ff6c606", size = 12939784, upload-time = "2025-07-29T22:32:17.69Z" }, + { url = "https://files.pythonhosted.org/packages/55/7f/7ead2663be5627c04be83754c4f3096603bf5e99ed856c7cd29618c691bd/ruff-0.12.7-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:e41df94a957d50083fd09b916d6e89e497246698c3f3d5c681c8b3e7b9bb4ac8", size = 11771356, upload-time = "2025-07-29T22:32:20.134Z" }, + { url = "https://files.pythonhosted.org/packages/17/40/a95352ea16edf78cd3a938085dccc55df692a4d8ba1b3af7accbe2c806b0/ruff-0.12.7-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:4000623300563c709458d0ce170c3d0d788c23a058912f28bbadc6f905d67afa", size = 11612124, upload-time = "2025-07-29T22:32:22.645Z" }, + { url = "https://files.pythonhosted.org/packages/4d/74/633b04871c669e23b8917877e812376827c06df866e1677f15abfadc95cb/ruff-0.12.7-py3-none-musllinux_1_2_i686.whl", hash = "sha256:69ffe0e5f9b2cf2b8e289a3f8945b402a1b19eff24ec389f45f23c42a3dd6fb5", size = 12479945, upload-time = "2025-07-29T22:32:24.765Z" }, + { url = "https://files.pythonhosted.org/packages/be/34/c3ef2d7799c9778b835a76189c6f53c179d3bdebc8c65288c29032e03613/ruff-0.12.7-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:a07a5c8ffa2611a52732bdc67bf88e243abd84fe2d7f6daef3826b59abbfeda4", size = 12998677, upload-time = "2025-07-29T22:32:27.022Z" }, + { url = "https://files.pythonhosted.org/packages/77/ab/aca2e756ad7b09b3d662a41773f3edcbd262872a4fc81f920dc1ffa44541/ruff-0.12.7-py3-none-win32.whl", hash = "sha256:c928f1b2ec59fb77dfdf70e0419408898b63998789cc98197e15f560b9e77f77", size = 11756687, upload-time = "2025-07-29T22:32:29.381Z" }, + { url = "https://files.pythonhosted.org/packages/b4/71/26d45a5042bc71db22ddd8252ca9d01e9ca454f230e2996bb04f16d72799/ruff-0.12.7-py3-none-win_amd64.whl", hash = "sha256:9c18f3d707ee9edf89da76131956aba1270c6348bfee8f6c647de841eac7194f", size = 12912365, upload-time = "2025-07-29T22:32:31.517Z" }, + { url = "https://files.pythonhosted.org/packages/4c/9b/0b8aa09817b63e78d94b4977f18b1fcaead3165a5ee49251c5d5c245bb2d/ruff-0.12.7-py3-none-win_arm64.whl", hash = "sha256:dfce05101dbd11833a0776716d5d1578641b7fddb537fe7fa956ab85d1769b69", size = 11982083, upload-time = "2025-07-29T22:32:33.881Z" }, ] [[package]] @@ -716,17 +726,17 @@ dev = [ [package.metadata] requires-dist = [ { name = "arnparse", marker = "extra == 'dev'", specifier = ">=0.0.2" }, - { name = "aws-lambda-powertools", extras = ["all"], marker = "extra == 'dev'", specifier = ">=3.9.0" }, - { name = "aws-lambda-powertools", extras = ["tracer"], specifier = ">=3.9.0" }, + { name = "aws-lambda-powertools", extras = ["all"], marker = "extra == 'dev'", specifier = ">=3.18.0" }, + { name = "aws-lambda-powertools", extras = ["tracer"], specifier = ">=3.18.0" }, { name = "aws-xray-sdk", specifier = ">=2.14.0" }, - { name = "boto3", specifier = ">=1.37.23" }, + { name = "boto3", specifier = ">=1.40.2" }, { name = "crhelper", specifier = ">=2.0.11" }, { name = "importlib-metadata", marker = "extra == 'dev'", specifier = ">=8.4.0" }, - { name = "moto", extras = ["dynamodb", "events", "sqs"], marker = "extra == 'dev'", specifier = ">=5.0.14" }, - { name = "pytest", marker = "extra == 'dev'", specifier = ">=8.3.4" }, + { name = "moto", extras = ["dynamodb", "events", "sqs"], marker = "extra == 'dev'", specifier = ">=5.1.9" }, + { name = "pytest", marker = "extra == 'dev'", specifier = ">=8.4.1" }, { name = "pyyaml", marker = "extra == 'dev'", specifier = ">=6.0.2" }, { name = "requests", specifier = ">=2.32.3" }, - { name = "ruff", marker = "extra == 'dev'", specifier = ">=0.9.7" }, + { name = "ruff", marker = "extra == 'dev'", specifier = ">=0.12.7" }, ] provides-extras = ["dev"] From 23e4cc35a5272080e8a359b0c095e64b09dc0cdc Mon Sep 17 00:00:00 2001 From: Stephen Liedig Date: Thu, 7 Aug 2025 15:47:51 +0800 Subject: [PATCH 36/36] fix: syncing templates --- unicorn_approvals/template.yaml | 16 ++++++++-------- unicorn_contracts/template.yaml | 6 ++---- unicorn_web/template.yaml | 3 +-- 3 files changed, 11 insertions(+), 14 deletions(-) diff --git a/unicorn_approvals/template.yaml b/unicorn_approvals/template.yaml index 168e8f9..da29cb0 100644 --- a/unicorn_approvals/template.yaml +++ b/unicorn_approvals/template.yaml @@ -4,7 +4,7 @@ AWSTemplateFormatVersion: "2010-09-09" Transform: - AWS::Serverless-2016-10-31 Description: > - Unicorn Properties Service. Validate the content, images and contract of property listings. + Unicorn Approvals Service. Validate the content, images and contract of property listings. Metadata: cfn-lint: @@ -288,7 +288,7 @@ Resources: - Key: stage Value: !Ref Stage - # Store failed INVOCATIONS to each Lambda function in Unicorn Properties Service + # Store failed INVOCATIONS to each Lambda function in Unicorn Approvals Service ApprovalsServiceDLQ: Type: AWS::SQS::Queue UpdateReplacePolicy: Delete @@ -328,13 +328,13 @@ Resources: Value: !Ref Stage #### EVENT BUS - # Event bus for Unicorn Properties Service, used to publish and consume events + # Event bus for Unicorn Approvals Service, used to publish and consume events UnicornApprovalsEventBus: Type: AWS::Events::EventBus DeletionPolicy: Delete UpdateReplacePolicy: Delete Properties: - Name: !Sub UnicornPropertiesBus-${Stage} + Name: !Sub UnicornApprovalsBus-${Stage} # Event bus policy to restrict who can publish events (should only be services from UnicornApprovalsNamespace) UnicornApprovalsEventsBusPublishPolicy: @@ -419,7 +419,7 @@ Resources: } #### CLOUDFORMATION NESTED STACKS - # CloudFormation Stack with the Properties Service Event Registry and Schemas + # CloudFormation Stack with the Approvals Service Event Registry and Schemas EventSchemasStack: Type: AWS::Serverless::Application UpdateReplacePolicy: Delete @@ -429,7 +429,7 @@ Resources: Parameters: Stage: !Ref Stage - # CloudFormation Stack with the Cross-service EventBus policy for Properties Service + # CloudFormation Stack with the Cross-service EventBus policy for Approvals Service SubscriberPoliciesStack: Type: AWS::Serverless::Application UpdateReplacePolicy: Delete @@ -441,7 +441,7 @@ Resources: Parameters: Stage: !Ref Stage - # CloudFormation Stack with the Cross-service EventBus Rules for Properties Service + # CloudFormation Stack with the Cross-service EventBus Rules for Approvals Service SubscriptionsStack: Type: AWS::Serverless::Application UpdateReplacePolicy: Delete @@ -482,7 +482,7 @@ Outputs: Value: !Ref ApprovalStateMachine #### EVENT BRIDGE OUTPUTS - UnicornPropertiesEventBusName: + UnicornApprovalsEventBusName: Value: !GetAtt UnicornApprovalsEventBus.Name #### CLOUDWATCH LOGS OUTPUTS diff --git a/unicorn_contracts/template.yaml b/unicorn_contracts/template.yaml index e6262d1..c5732ed 100644 --- a/unicorn_contracts/template.yaml +++ b/unicorn_contracts/template.yaml @@ -1,6 +1,6 @@ # Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. # SPDX-License-Identifier: MIT-0 -AWSTemplateFormatVersion: 2010-09-09 +AWSTemplateFormatVersion: "2010-09-09" Transform: - AWS::Serverless-2016-10-31 Description: > @@ -15,9 +15,7 @@ Metadata: - WS2001 # Rule disabled because check does not support !ToJsonString transform - ES1001 # Rule disabled because our Lambda functions don't need DestinationConfig.OnFailure - W3002 # Rule disabled as nested templates are being packaged - - E3030 # Rule disabled due to using cfn-lint-serverless rules v0.3 - - E3002 # Rule disabled due to using cfn-lint-serverless rules v0.3 - + Parameters: Stage: Type: String diff --git a/unicorn_web/template.yaml b/unicorn_web/template.yaml index b2c54de..8e713e6 100644 --- a/unicorn_web/template.yaml +++ b/unicorn_web/template.yaml @@ -15,7 +15,6 @@ Metadata: - WS2001 # Rule disabled because check does not support !ToJsonString transform - ES1001 # Rule disabled because our Lambda functions don't need DestinationConfig.OnFailure - W3002 # Rule disabled as nested templates are being packaged - - E3030 # Rule disabled due to using cfn-lint-serverless rules v0.3 Parameters: Stage: @@ -462,7 +461,7 @@ Outputs: Description: "GET request to list all properties in a given street" Value: !Sub "https://${UnicornWebApi}.execute-api.${AWS::Region}.${AWS::URLSuffix}/${Stage}/search/{country}/{city}/{street}" ApiPropertyApproval: - Description: "POST request to add a property to the database" + Description: "POST request approval to allow property to be searchable" Value: !Sub "https://${UnicornWebApi}.execute-api.${AWS::Region}.${AWS::URLSuffix}/${Stage}/request_approval" ApiPropertyDetails: Description: "GET request to get the full details of a single property"