|
1 | | -# create-python-app |
2 | | - |
3 | | -Composable scaffolding CLI for production-ready Python apps. |
4 | | - |
5 | | -> **Status:** bootstrapping. Roadmap: [#1](https://github.com/Create-Python-App/create-python-app/issues/1). |
6 | | -
|
7 | | - |
8 | | -## Install (preview) |
9 | | - |
10 | | -Once published to PyPI: |
11 | | - |
12 | | -```bash |
13 | | -uvx create-awesome-python-app@latest my-app |
14 | | -``` |
15 | | - |
16 | | -Until the first release, use the workspace CLI stub: |
17 | | - |
18 | | -```bash |
19 | | -uv sync |
20 | | -uv run create-awesome-python-app |
21 | | -``` |
22 | | - |
23 | | -## License |
24 | | - |
25 | | -MIT — see [LICENSE](./LICENSE). |
26 | | - |
27 | | -## Monorepo layout (uv workspaces) |
28 | | - |
29 | | -This repository is a **virtual uv workspace**: the root is not published; packages live under `packages/*` and share one `uv.lock` / `.venv`. |
30 | | - |
31 | | -```text |
32 | | -create-python-app/ # virtual workspace root (no [project] table) |
33 | | -├── pyproject.toml # [tool.uv.workspace] members = ["packages/*"] |
34 | | -├── uv.lock |
35 | | -├── .venv/ # shared environment (gitignored later) |
36 | | -└── packages/ |
37 | | - ├── create-python-app-core/ # scaffolding engine |
38 | | - └── create-awesome-python-app/ # CLI (depends on core via workspace) |
39 | | -``` |
40 | | - |
41 | | -### Setup |
42 | | - |
43 | | -```bash |
44 | | -# Requires uv: https://docs.astral.sh/uv/ |
45 | | -uv sync |
46 | | -``` |
47 | | - |
48 | | - |
49 | | - |
50 | | -## Development commands |
51 | | - |
52 | | -From the repo root (requires [uv](https://docs.astral.sh/uv/)): |
53 | | - |
54 | | -| Task | Make | Equivalent | |
55 | | -|------|------|------------| |
56 | | -| Install workspace | `make sync` | `uv sync` | |
57 | | -| Tests | `make test` | `uv run pytest` | |
58 | | -| Lint | `make lint` | `uv run ruff check .` | |
59 | | -| Type-check | `make typecheck` | `uv run pyright` | |
60 | | -| Build packages | `make build` | `uv build --all` | |
61 | | - |
62 | | -> Install git hooks: `uv run pre-commit install` |
63 | | -> |
64 | | -> Ruff, Pyright, and pytest are wired in Epic 2 (`#17`–`#20`). Until then, `make lint` / `test` / `typecheck` will fail if those tools are not installed yet — that is expected. |
65 | | -
|
66 | | -## Python version |
67 | | - |
68 | | -- **Pin file:** `.python-version` → `3.12` |
69 | | -- **Constraint:** every workspace member sets `requires-python = ">=3.12"` |
70 | | -- **CI:** workflows (Epic 6 / #45) must install Python 3.12+ matching this pin |
71 | | - |
72 | | -```bash |
73 | | -uv python install # respects .python-version when needed |
74 | | -uv sync |
75 | | -``` |
76 | | - |
77 | | -### Reference |
78 | | - |
79 | | -- [uv workspaces handbook](https://pydevtools.com/handbook/how-to/how-to-set-up-a-python-monorepo-with-uv-workspaces/) |
80 | | -- Node parity: [Create-Node-App/create-node-app](https://github.com/Create-Node-App/create-node-app) |
| 1 | +# create-python-app\n\n[](https://github.com/Create-Python-App/create-python-app/actions/workflows/test.yml) |
| 2 | +[](https://github.com/Create-Python-App/create-python-app/actions/workflows/lint.yml) |
| 3 | +[](https://github.com/Create-Python-App/create-python-app/actions/workflows/type-check.yml) |
| 4 | +[](./LICENSE) |
| 5 | +<!-- PyPI / coverage badges activate after first publish -->\nComposable scaffolding CLI for production-ready Python apps.\n\n> **Status:** bootstrapping. Roadmap: [#1](https://github.com/Create-Python-App/create-python-app/issues/1).\n\n\n## Install (preview)\n\nOnce published to PyPI:\n\n```bash\nuvx create-awesome-python-app@latest my-app\n```\n\nUntil the first release, use the workspace CLI stub:\n\n```bash\nuv sync\nuv run create-awesome-python-app\n```\n\n## License\n\nMIT — see [LICENSE](./LICENSE).\n\n## Monorepo layout (uv workspaces)\n\nThis repository is a **virtual uv workspace**: the root is not published; packages live under `packages/*` and share one `uv.lock` / `.venv`.\n\n```text\ncreate-python-app/ # virtual workspace root (no [project] table)\n├── pyproject.toml # [tool.uv.workspace] members = ["packages/*"]\n├── uv.lock\n├── .venv/ # shared environment (gitignored later)\n└── packages/\n ├── create-python-app-core/ # scaffolding engine\n └── create-awesome-python-app/ # CLI (depends on core via workspace)\n```\n\n### Setup\n\n```bash\n# Requires uv: https://docs.astral.sh/uv/\nuv sync\n```\n\n\n\n## Development commands\n\nFrom the repo root (requires [uv](https://docs.astral.sh/uv/)):\n\n| Task | Make | Equivalent |\n|------|------|------------|\n| Install workspace | `make sync` | `uv sync` |\n| Tests | `make test` | `uv run pytest` |\n| Lint | `make lint` | `uv run ruff check .` |\n| Type-check | `make typecheck` | `uv run pyright` |\n| Build packages | `make build` | `uv build --all` |\n\n> Install git hooks: `uv run pre-commit install`\n>\n> Ruff, Pyright, and pytest are wired in Epic 2 (`#17`–`#20`). Until then, `make lint` / `test` / `typecheck` will fail if those tools are not installed yet — that is expected.\n\n## Python version\n\n- **Pin file:** `.python-version` → `3.12`\n- **Constraint:** every workspace member sets `requires-python = ">=3.12"`\n- **CI:** workflows (Epic 6 / #45) must install Python 3.12+ matching this pin\n\n```bash\nuv python install # respects .python-version when needed\nuv sync\n```\n\n### Reference\n\n- [uv workspaces handbook](https://pydevtools.com/handbook/how-to/how-to-set-up-a-python-monorepo-with-uv-workspaces/)\n- Node parity: [Create-Node-App/create-node-app](https://github.com/Create-Node-App/create-node-app)\n |
0 commit comments