xoscar 0.3.3__cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl → 0.4.0__cp39-cp39-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/aio/__init__.py CHANGED
@@ -11,15 +11,6 @@
11
11
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
-
15
- import asyncio
16
- import sys
17
-
18
14
  from .file import AioFileObject
19
15
  from .lru import alru_cache
20
16
  from .parallelism import AioEvent
21
-
22
- if sys.version_info[:2] < (3, 9):
23
- from ._threads import to_thread
24
-
25
- asyncio.to_thread = to_thread
@@ -17,6 +17,7 @@ from __future__ import annotations
17
17
 
18
18
  import asyncio
19
19
  import concurrent.futures as futures
20
+ import logging
20
21
  import os
21
22
  import socket
22
23
  import sys
@@ -30,7 +31,7 @@ from urllib.parse import urlparse
30
31
  from ..._utils import to_binary
31
32
  from ...constants import XOSCAR_UNIX_SOCKET_DIR
32
33
  from ...serialization import AioDeserializer, AioSerializer, deserialize
33
- from ...utils import classproperty, implements, is_v6_ip
34
+ from ...utils import classproperty, implements, is_py_312, is_v6_ip
34
35
  from .base import Channel, ChannelType, Client, Server
35
36
  from .core import register_client, register_server
36
37
  from .utils import read_buffers, write_buffers
@@ -38,6 +39,9 @@ from .utils import read_buffers, write_buffers
38
39
  _is_windows: bool = sys.platform.startswith("win")
39
40
 
40
41
 
42
+ logger = logging.getLogger(__name__)
43
+
44
+
41
45
  class SocketChannel(Channel):
42
46
  __slots__ = "reader", "writer", "_channel_type", "_send_lock", "_recv_lock"
43
47
 
@@ -131,11 +135,23 @@ class _BaseSocketServer(Server, metaclass=ABCMeta):
131
135
  if timeout is None:
132
136
  await self._aio_server.serve_forever()
133
137
  else:
134
- future = asyncio.create_task(self._aio_server.serve_forever())
135
- try:
136
- await asyncio.wait_for(future, timeout=timeout)
137
- except (futures.TimeoutError, asyncio.TimeoutError):
138
- future.cancel()
138
+ if is_py_312():
139
+ # For python 3.12, there's a bug for `serve_forever`:
140
+ # https://github.com/python/cpython/issues/123720,
141
+ # which is unable to be cancelled.
142
+ # Here is really a simulation of `wait_for`
143
+ task = asyncio.create_task(self._aio_server.serve_forever())
144
+ await asyncio.sleep(timeout)
145
+ if task.done():
146
+ logger.warning(f"`serve_forever` should never be done.")
147
+ else:
148
+ task.cancel()
149
+ else:
150
+ future = asyncio.create_task(self._aio_server.serve_forever())
151
+ try:
152
+ await asyncio.wait_for(future, timeout=timeout)
153
+ except (futures.TimeoutError, asyncio.TimeoutError, TimeoutError):
154
+ future.cancel()
139
155
 
140
156
  @implements(Server.on_connected)
141
157
  async def on_connected(self, *args, **kwargs):
@@ -161,7 +177,10 @@ class _BaseSocketServer(Server, metaclass=ABCMeta):
161
177
  @implements(Server.stop)
162
178
  async def stop(self):
163
179
  self._aio_server.close()
164
- await self._aio_server.wait_closed()
180
+ # Python 3.12: # https://github.com/python/cpython/issues/104344
181
+ # `wait_closed` leads to hang
182
+ if not is_py_312():
183
+ await self._aio_server.wait_closed()
165
184
  # close all channels
