ez-a-sync 0.23.9__tar.gz → 0.23.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.

Potentially problematic release.


This version of ez-a-sync might be problematic. Click here for more details.

Files changed (135) hide show
  1. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/PKG-INFO +1 -1
  2. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/__init__.py +1 -1
  3. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/_smart.py +8 -3
  4. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/_flags.pyi +54 -0
  5. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/_kwargs.c +355 -305
  6. ez_a_sync-0.23.11/a_sync/a_sync/_kwargs.pxd +2 -0
  7. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/_kwargs.pyx +6 -3
  8. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/abstract.c +412 -479
  9. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/abstract.pyx +6 -7
  10. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/base.py +4 -6
  11. ez_a_sync-0.23.11/a_sync/a_sync/function.c +33599 -0
  12. ez_a_sync-0.23.11/a_sync/a_sync/function.pyi +566 -0
  13. ez_a_sync-0.23.9/a_sync/a_sync/function.py → ez_a_sync-0.23.11/a_sync/a_sync/function.pyx +45 -30
  14. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/method.c +2251 -1946
  15. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/method.pxd +1 -0
  16. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/method.pyx +26 -19
  17. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/property.c +2139 -2789
  18. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/property.pyx +5 -23
  19. ez_a_sync-0.23.11/a_sync/asyncio/create_task.c +13090 -0
  20. ez_a_sync-0.23.11/a_sync/asyncio/create_task.pxd +2 -0
  21. ez_a_sync-0.23.11/a_sync/asyncio/create_task.pyi +46 -0
  22. ez_a_sync-0.23.9/a_sync/asyncio/create_task.py → ez_a_sync-0.23.11/a_sync/asyncio/create_task.pyx +31 -7
  23. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/future.py +2 -1
  24. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/iter.py +5 -4
  25. ez_a_sync-0.23.11/a_sync/primitives/_debug.c +11999 -0
  26. ez_a_sync-0.23.11/a_sync/primitives/_debug.pyi +12 -0
  27. ez_a_sync-0.23.9/a_sync/primitives/_debug.py → ez_a_sync-0.23.11/a_sync/primitives/_debug.pyx +5 -3
  28. ez_a_sync-0.23.11/a_sync/primitives/_loggable.c +8151 -0
  29. ez_a_sync-0.23.11/a_sync/primitives/_loggable.pyi +62 -0
  30. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/primitives/queue.py +3 -3
  31. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/task.py +26 -13
  32. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/utils/iterators.py +2 -1
  33. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/docs/conf.py +1 -1
  34. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/ez_a_sync.egg-info/PKG-INFO +1 -1
  35. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/ez_a_sync.egg-info/SOURCES.txt +13 -4
  36. ez_a_sync-0.23.9/a_sync/a_sync/_kwargs.pxd +0 -1
  37. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/.coverage +0 -0
  38. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/.github/workflows/black.yaml +0 -0
  39. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/.github/workflows/codeql.yaml +0 -0
  40. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/.github/workflows/docs.yaml +0 -0
  41. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/.github/workflows/mypy.yaml +0 -0
  42. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/.github/workflows/pytest.yaml +0 -0
  43. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/.github/workflows/release.yaml +0 -0
  44. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/.gitignore +0 -0
  45. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/.sourcery.yaml +0 -0
  46. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/LICENSE.txt +0 -0
  47. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/Makefile +0 -0
  48. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/README.md +0 -0
  49. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/TODO +0 -0
  50. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/ENVIRONMENT_VARIABLES.py +0 -0
  51. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/_typing.py +0 -0
  52. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/__init__.py +0 -0
  53. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/_descriptor.py +0 -0
  54. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/_flags.c +0 -0
  55. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/_flags.pxd +0 -0
  56. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/_flags.pyx +0 -0
  57. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/_helpers.py +0 -0
  58. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/_kwargs.pyi +0 -0
  59. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/_meta.py +0 -0
  60. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/abstract.pyi +0 -0
  61. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/config.py +0 -0
  62. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/decorator.py +0 -0
  63. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/method.pyi +0 -0
  64. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/modifiers/__init__.py +0 -0
  65. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/modifiers/cache/__init__.py +0 -0
  66. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/modifiers/cache/memory.py +0 -0
  67. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/modifiers/limiter.py +0 -0
  68. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/modifiers/manager.c +0 -0
  69. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/modifiers/manager.pyi +0 -0
  70. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/modifiers/manager.pyx +0 -0
  71. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/modifiers/semaphores.py +0 -0
  72. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/property.pyi +0 -0
  73. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/singleton.py +0 -0
  74. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/aliases.py +0 -0
  75. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/asyncio/__init__.py +1 -1
  76. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/asyncio/as_completed.py +0 -0
  77. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/asyncio/gather.py +0 -0
  78. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/asyncio/utils.py +0 -0
  79. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/exceptions.py +0 -0
  80. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/executor.py +0 -0
  81. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/primitives/__init__.py +0 -0
  82. /ez_a_sync-0.23.9/a_sync/primitives/_loggable.py → /ez_a_sync-0.23.11/a_sync/primitives/_loggable.pyx +0 -0
  83. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/primitives/locks/__init__.py +0 -0
  84. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/primitives/locks/counter.py +0 -0
  85. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/primitives/locks/event.py +0 -0
  86. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/primitives/locks/prio_semaphore.py +0 -0
  87. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/primitives/locks/semaphore.py +0 -0
  88. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/py.typed +0 -0
  89. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/sphinx/__init__.py +0 -0
  90. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/sphinx/ext.py +0 -0
  91. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/utils/__init__.py +0 -0
  92. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/docs/Makefile +0 -0
  93. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/docs/_build/html/_static/alabaster.css +0 -0
  94. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/docs/_build/html/_static/basic.css +0 -0
  95. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/docs/_build/html/_static/custom.css +0 -0
  96. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/docs/_build/html/_static/doctools.js +0 -0
  97. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/docs/_build/html/_static/documentation_options.js +0 -0
  98. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/docs/_build/html/_static/file.png +0 -0
  99. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/docs/_build/html/_static/language_data.js +0 -0
  100. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/docs/_build/html/_static/minus.png +0 -0
  101. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/docs/_build/html/_static/plus.png +0 -0
  102. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/docs/_build/html/_static/pygments.css +0 -0
  103. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/docs/_build/html/_static/searchtools.js +0 -0
  104. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/docs/_build/html/_static/sphinx_highlight.js +0 -0
  105. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/docs/index.rst +0 -0
  106. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/docs/make.bat +0 -0
  107. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/ez_a_sync.egg-info/dependency_links.txt +0 -0
  108. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/ez_a_sync.egg-info/not-zip-safe +0 -0
  109. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/ez_a_sync.egg-info/requires.txt +0 -0
  110. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/ez_a_sync.egg-info/top_level.txt +0 -0
  111. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/pyproject.yaml +0 -0
  112. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/requirements-dev.txt +0 -0
  113. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/requirements.txt +0 -0
  114. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/setup.cfg +0 -0
  115. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/setup.py +0 -0
  116. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/tests/__init__.py +0 -0
  117. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/tests/conftest.py +0 -0
  118. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/tests/executor.py +0 -0
  119. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/tests/fixtures.py +0 -0
  120. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/tests/test_abstract.py +0 -0
  121. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/tests/test_as_completed.py +0 -0
  122. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/tests/test_base.py +0 -0
  123. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/tests/test_cache.py +0 -0
  124. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/tests/test_decorator.py +0 -0
  125. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/tests/test_executor.py +0 -0
  126. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/tests/test_future.py +0 -0
  127. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/tests/test_gather.py +0 -0
  128. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/tests/test_helpers.py +0 -0
  129. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/tests/test_iter.py +0 -0
  130. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/tests/test_limiter.py +0 -0
  131. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/tests/test_meta.py +0 -0
  132. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/tests/test_modified.py +0 -0
  133. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/tests/test_semaphore.py +0 -0
  134. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/tests/test_singleton.py +0 -0
  135. {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/tests/test_task.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ez-a-sync
3
- Version: 0.23.9
3
+ Version: 0.23.11
4
4
  Summary: A library that makes it easy to define objects that can be used for both sync and async use cases.
5
5
  Home-page: https://github.com/BobTheBuidler/a-sync
6
6
  Author: BobTheBuidler
@@ -63,7 +63,7 @@ from a_sync.iter import ASyncSorter as sorted
63
63
  from a_sync.iter import ASyncIterable, ASyncIterator
64
64
  from a_sync.primitives import *
65
65
  from a_sync.task import TaskMapping as map
66
- from a_sync.task import TaskMapping, create_task
66
+ from a_sync.task import TaskMapping
67
67
  from a_sync.utils import all, any, as_yielded
68
68
 
69
69
  # I alias the aliases for your convenience.
@@ -82,9 +82,14 @@ class _SmartFutureMixin(Generic[T]):
82
82
  """
83
83
  if self.done():
84
84
  return self.result() # May raise too.
85
+
85
86
  self._asyncio_future_blocking = True
86
- self._waiters.add(current_task := asyncio.current_task(self._loop))
87
- current_task.add_done_callback(self._waiter_done_cleanup_callback) # type: ignore [union-attr]
87
+ if current_task := asyncio.current_task(self._loop):
88
+ self._waiters.add(current_task)
89
+ current_task.add_done_callback(
90
+ self._waiter_done_cleanup_callback # type: ignore [union-attr]
91
+ )
92
+
88
93
  logger.debug("awaiting %s", self)
89
94
  yield self # This tells Task to wait for completion.
90
95
  if not self.done():
@@ -291,7 +296,7 @@ class SmartTask(_SmartFutureMixin[T], asyncio.Task):
291
296
  See Also:
292
297
  - :func:`asyncio.create_task`
293
298
  """
294
- super().__init__(coro, loop=loop, name=name)
299
+ asyncio.Task.__init__(self, coro, loop=loop, name=name)
295
300
  self._waiters: Set["asyncio.Task[T]"] = set()
296
301
  self.add_done_callback(SmartTask._self_done_cleanup_callback)
297
302
 
@@ -1,8 +1,62 @@
1
1
  from typing import Any, Set
2
2
 
3
3
  AFFIRMATIVE_FLAGS: Set[str]
4
+ """Set of flags indicating synchronous behavior.
5
+
6
+ This set currently contains only the flag "sync", which is used to denote
7
+ synchronous operations within the ez-a-sync library.
8
+
9
+ Examples:
10
+ >>> 'sync' in AFFIRMATIVE_FLAGS
11
+ True
12
+
13
+ >>> 'async' in AFFIRMATIVE_FLAGS
14
+ False
15
+
16
+ See Also:
17
+ :data:`NEGATIVE_FLAGS`: Flags indicating asynchronous behavior.
18
+ :data:`VIABLE_FLAGS`: All valid flags, combining both sync and async indicators.
19
+ """
20
+
4
21
  NEGATIVE_FLAGS: Set[str]
22
+ """Set of flags indicating asynchronous behavior.
23
+
24
+ This set currently contains only the flag "asynchronous", which is used to denote
25
+ asynchronous operations within the ez-a-sync library.
26
+
27
+ Examples:
28
+ >>> 'asynchronous' in NEGATIVE_FLAGS
29
+ True
30
+
31
+ >>> 'sync' in NEGATIVE_FLAGS
32
+ False
33
+
34
+ See Also:
35
+ :data:`AFFIRMATIVE_FLAGS`: Flags indicating synchronous behavior.
36
+ :data:`VIABLE_FLAGS`: All valid flags, combining both sync and async indicators.
37
+ """
38
+
5
39
  VIABLE_FLAGS: Set[str]
40
+ """Set of all valid flags, combining both synchronous and asynchronous indicators.
41
+
42
+ The ez-a-sync library uses these flags to indicate whether objects or function
43
+ calls will be synchronous or asynchronous. You can use any of the provided flags,
44
+ whichever makes the most sense for your use case.
45
+
46
+ Examples:
47
+ >>> 'sync' in VIABLE_FLAGS
48
+ True
49
+
50
+ >>> 'asynchronous' in VIABLE_FLAGS
51
+ True
52
+
53
+ >>> 'invalid' in VIABLE_FLAGS
54
+ False
55
+
56
+ See Also:
57
+ :data:`AFFIRMATIVE_FLAGS`: Flags indicating synchronous behavior.
58
+ :data:`NEGATIVE_FLAGS`: Flags indicating asynchronous behavior.
59
+ """
6
60
 
7
61
  def negate_if_necessary(flag: str, flag_value: bool) -> bool:
8
62
  """Negate the flag value if necessary based on the flag type.