@@ -12,7 +12,6 @@ description = "The core library and runtime of LocalStack"
1212license = " Apache-2.0"
1313requires-python = " >=3.10"
1414dependencies = [
15- " build" ,
1615 " click>=7.1" ,
1716 " cachetools>=5.0" ,
1817 " cryptography" ,
@@ -26,7 +25,6 @@ dependencies = [
2625 " rich>=12.3.0" ,
2726 " requests>=2.20.0" ,
2827 " semver>=2.10" ,
29- " tailer>=0.4.1" ,
3028]
3129dynamic = [" version" ]
3230classifiers = [
@@ -56,17 +54,22 @@ base-runtime = [
5654 " boto3==1.40.51" ,
5755 # pinned / updated by ASF update action
5856 " botocore==1.40.51" ,
57+ # transitive dependency of botocore, added to avoid specific version
5958 " awscrt>=0.13.14,!=0.27.1" ,
6059 " cbor2>=5.5.0" ,
6160 " dnspython>=1.16.0" ,
6261 " docker>=6.1.1" ,
6362 " jsonpatch>=1.24" ,
63+ " jsonpointer>=3.0.0" ,
64+ " jsonschema>=4.25.1" ,
6465 " hypercorn>=0.14.4" ,
6566 " localstack-twisted>=23.0" ,
6667 " openapi-core>=0.19.2" ,
6768 " pyopenssl>=23.0.0" ,
69+ " python-dateutil>=2.9.0" ,
6870 " readerwriterlock>=1.0.7" ,
6971 " requests-aws4auth>=1.0" ,
72+ " typing-extensions>=4.15.0" ,
7073 # explicitly set urllib3 to force its usage / ensure compatibility
7174 " urllib3>=2.0.7" ,
7275 " Werkzeug>=3.1.3" ,
@@ -80,32 +83,34 @@ runtime = [
8083 # pinned / updated by ASF update action
8184 " awscli==1.42.51" ,
8285 " airspeed-ext>=0.6.3" ,
83- # version that has a built wheel
84- " kclpy-ext>=3.0.0" ,
8586 # antlr4-python3-runtime: exact pin because antlr4 runtime is tightly coupled to the generated parser code
8687 " antlr4-python3-runtime==4.13.2" ,
8788 " apispec>=5.1.1" ,
8889 " aws-sam-translator>=1.15.1" ,
8990 " crontab>=0.22.6" ,
9091 " cryptography>=41.0.5" ,
92+ " jinja2>=3.1.6" ,
9193 # allow Python programs full access to Java class libraries. Used for stepfunctions jsonata support
9294 " jpype1>=1.6.0" ,
93- " json5>=0.9.11" ,
9495 " jsonpath-ng>=1.6.1" ,
9596 " jsonpath-rw>=1.4.0" ,
97+ # version that has a built wheel
98+ " kclpy-ext>=3.0.0" ,
9699 " moto-ext[all]>=5.1.12.post22" ,
97100 " opensearch-py>=2.4.1" ,
101+ " pydantic>=2.11.9" ,
98102 " pymongo>=4.2.0" ,
99103 " pyopenssl>=23.0.0" ,
104+ " responses>=0.25.8" ,
100105]
101106
102107# for running tests and coverage analysis
103108test = [
104109 # runtime dependencies are required for running the tests
105110 " localstack-core[runtime]" ,
106111 " coverage[toml]>=5.5" ,
107- " deepdiff>=6.4.1" ,
108112 " httpx[http2]>=0.25" ,
113+ " json5>=0.12.1" ,
109114 " pluggy>=1.3.0" ,
110115 " pytest>=7.4.2" ,
111116 " pytest-split>=0.8.0" ,
@@ -122,6 +127,7 @@ dev = [
122127 # test dependencies are required for developing localstack
123128 " localstack-core[test]" ,
124129 " coveralls>=3.3.1" ,
130+ " deptry>=0.13.0" ,
125131 " Cython" ,
126132 " networkx>=2.8.4" ,
127133 " openapi-spec-validator>=0.7.1" ,
@@ -202,6 +208,34 @@ exclude = [
202208"localstack-core/localstack/utils/**" = " py310" # imported by CLI tests
203209"localstack-core/localstack/testing/pytest/**" = " py310" # imported by CLI tests
204210
211+ [tool .deptry ]
212+ known_first_party = [
213+ " vosk" , # managed by localstack package manager
214+ " debugpy" , # managed by localstack package manager
215+ ]
216+ extend_exclude = [
217+ " scripts/**" , # dependencies not handled by pyproject.toml
218+ " localstack-core/localstack/testing/**" , # utilities for testing
219+ " localstack-core/localstack/aws/mocking.py" , # not used at runtime
220+ " localstack-core/localstack/aws/scaffold.py" , # not used at runtime
221+ " localstack-core/localstack/dev/**" , # internal dev tooling
222+ " localstack-core/localstack/services/stepfunctions/asl/antlr/runtime/**" # generated code
223+ ]
224+ pep621_dev_dependency_groups = [" dev" , " typehint" , " test" ]
225+
226+ [tool .deptry .package_module_name_map ]
227+ "localstack-core" = [" localstack" ]
228+
229+ [tool .deptry .per_rule_ignores ]
230+ DEP001 = [
231+ " com" , # This appears in jpype code and imports actual java packages like com.fasterxml.jackson.databind
232+ " stevedore" , # used for CLI plugin debugging - TODO move this debugging CLI into plux
233+ ]
234+ DEP002 = [
235+ " awscli" , # necessary for python init scripts - TODO deprecate python init scripts and remove this
236+ " awscrt" , # defined to ignore a specific version - TODO evaluate and clean up
237+ ]
238+
205239[tool .ruff .lint ]
206240ignore = [
207241 " B007" , # TODO Loop control variable x not used within loop body
@@ -219,8 +253,8 @@ ignore = [
219253]
220254select = [" B" , " C" , " E" , " F" , " I" , " W" , " T" , " B9" , " G" , " UP" ]
221255extend-safe-fixes = [
222- " UP006" , # unsafe-fix for py39
223- " UP035" , # unsafe-fix for py39
256+ " UP006" , # unsafe-fix for py39
257+ " UP035" , # unsafe-fix for py39
224258]
225259
226260# The rules below fill fix the code in a way that leaves multiple unused imports.
0 commit comments