Metadata-Version: 2.4
Name: pyforge-scaffold
Version: 0.0.3
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-scaffold
Project-URL: Repository, https://github.com/ertanturk/pyforge-scaffold
Project-URL: Documentation, https://github.com/ertanturk/pyforge-scaffold#readme
Project-URL: Issues, https://github.com/ertanturk/pyforge-scaffold/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 CLI tool that scaffolds modern Python projects with sensible defaults for packaging, linting, testing, typing, and CI.

## What It Generates

- Interactive project setup with input validation
- `src/`-layout package structure
- PEP 621-compliant `pyproject.toml`
- Optional dynamic versioning helper in `scripts/setup.py`
- Optional GitHub Actions workflow
- Ready-to-use quality tooling configuration

## Installation

### Install from source (development)

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

### Install for CLI usage

Linux/macOS:

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

```

Windows:

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

With `pipx`:

```bash
pipx install pyforge-scaffold
```

## Usage

Run:

```bash
pyforge
```

Follow the prompts, review the summary, and confirm project generation.

The generated project can optionally include a local virtual environment and install:

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

## Development

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

## Build Distributions

```bash
python -m pip install --upgrade pip setuptools wheel build
python3 scripts/setup.py sdist bdist_wheel
```

Build artifacts are written to `dist/`.

## Validate Distributions

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

## Publish to PyPI

1. Create a PyPI API token.
2. Export credentials:

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

3. Upload distributions:

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

Optional TestPyPI dry run:

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