forgepy-cli 1.0.0__tar.gz → 1.1.0__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 (85) hide show
  1. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/CHANGELOG.md +29 -8
  2. forgepy_cli-1.1.0/PKG-INFO +411 -0
  3. forgepy_cli-1.1.0/README.md +387 -0
  4. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/builders/python_tools_builder.py +3 -2
  5. forgepy_cli-1.1.0/cli/commands/create_command.py +320 -0
  6. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/config/version.py +3 -2
  7. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/core/requirements_installer.py +12 -5
  8. forgepy_cli-1.1.0/core/venv_paths.py +23 -0
  9. forgepy_cli-1.1.0/forgepy_cli.egg-info/PKG-INFO +411 -0
  10. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/forgepy_cli.egg-info/SOURCES.txt +1 -0
  11. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/pyproject.toml +2 -1
  12. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/templates/basic/basic_template.py +9 -1
  13. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/templates/cli/cli_template.py +10 -1
  14. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/templates/library/library_template.py +8 -1
  15. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/templates/template_engine/template_metadata.py +44 -0
  16. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/templates/vscode/settings_template.py +9 -5
  17. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/templates/vscode/tasks_template.py +10 -3
  18. forgepy_cli-1.0.0/PKG-INFO +0 -176
  19. forgepy_cli-1.0.0/README.md +0 -153
  20. forgepy_cli-1.0.0/cli/commands/create_command.py +0 -161
  21. forgepy_cli-1.0.0/forgepy_cli.egg-info/PKG-INFO +0 -176
  22. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/LICENSE +0 -0
  23. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/MANIFEST.in +0 -0
  24. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/builders/__init__.py +0 -0
  25. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/builders/base_builder.py +0 -0
  26. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/builders/file_builder.py +0 -0
  27. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/builders/folder_builder.py +0 -0
  28. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/cli/__init__.py +0 -0
  29. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/cli/command.py +0 -0
  30. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/cli/commands/__init__.py +0 -0
  31. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/cli/commands/component_command.py +0 -0
  32. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/cli/commands/config_command.py +0 -0
  33. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/cli/commands/list_command.py +0 -0
  34. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/cli/commands/version_command.py +0 -0
  35. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/cli/dispatcher.py +0 -0
  36. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/cli/parser.py +0 -0
  37. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/components/__init__.py +0 -0
  38. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/components/base_component.py +0 -0
  39. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/components/component_context.py +0 -0
  40. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/components/component_installer.py +0 -0
  41. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/components/component_manifest.py +0 -0
  42. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/components/component_metadata.py +0 -0
  43. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/components/component_registry.py +0 -0
  44. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/components/component_state.py +0 -0
  45. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/components/component_validation.py +0 -0
  46. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/components/github_actions_component.py +0 -0
  47. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/components/pytest_component.py +0 -0
  48. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/components/ruff_component.py +0 -0
  49. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/config/__init__.py +0 -0
  50. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/config/default_structure.py +0 -0
  51. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/config/user_config.py +0 -0
  52. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/core/__init__.py +0 -0
  53. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/core/environment_builder.py +0 -0
  54. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/core/git_builder.py +0 -0
  55. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/core/project_generator.py +0 -0
  56. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/core/vscode_builder.py +0 -0
  57. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/forgepy_cli.egg-info/dependency_links.txt +0 -0
  58. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/forgepy_cli.egg-info/entry_points.txt +0 -0
  59. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/forgepy_cli.egg-info/top_level.txt +0 -0
  60. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/main.py +0 -0
  61. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/models/__init__.py +0 -0
  62. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/models/project_config.py +0 -0
  63. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/setup.cfg +0 -0
  64. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/templates/__init__.py +0 -0
  65. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/templates/app_template.py +0 -0
  66. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/templates/basic/basic_files.py +0 -0
  67. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/templates/changelog_template.py +0 -0
  68. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/templates/cli/cli_files.py +0 -0
  69. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/templates/env_template.py +0 -0
  70. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/templates/gitignore_template.py +0 -0
  71. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/templates/library/library_files.py +0 -0
  72. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/templates/license_template.py +0 -0
  73. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/templates/pyproject_template.py +0 -0
  74. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/templates/readme_template.py +0 -0
  75. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/templates/requirements_template.py +0 -0
  76. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/templates/template_engine/base_template.py +0 -0
  77. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/templates/template_engine/file_template.py +0 -0
  78. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/templates/template_engine/package_name.py +0 -0
  79. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/templates/template_engine/template_context.py +0 -0
  80. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/templates/template_engine/template_files.py +0 -0
  81. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/templates/template_engine/template_registry.py +0 -0
  82. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/templates/template_manager.py +0 -0
  83. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/templates/vscode/__init__.py +0 -0
  84. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/templates/vscode/extensions_template.py +0 -0
  85. {forgepy_cli-1.0.0 → forgepy_cli-1.1.0}/templates/vscode/launch_template.py +0 -0
