winipedia-utils 0.4.22__tar.gz → 0.4.26__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.

Potentially problematic release.


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

Files changed (94) hide show
  1. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/PKG-INFO +41 -2
  2. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/README.md +40 -1
  3. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/pyproject.toml +1 -1
  4. winipedia_utils-0.4.26/winipedia_utils/data/dataframe/cleaning.py +615 -0
  5. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/git/github/repo/protect.py +1 -2
  6. winipedia_utils-0.4.22/winipedia_utils/data/dataframe/cleaning.py +0 -378
  7. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/LICENSE +0 -0
  8. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/__init__.py +0 -0
  9. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/concurrent/__init__.py +0 -0
  10. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/concurrent/concurrent.py +0 -0
  11. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/concurrent/multiprocessing.py +0 -0
  12. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/concurrent/multithreading.py +0 -0
  13. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/data/__init__.py +0 -0
  14. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/data/dataframe/__init__.py +0 -0
  15. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/data/structures/__init__.py +0 -0
  16. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/data/structures/dicts.py +0 -0
  17. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/git/__init__.py +0 -0
  18. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/git/github/__init__.py +0 -0
  19. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/git/github/repo/__init__.py +0 -0
  20. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/git/github/repo/repo.py +0 -0
  21. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/git/github/workflows/__init__.py +0 -0
  22. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/git/github/workflows/base/__init__.py +0 -0
  23. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/git/github/workflows/base/base.py +0 -0
  24. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/git/github/workflows/health_check.py +0 -0
  25. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/git/github/workflows/publish.py +0 -0
  26. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/git/github/workflows/release.py +0 -0
  27. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/git/gitignore/__init__.py +0 -0
  28. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/git/gitignore/config.py +0 -0
  29. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/git/gitignore/gitignore.py +0 -0
  30. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/git/pre_commit/__init__.py +0 -0
  31. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/git/pre_commit/config.py +0 -0
  32. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/git/pre_commit/hooks.py +0 -0
  33. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/git/pre_commit/run_hooks.py +0 -0
  34. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/iterating/__init__.py +0 -0
  35. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/iterating/iterate.py +0 -0
  36. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/logging/__init__.py +0 -0
  37. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/logging/ansi.py +0 -0
  38. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/logging/config.py +0 -0
  39. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/logging/logger.py +0 -0
  40. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/modules/__init__.py +0 -0
  41. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/modules/class_.py +0 -0
  42. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/modules/function.py +0 -0
  43. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/modules/module.py +0 -0
  44. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/modules/package.py +0 -0
  45. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/oop/__init__.py +0 -0
  46. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/oop/mixins/__init__.py +0 -0
  47. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/oop/mixins/meta.py +0 -0
  48. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/oop/mixins/mixin.py +0 -0
  49. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/os/__init__.py +0 -0
  50. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/os/os.py +0 -0
  51. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/projects/__init__.py +0 -0
  52. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/projects/poetry/__init__.py +0 -0
  53. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/projects/poetry/config.py +0 -0
  54. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/projects/poetry/poetry.py +0 -0
  55. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/projects/project.py +0 -0
  56. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/py.typed +0 -0
  57. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/resources/__init__.py +0 -0
  58. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/resources/svgs/__init__.py +0 -0
  59. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/resources/svgs/delete_garbage_can.svg +0 -0
  60. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/resources/svgs/download_arrow.svg +0 -0
  61. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/resources/svgs/exit_fullscreen_icon.svg +0 -0
  62. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/resources/svgs/fullscreen_icon.svg +0 -0
  63. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/resources/svgs/menu_icon.svg +0 -0
  64. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/resources/svgs/pause_icon.svg +0 -0
  65. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/resources/svgs/play_icon.svg +0 -0
  66. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/resources/svgs/plus_icon.svg +0 -0
  67. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/resources/svgs/svg.py +0 -0
  68. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/security/__init__.py +0 -0
  69. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/security/cryptography.py +0 -0
  70. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/security/keyring.py +0 -0
  71. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/setup.py +0 -0
  72. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/testing/__init__.py +0 -0
  73. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/testing/assertions.py +0 -0
  74. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/testing/config.py +0 -0
  75. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/testing/convention.py +0 -0
  76. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/testing/create_tests.py +0 -0
  77. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/testing/fixtures.py +0 -0
  78. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/testing/skip.py +0 -0
  79. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/testing/tests/__init__.py +0 -0
  80. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/testing/tests/base/__init__.py +0 -0
  81. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/testing/tests/base/fixtures/__init__.py +0 -0
  82. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/testing/tests/base/fixtures/fixture.py +0 -0
  83. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/testing/tests/base/fixtures/scopes/__init__.py +0 -0
  84. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/testing/tests/base/fixtures/scopes/class_.py +0 -0
  85. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/testing/tests/base/fixtures/scopes/function.py +0 -0
  86. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/testing/tests/base/fixtures/scopes/module.py +0 -0
  87. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/testing/tests/base/fixtures/scopes/package.py +0 -0
  88. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/testing/tests/base/fixtures/scopes/session.py +0 -0
  89. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/testing/tests/base/utils/__init__.py +0 -0
  90. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/testing/tests/base/utils/utils.py +0 -0
  91. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/testing/tests/conftest.py +0 -0
  92. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/text/__init__.py +0 -0
  93. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/winipedia_utils/text/config.py +0 -0
  94. {winipedia_utils-0.4.22 → winipedia_utils-0.4.26}/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.22
