Steps to check when starting on a python project
- Use version control
- Setup dependency management
- Add documentation
- Add license
- Add tests
- Add linting
- Check logging
- Setup continuous integration
- Make contribution easier
- Use git
- Add
.gitignore
(gitignore.io) - Use conventional commits
- Consider using cz (link)
Optionally you can use mercurial (hg), bazaar, darcs, etc.
- Use poetry and
pyproject.toml
(see PEP621)
Optionally, you can stick with setuptools or hatchling
- Add
README.md
- Have an intro
- Have an installation/deploy section
- Have a usage section
- Have a live demo made with termtosvg
- Use OpenAPI for API documentation
- Create a documentation page with mkdocs, mkdocs-material and mkdocstrings
- Add badges
- CI pipeline status
- Code quality: code coverage, maintainability indexes
- Package status: package health (see Snyk), vulnerabilities, out of date dependencies
- General status: maintenance status, uptime (for web)
- Package info: size, lines of code, license, version
- Popularity: stars, downloads
- Discord server
- Funding via Open Collective
- Find more at shields.io and badgen.net
- Add
LICENSE.md
with MIT license
- Use pytest
- Add unit tests
- Use faker / mimesis for fake data
- Use hypothesis for property testing
- Add e2e tests
- Use tavern for API testing
- Use playwright for UI testing
- Add smoke tests
- Add benchmarks with pytest-benchmark
- Use pytest-memray to control memory usage
- Add test coverage with pytest-cov
- Use ruff
- Use mypy
- Use
.editorconfig
(see .editorconfig) - Use specific linters
- Use cspell to check spelling
- Use shellcheck for
shell
scripts - Use sqlfluff for
sql
files - Use yamllint for
yml
files - Use hadolint for
Dockerfile
s - Use dotenv-linter for
env
files
- Use loguru
- Consider change default
LOGURU_LEVEL
toINFO
- Use github actions
- Add lint, test, build and publish pipeline stages
- Add badges to
README.md
- Have
CONTRIBUTING.md
file (see example and another one) - Have "Contribution" section in your
README.md
- Have
CODE_OF_CONDUCT.md
file (see example)