Skip to content

feat: bind Python deployment management to generated contracts - #710

Closed
0xcadams wants to merge 19 commits into
mainfrom
0xcadams/deployment-sdk-python
Closed

0xcadams wants to merge 19 commits into
mainfrom
0xcadams/deployment-sdk-python

Conversation

@0xcadams

@0xcadams 0xcadams commented Nov 13, 2026 •

Copy link
Copy Markdown
Member

What

Give Python backend applications the same scoped deployment and publisher management operations as TypeScript, with generated Pydantic inputs/results and native signing. Complete approved Kubernetes provider hints in registered-key service selection.

Why

Python callers need original-key recovery, explicit ETags, typed HTTP problems, and independent project selection without another authentication or HTTP engine. Stock Hey API Python 0.0.24 emits grouped HTTP methods without path/body/header arguments; shipping or patching those methods would create an unusable public API. Native already has the generated operations and error boundary.

Changes

  • Generate only the canonical nine-operation models, expose them through tnl.models, and bind async management methods to the existing native Go client. Return SavedDeployment(data, etag) and retain HTTP problem status without retrying stale writes.
  • Keep actual response ETags and original JSON for strict generated-model validation, and join native calls through repeated cancellation while retaining racing failures.
  • Flatten publisher enrollment/status schemas using references to their existing property authorities, preserving fields and eliminating generated Any aliases. Regenerate Go/TS/Python output.
  • Isolate generator dependencies with TypeScript 6 in a private tooling workspace; application checks remain on TypeScript 7. Format Python output with locked Ruff and keep style-only exceptions generated-only.
  • Carry approved Kubernetes acquisition hints through transactional run selection and into registered-key connector metadata.
  • Add generated input/round-trip, request intent, ETag, pagination, publisher operation, HTTP error, strict response, cancellation, and wheel-import assertions.

task py:check passed formatting, Ruff, strict mypy, and all 244 routine tests. Full generation and the whole control-client routine package passed. Selected API/connector/CLI tests passed before the last control-client-only edits. Packaging, real Python/control traffic, full Go/JS repetition, and complete stack CI remain for the requested backwards qualification pass. Publication authorization, deployment URL ownership, and app-led publishing remain unfinished.

Start the new deployment DevEx stack from main with portable service facts and a typed local PostgreSQL client. Reuse ordinary driver factories and exact native target discovery without reading a control credential or starting a tunnel.

Keep remote deployment APIs, publication URLs, collections, and customer provisioning out of this first slice.
@0xcadams
0xcadams added this pull request to stack #699 November 13, 2026 15:07
@0xcadams
0xcadams removed this pull request from stack #699 November 13, 2026 18:54
@0xcadams
0xcadams added this pull request to stack #721 November 13, 2026 18:54
@0xcadams
0xcadams removed this pull request from stack #721 November 13, 2026 18:55
@0xcadams
0xcadams added this pull request to stack #722 November 13, 2026 18:56
@0xcadams
0xcadams removed this pull request from stack #722 November 13, 2026 18:56
@0xcadams
0xcadams force-pushed the 0xcadams/deployment-hostname-labels branch from 7cb1879 to 0549fd2 Compare November 13, 2026 19:18
Base automatically changed from 0xcadams/deployment-hostname-labels to main November 13, 2026 19:29
@0xcadams

Copy link
Copy Markdown
Member Author

Superseded by #728, which includes generated Python management models and native signing alongside the project-bound deployment clients. Keeping this branch intact for reference.

@0xcadams 0xcadams closed this Nov 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant