diff --git a/poetry.lock b/poetry.lock index 5ab01b22..e3c66f9c 100644 --- a/poetry.lock +++ b/poetry.lock @@ -736,6 +736,24 @@ urllib3 = {version = ">=1.25.4,<2.2.0 || >2.2.0,<3", markers = "python_version > [package.extras] crt = ["awscrt (==0.19.19)"] +[[package]] +name = "botocore-stubs" +version = "1.38.30" +description = "Type annotations and code completion for botocore" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "botocore_stubs-1.38.30-py3-none-any.whl", hash = "sha256:2efb8bdf36504aff596c670d875d8f7dd15205277c15c4cea54afdba8200c266"}, + {file = "botocore_stubs-1.38.30.tar.gz", hash = "sha256:291d7bf39a316c00a8a55b7255489b02c0cea1a343482e7784e8d1e235bae995"}, +] + +[package.dependencies] +types-awscrt = "*" + +[package.extras] +botocore = ["botocore"] + [[package]] name = "build" version = "1.2.2.post1" @@ -7019,6 +7037,461 @@ dev = ["autoflake (>=1.3.1,<2.0.0)", "flake8 (>=3.8.3,<4.0.0)", "pre-commit (>=2 doc = ["cairosvg (>=2.5.2,<3.0.0)", "mdx-include (>=1.4.1,<2.0.0)", "mkdocs (>=1.1.2,<2.0.0)", "mkdocs-material (>=8.1.4,<9.0.0)", "pillow (>=9.3.0,<10.0.0)"] test = ["black (>=22.3.0,<23.0.0)", "coverage (>=6.2,<7.0)", "isort (>=5.0.6,<6.0.0)", "mypy (==0.971)", "pytest (>=4.4.0,<8.0.0)", "pytest-cov (>=2.10.0,<5.0.0)", "pytest-sugar (>=0.9.4,<0.10.0)", "pytest-xdist (>=1.32.0,<4.0.0)", "rich (>=10.11.0,<14.0.0)", "shellingham (>=1.3.0,<2.0.0)"] +[[package]] +name = "types-awscrt" +version = "0.27.2" +description = "Type annotations and code completion for awscrt" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "types_awscrt-0.27.2-py3-none-any.whl", hash = "sha256:49a045f25bbd5ad2865f314512afced933aed35ddbafc252e2268efa8a787e4e"}, + {file = "types_awscrt-0.27.2.tar.gz", hash = "sha256:acd04f57119eb15626ab0ba9157fc24672421de56e7bd7b9f61681fedee44e91"}, +] + +[[package]] +name = "types-boto3" +version = "1.38.31" +description = "Type annotations for boto3 1.38.31 generated with mypy-boto3-builder 8.11.0" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "types_boto3-1.38.31-py3-none-any.whl", hash = "sha256:f4a4ee4cf4bbad967b2c538f33197907e34dff2da6cc1df398203d73d7d734b3"}, + {file = "types_boto3-1.38.31.tar.gz", hash = "sha256:dca7942fc84af05d3ebcc69122a519939b993d724d750d4a090b6e20cb8aabe6"}, +] + +[package.dependencies] +botocore-stubs = "*" +types-boto3-full = {version = ">=1.38.0,<1.39.0", optional = true, markers = "extra == \"full\""} +types-s3transfer = "*" +typing-extensions = {version = ">=4.1.0", markers = "python_version < \"3.12\""} + +[package.extras] +accessanalyzer = ["types-boto3-accessanalyzer (>=1.38.0,<1.39.0)"] +account = ["types-boto3-account (>=1.38.0,<1.39.0)"] +acm = ["types-boto3-acm (>=1.38.0,<1.39.0)"] +acm-pca = ["types-boto3-acm-pca (>=1.38.0,<1.39.0)"] +all = ["types-boto3-accessanalyzer (>=1.38.0,<1.39.0)", "types-boto3-account (>=1.38.0,<1.39.0)", "types-boto3-acm (>=1.38.0,<1.39.0)", "types-boto3-acm-pca (>=1.38.0,<1.39.0)", "types-boto3-amp (>=1.38.0,<1.39.0)", "types-boto3-amplify (>=1.38.0,<1.39.0)", "types-boto3-amplifybackend (>=1.38.0,<1.39.0)", "types-boto3-amplifyuibuilder (>=1.38.0,<1.39.0)", "types-boto3-apigateway (>=1.38.0,<1.39.0)", "types-boto3-apigatewaymanagementapi (>=1.38.0,<1.39.0)", "types-boto3-apigatewayv2 (>=1.38.0,<1.39.0)", "types-boto3-appconfig (>=1.38.0,<1.39.0)", "types-boto3-appconfigdata (>=1.38.0,<1.39.0)", "types-boto3-appfabric (>=1.38.0,<1.39.0)", "types-boto3-appflow (>=1.38.0,<1.39.0)", "types-boto3-appintegrations (>=1.38.0,<1.39.0)", "types-boto3-application-autoscaling (>=1.38.0,<1.39.0)", "types-boto3-application-insights (>=1.38.0,<1.39.0)", "types-boto3-application-signals (>=1.38.0,<1.39.0)", "types-boto3-applicationcostprofiler (>=1.38.0,<1.39.0)", "types-boto3-appmesh (>=1.38.0,<1.39.0)", "types-boto3-apprunner (>=1.38.0,<1.39.0)", "types-boto3-appstream (>=1.38.0,<1.39.0)", "types-boto3-appsync (>=1.38.0,<1.39.0)", "types-boto3-apptest (>=1.38.0,<1.39.0)", "types-boto3-arc-zonal-shift (>=1.38.0,<1.39.0)", "types-boto3-artifact (>=1.38.0,<1.39.0)", "types-boto3-athena (>=1.38.0,<1.39.0)", "types-boto3-auditmanager (>=1.38.0,<1.39.0)", "types-boto3-autoscaling (>=1.38.0,<1.39.0)", "types-boto3-autoscaling-plans (>=1.38.0,<1.39.0)", "types-boto3-b2bi (>=1.38.0,<1.39.0)", "types-boto3-backup (>=1.38.0,<1.39.0)", "types-boto3-backup-gateway (>=1.38.0,<1.39.0)", "types-boto3-backupsearch (>=1.38.0,<1.39.0)", "types-boto3-batch (>=1.38.0,<1.39.0)", "types-boto3-bcm-data-exports (>=1.38.0,<1.39.0)", "types-boto3-bcm-pricing-calculator (>=1.38.0,<1.39.0)", "types-boto3-bedrock (>=1.38.0,<1.39.0)", "types-boto3-bedrock-agent (>=1.38.0,<1.39.0)", "types-boto3-bedrock-agent-runtime (>=1.38.0,<1.39.0)", "types-boto3-bedrock-data-automation (>=1.38.0,<1.39.0)", "types-boto3-bedrock-data-automation-runtime (>=1.38.0,<1.39.0)", "types-boto3-bedrock-runtime (>=1.38.0,<1.39.0)", "types-boto3-billing (>=1.38.0,<1.39.0)", "types-boto3-billingconductor (>=1.38.0,<1.39.0)", "types-boto3-braket (>=1.38.0,<1.39.0)", "types-boto3-budgets (>=1.38.0,<1.39.0)", "types-boto3-ce (>=1.38.0,<1.39.0)", "types-boto3-chatbot (>=1.38.0,<1.39.0)", "types-boto3-chime (>=1.38.0,<1.39.0)", "types-boto3-chime-sdk-identity (>=1.38.0,<1.39.0)", "types-boto3-chime-sdk-media-pipelines (>=1.38.0,<1.39.0)", "types-boto3-chime-sdk-meetings (>=1.38.0,<1.39.0)", "types-boto3-chime-sdk-messaging (>=1.38.0,<1.39.0)", "types-boto3-chime-sdk-voice (>=1.38.0,<1.39.0)", "types-boto3-cleanrooms (>=1.38.0,<1.39.0)", "types-boto3-cleanroomsml (>=1.38.0,<1.39.0)", "types-boto3-cloud9 (>=1.38.0,<1.39.0)", "types-boto3-cloudcontrol (>=1.38.0,<1.39.0)", "types-boto3-clouddirectory (>=1.38.0,<1.39.0)", "types-boto3-cloudformation (>=1.38.0,<1.39.0)", "types-boto3-cloudfront (>=1.38.0,<1.39.0)", "types-boto3-cloudfront-keyvaluestore (>=1.38.0,<1.39.0)", "types-boto3-cloudhsm (>=1.38.0,<1.39.0)", "types-boto3-cloudhsmv2 (>=1.38.0,<1.39.0)", "types-boto3-cloudsearch (>=1.38.0,<1.39.0)", "types-boto3-cloudsearchdomain (>=1.38.0,<1.39.0)", "types-boto3-cloudtrail (>=1.38.0,<1.39.0)", "types-boto3-cloudtrail-data (>=1.38.0,<1.39.0)", "types-boto3-cloudwatch (>=1.38.0,<1.39.0)", "types-boto3-codeartifact (>=1.38.0,<1.39.0)", "types-boto3-codebuild (>=1.38.0,<1.39.0)", "types-boto3-codecatalyst (>=1.38.0,<1.39.0)", "types-boto3-codecommit (>=1.38.0,<1.39.0)", "types-boto3-codeconnections (>=1.38.0,<1.39.0)", "types-boto3-codedeploy (>=1.38.0,<1.39.0)", "types-boto3-codeguru-reviewer (>=1.38.0,<1.39.0)", "types-boto3-codeguru-security (>=1.38.0,<1.39.0)", "types-boto3-codeguruprofiler (>=1.38.0,<1.39.0)", "types-boto3-codepipeline (>=1.38.0,<1.39.0)", "types-boto3-codestar-connections (>=1.38.0,<1.39.0)", "types-boto3-codestar-notifications (>=1.38.0,<1.39.0)", "types-boto3-cognito-identity (>=1.38.0,<1.39.0)", "types-boto3-cognito-idp (>=1.38.0,<1.39.0)", "types-boto3-cognito-sync (>=1.38.0,<1.39.0)", "types-boto3-comprehend (>=1.38.0,<1.39.0)", "types-boto3-comprehendmedical (>=1.38.0,<1.39.0)", "types-boto3-compute-optimizer (>=1.38.0,<1.39.0)", "types-boto3-config (>=1.38.0,<1.39.0)", "types-boto3-connect (>=1.38.0,<1.39.0)", "types-boto3-connect-contact-lens (>=1.38.0,<1.39.0)", "types-boto3-connectcampaigns (>=1.38.0,<1.39.0)", "types-boto3-connectcampaignsv2 (>=1.38.0,<1.39.0)", "types-boto3-connectcases (>=1.38.0,<1.39.0)", "types-boto3-connectparticipant (>=1.38.0,<1.39.0)", "types-boto3-controlcatalog (>=1.38.0,<1.39.0)", "types-boto3-controltower (>=1.38.0,<1.39.0)", "types-boto3-cost-optimization-hub (>=1.38.0,<1.39.0)", "types-boto3-cur (>=1.38.0,<1.39.0)", "types-boto3-customer-profiles (>=1.38.0,<1.39.0)", "types-boto3-databrew (>=1.38.0,<1.39.0)", "types-boto3-dataexchange (>=1.38.0,<1.39.0)", "types-boto3-datapipeline (>=1.38.0,<1.39.0)", "types-boto3-datasync (>=1.38.0,<1.39.0)", "types-boto3-datazone (>=1.38.0,<1.39.0)", "types-boto3-dax (>=1.38.0,<1.39.0)", "types-boto3-deadline (>=1.38.0,<1.39.0)", "types-boto3-detective (>=1.38.0,<1.39.0)", "types-boto3-devicefarm (>=1.38.0,<1.39.0)", "types-boto3-devops-guru (>=1.38.0,<1.39.0)", "types-boto3-directconnect (>=1.38.0,<1.39.0)", "types-boto3-discovery (>=1.38.0,<1.39.0)", "types-boto3-dlm (>=1.38.0,<1.39.0)", "types-boto3-dms (>=1.38.0,<1.39.0)", "types-boto3-docdb (>=1.38.0,<1.39.0)", "types-boto3-docdb-elastic (>=1.38.0,<1.39.0)", "types-boto3-drs (>=1.38.0,<1.39.0)", "types-boto3-ds (>=1.38.0,<1.39.0)", "types-boto3-ds-data (>=1.38.0,<1.39.0)", "types-boto3-dsql (>=1.38.0,<1.39.0)", "types-boto3-dynamodb (>=1.38.0,<1.39.0)", "types-boto3-dynamodbstreams (>=1.38.0,<1.39.0)", "types-boto3-ebs (>=1.38.0,<1.39.0)", "types-boto3-ec2 (>=1.38.0,<1.39.0)", "types-boto3-ec2-instance-connect (>=1.38.0,<1.39.0)", "types-boto3-ecr (>=1.38.0,<1.39.0)", "types-boto3-ecr-public (>=1.38.0,<1.39.0)", "types-boto3-ecs (>=1.38.0,<1.39.0)", "types-boto3-efs (>=1.38.0,<1.39.0)", "types-boto3-eks (>=1.38.0,<1.39.0)", "types-boto3-eks-auth (>=1.38.0,<1.39.0)", "types-boto3-elasticache (>=1.38.0,<1.39.0)", "types-boto3-elasticbeanstalk (>=1.38.0,<1.39.0)", "types-boto3-elastictranscoder (>=1.38.0,<1.39.0)", "types-boto3-elb (>=1.38.0,<1.39.0)", "types-boto3-elbv2 (>=1.38.0,<1.39.0)", "types-boto3-emr (>=1.38.0,<1.39.0)", "types-boto3-emr-containers (>=1.38.0,<1.39.0)", "types-boto3-emr-serverless (>=1.38.0,<1.39.0)", "types-boto3-entityresolution (>=1.38.0,<1.39.0)", "types-boto3-es (>=1.38.0,<1.39.0)", "types-boto3-events (>=1.38.0,<1.39.0)", "types-boto3-evidently (>=1.38.0,<1.39.0)", "types-boto3-evs (>=1.38.0,<1.39.0)", "types-boto3-finspace (>=1.38.0,<1.39.0)", "types-boto3-finspace-data (>=1.38.0,<1.39.0)", "types-boto3-firehose (>=1.38.0,<1.39.0)", "types-boto3-fis (>=1.38.0,<1.39.0)", "types-boto3-fms (>=1.38.0,<1.39.0)", "types-boto3-forecast (>=1.38.0,<1.39.0)", "types-boto3-forecastquery (>=1.38.0,<1.39.0)", "types-boto3-frauddetector (>=1.38.0,<1.39.0)", "types-boto3-freetier (>=1.38.0,<1.39.0)", "types-boto3-fsx (>=1.38.0,<1.39.0)", "types-boto3-gamelift (>=1.38.0,<1.39.0)", "types-boto3-gameliftstreams (>=1.38.0,<1.39.0)", "types-boto3-geo-maps (>=1.38.0,<1.39.0)", "types-boto3-geo-places (>=1.38.0,<1.39.0)", "types-boto3-geo-routes (>=1.38.0,<1.39.0)", "types-boto3-glacier (>=1.38.0,<1.39.0)", "types-boto3-globalaccelerator (>=1.38.0,<1.39.0)", "types-boto3-glue (>=1.38.0,<1.39.0)", "types-boto3-grafana (>=1.38.0,<1.39.0)", "types-boto3-greengrass (>=1.38.0,<1.39.0)", "types-boto3-greengrassv2 (>=1.38.0,<1.39.0)", "types-boto3-groundstation (>=1.38.0,<1.39.0)", "types-boto3-guardduty (>=1.38.0,<1.39.0)", "types-boto3-health (>=1.38.0,<1.39.0)", "types-boto3-healthlake (>=1.38.0,<1.39.0)", "types-boto3-iam (>=1.38.0,<1.39.0)", "types-boto3-identitystore (>=1.38.0,<1.39.0)", "types-boto3-imagebuilder (>=1.38.0,<1.39.0)", "types-boto3-importexport (>=1.38.0,<1.39.0)", "types-boto3-inspector (>=1.38.0,<1.39.0)", "types-boto3-inspector-scan (>=1.38.0,<1.39.0)", "types-boto3-inspector2 (>=1.38.0,<1.39.0)", "types-boto3-internetmonitor (>=1.38.0,<1.39.0)", "types-boto3-invoicing (>=1.38.0,<1.39.0)", "types-boto3-iot (>=1.38.0,<1.39.0)", "types-boto3-iot-data (>=1.38.0,<1.39.0)", "types-boto3-iot-jobs-data (>=1.38.0,<1.39.0)", "types-boto3-iot-managed-integrations (>=1.38.0,<1.39.0)", "types-boto3-iotanalytics (>=1.38.0,<1.39.0)", "types-boto3-iotdeviceadvisor (>=1.38.0,<1.39.0)", "types-boto3-iotevents (>=1.38.0,<1.39.0)", "types-boto3-iotevents-data (>=1.38.0,<1.39.0)", "types-boto3-iotfleethub (>=1.38.0,<1.39.0)", "types-boto3-iotfleetwise (>=1.38.0,<1.39.0)", "types-boto3-iotsecuretunneling (>=1.38.0,<1.39.0)", "types-boto3-iotsitewise (>=1.38.0,<1.39.0)", "types-boto3-iotthingsgraph (>=1.38.0,<1.39.0)", "types-boto3-iottwinmaker (>=1.38.0,<1.39.0)", "types-boto3-iotwireless (>=1.38.0,<1.39.0)", "types-boto3-ivs (>=1.38.0,<1.39.0)", "types-boto3-ivs-realtime (>=1.38.0,<1.39.0)", "types-boto3-ivschat (>=1.38.0,<1.39.0)", "types-boto3-kafka (>=1.38.0,<1.39.0)", "types-boto3-kafkaconnect (>=1.38.0,<1.39.0)", "types-boto3-kendra (>=1.38.0,<1.39.0)", "types-boto3-kendra-ranking (>=1.38.0,<1.39.0)", "types-boto3-keyspaces (>=1.38.0,<1.39.0)", "types-boto3-kinesis (>=1.38.0,<1.39.0)", "types-boto3-kinesis-video-archived-media (>=1.38.0,<1.39.0)", "types-boto3-kinesis-video-media (>=1.38.0,<1.39.0)", "types-boto3-kinesis-video-signaling (>=1.38.0,<1.39.0)", "types-boto3-kinesis-video-webrtc-storage (>=1.38.0,<1.39.0)", "types-boto3-kinesisanalytics (>=1.38.0,<1.39.0)", "types-boto3-kinesisanalyticsv2 (>=1.38.0,<1.39.0)", "types-boto3-kinesisvideo (>=1.38.0,<1.39.0)", "types-boto3-kms (>=1.38.0,<1.39.0)", "types-boto3-lakeformation (>=1.38.0,<1.39.0)", "types-boto3-lambda (>=1.38.0,<1.39.0)", "types-boto3-launch-wizard (>=1.38.0,<1.39.0)", "types-boto3-lex-models (>=1.38.0,<1.39.0)", "types-boto3-lex-runtime (>=1.38.0,<1.39.0)", "types-boto3-lexv2-models (>=1.38.0,<1.39.0)", "types-boto3-lexv2-runtime (>=1.38.0,<1.39.0)", "types-boto3-license-manager (>=1.38.0,<1.39.0)", "types-boto3-license-manager-linux-subscriptions (>=1.38.0,<1.39.0)", "types-boto3-license-manager-user-subscriptions (>=1.38.0,<1.39.0)", "types-boto3-lightsail (>=1.38.0,<1.39.0)", "types-boto3-location (>=1.38.0,<1.39.0)", "types-boto3-logs (>=1.38.0,<1.39.0)", "types-boto3-lookoutequipment (>=1.38.0,<1.39.0)", "types-boto3-lookoutmetrics (>=1.38.0,<1.39.0)", "types-boto3-lookoutvision (>=1.38.0,<1.39.0)", "types-boto3-m2 (>=1.38.0,<1.39.0)", "types-boto3-machinelearning (>=1.38.0,<1.39.0)", "types-boto3-macie2 (>=1.38.0,<1.39.0)", "types-boto3-mailmanager (>=1.38.0,<1.39.0)", "types-boto3-managedblockchain (>=1.38.0,<1.39.0)", "types-boto3-managedblockchain-query (>=1.38.0,<1.39.0)", "types-boto3-marketplace-agreement (>=1.38.0,<1.39.0)", "types-boto3-marketplace-catalog (>=1.38.0,<1.39.0)", "types-boto3-marketplace-deployment (>=1.38.0,<1.39.0)", "types-boto3-marketplace-entitlement (>=1.38.0,<1.39.0)", "types-boto3-marketplace-reporting (>=1.38.0,<1.39.0)", "types-boto3-marketplacecommerceanalytics (>=1.38.0,<1.39.0)", "types-boto3-mediaconnect (>=1.38.0,<1.39.0)", "types-boto3-mediaconvert (>=1.38.0,<1.39.0)", "types-boto3-medialive (>=1.38.0,<1.39.0)", "types-boto3-mediapackage (>=1.38.0,<1.39.0)", "types-boto3-mediapackage-vod (>=1.38.0,<1.39.0)", "types-boto3-mediapackagev2 (>=1.38.0,<1.39.0)", "types-boto3-mediastore (>=1.38.0,<1.39.0)", "types-boto3-mediastore-data (>=1.38.0,<1.39.0)", "types-boto3-mediatailor (>=1.38.0,<1.39.0)", "types-boto3-medical-imaging (>=1.38.0,<1.39.0)", "types-boto3-memorydb (>=1.38.0,<1.39.0)", "types-boto3-meteringmarketplace (>=1.38.0,<1.39.0)", "types-boto3-mgh (>=1.38.0,<1.39.0)", "types-boto3-mgn (>=1.38.0,<1.39.0)", "types-boto3-migration-hub-refactor-spaces (>=1.38.0,<1.39.0)", "types-boto3-migrationhub-config (>=1.38.0,<1.39.0)", "types-boto3-migrationhuborchestrator (>=1.38.0,<1.39.0)", "types-boto3-migrationhubstrategy (>=1.38.0,<1.39.0)", "types-boto3-mq (>=1.38.0,<1.39.0)", "types-boto3-mturk (>=1.38.0,<1.39.0)", "types-boto3-mwaa (>=1.38.0,<1.39.0)", "types-boto3-neptune (>=1.38.0,<1.39.0)", "types-boto3-neptune-graph (>=1.38.0,<1.39.0)", "types-boto3-neptunedata (>=1.38.0,<1.39.0)", "types-boto3-network-firewall (>=1.38.0,<1.39.0)", "types-boto3-networkflowmonitor (>=1.38.0,<1.39.0)", "types-boto3-networkmanager (>=1.38.0,<1.39.0)", "types-boto3-networkmonitor (>=1.38.0,<1.39.0)", "types-boto3-notifications (>=1.38.0,<1.39.0)", "types-boto3-notificationscontacts (>=1.38.0,<1.39.0)", "types-boto3-oam (>=1.38.0,<1.39.0)", "types-boto3-observabilityadmin (>=1.38.0,<1.39.0)", "types-boto3-omics (>=1.38.0,<1.39.0)", "types-boto3-opensearch (>=1.38.0,<1.39.0)", "types-boto3-opensearchserverless (>=1.38.0,<1.39.0)", "types-boto3-opsworks (>=1.38.0,<1.39.0)", "types-boto3-opsworkscm (>=1.38.0,<1.39.0)", "types-boto3-organizations (>=1.38.0,<1.39.0)", "types-boto3-osis (>=1.38.0,<1.39.0)", "types-boto3-outposts (>=1.38.0,<1.39.0)", "types-boto3-panorama (>=1.38.0,<1.39.0)", "types-boto3-partnercentral-selling (>=1.38.0,<1.39.0)", "types-boto3-payment-cryptography (>=1.38.0,<1.39.0)", "types-boto3-payment-cryptography-data (>=1.38.0,<1.39.0)", "types-boto3-pca-connector-ad (>=1.38.0,<1.39.0)", "types-boto3-pca-connector-scep (>=1.38.0,<1.39.0)", "types-boto3-pcs (>=1.38.0,<1.39.0)", "types-boto3-personalize (>=1.38.0,<1.39.0)", "types-boto3-personalize-events (>=1.38.0,<1.39.0)", "types-boto3-personalize-runtime (>=1.38.0,<1.39.0)", "types-boto3-pi (>=1.38.0,<1.39.0)", "types-boto3-pinpoint (>=1.38.0,<1.39.0)", "types-boto3-pinpoint-email (>=1.38.0,<1.39.0)", "types-boto3-pinpoint-sms-voice (>=1.38.0,<1.39.0)", "types-boto3-pinpoint-sms-voice-v2 (>=1.38.0,<1.39.0)", "types-boto3-pipes (>=1.38.0,<1.39.0)", "types-boto3-polly (>=1.38.0,<1.39.0)", "types-boto3-pricing (>=1.38.0,<1.39.0)", "types-boto3-proton (>=1.38.0,<1.39.0)", "types-boto3-qapps (>=1.38.0,<1.39.0)", "types-boto3-qbusiness (>=1.38.0,<1.39.0)", "types-boto3-qconnect (>=1.38.0,<1.39.0)", "types-boto3-qldb (>=1.38.0,<1.39.0)", "types-boto3-qldb-session (>=1.38.0,<1.39.0)", "types-boto3-quicksight (>=1.38.0,<1.39.0)", "types-boto3-ram (>=1.38.0,<1.39.0)", "types-boto3-rbin (>=1.38.0,<1.39.0)", "types-boto3-rds (>=1.38.0,<1.39.0)", "types-boto3-rds-data (>=1.38.0,<1.39.0)", "types-boto3-redshift (>=1.38.0,<1.39.0)", "types-boto3-redshift-data (>=1.38.0,<1.39.0)", "types-boto3-redshift-serverless (>=1.38.0,<1.39.0)", "types-boto3-rekognition (>=1.38.0,<1.39.0)", "types-boto3-repostspace (>=1.38.0,<1.39.0)", "types-boto3-resiliencehub (>=1.38.0,<1.39.0)", "types-boto3-resource-explorer-2 (>=1.38.0,<1.39.0)", "types-boto3-resource-groups (>=1.38.0,<1.39.0)", "types-boto3-resourcegroupstaggingapi (>=1.38.0,<1.39.0)", "types-boto3-robomaker (>=1.38.0,<1.39.0)", "types-boto3-rolesanywhere (>=1.38.0,<1.39.0)", "types-boto3-route53 (>=1.38.0,<1.39.0)", "types-boto3-route53-recovery-cluster (>=1.38.0,<1.39.0)", "types-boto3-route53-recovery-control-config (>=1.38.0,<1.39.0)", "types-boto3-route53-recovery-readiness (>=1.38.0,<1.39.0)", "types-boto3-route53domains (>=1.38.0,<1.39.0)", "types-boto3-route53profiles (>=1.38.0,<1.39.0)", "types-boto3-route53resolver (>=1.38.0,<1.39.0)", "types-boto3-rum (>=1.38.0,<1.39.0)", "types-boto3-s3 (>=1.38.0,<1.39.0)", "types-boto3-s3control (>=1.38.0,<1.39.0)", "types-boto3-s3outposts (>=1.38.0,<1.39.0)", "types-boto3-s3tables (>=1.38.0,<1.39.0)", "types-boto3-sagemaker (>=1.38.0,<1.39.0)", "types-boto3-sagemaker-a2i-runtime (>=1.38.0,<1.39.0)", "types-boto3-sagemaker-edge (>=1.38.0,<1.39.0)", "types-boto3-sagemaker-featurestore-runtime (>=1.38.0,<1.39.0)", "types-boto3-sagemaker-geospatial (>=1.38.0,<1.39.0)", "types-boto3-sagemaker-metrics (>=1.38.0,<1.39.0)", "types-boto3-sagemaker-runtime (>=1.38.0,<1.39.0)", "types-boto3-savingsplans (>=1.38.0,<1.39.0)", "types-boto3-scheduler (>=1.38.0,<1.39.0)", "types-boto3-schemas (>=1.38.0,<1.39.0)", "types-boto3-sdb (>=1.38.0,<1.39.0)", "types-boto3-secretsmanager (>=1.38.0,<1.39.0)", "types-boto3-security-ir (>=1.38.0,<1.39.0)", "types-boto3-securityhub (>=1.38.0,<1.39.0)", "types-boto3-securitylake (>=1.38.0,<1.39.0)", "types-boto3-serverlessrepo (>=1.38.0,<1.39.0)", "types-boto3-service-quotas (>=1.38.0,<1.39.0)", "types-boto3-servicecatalog (>=1.38.0,<1.39.0)", "types-boto3-servicecatalog-appregistry (>=1.38.0,<1.39.0)", "types-boto3-servicediscovery (>=1.38.0,<1.39.0)", "types-boto3-ses (>=1.38.0,<1.39.0)", "types-boto3-sesv2 (>=1.38.0,<1.39.0)", "types-boto3-shield (>=1.38.0,<1.39.0)", "types-boto3-signer (>=1.38.0,<1.39.0)", "types-boto3-simspaceweaver (>=1.38.0,<1.39.0)", "types-boto3-sms (>=1.38.0,<1.39.0)", "types-boto3-snow-device-management (>=1.38.0,<1.39.0)", "types-boto3-snowball (>=1.38.0,<1.39.0)", "types-boto3-sns (>=1.38.0,<1.39.0)", "types-boto3-socialmessaging (>=1.38.0,<1.39.0)", "types-boto3-sqs (>=1.38.0,<1.39.0)", "types-boto3-ssm (>=1.38.0,<1.39.0)", "types-boto3-ssm-contacts (>=1.38.0,<1.39.0)", "types-boto3-ssm-guiconnect (>=1.38.0,<1.39.0)", "types-boto3-ssm-incidents (>=1.38.0,<1.39.0)", "types-boto3-ssm-quicksetup (>=1.38.0,<1.39.0)", "types-boto3-ssm-sap (>=1.38.0,<1.39.0)", "types-boto3-sso (>=1.38.0,<1.39.0)", "types-boto3-sso-admin (>=1.38.0,<1.39.0)", "types-boto3-sso-oidc (>=1.38.0,<1.39.0)", "types-boto3-stepfunctions (>=1.38.0,<1.39.0)", "types-boto3-storagegateway (>=1.38.0,<1.39.0)", "types-boto3-sts (>=1.38.0,<1.39.0)", "types-boto3-supplychain (>=1.38.0,<1.39.0)", "types-boto3-support (>=1.38.0,<1.39.0)", "types-boto3-support-app (>=1.38.0,<1.39.0)", "types-boto3-swf (>=1.38.0,<1.39.0)", "types-boto3-synthetics (>=1.38.0,<1.39.0)", "types-boto3-taxsettings (>=1.38.0,<1.39.0)", "types-boto3-textract (>=1.38.0,<1.39.0)", "types-boto3-timestream-influxdb (>=1.38.0,<1.39.0)", "types-boto3-timestream-query (>=1.38.0,<1.39.0)", "types-boto3-timestream-write (>=1.38.0,<1.39.0)", "types-boto3-tnb (>=1.38.0,<1.39.0)", "types-boto3-transcribe (>=1.38.0,<1.39.0)", "types-boto3-transfer (>=1.38.0,<1.39.0)", "types-boto3-translate (>=1.38.0,<1.39.0)", "types-boto3-trustedadvisor (>=1.38.0,<1.39.0)", "types-boto3-verifiedpermissions (>=1.38.0,<1.39.0)", "types-boto3-voice-id (>=1.38.0,<1.39.0)", "types-boto3-vpc-lattice (>=1.38.0,<1.39.0)", "types-boto3-waf (>=1.38.0,<1.39.0)", "types-boto3-waf-regional (>=1.38.0,<1.39.0)", "types-boto3-wafv2 (>=1.38.0,<1.39.0)", "types-boto3-wellarchitected (>=1.38.0,<1.39.0)", "types-boto3-wisdom (>=1.38.0,<1.39.0)", "types-boto3-workdocs (>=1.38.0,<1.39.0)", "types-boto3-workmail (>=1.38.0,<1.39.0)", "types-boto3-workmailmessageflow (>=1.38.0,<1.39.0)", "types-boto3-workspaces (>=1.38.0,<1.39.0)", "types-boto3-workspaces-thin-client (>=1.38.0,<1.39.0)", "types-boto3-workspaces-web (>=1.38.0,<1.39.0)", "types-boto3-xray (>=1.38.0,<1.39.0)"] +amp = ["types-boto3-amp (>=1.38.0,<1.39.0)"] +amplify = ["types-boto3-amplify (>=1.38.0,<1.39.0)"] +amplifybackend = ["types-boto3-amplifybackend (>=1.38.0,<1.39.0)"] +amplifyuibuilder = ["types-boto3-amplifyuibuilder (>=1.38.0,<1.39.0)"] +apigateway = ["types-boto3-apigateway (>=1.38.0,<1.39.0)"] +apigatewaymanagementapi = ["types-boto3-apigatewaymanagementapi (>=1.38.0,<1.39.0)"] +apigatewayv2 = ["types-boto3-apigatewayv2 (>=1.38.0,<1.39.0)"] +appconfig = ["types-boto3-appconfig (>=1.38.0,<1.39.0)"] +appconfigdata = ["types-boto3-appconfigdata (>=1.38.0,<1.39.0)"] +appfabric = ["types-boto3-appfabric (>=1.38.0,<1.39.0)"] +appflow = ["types-boto3-appflow (>=1.38.0,<1.39.0)"] +appintegrations = ["types-boto3-appintegrations (>=1.38.0,<1.39.0)"] +application-autoscaling = ["types-boto3-application-autoscaling (>=1.38.0,<1.39.0)"] +application-insights = ["types-boto3-application-insights (>=1.38.0,<1.39.0)"] +application-signals = ["types-boto3-application-signals (>=1.38.0,<1.39.0)"] +applicationcostprofiler = ["types-boto3-applicationcostprofiler (>=1.38.0,<1.39.0)"] +appmesh = ["types-boto3-appmesh (>=1.38.0,<1.39.0)"] +apprunner = ["types-boto3-apprunner (>=1.38.0,<1.39.0)"] +appstream = ["types-boto3-appstream (>=1.38.0,<1.39.0)"] +appsync = ["types-boto3-appsync (>=1.38.0,<1.39.0)"] +apptest = ["types-boto3-apptest (>=1.38.0,<1.39.0)"] +arc-zonal-shift = ["types-boto3-arc-zonal-shift (>=1.38.0,<1.39.0)"] +artifact = ["types-boto3-artifact (>=1.38.0,<1.39.0)"] +athena = ["types-boto3-athena (>=1.38.0,<1.39.0)"] +auditmanager = ["types-boto3-auditmanager (>=1.38.0,<1.39.0)"] +autoscaling = ["types-boto3-autoscaling (>=1.38.0,<1.39.0)"] +autoscaling-plans = ["types-boto3-autoscaling-plans (>=1.38.0,<1.39.0)"] +b2bi = ["types-boto3-b2bi (>=1.38.0,<1.39.0)"] +backup = ["types-boto3-backup (>=1.38.0,<1.39.0)"] +backup-gateway = ["types-boto3-backup-gateway (>=1.38.0,<1.39.0)"] +backupsearch = ["types-boto3-backupsearch (>=1.38.0,<1.39.0)"] +batch = ["types-boto3-batch (>=1.38.0,<1.39.0)"] +bcm-data-exports = ["types-boto3-bcm-data-exports (>=1.38.0,<1.39.0)"] +bcm-pricing-calculator = ["types-boto3-bcm-pricing-calculator (>=1.38.0,<1.39.0)"] +bedrock = ["types-boto3-bedrock (>=1.38.0,<1.39.0)"] +bedrock-agent = ["types-boto3-bedrock-agent (>=1.38.0,<1.39.0)"] +bedrock-agent-runtime = ["types-boto3-bedrock-agent-runtime (>=1.38.0,<1.39.0)"] +bedrock-data-automation = ["types-boto3-bedrock-data-automation (>=1.38.0,<1.39.0)"] +bedrock-data-automation-runtime = ["types-boto3-bedrock-data-automation-runtime (>=1.38.0,<1.39.0)"] +bedrock-runtime = ["types-boto3-bedrock-runtime (>=1.38.0,<1.39.0)"] +billing = ["types-boto3-billing (>=1.38.0,<1.39.0)"] +billingconductor = ["types-boto3-billingconductor (>=1.38.0,<1.39.0)"] +boto3 = ["boto3 (==1.38.31)"] +braket = ["types-boto3-braket (>=1.38.0,<1.39.0)"] +budgets = ["types-boto3-budgets (>=1.38.0,<1.39.0)"] +ce = ["types-boto3-ce (>=1.38.0,<1.39.0)"] +chatbot = ["types-boto3-chatbot (>=1.38.0,<1.39.0)"] +chime = ["types-boto3-chime (>=1.38.0,<1.39.0)"] +chime-sdk-identity = ["types-boto3-chime-sdk-identity (>=1.38.0,<1.39.0)"] +chime-sdk-media-pipelines = ["types-boto3-chime-sdk-media-pipelines (>=1.38.0,<1.39.0)"] +chime-sdk-meetings = ["types-boto3-chime-sdk-meetings (>=1.38.0,<1.39.0)"] +chime-sdk-messaging = ["types-boto3-chime-sdk-messaging (>=1.38.0,<1.39.0)"] +chime-sdk-voice = ["types-boto3-chime-sdk-voice (>=1.38.0,<1.39.0)"] +cleanrooms = ["types-boto3-cleanrooms (>=1.38.0,<1.39.0)"] +cleanroomsml = ["types-boto3-cleanroomsml (>=1.38.0,<1.39.0)"] +cloud9 = ["types-boto3-cloud9 (>=1.38.0,<1.39.0)"] +cloudcontrol = ["types-boto3-cloudcontrol (>=1.38.0,<1.39.0)"] +clouddirectory = ["types-boto3-clouddirectory (>=1.38.0,<1.39.0)"] +cloudformation = ["types-boto3-cloudformation (>=1.38.0,<1.39.0)"] +cloudfront = ["types-boto3-cloudfront (>=1.38.0,<1.39.0)"] +cloudfront-keyvaluestore = ["types-boto3-cloudfront-keyvaluestore (>=1.38.0,<1.39.0)"] +cloudhsm = ["types-boto3-cloudhsm (>=1.38.0,<1.39.0)"] +cloudhsmv2 = ["types-boto3-cloudhsmv2 (>=1.38.0,<1.39.0)"] +cloudsearch = ["types-boto3-cloudsearch (>=1.38.0,<1.39.0)"] +cloudsearchdomain = ["types-boto3-cloudsearchdomain (>=1.38.0,<1.39.0)"] +cloudtrail = ["types-boto3-cloudtrail (>=1.38.0,<1.39.0)"] +cloudtrail-data = ["types-boto3-cloudtrail-data (>=1.38.0,<1.39.0)"] +cloudwatch = ["types-boto3-cloudwatch (>=1.38.0,<1.39.0)"] +codeartifact = ["types-boto3-codeartifact (>=1.38.0,<1.39.0)"] +codebuild = ["types-boto3-codebuild (>=1.38.0,<1.39.0)"] +codecatalyst = ["types-boto3-codecatalyst (>=1.38.0,<1.39.0)"] +codecommit = ["types-boto3-codecommit (>=1.38.0,<1.39.0)"] +codeconnections = ["types-boto3-codeconnections (>=1.38.0,<1.39.0)"] +codedeploy = ["types-boto3-codedeploy (>=1.38.0,<1.39.0)"] +codeguru-reviewer = ["types-boto3-codeguru-reviewer (>=1.38.0,<1.39.0)"] +codeguru-security = ["types-boto3-codeguru-security (>=1.38.0,<1.39.0)"] +codeguruprofiler = ["types-boto3-codeguruprofiler (>=1.38.0,<1.39.0)"] +codepipeline = ["types-boto3-codepipeline (>=1.38.0,<1.39.0)"] +codestar-connections = ["types-boto3-codestar-connections (>=1.38.0,<1.39.0)"] +codestar-notifications = ["types-boto3-codestar-notifications (>=1.38.0,<1.39.0)"] +cognito-identity = ["types-boto3-cognito-identity (>=1.38.0,<1.39.0)"] +cognito-idp = ["types-boto3-cognito-idp (>=1.38.0,<1.39.0)"] +cognito-sync = ["types-boto3-cognito-sync (>=1.38.0,<1.39.0)"] +comprehend = ["types-boto3-comprehend (>=1.38.0,<1.39.0)"] +comprehendmedical = ["types-boto3-comprehendmedical (>=1.38.0,<1.39.0)"] +compute-optimizer = ["types-boto3-compute-optimizer (>=1.38.0,<1.39.0)"] +config = ["types-boto3-config (>=1.38.0,<1.39.0)"] +connect = ["types-boto3-connect (>=1.38.0,<1.39.0)"] +connect-contact-lens = ["types-boto3-connect-contact-lens (>=1.38.0,<1.39.0)"] +connectcampaigns = ["types-boto3-connectcampaigns (>=1.38.0,<1.39.0)"] +connectcampaignsv2 = ["types-boto3-connectcampaignsv2 (>=1.38.0,<1.39.0)"] +connectcases = ["types-boto3-connectcases (>=1.38.0,<1.39.0)"] +connectparticipant = ["types-boto3-connectparticipant (>=1.38.0,<1.39.0)"] +controlcatalog = ["types-boto3-controlcatalog (>=1.38.0,<1.39.0)"] +controltower = ["types-boto3-controltower (>=1.38.0,<1.39.0)"] +cost-optimization-hub = ["types-boto3-cost-optimization-hub (>=1.38.0,<1.39.0)"] +cur = ["types-boto3-cur (>=1.38.0,<1.39.0)"] +customer-profiles = ["types-boto3-customer-profiles (>=1.38.0,<1.39.0)"] +databrew = ["types-boto3-databrew (>=1.38.0,<1.39.0)"] +dataexchange = ["types-boto3-dataexchange (>=1.38.0,<1.39.0)"] +datapipeline = ["types-boto3-datapipeline (>=1.38.0,<1.39.0)"] +datasync = ["types-boto3-datasync (>=1.38.0,<1.39.0)"] +datazone = ["types-boto3-datazone (>=1.38.0,<1.39.0)"] +dax = ["types-boto3-dax (>=1.38.0,<1.39.0)"] +deadline = ["types-boto3-deadline (>=1.38.0,<1.39.0)"] +detective = ["types-boto3-detective (>=1.38.0,<1.39.0)"] +devicefarm = ["types-boto3-devicefarm (>=1.38.0,<1.39.0)"] +devops-guru = ["types-boto3-devops-guru (>=1.38.0,<1.39.0)"] +directconnect = ["types-boto3-directconnect (>=1.38.0,<1.39.0)"] +discovery = ["types-boto3-discovery (>=1.38.0,<1.39.0)"] +dlm = ["types-boto3-dlm (>=1.38.0,<1.39.0)"] +dms = ["types-boto3-dms (>=1.38.0,<1.39.0)"] +docdb = ["types-boto3-docdb (>=1.38.0,<1.39.0)"] +docdb-elastic = ["types-boto3-docdb-elastic (>=1.38.0,<1.39.0)"] +drs = ["types-boto3-drs (>=1.38.0,<1.39.0)"] +ds = ["types-boto3-ds (>=1.38.0,<1.39.0)"] +ds-data = ["types-boto3-ds-data (>=1.38.0,<1.39.0)"] +dsql = ["types-boto3-dsql (>=1.38.0,<1.39.0)"] +dynamodb = ["types-boto3-dynamodb (>=1.38.0,<1.39.0)"] +dynamodbstreams = ["types-boto3-dynamodbstreams (>=1.38.0,<1.39.0)"] +ebs = ["types-boto3-ebs (>=1.38.0,<1.39.0)"] +ec2 = ["types-boto3-ec2 (>=1.38.0,<1.39.0)"] +ec2-instance-connect = ["types-boto3-ec2-instance-connect (>=1.38.0,<1.39.0)"] +ecr = ["types-boto3-ecr (>=1.38.0,<1.39.0)"] +ecr-public = ["types-boto3-ecr-public (>=1.38.0,<1.39.0)"] +ecs = ["types-boto3-ecs (>=1.38.0,<1.39.0)"] +efs = ["types-boto3-efs (>=1.38.0,<1.39.0)"] +eks = ["types-boto3-eks (>=1.38.0,<1.39.0)"] +eks-auth = ["types-boto3-eks-auth (>=1.38.0,<1.39.0)"] +elasticache = ["types-boto3-elasticache (>=1.38.0,<1.39.0)"] +elasticbeanstalk = ["types-boto3-elasticbeanstalk (>=1.38.0,<1.39.0)"] +elastictranscoder = ["types-boto3-elastictranscoder (>=1.38.0,<1.39.0)"] +elb = ["types-boto3-elb (>=1.38.0,<1.39.0)"] +elbv2 = ["types-boto3-elbv2 (>=1.38.0,<1.39.0)"] +emr = ["types-boto3-emr (>=1.38.0,<1.39.0)"] +emr-containers = ["types-boto3-emr-containers (>=1.38.0,<1.39.0)"] +emr-serverless = ["types-boto3-emr-serverless (>=1.38.0,<1.39.0)"] +entityresolution = ["types-boto3-entityresolution (>=1.38.0,<1.39.0)"] +es = ["types-boto3-es (>=1.38.0,<1.39.0)"] +essential = ["types-boto3-cloudformation (>=1.38.0,<1.39.0)", "types-boto3-dynamodb (>=1.38.0,<1.39.0)", "types-boto3-ec2 (>=1.38.0,<1.39.0)", "types-boto3-lambda (>=1.38.0,<1.39.0)", "types-boto3-rds (>=1.38.0,<1.39.0)", "types-boto3-s3 (>=1.38.0,<1.39.0)", "types-boto3-sqs (>=1.38.0,<1.39.0)"] +events = ["types-boto3-events (>=1.38.0,<1.39.0)"] +evidently = ["types-boto3-evidently (>=1.38.0,<1.39.0)"] +evs = ["types-boto3-evs (>=1.38.0,<1.39.0)"] +finspace = ["types-boto3-finspace (>=1.38.0,<1.39.0)"] +finspace-data = ["types-boto3-finspace-data (>=1.38.0,<1.39.0)"] +firehose = ["types-boto3-firehose (>=1.38.0,<1.39.0)"] +fis = ["types-boto3-fis (>=1.38.0,<1.39.0)"] +fms = ["types-boto3-fms (>=1.38.0,<1.39.0)"] +forecast = ["types-boto3-forecast (>=1.38.0,<1.39.0)"] +forecastquery = ["types-boto3-forecastquery (>=1.38.0,<1.39.0)"] +frauddetector = ["types-boto3-frauddetector (>=1.38.0,<1.39.0)"] +freetier = ["types-boto3-freetier (>=1.38.0,<1.39.0)"] +fsx = ["types-boto3-fsx (>=1.38.0,<1.39.0)"] +full = ["types-boto3-full (>=1.38.0,<1.39.0)"] +gamelift = ["types-boto3-gamelift (>=1.38.0,<1.39.0)"] +gameliftstreams = ["types-boto3-gameliftstreams (>=1.38.0,<1.39.0)"] +geo-maps = ["types-boto3-geo-maps (>=1.38.0,<1.39.0)"] +geo-places = ["types-boto3-geo-places (>=1.38.0,<1.39.0)"] +geo-routes = ["types-boto3-geo-routes (>=1.38.0,<1.39.0)"] +glacier = ["types-boto3-glacier (>=1.38.0,<1.39.0)"] +globalaccelerator = ["types-boto3-globalaccelerator (>=1.38.0,<1.39.0)"] +glue = ["types-boto3-glue (>=1.38.0,<1.39.0)"] +grafana = ["types-boto3-grafana (>=1.38.0,<1.39.0)"] +greengrass = ["types-boto3-greengrass (>=1.38.0,<1.39.0)"] +greengrassv2 = ["types-boto3-greengrassv2 (>=1.38.0,<1.39.0)"] +groundstation = ["types-boto3-groundstation (>=1.38.0,<1.39.0)"] +guardduty = ["types-boto3-guardduty (>=1.38.0,<1.39.0)"] +health = ["types-boto3-health (>=1.38.0,<1.39.0)"] +healthlake = ["types-boto3-healthlake (>=1.38.0,<1.39.0)"] +iam = ["types-boto3-iam (>=1.38.0,<1.39.0)"] +identitystore = ["types-boto3-identitystore (>=1.38.0,<1.39.0)"] +imagebuilder = ["types-boto3-imagebuilder (>=1.38.0,<1.39.0)"] +importexport = ["types-boto3-importexport (>=1.38.0,<1.39.0)"] +inspector = ["types-boto3-inspector (>=1.38.0,<1.39.0)"] +inspector-scan = ["types-boto3-inspector-scan (>=1.38.0,<1.39.0)"] +inspector2 = ["types-boto3-inspector2 (>=1.38.0,<1.39.0)"] +internetmonitor = ["types-boto3-internetmonitor (>=1.38.0,<1.39.0)"] +invoicing = ["types-boto3-invoicing (>=1.38.0,<1.39.0)"] +iot = ["types-boto3-iot (>=1.38.0,<1.39.0)"] +iot-data = ["types-boto3-iot-data (>=1.38.0,<1.39.0)"] +iot-jobs-data = ["types-boto3-iot-jobs-data (>=1.38.0,<1.39.0)"] +iot-managed-integrations = ["types-boto3-iot-managed-integrations (>=1.38.0,<1.39.0)"] +iotanalytics = ["types-boto3-iotanalytics (>=1.38.0,<1.39.0)"] +iotdeviceadvisor = ["types-boto3-iotdeviceadvisor (>=1.38.0,<1.39.0)"] +iotevents = ["types-boto3-iotevents (>=1.38.0,<1.39.0)"] +iotevents-data = ["types-boto3-iotevents-data (>=1.38.0,<1.39.0)"] +iotfleethub = ["types-boto3-iotfleethub (>=1.38.0,<1.39.0)"] +iotfleetwise = ["types-boto3-iotfleetwise (>=1.38.0,<1.39.0)"] +iotsecuretunneling = ["types-boto3-iotsecuretunneling (>=1.38.0,<1.39.0)"] +iotsitewise = ["types-boto3-iotsitewise (>=1.38.0,<1.39.0)"] +iotthingsgraph = ["types-boto3-iotthingsgraph (>=1.38.0,<1.39.0)"] +iottwinmaker = ["types-boto3-iottwinmaker (>=1.38.0,<1.39.0)"] +iotwireless = ["types-boto3-iotwireless (>=1.38.0,<1.39.0)"] +ivs = ["types-boto3-ivs (>=1.38.0,<1.39.0)"] +ivs-realtime = ["types-boto3-ivs-realtime (>=1.38.0,<1.39.0)"] +ivschat = ["types-boto3-ivschat (>=1.38.0,<1.39.0)"] +kafka = ["types-boto3-kafka (>=1.38.0,<1.39.0)"] +kafkaconnect = ["types-boto3-kafkaconnect (>=1.38.0,<1.39.0)"] +kendra = ["types-boto3-kendra (>=1.38.0,<1.39.0)"] +kendra-ranking = ["types-boto3-kendra-ranking (>=1.38.0,<1.39.0)"] +keyspaces = ["types-boto3-keyspaces (>=1.38.0,<1.39.0)"] +kinesis = ["types-boto3-kinesis (>=1.38.0,<1.39.0)"] +kinesis-video-archived-media = ["types-boto3-kinesis-video-archived-media (>=1.38.0,<1.39.0)"] +kinesis-video-media = ["types-boto3-kinesis-video-media (>=1.38.0,<1.39.0)"] +kinesis-video-signaling = ["types-boto3-kinesis-video-signaling (>=1.38.0,<1.39.0)"] +kinesis-video-webrtc-storage = ["types-boto3-kinesis-video-webrtc-storage (>=1.38.0,<1.39.0)"] +kinesisanalytics = ["types-boto3-kinesisanalytics (>=1.38.0,<1.39.0)"] +kinesisanalyticsv2 = ["types-boto3-kinesisanalyticsv2 (>=1.38.0,<1.39.0)"] +kinesisvideo = ["types-boto3-kinesisvideo (>=1.38.0,<1.39.0)"] +kms = ["types-boto3-kms (>=1.38.0,<1.39.0)"] +lakeformation = ["types-boto3-lakeformation (>=1.38.0,<1.39.0)"] +lambda = ["types-boto3-lambda (>=1.38.0,<1.39.0)"] +launch-wizard = ["types-boto3-launch-wizard (>=1.38.0,<1.39.0)"] +lex-models = ["types-boto3-lex-models (>=1.38.0,<1.39.0)"] +lex-runtime = ["types-boto3-lex-runtime (>=1.38.0,<1.39.0)"] +lexv2-models = ["types-boto3-lexv2-models (>=1.38.0,<1.39.0)"] +lexv2-runtime = ["types-boto3-lexv2-runtime (>=1.38.0,<1.39.0)"] +license-manager = ["types-boto3-license-manager (>=1.38.0,<1.39.0)"] +license-manager-linux-subscriptions = ["types-boto3-license-manager-linux-subscriptions (>=1.38.0,<1.39.0)"] +license-manager-user-subscriptions = ["types-boto3-license-manager-user-subscriptions (>=1.38.0,<1.39.0)"] +lightsail = ["types-boto3-lightsail (>=1.38.0,<1.39.0)"] +location = ["types-boto3-location (>=1.38.0,<1.39.0)"] +logs = ["types-boto3-logs (>=1.38.0,<1.39.0)"] +lookoutequipment = ["types-boto3-lookoutequipment (>=1.38.0,<1.39.0)"] +lookoutmetrics = ["types-boto3-lookoutmetrics (>=1.38.0,<1.39.0)"] +lookoutvision = ["types-boto3-lookoutvision (>=1.38.0,<1.39.0)"] +m2 = ["types-boto3-m2 (>=1.38.0,<1.39.0)"] +machinelearning = ["types-boto3-machinelearning (>=1.38.0,<1.39.0)"] +macie2 = ["types-boto3-macie2 (>=1.38.0,<1.39.0)"] +mailmanager = ["types-boto3-mailmanager (>=1.38.0,<1.39.0)"] +managedblockchain = ["types-boto3-managedblockchain (>=1.38.0,<1.39.0)"] +managedblockchain-query = ["types-boto3-managedblockchain-query (>=1.38.0,<1.39.0)"] +marketplace-agreement = ["types-boto3-marketplace-agreement (>=1.38.0,<1.39.0)"] +marketplace-catalog = ["types-boto3-marketplace-catalog (>=1.38.0,<1.39.0)"] +marketplace-deployment = ["types-boto3-marketplace-deployment (>=1.38.0,<1.39.0)"] +marketplace-entitlement = ["types-boto3-marketplace-entitlement (>=1.38.0,<1.39.0)"] +marketplace-reporting = ["types-boto3-marketplace-reporting (>=1.38.0,<1.39.0)"] +marketplacecommerceanalytics = ["types-boto3-marketplacecommerceanalytics (>=1.38.0,<1.39.0)"] +mediaconnect = ["types-boto3-mediaconnect (>=1.38.0,<1.39.0)"] +mediaconvert = ["types-boto3-mediaconvert (>=1.38.0,<1.39.0)"] +medialive = ["types-boto3-medialive (>=1.38.0,<1.39.0)"] +mediapackage = ["types-boto3-mediapackage (>=1.38.0,<1.39.0)"] +mediapackage-vod = ["types-boto3-mediapackage-vod (>=1.38.0,<1.39.0)"] +mediapackagev2 = ["types-boto3-mediapackagev2 (>=1.38.0,<1.39.0)"] +mediastore = ["types-boto3-mediastore (>=1.38.0,<1.39.0)"] +mediastore-data = ["types-boto3-mediastore-data (>=1.38.0,<1.39.0)"] +mediatailor = ["types-boto3-mediatailor (>=1.38.0,<1.39.0)"] +medical-imaging = ["types-boto3-medical-imaging (>=1.38.0,<1.39.0)"] +memorydb = ["types-boto3-memorydb (>=1.38.0,<1.39.0)"] +meteringmarketplace = ["types-boto3-meteringmarketplace (>=1.38.0,<1.39.0)"] +mgh = ["types-boto3-mgh (>=1.38.0,<1.39.0)"] +mgn = ["types-boto3-mgn (>=1.38.0,<1.39.0)"] +migration-hub-refactor-spaces = ["types-boto3-migration-hub-refactor-spaces (>=1.38.0,<1.39.0)"] +migrationhub-config = ["types-boto3-migrationhub-config (>=1.38.0,<1.39.0)"] +migrationhuborchestrator = ["types-boto3-migrationhuborchestrator (>=1.38.0,<1.39.0)"] +migrationhubstrategy = ["types-boto3-migrationhubstrategy (>=1.38.0,<1.39.0)"] +mq = ["types-boto3-mq (>=1.38.0,<1.39.0)"] +mturk = ["types-boto3-mturk (>=1.38.0,<1.39.0)"] +mwaa = ["types-boto3-mwaa (>=1.38.0,<1.39.0)"] +neptune = ["types-boto3-neptune (>=1.38.0,<1.39.0)"] +neptune-graph = ["types-boto3-neptune-graph (>=1.38.0,<1.39.0)"] +neptunedata = ["types-boto3-neptunedata (>=1.38.0,<1.39.0)"] +network-firewall = ["types-boto3-network-firewall (>=1.38.0,<1.39.0)"] +networkflowmonitor = ["types-boto3-networkflowmonitor (>=1.38.0,<1.39.0)"] +networkmanager = ["types-boto3-networkmanager (>=1.38.0,<1.39.0)"] +networkmonitor = ["types-boto3-networkmonitor (>=1.38.0,<1.39.0)"] +notifications = ["types-boto3-notifications (>=1.38.0,<1.39.0)"] +notificationscontacts = ["types-boto3-notificationscontacts (>=1.38.0,<1.39.0)"] +oam = ["types-boto3-oam (>=1.38.0,<1.39.0)"] +observabilityadmin = ["types-boto3-observabilityadmin (>=1.38.0,<1.39.0)"] +omics = ["types-boto3-omics (>=1.38.0,<1.39.0)"] +opensearch = ["types-boto3-opensearch (>=1.38.0,<1.39.0)"] +opensearchserverless = ["types-boto3-opensearchserverless (>=1.38.0,<1.39.0)"] +opsworks = ["types-boto3-opsworks (>=1.38.0,<1.39.0)"] +opsworkscm = ["types-boto3-opsworkscm (>=1.38.0,<1.39.0)"] +organizations = ["types-boto3-organizations (>=1.38.0,<1.39.0)"] +osis = ["types-boto3-osis (>=1.38.0,<1.39.0)"] +outposts = ["types-boto3-outposts (>=1.38.0,<1.39.0)"] +panorama = ["types-boto3-panorama (>=1.38.0,<1.39.0)"] +partnercentral-selling = ["types-boto3-partnercentral-selling (>=1.38.0,<1.39.0)"] +payment-cryptography = ["types-boto3-payment-cryptography (>=1.38.0,<1.39.0)"] +payment-cryptography-data = ["types-boto3-payment-cryptography-data (>=1.38.0,<1.39.0)"] +pca-connector-ad = ["types-boto3-pca-connector-ad (>=1.38.0,<1.39.0)"] +pca-connector-scep = ["types-boto3-pca-connector-scep (>=1.38.0,<1.39.0)"] +pcs = ["types-boto3-pcs (>=1.38.0,<1.39.0)"] +personalize = ["types-boto3-personalize (>=1.38.0,<1.39.0)"] +personalize-events = ["types-boto3-personalize-events (>=1.38.0,<1.39.0)"] +personalize-runtime = ["types-boto3-personalize-runtime (>=1.38.0,<1.39.0)"] +pi = ["types-boto3-pi (>=1.38.0,<1.39.0)"] +pinpoint = ["types-boto3-pinpoint (>=1.38.0,<1.39.0)"] +pinpoint-email = ["types-boto3-pinpoint-email (>=1.38.0,<1.39.0)"] +pinpoint-sms-voice = ["types-boto3-pinpoint-sms-voice (>=1.38.0,<1.39.0)"] +pinpoint-sms-voice-v2 = ["types-boto3-pinpoint-sms-voice-v2 (>=1.38.0,<1.39.0)"] +pipes = ["types-boto3-pipes (>=1.38.0,<1.39.0)"] +polly = ["types-boto3-polly (>=1.38.0,<1.39.0)"] +pricing = ["types-boto3-pricing (>=1.38.0,<1.39.0)"] +proton = ["types-boto3-proton (>=1.38.0,<1.39.0)"] +qapps = ["types-boto3-qapps (>=1.38.0,<1.39.0)"] +qbusiness = ["types-boto3-qbusiness (>=1.38.0,<1.39.0)"] +qconnect = ["types-boto3-qconnect (>=1.38.0,<1.39.0)"] +qldb = ["types-boto3-qldb (>=1.38.0,<1.39.0)"] +qldb-session = ["types-boto3-qldb-session (>=1.38.0,<1.39.0)"] +quicksight = ["types-boto3-quicksight (>=1.38.0,<1.39.0)"] +ram = ["types-boto3-ram (>=1.38.0,<1.39.0)"] +rbin = ["types-boto3-rbin (>=1.38.0,<1.39.0)"] +rds = ["types-boto3-rds (>=1.38.0,<1.39.0)"] +rds-data = ["types-boto3-rds-data (>=1.38.0,<1.39.0)"] +redshift = ["types-boto3-redshift (>=1.38.0,<1.39.0)"] +redshift-data = ["types-boto3-redshift-data (>=1.38.0,<1.39.0)"] +redshift-serverless = ["types-boto3-redshift-serverless (>=1.38.0,<1.39.0)"] +rekognition = ["types-boto3-rekognition (>=1.38.0,<1.39.0)"] +repostspace = ["types-boto3-repostspace (>=1.38.0,<1.39.0)"] +resiliencehub = ["types-boto3-resiliencehub (>=1.38.0,<1.39.0)"] +resource-explorer-2 = ["types-boto3-resource-explorer-2 (>=1.38.0,<1.39.0)"] +resource-groups = ["types-boto3-resource-groups (>=1.38.0,<1.39.0)"] +resourcegroupstaggingapi = ["types-boto3-resourcegroupstaggingapi (>=1.38.0,<1.39.0)"] +robomaker = ["types-boto3-robomaker (>=1.38.0,<1.39.0)"] +rolesanywhere = ["types-boto3-rolesanywhere (>=1.38.0,<1.39.0)"] +route53 = ["types-boto3-route53 (>=1.38.0,<1.39.0)"] +route53-recovery-cluster = ["types-boto3-route53-recovery-cluster (>=1.38.0,<1.39.0)"] +route53-recovery-control-config = ["types-boto3-route53-recovery-control-config (>=1.38.0,<1.39.0)"] +route53-recovery-readiness = ["types-boto3-route53-recovery-readiness (>=1.38.0,<1.39.0)"] +route53domains = ["types-boto3-route53domains (>=1.38.0,<1.39.0)"] +route53profiles = ["types-boto3-route53profiles (>=1.38.0,<1.39.0)"] +route53resolver = ["types-boto3-route53resolver (>=1.38.0,<1.39.0)"] +rum = ["types-boto3-rum (>=1.38.0,<1.39.0)"] +s3 = ["types-boto3-s3 (>=1.38.0,<1.39.0)"] +s3control = ["types-boto3-s3control (>=1.38.0,<1.39.0)"] +s3outposts = ["types-boto3-s3outposts (>=1.38.0,<1.39.0)"] +s3tables = ["types-boto3-s3tables (>=1.38.0,<1.39.0)"] +sagemaker = ["types-boto3-sagemaker (>=1.38.0,<1.39.0)"] +sagemaker-a2i-runtime = ["types-boto3-sagemaker-a2i-runtime (>=1.38.0,<1.39.0)"] +sagemaker-edge = ["types-boto3-sagemaker-edge (>=1.38.0,<1.39.0)"] +sagemaker-featurestore-runtime = ["types-boto3-sagemaker-featurestore-runtime (>=1.38.0,<1.39.0)"] +sagemaker-geospatial = ["types-boto3-sagemaker-geospatial (>=1.38.0,<1.39.0)"] +sagemaker-metrics = ["types-boto3-sagemaker-metrics (>=1.38.0,<1.39.0)"] +sagemaker-runtime = ["types-boto3-sagemaker-runtime (>=1.38.0,<1.39.0)"] +savingsplans = ["types-boto3-savingsplans (>=1.38.0,<1.39.0)"] +scheduler = ["types-boto3-scheduler (>=1.38.0,<1.39.0)"] +schemas = ["types-boto3-schemas (>=1.38.0,<1.39.0)"] +sdb = ["types-boto3-sdb (>=1.38.0,<1.39.0)"] +secretsmanager = ["types-boto3-secretsmanager (>=1.38.0,<1.39.0)"] +security-ir = ["types-boto3-security-ir (>=1.38.0,<1.39.0)"] +securityhub = ["types-boto3-securityhub (>=1.38.0,<1.39.0)"] +securitylake = ["types-boto3-securitylake (>=1.38.0,<1.39.0)"] +serverlessrepo = ["types-boto3-serverlessrepo (>=1.38.0,<1.39.0)"] +service-quotas = ["types-boto3-service-quotas (>=1.38.0,<1.39.0)"] +servicecatalog = ["types-boto3-servicecatalog (>=1.38.0,<1.39.0)"] +servicecatalog-appregistry = ["types-boto3-servicecatalog-appregistry (>=1.38.0,<1.39.0)"] +servicediscovery = ["types-boto3-servicediscovery (>=1.38.0,<1.39.0)"] +ses = ["types-boto3-ses (>=1.38.0,<1.39.0)"] +sesv2 = ["types-boto3-sesv2 (>=1.38.0,<1.39.0)"] +shield = ["types-boto3-shield (>=1.38.0,<1.39.0)"] +signer = ["types-boto3-signer (>=1.38.0,<1.39.0)"] +simspaceweaver = ["types-boto3-simspaceweaver (>=1.38.0,<1.39.0)"] +sms = ["types-boto3-sms (>=1.38.0,<1.39.0)"] +snow-device-management = ["types-boto3-snow-device-management (>=1.38.0,<1.39.0)"] +snowball = ["types-boto3-snowball (>=1.38.0,<1.39.0)"] +sns = ["types-boto3-sns (>=1.38.0,<1.39.0)"] +socialmessaging = ["types-boto3-socialmessaging (>=1.38.0,<1.39.0)"] +sqs = ["types-boto3-sqs (>=1.38.0,<1.39.0)"] +ssm = ["types-boto3-ssm (>=1.38.0,<1.39.0)"] +ssm-contacts = ["types-boto3-ssm-contacts (>=1.38.0,<1.39.0)"] +ssm-guiconnect = ["types-boto3-ssm-guiconnect (>=1.38.0,<1.39.0)"] +ssm-incidents = ["types-boto3-ssm-incidents (>=1.38.0,<1.39.0)"] +ssm-quicksetup = ["types-boto3-ssm-quicksetup (>=1.38.0,<1.39.0)"] +ssm-sap = ["types-boto3-ssm-sap (>=1.38.0,<1.39.0)"] +sso = ["types-boto3-sso (>=1.38.0,<1.39.0)"] +sso-admin = ["types-boto3-sso-admin (>=1.38.0,<1.39.0)"] +sso-oidc = ["types-boto3-sso-oidc (>=1.38.0,<1.39.0)"] +stepfunctions = ["types-boto3-stepfunctions (>=1.38.0,<1.39.0)"] +storagegateway = ["types-boto3-storagegateway (>=1.38.0,<1.39.0)"] +sts = ["types-boto3-sts (>=1.38.0,<1.39.0)"] +supplychain = ["types-boto3-supplychain (>=1.38.0,<1.39.0)"] +support = ["types-boto3-support (>=1.38.0,<1.39.0)"] +support-app = ["types-boto3-support-app (>=1.38.0,<1.39.0)"] +swf = ["types-boto3-swf (>=1.38.0,<1.39.0)"] +synthetics = ["types-boto3-synthetics (>=1.38.0,<1.39.0)"] +taxsettings = ["types-boto3-taxsettings (>=1.38.0,<1.39.0)"] +textract = ["types-boto3-textract (>=1.38.0,<1.39.0)"] +timestream-influxdb = ["types-boto3-timestream-influxdb (>=1.38.0,<1.39.0)"] +timestream-query = ["types-boto3-timestream-query (>=1.38.0,<1.39.0)"] +timestream-write = ["types-boto3-timestream-write (>=1.38.0,<1.39.0)"] +tnb = ["types-boto3-tnb (>=1.38.0,<1.39.0)"] +transcribe = ["types-boto3-transcribe (>=1.38.0,<1.39.0)"] +transfer = ["types-boto3-transfer (>=1.38.0,<1.39.0)"] +translate = ["types-boto3-translate (>=1.38.0,<1.39.0)"] +trustedadvisor = ["types-boto3-trustedadvisor (>=1.38.0,<1.39.0)"] +verifiedpermissions = ["types-boto3-verifiedpermissions (>=1.38.0,<1.39.0)"] +voice-id = ["types-boto3-voice-id (>=1.38.0,<1.39.0)"] +vpc-lattice = ["types-boto3-vpc-lattice (>=1.38.0,<1.39.0)"] +waf = ["types-boto3-waf (>=1.38.0,<1.39.0)"] +waf-regional = ["types-boto3-waf-regional (>=1.38.0,<1.39.0)"] +wafv2 = ["types-boto3-wafv2 (>=1.38.0,<1.39.0)"] +wellarchitected = ["types-boto3-wellarchitected (>=1.38.0,<1.39.0)"] +wisdom = ["types-boto3-wisdom (>=1.38.0,<1.39.0)"] +workdocs = ["types-boto3-workdocs (>=1.38.0,<1.39.0)"] +workmail = ["types-boto3-workmail (>=1.38.0,<1.39.0)"] +workmailmessageflow = ["types-boto3-workmailmessageflow (>=1.38.0,<1.39.0)"] +workspaces = ["types-boto3-workspaces (>=1.38.0,<1.39.0)"] +workspaces-thin-client = ["types-boto3-workspaces-thin-client (>=1.38.0,<1.39.0)"] +workspaces-web = ["types-boto3-workspaces-web (>=1.38.0,<1.39.0)"] +xray = ["types-boto3-xray (>=1.38.0,<1.39.0)"] + +[[package]] +name = "types-boto3-full" +version = "1.38.31" +description = "All-in-one type annotations for boto3 1.38.31 generated with mypy-boto3-builder 8.11.0" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "types_boto3_full-1.38.31-py3-none-any.whl", hash = "sha256:4ea2278141191f780881b69a043b0857634343db7b54f4109c71f1ba47afaeb5"}, + {file = "types_boto3_full-1.38.31.tar.gz", hash = "sha256:e4e1f09a9f15a118417bf433f8bb562bf209f8fc18c77b29cd550b0326d14080"}, +] + +[package.dependencies] +typing-extensions = {version = "*", markers = "python_version < \"3.12\""} + [[package]] name = "types-protobuf" version = "5.29.1.20250403" @@ -7058,6 +7531,18 @@ files = [ [package.dependencies] urllib3 = ">=2" +[[package]] +name = "types-s3transfer" +version = "0.13.0" +description = "Type annotations and code completion for s3transfer" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "types_s3transfer-0.13.0-py3-none-any.whl", hash = "sha256:79c8375cbf48a64bff7654c02df1ec4b20d74f8c5672fc13e382f593ca5565b3"}, + {file = "types_s3transfer-0.13.0.tar.gz", hash = "sha256:203dadcb9865c2f68fb44bc0440e1dc05b79197ba4a641c0976c26c9af75ef52"}, +] + [[package]] name = "types-toml" version = "0.10.8.20240310" @@ -7758,4 +8243,4 @@ type = ["pytest-mypy"] [metadata] lock-version = "2.1" python-versions = ">=3.11,<3.14" -content-hash = "4665c6fa560799864feeb4eb1c86dec10957a21373add46d8b531532cec616f3" +content-hash = "166d8370c3b1a056956421f8e0ea6f4277708bfe5d5b78c067e9d01b2ce237c3" diff --git a/pyproject.toml b/pyproject.toml index 3a778cf9..aee3ecec 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -100,6 +100,7 @@ pandas = "^2.2.3" pre-commit = "^4.2.0" ruff = "^0.11.12" aiosqlite = "^0.21.0" +types-boto3 = {extras = ["full"], version = "^1.38.31"} [build-system] requires = ["poetry-core>=1.0.0"] diff --git a/skyvern/forge/sdk/api/aws.py b/skyvern/forge/sdk/api/aws.py index 77b0e03c..ccb76eac 100644 --- a/skyvern/forge/sdk/api/aws.py +++ b/skyvern/forge/sdk/api/aws.py @@ -4,6 +4,9 @@ from urllib.parse import urlparse import aioboto3 import structlog +from types_boto3_ecs.client import ECSClient +from types_boto3_s3.client import S3Client +from types_boto3_secretsmanager.client import SecretsManagerClient from skyvern.config import settings @@ -41,9 +44,18 @@ class AsyncAWSClient: aws_secret_access_key=aws_secret_access_key, ) + def _ecs_client(self) -> ECSClient: + return self.session.client(AWSClientType.ECS, region_name=self.region_name) + + def _secrets_manager_client(self) -> SecretsManagerClient: + return self.session.client(AWSClientType.SECRETS_MANAGER, region_name=self.region_name) + + def _s3_client(self) -> S3Client: + return self.session.client(AWSClientType.S3, region_name=self.region_name) + async def get_secret(self, secret_name: str) -> str | None: try: - async with self.session.client(AWSClientType.SECRETS_MANAGER, region_name=self.region_name) as client: + async with self._secrets_manager_client() as client: response = await client.get_secret_value(SecretId=secret_name) return response["SecretString"] except Exception as e: @@ -56,7 +68,7 @@ class AsyncAWSClient: async def create_secret(self, secret_name: str, secret_value: str) -> None: try: - async with self.session.client(AWSClientType.SECRETS_MANAGER, region_name=self.region_name) as client: + async with self._secrets_manager_client() as client: await client.create_secret(Name=secret_name, SecretString=secret_value) except Exception as e: LOG.exception("Failed to create secret.", secret_name=secret_name) @@ -64,7 +76,7 @@ class AsyncAWSClient: async def set_secret(self, secret_name: str, secret_value: str) -> None: try: - async with self.session.client(AWSClientType.SECRETS_MANAGER, region_name=self.region_name) as client: + async with self._secrets_manager_client() as client: await client.put_secret_value(SecretId=secret_name, SecretString=secret_value) except Exception as e: LOG.exception("Failed to set secret.", secret_name=secret_name) @@ -72,7 +84,7 @@ class AsyncAWSClient: async def delete_secret(self, secret_name: str) -> None: try: - async with self.session.client(AWSClientType.SECRETS_MANAGER, region_name=self.region_name) as client: + async with self._secrets_manager_client() as client: await client.delete_secret(SecretId=secret_name) except Exception as e: LOG.exception("Failed to delete secret.", secret_name=secret_name) @@ -84,7 +96,7 @@ class AsyncAWSClient: if storage_class not in S3StorageClass: raise ValueError(f"Invalid storage class: {storage_class}. Must be one of {list(S3StorageClass)}") try: - async with self.session.client(AWSClientType.S3, region_name=self.region_name) as client: + async with self._s3_client() as client: parsed_uri = S3Uri(uri) await client.put_object( Body=data, Bucket=parsed_uri.bucket, Key=parsed_uri.key, StorageClass=str(storage_class) @@ -100,7 +112,7 @@ class AsyncAWSClient: if storage_class not in S3StorageClass: raise ValueError(f"Invalid storage class: {storage_class}. Must be one of {list(S3StorageClass)}") try: - async with self.session.client(AWSClientType.S3, region_name=self.region_name) as client: + async with self._s3_client() as client: parsed_uri = S3Uri(uri) await client.upload_fileobj( file_obj, @@ -123,7 +135,7 @@ class AsyncAWSClient: raise_exception: bool = False, ) -> None: try: - async with self.session.client(AWSClientType.S3, region_name=self.region_name) as client: + async with self._s3_client() as client: parsed_uri = S3Uri(uri) extra_args: dict[str, Any] = {"StorageClass": str(storage_class)} if metadata: @@ -141,7 +153,7 @@ class AsyncAWSClient: async def download_file(self, uri: str, log_exception: bool = True) -> bytes | None: try: - async with self.session.client(AWSClientType.S3, region_name=self.region_name) as client: + async with self._s3_client() as client: parsed_uri = S3Uri(uri) # Get full object including body @@ -169,7 +181,7 @@ class AsyncAWSClient: The metadata dictionary or None if the request fails """ try: - async with self.session.client(AWSClientType.S3, region_name=self.region_name) as client: + async with self._s3_client() as client: parsed_uri = S3Uri(uri) # Only get object metadata without the body @@ -183,7 +195,7 @@ class AsyncAWSClient: async def create_presigned_urls(self, uris: list[str]) -> list[str] | None: presigned_urls = [] try: - async with self.session.client(AWSClientType.S3, region_name=self.region_name) as client: + async with self._s3_client() as client: for uri in uris: parsed_uri = S3Uri(uri) url = await client.generate_presigned_url( @@ -201,7 +213,7 @@ class AsyncAWSClient: async def list_files(self, uri: str) -> list[str]: object_keys: list[str] = [] parsed_uri = S3Uri(uri) - async with self.session.client(AWSClientType.S3, region_name=self.region_name) as client: + async with self._s3_client() as client: async for page in client.get_paginator("list_objects_v2").paginate( Bucket=parsed_uri.bucket, Prefix=parsed_uri.key ): @@ -218,7 +230,7 @@ class AsyncAWSClient: subnets: list[str], security_groups: list[str], ) -> dict: - async with self.session.client(AWSClientType.ECS, region_name=self.region_name) as client: + async with self._ecs_client() as client: return await client.run_task( cluster=cluster, launchType=launch_type, @@ -233,23 +245,23 @@ class AsyncAWSClient: ) async def stop_task(self, cluster: str, task: str, reason: str | None = None) -> dict: - async with self.session.client(AWSClientType.ECS, region_name=self.region_name) as client: + async with self._ecs_client() as client: return await client.stop_task(cluster=cluster, task=task, reason=reason) async def describe_tasks(self, cluster: str, tasks: list[str]) -> dict: - async with self.session.client(AWSClientType.ECS, region_name=self.region_name) as client: + async with self._ecs_client() as client: return await client.describe_tasks(cluster=cluster, tasks=tasks) async def list_tasks(self, cluster: str) -> dict: - async with self.session.client(AWSClientType.ECS, region_name=self.region_name) as client: + async with self._ecs_client() as client: return await client.list_tasks(cluster=cluster) async def describe_task_definition(self, task_definition: str) -> dict: - async with self.session.client(AWSClientType.ECS, region_name=self.region_name) as client: + async with self._ecs_client() as client: return await client.describe_task_definition(taskDefinition=task_definition) async def deregister_task_definition(self, task_definition: str) -> dict: - async with self.session.client(AWSClientType.ECS, region_name=self.region_name) as client: + async with self._ecs_client() as client: return await client.deregister_task_definition(taskDefinition=task_definition)