From 60c174aad83e05892ecd6fa283ce709ea9f4096b Mon Sep 17 00:00:00 2001 From: Ben Simon Hartung <42031100+bentsku@users.noreply.github.com> Date: Mon, 9 Sep 2024 16:04:45 +0300 Subject: [PATCH 1/9] add endpoint configuration for Pinpoint (#53) --- CHANGELOG.md | 1 + localstack_client/config.py | 1 + setup.cfg | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3e305ab..5e1523e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ # LocalStack Python Client Change Log +* 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/localstack_client/config.py b/localstack_client/config.py index 1e9073f..76ab1b5 100644 --- a/localstack_client/config.py +++ b/localstack_client/config.py @@ -122,6 +122,7 @@ "keyspaces": 4566, "scheduler": 4566, "ram": 4566, + "pinpoint": 4566, } # TODO remove service port mapping above entirely diff --git a/setup.cfg b/setup.cfg index 205dac9..1a12009 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = localstack-client -version = 2.5 +version = 2.6 url = https://github.com/localstack/localstack-python-client author = LocalStack Team author_email = info@localstack.cloud From 5b8d55fae2bb7730115eeb60062397e0a97a8393 Mon Sep 17 00:00:00 2001 From: Harsh Mishra Date: Tue, 8 Oct 2024 16:46:08 +0530 Subject: [PATCH 2/9] add endpoint entry for EventBridge pipes (#54) --- CHANGELOG.md | 1 + localstack_client/config.py | 1 + setup.cfg | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5e1523e..08de6ca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ # LocalStack Python Client Change Log +* 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 diff --git a/localstack_client/config.py b/localstack_client/config.py index 76ab1b5..8ee2c03 100644 --- a/localstack_client/config.py +++ b/localstack_client/config.py @@ -123,6 +123,7 @@ "scheduler": 4566, "ram": 4566, "pinpoint": 4566, + "pipes": 4566, } # TODO remove service port mapping above entirely diff --git a/setup.cfg b/setup.cfg index 1a12009..aa02212 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = localstack-client -version = 2.6 +version = 2.7 url = https://github.com/localstack/localstack-python-client author = LocalStack Team author_email = info@localstack.cloud From f1c2318dbc83d0452286c9764502db894b9333d2 Mon Sep 17 00:00:00 2001 From: Mathieu Cloutier <79954947+cloutierMat@users.noreply.github.com> Date: Wed, 20 Nov 2024 10:47:48 -0700 Subject: [PATCH 3/9] update python version (#55) --- .github/workflows/ci.yml | 5 ++++- CHANGELOG.md | 1 + setup.cfg | 6 +++--- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d48bbf3..5b894e9 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 diff --git a/CHANGELOG.md b/CHANGELOG.md index 08de6ca..6476dce 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ # LocalStack Python Client Change Log +* 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 diff --git a/setup.cfg b/setup.cfg index aa02212..4b18765 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = localstack-client -version = 2.7 +version = 2.8 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 From 39fa060d2ba570fbae47d9d4302245c7786117c1 Mon Sep 17 00:00:00 2001 From: Viren Nadkarni Date: Wed, 2 Apr 2025 17:14:35 +0530 Subject: [PATCH 4/9] Update endpoint services (#56) --- CHANGELOG.md | 1 + localstack_client/config.py | 196 +++++++++++++++++++----------------- setup.cfg | 2 +- 3 files changed, 108 insertions(+), 91 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6476dce..99b46bd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ # LocalStack Python Client Change Log +* 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 diff --git a/localstack_client/config.py b/localstack_client/config.py index 8ee2c03..0faa62a 100644 --- a/localstack_client/config.py +++ b/localstack_client/config.py @@ -13,117 +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, + "bedrock-runtime": 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, "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, "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, + "textract": 4566, "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, - "pinpoint": 4566, - "pipes": 4566, + "xray": 4603, } # TODO remove service port mapping above entirely diff --git a/setup.cfg b/setup.cfg index 4b18765..1104dab 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = localstack-client -version = 2.8 +version = 2.9 url = https://github.com/localstack/localstack-python-client author = LocalStack Team author_email = info@localstack.cloud From 041fdfb02d62f5a5fbabe313f80b6d94ec65c811 Mon Sep 17 00:00:00 2001 From: Viren Nadkarni Date: Wed, 2 Apr 2025 17:37:14 +0530 Subject: [PATCH 5/9] Remove unsupported endpoint overrides (#57) --- CHANGELOG.md | 1 + localstack_client/config.py | 2 -- setup.cfg | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 99b46bd..eac2216 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ # LocalStack Python Client Change Log +* 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 diff --git a/localstack_client/config.py b/localstack_client/config.py index 0faa62a..10ba740 100644 --- a/localstack_client/config.py +++ b/localstack_client/config.py @@ -32,7 +32,6 @@ "backup": 4638, "batch": 4614, "bedrock": 4566, - "bedrock-runtime": 4566, "ce": 4633, "cloudcontrol": 4566, "cloudformation": 4581, @@ -130,7 +129,6 @@ "sts": 4592, "support": 4629, "swf": 4596, - "textract": 4566, "timestream": 4626, "timestream-query": 4626, "timestream-write": 4626, diff --git a/setup.cfg b/setup.cfg index 1104dab..412f97f 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = localstack-client -version = 2.9 +version = 2.10 url = https://github.com/localstack/localstack-python-client author = LocalStack Team author_email = info@localstack.cloud From 502a8e87985c83ad544d39808c7714175ef178eb Mon Sep 17 00:00:00 2001 From: Przemek Denkiewicz <67517453+hovaesco@users.noreply.github.com> Date: Fri, 9 Jan 2026 11:06:13 +0100 Subject: [PATCH 6/9] Add S3 tables to list of supported services (#58) * Add S3 tables to list of supported services * bump version and add changelog entry --- CHANGELOG.md | 1 + localstack_client/config.py | 1 + setup.cfg | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index eac2216..36a898b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ # LocalStack Python Client Change Log +* 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 diff --git a/localstack_client/config.py b/localstack_client/config.py index 10ba740..e4482ad 100644 --- a/localstack_client/config.py +++ b/localstack_client/config.py @@ -113,6 +113,7 @@ "route53resolver": 4580, "s3": 4572, "s3control": 4627, + "s3tables": 4566, "sagemaker": 4609, "sagemaker-runtime": 4609, "scheduler": 4566, diff --git a/setup.cfg b/setup.cfg index 412f97f..59d206d 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = localstack-client -version = 2.10 +version = 2.11 url = https://github.com/localstack/localstack-python-client author = LocalStack Team author_email = info@localstack.cloud From 29cba5e14960fbe73023f5998edc2173e471704b Mon Sep 17 00:00:00 2001 From: Alex Rashed <2796604+alexrashed@users.noreply.github.com> Date: Wed, 25 Feb 2026 10:22:24 +0100 Subject: [PATCH 7/9] update LocalStack links in README.md (#59) Updated LocalStack links to point to the official website. --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 From 4bee152cb72167409c8a8473b081189c9d94faf4 Mon Sep 17 00:00:00 2001 From: Yoshiaki Yoshida Date: Tue, 21 Jul 2026 18:47:27 +0900 Subject: [PATCH 8/9] feat: add endpoint config for Amazon Aurora DSQL (#60) --- CHANGELOG.md | 1 + localstack_client/config.py | 1 + setup.cfg | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 36a898b..8e60cab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ # 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 diff --git a/localstack_client/config.py b/localstack_client/config.py index e4482ad..4e5a365 100644 --- a/localstack_client/config.py +++ b/localstack_client/config.py @@ -49,6 +49,7 @@ "config": 4641, "configservice": 4641, "docdb": 4594, + "dsql": 4566, "dynamodb": 4569, "dynamodbstreams": 4570, "ec2": 4597, diff --git a/setup.cfg b/setup.cfg index 59d206d..35363a6 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = localstack-client -version = 2.11 +version = 2.12 url = https://github.com/localstack/localstack-python-client author = LocalStack Team author_email = info@localstack.cloud From 75fd3274bce2927b8c4675d69b014a3e56e7f704 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cristian=20Pallar=C3=A9s?= Date: Tue, 21 Jul 2026 12:32:08 +0200 Subject: [PATCH 9/9] fix: use python -m build in make publish, drop setup.py (#61) PyPI now rejects sdist filenames from the legacy `setup.py sdist` path (hyphenated) since it enforces PEP 625 normalized names (underscore). Switch to `python -m build`, which also produces a wheel. setup.py was just a `setup()` shim; replaced with a minimal pyproject.toml declaring the setuptools build backend. --- .github/workflows/ci.yml | 2 ++ Makefile | 5 ++++- pyproject.toml | 3 +++ setup.py | 4 ---- 4 files changed, 9 insertions(+), 5 deletions(-) create mode 100644 pyproject.toml delete mode 100755 setup.py diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5b894e9..cdcd043 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -40,3 +40,5 @@ jobs: - name: Test run: make test + env: + LOCALSTACK_AUTH_TOKEN: ${{ secrets.LOCALSTACK_AUTH_TOKEN }} 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/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.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()