Skip to content

Commit c044aba

Browse files
authored
feat(sdk): add version-pinned server and model surfaces (#1048)
1 parent 52f5625 commit c044aba

29 files changed

Lines changed: 85555 additions & 78 deletions

.pre-commit-config.yaml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@ repos:
1010
- id: black
1111
language_version: python3.11
1212
args: [--line-length=100]
13-
exclude: ^src/adcp/types/generated_poc/
13+
# Version-scoped stubs are deterministically emitted and checked by
14+
# make validate-generated; reformatting them makes the checked output stale.
15+
exclude: ^(src/adcp/types/generated_poc/|src/adcp/types/v(30|31|32)\.pyi$)
1416

1517
# Ruff linting (ignoring line-length for now - black handles it)
1618
- repo: https://github.com/astral-sh/ruff-pre-commit
@@ -75,8 +77,9 @@ repos:
7577
# schemas (e.g. v3.1+ bundled core/*-response.json files exceed
7678
# 6 MB). They're canonical from the protocol release tarball, not
7779
# hand-authored — the large-file gate would block every schema
78-
# sync. Same exclusion as the file-fixer hooks above.
79-
exclude: ^schemas/
80+
# sync. Version-scoped type stubs are also generated from those schema
81+
# bundles and validated byte-for-byte by make validate-generated.
82+
exclude: ^(schemas/|src/adcp/types/v(30|31|32)\.pyi$)
8083
- id: check-merge-conflict
8184
- id: check-case-conflict
8285
- id: detect-private-key

Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ regenerate-schemas: ## Download latest schemas and skills from bundle, then rege
7979
$(PYTHON) scripts/fix_schema_refs.py
8080
@echo "Bundling schemas into package..."
8181
$(PYTHON) scripts/bundle_schemas.py
82+
$(PYTHON) scripts/generate_versioned_stubs.py
8283
@echo "Generating Pydantic models..."
8384
$(PYTHON) scripts/generate_types.py
8485
@echo "Consolidating exports..."
@@ -90,6 +91,7 @@ regenerate-schemas: ## Download latest schemas and skills from bundle, then rege
9091
validate-generated: ## Validate generated code (syntax and imports)
9192
@echo "Validating generated code..."
9293
@$(PYTHON) -m py_compile src/adcp/types/_generated.py
94+
@$(PYTHON) scripts/generate_versioned_stubs.py --check
9395
@echo "✓ Generated code validation passed"
9496

9597
pre-push: format lint typecheck-all test validate-generated ## Run all checks before pushing (format, lint, typecheck, test, validate)

pyproject.toml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,7 @@ namespaces = true
175175
[tool.setuptools.package-data]
176176
adcp = [
177177
"py.typed",
178+
"types/*.pyi",
178179
"ADCP_VERSION",
179180
"signing/pg/*.sql",
180181
"decisioning/pg/*.sql",
@@ -210,7 +211,7 @@ target-version = ["py310", "py311", "py312"]
210211
# files, rolls back). The regen script already runs black on the
211212
# consolidated _generated.py; individual generated_poc/ files don't
212213
# need formatting at commit time. Mirrors the ruff extend-exclude.
213-
extend-exclude = "/(tasks|_generated|registry)\\.py$|/types/generated_poc/"
214+
extend-exclude = "/(tasks|_generated|registry)\\.py$|/types/generated_poc/|/types/v3[012]\\.pyi$"
214215

215216
[tool.ruff]
216217
line-length = 100
@@ -220,6 +221,9 @@ extend-exclude = [
220221
"src/adcp/types/registry.py",
221222
"src/adcp/types/tasks.py",
222223
"src/adcp/types/generated_poc/",
224+
"src/adcp/types/v30.pyi",
225+
"src/adcp/types/v31.pyi",
226+
"src/adcp/types/v32.pyi",
223227
"examples/",
224228
"scripts/",
225229
]

0 commit comments

Comments
 (0)