yukka 0.1.8__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 (116) hide show
  1. yukka-0.1.8/.editorconfig +41 -0
  2. yukka-0.1.8/.env.example +9 -0
  3. yukka-0.1.8/.gitignore +108 -0
  4. yukka-0.1.8/.gitlab/COMPARISON.md +256 -0
  5. yukka-0.1.8/.gitlab/README.md +312 -0
  6. yukka-0.1.8/.gitlab/SUMMARY.md +207 -0
  7. yukka-0.1.8/.gitlab/TESTING.md +288 -0
  8. yukka-0.1.8/.gitlab/template/marimo_job_template.yml.jinja +20 -0
  9. yukka-0.1.8/.gitlab/workflows/rhiza_book.yml +50 -0
  10. yukka-0.1.8/.gitlab/workflows/rhiza_ci.yml +41 -0
  11. yukka-0.1.8/.gitlab/workflows/rhiza_deptry.yml +21 -0
  12. yukka-0.1.8/.gitlab/workflows/rhiza_marimo.yml +82 -0
  13. yukka-0.1.8/.gitlab/workflows/rhiza_pre-commit.yml +26 -0
  14. yukka-0.1.8/.gitlab/workflows/rhiza_release.yml +199 -0
  15. yukka-0.1.8/.gitlab/workflows/rhiza_renovate.yml +62 -0
  16. yukka-0.1.8/.gitlab/workflows/rhiza_sync.yml +81 -0
  17. yukka-0.1.8/.gitlab/workflows/rhiza_validate.yml +24 -0
  18. yukka-0.1.8/.gitlab-ci.yml +133 -0
  19. yukka-0.1.8/.pre-commit-config.yaml +67 -0
  20. yukka-0.1.8/.python-version +1 -0
  21. yukka-0.1.8/.rhiza/.cfg.toml +34 -0
  22. yukka-0.1.8/.rhiza/.gitignore +2 -0
  23. yukka-0.1.8/.rhiza/.rhiza-version +1 -0
  24. yukka-0.1.8/.rhiza/assets/rhiza-logo.svg +81 -0
  25. yukka-0.1.8/.rhiza/docs/ASSETS.md +14 -0
  26. yukka-0.1.8/.rhiza/docs/CONFIG.md +45 -0
  27. yukka-0.1.8/.rhiza/docs/LFS.md +161 -0
  28. yukka-0.1.8/.rhiza/docs/PRIVATE_PACKAGES.md +233 -0
  29. yukka-0.1.8/.rhiza/docs/RELEASING.md +99 -0
  30. yukka-0.1.8/.rhiza/docs/TOKEN_SETUP.md +102 -0
  31. yukka-0.1.8/.rhiza/docs/WORKFLOWS.md +248 -0
  32. yukka-0.1.8/.rhiza/make.d/README.md +126 -0
  33. yukka-0.1.8/.rhiza/make.d/book.mk +130 -0
  34. yukka-0.1.8/.rhiza/make.d/bootstrap.mk +107 -0
  35. yukka-0.1.8/.rhiza/make.d/custom-env.mk +9 -0
  36. yukka-0.1.8/.rhiza/make.d/custom-task.mk +12 -0
  37. yukka-0.1.8/.rhiza/make.d/docs.mk +96 -0
  38. yukka-0.1.8/.rhiza/make.d/gh-aw.mk +64 -0
  39. yukka-0.1.8/.rhiza/make.d/marimo.mk +70 -0
  40. yukka-0.1.8/.rhiza/make.d/quality.mk +40 -0
  41. yukka-0.1.8/.rhiza/make.d/releasing.mk +50 -0
  42. yukka-0.1.8/.rhiza/make.d/test.mk +154 -0
  43. yukka-0.1.8/.rhiza/requirements/README.md +27 -0
  44. yukka-0.1.8/.rhiza/requirements/docs.txt +3 -0
  45. yukka-0.1.8/.rhiza/requirements/marimo.txt +2 -0
  46. yukka-0.1.8/.rhiza/requirements/tests.txt +15 -0
  47. yukka-0.1.8/.rhiza/requirements/tools.txt +7 -0
  48. yukka-0.1.8/.rhiza/rhiza.mk +153 -0
  49. yukka-0.1.8/.rhiza/template.lock +108 -0
  50. yukka-0.1.8/.rhiza/template.yml +15 -0
  51. yukka-0.1.8/.rhiza/templates/minibook/custom.html.jinja2 +210 -0
  52. yukka-0.1.8/.rhiza/tests/README.md +171 -0
  53. yukka-0.1.8/.rhiza/tests/api/conftest.py +98 -0
  54. yukka-0.1.8/.rhiza/tests/api/test_gh_aw_targets.py +87 -0
  55. yukka-0.1.8/.rhiza/tests/api/test_github_targets.py +55 -0
  56. yukka-0.1.8/.rhiza/tests/api/test_makefile_api.py +369 -0
  57. yukka-0.1.8/.rhiza/tests/api/test_makefile_targets.py +305 -0
  58. yukka-0.1.8/.rhiza/tests/conftest.py +217 -0
  59. yukka-0.1.8/.rhiza/tests/deps/test_dependency_health.py +111 -0
  60. yukka-0.1.8/.rhiza/tests/integration/test_book_targets.py +163 -0
  61. yukka-0.1.8/.rhiza/tests/integration/test_lfs.py +182 -0
  62. yukka-0.1.8/.rhiza/tests/integration/test_marimushka.py +93 -0
  63. yukka-0.1.8/.rhiza/tests/integration/test_notebook_execution.py +96 -0
  64. yukka-0.1.8/.rhiza/tests/integration/test_sbom.py +172 -0
  65. yukka-0.1.8/.rhiza/tests/integration/test_test_mk.py +53 -0
  66. yukka-0.1.8/.rhiza/tests/integration/test_virtual_env_unexport.py +37 -0
  67. yukka-0.1.8/.rhiza/tests/security/test_security_patterns.py +158 -0
  68. yukka-0.1.8/.rhiza/tests/shell/test_scripts.sh +245 -0
  69. yukka-0.1.8/.rhiza/tests/stress/README.md +143 -0
  70. yukka-0.1.8/.rhiza/tests/stress/__init__.py +5 -0
  71. yukka-0.1.8/.rhiza/tests/stress/conftest.py +50 -0
  72. yukka-0.1.8/.rhiza/tests/stress/test_git_stress.py +169 -0
  73. yukka-0.1.8/.rhiza/tests/stress/test_makefile_stress.py +145 -0
  74. yukka-0.1.8/.rhiza/tests/structure/test_lfs_structure.py +135 -0
  75. yukka-0.1.8/.rhiza/tests/structure/test_project_layout.py +57 -0
  76. yukka-0.1.8/.rhiza/tests/structure/test_requirements.py +51 -0
  77. yukka-0.1.8/.rhiza/tests/structure/test_template_bundles.py +89 -0
  78. yukka-0.1.8/.rhiza/tests/sync/conftest.py +101 -0
  79. yukka-0.1.8/.rhiza/tests/sync/test_docstrings.py +123 -0
  80. yukka-0.1.8/.rhiza/tests/sync/test_readme_validation.py +197 -0
  81. yukka-0.1.8/.rhiza/tests/sync/test_rhiza_version.py +137 -0
  82. yukka-0.1.8/.rhiza/tests/test_utils.py +70 -0
  83. yukka-0.1.8/.rhiza/tests/utils/test_git_repo_fixture.py +132 -0
  84. yukka-0.1.8/CODE_OF_CONDUCT.md +27 -0
  85. yukka-0.1.8/CONTRIBUTING.md +139 -0
  86. yukka-0.1.8/Claude.md +116 -0
  87. yukka-0.1.8/LICENSE +13 -0
  88. yukka-0.1.8/Makefile +46 -0
  89. yukka-0.1.8/PKG-INFO +203 -0
  90. yukka-0.1.8/README.md +183 -0
  91. yukka-0.1.8/SECURITY.md +100 -0
  92. yukka-0.1.8/book/marimo/notebooks/rhiza.py +657 -0
  93. yukka-0.1.8/examples/getting_started.py +83 -0
  94. yukka-0.1.8/examples/sentiment.py +29 -0
  95. yukka-0.1.8/pyproject.toml +37 -0
  96. yukka-0.1.8/pytest.ini +14 -0
  97. yukka-0.1.8/ruff.toml +134 -0
  98. yukka-0.1.8/sandbox.py +70 -0
  99. yukka-0.1.8/src/yukka/__init__.py +36 -0
  100. yukka-0.1.8/src/yukka/auth.py +117 -0
  101. yukka-0.1.8/src/yukka/client.py +288 -0
  102. yukka-0.1.8/src/yukka/data/__init__.py +51 -0
  103. yukka-0.1.8/src/yukka/data/master_constituents.parquet +0 -0
  104. yukka-0.1.8/src/yukka/entities.py +244 -0
  105. yukka-0.1.8/src/yukka/exceptions.py +13 -0
  106. yukka-0.1.8/src/yukka/models.py +5 -0
  107. yukka-0.1.8/src/yukka/utils.py +48 -0
  108. yukka-0.1.8/tests/__init__.py +1 -0
  109. yukka-0.1.8/tests/conftest.py +109 -0
  110. yukka-0.1.8/tests/test_auth.py +267 -0
  111. yukka-0.1.8/tests/test_client.py +499 -0
  112. yukka-0.1.8/tests/test_data.py +63 -0
  113. yukka-0.1.8/tests/test_entities.py +437 -0
  114. yukka-0.1.8/tests/test_utils.py +220 -0
  115. yukka-0.1.8/tests/test_yukka.py +50 -0
  116. yukka-0.1.8/uv.lock +969 -0
