Contributing
Bug reports, fixes, features and documentation are all welcome. For anything bigger than a small fix, open an issue first so the scope is agreed before you write the code.
Set up
Section titled “Set up”You need uv and Python 3.11 or newer.
git clone https://github.com/mftnakrsu/Automatic_Number_Plate_Recognition_YOLO_OCR.gitcd Automatic_Number_Plate_Recognition_YOLO_OCRuv sync --all-extras --group devuv run pre-commit install # optional: run the checks on every commitThe checks
Section titled “The checks”CI runs these on Python 3.11, 3.12, 3.13 and 3.14, then builds the Docker image and calls its
/health endpoint. Run them before you push:
make lint # ruff check and ruff format --checkmake type # pyrightmake test # pytestThe default test suite uses fake models and needs no network. The end-to-end test with the real models downloads them on its first run (about 30 MB):
ANPR_RUN_REAL=1 uv run pytest tests/integration/test_pipeline_real.pyConventions
Section titled “Conventions”- Branch names start with
feat/,fix/,docs/,chore/,ci/,test/orrefactor/. - Commit messages follow Conventional Commits:
feat:,fix:,docs:and so on. - One logical change per pull request.
- Code is formatted with
ruff formatat 100 columns and type-checked with pyright. Public functions have full type hints. - Never store plate text. Anything that persists a plate goes through
storage.hashing.hash_plate.
The documentation
Section titled “The documentation”This site lives in docs-site/ and is built with Astro Starlight.
Pages are Markdown files in docs-site/src/content/docs/, with Turkish translations under tr/.
cd docs-sitenpm installnpm run dev # http://localhost:4321Every push to main that touches docs-site/ publishes the site.