@@ -35,6 +35,7 @@ dependencies = [
35
35
" watchdog>=6.0.0,<7.0.0" ,
36
36
" opentelemetry-api>=1.30.0,<2.0.0" ,
37
37
" opentelemetry-sdk>=1.30.0,<2.0.0" ,
38
+ " opentelemetry-instrumentation-threading>=0.51b0,<1.00b0" ,
38
39
]
39
40
40
41
[project .urls ]
@@ -60,6 +61,8 @@ dev = [
60
61
" pre-commit>=3.2.0,<4.2.0" ,
61
62
" pytest>=8.0.0,<9.0.0" ,
62
63
" 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" ,
63
66
" ruff>=0.4.4,<0.5.0" ,
64
67
]
65
68
docs = [
@@ -85,20 +88,70 @@ openai = [
85
88
otel = [
86
89
" opentelemetry-exporter-otlp-proto-http>=1.30.0,<2.0.0" ,
87
90
]
91
+ writer = [
92
+ " writer-sdk>=2.2.0,<3.0.0"
93
+ ]
94
+
88
95
a2a = [
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" ,
94
147
]
95
148
96
149
[tool .hatch .version ]
97
150
# Tells Hatch to use your version control system (git) to determine the version.
98
151
source = " vcs"
99
152
100
153
[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 " ]
102
155
dependencies = [
103
156
" mypy>=1.15.0,<2.0.0" ,
104
157
" ruff>=0.11.6,<0.12.0" ,
@@ -114,15 +167,14 @@ format-fix = [
114
167
]
115
168
lint-check = [
116
169
" 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"
119
171
]
120
172
lint-fix = [
121
173
" ruff check --fix"
122
174
]
123
175
124
176
[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 " ]
126
178
extra-dependencies = [
127
179
" moto>=5.1.0,<6.0.0" ,
128
180
" pytest>=8.0.0,<9.0.0" ,
@@ -138,35 +190,17 @@ extra-args = [
138
190
139
191
[tool .hatch .envs .dev ]
140
192
dev-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" ]
158
194
159
195
[[tool .hatch .envs .hatch-test .matrix ]]
160
196
python = [" 3.13" , " 3.12" , " 3.11" , " 3.10" ]
161
197
162
198
[tool .hatch .envs .hatch-test .scripts ]
163
199
run = [
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}"
166
201
]
167
202
run-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}"
170
204
]
171
205
172
206
cov-combine = []
@@ -193,18 +227,14 @@ test = [
193
227
" hatch test --cover --cov-report html --cov-report xml {args}"
194
228
]
195
229
test-integ = [
196
- " hatch test tests-integ {args}"
230
+ " hatch test tests_integ {args}"
197
231
]
198
232
prepare = [
199
233
" hatch fmt --linter" ,
200
234
" hatch fmt --formatter" ,
201
235
" hatch run test-lint" ,
202
236
" hatch test --all"
203
237
]
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
- ]
208
238
209
239
[tool .mypy ]
210
240
python_version = " 3.10"
@@ -228,7 +258,7 @@ ignore_missing_imports = true
228
258
229
259
[tool .ruff ]
230
260
line-length = 120
231
- include = [" examples/**/*.py" , " src/**/*.py" , " tests/**/*.py" , " tests-integ /**/*.py" ]
261
+ include = [" examples/**/*.py" , " src/**/*.py" , " tests/**/*.py" , " tests_integ /**/*.py" ]
232
262
233
263
[tool .ruff .lint ]
234
264
select = [
@@ -288,4 +318,4 @@ style = [
288
318
[" instruction" , " " ],
289
319
[" text" , " " ],
290
320
[" disabled" , " fg:#858585 italic" ]
291
- ]
321
+ ]
0 commit comments