xoscar 0.1.4__cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl → 0.2.1__cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.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 xoscar might be problematic. Click here for more details.

xoscar/__init__.py CHANGED
@@ -32,6 +32,7 @@ from .api import (
32
32
  setup_cluster,
33
33
  wait_actor_pool_recovered,
34
34
  get_pool_config,
35
+ generator,
35
36
  )
36
37
  from .backends import allocate_strategy
37
38
  from .backends.pool import MainActorPoolType
xoscar/api.py CHANGED
@@ -15,9 +15,26 @@
15
15
 
16
16
  from __future__ import annotations
17
17
 
18
+ import asyncio
19
+ import functools
20
+ import inspect
21
+ import logging
22
+ import threading
23
+ import uuid
18
24
  from collections import defaultdict
19
25
  from numbers import Number
20
- from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple, Type, Union
26
+ from typing import (
27
+ TYPE_CHECKING,
28
+ Any,
29
+ Dict,
30
+ Generic,
31
+ List,
32
+ Optional,
33
+ Tuple,
34
+ Type,
35
+ TypeVar,
36
+ Union,
37
+ )
21
38
  from urllib.parse import urlparse
22
39
 
23
40
  from .aio import AioFileObject
@@ -29,6 +46,8 @@ if TYPE_CHECKING:
29
46
  from .backends.config import ActorPoolConfig
30
47
  from .backends.pool import MainActorPoolType
31
48
 
49
+ logger = logging.getLogger(__name__)
50
+
32
51
 
