Generic Python SDK for TreeDX.
Project description
TreeDX Python SDK
treedx is the generic Python SDK for TreeDX. It implements the shared
packages/sdk-spec architecture, follows docs/api/openapi.yaml, and does not
encode TreeSeed product semantics. packages/trsd-sdk is a downstream
TreeSeed consumer/reference only.
The current sdk-manifest.yaml reports modules, capabilities, and test roots as
implemented. The SDK exposes all 113 /api/v1 OpenAPI operations through
first-class module methods and a validated raw operation fallback.
Install
python -m pip install treedx
Configure Client
from treedx import TreeDxClient, TreeDxApiError
client = TreeDxClient(
base_url="http://localhost:4000",
token="...",
)
The client also accepts an auth provider, custom transport, default headers, and timeout settings.
Authenticate
Bearer authentication uses the Authorization: Bearer <token> header. Tokens
may come from token or an auth provider. The SDK must not place production
identity in request JSON and must not log bearer tokens.
Basic Health Call
health = client.health()
version = client.version()
Repository Query
Repository-scoped query helpers live under client.query:
results = client.query.search_files(
"repo_demo",
{"query": "release provenance", "paths": ["docs/**"]},
)
file = client.query.read_file(
"repo_demo",
{"ref": "refs/heads/main", "path": "docs/index.md"},
)
Workspace File Lifecycle
Workspace-scoped file helpers live under client.workspaces and client.files:
workspace = client.workspaces.create("repo_demo", {"ref": "refs/heads/main"})
client.files.write("workspace_123", {"path": "docs/new.md", "content": "# New"})
client.files.patch("workspace_123", {"path": "docs/new.md", "patch": "..."})
client.files.commit("workspace_123", {"message": "Update docs"})
client.workspaces.close("workspace_123")
Blob Upload And Download
Binary helpers preserve byte payloads and reject strings as binary input.
client.blobs.upload("workspace_123", b"\x01\x02\x03")
blob = client.blobs.download("workspace_123", {"path": "asset.bin"})
Multipart helpers expose create, part upload, complete, and abort:
upload = client.blobs.create_multipart_upload("workspace_123", {"path": "large.bin"})
client.blobs.upload_part("workspace_123", upload["uploadId"], 1, b"\x01")
client.blobs.complete_multipart_upload(
"workspace_123",
upload["uploadId"],
{"parts": [{"partNumber": 1}]},
)
Graph And Context Query
client.graph.refresh("repo_demo")
graph = client.graph.query("repo_demo", {"query": "MATCH ..."})
context = client.context.build("repo_demo", {"query": "ctx docs"})
parsed = client.context.parse("repo_demo", {"source": "ctx docs"})
Federated Query
Federation helpers use portfolio/global TreeDX routes rather than a single configured repository:
plan = client.federation.plan({"query": "release provenance"})
results = client.federation.search({"query": "release provenance"})
Scoped Admin And Internal Modules
Full OpenAPI coverage includes sensitive scoped modules: Admin, Audit, Policy, SearchIndex, and FederationInternal. These APIs require appropriate TreeDX credentials and should be used carefully against production systems. They remain generic TreeDX APIs and do not encode TreeSeed product semantics.
The raw operation fallback validates method/path pairs against generated OpenAPI metadata before dispatch.
Error Handling
Non-2xx responses and network failures raise TreeDxApiError. The error keeps
status, code, message, details, and payload available. Network
failures use status=0 and code="network_error".
try:
client.whoami()
except TreeDxApiError as error:
print(error.status, error.code, error.message)
Pagination
TreeDxPage and TreeDxCursor model opaque server-owned cursor pagination.
Helpers preserve cursor metadata and do not decode cursor internals.
Binary And Multipart
Binary helpers accept bytes, bytearray, memoryview, and binary streams.
Multipart helper metadata is represented by MultipartUpload.
Conformance
The conformance adapter loads Phase 7 scenario records and reports
live or configured until executable live dispatch is wired. It must not fake
conformance success.
python -m pytest tests/conformance
Integration
Integration tests call a live TreeDX server only when TREEDX_BASE_URL is set.
Without that environment variable, they skip cleanly.
python -m pytest tests/integration
Development Commands
python -m pip install -e ".[dev]"
python scripts/check_treedx_generated_types.py
python -m build
python -m pytest tests/conformance
python -m pytest tests/integration
python -m pytest
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file treedx-0.1.5.tar.gz.
File metadata
- Download URL: treedx-0.1.5.tar.gz
- Upload date:
- Size: 17.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
431203197e08564be30726034bb48c6c783ba6376b9a86e4585d47da160b0552
|
|
| MD5 |
7c90face462309e3616e7b9ecc539b83
|
|
| BLAKE2b-256 |
9eb09beb4e5fba75a17b82d3f7ccc171b588c5a1a510bf9e7a65b15ef15e7acd
|
File details
Details for the file treedx-0.1.5-py3-none-any.whl.
File metadata
- Download URL: treedx-0.1.5-py3-none-any.whl
- Upload date:
- Size: 28.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4f1f582a4dfddae4a822a8b3cd045a7da19c4aff44963f9b528f4440d09a0f0b
|
|
| MD5 |
e7a29e4e70d4e0503fb54118392a6ae9
|
|
| BLAKE2b-256 |
3f4f8c31be2602e0e3da862aee00d8c56ef98b992a14b7d29db13cecf0a54bb2
|