winipedia-utils 0.1.37__tar.gz → 0.1.39__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 (98) hide show
  1. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/PKG-INFO +1 -1
  2. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/pyproject.toml +1 -1
  3. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/pyside/ui/widgets/media_player.py +1 -5
  4. winipedia_utils-0.1.39/winipedia_utils/security/keyring.py +54 -0
  5. winipedia_utils-0.1.37/winipedia_utils/security/keyring.py +0 -34
  6. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/LICENSE +0 -0
  7. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/README.md +0 -0
  8. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/__init__.py +0 -0
  9. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/concurrent/__init__.py +0 -0
  10. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/concurrent/concurrent.py +0 -0
  11. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/concurrent/multiprocessing.py +0 -0
  12. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/concurrent/multithreading.py +0 -0
  13. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/consts.py +0 -0
  14. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/data/__init__.py +0 -0
  15. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/data/dataframe.py +0 -0
  16. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/django/__init__.py +0 -0
  17. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/django/bulk.py +0 -0
  18. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/django/command.py +0 -0
  19. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/django/database.py +0 -0
  20. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/git/__init__.py +0 -0
  21. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/git/gitignore/__init__.py +0 -0
  22. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/git/gitignore/gitignore.py +0 -0
  23. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/git/pre_commit/__init__.py +0 -0
  24. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/git/pre_commit/config.py +0 -0
  25. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/git/pre_commit/hooks.py +0 -0
  26. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/git/pre_commit/run_hooks.py +0 -0
  27. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/iterating/__init__.py +0 -0
  28. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/iterating/iterate.py +0 -0
  29. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/logging/__init__.py +0 -0
  30. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/logging/ansi.py +0 -0
  31. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/logging/config.py +0 -0
  32. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/logging/logger.py +0 -0
  33. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/modules/__init__.py +0 -0
  34. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/modules/class_.py +0 -0
  35. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/modules/function.py +0 -0
  36. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/modules/module.py +0 -0
  37. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/modules/package.py +0 -0
  38. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/oop/__init__.py +0 -0
  39. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/oop/mixins/__init__.py +0 -0
  40. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/oop/mixins/meta.py +0 -0
  41. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/oop/mixins/mixin.py +0 -0
  42. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/os/__init__.py +0 -0
  43. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/os/os.py +0 -0
  44. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/projects/__init__.py +0 -0
  45. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/projects/poetry/__init__.py +0 -0
  46. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/projects/poetry/config.py +0 -0
  47. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/projects/poetry/poetry.py +0 -0
  48. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/projects/project.py +0 -0
  49. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/py.typed +0 -0
  50. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/pyside/__init__.py +0 -0
  51. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/pyside/core/__init__.py +0 -0
  52. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/pyside/core/py_qiodevice.py +0 -0
  53. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/pyside/ui/__init__.py +0 -0
  54. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/pyside/ui/base/__init__.py +0 -0
  55. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/pyside/ui/base/base.py +0 -0
  56. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/pyside/ui/pages/__init__.py +0 -0
  57. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/pyside/ui/pages/base/__init__.py +0 -0
  58. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/pyside/ui/pages/base/base.py +0 -0
  59. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/pyside/ui/pages/browser.py +0 -0
  60. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/pyside/ui/pages/player.py +0 -0
  61. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/pyside/ui/widgets/__init__.py +0 -0
  62. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/pyside/ui/widgets/browser.py +0 -0
  63. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/pyside/ui/widgets/clickable_widget.py +0 -0
  64. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/pyside/ui/widgets/notification.py +0 -0
  65. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/pyside/ui/windows/__init__.py +0 -0
  66. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/pyside/ui/windows/base/__init__.py +0 -0
  67. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/pyside/ui/windows/base/base.py +0 -0
  68. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/resources/__init__.py +0 -0
  69. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/resources/svgs/__init__.py +0 -0
  70. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/resources/svgs/download_arrow.svg +0 -0
  71. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/resources/svgs/exit_fullscreen_icon.svg +0 -0
  72. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/resources/svgs/fullscreen_icon.svg +0 -0
  73. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/resources/svgs/pause_icon.svg +0 -0
  74. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/resources/svgs/play_icon.svg +0 -0
  75. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/resources/svgs/svg.py +0 -0
  76. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/security/__init__.py +0 -0
  77. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/security/cryptography.py +0 -0
  78. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/setup.py +0 -0
  79. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/testing/__init__.py +0 -0
  80. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/testing/assertions.py +0 -0
  81. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/testing/convention.py +0 -0
  82. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/testing/create_tests.py +0 -0
  83. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/testing/fixtures.py +0 -0
  84. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/testing/tests/__init__.py +0 -0
  85. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/testing/tests/base/__init__.py +0 -0
  86. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/testing/tests/base/fixtures/__init__.py +0 -0
  87. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/testing/tests/base/fixtures/fixture.py +0 -0
  88. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/testing/tests/base/fixtures/scopes/__init__.py +0 -0
  89. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/testing/tests/base/fixtures/scopes/class_.py +0 -0
  90. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/testing/tests/base/fixtures/scopes/function.py +0 -0
  91. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/testing/tests/base/fixtures/scopes/module.py +0 -0
  92. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/testing/tests/base/fixtures/scopes/package.py +0 -0
  93. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/testing/tests/base/fixtures/scopes/session.py +0 -0
  94. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/testing/tests/base/utils/__init__.py +0 -0
  95. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/testing/tests/base/utils/utils.py +0 -0
  96. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/testing/tests/conftest.py +0 -0
  97. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/winipedia_utils/text/__init__.py +0 -0
  98. {winipedia_utils-0.1.37 → winipedia_utils-0.1.39}/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.37