3
+ Version: 0.4.26
4
4
  Summary: A package with many utility functions
5
5
  License-Expression: MIT
6
6
  License-File: LICENSE
@@ -108,7 +108,7 @@ The setup creates the following configuration files:
108
108
  - `.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.)
109
109
  - `py.typed` - PEP 561 marker for type hints
110
110
  - `experiment.py` - For experimentation (ignored by git)
111
- - `test0.py` - Test file with one empyt test (so that initial tests pass)
111
+ - `test_zero.py` - Test file with one empyt test (so that initial tests pass)
112
112
  - `conftest.py` - Pytest configuration file
113
113
 
114
114
  ### Pre-commit Hook Workflow
@@ -160,6 +160,45 @@ Configuration files are managed automatically by the setup system:
160
160
  - **Custom additions** - You can add custom configurations as long as the standard configurations remain intact
161
161
  - **Modified standards** - If you modify the standard configurations, they will be restored on the next setup run
162
162
 
163
+ ## Branch Protection
164
+
165
+ As soon as you push to `main` on GitHub (provided the `REPO_TOKEN` secret is set up correctly), the `health_check.yaml` workflow will run and execute `winipedia_utils.git.github.repo.protect`, which uses PyGithub to protect the repository.
166
+
167
+ ### Repository Settings
168
+
169
+ The following repository settings are configured:
170
+
171
+ - **name** - Repository name from `pyproject.toml` or folder name (should match repo name)
172
+ - **description** - Repository description from `pyproject.toml`
173
+ - **default_branch** - `main`
174
+ - **delete_branch_on_merge** - `true`
175
+ - **allow_update_branch** - `true`
176
+ - **allow_merge_commit** - `false`
177
+ - **allow_rebase_merge** - `true`
178
+ - **allow_squash_merge** - `true`
179
+
180
+ ### Branch Protection Rules
181
+
182
+ A ruleset named `main protection` is created for the `main` branch with the following rules:
183
+
184
+ - **Deletion** - Prevents branch deletion
185
+ - **Non-fast-forward** - Prevents non-fast-forward pushes (forces linear history by rejecting force pushes)
186
+ - **Creation** - Prevents branch creation directly on the protected branch
187
+ - **Update** - Prevents direct updates to protected branch (all changes must go through pull requests)
188
+ - **Required Linear History** - Enforces linear commit history (no merge commits allowed)
189
+ - **Required Signatures** - Requires all commits to be signed with GPG or SSH keys
190
+ - **Pull Request Requirements:**
191
+ - Requires 1 approving review (at least one person must approve before merge)
192
+ - Dismisses stale reviews on push (if you push a new commit, all reviews are dismissed and must be re-approved)
193
+ - Requires code owner review (designated code owners must approve changes to their files)
194
+ - Requires last push approval (the most recent push must be approved, not an earlier one)
195
+ - Requires review thread resolution (all comments in reviews must be resolved before merge)
196
+ - Allowed merge methods: `squash` and `rebase` (no merge commits, keeps history clean)
197
+ - **Required Status Checks:**
198
+ - Strict mode enabled (all status checks must pass on the latest commit, not older ones (sets the health check as required status check))
199
+ - Health check workflow must pass (the CI/CD pipeline must complete successfully)
200
+ - **Bypass Actors** - Repository admins can bypass all rules (for emergency situations)
201
+
163
202
  ## Utilities
164
203
 
165
204
  Winipedia Utils provides comprehensive utility modules for common development tasks:
@@ -82,7 +82,7 @@ The setup creates the following configuration files:
82
82
  - `.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.)
