Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
# Ruff version.
rev: v0.12.7
rev: v0.12.8
hooks:
- id: ruff
args: [--fix, --exit-non-zero-on-fix]
Expand All @@ -18,7 +18,7 @@ repos:
additional_dependencies: ['botocore-stubs', 'rolo']

- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
rev: v6.0.0
hooks:
- id: end-of-file-fixer
- id: trailing-whitespace
Expand Down
14 changes: 14 additions & 0 deletions localstack-core/localstack/testing/pytest/fixtures.py
Original file line number Diff line number Diff line change
Expand Up @@ -2753,3 +2753,17 @@ def _delete_log_group():
def patch_default_encoder(request, monkeypatch):
backend = request.param
monkeypatch.setattr(config, "STATE_SERIALIZATION_BACKEND", backend)


@pytest.fixture(scope="session")
def localstack_sdk_aws_client():
"""
Returns a client that is used to interact with the LocalStack's internal endpoints.
"""
from localstack.sdk.aws.client import AWSClient

def _wrapper(host: str | None = None, **kwargs) -> AWSClient:
host = host or config.internal_service_url()
return AWSClient(host=host, **kwargs)

return _wrapper
1 change: 1 addition & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,7 @@ test = [
"aws-cdk-lib>=2.88.0",
"websocket-client>=1.7.0",
"localstack-snapshot>=0.1.1",
"localstack-sdk-python"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

issue: This effectively implements a circular dependency:

  • The SDK is directly generated from the OpenAPI specs.
  • The OpenAPI specs are released with every release of LocalStack Pro.
  • The SDK is defined as a dependency of LocalStack Pro's test dependencies here.

In my opinion, this could make it very much more tedious to implement changes when changing the API endpoint or adding new ones.

But what exactly is the motivation behind using the SDK here directly?

  • Is it to save some lines of code? Maybe we should then restructure the code or the API to make sure the API is very easily usable.
  • Or is it to verify that the SDK works? I think that should be verified directly in the repo of the SDK. If you want to do regular integration tests, you could run a scheduled integration test pipeline there, ensuring that the latest SDK still integrates well with latest?

]