@@ -4,24 +4,45 @@ This changelog records release-facing changes without assigning versions or date
4
4
 
5
5
  ## Unreleased
6
6
 
7
+ No unreleased changes yet.
8
+
9
+ ## 1.1.0
10
+
11
+ ### Added
12
+
13
+ - Added Linux project-generation support alongside Windows, including
14
+ platform-aware virtual-environment interpreter paths and generated VS Code
15
+ configuration.
16
+ - Expanded repository CI to validate `windows-latest` and `ubuntu-latest` on
17
+ CPython 3.12, 3.13, and 3.14; a full project-creation smoke test also passed
18
+ on CachyOS Linux.
19
+ - Added Easy Mode for no-command startup, guiding users through project name,
20
+ location, registered template selection, confirmation, and creation.
21
+ - Added user-facing template `display_name` and `use_cases` metadata for the
22
+ built-in `basic`, `cli`, and `library` templates.
23
+
7
24
  ### Changed
8
25
 
9
- - Prepared the first PyPI publication under the `forgepy-cli` distribution
10
- name while preserving the ForgePy application name, `forgepy` command, and
11
- canonical version `1.0.0`.
12
- - Updated current project URLs for `rzou89/ForgePy` and added a GitHub OIDC
13
- Trusted Publishing workflow. No PyPI publication has occurred.
26
+ - Kept explicit `create` usage as Advanced Mode. An explicit `--template`
27
+ bypasses the interactive template menu, while an omitted template retains
28
+ the existing configured-default and `basic` fallback behavior.
29
+ - Published ForgePy 1.0.0 to PyPI under the `forgepy-cli` distribution through
30
+ Trusted Publishing, establishing the public package distribution channel.
31
+ - Updated current project URLs for `rzou89/ForgePy` and retained GitHub OIDC
32
+ Trusted Publishing for release publication.
33
+ - Updated current project documentation to distinguish Easy Mode from Advanced
34
+ Mode and describe the post-v1.0 Windows/Linux support contract.
14
35
 
15
36
  ## 1.0.0
16
37
 
17
38
  ForgePy 1.0.0 promotes the validated `1.0.0rc1` contents as the stable release
18
- without additional product changes. The `v1.0.0` tag and GitHub Release exist;
19
- no PyPI publication is claimed.
39
+ without additional product changes. The `v1.0.0` tag and GitHub Release exist.
40
+ The same 1.0.0 distribution was subsequently published to PyPI.
20
41
 
21
42
  ## 1.0.0rc1
22
43
 
23
44
  This is the first ForgePy v1.0 release candidate, not the final v1.0.0
24
- release. It has not been published to PyPI.
45
+ release. It was not published to PyPI.
25
46
 
26
47
  ### Added
27
48
 
