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

Files changed (33) hide show
  1. winipedia_utils/concurrent/concurrent.py +7 -2
  2. winipedia_utils/concurrent/multiprocessing.py +1 -2
  3. winipedia_utils/concurrent/multithreading.py +2 -2
  4. winipedia_utils/git/gitignore/config.py +54 -0
  5. winipedia_utils/git/gitignore/gitignore.py +5 -63
  6. winipedia_utils/git/pre_commit/config.py +45 -58
  7. winipedia_utils/git/pre_commit/hooks.py +13 -13
  8. winipedia_utils/git/pre_commit/run_hooks.py +2 -2
  9. winipedia_utils/git/workflows/base/base.py +102 -52
  10. winipedia_utils/git/workflows/publish.py +25 -49
  11. winipedia_utils/git/workflows/release.py +22 -46
  12. winipedia_utils/iterating/iterate.py +59 -1
  13. winipedia_utils/modules/class_.py +60 -10
  14. winipedia_utils/modules/function.py +18 -1
  15. winipedia_utils/modules/package.py +16 -7
  16. winipedia_utils/projects/poetry/config.py +122 -110
  17. winipedia_utils/projects/poetry/poetry.py +1 -8
  18. winipedia_utils/projects/project.py +7 -13
  19. winipedia_utils/setup.py +11 -29
  20. winipedia_utils/testing/config.py +95 -0
  21. winipedia_utils/testing/create_tests.py +4 -18
  22. winipedia_utils/testing/skip.py +10 -0
  23. winipedia_utils/testing/tests/base/fixtures/scopes/class_.py +3 -3
  24. winipedia_utils/testing/tests/base/fixtures/scopes/module.py +6 -4
  25. winipedia_utils/testing/tests/base/fixtures/scopes/session.py +28 -176
  26. winipedia_utils/testing/tests/base/utils/utils.py +11 -55
  27. winipedia_utils/text/config.py +143 -0
  28. winipedia_utils-0.3.7.dist-info/METADATA +324 -0
  29. {winipedia_utils-0.2.58.dist-info → winipedia_utils-0.3.7.dist-info}/RECORD +31 -28
  30. winipedia_utils/consts.py +0 -21
  31. winipedia_utils-0.2.58.dist-info/METADATA +0 -738
  32. {winipedia_utils-0.2.58.dist-info → winipedia_utils-0.3.7.dist-info}/WHEEL +0 -0
  33. {winipedia_utils-0.2.58.dist-info → winipedia_utils-0.3.7.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,324 @@
1
+ Metadata-Version: 2.4
2
+ Name: winipedia-utils
3
+ Version: 0.3.7
4
+ Summary: A package with many utility functions
5
+ License-Expression: MIT
6
+ License-File: LICENSE
7
+ Author: Winipedia
8
+ Author-email: win.steveker@gmx.de
9
+ Requires-Python: >=3.12
10
+ Classifier: Programming Language :: Python :: 3
11
+ Classifier: Programming Language :: Python :: 3.12
12
+ Classifier: Programming Language :: Python :: 3.13
13
+ Classifier: Programming Language :: Python :: 3.14
14
+ Requires-Dist: cryptography
15
+ Requires-Dist: defusedxml
16
+ Requires-Dist: keyring
17
+ Requires-Dist: pathspec
18
+ Requires-Dist: polars
19
+ Requires-Dist: pyyaml
20
+ Requires-Dist: setuptools
21
+ Requires-Dist: tomlkit
22
+ Requires-Dist: tqdm
23
+ Description-Content-Type: text/markdown
24
+
25
+ # Winipedia Utils
26
+
27
+ A comprehensive Python utility package that enforces best practices, automates project setup, and provides a complete testing framework for modern Python projects.
28
+
29
+ > **Note:** Code examples in this README are provided for reference. Please check the source code and docstrings for complete and accurate implementations.
30
+
31
+ [![Python Version](https://img.shields.io/badge/python-3.12%2B-blue)](https://www.python.org/downloads/)
32
+ [![License](https://img.shields.io/badge/license-MIT-green)](LICENSE)
33
+ [![Code style: ruff](https://img.shields.io/badge/code%20style-ruff-000000.svg)](https://github.com/astral-sh/ruff)
34
+
35
+ ## Table of Contents
36
+
37
+ - [Overview](#overview)
38
+ - [Key Features](#key-features)
39
+ - [Quick Start](#quick-start)
40
+ - [Setup Process](#setup-process)
41
+ - [Utilities](#utilities)
42
+ - [Configuration Files](#configuration-files)
43
+ - [Important Notes](#important-notes)
44
+ - [Requirements](#requirements)
45
+
46
+ ## Overview
47
+
48
+ **Winipedia Utils** is a utility library that serves two primary purposes:
49
+
50
+ 1. **Utility Package** - Provides reusable functions across several domains (concurrency, data handling, security, testing, etc.)
51
+ 2. **Project Framework** - Automates project setup, testing infrastructure, code quality checks, and best practices enforcement
52
+
53
+ ## Key Features
54
+
55
+ - **Automatic Test Generation** - Creates mirror test structure matching your source code
56
+ - **Security First** - Built-in encryption, keyring integration, and security scanning
57
+ - **Concurrent Processing** - Unified interface for multiprocessing and multithreading
58
+ - **Data Handling** - Polars-based dataframe utilities with cleaning pipelines
59
+ - **Strict Type Checking** - mypy in strict mode with full type annotations
60
+ - **Code Quality** - Automated linting, formatting, and security checks
61
+ - **Comprehensive Logging** - Automatic method instrumentation and performance tracking
62
+
63
+ ## Quick Start
64
+
65
+ ### Installation
66
+
67
+ ```bash
68
+ # Add winipedia-utils to your project
69
+ poetry add winipedia-utils
70
+
71
+ # Run the automated setup
72
+ poetry run python -m winipedia_utils.setup
73
+ ```
74
+
75
+ The setup script will automatically configure your project with all necessary files and standards.
76
+
77
+ ## Setup Process
78
+
79
+ The `winipedia_utils.setup` command automates the entire project initialization in three main steps:
80
+
81
+ 1. **Initialize Configuration Files** - Creates all necessary config files with standard configurations
82
+ 2. **Create Project Root** - Sets up the project root directory with __init__.py files
83
+ 3. **Run Pre-commit Hooks** - Executes all pre-commit hooks to validate the setup
84
+
85
+ ### Generated Configuration Files
86
+
87
+ The setup creates the following configuration files:
88
+ - `.pre-commit-config.yaml` - Pre-commit hook configuration
89
+ - `.gitignore` - Git ignore rules (assumes you added one on GitHub before.)
90
+ - `pyproject.toml` - Project configuration with Poetry settings
91
+ - `.github/workflows/release.yaml` - Release workflow
92
+ - `.github/workflows/publish.yaml` - Publishing workflow
93
+ - `py.typed` - PEP 561 marker for type hints
94
+ - `experiment.py` - For experimentation (ignored by git)
95
+ - `test0.py` - Test file with one empyt test (so that initial tests pass)
96
+ - `conftest.py` - Pytest configuration file
97
+
98
+ ### Pre-commit Hook Workflow
99
+
100
+ When you commit code using `poetry run git commit`, the following checks run automatically:
101
+
102
+ 1. Patch version
103
+ 2. Add version patch to git
104
+ 3. Update package manager
105
+ 4. Install packages
106
+ 5. Update packages
107
+ 6. Lock dependencies
108
+ 7. Check package manager configs
109
+ 8. Create tests
110
+ 9. Lint code
111
+ 10. Format code
112
+ 11. Check static types
113
+ 12. Check security
114
+ 13. Run tests
115
+
116
+ ### Auto-generated Test Structure
117
+
118
+ The test generation creates a **mirror structure** of your source code:
119
+
120
+ ```
121
+ my_project/
122
+ ├── my_project/
123
+ │ ├── module_a.py
124
+ │ └── package_b/
125
+ │ └── module_c.py
126
+ └── tests/
127
+ ├── test_module_a.py
128
+ └── test_package_b/
129
+ └── test_module_c.py
130
+ ```
131
+
132
+ For each function, class, and method, skeleton tests are created with `NotImplementedError` placeholders for you to implement.
133
+
134
+ ## Configuration Files
135
+
136
+ Configuration files are managed automatically by the setup system:
137
+
138
+ - **Deleted files** - If you delete a config file, it will be recreated with standard configurations
139
+ - **Empty files** - If you want to disable a config file, make it empty. This signals that the file is unwanted and won't be modified
140
+ - **Custom additions** - You can add custom configurations as long as the standard configurations remain intact
141
+ - **Modified standards** - If you modify the standard configurations, they will be restored on the next setup run
142
+
143
+ ## Utilities
144
+
145
+ Winipedia Utils provides comprehensive utility modules for common development tasks:
146
+
147
+ ### Concurrent Processing
148
+
149
+ Unified interface for multiprocessing and multithreading:
150
+
151
+ ```python
152
+ from winipedia_utils.concurrent.multiprocessing import multiprocess_loop
153
+ from winipedia_utils.concurrent.multithreading import multithread_loop
154
+ ```
155
+
156
+ ### Data Cleaning & Handling
157
+
158
+ Build data cleaning pipelines using Polars:
159
+
160
+ ```python
161
+ from winipedia_utils.data.dataframe.cleaning import CleaningDF
162
+ import polars as pl
163
+ ```
164
+
165
+ ### Logging Utilities
166
+
167
+ Simple, standardized logging setup with automatic method instrumentation:
168
+
169
+ ```python
170
+ from winipedia_utils.logging.logger import get_logger
171
+
172
+ logger = get_logger(__name__)
173
+ logger.info("Application started")
174
+ logger.warning("This is a warning")
175
+ logger.error("An error occurred")
176
+ ```
177
+
178
+ **Features:**
179
+ - Pre-configured logging levels
180
+ - ANSI color support for terminal output
181
+ - Automatic method logging via metaclasses
182
+
183
+ ### Object-Oriented Programming Utilities
184
+
185
+ Advanced metaclasses and mixins for class composition and behavior extension:
186
+
187
+ ```python
188
+ from winipedia_utils.oop.mixins.mixin import ABCLoggingMixin, StrictABCLoggingMixin
189
+ ```
190
+
191
+ ### Security Utilities
192
+
193
+ Encryption and secure credential storage using keyring:
194
+
195
+ ```python
196
+ from winipedia_utils.security.keyring import (
197
+ get_or_create_fernet,
198
+ get_or_create_aes_gcm
199
+ )
200
+ ```
201
+
202
+ ### Testing Utilities
203
+
204
+ Comprehensive testing framework with automatic test generation:
205
+
206
+ ```python
207
+ from winipedia_utils.testing.assertions import assert_with_msg
208
+ from winipedia_utils.testing.convention import (
209
+ make_test_obj_name,
210
+ get_test_obj_from_obj,
211
+ make_test_obj_importpath_from_obj
212
+ )
213
+
214
+ # Custom assertions
215
+ assert_with_msg(result == expected, "Result does not match expected value")
216
+
217
+ # Test naming conventions
218
+ test_name = make_test_obj_name(my_function) # "test_my_function"
219
+
220
+ # Get corresponding test object
221
+ test_obj = get_test_obj_from_obj(my_function)
222
+
223
+ # Get test import path
224
+ test_path = make_test_obj_importpath_from_obj(my_function)
225
+ ```
226
+
227
+ **Features:**
228
+ - Automatic test file generation
229
+ - Mirror test structure matching source code
230
+ - Test naming conventions
231
+ - Fixture management with scopes (function, class, module, package, session)
232
+
233
+ ### Module Introspection Utilities
234
+
235
+ Tools for working with Python modules, packages, classes, and functions:
236
+
237
+ ```python
238
+ from winipedia_utils.modules.package import find_packages, walk_package
239
+ from winipedia_utils.modules.module import create_module, import_obj_from_importpath
240
+ from winipedia_utils.modules.class_ import get_all_cls_from_module, get_all_methods_from_cls
241
+ from winipedia_utils.modules.function import get_all_functions_from_module
242
+ ```
243
+
244
+ ### Text and String Utilities
245
+
246
+ String manipulation and configuration file handling:
247
+
248
+ ```python
249
+ from winipedia_utils.text.string import value_to_truncated_string
250
+ from winipedia_utils.text.config import ConfigFile
251
+ ```
252
+
253
+ ### OS and System Utilities
254
+
255
+ Operating system and subprocess utilities:
256
+
257
+ ```python
258
+ from winipedia_utils.os.os import run_subprocess
259
+ ```
260
+
261
+ ### Iteration Utilities
262
+
263
+ Utilities for working with iterables and nested structures:
264
+
265
+ ```python
266
+ from winipedia_utils.iterating.iterate import get_len_with_default, nested_structure_is_subset
267
+ ```
268
+
269
+ ### Git Utilities
270
+
271
+ Git-related utilities including .gitignore handling and pre-commit hooks:
272
+
273
+ ```python
274
+ from winipedia_utils.git.gitignore.gitignore import path_is_in_gitignore
275
+ ```
276
+
277
+ ### Project Management Utilities
278
+
279
+ Tools for managing Poetry projects and project structure:
280
+
281
+ ```python
282
+ from winipedia_utils.projects.project import create_project_root
283
+ from winipedia_utils.projects.poetry.config import PyProjectTomlConfig
284
+ ```
285
+
286
+ ## Important Notes
287
+
288
+ ### Git Commit Workflow
289
+
290
+ When using winipedia-utils, you **must** use Poetry to run git commit:
291
+
292
+ ```bash
293
+ # Correct - Uses Python environment for pre-commit hook
294
+ poetry run git commit -m "Your commit message"
295
+
296
+ # Incorrect - Pre-commit hook won't run properly
297
+ git commit -m "Your commit message"
298
+ ```
299
+
300
+ This is necessary because the pre-commit hook needs access to the Python environment and installed packages.
301
+
302
+ ### Philosophy
303
+
304
+ The core philosophy of Winipedia Utils is to:
305
+
306
+ > **Enforce good habits, ensure clean code, and save time when starting new projects**
307
+
308
+ By automating setup, testing, linting, formatting, and type checking, you can focus on writing business logic instead of configuring tools.
309
+
310
+ ## Requirements
311
+
312
+ - **Python:** 3.12 or higher
313
+ - **Poetry:** For dependency management
314
+ - **Git:** For version control and pre-commit hooks
315
+
316
+ ## License
317
+
318
+ MIT License - See [LICENSE](LICENSE) file for details
319
+
320
+ ## Contributing
321
+
322
+ Contributions are welcome! Please ensure all code follows the project's quality standards.
323
+
324
+
@@ -1,9 +1,8 @@
1
1
  winipedia_utils/__init__.py,sha256=vOWZ8n-YemVIzDLd8eWw1HVPGH3jxuT6VtDKHbmxk_A,43
2
2
  winipedia_utils/concurrent/__init__.py,sha256=Tu0ig4gVCk_f1n74G35hDwH-WS3P3STVQGWjxTIbbo8,54
3
- winipedia_utils/concurrent/concurrent.py,sha256=b-el36KyB1cT23Fog9Ix1TT386XF9iWahsRTX5N19TM,8521
4
- winipedia_utils/concurrent/multiprocessing.py,sha256=P1dgiooms-PH7ZLei9MgGyjpSdgMG5yvhFflAAvCNew,4726
5
- winipedia_utils/concurrent/multithreading.py,sha256=Fuc4qWECvOk2y2jPQW-XN3p-5NLvBvNBpVglk4mpEH4,3084
6
- winipedia_utils/consts.py,sha256=LHw5hc5ILuu3AIxaB0cJxRtZzeOi75h0FDS0Ymcfuug,476
3
+ winipedia_utils/concurrent/concurrent.py,sha256=h2vgxeDFsagZ10LnHKkswwF2bjY_L1hXKutejeJo48U,8648
4
+ winipedia_utils/concurrent/multiprocessing.py,sha256=1pnAU-CS3crNOKlp68gCCvNbTvNJs0in_VASMpZ7M1c,4721
5
+ winipedia_utils/concurrent/multithreading.py,sha256=L33gLy1PR51mOsQY6TuXbbahbU8eDPAQijzbmn_pSRc,3080
7
6
  winipedia_utils/data/__init__.py,sha256=o6SXX1gBCwhb9abo8xTfZtqUNuLqXmdo2VervnJxRzc,48
8
7
  winipedia_utils/data/dataframe/__init__.py,sha256=XHsbmjiaGom-KX-S3leCY9cJD3aP9p_0X6xYMcdkHBU,23
9
8
  winipedia_utils/data/dataframe/cleaning.py,sha256=iZC6AI2Di6nLwb_A698JCoeT4221Rd8WpzfZwbzZuM8,13261
@@ -11,27 +10,28 @@ winipedia_utils/data/structures/__init__.py,sha256=XHsbmjiaGom-KX-S3leCY9cJD3aP9
11
10
  winipedia_utils/data/structures/dicts.py,sha256=jsFzQ96cvyHsvPSnsEUhksuWvLSGq6-Rryfw6gEXq-c,274
12
11
  winipedia_utils/git/__init__.py,sha256=IRmEVz0sUEw47Eli--57YaypWitxlcYThT_ulwkhNTE,47
13
12
  winipedia_utils/git/gitignore/__init__.py,sha256=k-2E26JaZPkF69UUOJkpQl8T_PudrC7EYCIOxwgIQVU,57
14
- winipedia_utils/git/gitignore/gitignore.py,sha256=PoXPA2F1mptirwhTXgv-iC_ivQReAWqNpHDEaFAmPkE,4376
13
+ winipedia_utils/git/gitignore/config.py,sha256=Oo3EnZ8yJN5a9ZIMgmFIYacq6VcyEw_nZvXZ3M24GG0,1605
14
+ winipedia_utils/git/gitignore/gitignore.py,sha256=ai8EEPvO9TchZv6odHzN1w7xwqzG5MwLOiXXuouwq0I,2458
15
15
  winipedia_utils/git/pre_commit/__init__.py,sha256=gFLVGQRmS6abgy5MfPQy_GZiF1_hGxuXtcOHX95WL-A,58
16
- winipedia_utils/git/pre_commit/config.py,sha256=HNThJhfA15erOLWNIaOMJN7z6uSGbpNbpFewSvK4qKQ,2262
17
- winipedia_utils/git/pre_commit/hooks.py,sha256=qBGZa4Gdp6E9Yqhd0boo2SZjDAK2Gzs0QZb7MTc76mg,3657
18
- winipedia_utils/git/pre_commit/run_hooks.py,sha256=HFsomU-KV89gVLAzmHtLnwekldO8vpTX3Nmmp-aJc0g,1523
16
+ winipedia_utils/git/pre_commit/config.py,sha256=4MadT7qYZdwOfhAxY9VJiNtfmYNNz4TxS5-bri6okPA,1857
17
+ winipedia_utils/git/pre_commit/hooks.py,sha256=BsIxaAEdOFTdw9-8Y-TxopBiNF969tpb8jvaTzQy2es,3659
18
+ winipedia_utils/git/pre_commit/run_hooks.py,sha256=FOs501pCvjrvq2or5S6KP3vFchQTwD9bUP1UqrE16Ts,1509
19
19
  winipedia_utils/git/workflows/__init__.py,sha256=BPdntTwFEyBMJ6MyT7gddPHswvRdH9tsRtfK72VSV7Y,57
20
20
  winipedia_utils/git/workflows/base/__init__.py,sha256=XHsbmjiaGom-KX-S3leCY9cJD3aP9p_0X6xYMcdkHBU,23
21
- winipedia_utils/git/workflows/base/base.py,sha256=pH-TF8ElvYNldLuo420WIArlEf6gkk1igfY42eytKGM,2413
22
- winipedia_utils/git/workflows/publish.py,sha256=aeFkYis5DMM28iWu5CgYocoUpAOT-k_wjyob_JZY6fQ,2398
23
- winipedia_utils/git/workflows/release.py,sha256=oJCWnvQT05zqLJp75cliQhfuu2PFKnQ0Uw6Y-8r0QA4,2839
21
+ winipedia_utils/git/workflows/base/base.py,sha256=dVGpbZHDPcyJ_Z7OheBdquMVgjcGOzzrOI9GEDAGLb8,4294
22
+ winipedia_utils/git/workflows/publish.py,sha256=BCc_jBX8Nh1lEm6tG6a2ny-ghu-gfMh4Owkz8vGzGIw,1592
23
+ winipedia_utils/git/workflows/release.py,sha256=dT6zVpgndihCRhZQzpdPSCWh4q5BkupHjcOkysXU_FE,2132
24
24
  winipedia_utils/iterating/__init__.py,sha256=rlF9hzxbowq5yOfcXvOKOQdB-EQmfrislQpf659Zeu4,53
25
- winipedia_utils/iterating/iterate.py,sha256=fP0cgEOmmwqt5wg6v61Kw3Jx9TtE8bC_a2jVd270NCM,944
25
+ winipedia_utils/iterating/iterate.py,sha256=TtXkKnnzteSCYnYO_rqGzi3OwaxQ0-mRP5G-8syJIXo,3385
26
26
  winipedia_utils/logging/__init__.py,sha256=AMt1LwA_E7hexYjMpGzUempoyDdAF-dowWvq59wC5aM,51
27
27
  winipedia_utils/logging/ansi.py,sha256=7Z-FITaUn5B1ZE0OUVARjNzuMui1V36iu4YTjlD6QfI,101
28
28
  winipedia_utils/logging/config.py,sha256=sdC3GHMkJqlY-WwIsOMeTcy1bihthWV2LbvxLt9dhc4,2895
29
29
  winipedia_utils/logging/logger.py,sha256=NluvfRpY4SfJi6URjfV52l3cxeUYFMeCAJULK_PQXpQ,701
30
30
  winipedia_utils/modules/__init__.py,sha256=e3CFaC3FhK4ibknFOv1bqOZxA7XeVwmLqWX7oajUm78,51
31
- winipedia_utils/modules/class_.py,sha256=8-CS_x3mPaed39Cvo93ZnOQGLU2tndqxbIUlkQ_FAIM,3577
32
- winipedia_utils/modules/function.py,sha256=9evE45wtUaEWQ23rZ0HqFZ0nZw5JTpse6ebcWJAQYRI,2827
31
+ winipedia_utils/modules/class_.py,sha256=908MgZZzcJBPmlVmMPZCFssHnRzbQYOQlrF3GQhpWm4,5411
32
+ winipedia_utils/modules/function.py,sha256=cjD6dXkZzhtCClUs4uiOLaDOURVASp64iwTwXmI3ICo,3217
33
33
  winipedia_utils/modules/module.py,sha256=B2BLh-GVapSCBWc8Hx1U8jEN-yWVuGJls8LThVp8BTs,13041
34
- winipedia_utils/modules/package.py,sha256=S-pysPGIXW4JCGPhgO7Z1iU0gZb-_23opodb-zQLq5E,13058
34
+ winipedia_utils/modules/package.py,sha256=M_QX7pYNXVcDLaPK5vQ1crV5LQdiCSFl3-dKSpFsIkc,13442
35
35
  winipedia_utils/oop/__init__.py,sha256=wGjsVwLbTVEQWOfDJvN9nlvC-3NmAi8Doc2xIrm6e78,47
36
36
  winipedia_utils/oop/mixins/__init__.py,sha256=PDK-cJcdRUfDUCz36qQ5pmMW07G133WtN49OpmILGNI,54
37
37
  winipedia_utils/oop/mixins/meta.py,sha256=0G4CzzzCoeP1Eas3vWe-uxvB5n5ncyw7Wc-sI9zmEBc,11150
@@ -40,9 +40,9 @@ winipedia_utils/os/__init__.py,sha256=cBRq8hWhaWvYeC3cSBYL6Y70kM9COQWHj8vVxxSadI
40
40
  winipedia_utils/os/os.py,sha256=K_5FD1sC1h5aSdtqXAG0uq90sSweLYLkgkRPQS0Jfxg,1768
41
41
  winipedia_utils/projects/__init__.py,sha256=_iYHzUcTPmutpsExPDcMF9OQDgnz-kTSuWens9iP9bI,52
42
42
  winipedia_utils/projects/poetry/__init__.py,sha256=tbvV3wYd3H39hjjlKbF84Irj4hYgv1A7KWyXdCQzFro,59
43
- winipedia_utils/projects/poetry/config.py,sha256=8QTsTh3kgmINufELAxnIIM61mYk3AfPlb2EzVAreavk,3724
44
- winipedia_utils/projects/poetry/poetry.py,sha256=UiLTnmqzfeZV79ffHEnwHRNEI-bi6tMkdnmhZH5GrTg,934
45
- winipedia_utils/projects/project.py,sha256=oRIzF2HT1mkgnOhbgfi9_Bb2Ga3oNi_Ru7a1rbySvyQ,1539
43
+ winipedia_utils/projects/poetry/config.py,sha256=DqUtsUCWO5i8EUzxi_Nw0yNtHy00LTx_-bQRaJrthnc,4492
44
+ winipedia_utils/projects/poetry/poetry.py,sha256=ZPWUYqh0vvDFDtwNHPPIFsB6SRTDwhGfrcVTer-4zDE,609
45
+ winipedia_utils/projects/project.py,sha256=rXNjVCyEMAnNQcr-gCulNjrB7Lbeur66UjdkR63noiQ,1299
46
46
  winipedia_utils/py.typed,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
47
47
  winipedia_utils/resources/__init__.py,sha256=XHsbmjiaGom-KX-S3leCY9cJD3aP9p_0X6xYMcdkHBU,23
48
48
  winipedia_utils/resources/svgs/__init__.py,sha256=XHsbmjiaGom-KX-S3leCY9cJD3aP9p_0X6xYMcdkHBU,23
@@ -58,28 +58,31 @@ winipedia_utils/resources/svgs/svg.py,sha256=uzlp4Rhnenvkq_YI409ZvR7JMTZmB5JpKsD
58
58
  winipedia_utils/security/__init__.py,sha256=HmGXOCROqIGHlBs2bEWRMkEX3rlXNsnA9Tef58AlCo4,52
59
59
  winipedia_utils/security/cryptography.py,sha256=5LMat3-9nDW2cQBr_dU7MFRdgbiK53zQqHyacs-Jq-s,793
60
60
  winipedia_utils/security/keyring.py,sha256=6kKgSTz1G80F6XeZ3Lskxdl2N6JgUH8gJdFYcGJuysU,2273
61
- winipedia_utils/setup.py,sha256=0EVxOYpUVo8hx9JlvAZKrZaix1wgbAB4Jnqm89CpC0U,1815
61
+ winipedia_utils/setup.py,sha256=hQxbSHsxm61bnCnlOB5NzvZL2w0yCueihacU9oXeQZ4,1131
62
62
  winipedia_utils/testing/__init__.py,sha256=kXhB5xw02ec5xpcW_KV--9CBKdyCjnuR-NZzAJ5tq0g,51
63
63
  winipedia_utils/testing/assertions.py,sha256=VoksKQKEXppY9e8Bk8d_WMAjRX5mDE8c5blBwzK6nWo,1494
64
+ winipedia_utils/testing/config.py,sha256=YByMgzMra2inHqpuuVSRWmchiSrSyer4uSIrcrryqEs,2531
64
65
  winipedia_utils/testing/convention.py,sha256=7vurpqS--awhN_FLSOviSKENGuFyY9Ejr1NKRm0MPsg,4833
65
- winipedia_utils/testing/create_tests.py,sha256=bBVh2zfuGVgtJpPEc9JgvK3ol7sNz0_hZqh1_oY0ckw,9884
66
+ winipedia_utils/testing/create_tests.py,sha256=KJL23BtsnDsujUa9fwBA5AHo85vy61oxgRPSTztJT7k,9347
66
67
  winipedia_utils/testing/fixtures.py,sha256=G8QIrZXndtud0uOk6PY3f8IIDoyX_ronogjeLAYGjrM,1033
68
+ winipedia_utils/testing/skip.py,sha256=5AdF7naPkBi4B1AF6b1plJF3Wmb-BzGBvUORbHZTo8c,236
67
69
  winipedia_utils/testing/tests/__init__.py,sha256=kL-1O6lAO5j4JPOqPdi3dHdbOQ_UXcgPFppj82HhrRU,57
68
70
  winipedia_utils/testing/tests/base/__init__.py,sha256=dBH1yfONmqUC49zshS6BJ4ZgEcw7iFGoFCqRmU7Vhrw,62
69
71
  winipedia_utils/testing/tests/base/fixtures/__init__.py,sha256=Bs_HSqx8DcMb8yU1vNbgIEszOMNVnIW02C4tmDdHB8E,71
70
72
  winipedia_utils/testing/tests/base/fixtures/fixture.py,sha256=KfCYXDXT-wfeuf9uiUugB4ZEWXBPuhQ-bRZ-pb99pCg,181
71
73
  winipedia_utils/testing/tests/base/fixtures/scopes/__init__.py,sha256=-n_BLhTVC1oH7qVL0JYXm82zqFPgobQCojO-PirrKo0,78
72
- winipedia_utils/testing/tests/base/fixtures/scopes/class_.py,sha256=zesyJxerjI3qDtIUuaEaXp2IBbmsDJYi07JQqK9yUsk,1100
74
+ winipedia_utils/testing/tests/base/fixtures/scopes/class_.py,sha256=LqOp441yP4N4C-TLTP__QR1El5rp3lzgQMJLXF_HKYc,1099
73
75
  winipedia_utils/testing/tests/base/fixtures/scopes/function.py,sha256=l1zCCiTkXUSZp0n9QOyejhfszFJiMH88bhGMwNY5r8A,302
74
- winipedia_utils/testing/tests/base/fixtures/scopes/module.py,sha256=jzr4D6x82xvbCt8x7Han6pDOg27kEiPZf-oPfx2jHN0,1195
76
+ winipedia_utils/testing/tests/base/fixtures/scopes/module.py,sha256=iCMBgHYC33ErMViscyIhns0nVx7LIvA-GZuZ-YF0gNc,1347
75
77
  winipedia_utils/testing/tests/base/fixtures/scopes/package.py,sha256=pR3so6QPymIRM4PJTODrlBKI-yQnZ2P78BsiyTPaF8o,302
76
- winipedia_utils/testing/tests/base/fixtures/scopes/session.py,sha256=-LXWgwLQ2j3gW-FUB3r9JBZmdVkfce1D2IitKIBcKxg,10889
78
+ winipedia_utils/testing/tests/base/fixtures/scopes/session.py,sha256=328OttLT2uQDNAHRQKClaT8K4q6FCzR2x4gkTqHdl2w,6104
77
79
  winipedia_utils/testing/tests/base/utils/__init__.py,sha256=mC-8dCkp8xarqkQu2QQLrPjHi6Ww9hcixWdHeQHWeRs,68
78
- winipedia_utils/testing/tests/base/utils/utils.py,sha256=3c_SNbzjkQypzsc-BONo5C1-Vb7pgbRl6uR6DmTGJRg,3456
80
+ winipedia_utils/testing/tests/base/utils/utils.py,sha256=xHea06Om2WeozoZ_pAmiJnU4cONyBuFf7pu3DBfjeWw,2173
79
81
  winipedia_utils/testing/tests/conftest.py,sha256=BLgUJtLecOwuEsIyJ__0buqovd5AhiGvbMNk8CHgSQs,888
80
82
  winipedia_utils/text/__init__.py,sha256=j2bwtK6kyeHI6SnoBjpRju0C1W2n2paXBDlNjNtaUxA,48
83
+ winipedia_utils/text/config.py,sha256=KTVkcfeExE3daLFYJg_UMsDAFz02DXG5jVtrtlUxnkE,4336
81
84
  winipedia_utils/text/string.py,sha256=yXmwOab5hXyVQG1NwlWDpy2prj0U7Vb2F5HKLT2Y77Q,3382
82
- winipedia_utils-0.2.58.dist-info/METADATA,sha256=EFpCXEI_nZ5rQGcogmHYG-0_xtVg4B7oGnk4IZNN0Ow,21020
83
- winipedia_utils-0.2.58.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
84
- winipedia_utils-0.2.58.dist-info/licenses/LICENSE,sha256=o316mE2gGzd__JT69p7S_zlOmKiHh8YjpImCCcWyTvM,1066
85
- winipedia_utils-0.2.58.dist-info/RECORD,,
85
+ winipedia_utils-0.3.7.dist-info/METADATA,sha256=7Phz99AWcQGAXevZmrQ5telH_67PHmPulhpLnWaUO6g,9952
86
+ winipedia_utils-0.3.7.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
87
+ winipedia_utils-0.3.7.dist-info/licenses/LICENSE,sha256=o316mE2gGzd__JT69p7S_zlOmKiHh8YjpImCCcWyTvM,1066
88
+ winipedia_utils-0.3.7.dist-info/RECORD,,
winipedia_utils/consts.py DELETED
@@ -1,21 +0,0 @@
1
- """Constants used throughout the winipedia_utils package.
2
-
3
- This module contains package-wide constants that are used by various
4
- modules within the package. These constants define core configuration
5
- values and identifiers for the package.
6
- """
7
-
8
- PACKAGE_NAME = "winipedia_utils"
9
-
10
- _DEV_DEPENDENCIES = [
11
- "ruff",
12
- "pre-commit",
13
- "mypy",
14
- "pytest",
15
- "bandit",
16
- "types-setuptools",
17
- "types-tqdm",
18
- "types-defusedxml",
19
- "types-pyyaml",
20
- "pytest-mock",
21
- ]