Skip to content

Commit 4290b22

Browse files
authored
Merge branch 'main' into patch-1
2 parents 574644b + 5c27477 commit 4290b22

File tree

44 files changed

+3046
-418
lines changed

Some content is hidden

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

44 files changed

+3046
-418
lines changed

.github/workflows/ci.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,10 @@ jobs:
105105

106106
- name: Install the project
107107
run: uv lock && uv sync --locked --all-extras --dev
108-
108+
109+
- name: Verify centralized version constraints
110+
run: python scripts/verify_constraints.py
111+
109112
- name: Check linting
110113
run: |
111114
uv run --frozen ruff check . --preview

CLAUDE.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,34 @@ libraries/
136136
- MCP (Model Context Protocol) integration
137137
- Framework-specific adapters for tool execution
138138

139+
### Centralized Dependency Version Management
140+
141+
This monorepo uses uv's `constraint-dependencies` feature to centralize version constraints:
142+
143+
**How it works:**
144+
1. **Root pyproject.toml** defines version constraints for all external packages
145+
2. **Package pyproject.toml** files declare dependencies by name only (no version)
146+
3. **uv** applies root constraints during dependency resolution
147+
148+
**Adding a new dependency:**
149+
1. Add the package name to your package's `dependencies` array
150+
2. Add the version constraint to root `pyproject.toml` `constraint-dependencies`
151+
3. Run `uv lock && uv sync`
152+
153+
**Updating a dependency version:**
154+
1. Edit the constraint in root `pyproject.toml` only
155+
2. Run `uv lock && uv sync`
156+
3. All packages automatically use the new version
157+
158+
**Internal workspace dependencies:**
159+
- Package pyproject.toml files list internal deps by name only (e.g., `microsoft-agents-a365-runtime`)
160+
- Root pyproject.toml `[tool.uv.sources]` maps them to `{ workspace = true }` for local development
161+
- At build time, `setup.py` injects exact version matches (e.g., `== 1.2.3`) for published packages
162+
- This ensures all SDK packages require the exact same version of each other
163+
164+
**CI Enforcement:** The `scripts/verify_constraints.py` script runs in CI to prevent
165+
accidental reintroduction of version constraints in package files.
166+
139167
### Test Organization
140168

141169
Tests mirror the library structure:

0 commit comments

Comments
 (0)