TinyChain-Inc / TinyChain-Inc/client

[Python][Table] Port and validate the transactional `Table` client API

Open
#97 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
0
Forks
0
Avg merge
3d 8h
Merged PRs (30d)
32

Description

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

  • #98 — pin the parity matrix; port schema, serialization, bounds, and model helpers
  • #100 — port the fluent Table operation surface and writable lazy views
  • #99 — validate deferred, HTTP, and PyO3 behavior against the transactional backend

Dependency and concurrency plan

  1. #98 depends on TinyChain-Inc/tc-collection#4. Inventory and isolated helper work may start early, but it cannot close before the backend route matrix is reconciled.
  2. #100 follows #98 and also consumes TinyChain-Inc/tc-collection#4.
  3. #99 test design, fixtures, and deferred-plan validation may begin concurrently with backend implementation. Its live tests and closure require #98, #100, TinyChain-Inc/tc-collection#9, and TinyChain-Inc/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.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the v1 Python Table implementation at client/py/tinychain/collection/table.py, then read child issues #98, #100, and #99 alongside the backend parity and route maps. Track deferred, HTTP, and PyO3 behavior against the stated invariants. Done means the child work is merged, cross-language fixtures agree, execution paths pass, and bounded-memory streaming is demonstrated.

Written by the indexing model from the issue text.

Assessment

Tech stack
python, rust
Domain
api, backend, database, testing
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.