spawnio 1.0.6__tar.gz → 1.0.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 (102) hide show
  1. {spawnio-1.0.6 → spawnio-1.0.7}/.github/workflows/ci.yml +29 -29
  2. spawnio-1.0.7/.github/workflows/publish.yml +24 -0
  3. {spawnio-1.0.6 → spawnio-1.0.7}/LICENSE +21 -21
  4. {spawnio-1.0.6 → spawnio-1.0.7}/PKG-INFO +28 -17
  5. {spawnio-1.0.6 → spawnio-1.0.7}/README.md +840 -829
  6. {spawnio-1.0.6 → spawnio-1.0.7}/docs/architecture.md +194 -194
  7. {spawnio-1.0.6 → spawnio-1.0.7}/docs/changelog.md +424 -405
  8. spawnio-1.0.7/docs/commands.md +473 -0
  9. spawnio-1.0.7/docs/getting-started.md +267 -0
  10. {spawnio-1.0.6 → spawnio-1.0.7}/pyproject.toml +28 -28
  11. {spawnio-1.0.6 → spawnio-1.0.7}/src/spawn/__init__.py +6 -6
  12. {spawnio-1.0.6 → spawnio-1.0.7}/src/spawn/cli/app.py +217 -217
  13. {spawnio-1.0.6 → spawnio-1.0.7}/src/spawn/cli/noninteractive.py +204 -204
  14. {spawnio-1.0.6 → spawnio-1.0.7}/src/spawn/cli/prompts.py +267 -267
  15. {spawnio-1.0.6 → spawnio-1.0.7}/src/spawn/core/exceptions.py +7 -7
  16. {spawnio-1.0.6 → spawnio-1.0.7}/src/spawn/core/models.py +21 -21
  17. {spawnio-1.0.6 → spawnio-1.0.7}/src/spawn/core/registry.py +152 -152
  18. {spawnio-1.0.6 → spawnio-1.0.7}/src/spawn/generators/custom_structure.py +508 -508
  19. {spawnio-1.0.6 → spawnio-1.0.7}/src/spawn/generators/project_generator.py +114 -114
  20. {spawnio-1.0.6 → spawnio-1.0.7}/src/spawn/github/exceptions.py +4 -4
  21. {spawnio-1.0.6 → spawnio-1.0.7}/src/spawn/github/publisher.py +68 -68
  22. {spawnio-1.0.6 → spawnio-1.0.7}/src/spawn/github/validators.py +22 -22
  23. {spawnio-1.0.6 → spawnio-1.0.7}/src/spawn/templates/agent/__init__.py +182 -182
  24. {spawnio-1.0.6 → spawnio-1.0.7}/src/spawn/templates/agent/content.py +374 -374
  25. {spawnio-1.0.6 → spawnio-1.0.7}/src/spawn/templates/automation/__init__.py +100 -100
  26. {spawnio-1.0.6 → spawnio-1.0.7}/src/spawn/templates/automation/content.py +181 -181
  27. {spawnio-1.0.6 → spawnio-1.0.7}/src/spawn/templates/backend_api/__init__.py +243 -243
  28. {spawnio-1.0.6 → spawnio-1.0.7}/src/spawn/templates/backend_api/content.py +509 -509
  29. {spawnio-1.0.6 → spawnio-1.0.7}/src/spawn/templates/base.py +58 -58
  30. {spawnio-1.0.6 → spawnio-1.0.7}/src/spawn/templates/chatbot/__init__.py +242 -242
  31. {spawnio-1.0.6 → spawnio-1.0.7}/src/spawn/templates/chatbot/content.py +655 -667
  32. {spawnio-1.0.6 → spawnio-1.0.7}/src/spawn/templates/cli_application/__init__.py +211 -211
  33. {spawnio-1.0.6 → spawnio-1.0.7}/src/spawn/templates/cli_application/content.py +512 -512
  34. {spawnio-1.0.6 → spawnio-1.0.7}/src/spawn/templates/data_project/__init__.py +125 -125
  35. {spawnio-1.0.6 → spawnio-1.0.7}/src/spawn/templates/data_project/analysis/__init__.py +74 -74
  36. {spawnio-1.0.6 → spawnio-1.0.7}/src/spawn/templates/data_project/analysis/content.py +190 -190
  37. {spawnio-1.0.6 → spawnio-1.0.7}/src/spawn/templates/data_project/dashboard/__init__.py +61 -61
  38. {spawnio-1.0.6 → spawnio-1.0.7}/src/spawn/templates/data_project/dashboard/content.py +135 -135
  39. {spawnio-1.0.6 → spawnio-1.0.7}/src/spawn/templates/data_project/etl/__init__.py +66 -66
  40. {spawnio-1.0.6 → spawnio-1.0.7}/src/spawn/templates/data_project/etl/content.py +239 -239
  41. {spawnio-1.0.6 → spawnio-1.0.7}/src/spawn/templates/data_project/ml/__init__.py +62 -62
  42. {spawnio-1.0.6 → spawnio-1.0.7}/src/spawn/templates/data_project/ml/content.py +239 -239
  43. {spawnio-1.0.6 → spawnio-1.0.7}/src/spawn/templates/mcp_server/__init__.py +83 -83
  44. {spawnio-1.0.6 → spawnio-1.0.7}/src/spawn/templates/mcp_server/content.py +161 -161
  45. {spawnio-1.0.6 → spawnio-1.0.7}/src/spawn/templates/rag/__init__.py +124 -124
  46. {spawnio-1.0.6 → spawnio-1.0.7}/src/spawn/templates/rag/content.py +463 -463
  47. {spawnio-1.0.6 → spawnio-1.0.7}/src/spawn/templates/shared_content.py +89 -89
  48. {spawnio-1.0.6 → spawnio-1.0.7}/src/spawn/utils/banner.py +41 -41
  49. spawnio-1.0.7/src/spawn/utils/console.py +9 -0
  50. {spawnio-1.0.6 → spawnio-1.0.7}/src/spawn/utils/doctor.py +594 -594
  51. {spawnio-1.0.6 → spawnio-1.0.7}/src/spawn/utils/git.py +131 -131
  52. {spawnio-1.0.6 → spawnio-1.0.7}/src/spawn/utils/success.py +47 -47
  53. {spawnio-1.0.6 → spawnio-1.0.7}/src/spawn/utils/theme.py +25 -25
  54. {spawnio-1.0.6 → spawnio-1.0.7}/src/spawn/utils/uv.py +61 -61
  55. spawnio-1.0.7/src/spawn/utils/validators.py +29 -0
  56. {spawnio-1.0.6 → spawnio-1.0.7}/tests/test_agent_generator.py +233 -233
  57. {spawnio-1.0.6 → spawnio-1.0.7}/tests/test_agent_template.py +233 -233
  58. {spawnio-1.0.6 → spawnio-1.0.7}/tests/test_app.py +471 -471
  59. {spawnio-1.0.6 → spawnio-1.0.7}/tests/test_automation_generator.py +242 -242
  60. {spawnio-1.0.6 → spawnio-1.0.7}/tests/test_automation_template.py +68 -68
  61. {spawnio-1.0.6 → spawnio-1.0.7}/tests/test_chatbot_generator.py +312 -312
  62. {spawnio-1.0.6 → spawnio-1.0.7}/tests/test_chatbot_template.py +650 -650
  63. {spawnio-1.0.6 → spawnio-1.0.7}/tests/test_cli_application_generator.py +224 -224
  64. {spawnio-1.0.6 → spawnio-1.0.7}/tests/test_cli_application_template.py +190 -190
  65. spawnio-1.0.7/tests/test_console.py +33 -0
  66. {spawnio-1.0.6 → spawnio-1.0.7}/tests/test_custom_structure.py +823 -823
  67. {spawnio-1.0.6 → spawnio-1.0.7}/tests/test_custom_structure_integration.py +136 -136
  68. {spawnio-1.0.6 → spawnio-1.0.7}/tests/test_data_project_analysis.py +187 -187
  69. {spawnio-1.0.6 → spawnio-1.0.7}/tests/test_data_project_dashboard.py +176 -176
  70. {spawnio-1.0.6 → spawnio-1.0.7}/tests/test_data_project_etl.py +224 -224
  71. {spawnio-1.0.6 → spawnio-1.0.7}/tests/test_data_project_gitignore.py +171 -171
  72. {spawnio-1.0.6 → spawnio-1.0.7}/tests/test_data_project_ml.py +208 -208
  73. {spawnio-1.0.6 → spawnio-1.0.7}/tests/test_doctor.py +679 -679
  74. {spawnio-1.0.6 → spawnio-1.0.7}/tests/test_generator.py +710 -710
  75. {spawnio-1.0.6 → spawnio-1.0.7}/tests/test_git.py +187 -187
  76. {spawnio-1.0.6 → spawnio-1.0.7}/tests/test_github_publisher.py +149 -149
  77. {spawnio-1.0.6 → spawnio-1.0.7}/tests/test_github_validators.py +57 -57
  78. {spawnio-1.0.6 → spawnio-1.0.7}/tests/test_mcp_server_generator.py +134 -134
  79. {spawnio-1.0.6 → spawnio-1.0.7}/tests/test_mcp_server_template.py +157 -157
  80. {spawnio-1.0.6 → spawnio-1.0.7}/tests/test_models.py +70 -70
  81. {spawnio-1.0.6 → spawnio-1.0.7}/tests/test_noninteractive.py +211 -211
  82. {spawnio-1.0.6 → spawnio-1.0.7}/tests/test_prompts.py +406 -406
  83. {spawnio-1.0.6 → spawnio-1.0.7}/tests/test_rag_generator.py +230 -230
  84. {spawnio-1.0.6 → spawnio-1.0.7}/tests/test_rag_template.py +324 -324
  85. {spawnio-1.0.6 → spawnio-1.0.7}/tests/test_registry.py +186 -186
  86. {spawnio-1.0.6 → spawnio-1.0.7}/tests/test_templates.py +252 -252
  87. {spawnio-1.0.6 → spawnio-1.0.7}/tests/test_uv.py +89 -89
  88. {spawnio-1.0.6 → spawnio-1.0.7}/tests/test_validators.py +115 -93
  89. {spawnio-1.0.6 → spawnio-1.0.7}/uv.lock +218 -218
  90. spawnio-1.0.6/docs/commands.md +0 -514
  91. spawnio-1.0.6/docs/getting-started.md +0 -204
  92. spawnio-1.0.6/src/spawn/utils/console.py +0 -3
  93. spawnio-1.0.6/src/spawn/utils/validators.py +0 -15
  94. {spawnio-1.0.6 → spawnio-1.0.7}/.gitignore +0 -0
  95. {spawnio-1.0.6 → spawnio-1.0.7}/.python-version +0 -0
  96. {spawnio-1.0.6 → spawnio-1.0.7}/assets/preview.png +0 -0
  97. {spawnio-1.0.6 → spawnio-1.0.7}/src/spawn/cli/__init__.py +0 -0
  98. {spawnio-1.0.6 → spawnio-1.0.7}/src/spawn/core/__init__.py +0 -0
  99. {spawnio-1.0.6 → spawnio-1.0.7}/src/spawn/generators/__init__.py +0 -0
  100. {spawnio-1.0.6 → spawnio-1.0.7}/src/spawn/github/__init__.py +0 -0
  101. {spawnio-1.0.6 → spawnio-1.0.7}/src/spawn/templates/__init__.py +0 -0
  102. {spawnio-1.0.6 → spawnio-1.0.7}/src/spawn/utils/__init__.py +0 -0
