winipedia-utils 0.1.48__tar.gz → 0.1.51__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 (100) hide show
  1. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/PKG-INFO +1 -1
  2. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/pyproject.toml +2 -1
  3. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/consts.py +1 -0
  4. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/modules/class_.py +4 -1
  5. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/modules/module.py +4 -1
  6. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/pyside/ui/widgets/notification.py +2 -1
  7. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/testing/tests/base/fixtures/scopes/session.py +1 -1
  8. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/text/string.py +3 -3
  9. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/LICENSE +0 -0
  10. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/README.md +0 -0
  11. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/__init__.py +0 -0
  12. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/concurrent/__init__.py +0 -0
  13. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/concurrent/concurrent.py +0 -0
  14. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/concurrent/multiprocessing.py +0 -0
  15. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/concurrent/multithreading.py +0 -0
  16. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/data/__init__.py +0 -0
  17. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/data/dataframe.py +0 -0
  18. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/django/__init__.py +0 -0
  19. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/django/bulk.py +0 -0
  20. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/django/command.py +0 -0
  21. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/django/database.py +0 -0
  22. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/git/__init__.py +0 -0
  23. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/git/gitignore/__init__.py +0 -0
  24. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/git/gitignore/gitignore.py +0 -0
  25. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/git/pre_commit/__init__.py +0 -0
  26. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/git/pre_commit/config.py +0 -0
  27. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/git/pre_commit/hooks.py +0 -0
  28. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/git/pre_commit/run_hooks.py +0 -0
  29. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/iterating/__init__.py +0 -0
  30. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/iterating/iterate.py +0 -0
  31. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/logging/__init__.py +0 -0
  32. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/logging/ansi.py +0 -0
  33. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/logging/config.py +0 -0
  34. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/logging/logger.py +0 -0
  35. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/modules/__init__.py +0 -0
  36. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/modules/function.py +0 -0
  37. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/modules/package.py +0 -0
  38. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/oop/__init__.py +0 -0
  39. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/oop/mixins/__init__.py +0 -0
  40. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/oop/mixins/meta.py +0 -0
  41. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/oop/mixins/mixin.py +0 -0
  42. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/os/__init__.py +0 -0
  43. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/os/os.py +0 -0
  44. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/projects/__init__.py +0 -0
  45. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/projects/poetry/__init__.py +0 -0
  46. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/projects/poetry/config.py +0 -0
  47. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/projects/poetry/poetry.py +0 -0
  48. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/projects/project.py +0 -0
  49. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/py.typed +0 -0
  50. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/pyside/__init__.py +0 -0
  51. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/pyside/core/__init__.py +0 -0
  52. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/pyside/core/py_qiodevice.py +0 -0
  53. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/pyside/ui/__init__.py +0 -0
  54. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/pyside/ui/base/__init__.py +0 -0
  55. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/pyside/ui/base/base.py +0 -0
  56. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/pyside/ui/pages/__init__.py +0 -0
  57. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/pyside/ui/pages/base/__init__.py +0 -0
  58. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/pyside/ui/pages/base/base.py +0 -0
  59. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/pyside/ui/pages/browser.py +0 -0
  60. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/pyside/ui/pages/player.py +0 -0
  61. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/pyside/ui/widgets/__init__.py +0 -0
  62. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/pyside/ui/widgets/browser.py +0 -0
  63. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/pyside/ui/widgets/clickable_widget.py +0 -0
  64. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/pyside/ui/widgets/media_player.py +0 -0
  65. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/pyside/ui/windows/__init__.py +0 -0
  66. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/pyside/ui/windows/base/__init__.py +0 -0
  67. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/pyside/ui/windows/base/base.py +0 -0
  68. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/resources/__init__.py +0 -0
  69. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/resources/svgs/__init__.py +0 -0
  70. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/resources/svgs/delete_garbage_can.svg +0 -0
  71. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/resources/svgs/download_arrow.svg +0 -0
  72. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/resources/svgs/exit_fullscreen_icon.svg +0 -0
  73. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/resources/svgs/fullscreen_icon.svg +0 -0
  74. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/resources/svgs/menu_icon.svg +0 -0
  75. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/resources/svgs/pause_icon.svg +0 -0
  76. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/resources/svgs/play_icon.svg +0 -0
  77. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/resources/svgs/plus_icon.svg +0 -0
  78. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/resources/svgs/svg.py +0 -0
  79. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/security/__init__.py +0 -0
  80. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/security/cryptography.py +0 -0
  81. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/security/keyring.py +0 -0
  82. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/setup.py +0 -0
  83. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/testing/__init__.py +0 -0
  84. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/testing/assertions.py +0 -0
  85. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/testing/convention.py +0 -0
  86. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/testing/create_tests.py +0 -0
  87. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/testing/fixtures.py +0 -0
  88. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/testing/tests/__init__.py +0 -0
  89. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/testing/tests/base/__init__.py +0 -0
  90. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/testing/tests/base/fixtures/__init__.py +0 -0
  91. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/testing/tests/base/fixtures/fixture.py +0 -0
  92. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/testing/tests/base/fixtures/scopes/__init__.py +0 -0
  93. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/testing/tests/base/fixtures/scopes/class_.py +0 -0
  94. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/testing/tests/base/fixtures/scopes/function.py +0 -0
  95. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/testing/tests/base/fixtures/scopes/module.py +0 -0
  96. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/testing/tests/base/fixtures/scopes/package.py +0 -0
  97. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/testing/tests/base/utils/__init__.py +0 -0
  98. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/testing/tests/base/utils/utils.py +0 -0
  99. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/testing/tests/conftest.py +0 -0
  100. {winipedia_utils-0.1.48 → winipedia_utils-0.1.51}/winipedia_utils/text/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: winipedia-utils
