huitzo-cli 0.0.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 (67) hide show
  1. huitzo_cli-0.0.0/.github/workflows/publish-cli.yml +338 -0
  2. huitzo_cli-0.0.0/.github/workflows/test.yml +167 -0
  3. huitzo_cli-0.0.0/.gitignore +137 -0
  4. huitzo_cli-0.0.0/PKG-INFO +19 -0
  5. huitzo_cli-0.0.0/README.md +364 -0
  6. huitzo_cli-0.0.0/examples/hello-pack/.gitignore +13 -0
  7. huitzo_cli-0.0.0/examples/hello-pack/README.md +50 -0
  8. huitzo_cli-0.0.0/examples/hello-pack/huitzo.yaml +14 -0
  9. huitzo_cli-0.0.0/examples/hello-pack/pyproject.toml +31 -0
  10. huitzo_cli-0.0.0/examples/hello-pack/src/hello_pack/__init__.py +3 -0
  11. huitzo_cli-0.0.0/examples/hello-pack/src/hello_pack/commands/__init__.py +1 -0
  12. huitzo_cli-0.0.0/examples/hello-pack/src/hello_pack/commands/greetings.py +39 -0
  13. huitzo_cli-0.0.0/examples/hello-pack/tests/__init__.py +1 -0
  14. huitzo_cli-0.0.0/examples/hello-pack/tests/test_greetings.py +36 -0
  15. huitzo_cli-0.0.0/pyproject.toml +40 -0
  16. huitzo_cli-0.0.0/src/huitzo_cli/__init__.py +14 -0
  17. huitzo_cli-0.0.0/src/huitzo_cli/auth.py +146 -0
  18. huitzo_cli-0.0.0/src/huitzo_cli/commands/__init__.py +1 -0
  19. huitzo_cli-0.0.0/src/huitzo_cli/commands/auth.py +61 -0
  20. huitzo_cli-0.0.0/src/huitzo_cli/commands/build.py +81 -0
  21. huitzo_cli-0.0.0/src/huitzo_cli/commands/config_cmd.py +98 -0
  22. huitzo_cli-0.0.0/src/huitzo_cli/commands/dashboard.py +145 -0
  23. huitzo_cli-0.0.0/src/huitzo_cli/commands/dev.py +113 -0
  24. huitzo_cli-0.0.0/src/huitzo_cli/commands/init.py +142 -0
  25. huitzo_cli-0.0.0/src/huitzo_cli/commands/registry.py +105 -0
  26. huitzo_cli-0.0.0/src/huitzo_cli/commands/secrets.py +197 -0
  27. huitzo_cli-0.0.0/src/huitzo_cli/commands/test.py +56 -0
  28. huitzo_cli-0.0.0/src/huitzo_cli/commands/validate.py +64 -0
  29. huitzo_cli-0.0.0/src/huitzo_cli/config.py +219 -0
  30. huitzo_cli-0.0.0/src/huitzo_cli/docs_server/__init__.py +1 -0
  31. huitzo_cli-0.0.0/src/huitzo_cli/docs_server/server.py +128 -0
  32. huitzo_cli-0.0.0/src/huitzo_cli/main.py +72 -0
  33. huitzo_cli-0.0.0/src/huitzo_cli/sandbox/__init__.py +1 -0
  34. huitzo_cli-0.0.0/src/huitzo_cli/sandbox/proxy.py +75 -0
  35. huitzo_cli-0.0.0/src/huitzo_cli/templates/dashboard/App.css.j2 +19 -0
  36. huitzo_cli-0.0.0/src/huitzo_cli/templates/dashboard/App.tsx.j2 +21 -0
  37. huitzo_cli-0.0.0/src/huitzo_cli/templates/dashboard/index.css.j2 +58 -0
  38. huitzo_cli-0.0.0/src/huitzo_cli/templates/dashboard/index.html.j2 +13 -0
  39. huitzo_cli-0.0.0/src/huitzo_cli/templates/dashboard/main.tsx.j2 +10 -0
  40. huitzo_cli-0.0.0/src/huitzo_cli/templates/dashboard/package.json.j2 +19 -0
  41. huitzo_cli-0.0.0/src/huitzo_cli/templates/dashboard/tsconfig.json.j2 +25 -0
  42. huitzo_cli-0.0.0/src/huitzo_cli/templates/dashboard/tsconfig.node.json.j2 +10 -0
  43. huitzo_cli-0.0.0/src/huitzo_cli/templates/dashboard/vite.config.ts.j2 +15 -0
  44. huitzo_cli-0.0.0/src/huitzo_cli/templates/pack/.gitignore.j2 +13 -0
  45. huitzo_cli-0.0.0/src/huitzo_cli/templates/pack/README.md.j2 +52 -0
  46. huitzo_cli-0.0.0/src/huitzo_cli/templates/pack/__init__.py.j2 +3 -0
  47. huitzo_cli-0.0.0/src/huitzo_cli/templates/pack/hello.py.j2 +20 -0
  48. huitzo_cli-0.0.0/src/huitzo_cli/templates/pack/huitzo.yaml.j2 +11 -0
  49. huitzo_cli-0.0.0/src/huitzo_cli/templates/pack/pyproject.toml.j2 +31 -0
  50. huitzo_cli-0.0.0/src/huitzo_cli/templates/pack/test_hello.py.j2 +22 -0
  51. huitzo_cli-0.0.0/src/huitzo_cli/validator.py +133 -0
  52. huitzo_cli-0.0.0/src/huitzo_cli/version.py +14 -0
  53. huitzo_cli-0.0.0/tests/__init__.py +1 -0
  54. huitzo_cli-0.0.0/tests/conftest.py +35 -0
  55. huitzo_cli-0.0.0/tests/test_auth.py +142 -0
  56. huitzo_cli-0.0.0/tests/test_commands.py +54 -0
  57. huitzo_cli-0.0.0/tests/test_config.py +130 -0
  58. huitzo_cli-0.0.0/tests/test_config_cmd.py +50 -0
  59. huitzo_cli-0.0.0/tests/test_dashboard.py +100 -0
  60. huitzo_cli-0.0.0/tests/test_dev.py +65 -0
  61. huitzo_cli-0.0.0/tests/test_init.py +140 -0
  62. huitzo_cli-0.0.0/tests/test_integration.py +172 -0
  63. huitzo_cli-0.0.0/tests/test_main.py +52 -0
  64. huitzo_cli-0.0.0/tests/test_registry.py +66 -0
  65. huitzo_cli-0.0.0/tests/test_secrets.py +100 -0
  66. huitzo_cli-0.0.0/tests/test_validate.py +149 -0
  67. huitzo_cli-0.0.0/uv.lock +914 -0