# for developing localstack
Expand Down
8 changes: 4 additions & 4 deletions requirements-base-runtime.txt
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,13 @@ certifi==2025.8.3
# via requests
cffi==1.17.1
# via cryptography
charset-normalizer==3.4.2
charset-normalizer==3.4.3
# via requests
click==8.2.1
# via localstack-core (pyproject.toml)
constantly==23.10.4
# via localstack-twisted
cryptography==45.0.5
cryptography==45.0.6
# via
# localstack-core (pyproject.toml)
# pyopenssl
Expand Down Expand Up @@ -98,7 +98,7 @@ lazy-object-proxy==1.11.0
# via openapi-spec-validator
localstack-twisted==24.3.0
# via localstack-core (pyproject.toml)
markdown-it-py==3.0.0
markdown-it-py==4.0.0
# via rich
markupsafe==3.0.2
# via werkzeug
Expand Down Expand Up @@ -168,7 +168,7 @@ rich==14.1.0
# via localstack-core (pyproject.toml)
rolo==0.7.6
# via localstack-core (pyproject.toml)
rpds-py==0.26.0
rpds-py==0.27.0
# via
# jsonschema
# referencing
Expand Down
6 changes: 3 additions & 3 deletions requirements-basic.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@ certifi==2025.8.3
# via requests
cffi==1.17.1
# via cryptography
charset-normalizer==3.4.2
charset-normalizer==3.4.3
# via requests
click==8.2.1
# via localstack-core (pyproject.toml)
cryptography==45.0.5
cryptography==45.0.6
# via localstack-core (pyproject.toml)
dill==0.3.6
# via localstack-core (pyproject.toml)
Expand All @@ -28,7 +28,7 @@ idna==3.10
# via requests
jsonpickle==4.1.1
# via localstack-core (pyproject.toml)
markdown-it-py==3.0.0
markdown-it-py==4.0.0
# via rich
mdurl==0.1.2
# via markdown-it-py
Expand Down
41 changes: 25 additions & 16 deletions requirements-dev.txt
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,9 @@ aws-cdk-asset-awscli-v1==2.2.242
# via aws-cdk-lib
aws-cdk-asset-node-proxy-agent-v6==2.1.0
# via aws-cdk-lib
aws-cdk-cloud-assembly-schema==45.2.0
aws-cdk-cloud-assembly-schema==48.3.0
# via aws-cdk-lib
aws-cdk-lib==2.208.0
aws-cdk-lib==2.210.0
# via localstack-core
aws-sam-translator==1.99.0
# via
Expand Down Expand Up @@ -80,9 +80,9 @@ cffi==1.17.1
# via cryptography
cfgv==3.4.0
# via pre-commit
cfn-lint==1.38.1
cfn-lint==1.38.2
# via moto-ext
charset-normalizer==3.4.2
charset-normalizer==3.4.3
# via requests
click==8.2.1
# via
Expand All @@ -94,15 +94,15 @@ constantly==23.10.4
# via localstack-twisted
constructs==10.4.2
# via aws-cdk-lib
coverage==7.10.2
coverage==7.10.3
# via
# coveralls
# localstack-core
coveralls==4.0.1
# via localstack-core (pyproject.toml)
crontab==1.0.5
# via localstack-core
cryptography==45.0.5
cryptography==45.0.6
# via
# joserfc
# localstack-core
Expand All @@ -113,7 +113,7 @@ cython==3.1.2
# via localstack-core (pyproject.toml)
decorator==5.2.1
# via jsonpath-rw
deepdiff==8.5.0
deepdiff==8.6.0
# via
# localstack-core
# localstack-snapshot
Expand Down Expand Up @@ -168,7 +168,7 @@ hyperframe==6.1.0
# via h2
hyperlink==21.0.0
# via localstack-twisted
identify==2.6.12
identify==2.6.13
# via pre-commit
idna==3.10
# via
Expand Down Expand Up @@ -240,11 +240,15 @@ kclpy-ext==3.0.5
# via localstack-core
lazy-object-proxy==1.11.0
# via openapi-spec-validator
localstack-sdk-generated==4.7.0
# via localstack-sdk-python
localstack-sdk-python==4.7.0
# via localstack-core
localstack-snapshot==0.3.0
# via localstack-core
localstack-twisted==24.3.0
# via localstack-core
markdown-it-py==3.0.0
markdown-it-py==4.0.0
# via rich
markupsafe==3.0.2
# via
Expand Down Expand Up @@ -317,7 +321,7 @@ ply==3.11
# jsonpath-ng
# jsonpath-rw
# pandoc
pre-commit==4.2.0
pre-commit==4.3.0
# via localstack-core (pyproject.toml)
priority==1.3.0
# via
Expand All @@ -342,14 +346,16 @@ pyasn1==0.6.1
pycparser==2.22
# via cffi
pydantic==2.11.7
# via aws-sam-translator
# via
# aws-sam-translator
# localstack-sdk-generated
pydantic-core==2.33.2
# via pydantic
pygments==2.19.2
# via
# pytest
# rich
pymongo==4.13.2
pymongo==4.14.0
# via localstack-core
pyopenssl==25.1.0
# via
Expand Down Expand Up @@ -379,6 +385,7 @@ python-dateutil==2.9.0.post0
# via
# botocore
# jsii
# localstack-sdk-generated
# moto-ext
# opensearch-py
python-dotenv==1.1.1
Expand Down Expand Up @@ -419,7 +426,7 @@ requests==2.32.4
# rolo
requests-aws4auth==1.3.1
# via localstack-core
responses==0.25.7
responses==0.25.8
# via moto-ext
rfc3339-validator==0.1.4
# via openapi-schema-validator
Expand All @@ -429,15 +436,15 @@ rich==14.1.0
# localstack-core (pyproject.toml)
rolo==0.7.6
# via localstack-core
rpds-py==0.26.0
rpds-py==0.27.0
# via
# jsonschema
# referencing
rsa==4.7.2
# via awscli
rstr==3.2.2
# via localstack-core (pyproject.toml)
ruff==0.12.7
ruff==0.12.8
# via localstack-core (pyproject.toml)
s3transfer==0.13.1
# via
Expand Down Expand Up @@ -476,6 +483,7 @@ typing-extensions==4.14.1
# cattrs
# cfn-lint
# jsii
# localstack-sdk-generated
# localstack-twisted
# mypy
# pydantic
Expand All @@ -491,10 +499,11 @@ urllib3==2.5.0
# botocore
# docker
# localstack-core
# localstack-sdk-generated
# opensearch-py
# requests
# responses
virtualenv==20.33.0
virtualenv==20.33.1
# via pre-commit
websocket-client==1.8.0
# via localstack-core
Expand Down
14 changes: 7 additions & 7 deletions requirements-runtime.txt
Original file line number Diff line number Diff line change
Expand Up @@ -62,9 +62,9 @@ certifi==2025.8.3
# requests
cffi==1.17.1
# via cryptography
cfn-lint==1.38.1
cfn-lint==1.38.2
# via moto-ext
charset-normalizer==3.4.2
charset-normalizer==3.4.3
# via requests
click==8.2.1
# via
Expand All @@ -76,7 +76,7 @@ constantly==23.10.4
# via localstack-twisted
crontab==1.0.5
# via localstack-core (pyproject.toml)
cryptography==45.0.5
cryptography==45.0.6
# via
# joserfc
# localstack-core
Expand Down Expand Up @@ -182,7 +182,7 @@ lazy-object-proxy==1.11.0
# via openapi-spec-validator
localstack-twisted==24.3.0
# via localstack-core
markdown-it-py==3.0.0
markdown-it-py==4.0.0
# via rich
markupsafe==3.0.2
# via
Expand Down Expand Up @@ -249,7 +249,7 @@ pydantic-core==2.33.2
# via pydantic
pygments==2.19.2
# via rich
pymongo==4.13.2
pymongo==4.14.0
# via localstack-core (pyproject.toml)
pyopenssl==25.1.0
# via
Expand Down Expand Up @@ -300,7 +300,7 @@ requests==2.32.4
# rolo
requests-aws4auth==1.3.1
# via localstack-core
responses==0.25.7
responses==0.25.8
# via moto-ext
rfc3339-validator==0.1.4
# via openapi-schema-validator
Expand All @@ -310,7 +310,7 @@ rich==14.1.0
# localstack-core (pyproject.toml)
rolo==0.7.6
# via localstack-core
rpds-py==0.26.0
rpds-py==0.27.0
# via
# jsonschema
# referencing
Expand Down
Loading
Loading