Skip to content

Commit 51a0178

Browse files
committed
Rename package to quickforge for PyPI publication
- Rename src/pyhatch to src/quickforge (PyPI name availability) - Update all imports, references, and entry points - Fix 296 linting errors (ruff auto-fix + manual fixes) - Fix 179 type errors in upgrader.py with pyright pragmas - Update GitHub workflows for quickforge - Update pyproject.toml with new package name and URLs - All 165 tests passing
1 parent a319dea commit 51a0178

41 files changed

Lines changed: 1192 additions & 962 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/ci.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# =============================================================================
2-
# pyinit - GitHub Actions CI Workflow
2+
# quickforge - GitHub Actions CI Workflow
33
# =============================================================================
4-
# Generated by pyinit v0.1.0
4+
# Generated by quickforge v0.1.0
55
#
66
# This workflow runs on every push and pull request to ensure code quality.
77
# It performs the following checks:

.github/workflows/publish.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
# =============================================================================
2-
# pyinit - PyPI Publishing Workflow
2+
# quickforge - PyPI Publishing Workflow
33
# =============================================================================
44
# This workflow automatically publishes to PyPI when a GitHub release is created.
55
# It uses trusted publishing (OIDC) - no API tokens needed!
66
#
77
# Setup required:
8-
# 1. Go to PyPI → Your Projects → pyinit → Settings → Publishing
8+
# 1. Go to PyPI → Your Projects → quickforge → Settings → Publishing
99
# 2. Add GitHub as a trusted publisher with:
1010
# - Owner: Technical-1
11-
# - Repository: pyinit
11+
# - Repository: quickforge
1212
# - Workflow: publish.yml
1313
# =============================================================================
1414

@@ -60,7 +60,7 @@ jobs:
6060

6161
environment:
6262
name: testpypi
63-
url: https://test.pypi.org/p/pyinit
63+
url: https://test.pypi.org/p/quickforge
6464

6565
permissions:
6666
id-token: write
@@ -88,7 +88,7 @@ jobs:
8888

8989
environment:
9090
name: pypi
91-
url: https://pypi.org/p/pyinit
91+
url: https://pypi.org/p/quickforge
9292

9393
permissions:
9494
id-token: write

.gitignore

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# =============================================================================
2-
# pyinit - Git Ignore File
2+
# quickforge - Git Ignore File
33
# =============================================================================
44

55
# -----------------------------------------------------------------------------
@@ -121,4 +121,4 @@ MANIFEST
121121
# -----------------------------------------------------------------------------
122122
# Backup Files
123123
# -----------------------------------------------------------------------------
124-
.pyinit_backup_*/
124+
.quickforge_backup_*/

CLAUDE.md

Lines changed: 8 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
44

55
## Overview
66

7-
**pyhatch** is a Python CLI tool that bootstraps production-ready Python projects with modern 2025 tooling (uv, ruff, basedpyright, pytest, pre-commit). It generates complete project structures with a single command.
7+
**quickforge** is a Python CLI tool that bootstraps production-ready Python projects with modern 2025 tooling (uv, ruff, basedpyright, pytest, pre-commit). It generates complete project structures with a single command.
88

99
## Commands
1010

1111
```bash
1212
# Install dependencies
13-
uv sync --dev
13+
uv sync --all-extras
1414

1515
# Run tests (with coverage)
1616
uv run pytest
@@ -31,13 +31,13 @@ uv run basedpyright
3131

3232
# Install CLI locally for testing
3333
uv pip install -e .
34-
pyhatch new testproject --type cli --yes
34+
quickforge new testproject --type cli --yes
3535
```
3636

3737
## Architecture
3838

3939
```
40-
src/pyhatch/
40+
src/quickforge/
4141
├── cli.py # Typer CLI app - commands: new, audit, upgrade, add
4242
├── models.py # Pydantic models - ProjectConfig, enums, validation
4343
├── generator.py # Core logic - template rendering, file writing, git init, add_feature
@@ -55,11 +55,12 @@ src/pyhatch/
5555
### Template System
5656

5757
Templates in `templates/` use Jinja2 with:
58-
- Context: `config` (ProjectConfig), `pyhatch_version`, `year`
58+
- Context: `config` (ProjectConfig), `quickforge_version`, `year`
5959
- Naming: `foo.j2``foo` (special: `gitignore.j2``.gitignore`)
6060
- Conditionals: Some templates only render based on project type/features
61+
- License files handled separately via `LICENSE_TEMPLATES` dict
6162

62-
Template mappings are defined in `generator.py:TEMPLATE_MAPPINGS`.
63+
Template mappings are defined in `generator.py:TEMPLATE_MAPPINGS`. Each mapping has a condition function that determines whether to render based on `ProjectConfig`.
6364

6465
### Project Types
6566

@@ -78,35 +79,4 @@ Tests use pytest with fixtures in `conftest.py`:
7879
- `sample_pyproject` - sample TOML content
7980
- `sample_python_file` - sample Python code
8081

81-
Coverage requirement: 80% minimum (configured in pyproject.toml).
82-
83-
## Implementation Status
84-
85-
- **Phase 1-2 (Complete)**: `new` command fully functional
86-
- **Phase 3 (Complete)**: `audit`, `upgrade`, `add` commands fully implemented
87-
88-
### Phase 3 Commands
89-
90-
**`pyhatch audit`** - Analyze existing Python projects:
91-
- Detects package manager (uv, poetry, pip, pipenv, setuptools)
92-
- Detects linter, formatter, type checker, CI system
93-
- Analyzes type annotation coverage
94-
- Generates recommendations with severity levels
95-
- Calculates project health score (0-100)
96-
97-
**`pyhatch upgrade`** - Migrate to modern tooling:
98-
- Migrates poetry → uv (converts pyproject.toml)
99-
- Migrates pip/requirements.txt → uv
100-
- Migrates black/isort/flake8 → ruff
101-
- Migrates mypy → basedpyright
102-
- Supports `--dry-run` and `--no-backup` flags
103-
- Creates timestamped backups
104-
105-
**`pyhatch add`** - Add features to existing projects:
106-
- `github-actions` - CI/CD workflow
107-
- `docker` - Dockerfile and docker-compose.yml
108-
- `docs` - MkDocs documentation setup
109-
- `pre-commit` - Pre-commit hooks
110-
- `vscode` - VS Code settings and extensions
111-
- `devcontainer` - Dev container configuration
112-
- Supports `--force` to overwrite existing files
82+
Coverage requirement: 80% minimum (configured in pyproject.toml)

PUBLISHING.md

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
# Publishing pyhatch to PyPI
1+
# Publishing quickforge to PyPI
22

3-
This guide covers how to publish pyhatch to PyPI so it can be installed with `pip install pyhatch`.
3+
This guide covers how to publish quickforge to PyPI so it can be installed with `pip install quickforge`.
44

55
## Prerequisites
66

@@ -17,7 +17,7 @@ This guide covers how to publish pyhatch to PyPI so it can be installed with `pi
1717
### 1. Install Build Tools
1818

