Skip to content

Commit cb5560d

Browse files
Merge branch 'strands-agents:main' into main
2 parents 2676b19 + 4167c5c commit cb5560d

File tree

147 files changed

+12341
-4910
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

147 files changed

+12341
-4910
lines changed

.github/workflows/integration-test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,4 +69,4 @@ jobs:
6969
AWS_REGION_NAME: us-east-1 # Needed for LiteLLM
7070
id: tests
7171
run: |
72-
hatch test tests-integ
72+
hatch test tests_integ

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,5 @@ __pycache__*
88
.ruff_cache
99
*.bak
1010
.vscode
11-
dist
11+
dist
12+
repl_state

pyproject.toml

Lines changed: 67 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -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
]
6568
docs = [
@@ -85,20 +88,70 @@ openai = [
8588
otel = [
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+
8895
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",
94147
]
95148

96149
[tool.hatch.version]
97150
# Tells Hatch to use your version control system (git) to determine the version.
98151
source = "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"]
102155
dependencies = [
103156
"mypy>=1.15.0,<2.0.0",
104157
"ruff>=0.11.6,<0.12.0",
@@ -114,15 +167,14 @@ format-fix = [
114167
]
115168
lint-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
]
120172
lint-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"]
126178
extra-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]
140192
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"]
158194

159195
[[tool.hatch.envs.hatch-test.matrix]]
160196
python = ["3.13", "3.12", "3.11", "3.10"]
161197

162198
[tool.hatch.envs.hatch-test.scripts]
163199
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}"
166201
]
167202
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}"
170204
]
171205

172206
cov-combine = []
@@ -193,18 +227,14 @@ test = [
193227
"hatch test --cover --cov-report html --cov-report xml {args}"
194228
]
195229
test-integ = [
196-
"hatch test tests-integ {args}"
230+
"hatch test tests_integ {args}"
197231
]
198232
prepare = [
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]
210240
python_version = "3.10"
@@ -228,7 +258,7 @@ ignore_missing_imports = true
228258

229259
[tool.ruff]
230260
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"]
232262

233263
[tool.ruff.lint]
234264
select = [
@@ -288,4 +318,4 @@ style = [
288318
["instruction", ""],
289319
["text", ""],
290320
["disabled", "fg:#858585 italic"]
291-
]
321+
]

src/strands/__init__.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
"""A framework for building, deploying, and managing AI agents."""
22

3-
from . import agent, event_loop, models, telemetry, types
3+
from . import agent, models, telemetry, types
44
from .agent.agent import Agent
55
from .tools.decorator import tool
6-
from .tools.thread_pool_executor import ThreadPoolExecutorWrapper
76

8-
__all__ = ["Agent", "ThreadPoolExecutorWrapper", "agent", "event_loop", "models", "tool", "types", "telemetry"]
7+
__all__ = ["Agent", "agent", "models", "tool", "types", "telemetry"]

0 commit comments

Comments
 (0)