Generates a Python project structure with github actions for continuous integration and continuous deployment. Both pure Python projects and Python projects with Rust modules using PyO3 can be created.
- poetry for package managment
- black for code formatting
- mypy for static type checking
- pre-commit for pre-commit hooks
- pytest for testing
- pytest-cov for test coverage reports
- ruff for linting
- maturin for package management
- black for code formatting
- mypy for static type checking
- pre-commit for pre-commit hooks
- pytest for testing
- pytest-cov for test coverage reports
- ruff for linting
- PyO3 for managing the Rust/Python FFI
- justfile for running commands (to use this you will need to install just)
First install Rust. Then to install the package run:
cargo install python-project-generator
From your terminal run:
python-project create
You will be asked a series of questions that will be used to generate your project. The project
generator will check pypi for the lastest version of the included packages and use those while
generating the project. This feature can be disabled by using with either -s
or
--skip-download-latest-packages
when running the generator. If either there is an issue with
retrieving the latest versions or if you have decided to skip looking up the latest version, the
packages will be be created with default versions.
python-project create -s
After running the generator a new directory will be created with the name you used for the
Project Slug
. Change to this directory then install the python packages and pre-commit hooks.
Install the Python dependencies.
poetry install
Install the pre-commit hooks.
pre-commit install
First create a virtual environment and activate it.
python -m venv .venv
. .venv/bin/activate
Install the dependencies and build the rust module.
just install
Install the pre-commit hooks.
pre-commit install
Now your project is ready to use.
You can specify default values for many of the project options. For example to save a default creator:
python-project config creator "Wade Watts"
To see a full list of values that be set as defaults run:
python-project config --help
To view the current saved defaults:
python-project config show
To remove custom defaults:
python-project config reset