create-awesome-python-app 0.2.5__tar.gz → 0.2.7__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (24) hide show
  1. create_awesome_python_app-0.2.7/PKG-INFO +622 -0
  2. create_awesome_python_app-0.2.7/README.md +606 -0
  3. {create_awesome_python_app-0.2.5 → create_awesome_python_app-0.2.7}/pyproject.toml +2 -2
  4. {create_awesome_python_app-0.2.5 → create_awesome_python_app-0.2.7}/src/create_awesome_python_app/__init__.py +1 -1
  5. {create_awesome_python_app-0.2.5 → create_awesome_python_app-0.2.7}/src/create_awesome_python_app/catalog.py +219 -64
  6. {create_awesome_python_app-0.2.5 → create_awesome_python_app-0.2.7}/src/create_awesome_python_app/cli.py +150 -15
  7. create_awesome_python_app-0.2.7/tests/conftest.py +39 -0
  8. {create_awesome_python_app-0.2.5 → create_awesome_python_app-0.2.7}/tests/test_cache_cmds.py +69 -0
  9. create_awesome_python_app-0.2.7/tests/test_catalog.py +21 -0
  10. {create_awesome_python_app-0.2.5 → create_awesome_python_app-0.2.7}/tests/test_catalog_fetch.py +40 -1
  11. {create_awesome_python_app-0.2.5 → create_awesome_python_app-0.2.7}/tests/test_catalog_resolve.py +29 -0
  12. {create_awesome_python_app-0.2.5 → create_awesome_python_app-0.2.7}/tests/test_cli.py +122 -10
  13. {create_awesome_python_app-0.2.5 → create_awesome_python_app-0.2.7}/tests/test_cpa_templates_integration.py +21 -0
  14. create_awesome_python_app-0.2.5/PKG-INFO +0 -42
  15. create_awesome_python_app-0.2.5/README.md +0 -26
  16. create_awesome_python_app-0.2.5/tests/test_catalog.py +0 -13
  17. {create_awesome_python_app-0.2.5 → create_awesome_python_app-0.2.7}/.gitignore +0 -0
  18. {create_awesome_python_app-0.2.5 → create_awesome_python_app-0.2.7}/assets/hero.svg +0 -0
  19. {create_awesome_python_app-0.2.5 → create_awesome_python_app-0.2.7}/src/create_awesome_python_app/cache.py +0 -0
  20. {create_awesome_python_app-0.2.5 → create_awesome_python_app-0.2.7}/src/create_awesome_python_app/prompt_style.py +0 -0
  21. {create_awesome_python_app-0.2.5 → create_awesome_python_app-0.2.7}/tests/test_cache_env.py +0 -0
  22. {create_awesome_python_app-0.2.5 → create_awesome_python_app-0.2.7}/tests/test_flags.py +0 -0
  23. {create_awesome_python_app-0.2.5 → create_awesome_python_app-0.2.7}/tests/test_interactive.py +0 -0
  24. {create_awesome_python_app-0.2.5 → create_awesome_python_app-0.2.7}/tests/test_smoke.py +0 -0
