@@ -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.45" ,
5755 # pinned / updated by ASF update action
5856 " botocore==1.40.45" ,
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,34 +83,36 @@ runtime = [
8083 # pinned / updated by ASF update action
8184 " awscli==1.42.45" ,
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 # TODO revert pin once moto upgrade is completed
97100 # "moto-ext[all]>=5.1.12.post22",
98101 " moto-ext[all]==5.1.14.post7" ,
99102 " opensearch-py>=2.4.1" ,
103+ " pydantic>=2.11.9" ,
100104 " pymongo>=4.2.0" ,
101105 " pyopenssl>=23.0.0" ,
106+ " responses>=0.25.8" ,
102107]
103108
104109# for running tests and coverage analysis
105110test = [
106111 # runtime dependencies are required for running the tests
107112 " localstack-core[runtime]" ,
108113 " coverage[toml]>=5.5" ,
109- " deepdiff>=6.4.1" ,
110114 " httpx[http2]>=0.25" ,
115+ " json5>=0.12.1" ,
111116 " pluggy>=1.3.0" ,
112117 " pytest>=7.4.2" ,
113118 " pytest-split>=0.8.0" ,
@@ -124,6 +129,7 @@ dev = [
124129 # test dependencies are required for developing localstack
125130 " localstack-core[test]" ,
126131 " coveralls>=3.3.1" ,
132+ " deptry>=0.13.0" ,
127133 " Cython" ,
128134 " networkx>=2.8.4" ,
129135 " openapi-spec-validator>=0.7.1" ,
@@ -204,6 +210,34 @@ exclude = [
204210"localstack-core/localstack/utils/**" = " py310" # imported by CLI tests
205211"localstack-core/localstack/testing/pytest/**" = " py310" # imported by CLI tests
206212
213+ [tool .deptry ]
214+ known_first_party = [
215+ " vosk" , # managed by localstack package manager
216+ " debugpy" , # managed by localstack package manager
217+ ]
218+ extend_exclude = [
219+ " scripts/**" , # dependencies not handled by pyproject.toml
220+ " localstack-core/localstack/testing/**" , # utilities for testing
221+ " localstack-core/localstack/aws/mocking.py" , # not used at runtime
222+ " localstack-core/localstack/aws/scaffold.py" , # not used at runtime
223+ " localstack-core/localstack/dev/**" , # internal dev tooling
224+ " localstack-core/localstack/services/stepfunctions/asl/antlr/runtime/**" # generated code
225+ ]
226+ pep621_dev_dependency_groups = [" dev" , " typehint" , " test" ]
227+
228+ [tool .deptry .package_module_name_map ]
229+ "localstack-core" = [" localstack" ]
230+
231+ [tool .deptry .per_rule_ignores ]
232+ DEP001 = [
233+ " com" , # This appears in jpype code and imports actual java packages like com.fasterxml.jackson.databind
234+ " stevedore" , # used for CLI plugin debugging - TODO move this debugging CLI into plux
235+ ]
236+ DEP002 = [
237+ " awscli" , # necessary for python init scripts - TODO deprecate python init scripts and remove this
238+ " awscrt" , # defined to ignore a specific version - TODO evaluate and clean up
239+ ]
240+
207241[tool .ruff .lint ]
208242ignore = [
209243 " B007" , # TODO Loop control variable x not used within loop body
@@ -221,8 +255,8 @@ ignore = [
221255]
222256select = [" B" , " C" , " E" , " F" , " I" , " W" , " T" , " B9" , " G" , " UP" ]
223257extend-safe-fixes = [
224- " UP006" , # unsafe-fix for py39
225- " UP035" , # unsafe-fix for py39
258+ " UP006" , # unsafe-fix for py39
259+ " UP035" , # unsafe-fix for py39
226260]
227261
228262# The rules below fill fix the code in a way that leaves multiple unused imports.
0 commit comments