Skip to content

Contributing

Dev setup

git clone https://codeberg.org/marvin8/yilan
cd yilan
uv sync --group dev

Yilan uses uv for dependency management.

Running the tests

uv run tryke test tests/

Or via nox (runs tests across all supported Python versions):

uv run nox -s tests

Quality gate

All of the following must pass with zero errors before a change is done:

uv run ruff check .
uv run ty check .
uv run complexipy .
uv run nox          # full gate: ruff, ty, complexipy, pysentry, tests, deptry, dependency_versions

TDD workflow

  1. Write a failing test.
  2. Confirm it fails: uv run tryke test tests/.
  3. Implement the minimum code to make it pass.
  4. Re-run the full quality gate.

No exceptions — this applies to bug fixes as well as new features.

Commit style

Commits use gitmoji prefixes:

Emoji Code When
📝 :memo: Documentation
:sparkles: New feature
🐛 :bug: Bug fix
♻️ :recycle: Refactor
🔧 :wrench: Config / tooling

Branch workflow

  • main is protected — never commit directly.
  • Create a feature branch: git checkout -b feat/my-change.
  • Commit after each logical step.
  • Open a PR targeting main.

Code style

  • No abbreviated variable names — use repository_name, not repo or rn.
  • Always use keyword arguments at call sites.
  • Google-style docstrings on all public and private functions, classes, and modules.
  • Dependencies in pyproject.toml must be sorted alphabetically (case-insensitive).