3
- Version: 0.1.48
3
+ Version: 0.1.51
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.48"
4
+ version = "0.1.51"
5
5
  description = "A package with many utility functions"
6
6
  readme = "README.md"
7
7
  requires-python = ">=3.12,<3.14"
@@ -45,6 +45,7 @@ types-defusedxml = "^0.7.0.20240218"
45
45
  types-pyyaml = "^6.0.12.20250516"
46
46
  pytest-mock = "^3.14.0"
47
47
  django-stubs = "^5.2.0"
48
+ pytest-qt = "^4.5.0"
48
49
 
49
50
  [tool.ruff]
50
51
  exclude = [ ".*", "**/migrations/*.py",]
@@ -18,5 +18,6 @@ _DEV_DEPENDENCIES = [
18
18
  "types-defusedxml",
19
19
  "types-pyyaml",
20
20
  "pytest-mock",
21
+ "pytest-qt",
21
22
  "django-stubs",
22
23
  ]
@@ -67,10 +67,13 @@ def get_all_cls_from_module(module: ModuleType | str) -> list[type]:
67
67
 
68
68
  if isinstance(module, str):
69
69
  module = import_module(module)
70
+
71
+ # necessary for bindings packages like AESGCM from cryptography._rust backend
72
+ default = ModuleType("default")
70
73
  classes = [
71
74
  obj
72
75
  for _, obj in inspect.getmembers(module, inspect.isclass)
73
- if get_module_of_obj(obj).__name__ == module.__name__
76
+ if get_module_of_obj(obj, default).__name__ == module.__name__
74
77
  ]
75
78
  # sort by definition order
76
79
  return sorted(classes, key=get_def_line)
@@ -335,11 +335,12 @@ def get_def_line(obj: Any) -> int:
335
335
  return inspect.getsourcelines(unwrapped)[1]
336
336
 
337
337
 
338
- def get_module_of_obj(obj: Any) -> ModuleType:
338
+ def get_module_of_obj(obj: Any, default: ModuleType | None = None) -> ModuleType:
339
339
  """Return the module name where a method-like object is defined.
340
340
 
341
341
  Args:
342
342
  obj: Method-like object (funcs, method, property, staticmethod, classmethod...)
343
+ default: Default module to return if the module cannot be determined
343
344
 
344
345
  Returns:
345
346
  The module name as a string, or None if module cannot be determined.
@@ -349,6 +350,8 @@ def get_module_of_obj(obj: Any) -> ModuleType:
349
350
  module = inspect.getmodule(unwrapped)
350
351
  if not module:
351
352
  msg = f"Could not determine module of {obj}"
353
+ if default:
354
+ return default
352
355
  raise ValueError(msg)
353
356
  return module
354
357
 
@@ -29,7 +29,8 @@ class Notification(Toast): # type: ignore[misc]
29
29
  title: The title of the notification.
30
30
  text: The text of the notification.
31
31
  icon: The icon of the notification. Defaults to INFORMATION.
32
- duration: The duration of the notification in milliseconds. Defaults to 10000.
32
+ duration: The duration of the notification in milliseconds.
33
+ Defaults to 10000.
33
34
  """
34
35
  super().__init__(QApplication.activeWindow())
35
36
  self.setDuration(duration)
@@ -281,6 +281,6 @@ def _test_no_unitest_package_usage() -> None:
281
281
  if path == to_path(__name__, is_package=False):
282
282
  continue
283
283
  assert_with_msg(
284
- "unittest" not in path.read_text(),
284
+ "unittest" not in path.read_text(encoding="utf-8"),
285
285
  f"Found unittest usage in {path}. Use pytest instead.",
286
286
  )
@@ -59,9 +59,9 @@ def find_xml_namespaces(xml: str | StringIO) -> dict[str, str]:
59
59
  # Extract the namespaces from the root tag
60
60
  namespaces_: dict[str, str] = {}
61
61
  iter_ns = DefusedElementTree.iterparse(xml, events=["start-ns"])
62
- for _, elem in iter_ns:
63
- prefix, uri = elem
64
- namespaces_[prefix] = uri
62
+ for _, namespace_data in iter_ns:
63
+ prefix, uri = namespace_data
64
+ namespaces_[str(prefix)] = str(uri)
65
65
 
66
66
  namespaces_.pop("", None)
67
67