Reusable Python infrastructure for application configuration and observability.
yb-observability provides common infrastructure that can be shared across Python applications without coupling the library to a specific application or architecture.
The project currently focuses on configuration and logging, with additional observability capabilities planned for future releases.
- YAML configuration loading.
- Environment variable resolution.
- Nested environment variable support.
- Configuration validation.
- Clear configuration-related exceptions.
- Loguru-based logging.
- Explicit application/service identity.
- Consistent human-readable log format.
- Console logging.
- File logging.
- Daily log rotation.
- Configurable retention.
- Per-service log directories.
The library is designed to grow with additional infrastructure such as:
- Structured/JSON logging.
- Request and correlation IDs.
- Metrics.
- Distributed tracing.
- OpenTelemetry integrations.
- Additional observability integrations.
Features are introduced incrementally and remain independent where possible.
Install the package from PyPI:
pip install yb-observabilityWith uv:
uv add yb-observabilityConfiguration:
from yb_observability.config import ConfigLoader
config = ConfigLoader("config.yml").load()Logging:
from yb_observability.logging import configure_logging
configure_logging(service="my-service")The application remains responsible for deciding what should be logged. yb-observability is responsible for configuring the logging infrastructure and providing a consistent logging interface.
The library must not depend on a specific application, framework, infrastructure provider, or domain.
Applications should explicitly configure the behavior they require rather than relying on hidden conventions.
Applications using the library should receive consistent configuration and logging behavior.
New capabilities should be possible without breaking the existing public API.
Core functionality should be covered by automated tests.
The library should be suitable for both local development and production applications.
yb-observability/
├── src/
│ └── yb_observability/
│ ├── config/
│ └── logging/
│
├── tests/
│ ├── config/
│ └── logging/
│
├── .github/
│ ├── ISSUE_TEMPLATE/
│ └── workflows/
│
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── SECURITY.md
└── pyproject.toml
The project uses:
- Python 3.14
- uv
- Ruff
- Pyright
- Pytest
- Loguru
- PyYAML
Install development dependencies:
uv syncRun the test suite:
uv run pytestRun linting:
uv run ruff check .Check formatting:
uv run ruff format --check .Run type checking:
uv run pyrightBuild the package:
uv buildContributions are welcome.
Before submitting a pull request, make sure that:
- Tests pass.
- Ruff checks pass.
- Formatting checks pass.
- Pyright checks pass.
- The package builds successfully.
- New functionality includes appropriate tests.
- Public API changes are documented.
See CONTRIBUTING.md for development and contribution guidelines.
This project is licensed under the terms defined in LICENSE.