winipedia-utils 0.1.63__py3-none-any.whl → 0.2.0__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 (91) hide show
  1. winipedia_utils/concurrent/concurrent.py +245 -242
  2. winipedia_utils/concurrent/multiprocessing.py +130 -115
  3. winipedia_utils/concurrent/multithreading.py +93 -93
  4. winipedia_utils/consts.py +23 -23
  5. winipedia_utils/data/__init__.py +1 -1
  6. winipedia_utils/data/dataframe/__init__.py +1 -0
  7. winipedia_utils/data/dataframe/cleaning.py +378 -0
  8. winipedia_utils/data/structures/__init__.py +1 -0
  9. winipedia_utils/data/structures/dicts.py +16 -0
  10. winipedia_utils/django/__init__.py +24 -24
  11. winipedia_utils/django/bulk.py +538 -538
  12. winipedia_utils/django/command.py +334 -334
  13. winipedia_utils/django/database.py +289 -289
  14. winipedia_utils/git/__init__.py +1 -1
  15. winipedia_utils/git/gitignore/__init__.py +1 -1
  16. winipedia_utils/git/gitignore/gitignore.py +136 -136
  17. winipedia_utils/git/pre_commit/__init__.py +1 -1
  18. winipedia_utils/git/pre_commit/config.py +70 -70
  19. winipedia_utils/git/pre_commit/hooks.py +109 -109
  20. winipedia_utils/git/pre_commit/run_hooks.py +49 -49
  21. winipedia_utils/iterating/__init__.py +1 -1
  22. winipedia_utils/iterating/iterate.py +29 -29
  23. winipedia_utils/logging/ansi.py +6 -6
  24. winipedia_utils/logging/config.py +64 -64
  25. winipedia_utils/logging/logger.py +26 -26
  26. winipedia_utils/modules/class_.py +119 -119
  27. winipedia_utils/modules/function.py +101 -103
  28. winipedia_utils/modules/module.py +379 -379
  29. winipedia_utils/modules/package.py +390 -390
  30. winipedia_utils/oop/mixins/meta.py +333 -331
  31. winipedia_utils/oop/mixins/mixin.py +37 -37
  32. winipedia_utils/os/__init__.py +1 -1
  33. winipedia_utils/os/os.py +63 -63
  34. winipedia_utils/projects/__init__.py +1 -1
  35. winipedia_utils/projects/poetry/__init__.py +1 -1
  36. winipedia_utils/projects/poetry/config.py +91 -91
  37. winipedia_utils/projects/poetry/poetry.py +31 -31
  38. winipedia_utils/projects/project.py +48 -48
  39. winipedia_utils/pyside/__init__.py +1 -1
  40. winipedia_utils/pyside/core/__init__.py +1 -1
  41. winipedia_utils/pyside/core/py_qiodevice.py +476 -476
  42. winipedia_utils/pyside/ui/__init__.py +1 -1
  43. winipedia_utils/pyside/ui/base/__init__.py +1 -1
  44. winipedia_utils/pyside/ui/base/base.py +180 -180
  45. winipedia_utils/pyside/ui/pages/__init__.py +1 -1
  46. winipedia_utils/pyside/ui/pages/base/__init__.py +1 -1
  47. winipedia_utils/pyside/ui/pages/base/base.py +92 -92
  48. winipedia_utils/pyside/ui/pages/browser.py +26 -26
  49. winipedia_utils/pyside/ui/pages/player.py +85 -85
  50. winipedia_utils/pyside/ui/widgets/__init__.py +1 -1
  51. winipedia_utils/pyside/ui/widgets/browser.py +243 -243
  52. winipedia_utils/pyside/ui/widgets/clickable_widget.py +57 -57
  53. winipedia_utils/pyside/ui/widgets/media_player.py +430 -430
  54. winipedia_utils/pyside/ui/widgets/notification.py +78 -78
  55. winipedia_utils/pyside/ui/windows/__init__.py +1 -1
  56. winipedia_utils/pyside/ui/windows/base/__init__.py +1 -1
  57. winipedia_utils/pyside/ui/windows/base/base.py +49 -49
  58. winipedia_utils/resources/__init__.py +1 -1
  59. winipedia_utils/resources/svgs/__init__.py +1 -1
  60. winipedia_utils/resources/svgs/download_arrow.svg +2 -2
  61. winipedia_utils/resources/svgs/exit_fullscreen_icon.svg +5 -5
  62. winipedia_utils/resources/svgs/fullscreen_icon.svg +2 -2
  63. winipedia_utils/resources/svgs/menu_icon.svg +3 -3
  64. winipedia_utils/resources/svgs/pause_icon.svg +3 -3
  65. winipedia_utils/resources/svgs/play_icon.svg +16 -16
  66. winipedia_utils/resources/svgs/plus_icon.svg +23 -23
  67. winipedia_utils/resources/svgs/svg.py +15 -15
  68. winipedia_utils/security/__init__.py +1 -1
  69. winipedia_utils/security/cryptography.py +29 -29
  70. winipedia_utils/security/keyring.py +70 -70
  71. winipedia_utils/setup.py +47 -47
  72. winipedia_utils/testing/assertions.py +23 -23
  73. winipedia_utils/testing/convention.py +177 -177
  74. winipedia_utils/testing/create_tests.py +291 -291
  75. winipedia_utils/testing/fixtures.py +28 -28
  76. winipedia_utils/testing/tests/base/fixtures/__init__.py +1 -1
  77. winipedia_utils/testing/tests/base/fixtures/fixture.py +6 -6
  78. winipedia_utils/testing/tests/base/fixtures/scopes/class_.py +33 -33
  79. winipedia_utils/testing/tests/base/fixtures/scopes/function.py +7 -7
  80. winipedia_utils/testing/tests/base/fixtures/scopes/module.py +31 -31
  81. winipedia_utils/testing/tests/base/fixtures/scopes/package.py +7 -7
  82. winipedia_utils/testing/tests/base/fixtures/scopes/session.py +312 -312
  83. winipedia_utils/testing/tests/base/utils/utils.py +82 -82
  84. winipedia_utils/testing/tests/conftest.py +32 -32
  85. winipedia_utils/text/string.py +126 -126
  86. {winipedia_utils-0.1.63.dist-info → winipedia_utils-0.2.0.dist-info}/METADATA +5 -4
  87. winipedia_utils-0.2.0.dist-info/RECORD +103 -0
  88. {winipedia_utils-0.1.63.dist-info → winipedia_utils-0.2.0.dist-info}/WHEEL +1 -1
  89. {winipedia_utils-0.1.63.dist-info → winipedia_utils-0.2.0.dist-info/licenses}/LICENSE +21 -21
  90. winipedia_utils/data/dataframe.py +0 -7
  91. winipedia_utils-0.1.63.dist-info/RECORD +0 -100
