First off, thank you for considering contributing to pyegeria! It's people like you that make Egeria a great tool for the metadata community.
We use uv for dependency management. To set up your environment:
- Clone the repository.
- Install dependencies:
uv sync. - Activate the environment:
source .venv/bin/activate(macOS/Linux) or.venv\Scripts\activate(Windows).
pyegeria/core: Foundation clients and base classes.pyegeria/omvs: Individual View Service implementations.pyegeria/models: Pydantic models for Egeria API requests/responses.pyegeria/view: Formatting logic (Markdown, Rich, Mermaid).commands/: CLI tools and scripts.
Every new OMVS method should provide both an async version (prefixed with _async_) and a synchronous wrapper. This ensures compatibility with both high-performance applications and interactive Jupyter notebooks.
We use the NumPy/SciPy docstring format. Ensure every public method has clear parameter descriptions and a "Notes" section with a sample JSON body where applicable.
We use pytest. We prioritize Scenario Tests that demonstrate full lifecycles (Create -> Link -> Detach -> Delete).
To run tests:
pytest tests/
To run against a live Egeria instance:
pytest --live-egeria (Requires environment variables for credentials).
- Create a feature branch.
- Ensure scenario tests pass for your new module.
- Update the
EgeriaTechclient if adding a new OMVS. - Submit your PR for review.