{"repo":"stinodego/python-ci","free":true,"listed":false,"github":"https://github.com/stinodego/python-ci","clone":"git clone https://github.com/stinodego/python-ci.git","description":"Sample CI setup for Python projects","language":"Just","stars":32,"topics":["pre-commit","pytest","python","github-actions","poetry","makefile"],"license":"Unlicense","category":"workflow-automation","readme_excerpt":"Standard Python project CI setup There are many ways to set up continuous integration for your Python project. This is my personal flavour of doing things. Feel free to pick-and-choose the parts that you like. This README includes some justification and references for the choices made in this setup. Table of contents - pre-commit - pytest - just - uv - GitHub Actions pre-commit pre-commit is an awesome framework which many Python projects use. It allows you to select 'hooks' for various formatters and linters you want to use. Run pre-commit install after setting up your local environment to enable pre-commit to run all hooks whenever you do a git commit. The commit will be cancelled if not all hooks run successfully. To commit anyway, run with --no-verify . The following hooks have been selected for this CI setup: - ruff: An extremely fast Python linter and formatter. Includes lints and formatting popularized by various other tools like black , flake8 and pyupgrade , all in one tool. Replaces all linting and autoformatting tools except for mypy . Install the VSCode or PyCharm extension for the best developer experience. Adjust settings in the pyproject.toml as desired. - pre-commit-hooks: Some auto-formatting for non-Python files. Includes a JSON formatter - a common format for config files. Remove the hook if you have no use for it. - language-formatters: Formatters for TOML and YAML. Useful for keeping your pyproject.toml and your GitHub Actions workflows clean. - mdformat:","default_branch":null,"files":null,"tree":[],"storefront":"/r/stinodego","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/stinodego/python-ci/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}