winipedia-utils 0.1.60__tar.gz → 0.1.61__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.

Potentially problematic release.


This version of winipedia-utils might be problematic. Click here for more details.

Files changed (100) hide show
  1. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/PKG-INFO +1 -1
  2. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/pyproject.toml +1 -1
  3. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/security/keyring.py +23 -7
  4. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/LICENSE +0 -0
  5. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/README.md +0 -0
  6. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/__init__.py +0 -0
  7. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/concurrent/__init__.py +0 -0
  8. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/concurrent/concurrent.py +0 -0
  9. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/concurrent/multiprocessing.py +0 -0
  10. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/concurrent/multithreading.py +0 -0
  11. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/consts.py +0 -0
  12. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/data/__init__.py +0 -0
  13. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/data/dataframe.py +0 -0
  14. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/django/__init__.py +0 -0
  15. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/django/bulk.py +0 -0
  16. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/django/command.py +0 -0
  17. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/django/database.py +0 -0
  18. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/git/__init__.py +0 -0
  19. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/git/gitignore/__init__.py +0 -0
  20. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/git/gitignore/gitignore.py +0 -0
  21. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/git/pre_commit/__init__.py +0 -0
  22. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/git/pre_commit/config.py +0 -0
  23. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/git/pre_commit/hooks.py +0 -0
  24. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/git/pre_commit/run_hooks.py +0 -0
  25. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/iterating/__init__.py +0 -0
  26. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/iterating/iterate.py +0 -0
  27. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/logging/__init__.py +0 -0
  28. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/logging/ansi.py +0 -0
  29. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/logging/config.py +0 -0
  30. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/logging/logger.py +0 -0
  31. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/modules/__init__.py +0 -0
  32. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/modules/class_.py +0 -0
  33. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/modules/function.py +0 -0
  34. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/modules/module.py +0 -0
  35. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/modules/package.py +0 -0
  36. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/oop/__init__.py +0 -0
  37. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/oop/mixins/__init__.py +0 -0
  38. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/oop/mixins/meta.py +0 -0
  39. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/oop/mixins/mixin.py +0 -0
  40. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/os/__init__.py +0 -0
  41. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/os/os.py +0 -0
  42. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/projects/__init__.py +0 -0
  43. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/projects/poetry/__init__.py +0 -0
  44. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/projects/poetry/config.py +0 -0
  45. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/projects/poetry/poetry.py +0 -0
  46. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/projects/project.py +0 -0
  47. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/py.typed +0 -0
  48. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/pyside/__init__.py +0 -0
  49. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/pyside/core/__init__.py +0 -0
  50. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/pyside/core/py_qiodevice.py +0 -0
  51. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/pyside/ui/__init__.py +0 -0
  52. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/pyside/ui/base/__init__.py +0 -0
  53. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/pyside/ui/base/base.py +0 -0
  54. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/pyside/ui/pages/__init__.py +0 -0
  55. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/pyside/ui/pages/base/__init__.py +0 -0
  56. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/pyside/ui/pages/base/base.py +0 -0
  57. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/pyside/ui/pages/browser.py +0 -0
  58. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/pyside/ui/pages/player.py +0 -0
  59. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/pyside/ui/widgets/__init__.py +0 -0
  60. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/pyside/ui/widgets/browser.py +0 -0
  61. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/pyside/ui/widgets/clickable_widget.py +0 -0
  62. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/pyside/ui/widgets/media_player.py +0 -0
  63. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/pyside/ui/widgets/notification.py +0 -0
  64. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/pyside/ui/windows/__init__.py +0 -0
  65. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/pyside/ui/windows/base/__init__.py +0 -0
  66. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/pyside/ui/windows/base/base.py +0 -0
  67. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/resources/__init__.py +0 -0
  68. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/resources/svgs/__init__.py +0 -0
  69. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/resources/svgs/delete_garbage_can.svg +0 -0
  70. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/resources/svgs/download_arrow.svg +0 -0
  71. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/resources/svgs/exit_fullscreen_icon.svg +0 -0
  72. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/resources/svgs/fullscreen_icon.svg +0 -0
  73. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/resources/svgs/menu_icon.svg +0 -0
  74. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/resources/svgs/pause_icon.svg +0 -0
  75. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/resources/svgs/play_icon.svg +0 -0
  76. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/resources/svgs/plus_icon.svg +0 -0
  77. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/resources/svgs/svg.py +0 -0
  78. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/security/__init__.py +0 -0
  79. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/security/cryptography.py +0 -0
  80. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/setup.py +0 -0
  81. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/testing/__init__.py +0 -0
  82. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/testing/assertions.py +0 -0
  83. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/testing/convention.py +0 -0
  84. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/testing/create_tests.py +0 -0
  85. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/testing/fixtures.py +0 -0
  86. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/testing/tests/__init__.py +0 -0
  87. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/testing/tests/base/__init__.py +0 -0
  88. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/testing/tests/base/fixtures/__init__.py +0 -0
  89. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/testing/tests/base/fixtures/fixture.py +0 -0
  90. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/testing/tests/base/fixtures/scopes/__init__.py +0 -0
  91. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/testing/tests/base/fixtures/scopes/class_.py +0 -0
  92. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/testing/tests/base/fixtures/scopes/function.py +0 -0
  93. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/testing/tests/base/fixtures/scopes/module.py +0 -0
  94. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/testing/tests/base/fixtures/scopes/package.py +0 -0
  95. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/testing/tests/base/fixtures/scopes/session.py +0 -0
  96. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/testing/tests/base/utils/__init__.py +0 -0
  97. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/testing/tests/base/utils/utils.py +0 -0
  98. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/testing/tests/conftest.py +0 -0
  99. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/winipedia_utils/text/__init__.py +0 -0
  100. {winipedia_utils-0.1.60 → winipedia_utils-0.1.61}/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.60
