umpyre 0.1.2__tar.gz → 0.1.3__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 (44) hide show
  1. umpyre-0.1.3/.github/workflows/ci.yml +234 -0
  2. {umpyre-0.1.2 → umpyre-0.1.3}/PKG-INFO +1 -1
  3. {umpyre-0.1.2 → umpyre-0.1.3}/pyproject.toml +1 -1
  4. {umpyre-0.1.2 → umpyre-0.1.3}/setup.cfg +1 -1
  5. umpyre-0.1.2/.github/workflows/ci.yml +0 -153
  6. {umpyre-0.1.2 → umpyre-0.1.3}/.gitattributes +0 -0
  7. {umpyre-0.1.2 → umpyre-0.1.3}/.github/umpyre-config.yml +0 -0
  8. {umpyre-0.1.2 → umpyre-0.1.3}/.gitignore +0 -0
  9. {umpyre-0.1.2 → umpyre-0.1.3}/LICENSE +0 -0
  10. {umpyre-0.1.2 → umpyre-0.1.3}/QUICK_START.md +0 -0
  11. {umpyre-0.1.2 → umpyre-0.1.3}/README.md +0 -0
  12. {umpyre-0.1.2 → umpyre-0.1.3}/actions/track-metrics/action.yml +0 -0
  13. {umpyre-0.1.2 → umpyre-0.1.3}/json +0 -0
  14. {umpyre-0.1.2 → umpyre-0.1.3}/misc/docs/CHANGELOG.md +0 -0
  15. {umpyre-0.1.2 → umpyre-0.1.3}/misc/docs/FAILURE_PROTECTION.md +0 -0
  16. {umpyre-0.1.2 → umpyre-0.1.3}/misc/docs/IMPLEMENTATION_STATUS.md +0 -0
  17. {umpyre-0.1.2 → umpyre-0.1.3}/misc/docs/IMPLEMENTATION_SUMMARY.md +0 -0
  18. {umpyre-0.1.2 → umpyre-0.1.3}/misc/docs/PHASE_2_PLAN.md +0 -0
  19. {umpyre-0.1.2 → umpyre-0.1.3}/misc/docs/PHASE_3_PLAN.md +0 -0
  20. {umpyre-0.1.2 → umpyre-0.1.3}/misc/docs/STORAGE_STRUCTURE.md +0 -0
  21. {umpyre-0.1.2 → umpyre-0.1.3}/misc/docs/TESTING_GUIDE.md +0 -0
  22. {umpyre-0.1.2 → umpyre-0.1.3}/misc/docs/TEST_RESULTS.md +0 -0
  23. {umpyre-0.1.2 → umpyre-0.1.3}/setup.py +0 -0
  24. {umpyre-0.1.2 → umpyre-0.1.3}/test_on_astate.py +0 -0
  25. {umpyre-0.1.2 → umpyre-0.1.3}/tests/test_base_collector.py +0 -0
  26. {umpyre-0.1.2 → umpyre-0.1.3}/tests/test_config.py +0 -0
  27. {umpyre-0.1.2 → umpyre-0.1.3}/tests/test_coverage_collector.py +0 -0
  28. {umpyre-0.1.2 → umpyre-0.1.3}/tests/test_schema.py +0 -0
  29. {umpyre-0.1.2 → umpyre-0.1.3}/tests/test_umpyre_collector.py +0 -0
  30. {umpyre-0.1.2 → umpyre-0.1.3}/umpyre/__init__.py +0 -0
  31. {umpyre-0.1.2 → umpyre-0.1.3}/umpyre/cli.py +0 -0
  32. {umpyre-0.1.2 → umpyre-0.1.3}/umpyre/collectors/__init__.py +0 -0
  33. {umpyre-0.1.2 → umpyre-0.1.3}/umpyre/collectors/base.py +0 -0
  34. {umpyre-0.1.2 → umpyre-0.1.3}/umpyre/collectors/coverage_collector.py +0 -0
  35. {umpyre-0.1.2 → umpyre-0.1.3}/umpyre/collectors/umpyre_collector.py +0 -0
  36. {umpyre-0.1.2 → umpyre-0.1.3}/umpyre/collectors/wily_collector.py +0 -0
  37. {umpyre-0.1.2 → umpyre-0.1.3}/umpyre/collectors/workflow_status.py +0 -0
  38. {umpyre-0.1.2 → umpyre-0.1.3}/umpyre/config.py +0 -0
  39. {umpyre-0.1.2 → umpyre-0.1.3}/umpyre/python_code_stats.py +0 -0
  40. {umpyre-0.1.2 → umpyre-0.1.3}/umpyre/schema.py +0 -0
  41. {umpyre-0.1.2 → umpyre-0.1.3}/umpyre/storage/__init__.py +0 -0
  42. {umpyre-0.1.2 → umpyre-0.1.3}/umpyre/storage/formats.py +0 -0
  43. {umpyre-0.1.2 → umpyre-0.1.3}/umpyre/storage/git_branch.py +0 -0
  44. {umpyre-0.1.2 → umpyre-0.1.3}/umpyre/storage/query_utils.py +0 -0
