winipedia-utils 0.4.12__tar.gz → 0.4.20__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 (93) hide show
  1. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/PKG-INFO +2 -2
  2. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/README.md +1 -1
  3. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/pyproject.toml +1 -1
  4. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/git/github/workflows/base/base.py +27 -7
  5. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/git/github/workflows/health_check.py +2 -0
  6. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/git/github/workflows/release.py +3 -3
  7. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/LICENSE +0 -0
  8. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/__init__.py +0 -0
  9. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/concurrent/__init__.py +0 -0
  10. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/concurrent/concurrent.py +0 -0
  11. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/concurrent/multiprocessing.py +0 -0
  12. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/concurrent/multithreading.py +0 -0
  13. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/data/__init__.py +0 -0
  14. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/data/dataframe/__init__.py +0 -0
  15. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/data/dataframe/cleaning.py +0 -0
  16. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/data/structures/__init__.py +0 -0
  17. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/data/structures/dicts.py +0 -0
  18. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/git/__init__.py +0 -0
  19. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/git/github/__init__.py +0 -0
  20. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/git/github/repo/__init__.py +0 -0
  21. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/git/github/repo/protect.py +0 -0
  22. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/git/github/repo/repo.py +0 -0
  23. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/git/github/workflows/__init__.py +0 -0
  24. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/git/github/workflows/base/__init__.py +0 -0
  25. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/git/github/workflows/publish.py +0 -0
  26. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/git/gitignore/__init__.py +0 -0
  27. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/git/gitignore/config.py +0 -0
  28. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/git/gitignore/gitignore.py +0 -0
  29. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/git/pre_commit/__init__.py +0 -0
  30. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/git/pre_commit/config.py +0 -0
  31. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/git/pre_commit/hooks.py +0 -0
  32. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/git/pre_commit/run_hooks.py +0 -0
  33. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/iterating/__init__.py +0 -0
  34. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/iterating/iterate.py +0 -0
  35. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/logging/__init__.py +0 -0
  36. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/logging/ansi.py +0 -0
  37. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/logging/config.py +0 -0
  38. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/logging/logger.py +0 -0
  39. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/modules/__init__.py +0 -0
  40. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/modules/class_.py +0 -0
  41. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/modules/function.py +0 -0
  42. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/modules/module.py +0 -0
  43. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/modules/package.py +0 -0
  44. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/oop/__init__.py +0 -0
  45. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/oop/mixins/__init__.py +0 -0
  46. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/oop/mixins/meta.py +0 -0
  47. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/oop/mixins/mixin.py +0 -0
  48. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/os/__init__.py +0 -0
  49. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/os/os.py +0 -0
  50. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/projects/__init__.py +0 -0
  51. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/projects/poetry/__init__.py +0 -0
  52. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/projects/poetry/config.py +0 -0
  53. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/projects/poetry/poetry.py +0 -0
  54. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/projects/project.py +0 -0
  55. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/py.typed +0 -0
  56. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/resources/__init__.py +0 -0
  57. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/resources/svgs/__init__.py +0 -0
  58. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/resources/svgs/delete_garbage_can.svg +0 -0
  59. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/resources/svgs/download_arrow.svg +0 -0
  60. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/resources/svgs/exit_fullscreen_icon.svg +0 -0
  61. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/resources/svgs/fullscreen_icon.svg +0 -0
  62. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/resources/svgs/menu_icon.svg +0 -0
  63. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/resources/svgs/pause_icon.svg +0 -0
  64. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/resources/svgs/play_icon.svg +0 -0
  65. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/resources/svgs/plus_icon.svg +0 -0
  66. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/resources/svgs/svg.py +0 -0
  67. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/security/__init__.py +0 -0
  68. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/security/cryptography.py +0 -0
  69. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/security/keyring.py +0 -0
  70. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/setup.py +0 -0
  71. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/testing/__init__.py +0 -0
  72. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/testing/assertions.py +0 -0
  73. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/testing/config.py +0 -0
  74. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/testing/convention.py +0 -0
  75. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/testing/create_tests.py +0 -0
  76. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/testing/fixtures.py +0 -0
  77. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/testing/skip.py +0 -0
  78. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/testing/tests/__init__.py +0 -0
  79. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/testing/tests/base/__init__.py +0 -0
  80. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/testing/tests/base/fixtures/__init__.py +0 -0
  81. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/testing/tests/base/fixtures/fixture.py +0 -0
  82. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/testing/tests/base/fixtures/scopes/__init__.py +0 -0
  83. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/testing/tests/base/fixtures/scopes/class_.py +0 -0
  84. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/testing/tests/base/fixtures/scopes/function.py +0 -0
  85. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/testing/tests/base/fixtures/scopes/module.py +0 -0
  86. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/testing/tests/base/fixtures/scopes/package.py +0 -0
  87. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/testing/tests/base/fixtures/scopes/session.py +0 -0
  88. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/testing/tests/base/utils/__init__.py +0 -0
  89. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/testing/tests/base/utils/utils.py +0 -0
  90. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/testing/tests/conftest.py +0 -0
  91. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/text/__init__.py +0 -0
  92. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/text/config.py +0 -0
  93. {winipedia_utils-0.4.12 → winipedia_utils-0.4.20}/winipedia_utils/text/string.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: winipedia-utils