@@ -0,0 +1,411 @@
1
+ Metadata-Version: 2.4
2
+ Name: forgepy-cli
3
+ Version: 1.1.0
4
+ Summary: Create structured Python projects and prepare their development tooling.
5
+ Author: Rendy Zou
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/rzou89/ForgePy
8
+ Project-URL: Repository, https://github.com/rzou89/ForgePy
9
+ Project-URL: Issues, https://github.com/rzou89/ForgePy/issues
10
+ Keywords: python,project-generator,cli,windows,linux
11
+ Classifier: Development Status :: 5 - Production/Stable
12
+ Classifier: Programming Language :: Python :: 3
13
+ Classifier: Programming Language :: Python :: 3 :: Only
14
+ Classifier: Programming Language :: Python :: 3.12
15
+ Classifier: Programming Language :: Python :: 3.13
16
+ Classifier: Programming Language :: Python :: 3.14
17
+ Classifier: Programming Language :: Python :: Implementation :: CPython
18
+ Classifier: Operating System :: Microsoft :: Windows
19
+ Classifier: Operating System :: POSIX :: Linux
20
+ Requires-Python: >=3.12
21
+ Description-Content-Type: text/markdown
22
+ License-File: LICENSE
23
+ Dynamic: license-file
24
+
25
+ # ForgePy
26
+
27
+ ForgePy is a cross-platform Python project generator for Windows and Linux. It creates structured Python projects and prepares their development tooling automatically.
28
+
29
+ ForgePy supports two ways to create projects:
30
+
31
+ * **Easy Mode** — an interactive project wizard for users who want a guided experience.
32
+ * **Advanced Mode** — command-line arguments for scripting, automation, and experienced users.
33
+
34
+ ## What ForgePy Does
35
+
36
+ ForgePy can:
37
+
38
+ * generate a project from a registered template;
39
+ * create a Python virtual environment;
40
+ * update `pip`, `setuptools`, and `wheel`;
41
+ * install generated project requirements;
42
+ * create VS Code configuration;
43
+ * initialize a Git repository;
44
+ * create the initial Git commit;
45
+ * add optional project components such as pytest, Ruff, and GitHub Actions configuration.
46
+
47
+ A successful project creation leaves the new project ready for development.
48
+
49
+ ## Requirements
50
+
51
+ * Windows 10 or Windows 11, or Linux
52
+ * CPython 3.12 or newer
53
+ * Git
54
+ * Git user name and email configured for the initial commit
55
+
56
+ ForgePy v1.0 officially supports Windows and Linux on CPython.
57
+
58
+ macOS and alternative Python implementations remain unsupported and unverified.
59
+
60
+ Repository CI tests ForgePy on GitHub-hosted `windows-latest` and `ubuntu-latest` runners using CPython 3.12, 3.13, and 3.14.
61
+
62
+ A full project-creation smoke test has also been completed successfully on CachyOS Linux.
63
+
64
+ Hosted runner coverage does not literally test every Windows edition or Linux distribution.
65
+
66
+ Packaging-tool updates and dependency installation may require network access during project creation.
67
+
68
+ ## Installation
69
+
70
+ ForgePy is prepared for PyPI publication under the distribution name:
71
+
72
+ ```text
73
+ forgepy-cli
74
+ ```
75
+
76
+ After the first PyPI publication, installation will be:
77
+
78
+ ```bash
79
+ python -m pip install forgepy-cli
80
+ ```
81
+
82
+ The first PyPI upload is still pending.
83
+
84
+ Until publication is completed, install ForgePy from a source checkout:
85
+
86
+ ```bash
87
+ python -m pip install .
88
+ ```
89
+
90
+ For editable development work:
91
+
92
+ ```bash
93
+ python -m pip install -e .
94
+ ```
95
+
96
+ The installed command is:
97
+
98
+ ```text
99
+ forgepy
100
+ ```
101
+
102
+ The application itself remains named **ForgePy**.
103
+
104
+ ## Quick Start
105
+
106
+ ### Easy Mode — Interactive Project Wizard
107
+
108
+ Easy Mode is intended for users who want ForgePy to guide them through project creation.
109
+
110
+ If ForgePy is installed, run:
111
+
112
+ ```bash
113
+ forgepy
114
+ ```
115
+
116
+ From the ForgePy source repository, run:
117
+
118
+ ```bash
119
+ python main.py
120
+ ```
121
+
122
+ Running `main.py` from the VS Code **Run ▶** button also starts Easy Mode because no CLI command is supplied.
123
+
124
+ The interactive flow is:
125
+
126
+ ```text
127
+ Run ▶
128
+
129
+ Project Name
130
+
131
+ Project Location
132
+
133
+ Choose Template
134
+
135
+ Confirmation
136
+
137
+ Create Project
138
+ ```
139
+
140
+ ForgePy displays the registered project templates:
141
+
142
+ ```text
143
+ ==================================================
144
+ FORGEPY PROJECT WIZARD
145
+ ==================================================
146
+
147
+ What do you want to create?
148
+
149
+ [1] General Application
150
+ Template: basic
151
+
152
+ [2] CLI / Automation / Backend Tool
153
+ Template: cli
154
+
155
+ [3] Python Library
156
+ Template: library
157
+
158
+ [0] Cancel
159
+ ```
160
+
161
+ After selecting a template, ForgePy displays a project summary before creating anything:
162
+
163
+ ```text
164
+ Project Summary
165
+ ----------------------------------------
166
+ Name : MyProject
167
+ Location : /path/to/projects
168
+ Template : CLI / Automation / Backend Tool
169
+ Folder : /path/to/projects/MyProject
170
+
171
+ Create this project? [Y/n]:
172
+ ```
173
+
174
+ Selecting `0` or answering `n` at confirmation cancels project creation without intentionally starting the generation lifecycle.
175
+
176
+ If `default_location` is configured, ForgePy may use that location instead of prompting for one.
177
+
178
+ Template selection in Easy Mode is always presented through the interactive template menu.
179
+
180
+ ### Advanced Mode — CLI Arguments
181
+
182
+ Advanced Mode allows project creation directly through CLI arguments.
183
+
184
+ Windows PowerShell:
185
+
186
+ ```powershell
187
+ forgepy create MyProject `
188
+ --location C:\Projects `
189
+ --template cli
190
+ ```
191
+
192
+ Linux:
193
+
194
+ ```bash
195
+ forgepy create MyProject \
196
+ --location ~/Projects \
197
+ --template cli
198
+ ```
199
+
200
+ The same command can be executed directly from the source repository:
201
+
202
+ ```bash
203
+ python main.py create MyProject \
204
+ --location ~/Projects \
205
+ --template cli
206
+ ```
207
+
208
+ When `--template` is explicitly supplied, ForgePy uses that template directly and does not display the interactive template-selection menu.
209
+
210
+ In Advanced Mode:
211
+
212
+ * an omitted project name starts the project-name prompt;
213
+ * an omitted location uses `default_location` when configured, otherwise ForgePy prompts for one;
214
+ * an omitted template uses `default_template` when configured, otherwise ForgePy falls back to `basic`.
215
+
216
+ The destination project directory must not already exist.
217
+
218
+ ## Available Templates
219
+
220
+ ForgePy currently includes three registered project templates.
221
+
222
+ ### `basic` — General Application
223
+
224
+ Designed for general Python applications.
225
+
226
+ Suitable for:
227
+
228
+ * desktop applications;
229
+ * GUI applications;
230
+ * data processing;
231
+ * Excel and reporting tools;
232
+ * general business applications.
233
+
234
+ The generated project includes a structured application directory layout, `app.py`, environment files, project metadata, and generated requirements.
235
+
236
+ ### `cli` — CLI / Automation / Backend Tool
237
+
238
+ Designed for lightweight command-line and automation projects.
239
+
240
+ Suitable for:
241
+
242
+ * automation;
243
+ * trading bots;
244
+ * scanners;
245
+ * backend services;
246
+ * scheduled jobs;
247
+ * API clients.
248
+
249
+ The generated project includes a normalized Python package, `__main__.py`, an argparse-based CLI, help and version behavior, and a `tests` package.
250
+
251
+ ### `library` — Python Library
252
+
253
+ Designed for reusable Python packages.
254
+
255
+ Suitable for:
256
+
257
+ * reusable Python packages;
258
+ * SDKs;
259
+ * internal libraries;
260
+ * modules used by other projects.
261
+
262
+ The generated project includes a normalized import-package directory and a `tests` package.
263
+
264
+ List the registered templates at any time with:
265
+
266
+ ```bash
267
+ forgepy list
268
+ ```
269
+
270
+ ## Components
271
+
272
+ Components add focused configuration files to an explicitly supplied existing project directory.
273
+
274
+ ForgePy records successful component installations in project-local state.
275
+
276
+ Available components are:
277
+
278
+ * `pytest` — adds `pytest.ini`;
279
+ * `ruff` — adds `ruff.toml`;
280
+ * `github-actions` — adds a minimal `.github/workflows/ci.yml` for the generated project.
281
+
282
+ Example commands:
283
+
284
+ ```bash
285
+ forgepy component list
286
+ forgepy component add pytest --project .
287
+ forgepy component installed --project .
288
+ ```
289
+
290
+ Component installation refuses an owned target that already exists.
291
+
292
+ The generated-project `github-actions` component is separate from ForgePy's own repository CI workflow.
293
+
294
+ ## Configuration
295
+
296
+ ForgePy stores user configuration under:
297
+
298
+ ```text
299
+ ~/.forgepy/config.json
300
+ ```
301
+
302
+ Supported settings are:
303
+
304
+ * `default_template`
305
+ * `default_location`
306
+ * `author`
307
+ * `license`
308
+
309
+ Configuration commands:
310
+
311
+ ```bash
312
+ forgepy config show
313
+ forgepy config set default_template library
314
+ forgepy config set default_location <projects-directory>
315
+ forgepy config reset
316
+ ```
317
+
318
+ Currently:
319
+
320
+ * `default_location` affects project creation when no explicit location is supplied;
321
+ * `default_template` is used by Advanced Mode when `--template` is omitted;
322
+ * Easy Mode presents the interactive template menu instead of silently applying `default_template`;
323
+ * `author` and `license` are persisted but are not currently applied to generated files.
324
+
325
+ Explicit Advanced Mode `create` options take priority over stored configuration.
326
+
327
+ See all supported syntax with:
328
+
329
+ ```bash
330
+ forgepy create --help
331
+ forgepy config --help
332
+ ```
333
+
334
+ ## Project Creation Lifecycle
335
+
336
+ After the project inputs are resolved and confirmed, ForgePy runs the project-creation lifecycle.
337
+
338
+ A successful creation performs these stages in order:
339
+
340
+ 1. Generate the selected template.
341
+ 2. Create `.venv`.
342
+ 3. Update `pip`, `setuptools`, and `wheel`.
343
+ 4. Install the generated `requirements.txt`.
344
+ 5. Write VS Code configuration.
345
+ 6. Run `git init`.
346
+ 7. Run `git add .`.
347
+ 8. Create the initial Git commit.
348
+ 9. Report full success.
349
+
350
+ Git is a required part of successful project creation.
351
+
352
+ ## Failure and Partial Projects
353
+
354
+ ForgePy project creation is not transactional or atomic.
355
+
356
+ If creation fails after ForgePy has created the destination directory, later lifecycle stages stop and full success is not reported.
357
+
358
+ Files generated by earlier stages may remain in the destination.
359
+
360
+ Inspect the destination and remove the partial project when appropriate before retrying.
361
+
362
+ ## Development
363
+
364
+ Run the standard local validation from the repository root:
365
+
366
+ ```bash
367
+ python -m unittest discover -s tests -v
368
+
369
+ python -m compileall -q \
370
+ components \
371
+ cli \
372
+ templates \
373
+ core \
374
+ config \
375
+ builders \
376
+ models \
377
+ tests
378
+ ```
379
+
380
+ Repository CI runs the test suite, compilation checks, and packaging/support tests on:
381
+
382
+ * `windows-latest`
383
+ * `ubuntu-latest`
384
+
385
+ using:
386
+
387
+ * CPython 3.12
388
+ * CPython 3.13
389
+ * CPython 3.14
390
+
391
+ The Python 3.12 CI jobs also build and inspect the wheel and source distribution, install the wheel in isolation, and exercise the installed CLI.
392
+
393
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for repository workflow and review expectations.
394
+
395
+ ## Current Status
396
+
397
+ ForgePy v1.0.0 is the current stable Git tag and GitHub Release.
398
+
399
+ The naming is:
400
+
401
+ ```text
402
+ Application : ForgePy
403
+ CLI command : forgepy
404
+ Distribution: forgepy-cli
405
+ ```
406
+
407
+ Trusted Publishing is configured in the repository, but the first PyPI upload has not yet occurred.
408
+
409
+ ## License
410
+
411
+ ForgePy is licensed under the [MIT License](LICENSE).