@@ -0,0 +1,622 @@
1
+ Metadata-Version: 2.4
2
+ Name: create-awesome-python-app
3
+ Version: 0.2.7
4
+ Summary: Composable scaffolding CLI for production-ready Python apps
5
+ Project-URL: Homepage, https://github.com/Create-Python-App/create-python-app
6
+ Project-URL: Repository, https://github.com/Create-Python-App/create-python-app
7
+ Project-URL: Issues, https://github.com/Create-Python-App/create-python-app/issues
8
+ Project-URL: Changelog, https://github.com/Create-Python-App/create-python-app/blob/main/CHANGELOG.md
9
+ License-Expression: MIT
10
+ Requires-Python: >=3.12
11
+ Requires-Dist: create-python-app-core>=0.2.6
12
+ Requires-Dist: questionary>=2.1.1
13
+ Requires-Dist: rich>=15.0.0
14
+ Requires-Dist: typer>=0.27.0
15
+ Description-Content-Type: text/markdown
16
+
17
+ <!--lint disable double-link awesome-heading awesome-git-repo-age awesome-toc-->
18
+
19
+ <div align="center">
20
+
21
+ <img src="https://raw.githubusercontent.com/Create-Python-App/create-python-app/main/packages/create-awesome-python-app/assets/hero.svg" alt="Create Awesome Python App banner" width="100%" />
22
+
23
+ # Create Awesome Python App
24
+
25
+ **One command. Any stack.** Generate production-ready Python apps by composing templates, addons, and AI-ready conventions.
26
+
27
+ From blank folder to a working FastAPI, Django, Celery, CLI, or uv workspace project with modern tooling and team-friendly automation.
28
+
29
+ [![PyPI][pypiversion]][pypiurl]
30
+ [![Python][pythonbadge]][pythonurl]
31
+ [![Stars][starsbadge]][starsurl]
32
+ [![License: MIT][licensebadge]][licenseurl]
33
+
34
+ [![AUR][aurbadge]][aururl]
35
+ [![Homebrew][homebrewbadge]][homebrewurl]
36
+ [![Docker][dockerbadge]][dockerurl]
37
+ [![Smoke tests][smokebadge]][smokeurl]
38
+
39
+ [![Tests][testsbadge]][testsurl]
40
+ [![Lint][lintbadge]][linturl]
41
+ [![Typecheck][typecheckbadge]][typecheckurl]
42
+ [![MegaLinter][megalinterbadge]][megalinterurl]
43
+ [![Shellcheck][shellcheckbadge]][shellcheckurl]
44
+ [![Commit Activity][commitactivitybadge]][commitactivityurl]
45
+ [![Discord](https://img.shields.io/discord/1527933660764831825?label=Discord&logo=discord&logoColor=white)](https://discord.gg/dwFTsR7fK2)
46
+
47
+ **[Official Site](https://create-awesome-python-app.vercel.app)** · [Templates](https://create-awesome-python-app.vercel.app/templates) · [Extensions](https://create-awesome-python-app.vercel.app/extensions) · [Docs](https://create-awesome-python-app.vercel.app/docs) · [GitHub](https://github.com/Create-Python-App/create-python-app) · [PyPI](https://pypi.org/project/create-awesome-python-app/)
48
+
49
+ </div>
50
+
51
+ ---
52
+
53
+ ## Install
54
+
55
+ **uv (recommended):**
56
+
57
+ ```bash
58
+ uvx create-awesome-python-app@latest my-app
59
+ ```
60
+
61
+ **pipx:**
62
+
63
+ ```bash
64
+ pipx run create-awesome-python-app my-app
65
+ ```
66
+
67
+ **Homebrew (macOS / Linux):**
68
+
69
+ ```bash
70
+ brew tap Create-Python-App/tap
71
+ brew install create-awesome-python-app
72
+ ```
73
+
74
+ **AUR (Arch Linux):**
75
+
76
+ ```bash
77
+ yay -S create-awesome-python-app # or: paru -S create-awesome-python-app
78
+ ```
79
+
80
+ **Docker:**
81
+
82
+ ```bash
83
+ docker run --rm -it -v "${PWD}:/app" -w /app \
84
+ ulisesjeremias/create-awesome-python-app:latest my-app \
85
+ --template fastapi-starter
86
+ ```
87
+
88
+ Interactive by default outside CI. For automation, run headless with flags:
89
+
90
+ ```bash
91
+ uvx create-awesome-python-app my-api \
92
+ --template fastapi-starter \
93
+ --addons github-setup \
94
+ --addons fastapi-sqlalchemy \
95
+ --no-interactive
96
+ ```
97
+
98
+ | If you want... | Start here |
99
+ | ----------------------------- | ------------------------------------------------------- |
100
+ | A guided local setup | `uvx create-awesome-python-app@latest my-app` |
101
+ | A repeatable CI/platform flow | `--no-interactive` with explicit flags |
102
+ | Your company starter | `--template <github-url>` or `--template file://` |
103
+ | Private standards layered in | `--extend <url>` |
104
+
105
+ ### Shell completion
106
+
107
+ ```bash
108
+ create-awesome-python-app --install-completion # bash / zsh / fish
109
+ create-awesome-python-app --show-completion # print script only
110
+ ```
111
+
112
+ After installing, restart the shell (or `source` your profile) and tab-complete
113
+ flags such as `--template`, `--addons`, and `cache` subcommands.
114
+
115
+ ---
116
+
117
+ ## Why CPA?
118
+
119
+ | Capability | Value |
120
+ | -------------------------------- | ---------------------------------------------------------------------------------------------- |
121
+ | **Composable by design** | Start with a template, then layer only the addons your project actually needs. |
122
+ | **Production-ready defaults** | uv, Ruff, Pyright, tests, docs, and practical DX defaults out of the box. |
123
+ | **AI-ready from day one** | Supported templates generate `AGENTS.md` so coding agents understand the project context. |
124
+ | **CI and platform friendly** | Use `--no-interactive`, `--set`, `--template <url>`, and `--extend <url>` for repeatable runs. |
125
+
126
+ ---
127
+
128
+ ## Composition Model
129
+
130
+ ```text
131
+ template -> addons -> custom options -> install -> git init -> AI-ready project
132
+ ```
133
+
134
+ You can mix catalog templates and addons with your own GitHub or `file://` sources.
135
+
136
+ ---
137
+
138
+ ## What You Can Generate
139
+
140
+ ### Template Families
141
+
142
+ | Category | Example templates |
143
+ | -------- | ------------------------------------------------------ |
144
+ | Backend | `fastapi-starter`, `django-api`, `celery-worker` |
145
+ | CLI | `cli-starter` |
146
+ | Monorepo | `uv-workspace-starter` |
147
+
148
+ ### Addon Families
149
+
150
+ | Category | Examples |
151
+ | -------------- | ------------------------------------------------------------- |
152
+ | CI / tooling | `github-setup`, `development-container` |
153
+ | Containers | `fastapi-docker`, `django-docker`, `celery-docker` |
154
+ | Database | `postgres`, `fastapi-sqlalchemy`, `fastapi-redis` |
155
+ | Observability | `fastapi-sentry` |
156
+ | Security | `fastapi-auth-jwt` |
157
+
158
+ Browse the live catalog on the [official site](https://create-awesome-python-app.vercel.app/templates) or in [`cpa-templates`](https://github.com/Create-Python-App/cpa-templates).
159
+
160
+ ---
161
+
162
+ ## Popular Recipes
163
+
164
+ ### FastAPI + GitHub + SQLAlchemy
165
+
166
+ ```bash
167
+ uvx create-awesome-python-app my-api \
168
+ --template fastapi-starter \
169
+ --addons github-setup \
170
+ --addons fastapi-sqlalchemy \
171
+ --no-interactive
172
+ ```
173
+
174
+ ### Django API + Postgres + Docker
175
+
176
+ ```bash
177
+ uvx create-awesome-python-app my-django \
178
+ --template django-api \
179
+ --addons github-setup \
180
+ --addons postgres \
181
+ --addons django-docker \
182
+ --no-interactive
183
+ ```
184
+
185
+ ### Celery worker + Redis-friendly stack
186
+
187
+ ```bash
188
+ uvx create-awesome-python-app my-worker \
189
+ --template celery-worker \
190
+ --addons github-setup \
191
+ --addons celery-docker \
192
+ --no-interactive
193
+ ```
194
+
195
+ ### Typer / Click CLI starter
196
+
197
+ ```bash
198
+ uvx create-awesome-python-app my-cli \
199
+ --template cli-starter \
200
+ --addons github-setup \
201
+ --no-interactive
202
+ ```
203
+
204
+ ### uv workspace monorepo
205
+
206
+ ```bash
207
+ uvx create-awesome-python-app my-workspace \
208
+ --template uv-workspace-starter \
209
+ --addons github-setup \
210
+ --no-interactive
211
+ ```
212
+
213
+ ### Internal platform template (GitHub URL)
214
+
215
+ ```bash
216
+ uvx create-awesome-python-app my-internal-app \
217
+ --template "https://github.com/your-org/platform-starters?subdir=templates/internal-app" \
218
+ --no-interactive
219
+ ```
220
+
221
+ ### Local template development (`file://`)
222
+
223
+ ```bash
224
+ uvx create-awesome-python-app my-local-app \
225
+ --template "file:///absolute/path/to/cpa-templates?subdir=templates/fastapi-starter" \
226
+ --no-interactive
227
+ ```
228
+
229
+ > `file://` template URLs should be absolute paths (for example `file:///Users/...` or `file:///home/...`).
230
+
231
+ ### Layer a private extension
232
+
233
+ ```bash
234
+ uvx create-awesome-python-app my-app \
235
+ --template fastapi-starter \
236
+ --addons github-setup \
237
+ --extend "https://github.com/your-org/platform-starters?subdir=extensions/company-ci"
238
+ ```
239
+
240
+ ### Pass custom template values
241
+
242
+ ```bash
243
+ uvx create-awesome-python-app my-app \
244
+ --template fastapi-starter \
245
+ --set "productName=Acme Cloud" \
246
+ --set "author=Platform Team" \
247
+ --no-interactive
248
+ ```
249
+
250
+ ---
251
+
252
+ ## Built For Modern Teams
253
+
254
+ - Python 3.12+ runtime support.
255
+ - uv-first workflows (with pipx / Homebrew / AUR / Docker install paths).
256
+ - Interactive wizard for local workflows.
257
+ - `--no-interactive` mode for CI, scripts, and platform automation.
258
+ - GitHub URL and local `file://` template inputs.
259
+ - `--extend` support for private addon layering.
260
+ - `--set key=value` overrides for deterministic custom options.
261
+
262
+ ---
263
+
264
+ ## Explore The Catalog
265
+
266
+ Browse visually at **[create-awesome-python-app.vercel.app](https://create-awesome-python-app.vercel.app)** or discover from the terminal:
267
+
268
+ ```bash
269
+ # List all available templates
270
+ uvx create-awesome-python-app --list-templates
271
+
272
+ # List addons (optionally filtered by template)
273
+ uvx create-awesome-python-app --template fastapi-starter --list-addons
274
+ ```
275
+
276
+ Full catalog:
277
+
278
+ - **Templates:** [create-awesome-python-app.vercel.app/templates](https://create-awesome-python-app.vercel.app/templates)
279
+ - **Extensions:** [create-awesome-python-app.vercel.app/extensions](https://create-awesome-python-app.vercel.app/extensions)
280
+ - **Source data:** [`cpa-templates/templates.json`](https://github.com/Create-Python-App/cpa-templates/blob/main/templates.json)
281
+
282
+ Override the catalog URL with `CPA_CATALOG_URL` (HTTPS or `file://`) for forks and local testing.
283
+
284
+ ---
285
+
286
+ ## AI-Ready With `AGENTS.md`
287
+
288
+ Supported templates generate an `AGENTS.md` file so coding assistants understand project context before editing:
289
+
290
+ | Context | Why it matters |
291
+ | ---------------------- | ----------------------------------------------------------- |
292
+ | Project purpose | Agents understand what the app is for before changing code. |
293
+ | Directory layout | Suggestions align with the real structure. |
294
+ | Scripts and validation | Agents know how to lint, test, and verify changes. |
295
+ | Team conventions | Output follows naming and workflow expectations. |
296
+
297
+ ---
298
+
299
+ ## Interactive Wizard
300
+
301
+ Run the CLI without flags and CPA guides you through:
302
+
303
+ | Step | What you choose |
304
+ | ----------------- | ----------------------------------------------------------------------- |
305
+ | Project name | Confirm or set the target directory |
306
+ | Category | Backend, CLI, Monorepo, or custom URL |
307
+ | Template | Pick from curated starters with descriptions and labels |
308
+ | Addons | Multi-select compatible extensions grouped by purpose |
309
+ | Custom options | Answer `cpa.config.json` / registry prompts when present |
310
+ | Custom extensions | Layer extra URLs for internal standards |
311
+
312
+ ---
313
+
314
+ ## Requirements
315
+
316
+ - **Python >= 3.12**
317
+ - [uv](https://docs.astral.sh/uv/) recommended (or pipx / Homebrew / AUR / Docker)
318
+ - `git` available on `PATH` (required to clone templates)
319
+
320
+ Recommended quick start:
321
+
322
+ ```bash
323
+ uv python install 3.12
324
+ uvx create-awesome-python-app@latest my-app
325
+ ```
326
+
327
+ ---
328
+
329
+ ## CLI Reference
330
+
331
+ ```text
332
+ Usage: create-awesome-python-app [OPTIONS] [project_directory]
333
+ ```
334
+
335
+ | Flag | Description |
336
+ | ---------------------------- | ----------------------------------------------------- |
337
+ | `--interactive` | Force interactive wizard (default outside CI) |
338
+ | `--no-interactive` | Disable wizard and use flags only |
339
+ | `-t, --template <slug\|url>` | Template slug from catalog or remote/local URL |
340
+ | `--addons <slug\|url>` | Addon slug or URL (repeat the flag for multiple) |
341
+ | `--extend <url>` | Extra extension URL layered on top (repeatable) |
342
+ | `--set <key=value>` | Set custom template options; quote values with spaces |
343
+ | `--no-install` | Generate files without installing dependencies |
344
+ | `-f, --force` | Allow scaffolding into a non-empty target directory |
345
+ | `--list-templates` | Print all templates |
346
+ | `--list-addons` | Print addons, optionally filtered by `--template` |
347
+ | `--offline` | Use the local cache only; do not refresh templates |
348
+ | `--no-cache` | Disable the catalog cache; force a refresh each run |
349
+ | `--cache-dir <path>` | Override the cache root (default: `~/.cache/cpa`) |
350
+ | `--refresh <mode>` | When to refresh: `always` \| `stale` \| `manual` |
351
+ | `--pin <ref>` | Pin template to a specific commit SHA, tag, or branch |
352
+ | `--strict-version` | Fail if a newer CLI version is available |
353
+ | `--keep-on-failure` | Keep partial output if scaffolding fails |
354
+ | `-v, --verbose` | Output resolved generation config as JSON |
355
+ | `-i, --info` | Print Python, uv, git, and OS diagnostics |
356
+ | `--version` | Print CLI version |
357
+ | `--help` | Show help |
358
+
359
+ ### `cache` subcommand
360
+
361
+ ```text
362
+ Usage: create-awesome-python-app cache [OPTIONS] COMMAND [ARGS]...
363
+
364
+ Commands:
365
+ dir Print the cache root directory
366
+ list List cached templates and extensions
367
+ clean Remove one or all entries
368
+ verify Run `git fsck` on one or all entries
369
+ outdated List cached entries that are behind their remote tip
370
+ update Refresh one or all cached entries from their remote
371
+ doctor Diagnose cache health (git, network, permissions)
372
+ ```
373
+
374
+ Inspect and manage the on-disk cache:
375
+
376
+ ```bash
377
+ # Where is my cache?
378
+ uvx create-awesome-python-app cache dir
379
+ # /home/<you>/.cache/cpa
380
+
381
+ # What's in it?
382
+ uvx create-awesome-python-app cache list
383
+
384
+ # Verify integrity
385
+ uvx create-awesome-python-app cache verify
386
+
387
+ # Clear everything
388
+ uvx create-awesome-python-app cache clean
389
+
390
+ # Check for outdated entries
391
+ uvx create-awesome-python-app cache outdated
392
+
393
+ # Refresh a specific entry (or all)
394
+ uvx create-awesome-python-app cache update
395
+
396
+ # Diagnose cache health
397
+ uvx create-awesome-python-app cache doctor
398
+ ```
399
+
400
+ ---
401
+
402
+ ## Cache & Updates
403
+
404
+ CPA caches both the **template catalog** (`templates.json` from
405
+ `raw.githubusercontent.com`) and the **template git repos** themselves. The
406
+ cache lives at `~/.cache/cpa` by default; override with `--cache-dir
407
+ <path>` or `CPA_CACHE_DIR`.
408
+
409
+ | Path | Contents |
410
+ | ----------------------- | ---------------------------------- |
411
+ | `~/.cache/cpa/catalog/` | Cached `templates.json` |
412
+ | `~/.cache/cpa/repos/` | Shallow clones of templates / addons |
413
+
414
+ ### Refresh modes (set with `--refresh <mode>` or `CPA_REFRESH=<mode>`)
415
+
416
+ - **`stale`** (default): pull only when the cache is older than
417
+ `CPA_REFRESH_AFTER_HOURS` (default `24`). No network on a warm cache.
418
+ - **`always`**: pull on every run.
419
+ - **`manual`**: never pull unless `--refresh` is passed.
420
+
421
+ ### Pinning templates
422
+
423
+ Pin a template to a specific commit SHA, tag, or branch:
424
+
425
+ ```bash
426
+ uvx create-awesome-python-app my-app \
427
+ --template fastapi-starter \
428
+ --pin abc123def456abc123def456abc123def456abc1 \
429
+ --no-interactive
430
+ ```
431
+
432
+ The `--pin` flag is equivalent to appending `?ref=<ref>` to the template URL.
433
+ Combine with `CPA_STRICT_REPRO=1` to enforce full 40-character SHAs.
434
+
435
+ ### CI and offline usage
436
+
437
+ ```bash
438
+ # Fully offline CI: use the local cache only, no network.
439
+ uvx create-awesome-python-app my-app \
440
+ --template fastapi-starter \
441
+ --offline \
442
+ --no-interactive
443
+
444
+ # Pin the cache to a project-local directory (useful in monorepos and CI).
445
+ CPA_CACHE_DIR="$PWD/.cpa-cache" uvx create-awesome-python-app my-app \
446
+ --template fastapi-starter \
447
+ --no-interactive
448
+ ```
449
+
450
+ ---
451
+
452
+ ## Programmatic Usage
453
+
454
+ Need to integrate CPA into your own tooling? The core is importable:
455
+
456
+ ```python
457
+ import asyncio
458
+ from create_python_app_core import create_python_app
459
+
460
+ asyncio.run(
461
+ create_python_app(
462
+ "my-app",
463
+ {
464
+ "template": (
465
+ "https://github.com/Create-Python-App/cpa-templates"
466
+ "?subdir=templates/fastapi-starter"
467
+ ),
468
+ "addons": [],
469
+ "install": False,
470
+ },
471
+ )
472
+ )
473
+ ```
474
+
475
+ > The programmatic API is experimental and subject to change. Prefer the CLI for stable usage.
476
+
477
+ See also: [`create-python-app-core` README](https://github.com/Create-Python-App/create-python-app/blob/main/packages/create-python-app-core/README.md).
478
+
479
+ ---
480
+
481
+ ## Security
482
+
483
+ CPA downloads templates from remote sources. Prefer catalog slugs or hash-pinned
484
+ refs (`--pin` / `?ref=`), audit custom URLs before use, and report vulnerabilities
485
+ via GitHub Security Advisories on
486
+ [Create-Python-App/create-python-app](https://github.com/Create-Python-App/create-python-app).
487
+
488
+ ---
489
+
490
+ ## FAQ
491
+
492
+ <details>
493
+ <summary><strong>Why another scaffolder?</strong></summary>
494
+
495
+ Most scaffolders lock you into one stack. CPA is composable: choose a template, layer focused addons, and plug in your own GitHub/local blueprints — mirroring [Create Awesome Node App](https://github.com/Create-Node-App/create-node-app) for the Python ecosystem.
496
+
497
+ </details>
498
+
499
+ <details>
500
+ <summary><strong>Can I use my own template?</strong></summary>
501
+
502
+ Yes. Pass a GitHub URL or local `file://` URL with `--template` (supports `?subdir=` and `?ref=`).
503
+
504
+ </details>
505
+
506
+ <details>
507
+ <summary><strong>Can I use private/internal extensions?</strong></summary>
508
+
509
+ Yes. Use `--extend <url>` to layer private extensions on top of a template and addon set.
510
+
511
+ </details>
512
+
513
+ <details>
514
+ <summary><strong>Are addons order-sensitive?</strong></summary>
515
+
516
+ Yes. Addons are applied in sequence. If two addons modify the same file, later addons win.
517
+
518
+ </details>
519
+
520
+ <details>
521
+ <summary><strong>Does it support monorepos?</strong></summary>
522
+
523
+ Yes. Use `uv-workspace-starter` to bootstrap a multi-package uv workspace with shared tooling.
524
+
525
+ </details>
526
+
527
+ <details>
528
+ <summary><strong>Can I use it in CI?</strong></summary>
529
+
530
+ Yes. Pass all required flags and use `--no-interactive` for deterministic automation. Set `CI=true` to disable the wizard by default.
531
+
532
+ </details>
533
+
534
+ <details>
535
+ <summary><strong>Is Python 3.12 required?</strong></summary>
536
+
537
+ Yes. CPA targets Python 3.12+ to keep runtime behavior modern and predictable.
538
+
539
+ </details>
540
+
541
+ <details>
542
+ <summary><strong>Does CPA work with AI coding assistants?</strong></summary>
543
+
544
+ Yes. Supported templates generate `AGENTS.md`, helping assistants understand project layout, scripts, and conventions.
545
+
546
+ </details>
547
+
548
+ <details>
549
+ <summary><strong>Docker says `git executable not found`</strong></summary>
550
+
551
+ Images from `0.2.5` onward ship `git`. Pull `ulisesjeremias/create-awesome-python-app:latest` (or `0.2.5+`) and retry.
552
+
553
+ </details>
554
+
555
+ ---
556
+
557
+ ## Roadmap
558
+
559
+ - More framework templates and vertical starters.
560
+ - Additional testing and observability packs.
561
+ - Diff-based upgrade paths for pinned templates.
562
+ - Richer template analytics and usage insights.
563
+
564
+ Track progress in [Issues](https://github.com/Create-Python-App/create-python-app/issues) and [Discussions](https://github.com/Create-Python-App/create-python-app/discussions).
565
+
566
+ ---
567
+
568
+ ## Contributing
569
+
570
+ Templates, addons, bug fixes, docs, recipes, and ideas are all welcome.
571
+
572
+ - **Main repo:** [github.com/Create-Python-App/create-python-app](https://github.com/Create-Python-App/create-python-app)
573
+ - **Template and extension data:** [github.com/Create-Python-App/cpa-templates](https://github.com/Create-Python-App/cpa-templates)
574
+ - **Contributing guide:** [CONTRIBUTING.md](https://github.com/Create-Python-App/create-python-app/blob/main/CONTRIBUTING.md)
575
+ - **Troubleshooting:** [docs/TROUBLESHOOTING.md](https://github.com/Create-Python-App/create-python-app/blob/main/docs/TROUBLESHOOTING.md)
576
+
577
+ ---
578
+
579
+ ## License
580
+
581
+ MIT © [Create Python App Contributors](https://github.com/Create-Python-App/create-python-app/graphs/contributors)
582
+
583
+ ---
584
+
585
+ <div align="center">
586
+
587
+ **[create-awesome-python-app.vercel.app](https://create-awesome-python-app.vercel.app)**
588
+
589
+ _Built for developers who value speed, composability, craft, and AI-ready workflows._
590
+
591
+ </div>
592
+
593
+ <!-- Reference links -->
594
+
595
+ [testsbadge]: https://github.com/Create-Python-App/create-python-app/actions/workflows/test.yml/badge.svg
596
+ [lintbadge]: https://github.com/Create-Python-App/create-python-app/actions/workflows/lint.yml/badge.svg
597
+ [typecheckbadge]: https://github.com/Create-Python-App/create-python-app/actions/workflows/type-check.yml/badge.svg
598
+ [shellcheckbadge]: https://github.com/Create-Python-App/create-python-app/actions/workflows/shellcheck.yml/badge.svg
599
+ [megalinterbadge]: https://github.com/Create-Python-App/create-python-app/actions/workflows/mega-linter.yml/badge.svg
600
+ [pypiversion]: https://img.shields.io/pypi/v/create-awesome-python-app.svg?style=flat-square&color=3775A9
601
+ [pythonbadge]: https://img.shields.io/pypi/pyversions/create-awesome-python-app.svg?style=flat-square
602
+ [starsbadge]: https://img.shields.io/github/stars/Create-Python-App/create-python-app?style=flat-square&color=yellow
603
+ [licensebadge]: https://img.shields.io/badge/License-MIT-blue.svg?style=flat-square
604
+ [testsurl]: https://github.com/Create-Python-App/create-python-app/actions/workflows/test.yml
605
+ [linturl]: https://github.com/Create-Python-App/create-python-app/actions/workflows/lint.yml
606
+ [typecheckurl]: https://github.com/Create-Python-App/create-python-app/actions/workflows/type-check.yml
607
+ [shellcheckurl]: https://github.com/Create-Python-App/create-python-app/actions/workflows/shellcheck.yml
608
+ [megalinterurl]: https://github.com/Create-Python-App/create-python-app/actions/workflows/mega-linter.yml
609
+ [pypiurl]: https://pypi.org/project/create-awesome-python-app/
610
+ [pythonurl]: https://pypi.org/project/create-awesome-python-app/
611
+ [licenseurl]: https://github.com/Create-Python-App/create-python-app/blob/main/LICENSE
612
+ [starsurl]: https://github.com/Create-Python-App/create-python-app/stargazers
613
+ [commitactivitybadge]: https://img.shields.io/github/commit-activity/m/Create-Python-App/create-python-app?style=flat-square&logo=github&label=commits
614
+ [commitactivityurl]: https://github.com/Create-Python-App/create-python-app/pulse
615
+ [aururl]: https://aur.archlinux.org/packages/create-awesome-python-app
616
+ [aurbadge]: https://img.shields.io/aur/version/create-awesome-python-app?style=flat-square&label=AUR&logo=archlinux
617
+ [homebrewurl]: https://github.com/Create-Python-App/homebrew-tap
618
+ [homebrewbadge]: https://img.shields.io/badge/homebrew-Create--Python--App%2Ftap-orange?style=flat-square&logo=homebrew
619
+ [dockerurl]: https://hub.docker.com/r/ulisesjeremias/create-awesome-python-app
620
+ [dockerbadge]: https://img.shields.io/docker/v/ulisesjeremias/create-awesome-python-app?style=flat-square&label=Docker&logo=docker&color=2496ED
621
+ [smokebadge]: https://github.com/Create-Python-App/create-python-app/actions/workflows/smoke-distribution.yml/badge.svg?event=schedule
622
+ [smokeurl]: https://github.com/Create-Python-App/create-python-app/actions/workflows/smoke-distribution.yml