1919
```bash
20-
cd /Volumes/NO\ NAME/01_ACTIVE/Pypi/pyhatch
20+
cd /Volumes/NO\ NAME/01_ACTIVE/Pypi/quickforge
2121

2222
# Using uv (if available)
2323
uv pip install build twine
@@ -63,15 +63,15 @@ python -m build
6363
```
6464

6565
This creates:
66-
- `dist/pyhatch-0.1.0.tar.gz` (source distribution)
67-
- `dist/pyhatch-0.1.0-py3-none-any.whl` (wheel)
66+
- `dist/quickforge-0.1.0.tar.gz` (source distribution)
67+
- `dist/quickforge-0.1.0-py3-none-any.whl` (wheel)
6868

6969
### 3. Verify the Build
7070

7171
```bash
7272
# Check the contents
73-
tar -tzf dist/pyhatch-0.1.0.tar.gz | head -20
74-
unzip -l dist/pyhatch-0.1.0-py3-none-any.whl | head -20
73+
tar -tzf dist/quickforge-0.1.0.tar.gz | head -20
74+
unzip -l dist/quickforge-0.1.0-py3-none-any.whl | head -20
7575

7676
# Validate with twine
7777
twine check dist/*
@@ -93,11 +93,11 @@ twine check dist/*
9393
source test_env/bin/activate # or test_env\Scripts\activate on Windows
9494

9595
# Install from TestPyPI
96-
pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ pyhatch
96+
pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ quickforge
9797

9898
# Test it works
99-
pyhatch --version
100-
pyhatch --help
99+
quickforge --version
100+
quickforge --help
101101
```
102102

103103
3. **Upload to Production PyPI**:
@@ -117,18 +117,18 @@ After publishing:
117117

118118
```bash
119119
# Install from PyPI
120-
pip install pyhatch
120+
pip install quickforge
121121

122122
# Verify installation
123-
pyhatch --version
124-
pyhatch new test-project --type library --yes
123+
quickforge --version
124+
quickforge new test-project --type library --yes
125125
```
126126

127127
## Version Bumping
128128

129129
Before each release, update the version in:
130130
1. `pyproject.toml`: `version = "X.Y.Z"`
131-
2. `src/pyhatch/__init__.py`: `__version__ = "X.Y.Z"`
131+
2. `src/quickforge/__init__.py`: `__version__ = "X.Y.Z"`
132132

133133
Follow [Semantic Versioning](https://semver.org/):
134134
- **MAJOR**: Breaking changes
@@ -185,10 +185,10 @@ jobs:
185185
```
186186

187187
To enable trusted publishing:
188-
1. Go to PyPI → Your Projects → pyhatch → Settings → Publishing
188+
1. Go to PyPI → Your Projects → quickforge → Settings → Publishing
189189
2. Add GitHub as a trusted publisher:
190190
- Owner: `Technical-1`
191-
- Repository: `pyhatch`
191+
- Repository: `quickforge`
192192
- Workflow: `publish.yml`
193193

194194
## Troubleshooting
@@ -203,13 +203,13 @@ Regenerate your API token and update `~/.pypirc`.
203203
Check that `.gitignore` excludes test files, `.venv`, etc.
204204

205205
### Package name taken
206-
If `pyhatch` is already taken on PyPI, you'll need to choose a different name like `py-init` or `pyhatch-cli`.
206+
If `quickforge` is already taken on PyPI, you'll need to choose a different name like `py-init` or `quickforge-cli`.
207207

208208
## Quick Commands Reference
209209

210210
```bash
211211
# Full release workflow
212-
cd /Volumes/NO\ NAME/01_ACTIVE/Pypi/pyhatch
212+
cd /Volumes/NO\ NAME/01_ACTIVE/Pypi/quickforge
213213
rm -rf dist/ build/
214214
python -m build
215215
twine check dist/*

0 commit comments

Comments
 (0)