winipedia-utils 0.5.18__py3-none-any.whl → 0.5.22__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.

Potentially problematic release.


This version of winipedia-utils might be problematic. Click here for more details.

@@ -243,6 +243,7 @@ class Workflow(YamlConfigFile):
243
243
  *cls.get_poetry_setup_steps(
244
244
  install_dependencies=True,
245
245
  repo_token=True,
246
+ with_keyring=True,
246
247
  ),
247
248
  cls.get_pre_commit_step(),
248
249
  cls.get_commit_step(),
@@ -3,10 +3,13 @@
3
3
  This workflow is used to create a release on GitHub.
4
4
  """
5
5
 
6
- from typing import Any
6
+ from typing import TYPE_CHECKING, Any
7
7
 
8
8
  from winipedia_utils.git.github.workflows.health_check import HealthCheckWorkflow
9
9
 
10
+ if TYPE_CHECKING:
11
+ from winipedia_utils.git.github.workflows.base.base import Workflow
12
+
10
13
 
11
14
  class ReleaseWorkflow(HealthCheckWorkflow):
12
15
  """Release workflow.
@@ -40,9 +43,10 @@ class ReleaseWorkflow(HealthCheckWorkflow):
40
43
  @classmethod
41
44
  def get_jobs(cls) -> dict[str, Any]:
42
45
  """Get the workflow jobs."""