3
+ Version: 0.1.61
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.60"
4
+ version = "0.1.61"
5
5
  description = "A package with many utility functions"
6
6
  readme = "README.md"
7
7
  requires-python = ">=3.12,<3.14"
@@ -13,7 +13,7 @@ from cryptography.fernet import Fernet
13
13
  from cryptography.hazmat.primitives.ciphers.aead import AESGCM
14
14
 
15
15
 
16
- def get_or_create_fernet(service_name: str, username: str) -> Fernet:
16
+ def get_or_create_fernet(service_name: str, username: str) -> tuple[Fernet, bytes]:
17
17
  """Get the app secret using keyring.
18
18
 
19
19
  If it does not exist, create it with a Fernet.
@@ -23,7 +23,7 @@ def get_or_create_fernet(service_name: str, username: str) -> Fernet:
23
23
  )
24
24
 
25
25
 
26
- def get_or_create_aes_gcm(service_name: str, username: str) -> AESGCM:
26
+ def get_or_create_aes_gcm(service_name: str, username: str) -> tuple[AESGCM, bytes]:
27
27
  """Get the app secret using keyring.
28
28
 
29
29
  If it does not exist, create it with a AESGCM.
@@ -38,17 +38,33 @@ def get_or_create_key[T](
38
38
  username: str,
39
39
  key_class: Callable[[bytes], T],
40
40
  generate_key_func: Callable[..., bytes],
41
- ) -> T:
41
+ ) -> tuple[T, bytes]:
42
42
  """Get the app secret using keyring.
43
43
 
44
44
  If it does not exist, create it with the generate_func.
45
45
  """
46
- service_name = f"{service_name}_{key_class.__name__}"
47
- key = keyring.get_password(service_name, username)
46
+ key = get_key_as_str(service_name, username, key_class)
48
47
  if key is None:
49
48
  binary_key = generate_key_func()
50
49
  key = b64encode(binary_key).decode("ascii")
51
- keyring.set_password(service_name, username, key)
50
+ modified_service_name = make_service_name(service_name, key_class)
51
+ keyring.set_password(modified_service_name, username, key)
52
52
 
53
53
  binary_key = b64decode(key)
54
- return key_class(binary_key)
54
+ return key_class(binary_key), binary_key
55
+
56
+
57
+ def get_key_as_str[T](
58
+ service_name: str, username: str, key_class: Callable[[bytes], T]
59
+ ) -> str | None:
60
+ """Get the app secret using keyring.
61
+
62
+ If it does not exist, create it with the generate_func.
63
+ """
64
+ service_name = make_service_name(service_name, key_class)
65
+ return keyring.get_password(service_name, username)
66
+
67
+
68
+ def make_service_name[T](service_name: str, key_class: Callable[[bytes], T]) -> str:
69
+ """Make a service name from a service name and a key class."""
70
+ return f"{service_name}_{key_class.__name__}"