@@ -0,0 +1,234 @@
1
+ name: Continuous Integration (uv)
2
+ # MIGRATION NOTE: PyPI auth changed: set secrets.PYPI_PASSWORD to a PyPI API token (uv publish uses UV_PUBLISH_TOKEN, mapped from PYPI_PASSWORD)
3
+ # MIGRATION NOTE: Old CI references setup.cfg - ensure project is migrated to pyproject.toml first (use: wads-migrate setup-to-pyproject)
4
+ on: [push, pull_request]
5
+
6
+ # Workflow-level env vars from [tool.wads.ci.env] in pyproject.toml.
7
+ # Populated by wads-migrate / wads init via template substitution.
8
+ # Includes PROJECT_NAME, literal defaults from env.defaults, and secret-
9
+ # backed vars from required_envvars / test_envvars / extra_envvars,
10
+ # rendered as `KEY: secrets.KEY || ''` so missing secrets don't fail parsing.
11
+ env:
12
+ PROJECT_NAME: umpyre
13
+
14
+ jobs:
15
+ # First job: Read configuration from pyproject.toml
16
+ setup:
17
+ name: Read Configuration
18
+ runs-on: ubuntu-latest
19
+ outputs:
20
+ project-name: ${{ steps.config.outputs.project-name }}
21
+ python-versions: ${{ steps.config.outputs.python-versions }}
22
+ pytest-args: ${{ steps.config.outputs.pytest-args }}
23
+ coverage-enabled: ${{ steps.config.outputs.coverage-enabled }}
24
+ exclude-paths: ${{ steps.config.outputs.exclude-paths }}
25
+ test-on-windows: ${{ steps.config.outputs.test-on-windows }}
26
+ build-sdist: ${{ steps.config.outputs.build-sdist }}
27
+ build-wheel: ${{ steps.config.outputs.build-wheel }}
28
+ metrics-enabled: ${{ steps.config.outputs.metrics-enabled }}
29
+ metrics-config-path: ${{ steps.config.outputs.metrics-config-path }}
30
+ metrics-storage-branch: ${{ steps.config.outputs.metrics-storage-branch }}
31
+ metrics-python-version: ${{ steps.config.outputs.metrics-python-version }}
32
+ metrics-force-run: ${{ steps.config.outputs.metrics-force-run }}
33
+ ruff-enabled: ${{ steps.config.outputs.ruff-enabled }}
34
+ black-enabled: ${{ steps.config.outputs.black-enabled }}
35
+ mypy-enabled: ${{ steps.config.outputs.mypy-enabled }}
36
+ docs-enabled: ${{ steps.config.outputs.docs-enabled }}
37
+
38
+ steps:
39
+ - uses: actions/checkout@v6
40
+
41
+ - name: Set up uv
42
+ uses: astral-sh/setup-uv@v7
43
+
44
+ - name: Set up Python
45
+ run: uv python install 3.11
46
+
47
+ - name: Read CI Config
48
+ id: config
49
+ uses: i2mint/wads/actions/read-ci-config@master
50
+ with:
51
+ pyproject-path: .
52
+
53
+ # Second job: Validation using the config
54
+ validation:
55
+ name: Validation
56
+ if: "!contains(github.event.head_commit.message, '[skip ci]')"
57
+ needs: setup
58
+ runs-on: ubuntu-latest
59
+ strategy:
60
+ matrix:
61
+ python-version: ${{ fromJson(needs.setup.outputs.python-versions) }}
62
+
63
+ steps:
64
+ - uses: actions/checkout@v6
65
+
66
+ - name: Set up uv
67
+ uses: astral-sh/setup-uv@v7
68
+ with:
69
+ enable-cache: true
70
+
71
+ - name: Set up Python ${{ matrix.python-version }}
72
+ uses: i2mint/wads/actions/setup-python-uv@master
73
+ with:
74
+ python-version: ${{ matrix.python-version }}
75
+
76
+ - name: Install System Dependencies
77
+ uses: i2mint/wads/actions/install-system-deps@master
78
+ with:
79
+ pyproject-path: .
80
+
81
+ - name: Install Dependencies
82
+ uses: i2mint/wads/actions/install-deps-uv@master
83
+
84
+ - name: Format Source Code
85
+ if: needs.setup.outputs.ruff-enabled != 'false'
86
+ run: uvx ruff format .
87
+
88
+ - name: Format Source Code (black)
89
+ if: needs.setup.outputs.black-enabled == 'true'
90
+ run: uvx black .
91
+
92
+ - name: Lint Validation
93
+ if: needs.setup.outputs.ruff-enabled != 'false'
94
+ run: uvx ruff check --output-format=github ${{ needs.setup.outputs.project-name }}
95
+
96
+ - name: Type Check (mypy)
97
+ if: needs.setup.outputs.mypy-enabled == 'true'
98
+ run: uvx mypy ${{ needs.setup.outputs.project-name }}
99
+
100
+ - name: Run Tests
101
+ uses: i2mint/wads/actions/run-tests-uv@master
102
+ with:
103
+ root-dir: ${{ needs.setup.outputs.project-name }}
104
+ pytest-args: ${{ needs.setup.outputs.pytest-args }}
105
+ exclude-paths: ${{ needs.setup.outputs.exclude-paths }}
106
+ coverage: ${{ needs.setup.outputs.coverage-enabled }}
107
+
108
+ - name: Track Code Metrics
109
+ if: needs.setup.outputs.metrics-enabled == 'true'
110
+ uses: i2mint/umpyre/actions/track-metrics@master
111
+ continue-on-error: true
112
+ with:
113
+ github-token: ${{ secrets.GITHUB_TOKEN }}
114
+ config-path: ${{ needs.setup.outputs.metrics-config-path }}
115
+ storage-branch: ${{ needs.setup.outputs.metrics-storage-branch }}
116
+ python-version: ${{ needs.setup.outputs.metrics-python-version }}
117
+ force-run: ${{ needs.setup.outputs.metrics-force-run }}
118
+
119
+ # Optional Windows testing (if enabled in config)
120
+ windows-validation:
121
+ name: Windows Tests
122
+ if: "!contains(github.event.head_commit.message, '[skip ci]') && needs.setup.outputs.test-on-windows == 'true'"
123
+ needs: setup
124
+ runs-on: windows-latest
125
+ continue-on-error: true
126
+
127
+ steps:
128
+ - uses: actions/checkout@v6
129
+
130
+ - name: Set up uv
131
+ uses: astral-sh/setup-uv@v7
132
+ with:
133
+ enable-cache: true
134
+
135
+ - name: Set up Python
136
+ uses: i2mint/wads/actions/setup-python-uv@master
137
+ with:
138
+ python-version: ${{ fromJson(needs.setup.outputs.python-versions)[0] }}
139
+
140
+ - name: Install System Dependencies
141
+ uses: i2mint/wads/actions/install-system-deps@master
142
+ with:
143
+ pyproject-path: .
144
+
145
+ - name: Install Dependencies
146
+ uses: i2mint/wads/actions/install-deps-uv@master
147
+
148
+ - name: Run Tests
149
+ uses: i2mint/wads/actions/run-tests-uv@master
150
+ with:
151
+ root-dir: ${{ needs.setup.outputs.project-name }}
152
+ pytest-args: ${{ needs.setup.outputs.pytest-args }}
153
+ exclude-paths: ${{ needs.setup.outputs.exclude-paths }}
154
+
155
+ # Publishing job
156
+ publish:
157
+ name: Publish
158
+ permissions:
159
+ contents: write
160
+ if: "!contains(github.event.head_commit.message, '[skip ci]') && (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main')"
161
+ needs: [setup, validation]
162
+ runs-on: ubuntu-latest
163
+
164
+ steps:
165
+ - uses: actions/checkout@v6
166
+ with:
167
+ fetch-depth: 0
168
+ token: ${{ secrets.GITHUB_TOKEN }}
169
+
170
+ - name: Set up uv
171
+ uses: astral-sh/setup-uv@v7
172
+
173
+ - name: Set up Python
174
+ uses: i2mint/wads/actions/setup-python-uv@master
175
+ with:
176
+ python-version: ${{ fromJson(needs.setup.outputs.python-versions)[0] }}
177
+ create-venv: "false"
178
+
179
+ - name: Format Source Code
180
+ if: needs.setup.outputs.ruff-enabled != 'false'
181
+ run: uvx ruff format .
182
+
183
+ - name: Format Source Code (black)
184
+ if: needs.setup.outputs.black-enabled == 'true'
185
+ run: uvx black .
186
+
187
+ - name: Update Version Number
188
+ id: version
189
+ uses: i2mint/isee/actions/bump-version-number@master
190
+
191
+ - name: Build Distribution
192
+ uses: i2mint/wads/actions/build-dist-uv@master
193
+ with:
194
+ sdist: ${{ needs.setup.outputs.build-sdist }}
195
+ wheel: ${{ needs.setup.outputs.build-wheel }}
196
+
197
+ - name: Publish to PyPI
198
+ uses: i2mint/wads/actions/pypi-publish-uv@master
199
+ with:
200
+ pypi-token: ${{ secrets.PYPI_PASSWORD }}
201
+
202
+ - name: Force SSH for git remote
203
+ run: git remote set-url origin git@github.com:${{ github.repository }}.git
204
+
205
+ - name: Commit Changes
206
+ uses: i2mint/wads/actions/git-commit@master
207
+ with:
208
+ commit-message: "**CI** Formatted code + Updated version to ${{ env.VERSION }} [skip ci]"
209
+ ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}
210
+ push: true
211
+
212
+ - name: Tag Repository
213
+ uses: i2mint/wads/actions/git-tag@master
214
+ with:
215
+ tag: ${{ env.VERSION }}
216
+ message: "Release version ${{ env.VERSION }}"
217
+ push: true
218
+
219
+ # Optional GitHub Pages (skipped when [tool.wads.ci.docs].enabled = false)
220
+ github-pages:
221
+ name: Publish GitHub Pages
222
+ permissions:
223
+ contents: write
224
+ pages: write
225
+ id-token: write
226
+ if: "!contains(github.event.head_commit.message, '[skip ci]') && github.ref == format('refs/heads/{0}', github.event.repository.default_branch) && needs.setup.outputs.docs-enabled != 'false'"
227
+ needs: [setup, publish]
228
+ runs-on: ubuntu-latest
229
+
230
+ steps:
231
+ - uses: i2mint/epythet/actions/publish-github-pages@master
232
+ with:
233
+ github-token: ${{ secrets.GITHUB_TOKEN }}
234
+ ignore: "tests/,scrap/,examples/"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: umpyre
3
- Version: 0.1.2
3
+ Version: 0.1.3
4
4
  Summary: Code analysis and quality metrics tracking system for CI/CD