@@ -1,29 +1,29 @@
1
- name: CI
2
-
3
- on:
4
- push:
5
- branches: [main]
6
- pull_request:
7
- branches: [main]
8
-
9
- jobs:
10
- test:
11
- runs-on: ubuntu-latest
12
-
13
- steps:
14
- - uses: actions/checkout@v4
15
-
16
- - name: Install uv
17
- uses: astral-sh/setup-uv@v5
18
-
19
- - name: Set up Python
20
- run: uv python install 3.12
21
-
22
- - name: Install dependencies
23
- run: uv sync --all-groups
24
-
25
- - name: Run tests
26
- run: uv run pytest
27
-
28
- - name: Run ruff
29
- run: uv run ruff check .
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: ubuntu-latest
12
+
13
+ steps:
14
+ - uses: actions/checkout@v4
15
+
16
+ - name: Install uv
17
+ uses: astral-sh/setup-uv@v5
18
+
19
+ - name: Set up Python
20
+ run: uv python install 3.12
21
+
22
+ - name: Install dependencies
23
+ run: uv sync --all-groups
24
+
25
+ - name: Run tests
26
+ run: uv run pytest
27
+
28
+ - name: Run ruff
29
+ run: uv run ruff check .
@@ -0,0 +1,24 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+
7
+ jobs:
8
+ build-and-publish:
9
+ runs-on: ubuntu-latest
10
+ environment: pypi
11
+ permissions:
12
+ id-token: write # required for trusted publishing
13
+
14
+ steps:
15
+ - uses: actions/checkout@v4
16
+
17
+ - name: Install uv
18
+ uses: astral-sh/setup-uv@v3
19
+
20
+ - name: Build package
21
+ run: uv build
22
+
23
+ - name: Publish to PyPI
24
+ run: uv publish
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 Abhiix0
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Abhiix0
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: spawnio
3
- Version: 1.0.6
3
+ Version: 1.0.7
4
4
  Summary: Spawn a ready-to-use Python project in seconds
