We welcome contributions to EKS! If you have found a bug or would like to request a change, please open an issue first.
We strive to maintain a welcoming environment for all contributors. See our code of conduct for more information.
Fork the repo, then clone your fork and install in editable mode with dev dependencies:
pip install -e ".[dev]"
pre-commit installpre-commit install registers the ruff linting hook so it runs automatically on each commit.
You only need to do this once per clone.
pytestIntegration tests compare outputs against golden files stored in tests/integration/golden/.
These files are hosted remotely and downloaded automatically when the test suite runs.
If your change intentionally alters numerical outputs, you can regenerate your local copies with:
pytest --update-goldenHowever, the remote golden files can only be updated by a repo maintainer. If your PR requires golden file changes, note this in the PR description and a maintainer will update them before merging.
We use ruff for linting and import sorting. The pre-commit hook runs it automatically, but you can also run it manually:
ruff check eks tests # check for violations
ruff check --fix eks tests # auto-fix where possibleConfiguration lives in [tool.ruff] in pyproject.toml.
We use pyright for static type checking:
pyright eksConfiguration lives in [tool.pyright] in pyproject.toml.
Pyright runs in CI on every pull request but is not in the pre-commit hook (it
checks the whole project on every run, adding ~15s per commit).
- Keep PRs focused — one feature or fix per PR
- Include tests for new functionality
- Ensure
pytestandruff checkboth pass before opening the PR - Open against the
mainbranch