Metadata-Version: 2.4
Name: pyforge-scaffold
Version: 0.0.0
Summary: A lightweight CLI tool for generating modern Python project structures with best practices built in
Author-email: Ertan Tunç Türk <ertantuncturk61@gmail.com>
Maintainer-email: Ertan Tunç Türk <ertantuncturk61@gmail.com>
License-Expression: MIT
Project-URL: Homepage, https://github.com/ertanturk/pyforge
Project-URL: Repository, https://github.com/ertanturk/pyforge
Project-URL: Documentation, https://github.com/ertanturk/pyforge#readme
Project-URL: Issues, https://github.com/ertanturk/pyforge/issues
Keywords: cli,generator,scaffolding,boilerplate
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Education
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Typing :: Typed
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Software Development :: Testing
Classifier: Topic :: Software Development :: Build Tools
Requires-Python: >=3.12
Description-Content-Type: text/markdown
License-File: LICENSE
Provides-Extra: dev
Requires-Dist: ruff; extra == "dev"
Requires-Dist: mypy; extra == "dev"
Requires-Dist: pytest; extra == "dev"
Requires-Dist: pytest-cov; extra == "dev"
Requires-Dist: bandit; extra == "dev"
Requires-Dist: pip-audit; extra == "dev"
Requires-Dist: pre-commit; extra == "dev"
Requires-Dist: coverage; extra == "dev"
Requires-Dist: build; extra == "dev"
Requires-Dist: twine; extra == "dev"
Dynamic: license-file

# pyforge

pyforge is a lightweight CLI that generates a modern Python project scaffold
with sensible defaults for packaging, linting, testing, typing, and CI.

## Features

- Interactive project setup with input validation
- src-layout package structure
- PEP 621 pyproject.toml generation
- Optional dynamic versioning helper at scripts/setup.py
- Optional GitHub Actions CI workflow
- Ready-to-use test and quality tool configuration

## Install

For local development:

```bash
python -m pip install -e .
```

Global user install (recommended for CLI usage):

Linux/macOS:

```bash
python3 -m pip install --user pyforge
```

Windows:

```powershell
py -m pip install --user pyforge
```

If you use pipx:

```bash
pipx install pyforge
```

## Usage

Run the CLI:

```bash
pyforge
```

Answer the prompts, review the summary, and confirm generation.

By default, pyforge can also bootstrap a .venv inside the generated project and
install either:

- `-e .[dev]` when recommended packages are enabled
- `-e .` otherwise

## Development Setup

```bash
python -m pip install -e .[dev]
pre-commit install
```

## Build Package

Create source and wheel distributions:

```bash
python -m build
```

The artifacts will be created under dist/.

## Validate Package Metadata

Check long description and distribution metadata:

```bash
python -m twine check dist/*
```

## Upload To PyPI

1. Create an API token in your PyPI account.
2. Set it as an environment variable:

```bash
export TWINE_USERNAME=__token__
export TWINE_PASSWORD=pypi-XXXXXXXXXXXXXXXXXXXXXXXX
```

3. Upload:

```bash
python -m twine upload dist/*
```

Use TestPyPI first if you want a dry run:

```bash
python -m twine upload --repository testpypi dist/*
```
