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.

Files changed (73) hide show
  1. a_sync/ENVIRONMENT_VARIABLES.py +4 -3
  2. a_sync/__init__.py +30 -12
  3. a_sync/_smart.py +132 -28
  4. a_sync/_typing.py +56 -12
  5. a_sync/a_sync/__init__.py +35 -10
  6. a_sync/a_sync/_descriptor.py +74 -26
  7. a_sync/a_sync/_flags.py +14 -6
  8. a_sync/a_sync/_helpers.py +8 -7
  9. a_sync/a_sync/_kwargs.py +3 -2
  10. a_sync/a_sync/_meta.py +120 -28
  11. a_sync/a_sync/abstract.py +102 -28
  12. a_sync/a_sync/base.py +34 -16
  13. a_sync/a_sync/config.py +47 -13
  14. a_sync/a_sync/decorator.py +239 -117
  15. a_sync/a_sync/function.py +416 -146
  16. a_sync/a_sync/method.py +197 -59
  17. a_sync/a_sync/modifiers/__init__.py +47 -5
  18. a_sync/a_sync/modifiers/cache/__init__.py +46 -17
  19. a_sync/a_sync/modifiers/cache/memory.py +86 -20
  20. a_sync/a_sync/modifiers/limiter.py +52 -22
  21. a_sync/a_sync/modifiers/manager.py +98 -16
  22. a_sync/a_sync/modifiers/semaphores.py +48 -15
  23. a_sync/a_sync/property.py +383 -82
  24. a_sync/a_sync/singleton.py +1 -0
  25. a_sync/aliases.py +0 -1
  26. a_sync/asyncio/__init__.py +4 -1
  27. a_sync/asyncio/as_completed.py +177 -49
  28. a_sync/asyncio/create_task.py +31 -17
  29. a_sync/asyncio/gather.py +72 -52
  30. a_sync/asyncio/utils.py +3 -3
  31. a_sync/exceptions.py +78 -23
  32. a_sync/executor.py +118 -71
  33. a_sync/future.py +575 -158
  34. a_sync/iter.py +110 -50
  35. a_sync/primitives/__init__.py +14 -2
  36. a_sync/primitives/_debug.py +13 -13
  37. a_sync/primitives/_loggable.py +5 -4
  38. a_sync/primitives/locks/__init__.py +5 -2
  39. a_sync/primitives/locks/counter.py +38 -36
  40. a_sync/primitives/locks/event.py +21 -7
  41. a_sync/primitives/locks/prio_semaphore.py +182 -62
  42. a_sync/primitives/locks/semaphore.py +78 -77
  43. a_sync/primitives/queue.py +560 -58
  44. a_sync/sphinx/__init__.py +0 -1
  45. a_sync/sphinx/ext.py +160 -50
  46. a_sync/task.py +262 -97
  47. a_sync/utils/__init__.py +12 -6
  48. a_sync/utils/iterators.py +127 -43
  49. {ez_a_sync-0.22.14.dist-info → ez_a_sync-0.22.15.dist-info}/METADATA +1 -1
  50. ez_a_sync-0.22.15.dist-info/RECORD +74 -0
  51. {ez_a_sync-0.22.14.dist-info → ez_a_sync-0.22.15.dist-info}/WHEEL +1 -1
  52. tests/conftest.py +1 -2
  53. tests/executor.py +112 -9
  54. tests/fixtures.py +61 -32
  55. tests/test_abstract.py +7 -4
  56. tests/test_as_completed.py +54 -21
  57. tests/test_base.py +66 -17
  58. tests/test_cache.py +31 -15
  59. tests/test_decorator.py +54 -28
  60. tests/test_executor.py +8 -13
  61. tests/test_future.py +45 -8
  62. tests/test_gather.py +8 -2
  63. tests/test_helpers.py +2 -0
  64. tests/test_iter.py +55 -13
  65. tests/test_limiter.py +5 -3
  66. tests/test_meta.py +23 -9
  67. tests/test_modified.py +4 -1
  68. tests/test_semaphore.py +15 -8
  69. tests/test_singleton.py +15 -10
  70. tests/test_task.py +126 -28
  71. ez_a_sync-0.22.14.dist-info/RECORD +0 -74
  72. {ez_a_sync-0.22.14.dist-info → ez_a_sync-0.22.15.dist-info}/LICENSE.txt +0 -0
  73. {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
- await create_task(coro=asyncio.sleep(0), name='test')
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 tasks._wrapped_func is _coro_fn, f"{tasks._wrapped_func} , {_coro_fn}, {tasks._wrapped_func == _coro_fn}"
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='test', kwarg0=1, kwarg1=None)
38
- assert tasks._wrapped_func_kwargs == {'kwarg0': 1, 'kwarg1': None}
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)) == {0: "1", 1: "22", 2: "333", 3: "4444", 4: "55555"}
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='keys'):
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='keys'):
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(range(5), reverse=True)
142
- assert await tasks.keys().aiterbyvalues(reverse=True) == sorted(range(5), reverse=True)
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) == [str(i) * i for i in sorted(range(1, 6), reverse=True)]
157
- assert await tasks.values().aiterbyvalues(reverse=True) == [str(i) * i for i in sorted(range(1, 6), reverse=True)]
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() == [(i, str(i+1) * (i+1)) for i in range(5)]
173
- assert await tasks.items().aiterbyvalues() == [(i, str(i+1) * (i+1)) for i in range(5)]
174
- assert await tasks.items().aiterbykeys(reverse=True) == [(i, str(i+1) * (i+1)) for i in sorted(range(5), reverse=True)]
175
- assert await tasks.items(pop=True).aiterbyvalues(reverse=True) == [(i, str(i+1) * (i+1)) for i in sorted(range(5), reverse=True)]
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,,