3
- Version: 0.4.12
3
+ Version: 0.4.20
4
4
  Summary: A package with many utility functions
5
5
  License-Expression: MIT
6
6
  License-File: LICENSE
@@ -68,7 +68,7 @@ A comprehensive Python utility package that enforces best practices, automates p
68
68
  ```bash
69
69
  # 1: Create a new repository on GitHub
70
70
  # The default branch must be called main
71
- # add a PAT or Fine-Grained Access Token to your repo secrets called REPO_TOKEN that has write access to the repository (needed for branch protection in health_check.yaml - see winipedia_utils.git.github.repo.protect)
71
+ # add a PAT or Fine-Grained Access Token to your repo secrets called REPO_TOKEN that has write access to the repository (Adminstration and Contents)(needed for branch protection in health_check.yaml - see winipedia_utils.git.github.repo.protect and for commiting as an action in release.yaml)
72
72
 
73
73
  # 2: Clone the repository
74
74
  git clone https://github.com/owner/repo.git
@@ -43,7 +43,7 @@ A comprehensive Python utility package that enforces best practices, automates p
43
43
  ```bash
44
44
  # 1: Create a new repository on GitHub
45
45
  # The default branch must be called main
46
- # add a PAT or Fine-Grained Access Token to your repo secrets called REPO_TOKEN that has write access to the repository (needed for branch protection in health_check.yaml - see winipedia_utils.git.github.repo.protect)
46
+ # add a PAT or Fine-Grained Access Token to your repo secrets called REPO_TOKEN that has write access to the repository (Adminstration and Contents)(needed for branch protection in health_check.yaml - see winipedia_utils.git.github.repo.protect and for commiting as an action in release.yaml)
47
47
 
48
48
  # 2: Clone the repository
49
49
  git clone https://github.com/owner/repo.git
@@ -1,7 +1,7 @@
1
1
  # Project section
2
2
  [project]
3
3
  name = "winipedia-utils"
4
- version = "0.4.12"
4
+ version = "0.4.20"
5
5
  description = "A package with many utility functions"
6
6
  readme = "README.md"
7
7
  requires-python = ">=3.12"
@@ -85,11 +85,17 @@ class Workflow(YamlConfigFile):
85
85
  return f"{cls.get_workflow_name()}"
86
86
 
87
87
  @classmethod
88
- def get_checkout_step(cls, fetch_depth: int | None = None) -> dict[str, Any]:
88
+ def get_checkout_step(
89
+ cls,
90
+ fetch_depth: int | None = None,
91
+ *,
92
+ token: bool = False,
93
+ ) -> dict[str, Any]:
89
94
  """Get the checkout step.
90
95
 
91
96
  Args:
92
97
  fetch_depth: The fetch depth to use. If None, no fetch depth is specified.
98
+ token: Whether to use the repository token.
93
99
 
94
100
  Returns:
95
101
  The checkout step.
@@ -99,7 +105,10 @@ class Workflow(YamlConfigFile):
99
105
  "uses": "actions/checkout@main",
100
106
  }
101
107
  if fetch_depth is not None:
102
- step["with"] = {"fetch-depth": fetch_depth}
108
+ step.setdefault("with", {})["fetch-depth"] = fetch_depth
109
+
110
+ if token:
111
+ step.setdefault("with", {})["token"] = cls.get_repo_token()
103
112
  return step
104
113
 
105
114
  @classmethod
@@ -110,6 +119,7 @@ class Workflow(YamlConfigFile):
110
119
  fetch_depth: int | None = None,
111
120
  configure_pipy_token: bool = False,
112
121
  force_main_head: bool = False,
122
+ token: bool = False,
113
123
  ) -> list[dict[str, Any]]:
114
124
  """Get the poetry steps.