43
- jobs = HealthCheckWorkflow.get_jobs()
46
+ parent_cls: type[Workflow] = cls.__bases__[0]
47
+ jobs = parent_cls.get_jobs()
44
48
  release_job = cls.get_standard_job(
45
- needs=[HealthCheckWorkflow.get_filename()],
49
+ needs=[parent_cls.get_filename()],
46
50
  steps=[
47
51
  *cls.get_release_steps(),
48
52
  ],
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: winipedia-utils
3
- Version: 0.5.18
3
+ Version: 0.5.22
4
4
  Summary: A package with many utility functions
5
5
  License-Expression: MIT
6
6
  License-File: LICENSE
@@ -105,7 +105,7 @@ The setup creates the following configuration files:
105
105
  - `.pre-commit-config.yaml` - Pre-commit hook configuration
106
106
  - `.gitignore` - Git ignore rules (assumes you added one on GitHub before.)
107
107
  - `pyproject.toml` - Project configuration with Poetry settings
108
- - `.github/workflows/health_check.yaml` - Health check workflow (Runs on every push and pull request, all workfows run on the latest possible python version in pyproject.toml)
108
+ - `.github/workflows/health_check.yaml` - Health check workflow (Runs on every push and pull request using a matrix strategy to test across multiple operating systems and Python versions)
109
109
  - `.github/workflows/release.yaml` - Release workflow (Creates a release on GitHub when the same actions as in health check pass and commits are pushed to main)
110
110
  - `.github/workflows/publish.yaml` - Publishing workflow (Publishes to PyPI when a release is created by the release workflow, if you use this workflow, you need to add a PYPI_TOKEN (named PYPI_TOKEN) to your GitHub secrets that has write access to the package on PyPI.)
111
111
  - `py.typed` - PEP 561 marker for type hints
@@ -114,6 +114,38 @@ The setup creates the following configuration files:
114
114
  - `conftest.py` - Pytest configuration file
115
115
  - `.python-version` - Python version file for pyenv (if you use pyenv, puts in the lowest supported python version in pyproject.toml opposed to the latest possible python version in workflows)
116
116
 
117
+ ### GitHub Workflows and Matrix Strategy
118
+
119
+ The project uses GitHub Actions workflows with a **matrix strategy** to ensure cross-platform compatibility:
120
+
121
+ #### Matrix Configuration
122
+
123
+ The health check and release workflows test your code across:
124
+ - **Operating Systems**: Ubuntu (latest), Windows (latest), macOS (latest)
125
+ - **Python Versions**: All versions specified in your `pyproject.toml` (e.g., 3.12, 3.13, 3.14)
126
+
127
+ This matrix strategy ensures your code works reliably across different environments before merging or releasing.
128
+
129
+ #### Workflow Structure
130
+
131
+ The health check workflow consists of two jobs:
132
+
133
+ 1. **Matrix Job** (`health_check_matrix`) - Runs all checks in parallel across the matrix of OS and Python versions:
134
+ - Checkout repository
135
+ - Setup Git, Python, and Poetry
136
+ - Add Poetry to PATH (Windows-specific step)
137
+ - Install dependencies
138
+ - Setup CI keyring
139
+ - Protect repository (applies branch protection rules)
140
+ - Run pre-commit hooks (linting, formatting, type checking, security, tests)
141
+
142
+ 2. **Aggregation Job** (`health_check`) - Aggregates matrix results into a single status check:
143
+ - Required for branch protection compatibility
144
+ - Only runs after all matrix jobs complete successfully
145
+ - Provides a single status check that can be marked as required in branch protection rules
146
+
147
+ The release workflow extends the health check workflow and adds a release job that runs after all health checks pass.
148
+
117
149
  ### Pre-commit Hook Workflow
118
150
 
119
151
  When you commit code using `git commit`, the following checks run automatically:
@@ -203,8 +235,8 @@ A ruleset named `main protection` is created for the `main` branch with the foll
203
235
  - Requires review thread resolution (all comments in reviews must be resolved before merge)
204
236
  - Allowed merge methods: `squash` and `rebase` (no merge commits, keeps history clean)
205
237
  - **Required Status Checks:**
206
- - Strict mode enabled (all status checks must pass on the latest commit, not older ones (sets the health check as required status check))
207
- - Health check workflow must pass (the CI/CD pipeline must complete successfully)
238
+ - Strict mode enabled (all status checks must pass on the latest commit, not older ones)
239
+ - Health check workflow must pass (the aggregated `health_check` job ensures all matrix combinations passed successfully)
208
240
  - **Bypass Actors** - Repository admins can bypass all rules (for emergency situations)
209
241
 
210
242
  ## Utilities
@@ -16,10 +16,10 @@ winipedia_utils/git/github/repo/protect.py,sha256=nOVjb5GVinGIClp7k9_qqgKnAl_gk1
16
16
  winipedia_utils/git/github/repo/repo.py,sha256=OqoOfqDhe_Iik71dNqi4h3fGrMno33hSjk0bpNg3eZk,7865
17
17
  winipedia_utils/git/github/workflows/__init__.py,sha256=BPdntTwFEyBMJ6MyT7gddPHswvRdH9tsRtfK72VSV7Y,57
18
18
  winipedia_utils/git/github/workflows/base/__init__.py,sha256=XHsbmjiaGom-KX-S3leCY9cJD3aP9p_0X6xYMcdkHBU,23
19
- winipedia_utils/git/github/workflows/base/base.py,sha256=WowKcyrbDXwDs_GjJo1f3Vbfu2aWVhSqY-CTcknYl8w,12735
19
+ winipedia_utils/git/github/workflows/base/base.py,sha256=K8Lb19clzaw35YCXHFJ7BVKqeI8bkqDtA-4aSjxl9LM,12770
20
20
  winipedia_utils/git/github/workflows/health_check.py,sha256=rSz3cV5xEgMIV-SaAjKBonucS_xqz1-t9FUDUbctRy8,2523
21
21
  winipedia_utils/git/github/workflows/publish.py,sha256=TPbSp5QH2vVl55UdqE_kjf1HIkdubcgqWlkLjWFX5EA,1378
22
- winipedia_utils/git/github/workflows/release.py,sha256=GkObB3LcH9J-L9dWhK5N3aowggGFu3kvmEFKHmILBu4,1456
22
+ winipedia_utils/git/github/workflows/release.py,sha256=Vg87t_R-K9Ae-xQuvmGYi1nFhYfzgNVLu25EogfJwMw,1598
23
23
  winipedia_utils/git/gitignore/__init__.py,sha256=k-2E26JaZPkF69UUOJkpQl8T_PudrC7EYCIOxwgIQVU,57
24
24
  winipedia_utils/git/gitignore/config.py,sha256=Oi1gAf2mbR7vxMi0zsAFpCGzDaLNDd5S2vXEmA3eKg4,2595
25
25
  winipedia_utils/git/gitignore/gitignore.py,sha256=uE2MdynWgQuTG-y2YLR0FU5_giSE7s_TqSVQ6vnNOf8,2419
@@ -89,7 +89,7 @@ winipedia_utils/testing/tests/conftest.py,sha256=BLgUJtLecOwuEsIyJ__0buqovd5AhiG
89
89
  winipedia_utils/text/__init__.py,sha256=j2bwtK6kyeHI6SnoBjpRju0C1W2n2paXBDlNjNtaUxA,48
90
90
  winipedia_utils/text/config.py,sha256=jjKmn-tSbyaK6jGL0FxFHSREP6A6V1ZSX3RuIgvQ4io,7794
91
91
  winipedia_utils/text/string.py,sha256=yXmwOab5hXyVQG1NwlWDpy2prj0U7Vb2F5HKLT2Y77Q,3382
92
- winipedia_utils-0.5.18.dist-info/METADATA,sha256=gzcMByHCXrpz0mx9ExddW8Ju8XusI0exo2LZYthyxhM,14694
93
- winipedia_utils-0.5.18.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
94
- winipedia_utils-0.5.18.dist-info/licenses/LICENSE,sha256=o316mE2gGzd__JT69p7S_zlOmKiHh8YjpImCCcWyTvM,1066
95
- winipedia_utils-0.5.18.dist-info/RECORD,,
92
+ winipedia_utils-0.5.22.dist-info/METADATA,sha256=TlNzrKGVw6pJ8rQkK6-buqMdC2Dg4ozPXxsEgssWNEU,16129
93
+ winipedia_utils-0.5.22.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
94
+ winipedia_utils-0.5.22.dist-info/licenses/LICENSE,sha256=o316mE2gGzd__JT69p7S_zlOmKiHh8YjpImCCcWyTvM,1066
95
+ winipedia_utils-0.5.22.dist-info/RECORD,,