@@ -1,103 +1,101 @@
1
- """Function utilities for introspection and manipulation.
2
-
3
- This module provides utility functions for working with Python functions,
4
- including extracting functions from modules and manipulating function objects.
5
- These utilities are particularly useful for reflection, testing, and
6
- dynamic code generation.
7
- """
8
-
9
- import inspect
10
- from collections.abc import Callable
11
- from importlib import import_module
12
- from types import ModuleType
13
- from typing import Any
14
-
15
-
16
- def is_func_or_method(obj: Any) -> bool:
17
- """Return True if *obj* is a function or method.
18
-
19
- This function checks if the given object is a function or method,
20
- including those defined in a class body.
21
-
22
- Args:
23
- obj: The object to check
24
-
25
- Returns:
26
- bool: True if the object is a function or method, False otherwise
27
-
28
- """
29
- return inspect.isfunction(obj) or inspect.ismethod(obj)
30
-
31
-
32
- def is_func(obj: Any) -> bool:
33
- """Return True if *obj* is a 'method-like' attribute as it appears in a class body.
34
-
35
- Accepts:
36
-
37
-
38
- • plain functions (instance methods)
39
- • staticmethod / classmethod descriptors
40
- • property descriptors (getter counts as method)
41
- • decorated functions that keep a __wrapped__ chain
42
-
43
- Returns:
44
- bool: True if the object is a method-like attribute, False otherwise
45
-
46
- """
47
- # plain function
48
-
49
- if is_func_or_method(obj):
50
- return True
51
-
52
- if isinstance(obj, (staticmethod, classmethod, property)):
53
- return True
54
-
55
- # unwrap any wrappers (@functools.wraps) and retest
56
-
57
- unwrapped = inspect.unwrap(obj)
58
-
59
- return is_func_or_method(unwrapped)
60
-
61
-
62
- def get_all_functions_from_module(module: ModuleType | str) -> list[Callable[..., Any]]:
63
- """Get all functions defined in a module.
64
-
65
- Retrieves all function objects that are defined directly in the specified module,
66
- excluding imported functions.
67
- The functions are sorted by their line number in the module.
68
-
69
- Args:
70
- module: The module to extract functions from
71
-
72
- Returns:
73
- A list of callable functions defined in the module
74
-
75
- """
76
- from winipedia_utils.modules.module import get_def_line, get_module_of_obj
77
-
78
- if isinstance(module, str):
79
- module = import_module(module)
80
- funcs = [
81
- func
82
- for _name, func in inspect.getmembers(module, is_func)
83
- if get_module_of_obj(func).__name__ == module.__name__
84
- ]
85
- # sort by definition order
86
- return sorted(funcs, key=get_def_line)
87
-
88
-
89
- def unwrap_method(method: Any) -> Callable[..., Any] | Any:
90
- """Unwrap a method to its underlying function.
91
-
92
- Args:
93
- method: The method to unwrap
94
-
95
- Returns:
96
- The underlying function of the method
97
-
98
- """
99
- if isinstance(method, (staticmethod, classmethod)):
100
- method = method.__func__
101
- if isinstance(method, property):
102
- method = method.fget
103
- return inspect.unwrap(method)
1
+ """Function utilities for introspection and manipulation.
2
+
3
+ This module provides utility functions for working with Python functions,
4
+ including extracting functions from modules and manipulating function objects.
5
+ These utilities are particularly useful for reflection, testing, and
6
+ dynamic code generation.
7
+ """
8
+
9
+ import inspect
10
+ from collections.abc import Callable
11
+ from importlib import import_module
12
+ from types import ModuleType
13
+ from typing import Any
14
+
15
+
16
+ def is_func_or_method(obj: Any) -> bool:
17
+ """Return True if *obj* is a function or method.
18
+
19
+ This function checks if the given object is a function or method,
20
+ including those defined in a class body.
21
+
22
+ Args:
23
+ obj: The object to check
24
+
25
+ Returns:
26
+ bool: True if the object is a function or method, False otherwise
27
+
28
+ """
29
+ return inspect.isfunction(obj) or inspect.ismethod(obj)
30
+
31
+
32
+ def is_func(obj: Any) -> bool:
33
+ """Return True if *obj* is a 'method-like' attribute as it appears in a class body.
34
+
35
+ Accepts:
36
+
37
+
38
+ • plain functions (instance methods)
39
+ • staticmethod / classmethod descriptors
40
+ • property descriptors (getter counts as method)
41
+ • decorated functions that keep a __wrapped__ chain
42
+
43
+ Returns:
44
+ bool: True if the object is a method-like attribute, False otherwise
45
+
46
+ """
47
+ # plain function
48
+
49
+ if is_func_or_method(obj):
50
+ return True
51
+
52
+ if isinstance(obj, (staticmethod, classmethod, property)):
53
+ return True
54
+
55
+ unwrapped = inspect.unwrap(obj)
56
+
57
+ return is_func_or_method(unwrapped)
58
+
59
+
60
+ def get_all_functions_from_module(module: ModuleType | str) -> list[Callable[..., Any]]:
61
+ """Get all functions defined in a module.
62
+
63
+ Retrieves all function objects that are defined directly in the specified module,
64
+ excluding imported functions.
65
+ The functions are sorted by their line number in the module.
66
+
67
+ Args:
68
+ module: The module to extract functions from
69
+
70
+ Returns:
71
+ A list of callable functions defined in the module
72
+
73
+ """
74
+ from winipedia_utils.modules.module import get_def_line, get_module_of_obj
75
+
76
+ if isinstance(module, str):
77
+ module = import_module(module)
78
+ funcs = [
79
+ func
80
+ for _name, func in inspect.getmembers(module, is_func)
81
+ if get_module_of_obj(func).__name__ == module.__name__
82
+ ]
83
+ # sort by definition order
84
+ return sorted(funcs, key=get_def_line)
85
+
86
+
87
+ def unwrap_method(method: Any) -> Callable[..., Any] | Any:
88
+ """Unwrap a method to its underlying function.
89
+
90
+ Args:
91
+ method: The method to unwrap
92
+
93
+ Returns:
94
+ The underlying function of the method
95
+
96
+ """
97
+ if isinstance(method, (staticmethod, classmethod)):
98
+ method = method.__func__
99
+ if isinstance(method, property):
100
+ method = method.fget
101
+ return inspect.unwrap(method)