33
52
  async def create_actor(
34
53
  actor_cls: Type, *args, uid=None, address=None, **kwargs
@@ -271,6 +290,61 @@ def setup_cluster(address_to_resources: Dict[str, Dict[str, Number]]):
271
290
  get_backend(scheme).get_driver_cls().setup_cluster(address_resources)
272
291
 
273
292
 
293
+ T = TypeVar("T")
294
+
295
+
296
+ class IteratorWrapper(Generic[T]):
297
+ def __init__(self, uid: str, actor_addr: str, actor_uid: str):
298
+ self._uid = uid
299
+ self._actor_addr = actor_addr
300
+ self._actor_uid = actor_uid
301
+ self._actor_ref = None
302
+ self._gc_destroy = True
303
+
304
+ async def destroy(self):
305
+ if self._actor_ref is None:
306
+ self._actor_ref = await actor_ref(
307
+ address=self._actor_addr, uid=self._actor_uid
308
+ )
309
+ assert self._actor_ref is not None
310
+ return await self._actor_ref.__xoscar_destroy_generator__(self._uid)
311
+
312
+ def __del__(self):
313
+ # It's not a good idea to spawn a new thread and join in __del__,
314
+ # but currently it's the only way to GC the generator.
315
+ # TODO(codingl2k1): This __del__ may hangs if the program is exiting.
316
+ if self._gc_destroy:
317
+ thread = threading.Thread(
318
+ target=asyncio.run, args=(self.destroy(),), daemon=True
319
+ )
320
+ thread.start()
321
+ thread.join()
322
+
323
+ def __aiter__(self):
324
+ return self
325
+
326
+ def __getstate__(self):
327
+ # Transfer gc destroy during serialization.
328
+ state = self.__dict__.copy()
329
+ state["_gc_destroy"] = True
330
+ self._gc_destroy = False
331
+ return state
332
+
333
+ async def __anext__(self) -> T:
334
+ if self._actor_ref is None:
335
+ self._actor_ref = await actor_ref(
336
+ address=self._actor_addr, uid=self._actor_uid
337
+ )
338
+ try:
339
+ assert self._actor_ref is not None
340
+ return await self._actor_ref.__xoscar_next__(self._uid)
341
+ except Exception as e:
342
+ if "StopIteration" in str(e):
343
+ raise StopAsyncIteration
344
+ else:
345
+ raise
346
+
347
+
274
348
  class AsyncActorMixin:
275
349
  @classmethod
276
350
  def default_uid(cls):
@@ -282,6 +356,10 @@ class AsyncActorMixin:
282
356
  except KeyError:
283
357
  return super().__new__(cls, *args, **kwargs)
284
358
 
359
+ def __init__(self, *args, **kwargs) -> None:
360
+ super().__init__()
361
+ self._generators: Dict[str, IteratorWrapper] = {}
362
+
285
363
  async def __post_create__(self):
286
364
  """
287
365
  Method called after actor creation
@@ -305,6 +383,93 @@ class AsyncActorMixin:
305
383
  """
306
384
  return await super().__on_receive__(message) # type: ignore
307
385
 
386
+ async def __xoscar_next__(self, generator_uid: str) -> Any:
387
+ """
388
+ Iter the next of generator.
389
+
390
+ Parameters
391
+ ----------
392
+ generator_uid: str
393
+ The uid of generator
394
+
395
+ Returns
396
+ -------
397
+ The next value of generator
398
+ """
399
+
400
+ def _wrapper(_gen):
401
+ try:
402
+ return next(_gen)
403
+ except StopIteration:
404
+ return stop
405
+
406
+ async def _async_wrapper(_gen):
407
+ try:
408
+ # anext is only available for Python >= 3.10
409
+ return await _gen.__anext__() # noqa: F821
410
+ except StopAsyncIteration:
411
+ return stop
412
+
413
+ if gen := self._generators.get(generator_uid):
414
+ stop = object()
415
+ try:
416
+ if inspect.isgenerator(gen):
417
+ r = await asyncio.to_thread(_wrapper, gen)
418
+ elif inspect.isasyncgen(gen):
419
+ r = await asyncio.create_task(_async_wrapper(gen))
420
+ else:
421
+ raise Exception(
422
+ f"The generator {generator_uid} should be a generator or an async generator, "
423
+ f"but a {type(gen)} is got."
424
+ )
425
+ except Exception as e:
426
+ logger.exception(
427
+ f"Destroy generator {generator_uid} due to an error encountered."
428
+ )
429
+ await self.__xoscar_destroy_generator__(generator_uid)
430
+ del gen # Avoid exception hold generator reference.
431
+ raise e
432
+ if r is stop:
433
+ await self.__xoscar_destroy_generator__(generator_uid)
434
+ del gen # Avoid exception hold generator reference.
435
+ raise Exception("StopIteration")
436
+ else:
437
+ return r
438
+ else:
439
+ raise RuntimeError(f"No iterator with id: {generator_uid}")
440
+
441
+ async def __xoscar_destroy_generator__(self, generator_uid: str):
442
+ """
443
+ Destroy the generator.
444
+
445
+ Parameters
446
+ ----------
447
+ generator_uid: str
448
+ The uid of generator
449
+ """
450
+ logger.debug("Destroy generator: %s", generator_uid)
451
+ self._generators.pop(generator_uid, None)
452
+
453
+
454
+ def generator(func):
455
+ need_to_thread = not asyncio.iscoroutinefunction(func)
456
+
457
+ @functools.wraps(func)
458
+ async def _wrapper(self, *args, **kwargs):
459
+ if need_to_thread:
460
+ r = await asyncio.to_thread(func, self, *args, **kwargs)
461
+ else:
462
+ r = await func(self, *args, **kwargs)
463
+ if inspect.isgenerator(r) or inspect.isasyncgen(r):
464
+ gen_uid = uuid.uuid1().hex
465
+ logger.debug("Create generator: %s", gen_uid)
466
+ self._generators[gen_uid] = r
467
+ return IteratorWrapper(gen_uid, self.address, self.uid)
468
+ else:
469
+ return r
470
+
471
+ return _wrapper
472
+
308
473
 
309
474
  class Actor(AsyncActorMixin, _Actor):
310
475
  pass
xoscar/core.pyx CHANGED
@@ -127,7 +127,7 @@ cdef class ActorRef:
127
127
  return create_actor_ref, (self.address, self.uid)
128
128
 
129
129
  def __getattr__(self, item):
130
- if item.startswith('_'):
130
+ if item.startswith('_') and item not in ["__xoscar_next__", "__xoscar_destroy_generator__"]:
131
131
  return object.__getattribute__(self, item)
132
132
 
133
133
  try:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: xoscar
3
- Version: 0.1.4
3
+ Version: 0.2.1
4
4
  Summary: Python actor framework for heterogeneous computing.
5
5
  Home-page: http://github.com/xorbitsai/xoscar
6
6
  Author: Qin Xuye
@@ -1,81 +1,81 @@
1
- xoscar-0.1.4.dist-info/METADATA,sha256=9VJ57HI5Evln870g8i4Ex41M4GGXVI8-n2Sj6XzSekI,9214
2
- xoscar-0.1.4.dist-info/RECORD,,
3
- xoscar-0.1.4.dist-info/top_level.txt,sha256=vYlqqY4Nys8Thm1hePIuUv8eQePdULVWMmt7lXtX_ZA,21
4
- xoscar-0.1.4.dist-info/WHEEL,sha256=s4nCzmeJHzzKs_3mY44pZnIB7xTTMwwgEpWpc7aab8A,154
5
- xoscar/context.cpython-311-aarch64-linux-gnu.so,sha256=hZL0kUb52WSgNcxrstfmn5Sa7i4KIeGOulECzGxEkvY,1552416
6
- xoscar/driver.py,sha256=498fowtJr6b3FE8FIOA_Tc1Vwx88nfZw7p0FxrML0h4,1372
7
- xoscar/_utils.pxd,sha256=5KYAL3jfPdejsHnrGGT2s--ZUX5SXznQWpHVSno429k,1157
8
- xoscar/core.pxd,sha256=4lBq8J0kjcXcsGuvN7Kv4xcL5liHwTTFWlqyK7XAEnw,1280
9
- xoscar/_utils.cpython-311-aarch64-linux-gnu.so,sha256=-qjeqfmkoJVBOPBnqyFpqDdSa7SoOEVYFQrpBkK8mu8,1184208
10
- xoscar/core.pyx,sha256=hVnv6jM9_kqdnYnRWlsBju1Xh0_qAEEY1T2Hui05zFM,21662
11
- xoscar/debug.py,sha256=9Z8SgE2WaKYQcyDo-5-DxEJQ533v7kWjrvCd28pSx3E,5069
12
- xoscar/_version.py,sha256=ClSPrUjgGRGHIkVMQV9XQnkQ-n0akJMnq_rh819nqFE,23719
13
- xoscar/__init__.py,sha256=QbTOmq0iycuyylnarLBGorCd639XYQpU0MoTeBOyL-w,1706
1
+ xoscar-0.2.1.dist-info/WHEEL,sha256=s4nCzmeJHzzKs_3mY44pZnIB7xTTMwwgEpWpc7aab8A,154
2
+ xoscar-0.2.1.dist-info/RECORD,,
3
+ xoscar-0.2.1.dist-info/top_level.txt,sha256=vYlqqY4Nys8Thm1hePIuUv8eQePdULVWMmt7lXtX_ZA,21
4
+ xoscar-0.2.1.dist-info/METADATA,sha256=rG9DA6iIoOVLoyKK0z5tid9xhSVnWccijS9blRQyfSc,9214
5
+ xoscar/context.pyx,sha256=8CdgPnWcE9eOp3N600WgDQ03MCi8P73eUOGcfV7Zksg,10942
6
+ xoscar/backend.py,sha256=is436OPkZfSpQXaoqTRVta5eoye_pp45RFgCstAk2hU,1850
7
+ xoscar/nvutils.py,sha256=qmW4mKLU0WB2yCs198ccQOgLL02zB7Fsa-AotO3NOmg,20412
8
+ xoscar/profiling.py,sha256=BC5OF0HzSaXv8V7w-y-B8r5gV5DgxHFoTEIF6jCMioQ,8015
9
+ xoscar/_utils.pyx,sha256=UR1FtYXAYKIdEWR9HulEpMbSOrkQWi6xGz63d4IQmG0,7059
10
+ xoscar/context.cpython-311-aarch64-linux-gnu.so,sha256=7EaUSlnmySkbxTCJM1r_VwRFToNfULM3cmnT2JkRt-U,1552416
11
+ xoscar/core.cpython-311-aarch64-linux-gnu.so,sha256=PNcueEBjyPM1VUx75ESw5waNiZhYSh1ilItlmuVlqu0,3709056
12
+ xoscar/constants.py,sha256=Yn59lRIOvE1VFwyuZB5G2-gxYIyhIZ1rVovbdFAR2NM,759
14
13
  xoscar/context.pxd,sha256=qKa0OyDPZtVymftSh447m-RzFZgmz8rGqQBa7qlauvc,725
14
+ xoscar/driver.py,sha256=498fowtJr6b3FE8FIOA_Tc1Vwx88nfZw7p0FxrML0h4,1372
15
15
  xoscar/batch.py,sha256=DpArS0L3WYJ_HVPG-6hSYEwoAFY1mY2-mlC4Jp5M_Dw,7872
16
- xoscar/core.cpython-311-aarch64-linux-gnu.so,sha256=bzuXUwpWoW5JdtVlZa4nrE2xDv7Mx0RbAmQ4E1XJxnY,3689824
17
- xoscar/constants.py,sha256=Yn59lRIOvE1VFwyuZB5G2-gxYIyhIZ1rVovbdFAR2NM,759
18
16
  xoscar/utils.py,sha256=TH81N2EWUDfAMdlkPYSh0juZS2EbdvvdhWx_6euQygk,14672
19
- xoscar/_utils.pyx,sha256=UR1FtYXAYKIdEWR9HulEpMbSOrkQWi6xGz63d4IQmG0,7059
20
- xoscar/context.pyx,sha256=8CdgPnWcE9eOp3N600WgDQ03MCi8P73eUOGcfV7Zksg,10942
21
- xoscar/nvutils.py,sha256=qmW4mKLU0WB2yCs198ccQOgLL02zB7Fsa-AotO3NOmg,20412
22
- xoscar/backend.py,sha256=is436OPkZfSpQXaoqTRVta5eoye_pp45RFgCstAk2hU,1850
23
- xoscar/libcpp.pxd,sha256=DJqBxLFOKL4iRr9Kale5UH3rbvPRD1x5bTSOPHFpz9I,1147
17
+ xoscar/_version.py,sha256=ClSPrUjgGRGHIkVMQV9XQnkQ-n0akJMnq_rh819nqFE,23719
18
+ xoscar/_utils.pxd,sha256=5KYAL3jfPdejsHnrGGT2s--ZUX5SXznQWpHVSno429k,1157
19
+ xoscar/__init__.py,sha256=9BapEEmHU9OlpDOIc_4LwXNHfauP1XDW0YRnAUKZp_8,1721
20
+ xoscar/_utils.cpython-311-aarch64-linux-gnu.so,sha256=0BZhlox8B6G9hRkIihmf2la2WfGhEaf_jdYxXT5G58I,1184208
24
21
  xoscar/entrypoints.py,sha256=t-PfnqYDyjzXbV-Z-hjaQxpf_m95eSx2saAsb-V2ODY,1642
25
- xoscar/api.py,sha256=Vu_AdyJf0GZqDaiAa1T8ZE09qo_xUKBfT4XjBs4QzR8,8324
26
- xoscar/profiling.py,sha256=BC5OF0HzSaXv8V7w-y-B8r5gV5DgxHFoTEIF6jCMioQ,8015
22
+ xoscar/debug.py,sha256=9Z8SgE2WaKYQcyDo-5-DxEJQ533v7kWjrvCd28pSx3E,5069
23
+ xoscar/core.pyx,sha256=Aqc2i8Fetsd5wRAPF4kL0ddnBZn3E2HRNCvup79BbQc,21730
24
+ xoscar/core.pxd,sha256=4lBq8J0kjcXcsGuvN7Kv4xcL5liHwTTFWlqyK7XAEnw,1280
25
+ xoscar/libcpp.pxd,sha256=DJqBxLFOKL4iRr9Kale5UH3rbvPRD1x5bTSOPHFpz9I,1147
26
+ xoscar/api.py,sha256=3hztPoOxg8A_mlhWyWgVP7FMXG0PATA1TP4Rbaj7A-g,13327
27
27
  xoscar/errors.py,sha256=wBlQOKsXf0Fc4skN39tDie0YZT-VIAuLNRgoDl2pZcA,1241
28
- xoscar/metrics/__init__.py,sha256=9Badi7rxYikGm2dQiNCrj9GgMRBxwuR3JaEKcFZmfak,705
29
- xoscar/metrics/api.py,sha256=BBlMIFvVAGVfrtpeJ1YlH9Tqhy9OzGavwvGyeHcQ0Tk,8856
30
- xoscar/metrics/backends/__init__.py,sha256=h_JgzSqV5lP6vQ6XX_17kE4IY4BRnvKta_7VLQAL1ms,581
31
- xoscar/metrics/backends/metric.py,sha256=aPhyc8JgH22L3rcHP8IjsmgrhSODjg6B5TZVnre97y8,4446
32
- xoscar/metrics/backends/console/console_metric.py,sha256=y5CCtH33j3AqI5_Uhwi4mgOcAhyhb4cWv_YvR6fxcbQ,2082
33
- xoscar/metrics/backends/console/__init__.py,sha256=h_JgzSqV5lP6vQ6XX_17kE4IY4BRnvKta_7VLQAL1ms,581
34
- xoscar/metrics/backends/prometheus/__init__.py,sha256=h_JgzSqV5lP6vQ6XX_17kE4IY4BRnvKta_7VLQAL1ms,581
35
- xoscar/metrics/backends/prometheus/prometheus_metric.py,sha256=MxoMvVrg0pOkKpkjJ0PcAuEaaEJR2FZljmPrLjQ1-oc,2050
36
- xoscar/aio/_threads.py,sha256=WE9_NZY3K9n5bAzXRbj1Bc4dxS-1m1erMfZsUu-ULU4,1313
37
- xoscar/aio/base.py,sha256=9j0f1piwfE5R5GIvV212vSD03ixdaeSzSSsO2kxJZVE,2249
38
- xoscar/aio/file.py,sha256=PBtkLp-Q7XtYl-zk00s18TtgIrkNr60J3Itf66ctO1o,1486
39
- xoscar/aio/__init__.py,sha256=4Rv9V_wDIKlg7VcJeo1GVlvobwskYb1jYXef-0GQOaY,809
40
- xoscar/aio/lru.py,sha256=rpXCqSLtPV5xnWtd6uDwQQFGgIPEgvmWEQDkPNUx9cM,6311
41
- xoscar/aio/parallelism.py,sha256=VSsjk8wP-Bw7tLeUsTyLVNgp91thjxEfE3pCrw_vF5Q,1293
42
- xoscar/collective/process_group.py,sha256=zy7LcIFnEcmrcxuECI89v0bQlUbSqQMkVyBw468WBnk,22599
43
- xoscar/collective/__init__.py,sha256=XsClIkO_3Jd8GDifYuAbZCmJLAo9ZqGvnjUn9iuogmU,774
44
- xoscar/collective/utils.py,sha256=3S4qF4JEnAUD3RiWVBUj-ZptL83CBSwGYyVZyIasAsE,1178
45
- xoscar/collective/common.py,sha256=b9JkCnXEl-SWkHbMtmVmyJG7RzqPw4IIpHJfMwruU2M,3273
46
- xoscar/collective/core.py,sha256=WfMJZloiRiqsLlIMhU4Pa47eo0jE-hoXdbTBwZPM6TM,23498
47
- xoscar/collective/xoscar_pygloo.cpython-311-aarch64-linux-gnu.so,sha256=peMxi0t6kDNmAwmlyZA8yDyAoG5kDqcLqN_1N-EG3Po,1648920
48
- xoscar/serialization/core.pxd,sha256=k4RoJgX5E5LGs4jdCQ7vvcn26MabXbrWoWhkO49X6YI,985
49
- xoscar/serialization/numpy.py,sha256=5Kem87CvpJmzUMp3QHk4WeHU30FoQWTJJP2SwIcaQG0,2919
50
- xoscar/serialization/core.pyx,sha256=E3xIKmdI2gn99JduR3yuU_YTm-lOyG0Tkc7fZVBWCho,30131
51
- xoscar/serialization/aio.py,sha256=S9e3rHMBwqqKmJtDz7KzYAqWc8w9bttA0Dj83IBfEU0,4577
52
- xoscar/serialization/scipy.py,sha256=yOEi0NB8cqQ6e2UnCZ1w006RsB7T725tIL-DM_hNcsU,2482
53
- xoscar/serialization/__init__.py,sha256=5Y_C3cYbQJIZ09LRjeCf-jrkLma7mfN8I5bznHrdsbg,846
54
- xoscar/serialization/core.cpython-311-aarch64-linux-gnu.so,sha256=hgcghUJXXz55vwmC414vdMmtN-1IfDH8sEQVQElvY_Y,3591560
55
- xoscar/serialization/exception.py,sha256=Jy8Lsk0z-VJyEUaWeuZIwkmxqaoB-nLKMa1D15Cl4js,1634
56
- xoscar/serialization/pyfury.py,sha256=sifOnVMYoS82PzZEkzkfxesmMHei23k5UAUUKUyoOYQ,1163
57
- xoscar/serialization/cuda.py,sha256=iFUEnN4SiquBIhyieyOrfw3TnKnW-tU_vYgqOxO_DrA,3758
58
- xoscar/backends/pool.py,sha256=NqsCCL3LYqlDYrsZiI8hKeg4UpHom4jcsKGEhzueuWY,58156
59
- xoscar/backends/context.py,sha256=b4mDqcrA7uBsy9Rb5laxlbujCyj8GpBglpjkNcg-Mg0,15285
28
+ xoscar/backends/core.py,sha256=o6g3ZOW7PkGmiu-nNtp6I3Sd_2KkQDwOsKz-FdgRFs0,7390
29
+ xoscar/backends/allocate_strategy.py,sha256=tC1Nbq2tJohahUwd-zoRYHEDX65wyuX8tmeY45uWj_w,4845
30
+ xoscar/backends/message.cpython-311-aarch64-linux-gnu.so,sha256=eZW5-jad7-d5V3CcL-4RPUb6PqFUeblZT_XkkUkNOYY,3569192
60
31
  xoscar/backends/router.py,sha256=mhSvM5KVfV882jricVcpyxAqHEvhS4zL6ivczC6fOTE,7746
61
32
  xoscar/backends/__init__.py,sha256=VHEBQcUWM5bj027W8EUf9PiJUAP7JoMrRw3Tsvy5ySw,643
62
- xoscar/backends/message.cpython-311-aarch64-linux-gnu.so,sha256=jozxp-ysnpPfPJAbyilPcflGbH4iCh_7wE1lV3c0dpY,3569192
63
- xoscar/backends/config.py,sha256=EG26f0GwX_f4dAhwTW77RBjiK9h8R_3JrD-rBF1bAq8,4984
33
+ xoscar/backends/pool.py,sha256=NqsCCL3LYqlDYrsZiI8hKeg4UpHom4jcsKGEhzueuWY,58156
64
34
  xoscar/backends/message.pyx,sha256=_rXcsWPcWu77Z_38rvjDBdQojpY5xJoaHQrt57_LVyo,17612
65
- xoscar/backends/core.py,sha256=o6g3ZOW7PkGmiu-nNtp6I3Sd_2KkQDwOsKz-FdgRFs0,7390
66
- xoscar/backends/allocate_strategy.py,sha256=tC1Nbq2tJohahUwd-zoRYHEDX65wyuX8tmeY45uWj_w,4845
67
- xoscar/backends/indigen/pool.py,sha256=Fa8rqH3_OkrwMRtO3UJWjDDB-u58ckmN1tOMRGjsX8I,16122
35
+ xoscar/backends/config.py,sha256=EG26f0GwX_f4dAhwTW77RBjiK9h8R_3JrD-rBF1bAq8,4984
36
+ xoscar/backends/context.py,sha256=b4mDqcrA7uBsy9Rb5laxlbujCyj8GpBglpjkNcg-Mg0,15285
37
+ xoscar/backends/test/backend.py,sha256=nv9WFhH5Bbq4Q1HB9yfpciZBaeHT4IQAtzugBWESrUY,1263
38
+ xoscar/backends/test/__init__.py,sha256=j2ZfD6prD9WjUxRUDC7Eq5Z7N7TkL6fFr59oNyc_vY4,682
39
+ xoscar/backends/test/pool.py,sha256=43pMkebFAFLilvla5-AOS5W91shLycvfkbKwjdmlNWQ,7131
40
+ xoscar/backends/indigen/backend.py,sha256=znl_fZzWGEtLH8hZ9j9Kkf0fva25jEem2_KO7I1RVvc,1612
68
41
  xoscar/backends/indigen/driver.py,sha256=VGzkacYKykegW5qhCuhx01gdgBZEKJjNIyfNCnA6Nm8,952
69
42
  xoscar/backends/indigen/__init__.py,sha256=tKHP5ClzedBRBpZsLRVErR3EUNbbDm4CY4u0rCFJr44,685
70
- xoscar/backends/indigen/backend.py,sha256=znl_fZzWGEtLH8hZ9j9Kkf0fva25jEem2_KO7I1RVvc,1612
43
+ xoscar/backends/indigen/pool.py,sha256=Fa8rqH3_OkrwMRtO3UJWjDDB-u58ckmN1tOMRGjsX8I,16122
44
+ xoscar/backends/communication/core.py,sha256=sJeE3foRIqVPXldzYpFKHDSsabfAIFBU4JuXY4OyklY,2130
71
45
  xoscar/backends/communication/base.py,sha256=0P4Tr35GSWpRp394e9jVWUUoKKa-gIk177eYPw1BnSU,7421
72
- xoscar/backends/communication/__init__.py,sha256=tB05BlK63iWQnfJgRzKt4mFKRtmWUki5hUGSZQwAotc,1050
73
- xoscar/backends/communication/socket.py,sha256=VBPiesyjX8c3ECWn8kv8qGwK3xCBqh_CHPrNDapYH6w,11819
74
46
  xoscar/backends/communication/utils.py,sha256=AmovE-hmWLXNCPwHafYuaRjOk8m42BUyT3XBqfXQRVI,3664
75
47
  xoscar/backends/communication/ucx.py,sha256=eidp4l-YAzFMCYaeUcvpK4ecapg-92fXFKO-t_bBkTU,19267
76
48
  xoscar/backends/communication/dummy.py,sha256=Xgn-gQ8bM3P9jzozQHGOk6gaNGnxckDJ2Su07y8wAhk,7796
77
- xoscar/backends/communication/core.py,sha256=sJeE3foRIqVPXldzYpFKHDSsabfAIFBU4JuXY4OyklY,2130
49
+ xoscar/backends/communication/socket.py,sha256=VBPiesyjX8c3ECWn8kv8qGwK3xCBqh_CHPrNDapYH6w,11819
50
+ xoscar/backends/communication/__init__.py,sha256=tB05BlK63iWQnfJgRzKt4mFKRtmWUki5hUGSZQwAotc,1050
78
51
  xoscar/backends/communication/errors.py,sha256=V3CdBe2xX9Rwv32f2dH2Msc84yaUhlyerZ42-739o1Q,723
79
- xoscar/backends/test/pool.py,sha256=43pMkebFAFLilvla5-AOS5W91shLycvfkbKwjdmlNWQ,7131
80
- xoscar/backends/test/__init__.py,sha256=j2ZfD6prD9WjUxRUDC7Eq5Z7N7TkL6fFr59oNyc_vY4,682
81
- xoscar/backends/test/backend.py,sha256=nv9WFhH5Bbq4Q1HB9yfpciZBaeHT4IQAtzugBWESrUY,1263
52
+ xoscar/collective/core.py,sha256=WfMJZloiRiqsLlIMhU4Pa47eo0jE-hoXdbTBwZPM6TM,23498
53
+ xoscar/collective/utils.py,sha256=3S4qF4JEnAUD3RiWVBUj-ZptL83CBSwGYyVZyIasAsE,1178
54
+ xoscar/collective/__init__.py,sha256=XsClIkO_3Jd8GDifYuAbZCmJLAo9ZqGvnjUn9iuogmU,774
55
+ xoscar/collective/process_group.py,sha256=zy7LcIFnEcmrcxuECI89v0bQlUbSqQMkVyBw468WBnk,22599
56
+ xoscar/collective/xoscar_pygloo.cpython-311-aarch64-linux-gnu.so,sha256=peMxi0t6kDNmAwmlyZA8yDyAoG5kDqcLqN_1N-EG3Po,1648920
57
+ xoscar/collective/common.py,sha256=b9JkCnXEl-SWkHbMtmVmyJG7RzqPw4IIpHJfMwruU2M,3273
58
+ xoscar/aio/base.py,sha256=9j0f1piwfE5R5GIvV212vSD03ixdaeSzSSsO2kxJZVE,2249
59
+ xoscar/aio/_threads.py,sha256=WE9_NZY3K9n5bAzXRbj1Bc4dxS-1m1erMfZsUu-ULU4,1313
60
+ xoscar/aio/file.py,sha256=PBtkLp-Q7XtYl-zk00s18TtgIrkNr60J3Itf66ctO1o,1486
61
+ xoscar/aio/parallelism.py,sha256=VSsjk8wP-Bw7tLeUsTyLVNgp91thjxEfE3pCrw_vF5Q,1293
62
+ xoscar/aio/__init__.py,sha256=4Rv9V_wDIKlg7VcJeo1GVlvobwskYb1jYXef-0GQOaY,809
63
+ xoscar/aio/lru.py,sha256=rpXCqSLtPV5xnWtd6uDwQQFGgIPEgvmWEQDkPNUx9cM,6311
64
+ xoscar/metrics/__init__.py,sha256=9Badi7rxYikGm2dQiNCrj9GgMRBxwuR3JaEKcFZmfak,705
65
+ xoscar/metrics/api.py,sha256=BBlMIFvVAGVfrtpeJ1YlH9Tqhy9OzGavwvGyeHcQ0Tk,8856
66
+ xoscar/metrics/backends/__init__.py,sha256=h_JgzSqV5lP6vQ6XX_17kE4IY4BRnvKta_7VLQAL1ms,581
67
+ xoscar/metrics/backends/metric.py,sha256=aPhyc8JgH22L3rcHP8IjsmgrhSODjg6B5TZVnre97y8,4446
68
+ xoscar/metrics/backends/console/__init__.py,sha256=h_JgzSqV5lP6vQ6XX_17kE4IY4BRnvKta_7VLQAL1ms,581
69
+ xoscar/metrics/backends/console/console_metric.py,sha256=y5CCtH33j3AqI5_Uhwi4mgOcAhyhb4cWv_YvR6fxcbQ,2082
70
+ xoscar/metrics/backends/prometheus/prometheus_metric.py,sha256=MxoMvVrg0pOkKpkjJ0PcAuEaaEJR2FZljmPrLjQ1-oc,2050
71
+ xoscar/metrics/backends/prometheus/__init__.py,sha256=h_JgzSqV5lP6vQ6XX_17kE4IY4BRnvKta_7VLQAL1ms,581
72
+ xoscar/serialization/scipy.py,sha256=yOEi0NB8cqQ6e2UnCZ1w006RsB7T725tIL-DM_hNcsU,2482
73
+ xoscar/serialization/aio.py,sha256=S9e3rHMBwqqKmJtDz7KzYAqWc8w9bttA0Dj83IBfEU0,4577
74
+ xoscar/serialization/core.cpython-311-aarch64-linux-gnu.so,sha256=aAj7ZUvWRZyWmgiMzmRsS1qWyUrMNzifBPl3_AUWPT8,3591560
75
+ xoscar/serialization/__init__.py,sha256=5Y_C3cYbQJIZ09LRjeCf-jrkLma7mfN8I5bznHrdsbg,846
76
+ xoscar/serialization/pyfury.py,sha256=sifOnVMYoS82PzZEkzkfxesmMHei23k5UAUUKUyoOYQ,1163
77
+ xoscar/serialization/exception.py,sha256=Jy8Lsk0z-VJyEUaWeuZIwkmxqaoB-nLKMa1D15Cl4js,1634
78
+ xoscar/serialization/core.pyx,sha256=E3xIKmdI2gn99JduR3yuU_YTm-lOyG0Tkc7fZVBWCho,30131
79
+ xoscar/serialization/core.pxd,sha256=k4RoJgX5E5LGs4jdCQ7vvcn26MabXbrWoWhkO49X6YI,985
80
+ xoscar/serialization/cuda.py,sha256=iFUEnN4SiquBIhyieyOrfw3TnKnW-tU_vYgqOxO_DrA,3758
81
+ xoscar/serialization/numpy.py,sha256=5Kem87CvpJmzUMp3QHk4WeHU30FoQWTJJP2SwIcaQG0,2919
File without changes