diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d48bbf3..cdcd043 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -5,6 +5,7 @@ on: branches: [ master ] pull_request: branches: [ master ] + workflow_dispatch: jobs: test: @@ -13,10 +14,12 @@ jobs: fail-fast: false matrix: python-version: + - "3.13" + - "3.12" + - "3.11" - "3.10" - "3.9" - "3.8" - - "3.7" steps: - uses: actions/checkout@v2 @@ -37,3 +40,5 @@ jobs: - name: Test run: make test + env: + LOCALSTACK_AUTH_TOKEN: ${{ secrets.LOCALSTACK_AUTH_TOKEN }} diff --git a/CHANGELOG.md b/CHANGELOG.md index 3e305ab..8e60cab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # LocalStack Python Client Change Log +* v2.12: Add endpoint config for Amazon Aurora DSQL +* v2.11: Add endpoint config for S3 Tables +* v2.10: Remove endpoints for 'bedrock-runtime' and 'textract' because overriding them is not supported by the AWS Terraform provider +* v2.9: Add endpoints for Account Management, Private Certificate Authority, Bedrock, CloudControl, CodeBuild, CodeCommit, CodeConnections, CodeDeploy, CodePipeline, ElasticTranscoder, MemoryDB, Shield, Textract and Verified Permissions +* v2.8: Removes support for python `3.6` and `3.7` and adds `3.12` and `3.13` for parity with boto3 +* v2.7: Add endpoint config for EventBridge Pipes +* v2.6: Add endpoint config for Pinpoint * v2.5: Add endpoint config for AppConfig Data * v2.4: Add endpoint config for Resource Access Manager * v2.3: Add endpoint config for Amazon EventBridge Scheduler diff --git a/Makefile b/Makefile index 150194b..13c0acb 100644 --- a/Makefile +++ b/Makefile @@ -14,7 +14,10 @@ install: ## Install dependencies in local virtualenv folder publish: ## Publish the library to the central PyPi repository # build and upload archive - $(VENV_RUN); ./setup.py sdist && twine upload $(BUILD_DIR)/*.tar.gz + rm -rf $(BUILD_DIR) + $(VENV_RUN); $(PIP_CMD) install --upgrade build twine && \ + python -m build --sdist --wheel && \ + twine upload $(BUILD_DIR)/* test: ## Run automated tests ($(VENV_RUN); test `which localstack` || pip install .[test]) && \ diff --git a/README.md b/README.md index 7bca6dc..fb0b55f 100644 --- a/README.md +++ b/README.md @@ -7,14 +7,14 @@ PyPi downloads