@@ -0,0 +1,41 @@
1
+ # This file is part of the jebel-quant/rhiza repository
2
+ # (https://github.com/jebel-quant/rhiza).
3
+ #
4
+ root = true
5
+
6
+ # Default settings for all files
7
+ [*]
8
+ end_of_line = lf
9
+ trim_trailing_whitespace = true
10
+ insert_final_newline = true
11
+ charset = utf-8
12
+
13
+ # Python, reStructuredText, and text files
14
+ [*.{py,rst,txt}]
15
+ indent_style = space
16
+ indent_size = 4
17
+
18
+ # YAML, JSON, and other config files
19
+ [*.{yml,yaml,json}]
20
+ indent_style = space
21
+ indent_size = 2
22
+
23
+ # Markdown files
24
+ # [*.{md,markdown}]
25
+ # trim_trailing_whitespace = false
26
+
27
+ # Makefiles require tabs
28
+ [{Makefile,*.mk,*.make}]
29
+ indent_style = tab
30
+ indent_size = 4
31
+
32
+ # Don't apply editorconfig rules to vendor/ resources
33
+ # This is a "defensive" rule for the day we may have
34
+ # the vendor folder
35
+ [vendor/**]
36
+ charset = unset
37
+ end_of_line = unset
38
+ indent_size = unset
39
+ indent_style = unset
40
+ insert_final_newline = unset
41
+ trim_trailing_whitespace = unset
@@ -0,0 +1,9 @@
1
+ # YUKKA API Credentials
2
+ # Copy this file to .env and fill in your credentials
3
+
4
+ # Option 1: Username and password (recommended - allows token auto-renewal)
5
+ YUKKA_USERNAME=your_email@example.com
6
+ YUKKA_PASSWORD=your_password
7
+
8
+ # Option 2: JWT Token (if you already have one)
9
+ # YUKKA_TOKEN=eyJ...
yukka-0.1.8/.gitignore ADDED
@@ -0,0 +1,108 @@
1
+ ### Python template
2
+ .idea
3
+ .venv
4
+ .ruff_cache
5
+ .ty_cache
6
+
7
+ ### Don't expose API keys, etc.
8
+ .env
9
+
10
+ __marimo__
11
+
12
+ _tests
13
+ _book
14
+ _pdoc
15
+ _marimushka
16
+ _mkdocs
17
+ _benchmarks
18
+ _jupyter
19
+ _site
20
+
21
+ # temp file used by Junie
22
+ .output.txt
23
+
24
+ # folder used for programs, e.g. uv, uvx, task, etc.
25
+ bin
26
+
27
+ # Byte-compiled / optimized / DLL files
28
+ __pycache__/
29
+ *.py[cod]
30
+ *$py.class
31
+
32
+ # Generated presentation files
33
+ presentation.html
34
+ presentation.pdf
35
+ *.pptx
36
+
37
+ # C extensions
38
+ *.so
39
+
40
+ # .DS_Store
41
+ .DS_Store
42
+
43
+ # Distribution / packaging
44
+ .Python
45
+ build/
46
+ develop-eggs/
47
+ dist/
48
+ downloads/
49
+ eggs/
50
+ .eggs/
51
+ lib/
52
+ lib64/
53
+ parts/
54
+ sdist/
55
+ var/
56
+ wheels/
57
+ share/python-wheels/
58
+ *.egg-info/
59
+ .installed.cfg
60
+ *.egg
61
+ MANIFEST
62
+
63
+ # Installer logs
64
+ pip-log.txt
65
+ pip-delete-this-directory.txt
66
+
67
+ # Unit test / coverage reports
68
+ htmlcov/
69
+ .tox/
70
+ .nox/
71
+ .coverage
72
+ .coverage.*
73
+ .cache
74
+ nosetests.xml
75
+ coverage.xml
76
+ coverage.json
77
+ *.cover
78
+ *.py,cover
79
+ .hypothesis/
80
+ .benchmarks/
81
+ .pytest_cache/
82
+ cover/
83
+
84
+ # Security scanning baselines (regenerate as needed)
85
+ .bandit-baseline.json
86
+
87
+ # Translations
88
+ *.mo
89
+ *.pot
90
+
91
+ # Django stuff:
92
+ *.log
93
+ local_settings.py
94
+ db.sqlite3
95
+ db.sqlite3-journal
96
+
97
+ # Flask stuff:
98
+ instance/
99
+ .webassets-cache
100
+
101
+ # Cython debug symbols
102
+ cython_debug/
103
+
104
+ # Makefile
105
+ local.mk
106
+
107
+ .bandit-baseline.json
108
+
@@ -0,0 +1,256 @@
1
+ # GitHub Actions vs GitLab CI Comparison
2
+
3
+ This document provides a side-by-side comparison of GitHub Actions and GitLab CI implementations for the rhiza project.
4
+
5
+ ## Workflow Mapping
6
+
7
+ | Feature | GitHub Actions | GitLab CI | Status |
8
+ |---------|----------------|-----------|--------|
9
+ | Main Config | `.github/workflows/*.yml` | `.gitlab-ci.yml` + `.gitlab/workflows/*.yml` | ✅ Complete |
10
+ | CI Testing | `rhiza_ci.yml` | `rhiza_ci.yml` | ✅ Complete |
11
+ | Validation | `rhiza_validate.yml` | `rhiza_validate.yml` | ✅ Complete |
12
+ | Dependencies | `rhiza_deptry.yml` | `rhiza_deptry.yml` | ✅ Complete |
13
+ | Pre-commit | `rhiza_pre-commit.yml` | `rhiza_pre-commit.yml` | ✅ Complete |
14
+ | Documentation | `rhiza_book.yml` | `rhiza_book.yml` | ✅ Complete |
15
+ | Sync | `rhiza_sync.yml` | `rhiza_sync.yml` | ✅ Complete |
16
+ | Release | `rhiza_release.yml` | `rhiza_release.yml` | ✅ Complete |
17
+
18
+ ## Syntax Differences
19
+
20
+ ### Triggers
21
+
22
+ **GitHub Actions:**
23
+ ```yaml
24
+ on:
25
+ push:
26
+ pull_request:
27
+ branches: [main, master]
28
+ ```
29
+
30
+ **GitLab CI:**
31
+ ```yaml
32
+ rules:
33
+ - if: $CI_PIPELINE_SOURCE == "merge_request_event"
34
+ - if: $CI_COMMIT_BRANCH
35
+ ```
36
+
37
+ ### Jobs and Steps
38
+
39
+ **GitHub Actions:**
40
+ ```yaml
41
+ jobs:
42
+ test:
43
+ runs-on: ubuntu-latest
44
+ steps:
45
+ - uses: actions/checkout@v6
46
+ - name: Run tests
47
+ run: pytest tests
48
+ ```
49
+
50
+ **GitLab CI:**
51
+ ```yaml
52
+ test:
53
+ stage: test
54
+ image: python:3.12
55
+ script:
56
+ - pytest tests
57
+ ```
58
+
59
+ ### Matrix Strategy
60
+
61
+ **GitHub Actions:**
62
+ ```yaml
63
+ strategy:
64
+ matrix:
65
+ python-version: ${{ fromJson(needs.generate-matrix.outputs.matrix) }}
66
+ ```
67
+
68
+ **GitLab CI:**
69
+ ```yaml
70
+ parallel:
71
+ matrix:
72
+ - PYTHON_VERSION: ["3.11", "3.12", "3.13"]
73
+ ```
74
+
75
+ **Note:** GitLab CI has limited dynamic matrix support. Workaround: use child pipelines or iterate in script.
76
+
77
+ ### Artifacts
78
+
79
+ **GitHub Actions:**
80
+ ```yaml
81
+ - uses: actions/upload-artifact@v6
82
+ with:
83
+ name: dist
84
+ path: dist
85
+ ```
86
+
87
+ **GitLab CI:**
88
+ ```yaml
89
+ artifacts:
90
+ paths:
91
+ - dist/
92
+ expire_in: 1 day
93
+ ```
94
+
95
+ ### Container Images
96
+
97
+ **GitHub Actions:**
98
+ ```yaml
99
+ jobs:
100
+ test:
101
+ runs-on: ubuntu-latest
102
+ container:
103
+ image: python:3.12
104
+ ```
105
+
106
+ **GitLab CI:**
107
+ ```yaml
108
+ test:
109
+ image: python:3.12
110
+ ```
111
+
112
+ ### Secrets and Variables
113
+
114
+ **GitHub Actions:**
115
+ ```yaml
116
+ env:
117
+ TOKEN: ${{ secrets.PYPI_TOKEN }}
118
+ CUSTOM_VAR: ${{ vars.CUSTOM_VAR }}
119
+ ```
120
+
121
+ **GitLab CI:**
122
+ ```yaml
123
+ script:
124
+ - echo $PYPI_TOKEN
125
+ - echo $CUSTOM_VAR
126
+ ```
127
+
128
+ ## Feature Comparison
129
+
130
+ ### 1. Python Matrix Testing (CI)
131
+
132
+ | Feature | GitHub Actions | GitLab CI |
133
+ |---------|----------------|-----------|
134
+ | Dynamic matrix | ✅ Full support | ⚠️ Limited (static matrix used) |
135
+ | Parallel execution | ✅ Yes | ✅ Yes |
136
+ | Git LFS | ✅ Yes | ✅ Yes |
137
+ | UV integration | ✅ Yes | ✅ Yes |
138
+
139
+ ### 2. Documentation (Book)
140
+
141
+ | Feature | GitHub Actions | GitLab CI |
142
+ |---------|----------------|-----------|
143
+ | Build | ✅ `make book` | ✅ `make book` |
144
+ | Output directory | `_book/` | `public/` (required) |
145
+ | Deployment | GitHub Pages | GitLab Pages |
146
+ | Deploy action | `actions/deploy-pages@v4` | Job named `pages` |
147
+
148
+ ### 3. Release
149
+
150
+ | Feature | GitHub Actions | GitLab CI |
151
+ |---------|----------------|-----------|
152
+ | PyPI auth | ✅ OIDC Trusted Publishing | ⚠️ Token-based |
153
+ | Release creation | `softprops/action-gh-release` | GitLab Releases API |
154
+ | Version validation | ✅ Yes | ✅ Yes |
155
+ | Draft releases | ✅ Yes | ✅ Yes (via API) |
156
+
157
+ ### 4. Sync
158
+
159
+ | Feature | GitHub Actions | GitLab CI |
160
+ |---------|----------------|-----------|
161
+ | Template sync | ✅ `rhiza sync` | ✅ `rhiza sync` |
162
+ | PR/MR creation | ✅ Automatic | ⚠️ Manual (API call needed) |
163
+ | Token requirement | PAT_TOKEN | PAT_TOKEN |
164
+ | Scheduling | ✅ Cron syntax | ✅ Pipeline schedules |
165
+
166
+ ## Platform-Specific Features
167
+
168
+ ### GitHub Actions Only
169
+
170
+ 1. **OIDC Authentication:** Passwordless authentication with PyPI and cloud providers
171
+ 2. **Action Marketplace:** Reusable actions from the community
172
+ 3. **Job summaries:** Rich markdown summaries in the UI
173
+ 4. **Environments:** Built-in environment protection rules
174
+
175
+ ### GitLab CI Only
176
+
177
+ 1. **Stages:** Explicit pipeline stages (`.pre`, `build`, `test`, `deploy`, `.post`)
178
+ 2. **Job templates:** Reusable job definitions with `extends`
179
+ 3. **Child pipelines:** Dynamic pipeline generation
180
+ 4. **Auto DevOps:** Automatic CI/CD configuration
181
+
182
+ ## Migration Considerations
183
+
184
+ ### Easy Migrations
185
+ - ✅ Basic CI/CD pipelines
186
+ - ✅ Docker-based workflows
187
+ - ✅ Artifact handling
188
+ - ✅ Environment variables
189
+ - ✅ Scheduled pipelines
190
+
191
+ ### Moderate Effort
192
+ - ⚠️ Dynamic matrix strategies (use child pipelines)
193
+ - ⚠️ Marketplace actions (reimplement with scripts)
194
+ - ⚠️ Complex conditionals (restructure with rules)
195
+
196
+ ### Challenging Migrations
197
+ - ❌ OIDC-based authentication (use tokens)
198
+ - ❌ GitHub-specific APIs (use GitLab APIs)
199
+ - ❌ GitHub Apps (use GitLab integrations)
200
+
201
+ ## Testing Status
202
+
203
+ | Workflow | YAML Valid | Logic Verified | Notes |
204
+ |----------|------------|----------------|-------|
205
+ | CI | ✅ | ⏳ | Needs test with actual Python matrix |
206
+ | Validate | ✅ | ⏳ | Skips in rhiza repo |
207
+ | Deptry | ✅ | ⏳ | Needs test with dependencies |
208
+ | Pre-commit | ✅ | ⏳ | Needs test with hooks |
209
+ | Book | ✅ | ⏳ | Needs GitLab Pages setup |
210
+ | Sync | ✅ | ⏳ | Needs PAT_TOKEN |
211
+ | Release | ✅ | ⏳ | Needs PYPI_TOKEN |
212
+
213
+ Legend:
214
+ - ✅ Complete
215
+ - ⏳ Pending (ready for testing)
216
+ - ❌ Not tested
217
+
218
+ ## Recommendations
219
+
220
+ ### For New Projects
221
+ 1. Choose platform based on primary hosting (GitHub vs GitLab)
222
+ 2. Consider OIDC requirements (GitHub has better support)
223
+ 3. Evaluate marketplace actions vs custom scripts
224
+
225
+ ### For Migration
226
+ 1. Start with simple workflows (CI, pre-commit)
227
+ 2. Test thoroughly in a fork/mirror
228
+ 3. Configure all required variables
229
+ 4. Update documentation links
230
+ 5. Train team on platform differences
231
+
232
+ ### For Dual Support
233
+ 1. Maintain both workflow sets (as done here)
234
+ 2. Keep feature parity
235
+ 3. Document platform-specific differences
236
+ 4. Test changes on both platforms
237
+
238
+ ## Resources
239
+
240
+ - **GitHub Actions Docs:** https://docs.github.com/en/actions
241
+ - **GitLab CI Docs:** https://docs.gitlab.com/ee/ci/
242
+ - **Rhiza GitHub:** https://github.com/jebel-quant/rhiza
243
+ - **Migration Guide:** `.gitlab/README.md`
244
+ - **Testing Guide:** `.gitlab/TESTING.md`
245
+
246
+ ## Summary
247
+
248
+ Most GitHub Actions workflows (7 of 10) have been converted to GitLab CI with equivalent functionality. The main differences are:
249
+
250
+ 1. **Syntax:** Different trigger and job definitions
251
+ 2. **Authentication:** Token-based instead of OIDC
252
+ 3. **Matrix:** Static instead of dynamic
253
+ 4. **Pages:** Different output directory requirements
254
+ 5. **APIs:** Platform-specific endpoints
255
+
256
+ Both platforms are fully supported and provide equivalent functionality for the rhiza project.