@@ -0,0 +1,338 @@
1
+ # =============================================================================
2
+ # CLI Publishing Workflow
3
+ # =============================================================================
4
+ # Implements:
5
+ # - docs/architecture/ci-cd.md#workflows
6
+ # - docs/architecture/ci-cd.md#self-hosted-runners
7
+ #
8
+ # Jobs:
9
+ # - detect-version: Determine version and targets from branch/tag
10
+ # - test: Cross-platform unit tests (3.11-3.14 all on self-hosted Linux)
11
+ # - build: Build distribution packages
12
+ # - publish-to-testpypi: Publish to TestPyPI for develop branches
13
+ # - publish-to-pypi: Publish to PyPI for main/tags
14
+ # - publish-release-notes: Create GitHub release for tags
15
+ #
16
+ # Self-Hosted Runners:
17
+ # - linux: All Python versions and builds
18
+ # =============================================================================
19
+
20
+ name: Publish Huitzo CLI 🚀 to PyPI and TestPyPI
21
+
22
+ on:
23
+ push:
24
+ branches:
25
+ - main
26
+ - 'develop/**'
27
+ tags:
28
+ - 'v*'
29
+
30
+ concurrency:
31
+ group: ${{ github.workflow }}-${{ github.ref }}
32
+ cancel-in-progress: true
33
+
34
+ jobs:
35
+ detect-version:
36
+ name: Detect Release Version
37
+ runs-on:
38
+ group: linux
39
+ labels: [self-hosted, Linux, X64]
40
+ outputs:
41
+ version: ${{ steps.version.outputs.version }}
42
+ is-release: ${{ steps.version.outputs.is-release }}
43
+ target: ${{ steps.version.outputs.target }}
44
+
45
+ steps:
46
+ - name: Pre-cleanup
47
+ run: |
48
+ docker image prune -f 2>/dev/null || true
49
+
50
+ - uses: actions/checkout@v6
51
+ with:
52
+ fetch-depth: 0
53
+
54
+ - name: Detect version strategy
55
+ id: version
56
+ run: |
57
+ if [[ "${{ github.ref }}" == refs/tags/v* ]]; then
58
+ # Tag push: use tag as version
59
+ VERSION="${{ github.ref_name }}"
60
+ IS_RELEASE="true"
61
+ TARGET="pypi"
62
+ elif [[ "${{ github.ref }}" == refs/heads/main ]]; then
63
+ # Main branch: publish to PyPI with clean version
64
+ if git describe --tags --abbrev=0 2>/dev/null; then
65
+ VERSION=$(git describe --tags --abbrev=0 | sed 's/^v//')
66
+ else
67
+ VERSION=$(grep '^version = ' pyproject.toml | cut -d'"' -f2)
68
+ fi
69
+ IS_RELEASE="false"
70
+ TARGET="pypi"
71
+ elif [[ "${{ github.ref }}" == refs/heads/develop/* ]]; then
72
+ # Develop branch: use dev version with timestamp only (PEP 440 compliant)
73
+ BASE_VERSION=$(grep '^version = ' pyproject.toml | cut -d'"' -f2)
74
+ VERSION="${BASE_VERSION}.dev$(date +%s)"
75
+ IS_RELEASE="false"
76
+ TARGET="testpypi"
77
+ else
78
+ VERSION="0.0.0.dev0"
79
+ IS_RELEASE="false"
80
+ TARGET="none"
81
+ fi
82
+
83
+ echo "version=${VERSION}" >> $GITHUB_OUTPUT
84
+ echo "is-release=${IS_RELEASE}" >> $GITHUB_OUTPUT
85
+ echo "target=${TARGET}" >> $GITHUB_OUTPUT
86
+ echo "::notice title=Release Info::Version: ${VERSION} | Release: ${IS_RELEASE} | Target: ${TARGET}"
87
+
88
+ test:
89
+ name: Test Python ${{ matrix.python-version }}
90
+ strategy:
91
+ fail-fast: false
92
+ matrix:
93
+ python-version: ['3.11', '3.12', '3.13', '3.14']
94
+
95
+ runs-on:
96
+ group: linux
97
+ labels: [self-hosted, Linux, X64]
98
+
99
+ # Cache directories scoped by Python version to prevent conflicts
100
+ env:
101
+ UV_CACHE_DIR: /opt/runner-cache/uv/${{ matrix.python-version }}
102
+ PIP_CACHE_DIR: /opt/runner-cache/pip/${{ matrix.python-version }}
103
+
104
+ steps:
105
+ - name: Pre-cleanup
106
+ run: |
107
+ docker image prune -f 2>/dev/null || true
108
+ shell: bash
109
+
110
+ - uses: actions/checkout@v6
111
+ with:
112
+ persist-credentials: false
113
+
114
+ - name: Set up Python ${{ matrix.python-version }}
115
+ uses: actions/setup-python@v6
116
+ with:
117
+ python-version: ${{ matrix.python-version }}
118
+
119
+ - name: Install uv
120
+ uses: astral-sh/setup-uv@v7
121
+ with:
122
+ version: "latest"
123
+
124
+ - name: Install dependencies
125
+ run: uv sync --all-extras
126
+
127
+ - name: Lint with ruff
128
+ run: uv run ruff check .
129
+
130
+ - name: Type check with mypy
131
+ run: uv run mypy --strict src/ --ignore-missing-imports
132
+
133
+ - name: Run pytest
134
+ run: uv run pytest -v --tb=short --cov=huitzo_cli --cov-report=xml
135
+
136
+ - name: Upload coverage
137
+ if: matrix.python-version == '3.14'
138
+ uses: codecov/codecov-action@v4
139
+ with:
140
+ files: ./coverage.xml
141
+ flags: unittests
142
+ name: CLI Python ${{ matrix.python-version }}
143
+ fail_ci_if_error: false
144
+ env:
145
+ CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
146
+
147
+ - name: Post-cleanup
148
+ if: always()
149
+ run: |
150
+ docker image prune -f 2>/dev/null || true
151
+
152
+ build:
153
+ name: Build distribution 📦
154
+ needs:
155
+ - test
156
+ - detect-version
157
+ runs-on:
158
+ group: linux
159
+ labels: [self-hosted, Linux, X64]
160
+
161
+ env:
162
+ UV_CACHE_DIR: /opt/runner-cache/uv/3.14
163
+ PIP_CACHE_DIR: /opt/runner-cache/pip/3.14
164
+
165
+ steps:
166
+ - name: Pre-cleanup
167
+ run: |
168
+ docker image prune -f 2>/dev/null || true
169
+
170
+ - uses: actions/checkout@v6
171
+ with:
172
+ persist-credentials: false
173
+
174
+ - name: Set up Python
175
+ uses: actions/setup-python@v6
176
+ with:
177
+ python-version: '3.14'
178
+
179
+ - name: Install uv
180
+ uses: astral-sh/setup-uv@v7
181
+ with:
182
+ version: "latest"
183
+
184
+ - name: Update version in pyproject.toml
185
+ run: |
186
+ # Replace version in pyproject.toml (if not a release tag)
187
+ if [[ "${{ needs.detect-version.outputs.is-release }}" != "true" ]]; then
188
+ sed -i 's/^version = ".*/version = "${{ needs.detect-version.outputs.version }}"/' pyproject.toml
189
+ fi
190
+
191
+ - name: Build distribution
192
+ run: uv build
193
+
194
+ - name: Store the distribution packages
195
+ uses: actions/upload-artifact@v5
196
+ with:
197
+ name: python-package-distributions
198
+ path: dist/
199
+
200
+ - name: Post-cleanup
201
+ if: always()
202
+ run: |
203
+ docker image prune -f 2>/dev/null || true
204
+
205
+ publish-to-testpypi:
206
+ name: Publish to TestPyPI 🧪
207
+ if: needs.detect-version.outputs.target == 'testpypi'
208
+ needs:
209
+ - build
210
+ - detect-version
211
+ runs-on:
212
+ group: linux
213
+ labels: [self-hosted, Linux, X64]
214
+
215
+ environment:
216
+ name: testpypi
217
+ url: https://test.pypi.org/p/huitzo-cli
218
+
219
+ permissions:
220
+ id-token: write # For trusted publishing
221
+ contents: write # For commit comments
222
+ actions: read # For workflow context
223
+
224
+ steps:
225
+ - name: Pre-cleanup
226
+ run: |
227
+ docker image prune -f 2>/dev/null || true
228
+
229
+ - name: Download all the dists
230
+ uses: actions/download-artifact@v6
231
+ with:
232
+ name: python-package-distributions
233
+ path: dist/
234
+
235
+ - name: Publish distribution to TestPyPI
236
+ uses: pypa/gh-action-pypi-publish@release/v1
237
+ with:
238
+ repository-url: https://test.pypi.org/legacy/
239
+
240
+ - name: Comment on commit
241
+ if: success()
242
+ uses: actions/github-script@v7
243
+ continue-on-error: true
244
+ with:
245
+ script: |
246
+ try {
247
+ await github.rest.repos.createCommitComment({
248
+ owner: context.repo.owner,
249
+ repo: context.repo.repo,
250
+ commit_sha: context.sha,
251
+ body: '✅ CLI Published to TestPyPI v${{ needs.detect-version.outputs.version }}\n\n[View Package](https://test.pypi.org/project/huitzo-cli/${{ needs.detect-version.outputs.version }})'
252
+ })
253
+ } catch (error) {
254
+ console.log('Unable to create commit comment:', error.message)
255
+ }
256
+
257
+ publish-to-pypi:
258
+ name: Publish to PyPI 🚀
259
+ if: needs.detect-version.outputs.target == 'pypi'
260
+ needs:
261
+ - build
262
+ - detect-version
263
+ runs-on:
264
+ group: linux
265
+ labels: [self-hosted, Linux, X64]
266
+
267
+ environment:
268
+ name: pypi
269
+ url: https://pypi.org/p/huitzo-cli
270
+
271
+ permissions:
272
+ id-token: write # For trusted publishing
273
+ contents: write # For commit comments
274
+ actions: read # For workflow context
275
+
276
+ steps:
277
+ - name: Pre-cleanup
278
+ run: |
279
+ docker image prune -f 2>/dev/null || true
280
+
281
+ - name: Download all the dists
282
+ uses: actions/download-artifact@v6
283
+ with:
284
+ name: python-package-distributions
285
+ path: dist/
286
+
287
+ - name: Publish distribution to PyPI
288
+ uses: pypa/gh-action-pypi-publish@release/v1
289
+
290
+ publish-release-notes:
291
+ name: Create GitHub Release
292
+ if: needs.detect-version.outputs.target == 'pypi' && needs.detect-version.outputs.is-release == 'true'
293
+ needs:
294
+ - publish-to-pypi
295
+ - detect-version
296
+ runs-on:
297
+ group: linux
298
+ labels: [self-hosted, Linux, X64]
299
+
300
+ permissions:
301
+ contents: write
302
+
303
+ steps:
304
+ - name: Pre-cleanup
305
+ run: |
306
+ docker image prune -f 2>/dev/null || true
307
+
308
+ - uses: actions/checkout@v6
309
+ with:
310
+ fetch-depth: 0
311
+
312
+ - name: Generate changelog
313
+ id: changelog
314
+ run: |
315
+ TAG="${{ github.ref_name }}"
316
+ PREV_TAG=$(git describe --tags --abbrev=0 ${TAG}^ 2>/dev/null || echo "")
317
+ if [ -z "$PREV_TAG" ]; then
318
+ CHANGELOG=$(git log --pretty=format:"- %s" | head -20)
319
+ else
320
+ CHANGELOG=$(git log ${PREV_TAG}..${TAG} --pretty=format:"- %s")
321
+ fi
322
+ echo "CHANGELOG<<EOF" >> $GITHUB_OUTPUT
323
+ echo "$CHANGELOG" >> $GITHUB_OUTPUT
324
+ echo "EOF" >> $GITHUB_OUTPUT
325
+
326
+ - name: Create Release
327
+ uses: softprops/action-gh-release@v1
328
+ with:
329
+ body: |
330
+ ## CLI Changes in ${{ needs.detect-version.outputs.version }}
331
+
332
+ ${{ steps.changelog.outputs.CHANGELOG }}
333
+
334
+ Published to [PyPI](https://pypi.org/project/huitzo-cli/${{ needs.detect-version.outputs.version }})
335
+ draft: false
336
+ prerelease: false
337
+ env:
338
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -0,0 +1,167 @@
1
+ # =============================================================================
2
+ # CLI CI Workflow
3
+ # =============================================================================
4
+ # Implements:
5
+ # - docs/architecture/ci-cd.md#workflows
6
+ # - docs/architecture/ci-cd.md#self-hosted-runners
7
+ #
8
+ # Jobs:
9
+ # - test: Cross-platform unit tests (3.11-3.14 all on self-hosted Linux)
10
+ # - lint: Lint and type checking
11
+ # - build: Build package
12
+ # - ci-success: Summary job
13
+ #
14
+ # Self-Hosted Runners:
15
+ # - linux: All Python versions and builds
16
+ # =============================================================================
17
+
18
+ name: CLI CI
19
+
20
+ on:
21
+ push:
22
+ branches: [main, develop]
23
+ pull_request:
24
+ branches: [main, develop]
25
+
26
+ permissions:
27
+ contents: read
28
+
29
+ concurrency:
30
+ group: ${{ github.workflow }}-${{ github.ref }}
31
+ cancel-in-progress: true
32
+
33
+ jobs:
34
+ test:
35
+ name: Test Python ${{ matrix.python-version }}
36
+ runs-on:
37
+ group: linux
38
+ labels: [self-hosted, Linux, X64]
39
+ strategy:
40
+ fail-fast: false
41
+ matrix:
42
+ python-version: ["3.11", "3.12", "3.13", "3.14"]
43
+
44
+ # Cache directories scoped by Python version to prevent conflicts
45
+ env:
46
+ UV_CACHE_DIR: /opt/runner-cache/uv/${{ matrix.python-version }}
47
+ PIP_CACHE_DIR: /opt/runner-cache/pip/${{ matrix.python-version }}
48
+
49
+ steps:
50
+ - name: Pre-cleanup
51
+ run: |
52
+ docker image prune -f 2>/dev/null || true
53
+ - uses: actions/checkout@v6
54
+
55
+ - uses: astral-sh/setup-uv@v7
56
+ with:
57
+ python-version: ${{ matrix.python-version }}
58
+
59
+ - name: Install dependencies
60
+ run: uv sync --all-extras
61
+
62
+ - name: Run tests
63
+ run: uv run pytest tests/ -v --cov=src/huitzo_cli --cov-report=xml
64
+
65
+ - name: Upload coverage
66
+ if: matrix.python-version == '3.14'
67
+ uses: actions/upload-artifact@v6
68
+ with:
69
+ name: coverage-report
70
+ path: coverage.xml
71
+ retention-days: 30
72
+ env:
73
+ CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
74
+
75
+ - name: Post-cleanup
76
+ if: always()
77
+ run: |
78
+ docker image prune -f 2>/dev/null || true
79
+
80
+ lint:
81
+ name: Lint & Type Check
82
+ runs-on:
83
+ group: linux
84
+ labels: [self-hosted, Linux, X64]
85
+
86
+ env:
87
+ UV_CACHE_DIR: /opt/runner-cache/uv/3.14
88
+ PIP_CACHE_DIR: /opt/runner-cache/pip/3.14
89
+
90
+ steps:
91
+ - name: Pre-cleanup
92
+ run: |
93
+ docker image prune -f 2>/dev/null || true
94
+ - uses: actions/checkout@v6
95
+
96
+ - uses: astral-sh/setup-uv@v7
97
+ with:
98
+ python-version: "3.14"
99
+
100
+ - name: Install dependencies
101
+ run: uv sync --all-extras
102
+
103
+ - name: Ruff check
104
+ run: uv run ruff check .
105
+
106
+ - name: Ruff format check
107
+ run: uv run ruff format --check .
108
+
109
+ - name: Mypy strict
110
+ run: uv run mypy src/ --strict --ignore-missing-imports
111
+
112
+ - name: Post-cleanup
113
+ if: always()
114
+ run: |
115
+ docker image prune -f 2>/dev/null || true
116
+
117
+ build:
118
+ name: Build Package
119
+ runs-on:
120
+ group: linux
121
+ labels: [self-hosted, Linux, X64]
122
+ needs: [test, lint]
123
+
124
+ env:
125
+ UV_CACHE_DIR: /opt/runner-cache/uv/3.14
126
+ PIP_CACHE_DIR: /opt/runner-cache/pip/3.14
127
+
128
+ steps:
129
+ - name: Pre-cleanup
130
+ run: |
131
+ docker image prune -f 2>/dev/null || true
132
+ - uses: actions/checkout@v6
133
+
134
+ - uses: astral-sh/setup-uv@v7
135
+ with:
136
+ python-version: "3.14"
137
+
138
+ - name: Build
139
+ run: uv build
140
+
141
+ - name: Upload dist
142
+ uses: actions/upload-artifact@v6
143
+ with:
144
+ name: dist
145
+ path: dist/
146
+ retention-days: 30
147
+
148
+ - name: Post-cleanup
149
+ if: always()
150
+ run: |
151
+ docker image prune -f 2>/dev/null || true
152
+
153
+ ci-success:
154
+ name: CI Success
155
+ runs-on:
156
+ group: linux
157
+ labels: [self-hosted, Linux, X64]
158
+ needs: [test, lint, build]
159
+ if: always()
160
+ steps:
161
+ - name: Check results
162
+ run: |
163
+ if [[ "${{ needs.test.result }}" != "success" || "${{ needs.lint.result }}" != "success" || "${{ needs.build.result }}" != "success" ]]; then
164
+ echo "CI failed"
165
+ exit 1
166
+ fi
167
+ echo "All checks passed"
@@ -0,0 +1,137 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ lib64/
19
+ parts/
20
+ sdist/
21
+ var/
22
+ wheels/
23
+ pip-wheel-metadata/
24
+ share/python-wheels/
25
+ *.egg-info/
26
+ .installed.cfg
27
+ *.egg
28
+ MANIFEST
29
+
30
+ # PyInstaller
31
+ *.manifest
32
+ *.spec
33
+
34
+ # Installer logs
35
+ pip-log.txt
36
+ pip-delete-this-directory.txt
37
+
38
+ # Unit test / coverage reports
39
+ htmlcov/
40
+ .tox/
41
+ .nox/
42
+ .coverage
43
+ .coverage.*
44
+ .cache
45
+ nosetests.xml
46
+ coverage.xml
47
+ *.cover
48
+ *.py,cover
49
+ .hypothesis/
50
+ .pytest_cache/
51
+
52
+ # Translations
53
+ *.mo
54
+ *.pot
55
+
56
+ # Django stuff:
57
+ *.log
58
+ local_settings.py
59
+ db.sqlite3
60
+ db.sqlite3-journal
61
+
62
+ # Flask stuff:
63
+ instance/
64
+ .webassets-cache
65
+
66
+ # Scrapy stuff:
67
+ .scrapy
68
+
69
+ # Sphinx documentation
70
+ docs/_build/
71
+
72
+ # PyBuilder
73
+ target/
74
+
75
+ # Jupyter Notebook
76
+ .ipynb_checkpoints
77
+
78
+ # IPython
79
+ profile_default/
80
+ ipython_config.py
81
+
82
+ # pyenv
83
+ .python-version
84
+
85
+ # pipenv
86
+ Pipfile.lock
87
+
88
+ # PEP 582
89
+ __pypackages__/
90
+
91
+ # Celery stuff
92
+ celerybeat-schedule
93
+ celerybeat.pid
94
+
95
+ # SageMath parsed files
96
+ *.sage.py
97
+
98
+ # Environments
99
+ .env
100
+ .venv
101
+ env/
102
+ venv/
103
+ ENV/
104
+ env.bak/
105
+ venv.bak/
106
+
107
+ # Spyder project settings
108
+ .spyderproject
109
+ .spyproject
110
+
111
+ # Rope project settings
112
+ .ropeproject
113
+
114
+ # mkdocs documentation
115
+ /site
116
+
117
+ # mypy
118
+ .mypy_cache/
119
+ .dmypy.json
120
+ dmypy.json
121
+
122
+ # Pyre type checker
123
+ .pyre/
124
+
125
+ # IDE
126
+ .vscode/
127
+ .idea/
128
+ *.swp
129
+ *.swo
130
+ *~
131
+
132
+ # OS
133
+ .DS_Store
134
+ Thumbs.db
135
+
136
+ # Local development
137
+ .huitzo/
@@ -0,0 +1,19 @@
1
+ Metadata-Version: 2.4
2
+ Name: huitzo-cli
3
+ Version: 0.0.0
4
+ Summary: Huitzo CLI for developers building Intelligence Packs
5
+ Requires-Python: >=3.11
6
+ Requires-Dist: httpx>=0.28
7
+ Requires-Dist: jinja2>=3.1
8
+ Requires-Dist: pydantic>=2.12
9
+ Requires-Dist: pyyaml>=6.0
10
+ Requires-Dist: rich>=14.0
11
+ Requires-Dist: typer>=0.15
12
+ Requires-Dist: websockets>=14.0
13
+ Provides-Extra: dev
14
+ Requires-Dist: mypy>=1.19; extra == 'dev'
15
+ Requires-Dist: pytest-asyncio>=1.0; extra == 'dev'
16
+ Requires-Dist: pytest-cov>=7.0; extra == 'dev'
17
+ Requires-Dist: pytest>=9.0; extra == 'dev'
18
+ Requires-Dist: ruff>=0.14; extra == 'dev'
19
+ Requires-Dist: types-pyyaml>=6.0; extra == 'dev'