Skip to main content

Command-line tool designed to take the friction out of starting a new Python project

Project description

Pykickoff

PyPI Downloads PyPI version PyPI - Python Version Tests Linux macOS Intel macOS ARM

Ruff Code style: black Checked with mypy

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 also you can check our wesite Pykickoff.


Usage

  1. Install Pykickoff
python -m pip install pykickoff
  1. 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.md and 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 init and/or python -m venv .venv in 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__.py and main.py).
  • Template Rendering: Generates configuration files (pyproject.toml, .gitignore, and README.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:

  1. Fork the repository on GitHub.
  2. Clone your fork locally and install the dependencies.
  3. Create a new branch for your feature or bugfix (git checkout -b feature/add-docker-template).
  4. Make your changes to the codebase. If you are adding new project types, be sure to update wizard.py and add the required Jinja2 templates to the templates/ directory.
  5. Test your changes by running the tool locally to ensure the wizard and generation process execute cleanly.
  6. Commit your changes with descriptive commit messages.
  7. Push your branch to your fork (git push origin feature/add-docker-template).
  8. 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/           # Jinja2 template categories
    ├── base/
    ├── cicd/
    ├── docker/
    ├── fastapi/
    └── package/

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.py are mapped into Jinja2 templates. If a project is specified as a CLI, those conditions are handled dynamically when building out the pyproject.toml configuration.
  • Process Automation: The tool uses Python's subprocess module to run CLI tools (git, python) directly inside the generated directory paths to ensure seamless environment preparation.

Release Notes

[2.4.0] - CI/CD & Packaged Project Extras

Added:

  • GitHub Actions CI/CD pipeline option with automated test file scaffolding (test_basic.py / test_api.py).
  • Extensive package templates for the "Packaged Project" type (choose between .pre-commit-config.yaml, MANIFEST.in, requirements.txt, requirements_dev.txt, and tox.ini).
  • Full dependency automation: automatically installs requirements.txt / requirements_dev.txt and executes pre-commit install if chosen.

Updated:

  • Separated Jinja2 template environments into distinct categorical sub-directories (base, package, fastapi, docker, cicd).
  • wizard.py expanded with multi-select checkboxes for package extras and new yes/no flows for GitHub actions.
  • __main__.py branched out execution methods (run_basic, run_package, run_fastapi) for cleaner project generation logic.

[2.3.0] - Docker Release

Added:

  • Docker option.

Updated:

  • Templates: add docker folder with Dockerfile.j2 and dockerignore.txt
  • main.py, generator.py and wizard.py with new docker option.
  • test_project_generator with new tests for docker options.

[2.2.0] - FastAPI Release

Added:

  • FastAPI python project setup.

Updated:

  • Templates: add fastapi folder with main.py.j2 and requirements.txt.j2
  • main.py, generator.py and wizard.py with new fastapi option.
  • test_project_generator with new tests for fastapi options.

[2.1.0] - Minor Updates

Updated:

  • Python project options.

[2.0.0] - Basic Release

Added:

  • Basic python project setup.

Updated:

  • Templates: moved pyproject.toml.j2 to package folder.
  • main.py, generator.py and wizard.py with new basic option.
  • test_project_generator with new tests for basic options.

[1.0.0] - Initial Release

Added:

  • Interactive CLI wizard using questionary to capture user project requirements.
  • Core generator logic utilizing Jinja2 to dynamically render pyproject.toml and README.md files.
  • 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).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pykickoff-2.4.1.tar.gz (544.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pykickoff-2.4.1-py3-none-any.whl (17.8 kB view details)

Uploaded Python 3

File details

Details for the file pykickoff-2.4.1.tar.gz.

File metadata

  • Download URL: pykickoff-2.4.1.tar.gz
  • Upload date:
  • Size: 544.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.0

File hashes

Hashes for pykickoff-2.4.1.tar.gz
Algorithm Hash digest
SHA256 828ddefa300a809b3dec0ded42e92e0e107715a9e37fb73ed8ac49fb535388fb
MD5 7009dd92d4d111aec4ea24afe96ed5de
BLAKE2b-256 ad5347ea2eef7ed2a871324bc938cbacf25a0d54141bf6814c2ef4320cdc6132

See more details on using hashes here.

File details

Details for the file pykickoff-2.4.1-py3-none-any.whl.

File metadata

  • Download URL: pykickoff-2.4.1-py3-none-any.whl
  • Upload date:
  • Size: 17.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.0

File hashes

Hashes for pykickoff-2.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 854a97246c935301bdf02ffa4c0a53d60c1d73d795dd28ffc44f5922ddbcf21d
MD5 ca44f0b59a07b82fe5bc03fa4ace6a8f
BLAKE2b-256 1d59d817af3fe24afd43aeb7a34969ea9bf4fbff0fc7c848f8edab9989957225

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page