166
185
  await asyncio.gather(
167
186
  *(channel.close() for channel in self._channels if not channel.closed)
@@ -34,7 +34,7 @@ from .base import Channel, ChannelType, Client, Server
34
34
  from .core import register_client, register_server
35
35
  from .errors import ChannelClosed
36
36
 
37
- ucp = lazy_import("ucp")
37
+ ucp = lazy_import("ucxx")
38
38
  numba_cuda = lazy_import("numba.cuda")
39
39
  rmm = lazy_import("rmm")
40
40
 
@@ -86,7 +86,7 @@ class UCXInitializer:
86
86
  tls += ",cuda_copy"
87
87
 
88
88
  if ucx_config.get("infiniband"): # pragma: no cover
89
- tls = "rc," + tls
89
+ tls = "ib," + tls
90
90
  if ucx_config.get("nvlink"): # pragma: no cover
91
91
  tls += ",cuda_ipc"
92
92
 
@@ -177,7 +177,8 @@ class UCXInitializer:
177
177
  new_environ.update(envs)
178
178
  os.environ = new_environ # type: ignore
179
179
  try:
180
- ucp.init(options=options, env_takes_precedence=True)
180
+ # let UCX determine the appropriate transports
181
+ ucp.init()
181
182
  finally:
182
183
  os.environ = original_environ
183
184
 
@@ -313,7 +314,7 @@ class UCXChannel(Channel):
313
314
  await self.ucp_endpoint.send(buf)
314
315
  for buffer in buffers:
315
316
  await self.ucp_endpoint.send(buffer)
316
- except ucp.exceptions.UCXBaseException: # pragma: no cover
317
+ except ucp.exceptions.UCXError: # pragma: no cover
317
318
  self.abort()
318
319
  raise ChannelClosed("While writing, the connection was closed")
319
320
 
@@ -516,7 +517,7 @@ class UCXClient(Client):
516
517
 
517
518
  try:
518
519
  ucp_endpoint = await ucp.create_endpoint(host, port)
519
- except ucp.exceptions.UCXBaseException as e: # pragma: no cover
520
+ except ucp.exceptions.UCXError as e: # pragma: no cover
520
521
  raise ChannelClosed(
521
522
  f"Connection closed before handshake completed, "
522
523
  f"local address: {local_address}, dest address: {dest_address}"
@@ -13,6 +13,7 @@
13
13
  # See the License for the specific language governing permissions and
14
14
  # limitations under the License.
15
15
 
16
+ import asyncio
16
17
  from enum import Enum
17
18
  from types import TracebackType
18
19
  from typing import Any, Type
@@ -21,7 +22,9 @@ from tblib import pickling_support
21
22
 
22
23
  from ..core cimport ActorRef, BufferRef
23
24
  from ..serialization.core cimport Serializer
25
+
24
26
  from ..utils import wrap_exception
27
+
25
28
  from .._utils cimport new_random_id
26
29
 
27
30
  # make sure traceback can be pickled
@@ -245,6 +248,11 @@ cdef class ErrorMessage(_MessageBase):
245
248
  if issubclass(self.error_type, _AsCauseBase):
246
249
  return self.error.with_traceback(self.traceback)
247
250
 
251
+ # for being compatible with Python 3.12 `asyncio.wait_for`
252
+ # https://github.com/python/cpython/pull/113850
253
+ if isinstance(self.error, asyncio.CancelledError):
254
+ return asyncio.CancelledError(f"[address={self.address}, pid={self.pid}]").with_traceback(self.traceback)
255
+
248
256
  return wrap_exception(
249
257
  self.error,
250
258
  (_AsCauseBase,),
xoscar/backends/pool.py CHANGED
@@ -41,7 +41,7 @@ from ..errors import (
41
41
  ServerClosed,
42
42
  )
43
43
  from ..metrics import init_metrics
44
- from ..utils import implements, register_asyncio_task_timeout_detector
44
+ from ..utils import implements, is_zero_ip, register_asyncio_task_timeout_detector
45
45
  from .allocate_strategy import AddressSpecified, allocated_type
46
46
  from .communication import (
47
47
  Channel,
@@ -164,7 +164,10 @@ class AbstractActorPool(ABC):
164
164
  ):
165
165
  # register local pool for local actor lookup.
166
166
  # The pool is weakrefed, so we don't need to unregister it.
167
- register_local_pool(external_address, self)
167
+ if not is_zero_ip(external_address):
168
+ # Only register_local_pool when we listen on non-zero ip (because all-zero ip is wildcard address),
169
+ # avoid mistaken with another remote service listen on non-zero ip with the same port.
170
+ register_local_pool(external_address, self)
168
171
  self.process_index = process_index
169
172
  self.label = label
170
173
  self.external_address = external_address
@@ -55,7 +55,6 @@ from .pyfury import get_fury
55
55
 
56
56
  BUFFER_PICKLE_PROTOCOL = max(pickle.DEFAULT_PROTOCOL, 5)
57
57
  cdef bint HAS_PICKLE_BUFFER = pickle.HIGHEST_PROTOCOL >= 5
58
- cdef bint _PANDAS_HAS_MGR = hasattr(pd.Series([0]), "_mgr")
59
58
 
60
59
  cdef TypeDispatcher _serial_dispatcher = TypeDispatcher()
61
60
  cdef dict _deserializers = dict()
@@ -260,16 +259,7 @@ def unpickle_buffers(list buffers):
260
259
  else:
261
260
  result = cloudpickle.loads(buffers[0], buffers=buffers[1:])
262
261
 
263
- # as pandas prior to 1.1.0 use _data instead of _mgr to hold BlockManager,
264
- # deserializing from high versions may produce mal-functioned pandas objects,
265
- # thus the patch is needed
266
- if _PANDAS_HAS_MGR:
267
- return result
268
- else: # pragma: no cover
269
- if hasattr(result, "_mgr") and isinstance(result, (pd.DataFrame, pd.Series)):
270
- result._data = getattr(result, "_mgr")
271
- delattr(result, "_mgr")
272
- return result
262
+ return result
273
263
 
274
264
 
275
265
  cdef class PickleSerializer(Serializer):
xoscar/utils.py CHANGED
@@ -30,6 +30,7 @@ import sys
30
30
  import time
31
31
  import uuid
32
32
  from abc import ABC
33
+ from functools import lru_cache
33
34
  from types import TracebackType
34
35
  from typing import Callable, Type, Union
35
36
 
@@ -464,6 +465,11 @@ def is_linux():
464
465
  return sys.platform.startswith("linux")
465
466
 
466
467
 
468
+ @lru_cache
469
+ def is_py_312():
470
+ return sys.version_info[:2] == (3, 12)
471
+
472
+
467
473
  def is_v4_zero_ip(ip_port_addr: str) -> bool:
468
474
  return ip_port_addr.split("://")[-1].startswith("0.0.0.0:")
469
475
 
@@ -480,6 +486,10 @@ def is_v6_zero_ip(ip_port_addr: str) -> bool:
480
486
  return True
481
487
 
482
488
 
489
+ def is_zero_ip(ip_port_addr: str) -> bool:
490
+ return is_v4_zero_ip(ip_port_addr) or is_v6_zero_ip(ip_port_addr)
491
+
492
+
483
493
  def is_v6_ip(ip_port_addr: str) -> bool:
484
494
  arr = ip_port_addr.split("://", 1)[-1].split(":")
485
495
  return len(arr) > 1
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: xoscar
3
- Version: 0.3.3
3
+ Version: 0.4.0
4
4
  Summary: Python actor framework for heterogeneous computing.
5
5
  Home-page: http://github.com/xorbitsai/xoscar
6
6
  Author: Qin Xuye
@@ -11,20 +11,19 @@ License: Apache License 2.0
11
11
  Classifier: Operating System :: OS Independent
12
12
  Classifier: Programming Language :: Python
13
13
  Classifier: Programming Language :: Python :: 3
14
- Classifier: Programming Language :: Python :: 3.8
15
14
  Classifier: Programming Language :: Python :: 3.9
16
15
  Classifier: Programming Language :: Python :: 3.10
17
16
  Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
18
  Classifier: Programming Language :: Python :: Implementation :: CPython
19
19
  Classifier: Topic :: Software Development :: Libraries
20
20
  Description-Content-Type: text/markdown
21
- Requires-Dist: numpy<2.0.0,>=1.14.0
21
+ Requires-Dist: numpy>=1.14.0
22
22
  Requires-Dist: pandas>=1.0.0
23
23
  Requires-Dist: cloudpickle>=1.5.0
24
24
  Requires-Dist: psutil>=5.9.0
25
25
  Requires-Dist: tblib>=1.7.0
26
26
  Requires-Dist: packaging
27
- Requires-Dist: pickle5; python_version < "3.8"
28
27
  Requires-Dist: uvloop>=0.14.0; sys_platform != "win32"
29
28
  Requires-Dist: scipy>=1.0.0; sys_platform != "win32" or python_version >= "3.10"
30
29
  Requires-Dist: scipy<=1.9.1,>=1.0.0; sys_platform == "win32" and python_version < "3.10"
@@ -36,15 +35,14 @@ Requires-Dist: pytest-timeout>=1.2.0; extra == "dev"
36
35
  Requires-Dist: pytest-forked>=1.0; extra == "dev"
37
36
  Requires-Dist: pytest-asyncio>=0.14.0; extra == "dev"
38
37
  Requires-Dist: ipython>=6.5.0; extra == "dev"
39
- Requires-Dist: sphinx<5.0.0,>=3.0.0; extra == "dev"
38
+ Requires-Dist: sphinx; extra == "dev"
40
39
  Requires-Dist: pydata-sphinx-theme>=0.3.0; extra == "dev"
41
40
  Requires-Dist: sphinx-intl>=0.9.9; extra == "dev"
42
41
  Requires-Dist: flake8>=3.8.0; extra == "dev"
43
42
  Requires-Dist: black; extra == "dev"
44
- Requires-Dist: mock>=4.0.0; python_version < "3.8" and extra == "dev"
45
43
  Provides-Extra: doc
46
44
  Requires-Dist: ipython>=6.5.0; extra == "doc"
47
- Requires-Dist: sphinx<5.0.0,>=3.0.0; extra == "doc"
45
+ Requires-Dist: sphinx; extra == "doc"
48
46
  Requires-Dist: pydata-sphinx-theme>=0.3.0; extra == "doc"
49
47
  Requires-Dist: sphinx-intl>=0.9.9; extra == "doc"
50
48
  Provides-Extra: extra
@@ -1,80 +1,79 @@
1
+ xoscar-0.4.0.dist-info/top_level.txt,sha256=vYlqqY4Nys8Thm1hePIuUv8eQePdULVWMmt7lXtX_ZA,21
2
+ xoscar-0.4.0.dist-info/RECORD,,
3
+ xoscar-0.4.0.dist-info/METADATA,sha256=xfdfy3u6wkQ-IEUMahgHm_ZjZWpKu-VQkoBojz7E8eU,9042
4
+ xoscar-0.4.0.dist-info/WHEEL,sha256=AOZphaC8dVDgphLiFmwKx5iedm7DOJvfKrhezgV0c_0,150
5
+ xoscar/errors.py,sha256=wBlQOKsXf0Fc4skN39tDie0YZT-VIAuLNRgoDl2pZcA,1241
6
+ xoscar/nvutils.py,sha256=qmW4mKLU0WB2yCs198ccQOgLL02zB7Fsa-AotO3NOmg,20412
7
+ xoscar/utils.py,sha256=vAgTMpEyzBNKT4u05-ii9wg_5-7Iq5c8TthyMpz6M_M,16451
8
+ xoscar/context.pxd,sha256=qKa0OyDPZtVymftSh447m-RzFZgmz8rGqQBa7qlauvc,725
1
9
  xoscar/_utils.pyx,sha256=UR1FtYXAYKIdEWR9HulEpMbSOrkQWi6xGz63d4IQmG0,7059
2
- xoscar/core.pxd,sha256=4lBq8J0kjcXcsGuvN7Kv4xcL5liHwTTFWlqyK7XAEnw,1280
3
- xoscar/api.py,sha256=3hztPoOxg8A_mlhWyWgVP7FMXG0PATA1TP4Rbaj7A-g,13327
4
- xoscar/context.cpython-39-aarch64-linux-gnu.so,sha256=LV5N5Jhm721j5CYlFbWRXGsrjI2a6tKZj62HQ11jvDg,1443768
5
- xoscar/profiling.py,sha256=BC5OF0HzSaXv8V7w-y-B8r5gV5DgxHFoTEIF6jCMioQ,8015
6
- xoscar/libcpp.pxd,sha256=DJqBxLFOKL4iRr9Kale5UH3rbvPRD1x5bTSOPHFpz9I,1147
7
- xoscar/context.pyx,sha256=8CdgPnWcE9eOp3N600WgDQ03MCi8P73eUOGcfV7Zksg,10942
8
10
  xoscar/_utils.pxd,sha256=5KYAL3jfPdejsHnrGGT2s--ZUX5SXznQWpHVSno429k,1157
9
- xoscar/batch.py,sha256=DpArS0L3WYJ_HVPG-6hSYEwoAFY1mY2-mlC4Jp5M_Dw,7872
10
- xoscar/utils.py,sha256=oNT8Hj_qjTsPGHcHlha21fh-93g8B9BLZ6tnihgZB00,16231
11
- xoscar/core.cpython-39-aarch64-linux-gnu.so,sha256=ntP_ZHnfDSUQgePgqQMMTCvSaTNvW441nwh2mCQGdIk,3476960
12
11
  xoscar/core.pyx,sha256=Aqc2i8Fetsd5wRAPF4kL0ddnBZn3E2HRNCvup79BbQc,21730
13
- xoscar/driver.py,sha256=498fowtJr6b3FE8FIOA_Tc1Vwx88nfZw7p0FxrML0h4,1372
14
- xoscar/backend.py,sha256=is436OPkZfSpQXaoqTRVta5eoye_pp45RFgCstAk2hU,1850
15
- xoscar/_version.py,sha256=ClSPrUjgGRGHIkVMQV9XQnkQ-n0akJMnq_rh819nqFE,23719
12
+ xoscar/context.cpython-39-aarch64-linux-gnu.so,sha256=LV5N5Jhm721j5CYlFbWRXGsrjI2a6tKZj62HQ11jvDg,1443768
16
13
  xoscar/debug.py,sha256=9Z8SgE2WaKYQcyDo-5-DxEJQ533v7kWjrvCd28pSx3E,5069
14
+ xoscar/_utils.cpython-39-aarch64-linux-gnu.so,sha256=WLy2j01X0tgDymLsJl3M1KDgDLGsgaBVDCbAV0kmgRg,1107656
17
15
  xoscar/constants.py,sha256=Yn59lRIOvE1VFwyuZB5G2-gxYIyhIZ1rVovbdFAR2NM,759
16
+ xoscar/driver.py,sha256=498fowtJr6b3FE8FIOA_Tc1Vwx88nfZw7p0FxrML0h4,1372
17
+ xoscar/profiling.py,sha256=BC5OF0HzSaXv8V7w-y-B8r5gV5DgxHFoTEIF6jCMioQ,8015
18
18
  xoscar/__init__.py,sha256=0zX8kKaio3ZIrlzB79WybcravMJw1OxPWjDspTgJFyQ,1608
19
- xoscar/_utils.cpython-39-aarch64-linux-gnu.so,sha256=WLy2j01X0tgDymLsJl3M1KDgDLGsgaBVDCbAV0kmgRg,1107656
20
- xoscar/context.pxd,sha256=qKa0OyDPZtVymftSh447m-RzFZgmz8rGqQBa7qlauvc,725
21
- xoscar/errors.py,sha256=wBlQOKsXf0Fc4skN39tDie0YZT-VIAuLNRgoDl2pZcA,1241
22
- xoscar/nvutils.py,sha256=qmW4mKLU0WB2yCs198ccQOgLL02zB7Fsa-AotO3NOmg,20412
23
- xoscar/serialization/aio.py,sha256=S9e3rHMBwqqKmJtDz7KzYAqWc8w9bttA0Dj83IBfEU0,4577
24
- xoscar/serialization/core.pxd,sha256=k4RoJgX5E5LGs4jdCQ7vvcn26MabXbrWoWhkO49X6YI,985
25
- xoscar/serialization/numpy.py,sha256=5Kem87CvpJmzUMp3QHk4WeHU30FoQWTJJP2SwIcaQG0,2919
26
- xoscar/serialization/cuda.py,sha256=iFUEnN4SiquBIhyieyOrfw3TnKnW-tU_vYgqOxO_DrA,3758
27
- xoscar/serialization/core.cpython-39-aarch64-linux-gnu.so,sha256=QOtgE89k1YUO0ehl0BFIp6Lfd8HKMgo5SosWoFQ8Yj0,3217544
28
- xoscar/serialization/core.pyx,sha256=E3xIKmdI2gn99JduR3yuU_YTm-lOyG0Tkc7fZVBWCho,30131
29
- xoscar/serialization/__init__.py,sha256=5Y_C3cYbQJIZ09LRjeCf-jrkLma7mfN8I5bznHrdsbg,846
30
- xoscar/serialization/scipy.py,sha256=yOEi0NB8cqQ6e2UnCZ1w006RsB7T725tIL-DM_hNcsU,2482
31
- xoscar/serialization/exception.py,sha256=Jy8Lsk0z-VJyEUaWeuZIwkmxqaoB-nLKMa1D15Cl4js,1634
32
- xoscar/serialization/pyfury.py,sha256=sifOnVMYoS82PzZEkzkfxesmMHei23k5UAUUKUyoOYQ,1163
33
- xoscar/aio/__init__.py,sha256=4Rv9V_wDIKlg7VcJeo1GVlvobwskYb1jYXef-0GQOaY,809
34
- xoscar/aio/base.py,sha256=9j0f1piwfE5R5GIvV212vSD03ixdaeSzSSsO2kxJZVE,2249
35
- xoscar/aio/lru.py,sha256=rpXCqSLtPV5xnWtd6uDwQQFGgIPEgvmWEQDkPNUx9cM,6311
36
- xoscar/aio/file.py,sha256=PBtkLp-Q7XtYl-zk00s18TtgIrkNr60J3Itf66ctO1o,1486
37
- xoscar/aio/_threads.py,sha256=WE9_NZY3K9n5bAzXRbj1Bc4dxS-1m1erMfZsUu-ULU4,1313
38
- xoscar/aio/parallelism.py,sha256=VSsjk8wP-Bw7tLeUsTyLVNgp91thjxEfE3pCrw_vF5Q,1293
39
- xoscar/collective/utils.py,sha256=3S4qF4JEnAUD3RiWVBUj-ZptL83CBSwGYyVZyIasAsE,1178
40
- xoscar/collective/__init__.py,sha256=XsClIkO_3Jd8GDifYuAbZCmJLAo9ZqGvnjUn9iuogmU,774
19
+ xoscar/api.py,sha256=3hztPoOxg8A_mlhWyWgVP7FMXG0PATA1TP4Rbaj7A-g,13327
20
+ xoscar/core.cpython-39-aarch64-linux-gnu.so,sha256=ntP_ZHnfDSUQgePgqQMMTCvSaTNvW441nwh2mCQGdIk,3476960
21
+ xoscar/core.pxd,sha256=4lBq8J0kjcXcsGuvN7Kv4xcL5liHwTTFWlqyK7XAEnw,1280
22
+ xoscar/_version.py,sha256=ClSPrUjgGRGHIkVMQV9XQnkQ-n0akJMnq_rh819nqFE,23719
23
+ xoscar/context.pyx,sha256=8CdgPnWcE9eOp3N600WgDQ03MCi8P73eUOGcfV7Zksg,10942
24
+ xoscar/backend.py,sha256=is436OPkZfSpQXaoqTRVta5eoye_pp45RFgCstAk2hU,1850
25
+ xoscar/libcpp.pxd,sha256=DJqBxLFOKL4iRr9Kale5UH3rbvPRD1x5bTSOPHFpz9I,1147
26
+ xoscar/batch.py,sha256=DpArS0L3WYJ_HVPG-6hSYEwoAFY1mY2-mlC4Jp5M_Dw,7872
41
27
  xoscar/collective/process_group.py,sha256=zy7LcIFnEcmrcxuECI89v0bQlUbSqQMkVyBw468WBnk,22599
42
- xoscar/collective/xoscar_pygloo.cpython-39-aarch64-linux-gnu.so,sha256=6pdzuUj_40VB_sLxkYp75PcJam1VOdH0FeMGpkUwJ6M,1648904
28
+ xoscar/collective/utils.py,sha256=3S4qF4JEnAUD3RiWVBUj-ZptL83CBSwGYyVZyIasAsE,1178
43
29
  xoscar/collective/common.py,sha256=INAnISbfnRicbbbDHTqbSr9ITb89ZphH5BUkSpEdXXU,3561
30
+ xoscar/collective/__init__.py,sha256=XsClIkO_3Jd8GDifYuAbZCmJLAo9ZqGvnjUn9iuogmU,774
44
31
  xoscar/collective/core.py,sha256=NVR-7Iaq3aDPCN6fgXcq9Ew6uFEszRwxYqmUG9FLcws,23502
45
- xoscar/metrics/api.py,sha256=BBlMIFvVAGVfrtpeJ1YlH9Tqhy9OzGavwvGyeHcQ0Tk,8856
32
+ xoscar/collective/xoscar_pygloo.cpython-39-aarch64-linux-gnu.so,sha256=cZVQDMX6ci3d3GJxLujGNPzpmE6cF8TfqSifaTzxOaI,1583168
46
33
  xoscar/metrics/__init__.py,sha256=9Badi7rxYikGm2dQiNCrj9GgMRBxwuR3JaEKcFZmfak,705
34
+ xoscar/metrics/api.py,sha256=BBlMIFvVAGVfrtpeJ1YlH9Tqhy9OzGavwvGyeHcQ0Tk,8856
47
35
  xoscar/metrics/backends/__init__.py,sha256=h_JgzSqV5lP6vQ6XX_17kE4IY4BRnvKta_7VLQAL1ms,581
48
36
  xoscar/metrics/backends/metric.py,sha256=aPhyc8JgH22L3rcHP8IjsmgrhSODjg6B5TZVnre97y8,4446
49
- xoscar/metrics/backends/prometheus/prometheus_metric.py,sha256=MxoMvVrg0pOkKpkjJ0PcAuEaaEJR2FZljmPrLjQ1-oc,2050
50
37
  xoscar/metrics/backends/prometheus/__init__.py,sha256=h_JgzSqV5lP6vQ6XX_17kE4IY4BRnvKta_7VLQAL1ms,581
51
- xoscar/metrics/backends/console/__init__.py,sha256=h_JgzSqV5lP6vQ6XX_17kE4IY4BRnvKta_7VLQAL1ms,581
38
+ xoscar/metrics/backends/prometheus/prometheus_metric.py,sha256=MxoMvVrg0pOkKpkjJ0PcAuEaaEJR2FZljmPrLjQ1-oc,2050
52
39
  xoscar/metrics/backends/console/console_metric.py,sha256=y5CCtH33j3AqI5_Uhwi4mgOcAhyhb4cWv_YvR6fxcbQ,2082
40
+ xoscar/metrics/backends/console/__init__.py,sha256=h_JgzSqV5lP6vQ6XX_17kE4IY4BRnvKta_7VLQAL1ms,581
53
41
  xoscar/backends/context.py,sha256=Vr_PibRxYCDQ_gYK7r-BOlw9TXw8VQbFsVTH7K7mHPk,15470
54
- xoscar/backends/allocate_strategy.py,sha256=tC1Nbq2tJohahUwd-zoRYHEDX65wyuX8tmeY45uWj_w,4845
55
- xoscar/backends/message.cpython-39-aarch64-linux-gnu.so,sha256=BN_c_Xx-b2dJaLeewBSGF61x2qT3P2lOIofnS9rHkmo,3067288
56
42
  xoscar/backends/__init__.py,sha256=VHEBQcUWM5bj027W8EUf9PiJUAP7JoMrRw3Tsvy5ySw,643
57
- xoscar/backends/message.pyx,sha256=_rXcsWPcWu77Z_38rvjDBdQojpY5xJoaHQrt57_LVyo,17612
58
- xoscar/backends/router.py,sha256=mhSvM5KVfV882jricVcpyxAqHEvhS4zL6ivczC6fOTE,7746
59
- xoscar/backends/pool.py,sha256=bvS1r31O01E8jTdoWOhSqcFymksNqO2nX3Fkqary8Ro,59149
60
43
  xoscar/backends/core.py,sha256=aHb3mMZ9vJe6pxg0P8kSOKvjXF1IaqgOgyhKVhHpNLM,7432
44
+ xoscar/backends/allocate_strategy.py,sha256=tC1Nbq2tJohahUwd-zoRYHEDX65wyuX8tmeY45uWj_w,4845
45
+ xoscar/backends/pool.py,sha256=itI9Ho6XjHjBY49-WPBu2absEUFOSCpQhgQ6OnUIm-4,59421
46
+ xoscar/backends/router.py,sha256=mhSvM5KVfV882jricVcpyxAqHEvhS4zL6ivczC6fOTE,7746
47
+ xoscar/backends/message.pyx,sha256=uyzilPc_7SqNwGUL4U-Zbfqku8bfZyRW_Lt_S3I_LEU,17930
48
+ xoscar/backends/message.cpython-39-aarch64-linux-gnu.so,sha256=MI1amaTd1CBvZoihZGBBA0O-u2ugw8iw4djHM4CoNA8,3076360
61
49
  xoscar/backends/config.py,sha256=EG26f0GwX_f4dAhwTW77RBjiK9h8R_3JrD-rBF1bAq8,4984
62
- xoscar/backends/test/backend.py,sha256=nv9WFhH5Bbq4Q1HB9yfpciZBaeHT4IQAtzugBWESrUY,1263
63
50
  xoscar/backends/test/__init__.py,sha256=j2ZfD6prD9WjUxRUDC7Eq5Z7N7TkL6fFr59oNyc_vY4,682
64
51
  xoscar/backends/test/pool.py,sha256=TW4X6J-92Pti66103poQBNDBznX6CBD3RLOc_zixjTo,7257
65
- xoscar/backends/communication/socket.py,sha256=W_khQ7fMSALFSZ2e_cnud2yp2cOjaMFutkNUhEGelI4,12566
52
+ xoscar/backends/test/backend.py,sha256=nv9WFhH5Bbq4Q1HB9yfpciZBaeHT4IQAtzugBWESrUY,1263
53
+ xoscar/backends/communication/dummy.py,sha256=gaKPNiN4x2aGZV3IGaaa8eaweBVjRh8B19jU1B5t2yw,7798
54
+ xoscar/backends/communication/errors.py,sha256=V3CdBe2xX9Rwv32f2dH2Msc84yaUhlyerZ42-739o1Q,723
66
55
  xoscar/backends/communication/utils.py,sha256=AmovE-hmWLXNCPwHafYuaRjOk8m42BUyT3XBqfXQRVI,3664
67
- xoscar/backends/communication/ucx.py,sha256=c9Ma3Z7iDH5_JITlnh46aHk8OlVQ-FebLhs2Ahlgxxw,19701
68
56
  xoscar/backends/communication/__init__.py,sha256=tB05BlK63iWQnfJgRzKt4mFKRtmWUki5hUGSZQwAotc,1050
69
- xoscar/backends/communication/base.py,sha256=0P4Tr35GSWpRp394e9jVWUUoKKa-gIk177eYPw1BnSU,7421
70
- xoscar/backends/communication/dummy.py,sha256=gaKPNiN4x2aGZV3IGaaa8eaweBVjRh8B19jU1B5t2yw,7798
71
57
  xoscar/backends/communication/core.py,sha256=sJeE3foRIqVPXldzYpFKHDSsabfAIFBU4JuXY4OyklY,2130
72
- xoscar/backends/communication/errors.py,sha256=V3CdBe2xX9Rwv32f2dH2Msc84yaUhlyerZ42-739o1Q,723
58
+ xoscar/backends/communication/base.py,sha256=0P4Tr35GSWpRp394e9jVWUUoKKa-gIk177eYPw1BnSU,7421
59
+ xoscar/backends/communication/socket.py,sha256=DXeYt8mFPnN5Cdg3BGFsmnJc0Ck4_OONveJwAGq44OM,13389
60
+ xoscar/backends/communication/ucx.py,sha256=7GAKIzlbxy-NpaDE9VLPde90tKxeU8lVZH8c_3ByuZ0,19703
73
61
  xoscar/backends/indigen/driver.py,sha256=VGzkacYKykegW5qhCuhx01gdgBZEKJjNIyfNCnA6Nm8,952
74
- xoscar/backends/indigen/backend.py,sha256=znl_fZzWGEtLH8hZ9j9Kkf0fva25jEem2_KO7I1RVvc,1612
75
62
  xoscar/backends/indigen/__init__.py,sha256=tKHP5ClzedBRBpZsLRVErR3EUNbbDm4CY4u0rCFJr44,685
76
63
  xoscar/backends/indigen/pool.py,sha256=mWYkOP4VVoUsXFgfpwruPuWblF6Waan5vxit8B-9_oQ,16852
77
- xoscar-0.3.3.dist-info/RECORD,,
78
- xoscar-0.3.3.dist-info/WHEEL,sha256=AOZphaC8dVDgphLiFmwKx5iedm7DOJvfKrhezgV0c_0,150
79
- xoscar-0.3.3.dist-info/top_level.txt,sha256=vYlqqY4Nys8Thm1hePIuUv8eQePdULVWMmt7lXtX_ZA,21
80
- xoscar-0.3.3.dist-info/METADATA,sha256=JhNlxO_63BsavL78aca-Dh-oYDl82IbMttpvR5Fdq2U,9193
64
+ xoscar/backends/indigen/backend.py,sha256=znl_fZzWGEtLH8hZ9j9Kkf0fva25jEem2_KO7I1RVvc,1612
65
+ xoscar/aio/file.py,sha256=PBtkLp-Q7XtYl-zk00s18TtgIrkNr60J3Itf66ctO1o,1486
66
+ xoscar/aio/lru.py,sha256=rpXCqSLtPV5xnWtd6uDwQQFGgIPEgvmWEQDkPNUx9cM,6311
67
+ xoscar/aio/__init__.py,sha256=kViDKR_kJe59VQViHITKEfBcIgN4ZJblUyd8zl0E3ZI,675
68
+ xoscar/aio/base.py,sha256=9j0f1piwfE5R5GIvV212vSD03ixdaeSzSSsO2kxJZVE,2249
69
+ xoscar/aio/parallelism.py,sha256=VSsjk8wP-Bw7tLeUsTyLVNgp91thjxEfE3pCrw_vF5Q,1293
70
+ xoscar/serialization/core.pyx,sha256=bjR-zXGm9qersk7kYPzpjpMIxDl_Auur4BCubRfKmfA,29626
71
+ xoscar/serialization/__init__.py,sha256=5Y_C3cYbQJIZ09LRjeCf-jrkLma7mfN8I5bznHrdsbg,846
72
+ xoscar/serialization/core.cpython-39-aarch64-linux-gnu.so,sha256=TdQdUNxNy34Amc0tPv9VRVE-RNepWa64LCG9yAStiBA,3203944
73
+ xoscar/serialization/exception.py,sha256=Jy8Lsk0z-VJyEUaWeuZIwkmxqaoB-nLKMa1D15Cl4js,1634
74
+ xoscar/serialization/core.pxd,sha256=k4RoJgX5E5LGs4jdCQ7vvcn26MabXbrWoWhkO49X6YI,985
75
+ xoscar/serialization/scipy.py,sha256=yOEi0NB8cqQ6e2UnCZ1w006RsB7T725tIL-DM_hNcsU,2482
76
+ xoscar/serialization/aio.py,sha256=S9e3rHMBwqqKmJtDz7KzYAqWc8w9bttA0Dj83IBfEU0,4577
77
+ xoscar/serialization/numpy.py,sha256=5Kem87CvpJmzUMp3QHk4WeHU30FoQWTJJP2SwIcaQG0,2919
78
+ xoscar/serialization/pyfury.py,sha256=sifOnVMYoS82PzZEkzkfxesmMHei23k5UAUUKUyoOYQ,1163
79
+ xoscar/serialization/cuda.py,sha256=iFUEnN4SiquBIhyieyOrfw3TnKnW-tU_vYgqOxO_DrA,3758
xoscar/aio/_threads.py DELETED
@@ -1,35 +0,0 @@
1
- # Copyright 2022-2023 XProbe Inc.
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
-
15
- import contextvars
16
- import functools
17
- from asyncio import events
18
-
19
- __all__ = ("to_thread",)
20
-
21
-
22
- async def to_thread(func, *args, **kwargs):
23
- """Asynchronously run function *func* in a separate thread.
24
-
25
- Any *args and **kwargs supplied for this function are directly passed
26
- to *func*. Also, the current :class:`contextvars.Context` is propagated,
27
- allowing context variables from the main thread to be accessed in the
28
- separate thread.
29
-
30
- Return a coroutine that can be awaited to get the eventual result of *func*.
31
- """
32
- loop = events.get_running_loop()
33
- ctx = contextvars.copy_context()
34
- func_call = functools.partial(ctx.run, func, *args, **kwargs)
35
- return await loop.run_in_executor(None, func_call)
File without changes