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.
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/PKG-INFO +1 -1
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/__init__.py +1 -1
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/_smart.py +8 -3
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/_flags.pyi +54 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/_kwargs.c +355 -305
- ez_a_sync-0.23.11/a_sync/a_sync/_kwargs.pxd +2 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/_kwargs.pyx +6 -3
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/abstract.c +412 -479
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/abstract.pyx +6 -7
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/base.py +4 -6
- ez_a_sync-0.23.11/a_sync/a_sync/function.c +33599 -0
- ez_a_sync-0.23.11/a_sync/a_sync/function.pyi +566 -0
- 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
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/method.c +2251 -1946
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/method.pxd +1 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/method.pyx +26 -19
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/property.c +2139 -2789
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/property.pyx +5 -23
- ez_a_sync-0.23.11/a_sync/asyncio/create_task.c +13090 -0
- ez_a_sync-0.23.11/a_sync/asyncio/create_task.pxd +2 -0
- ez_a_sync-0.23.11/a_sync/asyncio/create_task.pyi +46 -0
- 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
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/future.py +2 -1
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/iter.py +5 -4
- ez_a_sync-0.23.11/a_sync/primitives/_debug.c +11999 -0
- ez_a_sync-0.23.11/a_sync/primitives/_debug.pyi +12 -0
- ez_a_sync-0.23.9/a_sync/primitives/_debug.py → ez_a_sync-0.23.11/a_sync/primitives/_debug.pyx +5 -3
- ez_a_sync-0.23.11/a_sync/primitives/_loggable.c +8151 -0
- ez_a_sync-0.23.11/a_sync/primitives/_loggable.pyi +62 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/primitives/queue.py +3 -3
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/task.py +26 -13
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/utils/iterators.py +2 -1
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/docs/conf.py +1 -1
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/ez_a_sync.egg-info/PKG-INFO +1 -1
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/ez_a_sync.egg-info/SOURCES.txt +13 -4
- ez_a_sync-0.23.9/a_sync/a_sync/_kwargs.pxd +0 -1
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/.coverage +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/.github/workflows/black.yaml +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/.github/workflows/codeql.yaml +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/.github/workflows/docs.yaml +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/.github/workflows/mypy.yaml +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/.github/workflows/pytest.yaml +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/.github/workflows/release.yaml +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/.gitignore +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/.sourcery.yaml +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/LICENSE.txt +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/Makefile +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/README.md +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/TODO +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/ENVIRONMENT_VARIABLES.py +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/_typing.py +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/__init__.py +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/_descriptor.py +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/_flags.c +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/_flags.pxd +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/_flags.pyx +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/_helpers.py +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/_kwargs.pyi +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/_meta.py +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/abstract.pyi +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/config.py +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/decorator.py +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/method.pyi +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/modifiers/__init__.py +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/modifiers/cache/__init__.py +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/modifiers/cache/memory.py +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/modifiers/limiter.py +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/modifiers/manager.c +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/modifiers/manager.pyi +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/modifiers/manager.pyx +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/modifiers/semaphores.py +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/property.pyi +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/a_sync/singleton.py +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/aliases.py +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/asyncio/__init__.py +1 -1
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/asyncio/as_completed.py +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/asyncio/gather.py +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/asyncio/utils.py +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/exceptions.py +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/executor.py +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/primitives/__init__.py +0 -0
- /ez_a_sync-0.23.9/a_sync/primitives/_loggable.py → /ez_a_sync-0.23.11/a_sync/primitives/_loggable.pyx +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/primitives/locks/__init__.py +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/primitives/locks/counter.py +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/primitives/locks/event.py +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/primitives/locks/prio_semaphore.py +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/primitives/locks/semaphore.py +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/py.typed +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/sphinx/__init__.py +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/sphinx/ext.py +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/a_sync/utils/__init__.py +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/docs/Makefile +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/docs/_build/html/_static/alabaster.css +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/docs/_build/html/_static/basic.css +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/docs/_build/html/_static/custom.css +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/docs/_build/html/_static/doctools.js +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/docs/_build/html/_static/documentation_options.js +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/docs/_build/html/_static/file.png +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/docs/_build/html/_static/language_data.js +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/docs/_build/html/_static/minus.png +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/docs/_build/html/_static/plus.png +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/docs/_build/html/_static/pygments.css +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/docs/_build/html/_static/searchtools.js +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/docs/_build/html/_static/sphinx_highlight.js +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/docs/index.rst +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/docs/make.bat +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/ez_a_sync.egg-info/dependency_links.txt +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/ez_a_sync.egg-info/not-zip-safe +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/ez_a_sync.egg-info/requires.txt +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/ez_a_sync.egg-info/top_level.txt +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/pyproject.yaml +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/requirements-dev.txt +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/requirements.txt +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/setup.cfg +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/setup.py +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/tests/__init__.py +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/tests/conftest.py +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/tests/executor.py +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/tests/fixtures.py +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/tests/test_abstract.py +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/tests/test_as_completed.py +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/tests/test_base.py +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/tests/test_cache.py +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/tests/test_decorator.py +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/tests/test_executor.py +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/tests/test_future.py +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/tests/test_gather.py +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/tests/test_helpers.py +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/tests/test_iter.py +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/tests/test_limiter.py +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/tests/test_meta.py +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/tests/test_modified.py +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/tests/test_semaphore.py +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/tests/test_singleton.py +0 -0
- {ez_a_sync-0.23.9 → ez_a_sync-0.23.11}/tests/test_task.py +0 -0
|
@@ -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
|
|
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
|
-
|
|
87
|
-
|
|
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
|
-
|
|
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.
|