Software Development Kit for Python, otherwise known as a Microservice Chassis, which handles cross-cutting concerns such as:
- Logging
- Metrics
- Tracing
- Configuration
- Secrets
- Versioning
- Health checks
This library is still in development and does not have stable interfaces. While it is in use by some internal projects, it is not yet recommended for any productions workloads.
Python 3.10+
pip install pythonsdk
# If using AWS functionality
pip install pythonsdk[aws]
# If using CLI functionality
pip install pythonsdk[cli]
# If using `testing` package
pip install pythonsdk[testing]
Below is an abstract of the functionality provided by this library. See docs
for more information.
The bin
package provides utilities for invoking processes while streaming, capturing and manipulating their output.
The config
package provides a declarative mechanism for defining your application config, with support for multiple configuration sources (environment variables, remote HTTP endpoints, S3 objects, etc.) validation, secrets injection, hot-reloading, documentation, etc.
The encoding
package provides some encoding utils commonly used when authoring networked APIs.
The locks
package contains a distributed locking mechanism backed by multiple different providers.
The log
package contains an externally configurable logging interface which supports structured logging and hot reloading.
The secrets
package provides a simple interface for reading in secrets stored in secrets stores such as AWS Secrets Manager.
The service
package provides a uvicorn-like service component for running non-webapp services (workers).
The testing
package provides a highly opinionated acceptance test suite for enforcing code quality.
The versioning
package provides language-agnostic application versioning strategies.
The cli python-sdk
provides dev-time utilities such as a highly opinionated formatter (python-sdk fmt
).