Metadata-Version: 2.4
Name: python-project-foundry
Version: 1.0.0
Summary: Scaffold opinionated, production-ready Python package/library repositories.
Project-URL: Homepage, https://github.com/ryancswallace/python-project-foundry
Project-URL: Changelog, https://github.com/ryancswallace/python-project-foundry/blob/main/CHANGELOG.md
Project-URL: Documentation, https://ryancswallace.github.io/python-project-foundry/
Project-URL: Issues, https://github.com/ryancswallace/python-project-foundry/issues
Project-URL: Source, https://github.com/ryancswallace/python-project-foundry
Author-email: Ryan Wallace <ryancswallace@gmail.com>
Maintainer-email: Ryan Wallace <ryancswallace@gmail.com>
License-Expression: MIT
License-File: LICENSE
Keywords: copier,copier-template,project-generator,project-template,python,python-template,scaffolding,template
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Software Development
Classifier: Topic :: Utilities
Requires-Python: <3.15,>=3.11
Requires-Dist: copier~=9.10
Description-Content-Type: text/markdown

<!-- markdownlint-disable MD041 -->
[![Copier](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/copier-org/copier/master/img/badge/badge-grayscale-inverted-border-orange.json)](https://github.com/copier-org/copier)
[![CI](https://github.com/ryancswallace/python-project-foundry/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/ryancswallace/python-project-foundry/actions/workflows/ci.yml)
[![Documentation](https://github.com/ryancswallace/python-project-foundry/actions/workflows/docs.yml/badge.svg?branch=main)](https://github.com/ryancswallace/python-project-foundry/actions/workflows/docs.yml)
[![Python 3.11-3.14](https://img.shields.io/badge/python-3.11%20%7C%203.12%20%7C%203.13%20%7C%203.14-3776AB?logo=python&logoColor=white)](https://github.com/ryancswallace/python-project-foundry/blob/main/pyproject.toml)
[![Typed with basedpyright](https://img.shields.io/badge/types-basedpyright-2f6fdd)](https://github.com/DetachHead/basedpyright)
[![Linted with Ruff](https://img.shields.io/badge/lint-Ruff-46a2f1)](https://docs.astral.sh/ruff/)

# Python Project Foundry

Scaffold opinionated, production-ready Python package/library repositories
with one command.

## Create a package/library repository

With [`uv`](https://docs.astral.sh/uv/getting-started/installation/) installed,
scaffold a repository directly from the published package:

```console
uvx python-project-foundry /path/to/new/project
```

If `uv` is not installed, macOS and Linux users can bootstrap it and scaffold
the repository with one command:

```console
curl -LsSf https://raw.githubusercontent.com/ryancswallace/python-project-foundry/main/ppf | sh -s -- /path/to/new/project
```

The launcher installs a compatible `uv` version when necessary, then runs
Python Project Foundry in an isolated environment. No repository clone or
separate setup command is required.

Both commands prompt for the template's answers and execute the generated
repository's setup tasks. Run
`uvx python-project-foundry template --help` to see options for unattended
generation, overwriting files, previewing changes, and skipping setup tasks.

## Update a generated repository

From a clean generated repository, preview and apply the template version
bundled with the installed Foundry release:

```console
uvx --refresh python-project-foundry update --pretend
uvx --refresh python-project-foundry update
make check
```

Copier preserves repository changes where possible and reports conflicts for
manual review.

## Contributor setup

For work on Python Project Foundry itself, `make setup` installs `uv` when
needed and syncs the complete development environment:

```console
make setup
make check
```
