Metadata-Version: 2.4
Name: pyprefab
Version: 0.6.1
Summary: Python application template for personal use
Author-email: Becky Sweger <bsweger@gmail.com>
License-Expression: MIT
Project-URL: Documentation, https://bsweger.github.io/pyprefab/index.html
Project-URL: Repository, https://github.com/bsweger/pyprefab.git
Project-URL: Changelog, https://github.com/bsweger/pyprefab/blob/main/CHANGELOG.md
Classifier: Development Status :: 4 - Beta
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: structlog
Requires-Dist: rich
Requires-Dist: typer
Requires-Dist: jinja2>=3.1.5
Requires-Dist: pydantic-settings
Dynamic: license-file

# pyprefab

A template-driven command line interface (CLI) that creates the scaffolding
for a fully-functional, modern Python package. The goal of pyprefab is to get
you straight to writing application code by handling project startup tasks
like logging setup and creating a test harness.

![pyprefab demo](https://raw.githubusercontent.com/bsweger/pyprefab/main/docs/source/_static/pyprefab-demo.gif)

The scaffolding includes:

- package files in the [src layout](https://packaging.python.org/en/latest/discussions/src-layout-vs-flat-layout/) format
- `pyproject.toml` with [dependency groups](https://packaging.python.org/en/latest/specifications/dependency-groups/#dependency-groups)
- `CHANGELOG.md`, `CONTRIBUTING.md`, `.gitignore`, and `README.md`
- automated package versioning with [setuptools-scm](https://pypi.org/project/setuptools-scm/)
- [structlog](https://www.structlog.org/)-based pre-configured logging
- a [pytest](https://docs.pytest.org)-based test harness
- a [pre-commit](https://pre-commit.com/) configuration with common plugins like
[ruff](https://docs.astral.sh/ruff/) for linting (optional)
- GitHub workflow that automatically runs code checks, tests, and a test
coverage report
- GitHub workflow for publishing the package to PyPI

## Quickstart

If you have `uv` installed,
[`uv tool run`](https://docs.astral.sh/uv/reference/cli/#uv-tool-run) is the
fastest way to create a new Python package with pyprefab:

```sh
uvx pyprefab
```

Otherwise, use `pip` or `pipx` to install pyprefab:

```sh
python -m pip install pyprefab

python -m pyprefab
```

## Project setup

See [CONTRIBUTING.MD](CONTRIBUTING.md) for information on setting up
a local development environment for pyprefab.
