winiutils 2.3.12__py3-none-any.whl → 2.3.45__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.
- winiutils/dev/cli/shared_subcommands.py +8 -0
- winiutils/dev/management/__init__.py +5 -0
- winiutils/src/data/structures/text/{string.py → string_.py} +1 -1
- winiutils/src/oop/mixins/meta.py +1 -1
- winiutils/src/security/keyring.py +1 -1
- {winiutils-2.3.12.dist-info → winiutils-2.3.45.dist-info}/METADATA +37 -14
- {winiutils-2.3.12.dist-info → winiutils-2.3.45.dist-info}/RECORD +10 -8
- {winiutils-2.3.12.dist-info → winiutils-2.3.45.dist-info}/WHEEL +1 -1
- {winiutils-2.3.12.dist-info → winiutils-2.3.45.dist-info}/entry_points.txt +0 -0
- {winiutils-2.3.12.dist-info → winiutils-2.3.45.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"""Shared commands for the CLI.
|
|
2
|
+
|
|
3
|
+
This module provides shared CLI commands that can be used by multiple
|
|
4
|
+
packages in a multi-package architecture. These commands are automatically
|
|
5
|
+
discovered and added to the CLI by pyrig.
|
|
6
|
+
Example is version command that is available in all packages.
|
|
7
|
+
uv run my-awesome-project version will return my-awesome-project version 0.1.0
|
|
8
|
+
"""
|
|
@@ -7,7 +7,7 @@ This module provides utility functions for common string operations including:
|
|
|
7
7
|
- Deterministic hash generation
|
|
8
8
|
|
|
9
9
|
Example:
|
|
10
|
-
>>> from winiutils.src.data.structures.text.
|
|
10
|
+
>>> from winiutils.src.data.structures.text.string_ import (
|
|
11
11
|
... value_to_truncated_string,
|
|
12
12
|
... get_reusable_hash,
|
|
13
13
|
... )
|
winiutils/src/oop/mixins/meta.py
CHANGED
|
@@ -24,7 +24,7 @@ from typing import Any
|
|
|
24
24
|
|
|
25
25
|
from pyrig.src.modules.function import is_func
|
|
26
26
|
|
|
27
|
-
from winiutils.src.data.structures.text.
|
|
27
|
+
from winiutils.src.data.structures.text.string_ import value_to_truncated_string
|
|
28
28
|
|
|
29
29
|
logger = logging.getLogger(__name__)
|
|
30
30
|
|
|
@@ -22,7 +22,7 @@ from collections.abc import Callable
|
|
|
22
22
|
import keyring
|
|
23
23
|
from cryptography.fernet import Fernet
|
|
24
24
|
from cryptography.hazmat.primitives.ciphers.aead import AESGCM
|
|
25
|
-
from pyrig.src.git
|
|
25
|
+
from pyrig.src.git import running_in_github_actions
|
|
26
26
|
|
|
27
27
|
if running_in_github_actions():
|
|
28
28
|
from keyrings.alt.file import PlaintextKeyring # type: ignore[import-untyped]
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: winiutils
|
|
3
|
-
Version: 2.3.
|
|
3
|
+
Version: 2.3.45
|
|
4
4
|
Summary: A utility library for Python development
|
|
5
|
+
Keywords:
|
|
5
6
|
Author: Winipedia
|
|
6
7
|
License-Expression: MIT
|
|
7
8
|
License-File: LICENSE
|
|
8
9
|
Classifier: Programming Language :: Python :: 3.12
|
|
9
10
|
Classifier: Programming Language :: Python :: 3.13
|
|
10
11
|
Classifier: Programming Language :: Python :: 3.14
|
|
12
|
+
Classifier: Operating System :: OS Independent
|
|
13
|
+
Classifier: Typing :: Typed
|
|
11
14
|
Requires-Dist: cryptography
|
|
12
15
|
Requires-Dist: defusedxml
|
|
13
16
|
Requires-Dist: keyring
|
|
@@ -15,7 +18,13 @@ Requires-Dist: keyrings-alt
|
|
|
15
18
|
Requires-Dist: polars
|
|
16
19
|
Requires-Dist: pyrig
|
|
17
20
|
Requires-Dist: tqdm
|
|
21
|
+
Maintainer: Winipedia
|
|
18
22
|
Requires-Python: >=3.12
|
|
23
|
+
Project-URL: Changelog, https://github.com/Winipedia/winiutils/releases
|
|
24
|
+
Project-URL: Documentation, https://Winipedia.github.io/winiutils
|
|
25
|
+
Project-URL: Homepage, https://github.com/Winipedia/winiutils
|
|
26
|
+
Project-URL: Issues, https://github.com/Winipedia/winiutils/issues
|
|
27
|
+
Project-URL: Source, https://github.com/Winipedia/winiutils
|
|
19
28
|
Description-Content-Type: text/markdown
|
|
20
29
|
|
|
21
30
|
# winiutils
|
|
@@ -23,21 +32,25 @@ Description-Content-Type: text/markdown
|
|
|
23
32
|
<!-- tooling -->
|
|
24
33
|
[](https://github.com/Winipedia/pyrig)
|
|
25
34
|
[](https://github.com/astral-sh/uv)
|
|
35
|
+
[](https://podman.io/)
|
|
26
36
|
[](https://pre-commit.com/)
|
|
37
|
+
[](https://www.mkdocs.org/)
|
|
27
38
|
<!-- code-quality -->
|
|
28
39
|
[](https://github.com/astral-sh/ruff)
|
|
29
|
-
[](https://github.com/astral-sh/ty)
|
|
40
|
+
[](https://github.com/astral-sh/ty)
|
|
30
41
|
[](https://github.com/PyCQA/bandit)
|
|
31
42
|
[](https://pytest.org/)
|
|
32
43
|
[](https://codecov.io/gh/Winipedia/winiutils)
|
|
44
|
+
[](https://github.com/rvben/rumdl)
|
|
33
45
|
<!-- package-info -->
|
|
34
|
-
[](https://pypi.org/project/winiutils
|
|
46
|
+
[](https://pypi.org/project/winiutils)
|
|
35
47
|
[](https://www.python.org/)
|
|
36
48
|
[](https://github.com/Winipedia/winiutils/blob/main/LICENSE)
|
|
37
49
|
<!-- ci/cd -->
|
|
38
50
|
[](https://github.com/Winipedia/winiutils/actions/workflows/health_check.yaml)
|
|
39
51
|
[](https://github.com/Winipedia/winiutils/actions/workflows/release.yaml)
|
|
40
|
-
|
|
52
|
+
<!-- documentation -->
|
|
53
|
+
[](https://Winipedia.github.io/winiutils)
|
|
41
54
|
|
|
42
55
|
---
|
|
43
56
|
|
|
@@ -45,7 +58,6 @@ Description-Content-Type: text/markdown
|
|
|
45
58
|
|
|
46
59
|
---
|
|
47
60
|
|
|
48
|
-
|
|
49
61
|
## Table of Contents
|
|
50
62
|
|
|
51
63
|
- [Features](#features)
|
|
@@ -60,9 +72,13 @@ Description-Content-Type: text/markdown
|
|
|
60
72
|
|
|
61
73
|
## Features
|
|
62
74
|
|
|
63
|
-
- **DataFrame Cleaning Pipeline**
|
|
64
|
-
|
|
65
|
-
- **
|
|
75
|
+
- **DataFrame Cleaning Pipeline**
|
|
76
|
+
Extensible Polars DataFrame cleaning with an 8-step pipeline
|
|
77
|
+
- **Concurrent Processing**
|
|
78
|
+
Unified multiprocessing and multithreading
|
|
79
|
+
with automatic resource optimization
|
|
80
|
+
- **OOP Utilities**
|
|
81
|
+
Metaclasses and mixins for automatic method logging and instrumentation
|
|
66
82
|
- **Security Tools** — OS keyring integration and AES-GCM encryption utilities
|
|
67
83
|
- **Type Safety** — Full type hints with strict mypy compliance
|
|
68
84
|
- **Production Ready** — Comprehensive test coverage and logging integration
|
|
@@ -114,7 +130,9 @@ class UserDataCleaner(CleaningDF):
|
|
|
114
130
|
|
|
115
131
|
@classmethod
|
|
116
132
|
def get_col_dtype_map(cls):
|
|
117
|
-
return {
|
|
133
|
+
return {
|
|
134
|
+
cls.USER_ID: pl.Int64, cls.EMAIL: pl.Utf8, cls.SCORE: pl.Float64
|
|
135
|
+
}
|
|
118
136
|
|
|
119
137
|
# ... implement other abstract methods
|
|
120
138
|
|
|
@@ -170,7 +188,10 @@ class MyService(ABCLoggingMixin):
|
|
|
170
188
|
|
|
171
189
|
```python
|
|
172
190
|
from winiutils.src.security.keyring import get_or_create_aes_gcm
|
|
173
|
-
from winiutils.src.security.cryptography import
|
|
191
|
+
from winiutils.src.security.cryptography import (
|
|
192
|
+
encrypt_with_aes_gcm,
|
|
193
|
+
decrypt_with_aes_gcm
|
|
194
|
+
)
|
|
174
195
|
|
|
175
196
|
# Get or create encryption key (stored in OS keyring)
|
|
176
197
|
aes_gcm, key = get_or_create_aes_gcm("my_app", "user@example.com")
|
|
@@ -186,7 +207,8 @@ decrypted = decrypt_with_aes_gcm(aes_gcm, encrypted)
|
|
|
186
207
|
|
|
187
208
|
Full documentation is available in the [docs](./docs/) folder:
|
|
188
209
|
|
|
189
|
-
- [**Data Processing**](./docs/data.md)
|
|
210
|
+
- [**Data Processing**](./docs/data.md)
|
|
211
|
+
DataFrame cleaning pipeline and data structures
|
|
190
212
|
- [**Iterating & Concurrency**](./docs/iterating.md) — Parallel processing utilities
|
|
191
213
|
- [**OOP Utilities**](./docs/oop.md) — Metaclasses and mixins
|
|
192
214
|
- [**Security**](./docs/security.md) — Encryption and keyring integration
|
|
@@ -244,7 +266,7 @@ uv run pre-commit run --all-files
|
|
|
244
266
|
|
|
245
267
|
## Project Structure
|
|
246
268
|
|
|
247
|
-
```
|
|
269
|
+
```text
|
|
248
270
|
winiutils/
|
|
249
271
|
├── src/ # Main source code
|
|
250
272
|
│ ├── data/ # Data processing
|
|
@@ -268,7 +290,8 @@ winiutils/
|
|
|
268
290
|
|
|
269
291
|
## License
|
|
270
292
|
|
|
271
|
-
This project is licensed under the MIT License
|
|
293
|
+
This project is licensed under the MIT License.
|
|
294
|
+
See the [LICENSE](LICENSE) file for details.
|
|
272
295
|
|
|
273
296
|
---
|
|
274
297
|
|
|
@@ -280,4 +303,4 @@ Contributions are welcome! Please ensure:
|
|
|
280
303
|
2. Code passes linting (`uv run ruff check .`)
|
|
281
304
|
3. Types are correct (`uv run mypy .`)
|
|
282
305
|
4. New features include tests
|
|
283
|
-
5. Documentation is updated for API changes
|
|
306
|
+
5. Documentation is updated for API changes
|
|
@@ -2,8 +2,10 @@ winiutils/__init__.py,sha256=vOWZ8n-YemVIzDLd8eWw1HVPGH3jxuT6VtDKHbmxk_A,43
|
|
|
2
2
|
winiutils/dev/__init__.py,sha256=XHsbmjiaGom-KX-S3leCY9cJD3aP9p_0X6xYMcdkHBU,23
|
|
3
3
|
winiutils/dev/builders/__init__.py,sha256=XHsbmjiaGom-KX-S3leCY9cJD3aP9p_0X6xYMcdkHBU,23
|
|
4
4
|
winiutils/dev/cli/__init__.py,sha256=XHsbmjiaGom-KX-S3leCY9cJD3aP9p_0X6xYMcdkHBU,23
|
|
5
|
+
winiutils/dev/cli/shared_subcommands.py,sha256=3sJl1DD-DVRok2BXFWjncF_NLnMZL_NLqMWozmQm390,365
|
|
5
6
|
winiutils/dev/cli/subcommands.py,sha256=iurWZwJwEKAfGpfjkn1YOhnRbIruCB4ouE-8R_Lh3JY,228
|
|
6
7
|
winiutils/dev/configs/__init__.py,sha256=XHsbmjiaGom-KX-S3leCY9cJD3aP9p_0X6xYMcdkHBU,23
|
|
8
|
+
winiutils/dev/management/__init__.py,sha256=dZm5jWpCTZl7I44Ykr6S1_yU4ATNG5evtUL3DmGjCLs,193
|
|
7
9
|
winiutils/dev/tests/__init__.py,sha256=XHsbmjiaGom-KX-S3leCY9cJD3aP9p_0X6xYMcdkHBU,23
|
|
8
10
|
winiutils/dev/tests/fixtures/__init__.py,sha256=XHsbmjiaGom-KX-S3leCY9cJD3aP9p_0X6xYMcdkHBU,23
|
|
9
11
|
winiutils/dev/tests/fixtures/fixtures.py,sha256=oHJSjLS-oxS9r786S-wCCX5SQIbLt1rl2RjSLSW3S0A,937
|
|
@@ -17,7 +19,7 @@ winiutils/src/data/dataframe/cleaning.py,sha256=dfecVWVmcjw0LSxFuGmvDAHiv3wMjncu
|
|
|
17
19
|
winiutils/src/data/structures/__init__.py,sha256=zRTd-UHZLRH4LPSnQgKxNz2jcDT8Ah7x0gYfHxvKJEE,220
|
|
18
20
|
winiutils/src/data/structures/dicts.py,sha256=8R6Jw47G-Z8ad63Hsj0UUaaH6eM-tCur36zKU5urYKY,1190
|
|
19
21
|
winiutils/src/data/structures/text/__init__.py,sha256=8wUJOGa1-JLmdg0qaQzcuBOh99G2cyZvxO-T4qi9Ef0,195
|
|
20
|
-
winiutils/src/data/structures/text/
|
|
22
|
+
winiutils/src/data/structures/text/string_.py,sha256=9DZ2XKzxTQjlegoHf0hHA6lUQz2h9338IjyfDE73dPQ,5380
|
|
21
23
|
winiutils/src/iterating/__init__.py,sha256=25RIhD65SzjIkqRquxNHL8GMd3Cuvsw5EtG1ShYC64o,273
|
|
22
24
|
winiutils/src/iterating/concurrent/__init__.py,sha256=ymePluCroEVm16NJV-r7tCUCWUZcp7jvfKYOlW7AWgM,373
|
|
23
25
|
winiutils/src/iterating/concurrent/concurrent.py,sha256=EBvRuNG1XKubahZ405zX_j9c-iwwnS679GM03IP_cCQ,10717
|
|
@@ -26,13 +28,13 @@ winiutils/src/iterating/concurrent/multithreading.py,sha256=U3RN0vBdrbc8P059rP22
|
|
|
26
28
|
winiutils/src/iterating/iterate.py,sha256=CQP8YfkYywAGFVlkib_KZtgTy57bt0oC1KKwdDlH4vU,1554
|
|
27
29
|
winiutils/src/oop/__init__.py,sha256=HaR2nSm3P0Qj5iu9_8AtjDxeQS3fW17pZpgf2Yxyz80,232
|
|
28
30
|
winiutils/src/oop/mixins/__init__.py,sha256=kjKziiB-AKThhy7uHqKznfh7otIqW_a3z1bf22VVP84,270
|
|
29
|
-
winiutils/src/oop/mixins/meta.py,sha256=
|
|
31
|
+
winiutils/src/oop/mixins/meta.py,sha256=UTC-z9KJhR_PKRbPLKfgmHxpiS0t-u4nu0d8lidx4l0,7374
|
|
30
32
|
winiutils/src/oop/mixins/mixin.py,sha256=1DBFhyHWtuYR4pAE8t85nfx9McxcM2YvwQKCTSFugOY,2109
|
|
31
33
|
winiutils/src/security/__init__.py,sha256=6J6nWfzT2Xe2Yy7HHgj6dR2g9AYrqY77qL4aa_fzb94,250
|
|
32
34
|
winiutils/src/security/cryptography.py,sha256=Oz-5LK4p43kjnriZGJzeUxfZmKyxN5CnbxVrSwsk8lQ,3424
|
|
33
|
-
winiutils/src/security/keyring.py,sha256=
|
|
34
|
-
winiutils-2.3.
|
|
35
|
-
winiutils-2.3.
|
|
36
|
-
winiutils-2.3.
|
|
37
|
-
winiutils-2.3.
|
|
38
|
-
winiutils-2.3.
|
|
35
|
+
winiutils/src/security/keyring.py,sha256=BbNjcGPsNalSm0aTXGWZ5EMb08F4I8jiCdozhStm1ko,6060
|
|
36
|
+
winiutils-2.3.45.dist-info/licenses/LICENSE,sha256=o316mE2gGzd__JT69p7S_zlOmKiHh8YjpImCCcWyTvM,1066
|
|
37
|
+
winiutils-2.3.45.dist-info/WHEEL,sha256=KSLUh82mDPEPk0Bx0ScXlWL64bc8KmzIPNcpQZFV-6E,79
|
|
38
|
+
winiutils-2.3.45.dist-info/entry_points.txt,sha256=oH6bkIotdZXXBGdxsd3xv_7LBil4P0Ph4-L6PFySkTw,95
|
|
39
|
+
winiutils-2.3.45.dist-info/METADATA,sha256=4ZBm-XM54kQ8O_AwwuCKHwiUoYNhv8-Ww9gSM4q_2ME,9601
|
|
40
|
+
winiutils-2.3.45.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|