TinyChain-Inc / TinyChain-Inc/client
[Python][Table] Port and validate the transactional `Table` client API
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
Tableoperation surface and writable lazy views - #99 — validate deferred, HTTP, and PyO3 behavior against the transactional backend
Dependency and concurrency plan
- #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.
- #100 follows #98 and also consumes TinyChain-Inc/tc-collection#4.
- #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.
- 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
aggregateexplicitly 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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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