Skip to content

Latest commit

 

History

History
124 lines (88 loc) · 3.59 KB

File metadata and controls

124 lines (88 loc) · 3.59 KB

Contributing to labeille

Thanks for your interest in contributing! This guide covers everything you need to get started.

Reporting Bugs

Bugs in labeille itself

Open an issue at github.com/devdanzin/labeille/issues with:

  • What you were doing (command, package, configuration)
  • What you expected to happen
  • What actually happened (include tracebacks and logs)
  • Your Python version and OS

JIT bugs found by labeille

If labeille detects a crash in a JIT-enabled CPython build, that's a CPython bug! To report it:

  1. Verify the crash does not occur without the JIT (run with PYTHON_JIT=0).
  2. Try to create a minimal reproducer if possible.
  3. Open an issue on the CPython GitHub with:
    • The crash signature and signal (e.g. SIGSEGV, SIGABRT)
    • The Python version and build configuration
    • The package and test that triggered the crash
    • Steps to reproduce

Development Setup

# Clone the repository
git clone https://github.com/devdanzin/labeille.git
cd labeille

# Create a virtual environment
python -m venv .venv
source .venv/bin/activate

# Install in development mode with dev dependencies
pip install -e '.[dev]'

Quality Checks

Run all of these before submitting a pull request:

# Format code
ruff format .

# Lint
ruff check .

# Type check
mypy

# Run tests
python -m unittest discover tests

All checks must pass. CI will run them automatically on pull requests.

Pull Request Process

  1. Fork the repository and create a branch from main.
  2. Make your changes. Keep commits focused — one logical change per commit.
  3. Run quality checks (see above). All must pass.
  4. Update documentation if needed:
    • Add a line to CHANGELOG.md under [Unreleased].
    • Update CREDITS.md if you're a new contributor.
  5. Submit a pull request with a clear description of what and why.

Commit Messages

We encourage (but don't require) Conventional Commits:

feat: add timeout support for test runner
fix: handle missing repo URL in PyPI metadata
docs: update quick start instructions
refactor: extract crash signature logic into separate module

The most important thing is that the message clearly describes what changed and why.

Code Style

  • Formatter: ruff format (line length 99)
  • Linter: ruff check
  • Type checking: mypy in strict mode
  • All public functions need type annotations.
  • Keep modules focused and imports clean.

Adding Packages to the Registry

The package registry is maintained in the separate laruche repository. To add or update packages, contribute to laruche directly. Use labeille registry sync to fetch the latest registry locally (default location: ~/.local/share/labeille/registry/).

Enriching Registry Packages

Adding and improving package test configurations is one of the most valuable contributions. See doc/enrichment.md for a quick reference and the laruche documentation for the complete enrichment guide, field schema, and troubleshooting.

AI-Assisted Development

Contributors are welcome to use AI tools (Claude, Copilot, etc.) to help with their contributions. However, you are responsible for:

  • Understanding the code you submit
  • Ensuring it passes all quality checks
  • Reviewing AI-generated code for correctness and security
  • Writing meaningful commit messages and PR descriptions

Questions?

Open an issue or start a discussion. We're happy to help!