| # Contributing to LightRAG |
|
|
| Thank you for your interest in contributing! This guide covers everything you need to get started. |
|
|
| ## Table of Contents |
|
|
| - [Ways to Contribute](#ways-to-contribute) |
| - [Development Setup](#development-setup) |
| - [Code Style](#code-style) |
| - [Running Tests](#running-tests) |
| - [Submitting a Pull Request](#submitting-a-pull-request) |
| - [Reporting Bugs](#reporting-bugs) |
| - [Requesting Features](#requesting-features) |
|
|
| --- |
|
|
| ## Ways to Contribute |
|
|
| - **Bug reports** — open an [issue](https://github.com/HKUDS/LightRAG/issues) using the Bug Report template |
| - **Feature requests** — open an [issue](https://github.com/HKUDS/LightRAG/issues) using the Feature Request template |
| - **Documentation** — fix typos, clarify explanations, or add examples |
| - **Code** — fix bugs, implement features, or add storage/LLM backends |
| - **Testing** — add test coverage for untested code paths |
|
|
| --- |
|
|
| ## Development Setup |
|
|
| ```bash |
| # Clone the repository |
| git clone https://github.com/HKUDS/LightRAG.git |
| cd LightRAG |
| |
| # Install in development mode (requires uv) |
| uv sync |
| source .venv/bin/activate # Linux/macOS |
| # .venv\Scripts\activate # Windows |
| |
| # Install with optional extras as needed |
| uv sync --extra api # FastAPI server |
| uv sync --extra test # Test dependencies |
| uv sync --extra offline-storage # Storage backends |
| uv sync --extra offline-llm # Additional LLM providers |
| |
| # Set up pre-commit hooks (run once) |
| pip install pre-commit |
| pre-commit install |
| ``` |
|
|
| --- |
|
|
| ## Code Style |
|
|
| This project uses [Ruff](https://docs.astral.sh/ruff/) for formatting and linting, enforced via [pre-commit](https://pre-commit.com/). |
|
|
| ### Automatic fixing |
|
|
| Running `pre-commit run --all-files` will automatically fix most style issues: |
|
|
| ```bash |
| # Fix all files |
| pre-commit run --all-files |
| |
| # Fix only staged files (faster during development) |
| pre-commit run |
| ``` |
|
|
| ### What is checked |
|
|
| | Hook | What it does | |
| |------|-------------| |
| | `trailing-whitespace` | Removes trailing whitespace | |
| | `end-of-file-fixer` | Ensures files end with a newline | |
| | `requirements-txt-fixer` | Keeps `requirements.txt` entries sorted | |
| | `ruff-format` | Formats Python code (Black-compatible) | |
| | `ruff` | Fixes Python lint errors | |
|
|
| ### CI check |
|
|
| The same checks run automatically on every pull request. If the CI check fails, run `pre-commit run --all-files` locally, commit the fixes, and push again. |
|
|
| ### Language conventions |
|
|
| - **Python code and comments**: English |
| - **Frontend (WebUI)**: uses i18next for internationalization — add translation keys rather than hardcoding strings |
|
|
| --- |
|
|
| ## Running Tests |
|
|
| ```bash |
| # Run offline tests (no external services required) |
| python -m pytest tests |
| |
| # Run integration tests (requires configured external services) |
| python -m pytest tests --run-integration |
| |
| # Run a specific test file |
| python -m pytest tests/test_lightrag.py |
| |
| # Keep test artifacts for debugging |
| python -m pytest tests --keep-artifacts |
| ``` |
|
|
| Set `LIGHTRAG_RUN_INTEGRATION=true` as an environment variable as an alternative to `--run-integration`. |
|
|
| --- |
|
|
| ## Submitting a Pull Request |
|
|
| 1. **Fork** the repository and create a branch from `main`: |
| ```bash |
| git checkout -b fix/your-descriptive-branch-name |
| ``` |
|
|
| 2. **Make your changes** and ensure: |
| - Pre-commit checks pass: `pre-commit run --all-files` |
| - Relevant tests pass: `python -m pytest tests` |
| - New behavior is covered by tests where applicable |
|
|
| 3. **Commit** with a clear message describing *why* the change was made: |
| ```bash |
| git commit -m "fix: handle permission-only encrypted PDFs without password" |
| ``` |
|
|
| 4. **Push** and open a pull request against `main`. Fill out the pull request template completely. |
|
|
| 5. **Respond to review feedback** — a maintainer will review your PR and may request changes. |
|
|
| ### Pull request checklist |
|
|
| - [ ] Changes tested locally |
| - [ ] Pre-commit checks pass (`pre-commit run --all-files`) |
| - [ ] Unit/integration tests added or updated where applicable |
| - [ ] Documentation updated if behavior changes |
| - [ ] PR description explains the *why*, not just the *what* |
|
|
| --- |
|
|
| ## Reporting Bugs |
|
|
| Please use the [Bug Report issue template](https://github.com/HKUDS/LightRAG/issues/new?template=bug_report.yml). Include: |
|
|
| - LightRAG version and Python version |
| - Storage backend and LLM provider being used |
| - Minimal reproducible example |
| - Full error traceback |
|
|
| --- |
|
|
| ## Requesting Features |
|
|
| Please use the [Feature Request issue template](https://github.com/HKUDS/LightRAG/issues/new?template=feature_request.yml). Describe: |
|
|
| - The problem you're trying to solve |
| - Your proposed solution |
| - Any alternatives you've considered |
|
|
| --- |
|
|
| ## Questions |
|
|
| For usage questions, check the [Discussions](https://github.com/HKUDS/LightRAG/discussions) tab or open a [Question issue](https://github.com/HKUDS/LightRAG/issues/new?template=question.yml). |
|
|