winipedia-utils 0.1.9__tar.gz → 0.1.11__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 (67) hide show
  1. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/PKG-INFO +1 -1
  2. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/pyproject.toml +1 -1
  3. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/modules/function.py +17 -0
  4. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/modules/package.py +4 -0
  5. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/oop/mixins/meta.py +3 -1
  6. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/LICENSE +0 -0
  7. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/README.md +0 -0
  8. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/__init__.py +0 -0
  9. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/concurrent/__init__.py +0 -0
  10. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/concurrent/concurrent.py +0 -0
  11. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/concurrent/multiprocessing.py +0 -0
  12. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/concurrent/multithreading.py +0 -0
  13. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/consts.py +0 -0
  14. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/data/__init__.py +0 -0
  15. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/data/dataframe.py +0 -0
  16. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/django/__init__.py +0 -0
  17. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/django/bulk.py +0 -0
  18. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/django/command.py +0 -0
  19. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/django/database.py +0 -0
  20. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/git/__init__.py +0 -0
  21. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/git/gitignore/__init__.py +0 -0
  22. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/git/gitignore/gitignore.py +0 -0
  23. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/git/pre_commit/__init__.py +0 -0
  24. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/git/pre_commit/config.py +0 -0
  25. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/git/pre_commit/hooks.py +0 -0
  26. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/git/pre_commit/run_hooks.py +0 -0
  27. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/iterating/__init__.py +0 -0
  28. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/iterating/iterate.py +0 -0
  29. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/logging/__init__.py +0 -0
  30. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/logging/ansi.py +0 -0
  31. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/logging/config.py +0 -0
  32. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/logging/logger.py +0 -0
  33. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/modules/__init__.py +0 -0
  34. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/modules/class_.py +0 -0
  35. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/modules/module.py +0 -0
  36. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/oop/__init__.py +0 -0
  37. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/oop/mixins/__init__.py +0 -0
  38. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/oop/mixins/mixin.py +0 -0
  39. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/os/__init__.py +0 -0
  40. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/os/os.py +0 -0
  41. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/projects/__init__.py +0 -0
  42. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/projects/poetry/__init__.py +0 -0
  43. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/projects/poetry/config.py +0 -0
  44. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/projects/poetry/poetry.py +0 -0
  45. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/projects/project.py +0 -0
  46. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/py.typed +0 -0
  47. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/setup.py +0 -0
  48. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/testing/__init__.py +0 -0
  49. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/testing/assertions.py +0 -0
  50. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/testing/convention.py +0 -0
  51. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/testing/create_tests.py +0 -0
  52. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/testing/fixtures.py +0 -0
  53. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/testing/tests/__init__.py +0 -0
  54. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/testing/tests/base/__init__.py +0 -0
  55. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/testing/tests/base/fixtures/__init__.py +0 -0
  56. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/testing/tests/base/fixtures/fixture.py +0 -0
  57. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/testing/tests/base/fixtures/scopes/__init__.py +0 -0
  58. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/testing/tests/base/fixtures/scopes/class_.py +0 -0
  59. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/testing/tests/base/fixtures/scopes/function.py +0 -0
  60. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/testing/tests/base/fixtures/scopes/module.py +0 -0
  61. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/testing/tests/base/fixtures/scopes/package.py +0 -0
  62. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/testing/tests/base/fixtures/scopes/session.py +0 -0
  63. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/testing/tests/base/utils/__init__.py +0 -0
  64. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/testing/tests/base/utils/utils.py +0 -0
  65. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/testing/tests/conftest.py +0 -0
  66. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/text/__init__.py +0 -0
  67. {winipedia_utils-0.1.9 → winipedia_utils-0.1.11}/winipedia_utils/text/string.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: winipedia-utils
3
- Version: 0.1.9
3
+ Version: 0.1.11
4
4
  Summary: A package with many utility functions
5
5
  License: MIT
6
6
  Author: Winipedia
@@ -1,7 +1,7 @@
1
1
  # Project section
2
2
  [project]
3
3
  name = "winipedia-utils"
4
- version = "0.1.9"
4
+ version = "0.1.11"
5
5
  description = "A package with many utility functions"
6
6
  readme = "README.md"
7
7
  requires-python = ">=3.12"
@@ -84,3 +84,20 @@ def get_all_functions_from_module(module: ModuleType | str) -> list[Callable[...
84
84
  ]
85
85
  # sort by definition order
86
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)
@@ -143,6 +143,10 @@ def get_modules_and_packages_from_package(
143
143
  else:
144
144
  modules.append(mod)
145
145
 
146
+ # make consistent order
147
+ packages.sort(key=lambda p: p.__name__)
148
+ modules.sort(key=lambda m: m.__name__)
149
+
146
150
  return packages, modules
147
151
 
148
152
 
@@ -15,7 +15,7 @@ from typing import Any, final
15
15
 
16
16
  from winipedia_utils.logging.logger import get_logger
17
17
  from winipedia_utils.modules.class_ import get_all_methods_from_cls
18
- from winipedia_utils.modules.function import is_func
18
+ from winipedia_utils.modules.function import is_func, unwrap_method
19
19
  from winipedia_utils.text.string import value_to_truncated_string
20
20
 
21
21
  logger = get_logger(__name__)
@@ -249,6 +249,7 @@ class ImplementationMeta(type):
249
249
  True if the method is marked with @final, False otherwise
250
250
 
251
251
  """
252
+ method = unwrap_method(method)
252
253
  return getattr(method, "__final__", False)
253
254
 
254
255
  @staticmethod
@@ -262,6 +263,7 @@ class ImplementationMeta(type):
262
263
  True if the method is marked with @abstractmethod, False otherwise
263
264
 
264
265
  """
266
+ method = unwrap_method(method)
265
267
  return getattr(method, "__isabstractmethod__", False)
266
268
 
267
269
  def check_attrs_implemented(cls) -> None: