Command-line tool designed to take the friction out of starting a new Python project
Project description
Pykickoff
Pykickoff is a lightweight, interactive CLI scaffolding tool designed to bootstrap new Python projects. By guiding users through a series of questions, it generates standard project files, sets up package structures, initializes Git repositories, and creates virtual environments automatically.
If you like the repo, it would be awesome if you could add a star to it! It really helps out the visibility. Also for any questions at all we'd love to hear from you at ds.pydev@gmail.com
Usage
- Install Pykickoff
python -m pip install pykickoff
- Run Pykickoff
python -m pykickoff
Wizard Options
The setup guide will prompt you to configure:
- Project Name: The directory name and package namespace.
- Description: A short description printed in the package's generated
README.mdand metadata. - Author Name: Used to populate your package author fields in
pyproject.toml. - Project Type: Selection between "Basic", "FastAPI", or "CLI Tool".
- CLI configuration: Option to configure Python CLI entry points.
- Automation: Choices to automatically run
git initand/orpython -m venv .venvin the generated folder structure.
Features
- Interactive Setup: Guided terminal wizard powered by
questionary. - Project Structure Generation: Creates a standardized source layout (
src/project_name/) containing a package package setup (__init__.pyandmain.py). - Template Rendering: Generates configuration files (
pyproject.toml,.gitignore, andREADME.md) using Jinja2 templating. - Automation Support: Optional automated Git initialization and Python virtual environment (
.venv) creation during generation.
Contributing
Contributions are welcome and encouraged! If you'd like to improve Pykickoff, add new project templates (eg: FastAPI or Docker scaffolding), or fix bugs, please follow these steps:
- Fork the repository on GitHub.
- Clone your fork locally and install the dependencies.
- Create a new branch for your feature or bugfix (
git checkout -b feature/add-docker-template). - Make your changes to the codebase. If you are adding new project types, be sure to update
wizard.pyand add the required Jinja2 templates to thetemplates/directory. - Test your changes by running the tool locally to ensure the wizard and generation process execute cleanly.
- Commit your changes with descriptive commit messages.
- Push your branch to your fork (
git push origin feature/add-docker-template). - Open a Pull Request against the main Pykickoff repository.
If you find a bug or have a feature request, feel free to open an issue in the issue tracker!
Directory Layout
This project is structured as a standard Python module package:
pykickoff/
├── __init__.py # Package entrypoint exporter
├── __main__.py # Main execution CLI script
├── generator.py # File creation and Jinja2 rendering logic
├── utils.py # Automation helpers (Git, venv subprocess calls)
├── wizard.py # User prompt questions and CLI validation
└── templates/
└── base/ # Subfolder expected to contain template files
├── README.md.j2
├── gitignore.txt
└── pyproject.toml.j2
Under the Hood
- Validation: Project names are automatically validated using regular expressions to prevent illegal characters in folder and module names.
- Rendering: Values gathered by
wizard.pyare mapped into Jinja2 templates. If a project is specified as a CLI, those conditions are handled dynamically when building out thepyproject.tomlconfiguration. - Process Automation: The tool uses Python's
subprocessmodule to run CLI tools (git,python) directly inside the generated directory paths to ensure seamless environment preparation.
Release Notes
[1.0.0] - Initial Release
Added:
- Interactive CLI wizard using
questionaryto capture user project requirements. - Core generator logic utilizing
Jinja2to dynamically renderpyproject.tomlandREADME.mdfiles. - Regex validation for safe Python package and directory naming.
- Scaffolding for standard
src/directory layouts. - Automation utilities to automatically initialize Git repositories and create Python virtual environments (
.venv).
[2.0.0] - Basic Release
Added:
- Basic python poject setup.
Updated:
- Templates: moved
pyproject.toml.j2to package folder. main.py,generator.pyandwizard.pywith new basic option.test_project_generatorwith new tests for basic options.
[2.1.0] - Basic Release
Updated:
- Python projected option
[2.2.0] - Basic Release
Added:
- Fastapi python poject setup.
Updated:
- Templates: add fastapi folder with
main.py.j2andrequirements.txt.j2 main.py,generator.pyandwizard.pywith new fastapi option.test_project_generatorwith new tests for fastapi options.
[2.3.0] - Basic Release
Added:
- docker option.
Updated:
- Templates: add docker folder with
Dockerfile.j2anddockerignore.txt main.py,generator.pyandwizard.pywith new docker option.test_project_generatorwith new tests for docker options.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pykickoff-2.3.0.tar.gz.
File metadata
- Download URL: pykickoff-2.3.0.tar.gz
- Upload date:
- Size: 541.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
818a9491f664d2b22396a655c64baba24264c0f1861d03d44ad87050548e3f99
|
|
| MD5 |
0695b85343cf828ed0a47826574cea27
|
|
| BLAKE2b-256 |
0a90852c0cd888dc5667215f38cf7ff9917befa485b00dc147952931891eb660
|
File details
Details for the file pykickoff-2.3.0-py3-none-any.whl.
File metadata
- Download URL: pykickoff-2.3.0-py3-none-any.whl
- Upload date:
- Size: 14.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6367e86df314639e0cdab62929f147f28c8d2441ddb2d0d1586134d4060dbc1b
|
|
| MD5 |
3bd8b45c7a5a94dcaf944310623843ef
|
|
| BLAKE2b-256 |
c1d3d82d3c62a692d7d8969c9cfe25b67a303d94aabb1b7e50733f6a54dc892a
|