3
+ Version: 0.1.39
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.37"
4
+ version = "0.1.39"
5
5
  description = "A package with many utility functions"
6
6
  readme = "README.md"
7
7
  requires-python = ">=3.12,<3.14"
@@ -267,12 +267,8 @@ class MediaPlayer(QMediaPlayer):
267
267
  source_url=QUrl.fromLocalFile(path),
268
268
  )
269
269
 
270
- def set_source_device(
271
- self, io_device: PyQIODevice, source_url: QUrl | None = None
272
- ) -> None:
270
+ def set_source_device(self, io_device: PyQIODevice, source_url: QUrl) -> None:
273
271
  """Play the video."""
274
- if source_url is None:
275
- source_url = QUrl()
276
272
  self.source_url = source_url
277
273
  self.io_device = io_device
278
274
  self.setSourceDevice(self.io_device, self.source_url)
@@ -0,0 +1,54 @@
1
+ """Keyring utilities for secure storage and retrieval of secrets.
2
+
3
+ This module provides utility functions for working with keyring,
4
+ including getting and creating secrets and fernets.
5
+ These utilities help with secure storage and retrieval of secrets.
6
+ """
7
+
8
+ from base64 import b64decode, b64encode
9
+ from collections.abc import Callable
10
+
11
+ import keyring
12
+ from cryptography.fernet import Fernet
13
+ from cryptography.hazmat.primitives.ciphers.aead import AESGCM
14
+
15
+
16
+ def get_or_create_fernet(service_name: str, username: str) -> Fernet:
17
+ """Get the app secret using keyring.
18
+
19
+ If it does not exist, create it with a Fernet.
20
+ """
21
+ return get_or_create_key(
22
+ service_name, username, Fernet, lambda: Fernet.generate_key()
23
+ )
24
+
25
+
26
+ def get_or_create_aes_gcm(service_name: str, username: str) -> AESGCM:
27
+ """Get the app secret using keyring.
28
+
29
+ If it does not exist, create it with a AESGCM.
30
+ """
31
+ return get_or_create_key(
32
+ service_name, username, AESGCM, lambda: AESGCM.generate_key(bit_length=256)
33
+ )
34
+
35
+
36
+ def get_or_create_key[T](
37
+ service_name: str,
38
+ username: str,
39
+ key_class: Callable[[bytes], T],
40
+ generate_key_func: Callable[..., bytes],
41
+ ) -> T:
42
+ """Get the app secret using keyring.
43
+
44
+ If it does not exist, create it with the generate_func.
45
+ """
46
+ service_name = f"{service_name}_{key_class.__name__}"
47
+ key = keyring.get_password(service_name, username)
48
+ if key is None:
49
+ binary_key = generate_key_func()
50
+ key = b64encode(binary_key).decode("ascii")
51
+ keyring.set_password(service_name, username, key)
52
+
53
+ binary_key = b64decode(key)
54
+ return key_class(binary_key)
@@ -1,34 +0,0 @@
1
- """Keyring utilities for secure storage and retrieval of secrets.
2
-
3
- This module provides utility functions for working with keyring,
4
- including getting and creating secrets and fernets.
5
- These utilities help with secure storage and retrieval of secrets.
6
- """
7
-
8
- import keyring
9
- from cryptography.fernet import Fernet
10
- from cryptography.hazmat.primitives.ciphers.aead import AESGCM
11
-
12
-
13
- def get_or_create_fernet(service_name: str, username: str) -> Fernet:
14
- """Get the app secret using keyring.
15
-
16
- If it does not exist, create it with a Fernet.
17
- """
18
- secret = keyring.get_password(service_name, username)
19
- if secret is None:
20
- secret = Fernet.generate_key().decode()
21
- keyring.set_password(service_name, username, secret)
22
- return Fernet(secret.encode())
23
-
24
-
25
- def get_or_create_aes_gcm(service_name: str, username: str) -> AESGCM:
26
- """Get the app secret using keyring.
27
-
28
- If it does not exist, create it with a AESGCM.
29
- """
30
- secret = keyring.get_password(service_name, username)
31
- if secret is None:
32
- secret = AESGCM.generate_key(bit_length=256).decode()
33
- keyring.set_password(service_name, username, secret)
34
- return AESGCM(secret.encode())