@@ -35,6 +35,7 @@ dependencies = [
3535 " watchdog>=6.0.0,<7.0.0" ,
3636 " opentelemetry-api>=1.30.0,<2.0.0" ,
3737 " opentelemetry-sdk>=1.30.0,<2.0.0" ,
38+ " opentelemetry-instrumentation-threading>=0.51b0,<1.00b0" ,
3839]
3940
4041[project .urls ]
@@ -60,6 +61,8 @@ dev = [
6061 " pre-commit>=3.2.0,<4.2.0" ,
6162 " pytest>=8.0.0,<9.0.0" ,
6263 " pytest-asyncio>=0.26.0,<0.27.0" ,
64+ " pytest-cov>=4.1.0,<5.0.0" ,
65+ " pytest-xdist>=3.0.0,<4.0.0" ,
6366 " ruff>=0.4.4,<0.5.0" ,
6467]
6568docs = [
@@ -85,20 +88,70 @@ openai = [
8588otel = [
8689 " opentelemetry-exporter-otlp-proto-http>=1.30.0,<2.0.0" ,
8790]
91+ writer = [
92+ " writer-sdk>=2.2.0,<3.0.0"
93+ ]
94+
8895a2a = [
89- " a2a-sdk>=0.2.6" ,
90- " uvicorn>=0.34.2" ,
91- " httpx>=0.28.1" ,
92- " fastapi>=0.115.12" ,
93- " starlette>=0.46.2" ,
96+ " a2a-sdk[sql]>=0.2.11,<1.0.0" ,
97+ " uvicorn>=0.34.2,<1.0.0" ,
98+ " httpx>=0.28.1,<1.0.0" ,
99+ " fastapi>=0.115.12,<1.0.0" ,
100+ " starlette>=0.46.2,<1.0.0" ,
101+ ]
102+ all = [
103+ # anthropic
104+ " anthropic>=0.21.0,<1.0.0" ,
105+
106+ # dev
107+ " commitizen>=4.4.0,<5.0.0" ,
108+ " hatch>=1.0.0,<2.0.0" ,
109+ " moto>=5.1.0,<6.0.0" ,
110+ " mypy>=1.15.0,<2.0.0" ,
111+ " pre-commit>=3.2.0,<4.2.0" ,
112+ " pytest>=8.0.0,<9.0.0" ,
113+ " pytest-asyncio>=0.26.0,<0.27.0" ,
114+ " pytest-cov>=4.1.0,<5.0.0" ,
115+ " pytest-xdist>=3.0.0,<4.0.0" ,
116+ " ruff>=0.4.4,<0.5.0" ,
117+
118+ # docs
119+ " sphinx>=5.0.0,<6.0.0" ,
120+ " sphinx-rtd-theme>=1.0.0,<2.0.0" ,
121+ " sphinx-autodoc-typehints>=1.12.0,<2.0.0" ,
122+
123+ # litellm
124+ " litellm>=1.72.6,<1.73.0" ,
125+
126+ # llama
127+ " llama-api-client>=0.1.0,<1.0.0" ,
128+
129+ # mistral
130+ " mistralai>=1.8.2" ,
131+
132+ # ollama
133+ " ollama>=0.4.8,<1.0.0" ,
134+
135+ # openai
136+ " openai>=1.68.0,<2.0.0" ,
137+
138+ # otel
139+ " opentelemetry-exporter-otlp-proto-http>=1.30.0,<2.0.0" ,
140+
141+ # a2a
142+ " a2a-sdk[sql]>=0.2.11,<1.0.0" ,
143+ " uvicorn>=0.34.2,<1.0.0" ,
144+ " httpx>=0.28.1,<1.0.0" ,
145+ " fastapi>=0.115.12,<1.0.0" ,
146+ " starlette>=0.46.2,<1.0.0" ,
94147]
95148
96149[tool .hatch .version ]
97150# Tells Hatch to use your version control system (git) to determine the version.
98151source = " vcs"
99152
100153[tool .hatch .envs .hatch-static-analysis ]
101- features = [" anthropic" , " litellm" , " llamaapi" , " ollama" , " openai" , " otel" ," mistral" ]
154+ features = [" anthropic" , " litellm" , " llamaapi" , " ollama" , " openai" , " otel" , " mistral" , " writer " , " a2a " ]
102155dependencies = [
103156 " mypy>=1.15.0,<2.0.0" ,
104157 " ruff>=0.11.6,<0.12.0" ,
@@ -114,15 +167,14 @@ format-fix = [
114167]
115168lint-check = [
116169 " ruff check" ,
117- # excluding due to A2A and OTEL http exporter dependency conflict
118- " mypy -p src --exclude src/strands/multiagent"
170+ " mypy -p src"
119171]
120172lint-fix = [
121173 " ruff check --fix"
122174]
123175
124176[tool .hatch .envs .hatch-test ]
125- features = [" anthropic" , " litellm" , " llamaapi" , " ollama" , " openai" , " otel" ," mistral" ]
177+ features = [" anthropic" , " litellm" , " llamaapi" , " ollama" , " openai" , " otel" , " mistral" , " writer " , " a2a " ]
126178extra-dependencies = [
127179 " moto>=5.1.0,<6.0.0" ,
128180 " pytest>=8.0.0,<9.0.0" ,
@@ -138,35 +190,17 @@ extra-args = [
138190
139191[tool .hatch .envs .dev ]
140192dev-mode = true
141- features = [" dev" , " docs" , " anthropic" , " litellm" , " llamaapi" , " ollama" , " otel" ," mistral" ]
142-
143- [tool .hatch .envs .a2a ]
144- dev-mode = true
145- features = [" dev" , " docs" , " anthropic" , " litellm" , " llamaapi" , " ollama" , " a2a" ]
146-
147- [tool .hatch .envs .a2a .scripts ]
148- run = [
149- " pytest{env:HATCH_TEST_ARGS:} tests/multiagent/a2a {args}"
150- ]
151- run-cov = [
152- " pytest{env:HATCH_TEST_ARGS:} tests/multiagent/a2a --cov --cov-config=pyproject.toml {args}"
153- ]
154- lint-check = [
155- " ruff check" ,
156- " mypy -p src/strands/multiagent/a2a"
157- ]
193+ features = [" dev" , " docs" , " anthropic" , " litellm" , " llamaapi" , " ollama" , " otel" , " mistral" , " writer" , " a2a" ]
158194
159195[[tool .hatch .envs .hatch-test .matrix ]]
160196python = [" 3.13" , " 3.12" , " 3.11" , " 3.10" ]
161197
162198[tool .hatch .envs .hatch-test .scripts ]
163199run = [
164- # excluding due to A2A and OTEL http exporter dependency conflict
165- " pytest{env:HATCH_TEST_ARGS:} {args} --ignore=tests/multiagent/a2a"
200+ " pytest{env:HATCH_TEST_ARGS:} {args}"
166201]
167202run-cov = [
168- # excluding due to A2A and OTEL http exporter dependency conflict
169- " pytest{env:HATCH_TEST_ARGS:} --cov --cov-config=pyproject.toml {args} --ignore=tests/multiagent/a2a"
203+ " pytest{env:HATCH_TEST_ARGS:} --cov --cov-config=pyproject.toml {args}"
170204]
171205
172206cov-combine = []
@@ -193,18 +227,14 @@ test = [
193227 " hatch test --cover --cov-report html --cov-report xml {args}"
194228]
195229test-integ = [
196- " hatch test tests-integ {args}"
230+ " hatch test tests_integ {args}"
197231]
198232prepare = [
199233 " hatch fmt --linter" ,
200234 " hatch fmt --formatter" ,
201235 " hatch run test-lint" ,
202236 " hatch test --all"
203237]
204- test-a2a = [
205- # required to run manually due to A2A and OTEL http exporter dependency conflict
206- " hatch -e a2a run run {args}"
207- ]
208238
209239[tool .mypy ]
210240python_version = " 3.10"
@@ -228,7 +258,7 @@ ignore_missing_imports = true
228258
229259[tool .ruff ]
230260line-length = 120
231- include = [" examples/**/*.py" , " src/**/*.py" , " tests/**/*.py" , " tests-integ /**/*.py" ]
261+ include = [" examples/**/*.py" , " src/**/*.py" , " tests/**/*.py" , " tests_integ /**/*.py" ]
232262
233263[tool .ruff .lint ]
234264select = [
@@ -288,4 +318,4 @@ style = [
288318 [" instruction" , " " ],
289319 [" text" , " " ],
290320 [" disabled" , " fg:#858585 italic" ]
291- ]
321+ ]
0 commit comments