Skip to main content

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

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

treedx-0.2.43.tar.gz (17.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

treedx-0.2.43-py3-none-any.whl (28.8 kB view details)

Uploaded Python 3

File details

Details for the file treedx-0.2.43.tar.gz.

File metadata

  • Download URL: treedx-0.2.43.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

Hashes for treedx-0.2.43.tar.gz
Algorithm Hash digest
SHA256 9d4d88510ca2a8023dca1d8f8908ed94e8144ee465cbbd883277088fa06b6d98
MD5 e3bc2e001728ff1681d0e62c5074d2fa
BLAKE2b-256 afc75e29c14a76b220fedb8a6d7e3a30ccea98027915262b8ad18ea413ab734f

See more details on using hashes here.

File details

Details for the file treedx-0.2.43-py3-none-any.whl.

File metadata

  • Download URL: treedx-0.2.43-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

Hashes for treedx-0.2.43-py3-none-any.whl
Algorithm Hash digest
SHA256 247581952592218a0a1b8245c055dfa829c870ba289f42ea555da9b2c63d1594
MD5 fbae7e6c247baa4fb609f55df3ed5c05
BLAKE2b-256 e463a349b6d9db36956e7721c3fc35c1e39e008cc7c63da5fd9f95c241d0d44b

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.2.43 This release

2 files

0.2.42

2 files

0.2.41

2 files

0.2.40

2 files

0.2.39

2 files

0.2.38

2 files

0.2.37

2 files

0.2.35

2 files

0.2.34

2 files

0.2.33

2 files

0.2.32

2 files

0.2.31

2 files

0.2.30

2 files

0.2.29

2 files

0.2.28

2 files

0.2.27

2 files

0.2.26

2 files

0.2.25

2 files

0.2.24

2 files

0.2.23

2 files

0.2.22

2 files

0.2.21

2 files

0.2.20

2 files

0.2.19

2 files

0.2.18

2 files

0.2.17

2 files

0.2.16

2 files

0.2.15

2 files

0.2.14

2 files

0.2.13

2 files

0.2.12

2 files

0.2.11

2 files

0.2.10

2 files

0.2.9

2 files

0.2.8

2 files

0.2.7

2 files

0.2.6

2 files

0.2.1

2 files

0.2.0

2 files

0.1.6

2 files

0.1.5

2 files

0.1.2

2 files

0.1.1

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page