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

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.

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.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.

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-1.2.0.tar.gz (534.7 kB view details)

Uploaded Source

Built Distribution

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

pykickoff-1.2.0-py3-none-any.whl (8.1 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for pykickoff-1.2.0.tar.gz
Algorithm Hash digest
SHA256 aa5dca7b10157ef227ea2d9466ae84f3f8d2eeb9cb1c5a89fefac197f2c46a93
MD5 9cc6a3666cb8d1aa30c88dc0b8f28cf2
BLAKE2b-256 d9ae1a1b1199f188182974f951c4d6a6827dc66b7ca10f45df5a5130e36c7eb8

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for pykickoff-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 56b9a3d9c076c51c6d30e1c0c0ef8be66975a2fbbdd6e65ba0c48fdd7e7d21a3
MD5 bbbc9ce6e68e3aa707bcf7bffd250288
BLAKE2b-256 26dd796868045cf3bb3f5341c8532596f7c9075b6ba46c8987026d0b1f806dd5

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