5
5
  Project-URL: Homepage, https://github.com/i2mint/umpyre
6
6
  License: Apache-2.0
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "umpyre"
7
- version = "0.1.2"
7
+ version = "0.1.3"
8
8
  description = "Code analysis and quality metrics tracking system for CI/CD"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -1,6 +1,6 @@
1
1
  [metadata]
2
2
  name = umpyre
3
- version = 0.1.2
3
+ version = 0.1.3
4
4
  url = https://github.com/i2mint/umpyre
5
5
  platforms = any
6
6
  description_file = README.md
@@ -1,153 +0,0 @@
1
- name: Continuous Integration (Modern)
2
- on: [push, pull_request]
3
-
4
- env:
5
- PROJECT_NAME: umpyre
6
-
7
- jobs:
8
- validation:
9
- name: Validation
10
- if: "!contains(github.event.head_commit.message, '[skip ci]')"
11
- runs-on: ubuntu-latest
12
- strategy:
13
- matrix:
14
- python-version: ["3.10", "3.12"]
15
-
16
- steps:
17
- - uses: actions/checkout@v4
18
-
19
- - name: Set up Python ${{ matrix.python-version }}
20
- uses: actions/setup-python@v5
21
- with:
22
- python-version: ${{ matrix.python-version }}
23
-
24
- - name: Install Dependencies
25
- uses: i2mint/wads/actions/install-deps@master
26
- with:
27
- dependency-files: pyproject.toml
28
- extras: dev,test
29
- # Fallback for projects still using setup.cfg:
30
- # dependency-files: setup.cfg
31
- # ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }} # Uncomment for private dependencies
32
-
33
- - name: Format Source Code
34
- uses: i2mint/wads/actions/ruff-format@master
35
- with:
36
- line-length: 88
37
- target-path: .
38
-
39
- - name: Lint Validation
40
- uses: i2mint/wads/actions/ruff-lint@master
41
- with:
42
- root-dir: ${{ env.PROJECT_NAME }}
43
- output-format: github
44
- # Ruff will read configuration from pyproject.toml
45
-
46
- - name: Run Tests
47
- uses: i2mint/wads/actions/run-tests@master
48
- with:
49
- root-dir: ${{ env.PROJECT_NAME }}
50
- exclude: examples,scrap
51
- coverage: true
52
- pytest-args: -v --tb=short
53
-
54
- windows-validation:
55
- name: Windows Tests (Informational)
56
- if: "!contains(github.event.head_commit.message, '[skip ci]')"
57
- runs-on: windows-latest
58
- continue-on-error: true # Don't fail the entire workflow if Windows tests fail
59
-
60
- steps:
61
- - uses: actions/checkout@v4
62
-
63
- - name: Set up Python 3.10
64
- uses: actions/setup-python@v5
65
- with:
66
- python-version: "3.10"
67
-
68
- - name: Install Dependencies
69
- uses: i2mint/wads/actions/install-deps@master
70
- with:
71
- dependency-files: pyproject.toml
72
- extras: dev,test
73
-
74
- - name: Run Windows Tests
75
- uses: i2mint/wads/actions/windows-tests@master
76
- with:
77
- root-dir: ${{ env.PROJECT_NAME }}
78
- exclude: examples,scrap
79
- pytest-args: -v --tb=short
80
-
81
- publish:
82
- name: Publish
83
- if: "!contains(github.event.head_commit.message, '[skip ci]') && (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main')"
84
- needs: validation
85
- runs-on: ubuntu-latest
86
- strategy:
87
- matrix:
88
- python-version: ["3.12"]
89
-
90
- steps:
91
- - uses: actions/checkout@v4
92
- with:
93
- fetch-depth: 0
94
- token: ${{ secrets.GITHUB_TOKEN }}
95
-
96
- - name: Set up Python ${{ matrix.python-version }}
97
- uses: actions/setup-python@v5
98
- with:
99
- python-version: ${{ matrix.python-version }}
100
-
101
- - name: Format Source Code
102
- uses: i2mint/wads/actions/ruff-format@master
103
-
104
- - name: Update Version Number
105
- uses: i2mint/isee/actions/bump-version-number@master
106
-
107
- - name: Build Distribution
108
- uses: i2mint/wads/actions/build-dist@master
109
- with:
110
- sdist: true
111
- wheel: true
112
- # Uncomment for private dependencies:
113
- # with:
114
- # ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}
115
-
116
- - name: Publish to PyPI
117
- uses: i2mint/wads/actions/pypi-upload@master
118
- with:
119
- pypi-username: ${{ secrets.PYPI_USERNAME }}
120
- pypi-password: ${{ secrets.PYPI_PASSWORD }}
121
- skip-existing: false
122
-
123
- - name: Commit Changes
124
- uses: i2mint/wads/actions/git-commit@master
125
- with:
126
- commit-message: "**CI** Formatted code + Updated version to ${{ steps.version.outputs.version }} [skip ci]"
127
- ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}
128
- push: true
129
-
130
- - name: Tag Repository
131
- uses: i2mint/wads/actions/git-tag@master
132
- with:
133
- tag: ${{ steps.version.outputs.version }}
134
- message: "Release version ${{ steps.version.outputs.version }}"
135
- push: true
136
-
137
- github-pages:
138
- name: Publish GitHub Pages
139
-
140
- permissions:
141
- contents: write
142
- pages: write
143
- id-token: write
144
-
145
- if: "!contains(github.event.head_commit.message, '[skip ci]') && github.ref == format('refs/heads/{0}', github.event.repository.default_branch)"
146
- needs: publish
147
- runs-on: ubuntu-latest
148
-
149
- steps:
150
- - uses: i2mint/epythet/actions/publish-github-pages@master
151
- with:
152
- github-token: ${{ secrets.GITHUB_TOKEN }}
153
- ignore: "tests/,scrap/,examples/"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes