Skip to content

[Python][Table] Port and validate the transactional Table client API #97

Description

@code-tc

Outcome

Restore first-class transactional Table authoring and use in the v2 Python client, preserving the v1 public behavior while targeting the canonical v2 collection routes.

Source of truth

Issue sequence

Dependency and concurrency plan

  1. [Python][Table P1] Port schema, serialization, bounds, and model helpers #98 depends on Specify v1 transactional Table parity and port map tc-collection#4. Inventory and isolated helper work may start early, but it cannot close before the backend route matrix is reconciled.
  2. [Python][Table P2] Port fluent Table operations and writable views #100 follows [Python][Table P1] Port schema, serialization, bounds, and model helpers #98 and also consumes Specify v1 transactional Table parity and port map tc-collection#4.
  3. [Python][Table P3] Validate deferred, HTTP, and PyO3 Table behavior #99 test design, fixtures, and deferred-plan validation may begin concurrently with backend implementation. Its live tests and closure require [Python][Table P1] Port schema, serialization, bounds, and model helpers #98, [Python][Table P2] Port fluent Table operations and writable views #100, Integrate transactional Table routing and SQL-style wire behavior tc-collection#9, and Validate transactional Table integrity, recovery, and concurrency tc-collection#10.
  4. Close this epic only after all three children merge with evidence.

Global invariants

  • Build canonical typed TinyChain refs/requests; do not execute SQL strings client-side.
  • Preserve lazy views and streamed results; do not collect full Tables or ranges.
  • Do not expose caller-controlled transaction handles.
  • Use canonical URI builders and tc.backend(...) execution selection.
  • Host/Rust code remains authoritative for validation, transactions, authorization, index selection, and errors.
  • Avoid mutable default arguments in the v2 implementation even when preserving v1 call behavior.
  • Keep aggregate explicitly unsupported unless the backend parity contract implements it.
  • Document intentional v1 divergences instead of maintaining parallel compatibility paths.

Completion

Close only when cross-language fixtures agree with the backend route matrix, deferred and live execution paths pass, HTTP and PyO3 behavior agree, and bounded-memory streaming is demonstrated.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions