pygenkit 0.2.0__py3-none-any.whl

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 (95) hide show
  1. pygenkit/__init__.py +2 -0
  2. pygenkit/ai/__init__.py +11 -0
  3. pygenkit/ai/prompts.py +27 -0
  4. pygenkit/ai/provider.py +57 -0
  5. pygenkit/ai/review.py +59 -0
  6. pygenkit/cli/__init__.py +3 -0
  7. pygenkit/cli/app.py +53 -0
  8. pygenkit/cli/commands/__init__.py +21 -0
  9. pygenkit/cli/commands/build.py +41 -0
  10. pygenkit/cli/commands/doctor.py +119 -0
  11. pygenkit/cli/commands/generate.py +52 -0
  12. pygenkit/cli/commands/health.py +64 -0
  13. pygenkit/cli/commands/init.py +23 -0
  14. pygenkit/cli/commands/inspect.py +58 -0
  15. pygenkit/cli/commands/new.py +37 -0
  16. pygenkit/cli/commands/publish.py +30 -0
  17. pygenkit/cli/commands/release.py +33 -0
  18. pygenkit/cli/commands/release_check.py +17 -0
  19. pygenkit/cli/commands/review.py +58 -0
  20. pygenkit/cli/commands/validate.py +29 -0
  21. pygenkit/cli.py +4 -0
  22. pygenkit/config/__init__.py +3 -0
  23. pygenkit/generators/__init__.py +13 -0
  24. pygenkit/generators/base.py +31 -0
  25. pygenkit/generators/deploy.py +48 -0
  26. pygenkit/generators/docker.py +43 -0
  27. pygenkit/generators/github_actions.py +68 -0
  28. pygenkit/generators/orchestrator.py +33 -0
  29. pygenkit/generators/project.py +110 -0
  30. pygenkit/health/__init__.py +3 -0
  31. pygenkit/health/api.py +57 -0
  32. pygenkit/health/checks.py +343 -0
  33. pygenkit/inspector/__init__.py +3 -0
  34. pygenkit/inspector/api.py +154 -0
  35. pygenkit/inspector/debian.py +51 -0
  36. pygenkit/inspector/detect.py +84 -0
  37. pygenkit/inspector/git.py +55 -0
  38. pygenkit/inspector/pyproject.py +74 -0
  39. pygenkit/models/__init__.py +25 -0
  40. pygenkit/models/config.py +266 -0
  41. pygenkit/models/health.py +22 -0
  42. pygenkit/models/inspection.py +56 -0
  43. pygenkit/render/__init__.py +3 -0
  44. pygenkit/render/engine.py +41 -0
  45. pygenkit/services/__init__.py +0 -0
  46. pygenkit/templates/deploy/Procfile.j2 +1 -0
  47. pygenkit/templates/deploy/fly.toml.j2 +14 -0
  48. pygenkit/templates/deploy/railway.json.j2 +12 -0
  49. pygenkit/templates/docker/Dockerfile.j2 +15 -0
  50. pygenkit/templates/docker/docker-compose.yml.j2 +17 -0
  51. pygenkit/templates/github/workflows/ci.yml.j2 +33 -0
  52. pygenkit/templates/github/workflows/publish-launchpad.yml.j2 +37 -0
  53. pygenkit/templates/github/workflows/publish-pypi.yml.j2 +32 -0
  54. pygenkit/templates/github/workflows/release.yml.j2 +28 -0
  55. pygenkit/templates/project/LICENSE.j2 +21 -0
  56. pygenkit/templates/project/README.md.j2 +21 -0
  57. pygenkit/templates/project/pyproject.toml.j2 +51 -0
  58. pygenkit/templates/project/src/__init__.py.j2 +2 -0
  59. pygenkit/templates/project/src/cli.py.j2 +5 -0
  60. pygenkit/templates/project/tests/__init__.py.j2 +0 -0
  61. pygenkit/templates/project/tests/test_cli.py.j2 +5 -0
  62. pygenkit/templates/python-cli/CHANGELOG.md.jinja +7 -0
  63. pygenkit/templates/python-cli/LICENSE.jinja +204 -0
  64. pygenkit/templates/python-cli/Makefile.jinja +31 -0
  65. pygenkit/templates/python-cli/README.md.jinja +86 -0
  66. pygenkit/templates/python-cli/debian/changelog.jinja +5 -0
  67. pygenkit/templates/python-cli/debian/control.jinja +23 -0
  68. pygenkit/templates/python-cli/debian/copyright.jinja +23 -0
  69. pygenkit/templates/python-cli/debian/install.jinja +1 -0
  70. pygenkit/templates/python-cli/debian/links.jinja +1 -0
  71. pygenkit/templates/python-cli/debian/postinst.jinja +15 -0
  72. pygenkit/templates/python-cli/debian/prerm.jinja +14 -0
  73. pygenkit/templates/python-cli/debian/rules.jinja +11 -0
  74. pygenkit/templates/python-cli/debian/source/options.jinja +2 -0
  75. pygenkit/templates/python-cli/debian/{{module_name}}.service.jinja +13 -0
  76. pygenkit/templates/python-cli/pygenkit.yaml.jinja +19 -0
  77. pygenkit/templates/python-cli/pyproject.toml.jinja +53 -0
  78. pygenkit/templates/python-cli/src/{{module_name}}/__init__.py.jinja +4 -0
  79. pygenkit/templates/python-cli/src/{{module_name}}/cli.py.jinja +28 -0
  80. pygenkit/templates/python-cli/tests/__init__.py +0 -0
  81. pygenkit/templates/python-cli/tests/test_cli.py.jinja +21 -0
  82. pygenkit/utils/__init__.py +4 -0
  83. pygenkit/utils/files.py +29 -0
  84. pygenkit/utils/filters.py +43 -0
  85. pygenkit/validators/__init__.py +3 -0
  86. pygenkit/validators/api.py +30 -0
  87. pygenkit/validators/security.py +102 -0
  88. pygenkit/validators/version.py +77 -0
  89. pygenkit/validators/workflow.py +141 -0
  90. pygenkit-0.2.0.dist-info/METADATA +350 -0
  91. pygenkit-0.2.0.dist-info/RECORD +95 -0
  92. pygenkit-0.2.0.dist-info/WHEEL +5 -0
  93. pygenkit-0.2.0.dist-info/entry_points.txt +2 -0
  94. pygenkit-0.2.0.dist-info/licenses/LICENSE +674 -0
  95. pygenkit-0.2.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,350 @@
1
+ Metadata-Version: 2.4
2
+ Name: pygenkit
3
+ Version: 0.2.0
4
+ Summary: Professional Python project generator — PyPI, APT, and Launchpad ready
5
+ Author-email: Alan Santos <alan.profissional.dev@gmail.com>
6
+ License-Expression: GPL-3.0-only
7
+ Project-URL: Homepage, https://github.com/alan-n7x/pygenkit
8
+ Project-URL: Repository, https://github.com/alan-n7x/pygenkit
9
+ Project-URL: Issues, https://github.com/alan-n7x/pygenkit/issues
10
+ Requires-Python: >=3.12
11
+ Description-Content-Type: text/markdown
12
+ License-File: LICENSE
13
+ Requires-Dist: typer>=0.12
14
+ Requires-Dist: jinja2>=3.1
15
+ Requires-Dist: pyyaml>=6.0
16
+ Dynamic: license-file
17
+
18
+ # PyGenKit
19
+
20
+ Professional Python project generator -- **PyPI**, **APT**, and **Launchpad** ready.
21
+
22
+ Inspect existing Python projects, validate version consistency and CI/CD security, and
23
+ generate GitHub Actions pipelines, Dockerfiles, and deploy configs.
24
+
25
+ ## Installation
26
+
27
+ ```bash
28
+ pip install pygenkit
29
+ ```
30
+
31
+ Or via `uv`:
32
+
33
+ ```bash
34
+ uv tool install pygenkit
35
+ ```
36
+
37
+ ## Quick Start
38
+
39
+ ```bash
40
+ # Scaffold a complete project with CI/CD
41
+ pygenkit new my-app
42
+ cd my-app
43
+
44
+ # Inspect project structure
45
+ pygenkit inspect
46
+
47
+ # Validate versions, workflows, security
48
+ pygenkit validate
49
+
50
+ # Generate CI/CD pipelines, Docker, deploy configs
51
+ pygenkit generate
52
+
53
+ # Check system requirements
54
+ pygenkit doctor
55
+ ```
56
+
57
+ ## Commands
58
+
59
+ | Command | Description |
60
+ |-----------------|------------------------------------------------|
61
+ | `new` | Scaffold a complete Python project with CI/CD |
62
+ | `init` | Create `pygenkit.toml` in an existing project |
63
+ | `inspect` | Analyze project structure, versions, metadata |
64
+ | `validate` | Check version consistency, workflows, security |
65
+ | `generate` | Generate CI/CD, Docker, and deploy files |
66
+ | `health` | Assess project health across 7 categories |
67
+ | `review` | Review a GitHub PR diff using AI |
68
+ | `release-check` | Verify release readiness (coming soon) |
69
+ | `doctor` | Check system for required tools |
70
+
71
+ ## Usage
72
+
73
+ ```bash
74
+ # Create config
75
+ pygenkit init my-project
76
+
77
+ # Inspect project
78
+ pygenkit inspect
79
+
80
+ # Validate
81
+ pygenkit validate
82
+
83
+ # Generate GitHub Actions CI/CD pipelines
84
+ pygenkit generate
85
+
86
+ # Dry-run to preview without writing
87
+ pygenkit generate --dry-run
88
+
89
+ # Overwrite existing files
90
+ pygenkit generate --force
91
+
92
+ # Enable Docker + deploy in config, then generate:
93
+ # [docker]
94
+ # enabled = true
95
+ # base_image = "3.12"
96
+ # port = 8000
97
+ #
98
+ # [deploy]
99
+ # enabled = true
100
+ # fly = true
101
+ # heroku = true
102
+ # railway = true
103
+ ```
104
+
105
+ ## Inspect
106
+
107
+ Scans your project and reports:
108
+
109
+ - Project name, version, module
110
+ - Build backend (setuptools, hatchling, poetry, etc.)
111
+ - Python version requirement
112
+ - License type (MIT, Apache, GPL, etc.)
113
+ - Version consistency between `pyproject.toml`, `__init__.py`, `debian/changelog`, and git tags
114
+ - CI/CD workflow detection
115
+ - Debian packaging status
116
+
117
+ ## Validate
118
+
119
+ Runs three categories of checks:
120
+
121
+ - **Version**: consistency across `pyproject.toml`, `__init__.py`, `debian/changelog`, git tags
122
+ - **Workflow**: YAML validity, missing metadata, outdated actions (`checkout@v3`), SHA pin warnings, script injection
123
+ - **Security**: missing permissions blocks, hardcoded secrets, PyPI publish without protected environment
124
+
125
+ ## Generate
126
+
127
+ Generates files from Jinja2 templates based on `pygenkit.toml`:
128
+
129
+ ### GitHub Actions
130
+
131
+ | File | Description |
132
+ |------------------------|-------------------------------------------|
133
+ | `.github/workflows/ci.yml` | Ruff lint, MyPy type-check, Pytest |
134
+ | `.github/workflows/release.yml` | Build wheel, create GitHub Release |
135
+ | `.github/workflows/publish-pypi.yml` | Trusted PyPI publishing |
136
+ | `.github/workflows/publish-launchpad.yml` | dput to Launchpad PPA |
137
+
138
+ ### Docker
139
+
140
+ | File | Description |
141
+ |----------------------|------------------------|
142
+ | `Dockerfile` | Multi-stage build |
143
+ | `docker-compose.yml` | Service configuration |
144
+
145
+ ### Deploy
146
+
147
+ | File | Platform |
148
+ |-----------------|----------|
149
+ | `fly.toml` | Fly.io |
150
+ | `Procfile` | Heroku |
151
+ | `railway.json` | Railway |
152
+
153
+ ## Configuration (`pygenkit.toml`)
154
+
155
+ ```toml
156
+ [project]
157
+ name = "my-app"
158
+ version = "0.1.0"
159
+ extras = ""
160
+
161
+ [ci]
162
+ python_versions = ["3.12", "3.13"]
163
+ runner = "ubuntu-latest"
164
+ lint = true
165
+ type_check = true
166
+
167
+ [release]
168
+ branch = "main"
169
+ tag_prefix = "v"
170
+ changelog = "CHANGELOG.md"
171
+
172
+ [pypi]
173
+ enabled = true
174
+ environment = "pypi"
175
+ trusted_publishing = true
176
+
177
+ [debian]
178
+ enabled = true
179
+ email = ""
180
+ name = ""
181
+ owner = ""
182
+ ppa = "tools"
183
+ distributions = ["noble"]
184
+ revision = "1"
185
+
186
+ [github]
187
+ ci = true
188
+ release = true
189
+ publish_pypi = true
190
+ publish_launchpad = true
191
+
192
+ [docker]
193
+ enabled = false
194
+ base_image = "3.12"
195
+ port = 8000
196
+ volumes = []
197
+
198
+ [deploy]
199
+ enabled = false
200
+ fly = true
201
+ heroku = true
202
+ railway = true
203
+ primary_region = "iad"
204
+ port = 8000
205
+ memory = "512mb"
206
+ cpu_kind = "shared"
207
+ cpus = 1
208
+ ```
209
+
210
+ ## Doctor
211
+
212
+ ```bash
213
+ pygenkit doctor
214
+ ```
215
+
216
+ Checks for:
217
+ - Python 3.12+
218
+ - Git
219
+ - GitHub CLI (gh)
220
+ - GPG
221
+ - dput
222
+ - debhelper
223
+ - twine
224
+ - build
225
+
226
+ ## Publishing setup
227
+
228
+ PyPI publishing uses Trusted Publishing (OIDC), so it does not require a long-lived API
229
+ token. Configure the `pypi` environment on GitHub and authorize `release.yml` as a
230
+ Trusted Publisher for the `pygenkit` project on PyPI. Set the repository variable
231
+ `PYPI_ENABLED=true` to enable the publish step.
232
+
233
+ Launchpad publishing requires a PPA and an OpenPGP key registered with the Launchpad
234
+ account. Add these secrets to the `launchpad` GitHub environment:
235
+
236
+ - `GPG_PRIVATE_KEY`
237
+ - `GPG_PASSPHRASE`
238
+ - `GPG_KEY_ID`
239
+
240
+ ## Architecture
241
+
242
+ ```
243
+ src/pygenkit/
244
+ ├── cli/ # CLI commands (Typer)
245
+ │ └── commands/ # init, inspect, validate, generate, release-check, doctor
246
+ ├── generators/ # GitHub Actions, Docker, Deploy generators
247
+ │ ├── base.py # Base generator with RenderEngine
248
+ │ ├── github_actions.py
249
+ │ ├── docker.py
250
+ │ ├── deploy.py
251
+ │ └── orchestrator.py
252
+ ├── inspector/ # Read and analyze existing projects
253
+ │ ├── api.py # Main inspect_project()
254
+ │ ├── debian.py # Debian packaging inspection
255
+ │ ├── detect.py # Module, tests, license, version detection
256
+ │ ├── git.py # Git remote, tags
257
+ │ └── pyproject.py # pyproject.toml parsing
258
+ ├── models/ # Data models (dataclasses)
259
+ │ ├── config.py # PyGenKitConfig and sub-configs
260
+ │ └── inspection.py # ProjectInspection and sub-inspections
261
+ ├── render/ # Jinja2 rendering engine
262
+ ├── templates/ # Jinja2 templates for generation
263
+ │ ├── github/workflows/ # CI, release, PyPI, Launchpad workflows
264
+ │ ├── docker/ # Dockerfile, docker-compose
265
+ │ └── deploy/ # Fly.io, Heroku, Railway configs
266
+ ├── utils/ # File utilities, template filters
267
+ └── validators/ # Version, workflow, security validators
268
+ ├── api.py
269
+ ├── version.py
270
+ ├── workflow.py
271
+ └── security.py
272
+ ```
273
+
274
+ ## Development Workflow
275
+
276
+ PyGenKit itself follows the professional workflow it generates for other projects.
277
+
278
+ ```
279
+ feature branch → Pull Request → CI checks → merge to main → tag → release
280
+ ```
281
+
282
+ ### Step by step
283
+
284
+ ```bash
285
+ # 1. Create a feature branch
286
+ git checkout -b feat/my-feature
287
+
288
+ # 2. Code, commit, push
289
+ ruff check src/ tests/
290
+ mypy src/pygenkit/
291
+ pytest
292
+ git add . && git commit -m "feat: description"
293
+ git push -u origin feat/my-feature
294
+
295
+ # 3. Open a Pull Request on GitHub
296
+ # CI runs automatically on PR
297
+
298
+ # 4. After merge, tag a release
299
+ git checkout main
300
+ git pull
301
+ pygenkit release-check # verify readiness
302
+ git tag v0.x.x
303
+ git push origin v0.x.x # triggers Release workflow
304
+ ```
305
+
306
+ ### Branch naming
307
+
308
+ | Prefix | Purpose |
309
+ |------------|------------------------|
310
+ | `feat/*` | New features |
311
+ | `fix/*` | Bug fixes |
312
+ | `refactor/*` | Code improvements |
313
+ | `docs/*` | Documentation |
314
+ | `ci/*` | CI/CD changes |
315
+
316
+ ## Branch Protection
317
+
318
+ The `main` branch **must be protected** in the GitHub repository settings:
319
+
320
+ ### Required settings
321
+
322
+ | Setting | Solo | Team |
323
+ |----------------------------------|------|------|
324
+ | Require pull request before merging | Yes | Yes |
325
+ | Require status checks to pass (CI) | Yes | Yes |
326
+ | Block force pushes | Yes | Yes |
327
+ | Restrict deletions | Yes | Yes |
328
+ | Required approvals | 0 | 1 |
329
+
330
+ When working alone, skip approval requirements. When adding maintainers, set **Required approvals: 1**.
331
+
332
+ ### How to configure
333
+
334
+ ```
335
+ GitHub repo → Settings → Branches → Add branch protection rule
336
+ Branch name pattern: main
337
+ ☑ Require a pull request before merging
338
+ ☑ Require status checks to pass
339
+ ☑ Require CI
340
+ ☑ Block force pushes
341
+ ☑ Restrict deletions
342
+ ```
343
+
344
+ ## Requirements
345
+
346
+ - Python 3.12+
347
+
348
+ ## License
349
+
350
+ GNU General Public License v3.0 only (`GPL-3.0-only`). See [LICENSE](LICENSE).
@@ -0,0 +1,95 @@
1
+ pygenkit/__init__.py,sha256=DZ8lZdDvfkI5bOMcCPTaBTwO3c8KSQKyntA8WYN0Mqw,48
2
+ pygenkit/cli.py,sha256=l1LgxnGxKqOgGbp4alQHVkvb-ogEOjw6oK-j2tEoBy8,71
3
+ pygenkit/ai/__init__.py,sha256=5ZqxoqhRKeTr50ueuMJjr2ngE8rdlbVVhpRY51zAG74,285
4
+ pygenkit/ai/prompts.py,sha256=wxA6pghwwHfbYLH41QsgQGXesRNHi77W0b7WS2vIIbw,1163
5
+ pygenkit/ai/provider.py,sha256=8drP4gXLjdou6oUM6Ux_BVlHS8lS1ZLakme7BYGYFs4,1847
6
+ pygenkit/ai/review.py,sha256=wBYcDDkXCJKgDBzAJueRTY6LUCxm9dfSWGKZXt-I0gY,1615
7
+ pygenkit/cli/__init__.py,sha256=RP1A70uYZ0t1fz3E5TdjMh00wN3gcIO9rQS9_fd3z-Q,52
8
+ pygenkit/cli/app.py,sha256=aUyR6snsWI1NvYShQmwauyM1wSgC4Vzm9rouH5SYv9M,1174
9
+ pygenkit/cli/commands/__init__.py,sha256=J_NuXcjF2Qmn8-OY6ygMp-IFUi39SdtQNu2HC_9sI_8,666
10
+ pygenkit/cli/commands/build.py,sha256=UJ2PkGeIpn17DB2vmNlPF8sua1XnEVfcyyMMhxHDyUk,1078
11
+ pygenkit/cli/commands/doctor.py,sha256=EE4v7Hzy-121IjTb3nMIDjpkUB2P76MN_FQhm4eYjMg,3546
12
+ pygenkit/cli/commands/generate.py,sha256=c0x8BCIM3fZ-iiLT3zetgOJubHeeflZ_EVuCFmni34M,1749
13
+ pygenkit/cli/commands/health.py,sha256=qmYTk4Yfna3zH7s0Kz0R4idJTgNTUrFFnJEYUP5-GUs,1622
14
+ pygenkit/cli/commands/init.py,sha256=KsNgwYmR9vFKH91eNIRL207hjiMkN0hLG5j_pxPHkaM,807
15
+ pygenkit/cli/commands/inspect.py,sha256=TxooPFSMYa_CWh59qqqDYZIHi_t8mArOYT4V79rv7_s,1752
16
+ pygenkit/cli/commands/new.py,sha256=BLRBCowf3pmbsGiAFfVFXPRd8lh_T8k6407kmbwpawQ,1230
17
+ pygenkit/cli/commands/publish.py,sha256=4mHwTv6MgPCR6GIZz_X-9cyGCL8LC533aQBgHebRkpA,913
18
+ pygenkit/cli/commands/release.py,sha256=ohCJQjqQyDHknhmE24-h6Fah7h0q0MDnTw_uZgCpZQU,1185
19
+ pygenkit/cli/commands/release_check.py,sha256=8WPFeipGg4_-vy1ShGRr3EgLZO6k6JClX_gPgkGU67M,504
20
+ pygenkit/cli/commands/review.py,sha256=CekfUVG2ZgJL8x0CRNpZHxAaPFCidzhyDY4ZPJQ68hk,1803
21
+ pygenkit/cli/commands/validate.py,sha256=8euR_00I8N8HNQBunS06WEFXX7HpmleVZVAAKJmVPVE,854
22
+ pygenkit/config/__init__.py,sha256=4aSz23cmNfmBpgc8dUco3Zv-uQdWH4NCN41iV0TFG2w,80
23
+ pygenkit/generators/__init__.py,sha256=09SxafdOQ_oB7zpDpL304o_Ndx5ZTDJKzJataQ9Mnpk,430
24
+ pygenkit/generators/base.py,sha256=A6yXUi6-FMnxpvTRTEZffXScEJIXyrNGUAnfuici_c0,914
25
+ pygenkit/generators/deploy.py,sha256=FYXDuKKKi_sCqn1g1lcfPIbwent0hOwg_G_hkT9k_5M,1480
26
+ pygenkit/generators/docker.py,sha256=XXGY8s1JTDcU51yDwG4Ip2OTJXhvlolvYnmnP85yYdY,1224
27
+ pygenkit/generators/github_actions.py,sha256=8WVLmOZ4SyzdPuEOCt7aRgIdNpbAoSL1Dgq5lzZRYJo,2227
28
+ pygenkit/generators/orchestrator.py,sha256=s337Pv2zKUikDAuz9GzQiyHzA7TdeQXOuf35vslx3yo,947
29
+ pygenkit/generators/project.py,sha256=dUE0ZpenrBXvD2GH7oJSLaXOE_4q-EBKGvEHwhPx_aA,3690
30
+ pygenkit/health/__init__.py,sha256=kqSFr8-iF0oaoIXNp5hJOSqfP8mCP7CtfhATa1tlr6Y,81
31
+ pygenkit/health/api.py,sha256=KP0x6zzV8XBKFeqZzAe9V1Ek4pQCdD9EhMjNAlfcTu4,1625
32
+ pygenkit/health/checks.py,sha256=E9cYfjzyxXE1Tx8qtde-rjRtMRx_nXSUBqVOWMA77lA,10686
33
+ pygenkit/inspector/__init__.py,sha256=8XVIkpYKv3DgPl1zXnZCQYWvftPFgiL4voJUBFZpUCc,82
34
+ pygenkit/inspector/api.py,sha256=th-AEYfJS8Ew1D05a-xu-uwipLyK9EIlWsLrHnR1Aq0,5177
35
+ pygenkit/inspector/debian.py,sha256=B5RzV3tymmVo48Ik59E88f_uXhrRwhhhZ0_Lz38xOWo,1599
36
+ pygenkit/inspector/detect.py,sha256=5E7-vtffwE7Om2JlQyhjGs3pkQ-oEcsKgAH2fexF2TQ,2659
37
+ pygenkit/inspector/git.py,sha256=IujIpVBJ98CRiBTN6kbCwe6i-QWsAfDIEtkJNJRZo6I,1577
38
+ pygenkit/inspector/pyproject.py,sha256=4TJDGIqahoomZSasjOOlGoiEeioZCVMJLB3yMnId6I4,2287
39
+ pygenkit/models/__init__.py,sha256=zBgZbLd6kmmFSbXVLg2w8JEoHex2LV-0UIEwhJZrdXo,474
40
+ pygenkit/models/config.py,sha256=_SN16Cga2rhVcbL_Br3zKPMo4pQWsN4ENZBsO8O-b-8,7717
41
+ pygenkit/models/health.py,sha256=-H77lA5dPfFCo5leehSFwqOpV03weEwKmnW4-VYPICA,610
42
+ pygenkit/models/inspection.py,sha256=x6d0BaaEukqJloBrsfg5P9dxdZcBcLU0u0f-GUXv8no,1628
43
+ pygenkit/render/__init__.py,sha256=ulBGvecjwD3lvvmIYnV46yiadlhdMn5X3_BRml_dA74,76
44
+ pygenkit/render/engine.py,sha256=sagRApa16oqAfmVpRACaWuvFo6Uf4L9snjLE0L08k9c,1326
45
+ pygenkit/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
46
+ pygenkit/templates/deploy/Procfile.j2,sha256=CtWGlnoT2IymqQB0-knaFKEzm9GwB3x6jjUg6MBhL10,24
47
+ pygenkit/templates/deploy/fly.toml.j2,sha256=jFl2vYJ8ypx6IekF4YyD09g-NQ2S2c6AW96_g4B-OHU,289
48
+ pygenkit/templates/deploy/railway.json.j2,sha256=IHiFNqgpODhanLu04aqu-dHP9QTc9E47nPRPSKqdnWg,285
49
+ pygenkit/templates/docker/Dockerfile.j2,sha256=7wjhmOhsR7lsrDH6dUXNiubL7MGCUnzObkoS1Du0Py4,324
50
+ pygenkit/templates/docker/docker-compose.yml.j2,sha256=P4deAYkzsTq9OzfSqh9z2Qj4J1q9fgjaPiv0gTLvCww,303
51
+ pygenkit/templates/github/workflows/ci.yml.j2,sha256=KqvwGf5JCy44v30TqXodq1epaoPid1JigAqsCKU-7Y8,842
52
+ pygenkit/templates/github/workflows/publish-launchpad.yml.j2,sha256=RBqQBgjXqv5gvv7neInlAdN1bbcSdqNctTo99U855Nw,1255
53
+ pygenkit/templates/github/workflows/publish-pypi.yml.j2,sha256=NFGg1w3n2H0Rh69hwrsv735NZD7s_ZjidyNyo-Xre0A,745
54
+ pygenkit/templates/github/workflows/release.yml.j2,sha256=W4vm8kjYJYxL244gBzuGi13fvENrsDQirW0LCHckFgY,578
55
+ pygenkit/templates/project/LICENSE.j2,sha256=4IEg4LUk1Z2LC65KSgNOfcJKm4saXI7EA7IrRjvg8PA,1080
56
+ pygenkit/templates/project/README.md.j2,sha256=oCdedqf7p7Qmh1rKMEtbT7lG8r6P_TqxL3babTH8CeM,217
57
+ pygenkit/templates/project/pyproject.toml.j2,sha256=rCO_35i20My8ZYquDNhyBmYkThRFXJWFDnBtCShaSkI,1058
58
+ pygenkit/templates/project/src/__init__.py.j2,sha256=VyBs1fD545CX03X2sutKVdVZz54C-ZOGEOckUVab_1k,64
59
+ pygenkit/templates/project/src/cli.py.j2,sha256=UelnipaPJKdblrDd4N49Ri2DHkp8Bbrf7i2mQ1RIY9A,101
60
+ pygenkit/templates/project/tests/__init__.py.j2,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
61
+ pygenkit/templates/project/tests/test_cli.py.j2,sha256=LspaSmI9hRUe6EupMZhByuBFNQama9pokQZMZvIP9EU,92
62
+ pygenkit/templates/python-cli/CHANGELOG.md.jinja,sha256=WvKMf-ao8oKOXQATuMADGZy0ZJTdDd_FCtpNBWhrIgc,129
63
+ pygenkit/templates/python-cli/LICENSE.jinja,sha256=LVzysoEezAeVncO3qrMiZhtVArVd4XQCpuTk-f5-GNA,11717
64
+ pygenkit/templates/python-cli/Makefile.jinja,sha256=lIJbf76p5IXXWDKNIarcN4KUVCA2aRMzJZ8W84Cim4w,550
65
+ pygenkit/templates/python-cli/README.md.jinja,sha256=NcJ85uRT0B2Hs6BhQuFdihWiSQycVjMUiPSe_Q_ivQg,1078
66
+ pygenkit/templates/python-cli/pygenkit.yaml.jinja,sha256=lgb3fcx7NngXb1unRrj5mnlcHTgGHvNoWDpRY6rQ3tQ,298
67
+ pygenkit/templates/python-cli/pyproject.toml.jinja,sha256=DsuFQOPfHBnQgDAsK_leC15aQ2p2dSxTJRarVFCrWWA,1173
68
+ pygenkit/templates/python-cli/debian/changelog.jinja,sha256=xgQan653Ezfj0FoJr6jLDU1pD6Y1W_xre_gsdbdROkE,228
69
+ pygenkit/templates/python-cli/debian/control.jinja,sha256=fZ29d60FyxGgIDwjVLEkYTYUMtiBmKcZS2e9tTfQuOI,683
70
+ pygenkit/templates/python-cli/debian/copyright.jinja,sha256=d8wBDqT4AGA-mH-Lg_MYVO2g6fYfmktc4fcAb8UsatM,1111
71
+ pygenkit/templates/python-cli/debian/install.jinja,sha256=HvP47uxlMlebrh-m9eDuJbBVwZRzK1E9XUd-q8lujos,54
72
+ pygenkit/templates/python-cli/debian/links.jinja,sha256=2f6mCTrJ8DkwGqFRksQm930vuR5n9YCaJmEUxL63QFw,98
73
+ pygenkit/templates/python-cli/debian/postinst.jinja,sha256=AdDCz_xRCUwzPhQIloMjhQWcW2AuUOsy87jPq_MKCVE,264
74
+ pygenkit/templates/python-cli/debian/prerm.jinja,sha256=VMHw4YtDF9p6JAOnxM-hKMA3nzoWWGQv6FkPrj_e1x0,294
75
+ pygenkit/templates/python-cli/debian/rules.jinja,sha256=ANz4D7HJ3GPPByEgsCbwLXiIz49avd0dti4fMdaepk8,325
76
+ pygenkit/templates/python-cli/debian/{{module_name}}.service.jinja,sha256=hIoJjvs6hpkqRIzuHGV4XGf1Q-ZnkXdyTDoH3qlR6qc,202
77
+ pygenkit/templates/python-cli/debian/source/options.jinja,sha256=DseepreG0cWXYZ--xRL1dRofghibg6pGdnEcw0A-RT8,209
78
+ pygenkit/templates/python-cli/src/{{module_name}}/__init__.py.jinja,sha256=0OiD7v0CT9HkwngzdeLKF3-ce2_y6QJfZ384aKcNH4U,103
79
+ pygenkit/templates/python-cli/src/{{module_name}}/cli.py.jinja,sha256=Iwdr7HkmNoKK0qOHflRl17NDPPqD_SPpU8hNxXz-nuI,602
80
+ pygenkit/templates/python-cli/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
81
+ pygenkit/templates/python-cli/tests/test_cli.py.jinja,sha256=ezV4bKm9ziFD0gazWCENx_5aOaLClVdFVk32ZSaq9fg,425
82
+ pygenkit/utils/__init__.py,sha256=hV6-XGsyK94Bt0G-qhkNVVM-bs3SfSFFBM9hZGf5nrI,138
83
+ pygenkit/utils/files.py,sha256=CADfsD1_XMKJ24zcSEuFUikJShF_ff9_2-X6Cuo0dqU,749
84
+ pygenkit/utils/filters.py,sha256=A-iZYXurOcy7T_Q_1VjC2911OSh-RSmjwlvTK7_PnX0,1254
85
+ pygenkit/validators/__init__.py,sha256=pZUOeXf0naLsMk77kPXt_F29UZmxy2dGLYQ8yLd_kSc,111
86
+ pygenkit/validators/api.py,sha256=FwnSgGm40PIs2Z1GBcuLLP-8rZv1MIWjVbLBaYP0iyg,932
87
+ pygenkit/validators/security.py,sha256=AFBlbi2f6rLDfAWO-WxMFM5QySIkV-PQSw9NtFFtLXs,3100
88
+ pygenkit/validators/version.py,sha256=lzweN-y_M2UsChbFp9VpBNOPTLWB9XjHhjyNmcd2SjY,2407
89
+ pygenkit/validators/workflow.py,sha256=a7l9-adShH4vuI_UQdUd0EToAJO0iOgnpdHdD4Igzbs,4203
90
+ pygenkit-0.2.0.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
91
+ pygenkit-0.2.0.dist-info/METADATA,sha256=okBdZ1tUEXp8GpsdXvUOB-e3vchunOZvtqBzogtPC7Y,9145
92
+ pygenkit-0.2.0.dist-info/WHEEL,sha256=K260EYznzXsJYBQGqmI8VTxEdiZYNvDZwW9cBh9-_MA,91
93
+ pygenkit-0.2.0.dist-info/entry_points.txt,sha256=MV0A2EYUeQqMgbohIlFTXRUMAzniJK8eYYR40S5dmyw,46
94
+ pygenkit-0.2.0.dist-info/top_level.txt,sha256=plfVGrWFrx-lECgMtKpfUVvf_E7Bv9_j4ZTzj9Osa-4,9
95
+ pygenkit-0.2.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (83.0.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ pygenkit = pygenkit.cli:cli