5
5
  License-File: LICENSE
6
6
  Requires-Python: >=3.12
@@ -94,6 +94,7 @@ It's repetitive. It's inconsistent. And you haven't written a single line of *re
94
94
  ## Prerequisites
95
95
 
96
96
  - **Python 3.12+** — [Download here](https://python.org/downloads)
97
+ > `pip install spawnio` will silently return "no matching distribution" on Python < 3.12. If you're using uv, run `uv python install 3.12` to get a compatible interpreter in seconds.
97
98
  - **uv** — [Install guide](https://github.com/astral-sh/uv)
98
99
  - **Git** — [Download here](https://git-scm.com/downloads)
99
100
 
@@ -744,7 +745,7 @@ Checks span six categories — Documentation, Version Control, Configuration, Te
744
745
 
745
746
  ```bash
746
747
  spawn version
747
- # → Spawn v1.0.6
748
+ # → Spawn v1.0.7
748
749
  ```
749
750
 
750
751
  ### Publish to GitHub
@@ -774,21 +775,31 @@ All tests should pass. If they don't, please [open an issue](https://github.com/
774
775
 
775
776
  ## Roadmap
776
777
 
777
- **Recently shipped**
778
+ ### Shipped
778
779
 
779
- - Removed duplicate banner from `spawn create`; `spawn` alone now shows the banner and command overview (v1.0.6)
780
- - Published to PyPI as `spawnio` — install with `pip install spawnio` (v1.0.5)
781
- - Arrow-key menus, no-args banner, and consistent Ctrl+C handling (v1.0.5)
782
- - AGENTS.md / CLAUDE.md generation — every project ships agent context automatically, `--claude-md` opt-in for Claude Code (v1.0.4)
783
- - MCP Server intent — official `mcp` SDK, one working tool + resource, stdio transport (v1.0.3)
784
- - Non-interactive mode — `--name`/`--template`/flags or `--config` JSON, zero prompts (v1.0.2)
785
- - Custom Structure workflow — paste any folder layout, Spawn creates it (v1.0.0)
786
- - Doctor 2.0 — per-category health percentages, tiered recommendations, Next Best Step (v1.0.0)
787
- - Data Project intent — analysis, dashboard, ETL, ML sub-options (v0.9.0)
788
- - RAG System intent — LlamaIndex + ChromaDB (v0.8.0)
789
- - AI Agent intent — tool-calling with PydanticAI / OpenAI Agents SDK (v0.7.0)
780
+ | Version | Highlight |
781
+ |---|---|
782
+ | **v1.0.7** | Fixed UTF-8 console crash on Windows when stdout is redirected/piped, added Windows reserved device name validation (`CON`, `PRN`, `AUX`, `NUL`, `COM1`–`9`, `LPT1`–`9`), clarified Python 3.12 requirement |
783
+ | **v1.0.6** | Removed duplicate banner from `spawn create`; `spawn` alone now shows the banner and command overview |
784
+ | **v1.0.5** | Published to PyPI as `spawnio`; arrow-key selection menus, no-args banner, consistent Ctrl+C handling |
785
+ | **v1.0.4** | `AGENTS.md` / `CLAUDE.md` generation for every project, `--claude-md` opt-in |
786
+ | **v1.0.3** | MCP Server intent — official `mcp` SDK, one working tool + resource |
787
+ | **v1.0.2** | Non-interactive mode — `--name`/`--template` flags or `--config` JSON |
788
+ | **v1.0.1** | Custom Structure: dependency install, optional dev tooling setup, smart README/`.gitignore` generation |
789
+ | **v1.0.0** | Custom Structure workflow (paste any folder layout) + Doctor 2.0 (per-category scores, tiered recommendations) |
790
+ | **v0.9.0** | Data Project intent — analysis, dashboard, ETL, ML sub-types |
791
+ | **v0.8.0** | RAG System intent — LlamaIndex + ChromaDB |
792
+ | **v0.7.0** | AI Agent intent — tool-calling with PydanticAI / OpenAI Agents SDK |
793
+ | **v0.6.0** | AI Chatbot intent — 3 frameworks, 6 providers, runtime memory |
794
+ | **v0.5.0** | Automation Tool intent — workflows, logging, working example out of the box |
795
+ | **v0.4.0** | CLI Application intent — Typer/Click/Argparse, Utility/Interactive types |
796
+ | **v0.3.0** | Backend API intent — FastAPI/Flask/Django, extras system, `.spawn/meta.json` |
797
+ | **v0.2.0** | GitHub publishing from the CLI, `spawn doctor` health checker, CI workflow |
798
+ | **v0.1.0** | Initial release — `spawn create`, 4 templates, Git + uv integration |
799
+
800
+ ---
790
801
 
791
- **What's next**
802
+ ## What's next
792
803
 
793
804
  Nothing formally scheduled yet. Ideas under consideration live in [Issues](https://github.com/Abhiix0/spawn/issues); open one if there's something you'd want to see.
794
805
 
@@ -835,6 +846,6 @@ This project is open source under the [MIT License](LICENSE).
835
846
 
836
847
  <div align="center">
837
848
 
838
- **[Star on GitHub](https://github.com/Abhiix0/spawn)** · **[Report a Bug](https://github.com/Abhiix0/spawn/issues)** · **[Request a Feature](https://github.com/Abhiix0/spawn/issues)**
849
+ **[ Star on GitHub](https://github.com/Abhiix0/spawn)** · **[ report a bug](https://github.com/Abhiix0/spawn/issues)** · **[ request a Feature](https://github.com/Abhiix0/spawn/issues)** · **[ PyPI](https://pypi.org/project/spawnio/)**
839
850
 
840
- </div>
851
+ </div>