burdenoff-sdk-libs
Modular SDK library shared across all Burdenoff product SDKs (Python).
Each module under src/burdenoff_sdk_libs/modules/<name>/ exports an SdkModule (a dataclass with attach(ctx) -> API). Product SDKs (vibecontrols-sdk-python, botlit-sdk-python, etc.) become thin shells that pick which modules to mount. Sister to @burdenoff/sdk-libs (Node) and @burdenoff/cli-sdk.
Architecture
- Core (
src/burdenoff_sdk_libs/core/):SdkContext,SdkModuleProtocol, dual-gatewayBaseGraphQLClient(workspace + global),AuthStorewith pluggableTokenStore(InMemoryTokenStore,FileTokenStore,EnvTokenStore), error hierarchy with token redaction, structured logger,ModuleRegistry. - Modules (
src/burdenoff_sdk_libs/modules/<name>/):__init__.pyexportsSdkModuleinstance.operations.pyholds hand-written GraphQL doc strings.api.pybuilds the API. Generated types land atsrc/burdenoff_sdk_libs/modules/<name>/__generated__/types.py(gitignored). - PEP 562 lazy imports: top-level
__getattr__defers module loading until first access (lambda/edge cold-start friendly). - Hard rules: Modules NEVER import each other directly — use
ctx.modules.get('id'). Modules NEVER print, raise plainException, or log secrets unredacted.
Build & Commands
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
pytest # unit tests
pytest --cov # with coverage
python scripts/codegen.py # generate types from pinned supergraph
python scripts/parity_check.py # cross-language manifest diff vs sdk-libs-node
python -m build # sdist + wheel
Adding a module
mkdir src/burdenoff_sdk_libs/modules/<id>with__init__.py,operations.py,api.py,types.py.- Export
SdkModuleinstance from__init__.py(e.g.auth_module = AuthModule()). - Add to
_LAZY_MODULESin top-level__init__.pyif surfacing at package root. - Add manifest entry to
schema/modules.yaml. - Mirror in
~/products/sdk-libs-node/in the SAME PR pair.
Testing
- Unit (
tests/test_*.py): pure logic. No HTTP. pytest, <5s. - Integration: respx intercepts HTTP. Mock factories derived from
__generated__/types.py. - E2E: real svc + state, run nightly.
- Parity: same
tests/parity/<scenario>.yamlrun by node + python.
Reference
~/products/sdk-libs-node/— sister Node library.~/products/cli-sdk/— sister CLI library.~/products/vibecontrols/vibecontrols-sdk-python/— first consumer (thin shell).~/products/dev/audit/index/vibecontrols.md— 23-module ground-truth.
Metadata
Release files for burdenoff-sdk-libs 2026.928.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| burdenoff_sdk_libs-2026.928.1.tar.gz | 713.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| burdenoff_sdk_libs-2026.928.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.6 MB
Release files / burdenoff_sdk_libs-2026.928.1.tar.gz
| Download URL | burdenoff_sdk_libs-2026.928.1.tar.gz |
|---|---|
| Size | 713.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d4fff24c075468cd1649c91a5656bb11d2315f735586e0cbca90c45639693639
|
|
BLAKE2b-256 checksum How to use checksums |
d88caadcc13bef036e420795a6f7ed1c5891029d4b2698a23d2cc9e64b1b3e75
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.15
|
Release files / burdenoff_sdk_libs-2026.928.1-py3-none-any.whl
| Download URL | burdenoff_sdk_libs-2026.928.1-py3-none-any.whl |
|---|---|
| Size | 930.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c6c318e45d8a6d417ffb5848323d3dbeb5e9f4f247ef63f7d2d61dc57e7de9a3
|
|
BLAKE2b-256 checksum How to use checksums |
bbe6fbe534988b7f002545fc7f2ca1ea88fed1b11fcd6f7c9dcbf6948aac0784
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.15
|