ez-a-sync 0.22.14__py3-none-any.whl → 0.22.15__py3-none-any.whl
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.
- a_sync/ENVIRONMENT_VARIABLES.py +4 -3
- a_sync/__init__.py +30 -12
- a_sync/_smart.py +132 -28
- a_sync/_typing.py +56 -12
- a_sync/a_sync/__init__.py +35 -10
- a_sync/a_sync/_descriptor.py +74 -26
- a_sync/a_sync/_flags.py +14 -6
- a_sync/a_sync/_helpers.py +8 -7
- a_sync/a_sync/_kwargs.py +3 -2
- a_sync/a_sync/_meta.py +120 -28
- a_sync/a_sync/abstract.py +102 -28
- a_sync/a_sync/base.py +34 -16
- a_sync/a_sync/config.py +47 -13
- a_sync/a_sync/decorator.py +239 -117
- a_sync/a_sync/function.py +416 -146
- a_sync/a_sync/method.py +197 -59
- a_sync/a_sync/modifiers/__init__.py +47 -5
- a_sync/a_sync/modifiers/cache/__init__.py +46 -17
- a_sync/a_sync/modifiers/cache/memory.py +86 -20
- a_sync/a_sync/modifiers/limiter.py +52 -22
- a_sync/a_sync/modifiers/manager.py +98 -16
- a_sync/a_sync/modifiers/semaphores.py +48 -15
- a_sync/a_sync/property.py +383 -82
- a_sync/a_sync/singleton.py +1 -0
- a_sync/aliases.py +0 -1
- a_sync/asyncio/__init__.py +4 -1
- a_sync/asyncio/as_completed.py +177 -49
- a_sync/asyncio/create_task.py +31 -17
- a_sync/asyncio/gather.py +72 -52
- a_sync/asyncio/utils.py +3 -3
- a_sync/exceptions.py +78 -23
- a_sync/executor.py +118 -71
- a_sync/future.py +575 -158
- a_sync/iter.py +110 -50
- a_sync/primitives/__init__.py +14 -2
- a_sync/primitives/_debug.py +13 -13
- a_sync/primitives/_loggable.py +5 -4
- a_sync/primitives/locks/__init__.py +5 -2
- a_sync/primitives/locks/counter.py +38 -36
- a_sync/primitives/locks/event.py +21 -7
- a_sync/primitives/locks/prio_semaphore.py +182 -62
- a_sync/primitives/locks/semaphore.py +78 -77
- a_sync/primitives/queue.py +560 -58
- a_sync/sphinx/__init__.py +0 -1
- a_sync/sphinx/ext.py +160 -50
- a_sync/task.py +262 -97
- a_sync/utils/__init__.py +12 -6
- a_sync/utils/iterators.py +127 -43
- {ez_a_sync-0.22.14.dist-info → ez_a_sync-0.22.15.dist-info}/METADATA +1 -1
- ez_a_sync-0.22.15.dist-info/RECORD +74 -0
- {ez_a_sync-0.22.14.dist-info → ez_a_sync-0.22.15.dist-info}/WHEEL +1 -1
- tests/conftest.py +1 -2
- tests/executor.py +112 -9
- tests/fixtures.py +61 -32
- tests/test_abstract.py +7 -4
- tests/test_as_completed.py +54 -21
- tests/test_base.py +66 -17
- tests/test_cache.py +31 -15
- tests/test_decorator.py +54 -28
- tests/test_executor.py +8 -13
- tests/test_future.py +45 -8
- tests/test_gather.py +8 -2
- tests/test_helpers.py +2 -0
- tests/test_iter.py +55 -13
- tests/test_limiter.py +5 -3
- tests/test_meta.py +23 -9
- tests/test_modified.py +4 -1
- tests/test_semaphore.py +15 -8
- tests/test_singleton.py +15 -10
- tests/test_task.py +126 -28
- ez_a_sync-0.22.14.dist-info/RECORD +0 -74
- {ez_a_sync-0.22.14.dist-info → ez_a_sync-0.22.15.dist-info}/LICENSE.txt +0 -0
- {ez_a_sync-0.22.14.dist-info → ez_a_sync-0.22.15.dist-info}/top_level.txt +0 -0
tests/test_task.py
CHANGED
|
@@ -3,43 +3,85 @@ import pytest
|
|
|
3
3
|
|
|
4
4
|
from a_sync import TaskMapping, create_task, exceptions
|
|
5
5
|
|
|
6
|
+
|
|
6
7
|
@pytest.mark.asyncio_cooperative
|
|
7
8
|
async def test_create_task():
|
|
8
|
-
|
|
9
|
+
"""Test the creation of an asynchronous task.
|
|
10
|
+
|
|
11
|
+
Verifies that a task can be created using the `create_task`
|
|
12
|
+
function with a coroutine and a specified name.
|
|
13
|
+
"""
|
|
14
|
+
t = create_task(coro=asyncio.sleep(0), name="test")
|
|
15
|
+
assert t.get_name() == "test", t
|
|
16
|
+
await t
|
|
17
|
+
|
|
9
18
|
|
|
10
19
|
@pytest.mark.asyncio_cooperative
|
|
11
20
|
async def test_persistent_task():
|
|
21
|
+
"""Test the persistence of a task without a local reference.
|
|
22
|
+
|
|
23
|
+
Checks if a task created without a local reference
|
|
24
|
+
completes successfully by setting a nonlocal variable.
|
|
25
|
+
The test ensures that the task completes by verifying
|
|
26
|
+
the change in the nonlocal variable.
|
|
27
|
+
"""
|
|
12
28
|
check = False
|
|
29
|
+
|
|
13
30
|
async def task():
|
|
14
31
|
await asyncio.sleep(1)
|
|
15
32
|
nonlocal check
|
|
16
33
|
check = True
|
|
34
|
+
|
|
17
35
|
create_task(coro=task(), skip_gc_until_done=True)
|
|
18
|
-
# there is no local reference to the newly created task. does it still complete?
|
|
36
|
+
# there is no local reference to the newly created task. does it still complete?
|
|
19
37
|
await asyncio.sleep(2)
|
|
20
38
|
assert check is True
|
|
21
39
|
|
|
40
|
+
|
|
22
41
|
@pytest.mark.asyncio_cooperative
|
|
23
42
|
async def test_pruning():
|
|
43
|
+
"""Test task creation and handling without errors.
|
|
44
|
+
|
|
45
|
+
Ensures that tasks can be created without causing errors.
|
|
46
|
+
This test does not explicitly check for task pruning.
|
|
47
|
+
"""
|
|
48
|
+
|
|
24
49
|
async def task():
|
|
25
50
|
return
|
|
51
|
+
|
|
26
52
|
create_task(coro=task(), skip_gc_until_done=True)
|
|
27
53
|
await asyncio.sleep(0)
|
|
28
54
|
# previously, it failed here
|
|
29
55
|
create_task(coro=task(), skip_gc_until_done=True)
|
|
30
56
|
|
|
57
|
+
|
|
31
58
|
@pytest.mark.asyncio_cooperative
|
|
32
59
|
async def test_task_mapping_init():
|
|
60
|
+
"""Test initialization of TaskMapping.
|
|
61
|
+
|
|
62
|
+
Verifies that the TaskMapping class initializes correctly
|
|
63
|
+
with the provided coroutine function and arguments. Checks
|
|
64
|
+
the handling of function arguments and the task name.
|
|
65
|
+
"""
|
|
33
66
|
tasks = TaskMapping(_coro_fn)
|
|
34
|
-
assert
|
|
67
|
+
assert (
|
|
68
|
+
tasks._wrapped_func is _coro_fn
|
|
69
|
+
), f"{tasks._wrapped_func} , {_coro_fn}, {tasks._wrapped_func == _coro_fn}"
|
|
35
70
|
assert tasks._wrapped_func_kwargs == {}
|
|
36
71
|
assert tasks._name is None
|
|
37
|
-
tasks = TaskMapping(_coro_fn, name=
|
|
38
|
-
assert tasks._wrapped_func_kwargs == {
|
|
72
|
+
tasks = TaskMapping(_coro_fn, name="test", kwarg0=1, kwarg1=None)
|
|
73
|
+
assert tasks._wrapped_func_kwargs == {"kwarg0": 1, "kwarg1": None}
|
|
39
74
|
assert tasks._name == "test"
|
|
40
75
|
|
|
76
|
+
|
|
41
77
|
@pytest.mark.asyncio_cooperative
|
|
42
78
|
async def test_task_mapping():
|
|
79
|
+
"""Test the functionality of TaskMapping.
|
|
80
|
+
|
|
81
|
+
Checks the behavior of TaskMapping, including task
|
|
82
|
+
creation, retrieval, and execution. Verifies the ability
|
|
83
|
+
to await the mapping and checks the return values of tasks.
|
|
84
|
+
"""
|
|
43
85
|
tasks = TaskMapping(_coro_fn)
|
|
44
86
|
# does it return the correct type
|
|
45
87
|
assert isinstance(tasks[0], asyncio.Task)
|
|
@@ -52,11 +94,25 @@ async def test_task_mapping():
|
|
|
52
94
|
# can we await the mapping?
|
|
53
95
|
assert await tasks == {0: "1", 1: "22"}
|
|
54
96
|
# can we await one from scratch?
|
|
55
|
-
assert await TaskMapping(_coro_fn, range(5)) == {
|
|
97
|
+
assert await TaskMapping(_coro_fn, range(5)) == {
|
|
98
|
+
0: "1",
|
|
99
|
+
1: "22",
|
|
100
|
+
2: "333",
|
|
101
|
+
3: "4444",
|
|
102
|
+
4: "55555",
|
|
103
|
+
}
|
|
56
104
|
assert len(tasks) == 2
|
|
57
|
-
|
|
105
|
+
|
|
106
|
+
|
|
58
107
|
@pytest.mark.asyncio_cooperative
|
|
59
108
|
async def test_task_mapping_map_with_sync_iter():
|
|
109
|
+
"""Test TaskMapping with a synchronous iterator.
|
|
110
|
+
|
|
111
|
+
Verifies that TaskMapping can map over a synchronous
|
|
112
|
+
iterator and correctly handle keys, values, and items.
|
|
113
|
+
Ensures that mapping in progress raises a RuntimeError
|
|
114
|
+
when attempted concurrently.
|
|
115
|
+
"""
|
|
60
116
|
tasks = TaskMapping(_coro_fn)
|
|
61
117
|
i = 0
|
|
62
118
|
async for k, v in tasks.map(range(5)):
|
|
@@ -69,9 +125,9 @@ async def test_task_mapping_map_with_sync_iter():
|
|
|
69
125
|
...
|
|
70
126
|
i += 1
|
|
71
127
|
tasks = TaskMapping(_coro_fn)
|
|
72
|
-
async for k in tasks.map(range(5), pop=False, yields=
|
|
128
|
+
async for k in tasks.map(range(5), pop=False, yields="keys"):
|
|
73
129
|
assert isinstance(k, int)
|
|
74
|
-
|
|
130
|
+
|
|
75
131
|
# test keys
|
|
76
132
|
for k in tasks.keys():
|
|
77
133
|
assert isinstance(k, int)
|
|
@@ -81,7 +137,7 @@ async def test_task_mapping_map_with_sync_iter():
|
|
|
81
137
|
assert isinstance(k, int)
|
|
82
138
|
async for k in tasks.keys():
|
|
83
139
|
assert isinstance(k, int)
|
|
84
|
-
|
|
140
|
+
|
|
85
141
|
# test values
|
|
86
142
|
for v in tasks.values():
|
|
87
143
|
assert isinstance(v, asyncio.Future)
|
|
@@ -92,7 +148,7 @@ async def test_task_mapping_map_with_sync_iter():
|
|
|
92
148
|
assert isinstance(v, str)
|
|
93
149
|
async for v in tasks.values():
|
|
94
150
|
assert isinstance(v, str)
|
|
95
|
-
|
|
151
|
+
|
|
96
152
|
# test items
|
|
97
153
|
for k, v in tasks.items():
|
|
98
154
|
assert isinstance(k, int)
|
|
@@ -106,12 +162,22 @@ async def test_task_mapping_map_with_sync_iter():
|
|
|
106
162
|
async for k, v in tasks.items():
|
|
107
163
|
assert isinstance(k, int)
|
|
108
164
|
assert isinstance(v, str)
|
|
109
|
-
|
|
165
|
+
|
|
166
|
+
|
|
110
167
|
@pytest.mark.asyncio_cooperative
|
|
111
168
|
async def test_task_mapping_map_with_async_iter():
|
|
169
|
+
"""Test TaskMapping with an asynchronous iterator.
|
|
170
|
+
|
|
171
|
+
Verifies that TaskMapping can map over an asynchronous
|
|
172
|
+
iterator and correctly handle keys, values, and items.
|
|
173
|
+
Ensures that mapping in progress raises a RuntimeError
|
|
174
|
+
when attempted concurrently.
|
|
175
|
+
"""
|
|
176
|
+
|
|
112
177
|
async def async_iter():
|
|
113
178
|
for i in range(5):
|
|
114
179
|
yield i
|
|
180
|
+
|
|
115
181
|
tasks = TaskMapping(_coro_fn)
|
|
116
182
|
i = 0
|
|
117
183
|
async for k, v in tasks.map(async_iter()):
|
|
@@ -124,9 +190,9 @@ async def test_task_mapping_map_with_async_iter():
|
|
|
124
190
|
...
|
|
125
191
|
i += 1
|
|
126
192
|
tasks = TaskMapping(_coro_fn)
|
|
127
|
-
async for k in tasks.map(async_iter(), pop=False, yields=
|
|
193
|
+
async for k in tasks.map(async_iter(), pop=False, yields="keys"):
|
|
128
194
|
assert isinstance(k, int)
|
|
129
|
-
|
|
195
|
+
|
|
130
196
|
# test keys
|
|
131
197
|
for k in tasks.keys():
|
|
132
198
|
assert isinstance(k, int)
|
|
@@ -138,9 +204,13 @@ async def test_task_mapping_map_with_async_iter():
|
|
|
138
204
|
assert isinstance(k, int)
|
|
139
205
|
assert await tasks.keys().aiterbykeys() == list(range(5))
|
|
140
206
|
assert await tasks.keys().aiterbyvalues() == list(range(5))
|
|
141
|
-
assert await tasks.keys().aiterbykeys(reverse=True) == sorted(
|
|
142
|
-
|
|
143
|
-
|
|
207
|
+
assert await tasks.keys().aiterbykeys(reverse=True) == sorted(
|
|
208
|
+
range(5), reverse=True
|
|
209
|
+
)
|
|
210
|
+
assert await tasks.keys().aiterbyvalues(reverse=True) == sorted(
|
|
211
|
+
range(5), reverse=True
|
|
212
|
+
)
|
|
213
|
+
|
|
144
214
|
# test values
|
|
145
215
|
for v in tasks.values():
|
|
146
216
|
assert isinstance(v, asyncio.Future)
|
|
@@ -153,9 +223,13 @@ async def test_task_mapping_map_with_async_iter():
|
|
|
153
223
|
assert isinstance(v, str)
|
|
154
224
|
assert await tasks.values().aiterbykeys() == [str(i) * i for i in range(1, 6)]
|
|
155
225
|
assert await tasks.values().aiterbyvalues() == [str(i) * i for i in range(1, 6)]
|
|
156
|
-
assert await tasks.values().aiterbykeys(reverse=True) == [
|
|
157
|
-
|
|
158
|
-
|
|
226
|
+
assert await tasks.values().aiterbykeys(reverse=True) == [
|
|
227
|
+
str(i) * i for i in sorted(range(1, 6), reverse=True)
|
|
228
|
+
]
|
|
229
|
+
assert await tasks.values().aiterbyvalues(reverse=True) == [
|
|
230
|
+
str(i) * i for i in sorted(range(1, 6), reverse=True)
|
|
231
|
+
]
|
|
232
|
+
|
|
159
233
|
# test items
|
|
160
234
|
for k, v in tasks.items():
|
|
161
235
|
assert isinstance(k, int)
|
|
@@ -169,20 +243,35 @@ async def test_task_mapping_map_with_async_iter():
|
|
|
169
243
|
async for k, v in tasks.items():
|
|
170
244
|
assert isinstance(k, int)
|
|
171
245
|
assert isinstance(v, str)
|
|
172
|
-
assert await tasks.items().aiterbykeys() == [
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
assert await tasks.items(
|
|
246
|
+
assert await tasks.items().aiterbykeys() == [
|
|
247
|
+
(i, str(i + 1) * (i + 1)) for i in range(5)
|
|
248
|
+
]
|
|
249
|
+
assert await tasks.items().aiterbyvalues() == [
|
|
250
|
+
(i, str(i + 1) * (i + 1)) for i in range(5)
|
|
251
|
+
]
|
|
252
|
+
assert await tasks.items().aiterbykeys(reverse=True) == [
|
|
253
|
+
(i, str(i + 1) * (i + 1)) for i in sorted(range(5), reverse=True)
|
|
254
|
+
]
|
|
255
|
+
assert await tasks.items(pop=True).aiterbyvalues(reverse=True) == [
|
|
256
|
+
(i, str(i + 1) * (i + 1)) for i in sorted(range(5), reverse=True)
|
|
257
|
+
]
|
|
176
258
|
assert not tasks # did pop work?
|
|
177
259
|
|
|
260
|
+
|
|
178
261
|
def test_taskmapping_views_sync():
|
|
262
|
+
"""Test synchronous views of TaskMapping.
|
|
263
|
+
|
|
264
|
+
Checks the synchronous access to keys, values, and items
|
|
265
|
+
in TaskMapping. Verifies the state of these views before
|
|
266
|
+
and after gathering tasks.
|
|
267
|
+
"""
|
|
179
268
|
tasks = TaskMapping(_coro_fn, range(5))
|
|
180
|
-
|
|
269
|
+
|
|
181
270
|
# keys are currently empty until the loop has a chance to run
|
|
182
271
|
assert len(tasks.keys()) == 0
|
|
183
272
|
assert len(tasks.values()) == 0
|
|
184
273
|
assert len(tasks.items()) == 0
|
|
185
|
-
|
|
274
|
+
|
|
186
275
|
tasks.gather()
|
|
187
276
|
|
|
188
277
|
assert len(tasks.keys()) == 5
|
|
@@ -195,16 +284,25 @@ def test_taskmapping_views_sync():
|
|
|
195
284
|
# test values
|
|
196
285
|
for v in tasks.values():
|
|
197
286
|
assert isinstance(v, asyncio.Future)
|
|
198
|
-
|
|
287
|
+
|
|
199
288
|
# test items
|
|
200
289
|
for k, v in tasks.items():
|
|
201
290
|
assert isinstance(k, int)
|
|
202
291
|
assert isinstance(v, asyncio.Future)
|
|
203
|
-
|
|
292
|
+
|
|
204
293
|
assert len(tasks.keys()) == 5
|
|
205
294
|
for k in tasks.keys():
|
|
206
295
|
assert isinstance(k, int)
|
|
207
296
|
|
|
297
|
+
|
|
208
298
|
async def _coro_fn(i: int) -> str:
|
|
299
|
+
"""Coroutine function for testing.
|
|
300
|
+
|
|
301
|
+
Args:
|
|
302
|
+
i: An integer input.
|
|
303
|
+
|
|
304
|
+
Returns:
|
|
305
|
+
A string representation of the incremented input.
|
|
306
|
+
"""
|
|
209
307
|
i += 1
|
|
210
308
|
return str(i) * i
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
a_sync/ENVIRONMENT_VARIABLES.py,sha256=mbOTOeyDyc90OA0CcTNzaOHKm3YT3myanQvVcefdtBU,462
|
|
2
|
-
a_sync/__init__.py,sha256=iPrNPP5i2H02HmX050hz-XqAYwAwrlyh3hkXRegdy7E,2204
|
|
3
|
-
a_sync/_smart.py,sha256=mZ7zD8usbRG3dEjddwnz46gwFxcDjPri6na7vCPX9hw,6989
|
|
4
|
-
a_sync/_typing.py,sha256=GTCqBBgeCGoB_wLb0WoizBrrYf2a-2GXgK82CZQKP2E,5368
|
|
5
|
-
a_sync/aliases.py,sha256=kkv7JGdlJeyy2x8JauCy3D6spbYBCTMgNtC_QrT118s,213
|
|
6
|
-
a_sync/exceptions.py,sha256=0VHUEBgTVmaF8LIuFINCv1YCuC_GfCJgmwnPP3I9HRI,6597
|
|
7
|
-
a_sync/executor.py,sha256=ztaDCWQnQKoxrMHuEKPH1lm-gJWYinNjCeOTa3riBbk,13433
|
|
8
|
-
a_sync/future.py,sha256=zQy3Gv1UvX399Yx5-W-ygxYZSS_C3aEhQlEz8gyoB90,26093
|
|
9
|
-
a_sync/iter.py,sha256=riMXy2RSxmOtgv-L521YSWSTeZ8QXWhc8irU6mjEgkk,20804
|
|
10
|
-
a_sync/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
11
|
-
a_sync/task.py,sha256=FEf788GSKzBCOqjtljlqKlisT5ZyK_kCa-d_-KTSuOc,28213
|
|
12
|
-
a_sync/a_sync/__init__.py,sha256=V93WFLhKbDR9oSegknq6ub-M85HT983eIt_Tov0Reos,1092
|
|
13
|
-
a_sync/a_sync/_descriptor.py,sha256=jhcPnzJ3PJ4o7l_wf5DbmH-sKQxS14Yd1uh_riYq_rU,7851
|
|
14
|
-
a_sync/a_sync/_flags.py,sha256=2-97KHE-Hjb5RPnx4AU2h5TJ2nR7tBdnzqHWvkLgOs8,1669
|
|
15
|
-
a_sync/a_sync/_helpers.py,sha256=z6TRvqlXUdLKRyw0ZCZyzY6FvkNyoGt8_XgEGjV-UaU,1837
|
|
16
|
-
a_sync/a_sync/_kwargs.py,sha256=szblXLK1LF2S71LsLGQTCFM4v9E0xJP-rdkL6O2xKJo,1378
|
|
17
|
-
a_sync/a_sync/_meta.py,sha256=0rNZ1jZMhsHlxXsKeU88B5xOW8PMcis2Y8vbK0ZzrrM,5973
|
|
18
|
-
a_sync/a_sync/abstract.py,sha256=PzT_Uo7F4DR6cU1CGl8q_bFOiw95qbXnzCZXt_HfN0g,3261
|
|
19
|
-
a_sync/a_sync/base.py,sha256=qE7p2nXmpwpMulCnZcBV1I5sXiWGtcmtAEZVrqAt0rc,7363
|
|
20
|
-
a_sync/a_sync/config.py,sha256=b9YDs3cjoyxiwxIEld78dyVWsv1rGZMLutJVQauT29Y,2764
|
|
21
|
-
a_sync/a_sync/decorator.py,sha256=s_KqDzIki3NvsXnjd9dlUnHgmOlM8HwcjOjl9rlzOK0,8424
|
|
22
|
-
a_sync/a_sync/function.py,sha256=94qtv62rgJmIOwwYLdaTth53HJ3a_VSR4dDnwqpg-PU,28643
|
|
23
|
-
a_sync/a_sync/method.py,sha256=Iq1FaklAzBavNHIR9FHwRVik1dAGlAPhOhsjMrWZtWU,23291
|
|
24
|
-
a_sync/a_sync/property.py,sha256=--JEWuGLI47kV9-LL2psW5R6u1dlSgGISNgy-ZChCmA,18151
|
|
25
|
-
a_sync/a_sync/singleton.py,sha256=dHFwuSkOYP58Dn_I6zciMpJmeG1ENMOjJ1j8lOFQrl0,1459
|
|
26
|
-
a_sync/a_sync/modifiers/__init__.py,sha256=0kOpApvcDIBr37645vY50aG6lIdccNG_IupZZsAawBM,1052
|
|
27
|
-
a_sync/a_sync/modifiers/limiter.py,sha256=WtMh-F_4O6kxAYGiCKTnTYu2RrPQNov3dDYB4OTigjk,1763
|
|
28
|
-
a_sync/a_sync/modifiers/manager.py,sha256=Taknn8MjVbelzmRECd7mNvcSi-eX9_SZpW11bEWN8UQ,3637
|
|
29
|
-
a_sync/a_sync/modifiers/semaphores.py,sha256=zgIzzJ_c1UuJRMb6wMQ3D5PlCK-FaYkC0jnQsd02n0M,2446
|
|
30
|
-
a_sync/a_sync/modifiers/cache/__init__.py,sha256=cvjf_-M_UQFWXCs6NjEknlGT8Mq5tOuNDaU6zYw3kaQ,1838
|
|
31
|
-
a_sync/a_sync/modifiers/cache/memory.py,sha256=jA_GxZWxLIUxcOA8ji0EBnhqfZYlmOh2TIXABa-Zzso,1648
|
|
32
|
-
a_sync/asyncio/__init__.py,sha256=mgT590EGauaw_u-bknTKJUYX4-tvd7pHXH4hQr4GQcs,366
|
|
33
|
-
a_sync/asyncio/as_completed.py,sha256=BYSmJXXtMP5bu1M95-PUQX4rGAO82eKdXh94NM8wKFQ,7761
|
|
34
|
-
a_sync/asyncio/create_task.py,sha256=xhV_AlCldNffLQW1Ex_JmuxaFC2TNDT5WA8dVkXFacY,3591
|
|
35
|
-
a_sync/asyncio/gather.py,sha256=EyrYLJ5gyY1WQdYvRw0shmS9HcsQqnYG3rrIkNpzjwM,5622
|
|
36
|
-
a_sync/asyncio/utils.py,sha256=v4b3XtNyDEtW-wTRnM3snwx1A9vAzPcE17-KZon2L5U,389
|
|
37
|
-
a_sync/primitives/__init__.py,sha256=X0Ijv35WmfNnjlIzqX8a-2RPUwV5dC5HXPumzAqCJT8,442
|
|
38
|
-
a_sync/primitives/_debug.py,sha256=QOeb5Y2HQz_7eEpdKK2oGh6Q4fbYP2dNPFktfKfrN24,3121
|
|
39
|
-
a_sync/primitives/_loggable.py,sha256=2ojtipyqwLSAwleipDyvUjl_an3Jhic4-RbO4x7uO_Q,1217
|
|
40
|
-
a_sync/primitives/queue.py,sha256=wS1DekEG6Lj-3mS5YFOw5OJVM_dsEQA15pOPqLgjjjE,15907
|
|
41
|
-
a_sync/primitives/locks/__init__.py,sha256=yKzj48RBl1einM4YIUGp5tRm3QgBpmKz2WAr601oLz4,267
|
|
42
|
-
a_sync/primitives/locks/counter.py,sha256=J8kEv534IcRbL9r-CxU35ujQUwPkgnXHqNCD2otf0p8,5031
|
|
43
|
-
a_sync/primitives/locks/event.py,sha256=fKXP5d89ux5B-JJEWje0UZpldLkNyGZJ4aqALDHWQss,2888
|
|
44
|
-
a_sync/primitives/locks/prio_semaphore.py,sha256=IB850luLM-S8rFywh9Ed2_4z8d9Ux3qlsjDD4JcczR4,8238
|
|
45
|
-
a_sync/primitives/locks/semaphore.py,sha256=oIFoIOj2KyBPWtWUJKcq0Las7nLpuu53BwoUy3Dd6sA,6382
|
|
46
|
-
a_sync/sphinx/__init__.py,sha256=VcgVF_ea4HAVNxb8KXX-_fcLviBQGnN9OIRWaUjPhy4,50
|
|
47
|
-
a_sync/sphinx/ext.py,sha256=UjPf7s57mAOpzOSWyxv58pel022XADxUrnL-tRjZIvw,6586
|
|
48
|
-
a_sync/utils/__init__.py,sha256=MP2jX5G8-3WQSF3VxRNFQvbPFdlPPKBrd6rlcLqT9oM,3048
|
|
49
|
-
a_sync/utils/iterators.py,sha256=5GGWSFrO_bAcCK3JHLOVlfMQCkWJpe_Qt01ru2olRm0,8769
|
|
50
|
-
tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
51
|
-
tests/conftest.py,sha256=Q7w6vrh3acUxttLU7Qx35KQS8jeV4ENQ7wzerK0OfLU,57
|
|
52
|
-
tests/executor.py,sha256=quJtFDPFLkhPXrYVWYM1F4NJ1DCeG4XxMz9MLcyx5zg,239
|
|
53
|
-
tests/fixtures.py,sha256=FcapEGhPmQFxcGm953AIdkBNWAXSq2T4m-QzEA20XWw,5532
|
|
54
|
-
tests/test_abstract.py,sha256=OPkHLFw7jI2xVmSHtEZLbslrCadAdf--wxqMtljthpc,518
|
|
55
|
-
tests/test_as_completed.py,sha256=t7_3n0XRe6Yeac4YXBF1pTX0kMhXANpPZVWWjZwsqYY,4328
|
|
56
|
-
tests/test_base.py,sha256=RUnnMk-WttX4g4z7aVtag_ofa4_E_4JKnTkMqsn5MCQ,8702
|
|
57
|
-
tests/test_cache.py,sha256=9GjBHBhPBAuabuzag2pVWSD468EMs3tGYd4ODIeo9-U,2489
|
|
58
|
-
tests/test_decorator.py,sha256=T5ZwLGOwFOmVi9cO6KV1V6houI10ftdXaG1sOpl4jqs,3684
|
|
59
|
-
tests/test_executor.py,sha256=LUa9tLtgG4SKBUQ9Llf2xIWFIIGrTcERlUzV3P_su8o,1164
|
|
60
|
-
tests/test_future.py,sha256=-rxexe_KNtYvIKuTuyHp3bTa7shF18_CylhxHAhyZIs,3405
|
|
61
|
-
tests/test_gather.py,sha256=W4V5NXwIkdDFJv-DVIP6D6bJ_2JboUfbU3xY7BL4CBQ,1376
|
|
62
|
-
tests/test_helpers.py,sha256=kUGnPvq71DxBDbZfSO0czr6cjv_gsIOLki0G58caBz8,347
|
|
63
|
-
tests/test_iter.py,sha256=OfB865Favt2bHsRgLOJfmMYS4joHfq4g7DF6umxpJAY,8908
|
|
64
|
-
tests/test_limiter.py,sha256=l2L4EZtDntkrnbRpMLJ-a5J2rgvUVUO8ao5x_8eXFlA,835
|
|
65
|
-
tests/test_meta.py,sha256=1EmUjgGlHfAwSZQfBZiBKyb_umeHvRrTPm1t4pFblPI,3569
|
|
66
|
-
tests/test_modified.py,sha256=H_Z98JNvy1Ze2Qae6Jgyo1gPqOGycVkwmGutrSmnQmk,247
|
|
67
|
-
tests/test_semaphore.py,sha256=pncCO3Y_xus9f85nCPY6Pr4WbUbHpNZNT5tBgwUAbZA,1628
|
|
68
|
-
tests/test_singleton.py,sha256=KGLLWr4eM3PHh_MBDubseTxAaS0r7Bddal2wY-qY4oA,539
|
|
69
|
-
tests/test_task.py,sha256=BpODWsy6I2LAZ4VZ4SGa4R6rly1U10gz0JjIPoW6GrI,7389
|
|
70
|
-
ez_a_sync-0.22.14.dist-info/LICENSE.txt,sha256=1on6-17OUMlja6vSPTcmlmeT_DwujCZJijYxaplBvZk,1075
|
|
71
|
-
ez_a_sync-0.22.14.dist-info/METADATA,sha256=T7dTZsYrPCtWhBGwFLBvXZwiYn8qdueqHxPkuc3HTpo,533
|
|
72
|
-
ez_a_sync-0.22.14.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
|
|
73
|
-
ez_a_sync-0.22.14.dist-info/top_level.txt,sha256=GVK_7kp7dgBLeHp84iIQdsJmiXnrXd-5sIf2x0Q-VKc,13
|
|
74
|
-
ez_a_sync-0.22.14.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|