115
125
 
@@ -120,11 +130,12 @@ class Workflow(YamlConfigFile):
120
130
  force_main_head: Whether to exit if the running branch or current commit is not
121
131
  equal to the most recent commit on main. This is useful for workflows that
122
132
  should only run on main.
133
+ token: Whether to use the repository token.
123
134
 
124
135
  Returns:
125
136
  The poetry steps.
126
137
  """
127
- steps = [cls.get_checkout_step(fetch_depth)]
138
+ steps = [cls.get_checkout_step(fetch_depth, token=token)]
128
139
  if force_main_head:
129
140
  # exit with code 1 if the running branch is not main
130
141
  steps.append(
@@ -133,6 +144,7 @@ class Workflow(YamlConfigFile):
133
144
  "run": 'git fetch origin main --depth=1; main_sha=$(git rev-parse origin/main); if [ "$GITHUB_SHA" != "$main_sha" ]; then echo "Tag commit is not the latest commit on main."; exit 1; fi', # noqa: E501
134
145
  }
135
146
  )
147
+ steps.append(cls.get_setup_git_step())
136
148
  steps.append(
137
149
  {
138
150
  "name": "Setup Python",
@@ -162,8 +174,8 @@ class Workflow(YamlConfigFile):
162
174
  """Get the release steps."""
163
175
  return [
164
176
  {
165
- "name": "Create and Push Tag",
166
- "run": f"git tag {cls.get_version()} && git push origin {cls.get_version()}", # noqa: E501
177
+ "name": "Tag and Push",
178
+ "run": f"git push && git tag {cls.get_version()} && git push origin {cls.get_version()}", # noqa: E501
167
179
  },
168
180
  {
169
181
  "name": "Build Changelog",
@@ -212,12 +224,20 @@ class Workflow(YamlConfigFile):
212
224
  step["env"] = {"REPO_TOKEN": cls.get_repo_token()}
213
225
  return step
214
226
 
227
+ @classmethod
228
+ def get_setup_git_step(cls) -> dict[str, Any]:
229
+ """Get the setup git step."""
230
+ return {
231
+ "name": "Setup Git",
232
+ "run": 'git config --global user.email "github-actions[bot]@users.noreply.github.com" && git config --global user.name "github-actions[bot]"', # noqa: E501
233
+ }
234
+
215
235
  @classmethod
216
236
  def get_commit_step(cls) -> dict[str, Any]:
217
237
  """Get the commit step."""
218
238
  return {
219
- "name": "Commit Changes",
220
- "run": "poetry run git commit --no-verify -m 'CI/CD: Committing possible changes to pyproject.toml and poetry.lock' && poetry run git push", # noqa: E501
239
+ "name": "Commit added changes",
240
+ "run": "git commit --no-verify -m '[skip ci] CI/CD: Committing possible added changes (e.g.: pyproject.toml and poetry.lock)'", # noqa: E501
221
241
  }
222
242
 
223
243
  @classmethod
@@ -45,10 +45,12 @@ class HealthCheckWorkflow(Workflow):
45
45
  *(
46
46
  cls.get_poetry_setup_steps(
47
47
  install_dependencies=True,
48
+ token=True,
48
49
  )
49
50
  ),
50
51
  cls.get_protect_repository_step(),
51
52
  cls.get_pre_commit_step(),
53
+ cls.get_commit_step(),
52
54
  cls.get_extract_version_step(),
53
55
  ],
54
56
  ),
@@ -33,9 +33,9 @@ class ReleaseWorkflow(HealthCheckWorkflow):
33
33
  @classmethod
34
34
  def get_permissions(cls) -> dict[str, Any]:
35
35
  """Get the workflow permissions."""
36
- return {
37
- "contents": "write",
38
- }
36
+ permissions = super().get_permissions()
37
+ permissions["contents"] = "write"
38
+ return permissions
39
39
 
40
40
  @classmethod
41
41
  def get_jobs(cls) -> dict[str, Any]: