Python client for Dataceen GraphQL + gRPC subscription APIs
Project description
dataceen-client (Python)
Python client for the Dataceen GraphQL + gRPC subscription APIs. Parallel to
the C# (DataceenClient/) and TypeScript (DataceenClientTs/) reference
clients — feature-parity verified against the same Thomas/CandyShopModel/All
fixtures.
Status: 0.0.1 alpha. 88 unit tests green. Not yet on PyPI.
Install
python -m venv .venv
.venv\Scripts\activate # PowerShell
pip install -e ".[dev]"
Requires Python 3.11+ (typing.NotRequired, generic TypedDict).
Configure
Copy .env.example to .env at the repo root and fill in real Azure AD
credentials. The example matches the C# appsettings.json's AllClient
section.
Quick start
import asyncio
from dataceen_client import DataceenClient, load_config_from_env
from dataceen_client.runtime import do_find
async def main():
cfg = load_config_from_env()
async with DataceenClient(cfg) as client:
result = await do_find(
client,
"Customer",
size=5,
filter={"CustomerId": {"like": "cst"}},
fields={
"_id": True,
"CustomerId": True,
"CustomerPlacedOrder": {"Order": {"OrderId": True}},
},
order_by=[{"CustomerId": "Ascending"}],
)
for item in result["Items"]:
print(item)
asyncio.run(main())
After running codegen, replace do_find(client, "Customer", ...) with the
typed AllClient(client).Customer.find(...).
Subscriptions
async with DataceenClient(cfg) as client:
sub = client.create_subscription(
topics=["Customer"],
baseload_topics=["Customer"],
start_mode="POSITION_BEGINNING",
include_complete=True,
)
async def on_customer(evt):
if evt.event_type == "BASELOAD_EVENT":
... # evt.complete is parsed JSON
elif evt.event_type == "SUBSCRIPTION_EVENT":
... # live event
sub.on("Customer", on_customer)
await client.subscribe(sub) # blocks until sub.cancel()
Codegen
python -m tools.codegen.src.cli fetch # cache schema.json
python -m tools.codegen.src.cli emit Customer # Customer + everything it references
python -m tools.codegen.src.cli emit-all # whole model
Output → src/dataceen_client/generated/ (gitignored). Per entity you get
typed TypedDicts for read/create/filter/fields, a change-tracked Update
class, and an <Entity>Client wrapping the runtime helpers; AllClient
aggregates the top-level entities.
Codegen runs from a source checkout — it is intentionally not part of the
published wheel (only the runtime dataceen_client package is shipped).
Tests
pytest # 88 unit tests, ~1.7s
RUN_INTEGRATION=1 pytest # also run live-backend integration tests (needs .env)
Example app
End-to-end example against the live backend:
python -m examples.candy_shop.find
python -m examples.candy_shop.search_and_aggregate
python -m examples.candy_shop.subscriber
python -m examples.candy_shop.program # full read-only orchestrator
RUN_DESTRUCTIVE=1 python -m examples.candy_shop.program # also create/update/delete
Docs
docs/plan.md— phase plandocs/decisions.md— decisions and motivationdocs/progress.md— live statusdocs/dsl-comparison.md— why pure-dict DSL for Pythondocs/porting-guide.md— Python-specific amendments to the canonical guidedocs/release.md— version-bump and publish runbook
License
Proprietary — see LICENSE.
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 dataceen_client-0.0.2.tar.gz.
File metadata
- Download URL: dataceen_client-0.0.2.tar.gz
- Upload date:
- Size: 74.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
52ba0f6e2d152e12e62be5ca108835bb4443ae29fc9e95d900bc627fad982448
|
|
| MD5 |
0d488665789736df19db7b8c3910e247
|
|
| BLAKE2b-256 |
4db0bfd4a4542b3d75be037e7b18b2e659822b316462eeb47133fbf22dc0d8c3
|
File details
Details for the file dataceen_client-0.0.2-py3-none-any.whl.
File metadata
- Download URL: dataceen_client-0.0.2-py3-none-any.whl
- Upload date:
- Size: 35.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
86eee8c159fba31851b9adb9b29cf813d360feb2f2b2e917b953f227eae31ed9
|
|
| MD5 |
7e37d10f7a298ad3b8ed41ee96e87acc
|
|
| BLAKE2b-256 |
25b5727f532a3a0ce6340a11c0bec0c32b173a9721829566d47316137b63c9f9
|