-This is an easy-to-use Python client for [LocalStack](https://github.com/localstack/localstack). +This is an easy-to-use Python client for [LocalStack](https://www.localstack.cloud/). The client library provides a thin wrapper around [boto3](https://github.com/boto/boto3) which automatically configures the target endpoints to use LocalStack for your local cloud application development. ## Prerequisites -To make use of this library, you need to have [LocalStack](https://github.com/localstack/localstack) installed on your local machine. In particular, the `localstack` command needs to be available. +To make use of this library, you need to have [LocalStack](https://www.localstack.cloud/) installed on your local machine. In particular, the `localstack` command needs to be available. ## Installation diff --git a/localstack_client/config.py b/localstack_client/config.py index 1e9073f..4e5a365 100644 --- a/localstack_client/config.py +++ b/localstack_client/config.py @@ -13,115 +13,133 @@ # latest version is to access all services via a single "edge service" (port 4566 by default) _service_ports: Dict[str, int] = { "edge": 4566, + # Botocore services + # When adding new services below, assign them port 4566 + "account": 4566, + "acm": 4619, + "acm-pca": 4566, + "amplify": 4622, "apigateway": 4567, + "apigatewaymanagementapi": 4625, "apigatewayv2": 4567, - "kinesis": 4568, + "appconfig": 4632, + "appconfigdata": 4632, + "appflow": 4566, + "application-autoscaling": 4623, + "appsync": 4605, + "athena": 4607, + "autoscaling": 4616, + "backup": 4638, + "batch": 4614, + "bedrock": 4566, + "ce": 4633, + "cloudcontrol": 4566, + "cloudformation": 4581, + "cloudfront": 4606, + "cloudsearch": 4595, + "cloudtrail": 4612, + "cloudwatch": 4582, + "codebuild": 4566, + "codecommit": 4620, + "codeconnections": 4566, + "codedeploy": 4566, + "codepipeline": 4566, + "cognito-identity": 4591, + "cognito-idp": 4590, + "config": 4641, + "configservice": 4641, + "docdb": 4594, + "dsql": 4566, "dynamodb": 4569, "dynamodbstreams": 4570, + "ec2": 4597, + "ecr": 4610, + "ecs": 4601, + "efs": 4637, + "eks": 4602, + "elasticache": 4598, + "elasticbeanstalk": 4604, "elasticsearch": 4571, - "s3": 4572, - "firehose": 4573, - "lambda": 4574, - "sns": 4575, - "sqs": 4576, - "redshift": 4577, - "redshift-data": 4577, + "elastictranscoder": 4566, + "elb": 4588, + "elbv2": 4628, + "emr": 4600, + "emr-serverless": 4566, "es": 4578, - "opensearch": 4578, - "ses": 4579, - "sesv2": 4579, - "route53": 4580, - "route53resolver": 4580, - "cloudformation": 4581, - "cloudwatch": 4582, - "ssm": 4583, - "secretsmanager": 4584, - "stepfunctions": 4585, - "logs": 4586, "events": 4587, - "elb": 4588, + "firehose": 4573, + "fis": 4643, + "glacier": 4613, + "glue": 4608, + "iam": 4593, "iot": 4589, "iotanalytics": 4589, + "iot-data": 4589, "iotevents": 4589, "iotevents-data": 4589, - "iotwireless": 4589, - "iot-data": 4589, "iot-jobs-data": 4589, - "cognito-idp": 4590, - "cognito-identity": 4591, - "sts": 4592, - "iam": 4593, + "iotwireless": 4589, + "kafka": 4624, + "keyspaces": 4566, + "kinesis": 4568, + "kinesisanalytics": 4621, + "kinesisanalyticsv2": 4621, + "kms": 4599, + "lakeformation": 4639, + "lambda": 4574, + "logs": 4586, + "mediaconvert": 4634, + "mediastore": 4617, + "mediastore-data": 4617, + "meteringmarketplace": 4644, + "memorydb": 4566, + "mq": 4566, + "mwaa": 4642, + "neptune": 4594, + "opensearch": 4578, + "organizations": 4615, + "pinpoint": 4566, + "pipes": 4566, + "qldb": 4611, + "qldb-session": 4611, + "ram": 4566, "rds": 4594, "rds-data": 4594, - "cloudsearch": 4595, - "swf": 4596, - "ec2": 4597, - "elasticache": 4598, - "kms": 4599, - "emr": 4600, - "ecs": 4601, - "eks": 4602, - "xray": 4603, - "elasticbeanstalk": 4604, - "appsync": 4605, - "cloudfront": 4606, - "athena": 4607, - "glue": 4608, + "redshift": 4577, + "redshift-data": 4577, + "resource-groups": 4636, + "resourcegroupstaggingapi": 4635, + "route53": 4580, + "route53domains": 4566, + "route53resolver": 4580, + "s3": 4572, + "s3control": 4627, + "s3tables": 4566, "sagemaker": 4609, "sagemaker-runtime": 4609, - "ecr": 4610, - "qldb": 4611, - "qldb-session": 4611, - "cloudtrail": 4612, - "glacier": 4613, - "batch": 4614, - "organizations": 4615, - "autoscaling": 4616, - "mediastore": 4617, - "mediastore-data": 4617, - "transfer": 4618, - "acm": 4619, - "codecommit": 4620, - "kinesisanalytics": 4621, - "kinesisanalyticsv2": 4621, - "amplify": 4622, - "application-autoscaling": 4623, - "kafka": 4624, - "apigatewaymanagementapi": 4625, + "scheduler": 4566, + "secretsmanager": 4584, + "serverlessrepo": 4631, + "servicediscovery": 4630, + "ses": 4579, + "sesv2": 4579, + "shield": 4566, + "sns": 4575, + "sqs": 4576, + "ssm": 4583, + "stepfunctions": 4585, + "sts": 4592, + "support": 4629, + "swf": 4596, "timestream": 4626, "timestream-query": 4626, "timestream-write": 4626, - "s3control": 4627, - "elbv2": 4628, - "support": 4629, - "neptune": 4594, - "docdb": 4594, - "servicediscovery": 4630, - "serverlessrepo": 4631, - "appconfig": 4632, - "appconfigdata": 4632, - "ce": 4633, - "mediaconvert": 4634, - "resourcegroupstaggingapi": 4635, - "resource-groups": 4636, - "efs": 4637, - "backup": 4638, - "lakeformation": 4639, + "transcribe": 4566, + "transfer": 4618, + "verifiedpermissions": 4566, "waf": 4640, "wafv2": 4640, - "config": 4641, - "configservice": 4641, - "mwaa": 4642, - "fis": 4643, - "meteringmarketplace": 4644, - "transcribe": 4566, - "mq": 4566, - "emr-serverless": 4566, - "appflow": 4566, - "route53domains": 4566, - "keyspaces": 4566, - "scheduler": 4566, - "ram": 4566, + "xray": 4603, } # TODO remove service port mapping above entirely diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..fed528d --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["setuptools"] +build-backend = "setuptools.build_meta" diff --git a/setup.cfg b/setup.cfg index 205dac9..35363a6 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = localstack-client -version = 2.5 +version = 2.12 url = https://github.com/localstack/localstack-python-client author = LocalStack Team author_email = info@localstack.cloud @@ -8,12 +8,12 @@ description = A lightweight Python client for LocalStack. license = Apache License 2.0 classifiers = Programming Language :: Python :: 3 - Programming Language :: Python :: 3.6 - Programming Language :: Python :: 3.7 Programming Language :: Python :: 3.8 Programming Language :: Python :: 3.9 Programming Language :: Python :: 3.10 Programming Language :: Python :: 3.11 + Programming Language :: Python :: 3.12 + Programming Language :: Python :: 3.13 License :: OSI Approved :: Apache Software License Topic :: Software Development :: Testing diff --git a/setup.py b/setup.py deleted file mode 100755 index ac42fe2..0000000 --- a/setup.py +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env python - -from setuptools import setup -setup()