83
83
  - `py.typed` - PEP 561 marker for type hints
84
84
  - `experiment.py` - For experimentation (ignored by git)
85
- - `test0.py` - Test file with one empyt test (so that initial tests pass)
85
+ - `test_zero.py` - Test file with one empyt test (so that initial tests pass)
86
86
  - `conftest.py` - Pytest configuration file
87
87
 
88
88
  ### Pre-commit Hook Workflow
@@ -134,6 +134,45 @@ Configuration files are managed automatically by the setup system:
134
134
  - **Custom additions** - You can add custom configurations as long as the standard configurations remain intact
135
135
  - **Modified standards** - If you modify the standard configurations, they will be restored on the next setup run
136
136
 
137
+ ## Branch Protection
138
+
139
+ As soon as you push to `main` on GitHub (provided the `REPO_TOKEN` secret is set up correctly), the `health_check.yaml` workflow will run and execute `winipedia_utils.git.github.repo.protect`, which uses PyGithub to protect the repository.
140
+
141
+ ### Repository Settings
142
+
143
+ The following repository settings are configured:
144
+
145
+ - **name** - Repository name from `pyproject.toml` or folder name (should match repo name)
146
+ - **description** - Repository description from `pyproject.toml`
147
+ - **default_branch** - `main`
148
+ - **delete_branch_on_merge** - `true`
149
+ - **allow_update_branch** - `true`
150
+ - **allow_merge_commit** - `false`
151
+ - **allow_rebase_merge** - `true`
152
+ - **allow_squash_merge** - `true`
153
+
154
+ ### Branch Protection Rules
155
+
156
+ A ruleset named `main protection` is created for the `main` branch with the following rules:
157
+
158
+ - **Deletion** - Prevents branch deletion
159
+ - **Non-fast-forward** - Prevents non-fast-forward pushes (forces linear history by rejecting force pushes)
160
+ - **Creation** - Prevents branch creation directly on the protected branch
161
+ - **Update** - Prevents direct updates to protected branch (all changes must go through pull requests)
162
+ - **Required Linear History** - Enforces linear commit history (no merge commits allowed)
163
+ - **Required Signatures** - Requires all commits to be signed with GPG or SSH keys
164
+ - **Pull Request Requirements:**
165
+ - Requires 1 approving review (at least one person must approve before merge)
166
+ - Dismisses stale reviews on push (if you push a new commit, all reviews are dismissed and must be re-approved)
167
+ - Requires code owner review (designated code owners must approve changes to their files)
168
+ - Requires last push approval (the most recent push must be approved, not an earlier one)
169
+ - Requires review thread resolution (all comments in reviews must be resolved before merge)
170
+ - Allowed merge methods: `squash` and `rebase` (no merge commits, keeps history clean)
171
+ - **Required Status Checks:**
172
+ - Strict mode enabled (all status checks must pass on the latest commit, not older ones (sets the health check as required status check))
173
+ - Health check workflow must pass (the CI/CD pipeline must complete successfully)
174
+ - **Bypass Actors** - Repository admins can bypass all rules (for emergency situations)
175
+
137
176
  ## Utilities
138
177
 
139
178
  Winipedia Utils provides comprehensive utility modules for common development tasks:
@@ -1,7 +1,7 @@
1
1
  # Project section
2
2
  [project]
3
3
  name = "winipedia-utils"
4
- version = "0.4.22"
4
+ version = "0.4.26"
5
5
  description = "A package with many utility functions"
6
6
  readme = "README.md"
7
7
  requires-python = ">=3.12"