A serious Python project template for out-of-box and production usage.
Many efforts have been made to ease the project setup, but most of them are only language-specified basic components. In practice, we have to deal with much more details, especially for team projects. Many commonly used tools and configurations need to be handled properly. Moreover, different people tend to have different favors in various aspects. If you are tired of the inefficient setup process and endless discussion, Serious Scaffold Python is here to terminate those for Python Projects.
If you find this helpful, please consider sponsorship.
- Basic Python project structure as a package with tests and documentation.
- Categorized requirements management with constraints for different environments.
typer
for CLI with tests and automatic documentation generation.pydantic
for settings with tests and documentation as module samples.setuptools-scm
to extract the version for the package.black
,isort
,mypy
,ruff
andtoml-sort
as linters.pre-commit
with general hooks and local linters.Makefile
as the entry point for common actions.- VSCode settings with recommended extensions.
- GitHub workflows for lint, tests, package and documentation preview.
-
Install the necessary tools for development:
pipenv
andpre-commit
. -
Generate the project with the
copier
command.copier gh:huxuan/serious-scaffold-python /path/to/project
-
Initialize the project with the
git
andmake
commands.cd /path/to/project git init git add . make dev make pre-commit git commit -a -m "Init from serious-scaffold-python."
-
Happy hacking.
- More detailed documentation for usage.
- More detailed documentation for features.
- Add logging module.
- Refine README template.
- Github Automatically generated release notes integration.
- GitHub Dependabot integration.
- GitHub issue and pull request templates.
- Gitlab CI/CD integration.
- Gitlab issue and merge request templates.
MIT
Any suggestions, discussions and bug fixing are all welcome.