Skip to content

Commit d72aeca

Browse files
chore(release): prepare 0.2.0 (#202)
* chore(release): prepare 0.2.0 Bump create-python-app-core and create-awesome-python-app to 0.2.0 and document catalog slug resolution plus CI/distribution hardening. Co-authored-by: Cursor <cursoragent@cursor.com> * test: stop hardcoding package version in release checks Co-authored-by: Cursor <cursoragent@cursor.com> --------- Co-authored-by: Cursor <cursoragent@cursor.com>
1 parent 0bcc232 commit d72aeca

8 files changed

Lines changed: 59 additions & 32 deletions

File tree

CHANGELOG.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,27 @@
11
# Changelog
22

3+
## 0.2.0 - 2026-07-17
4+
5+
### Highlights
6+
7+
- Catalog slugs resolve to registry URLs (`--template fastapi-starter` works end-to-end)
8+
- Release prep automation (`prepare_release.py` + `Prepare release PR` workflow)
9+
- Hardened distribution smoke (PyPI/`uvx`, Docker, Homebrew, AUR) with clearer version checks
10+
- AUR publish preflight + post-publish verification
11+
- Cross-platform scaffold smoke (Ubuntu / macOS / Windows) against published `uvx`
12+
13+
### CLI / core
14+
15+
- Resolve `cpa-templates` catalog slugs for `--template` / `--addons` before cloning
16+
- `--list-templates` / `--list-addons` reflect the live catalog (including new starters)
17+
18+
### Tooling
19+
20+
- Changelog-driven GitHub Release notes via `extract_release_notes.py`
21+
- Docs: `VERSIONING.md`, `DISTRIBUTION_SETUP.md`, cross-platform tracking
22+
23+
Paired catalog growth lives in [cpa-templates](https://github.com/Create-Python-App/cpa-templates) (`cli-starter`, `celery-worker`, `django-api`, `uv-workspace-starter`, extension pack, typed FastAPI default, CNA-parity `github-setup`).
24+
325
## 0.1.0
426

527
First public release of:

packages/create-awesome-python-app/pyproject.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
[project]
22
name = "create-awesome-python-app"
3-
version = "0.1.0"
3+
version = "0.2.0"
44
description = "Composable scaffolding CLI for production-ready Python apps"
55
readme = "README.md"
66
requires-python = ">=3.12"
77
license = "MIT"
88
dependencies = [
9-
"create-python-app-core>=0.1.0",
9+
"create-python-app-core>=0.2.0",
1010
"questionary>=2.1.1",
1111
"rich>=15.0.0",
1212
"typer>=0.27.0",
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
"""Create Awesome Python App CLI."""
22

3-
__version__ = "0.1.0"
3+
__version__ = "0.2.0"

packages/create-awesome-python-app/tests/test_cli.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from pathlib import Path
22

33
import pytest
4+
from create_awesome_python_app import __version__
45
from create_awesome_python_app.cli import app
56
from typer.testing import CliRunner
67

@@ -21,7 +22,7 @@ def test_version() -> None:
2122
result = runner.invoke(app, ["--version"])
2223
assert result.exit_code == 0
2324
combined = result.stdout + result.stderr
24-
assert "0.1.0" in combined
25+
assert __version__ in combined
2526

2627

2728
def test_help() -> None:

packages/create-python-app-core/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "create-python-app-core"
3-
version = "0.1.0"
3+
version = "0.2.0"
44
description = "Scaffolding engine for Create Awesome Python App"
55
readme = "README.md"
66
requires-python = ">=3.12"
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = "0.1.0"
1+
__version__ = "0.2.0"

packages/create-python-app-core/tests/test_version.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
1+
import re
2+
13
from create_python_app_core import CPA_USER_AGENT, __version__
24

5+
_SEMVER_RE = re.compile(r"^\d+\.\d+\.\d+(?:[.-][0-9A-Za-z.-]+)?$")
6+
37

48
def test_version_is_semver() -> None:
5-
assert __version__ == "0.1.0"
9+
assert _SEMVER_RE.match(__version__), f"not semver: {__version__!r}"
610

711

812
def test_user_agent_contains_version() -> None:

uv.lock

Lines changed: 25 additions & 25 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)