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.825.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.825.1.tar.gz | 714.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| burdenoff_sdk_libs-2026.825.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.6 MB
Release files / burdenoff_sdk_libs-2026.825.1.tar.gz
| Download URL | burdenoff_sdk_libs-2026.825.1.tar.gz |
|---|---|
| Size | 714.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f9c6d141f49f3b060f31da6754fb14d88ed038277ddb5c91054707e3227e26a4
|
|
BLAKE2b-256 checksum How to use checksums |
38a1bcf9b92cf62e2cb965d475088b25a83c030b90d66e097359a4096424e767
|
| 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.825.1-py3-none-any.whl
| Download URL | burdenoff_sdk_libs-2026.825.1-py3-none-any.whl |
|---|---|
| Size | 930.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d68ce944c6ff71478da296b8b18a19b865e6753b16c2ca4e57941dd193206030
|
|
BLAKE2b-256 checksum How to use checksums |
ddd520cf7ebb22ed565584fb6da6a012836dc074ba9ac2b99948e770fc4e661b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.15
|