xoscar 0.3.2__cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl → 0.3.3__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.

@@ -30,7 +30,7 @@ from urllib.parse import urlparse
30
30
  from ..._utils import to_binary
31
31
  from ...constants import XOSCAR_UNIX_SOCKET_DIR
32
32
  from ...serialization import AioDeserializer, AioSerializer, deserialize
33
- from ...utils import classproperty, implements
33
+ from ...utils import classproperty, implements, is_v6_ip
34
34
  from .base import Channel, ChannelType, Client, Server
35
35
  from .core import register_client, register_server
36
36
  from .utils import read_buffers, write_buffers
@@ -201,17 +201,37 @@ class SocketServer(_BaseSocketServer):
201
201
  def channel_type(self) -> int:
202
202
  return ChannelType.remote
203
203
 
204
+ @classmethod
205
+ def parse_config(cls, config: dict) -> dict:
206
+ if config is None or not config:
207
+ return dict()
208
+ # we only need the following config
209
+ keys = ["listen_elastic_ip"]
210
+ parsed_config = {key: config[key] for key in keys if key in config}
211
+
212
+ return parsed_config
213
+
204
214
  @staticmethod
205
215
  @implements(Server.create)
206
216
  async def create(config: Dict) -> "Server":
207
217
  config = config.copy()
208
218
  if "address" in config:
209
219
  address = config.pop("address")
210
- host, port = address.split(":", 1)
220
+ host, port = address.rsplit(":", 1)
211
221
  port = int(port)
212
222
  else:
213
223
  host = config.pop("host")
214
224
  port = int(config.pop("port"))
225
+ _host = host
226
+ if config.pop("listen_elastic_ip", False):
227
+ # The Actor.address will be announce to client, and is not on our host,
228
+ # cannot actually listen on it,
229
+ # so we have to keep SocketServer.host untouched to make sure Actor.address not changed
230
+ if is_v6_ip(host):
231
+ _host = "::"
232
+ else:
233
+ _host = "0.0.0.0"
234
+
215
235
  handle_channel = config.pop("handle_channel")
216
236
  if "start_serving" not in config:
217
237
  config["start_serving"] = False
@@ -224,7 +244,7 @@ class SocketServer(_BaseSocketServer):
224
244
 
225
245
  port = port if port != 0 else None
226
246
  aio_server = await asyncio.start_server(
227
- handle_connection, host=host, port=port, **config
247
+ handle_connection, host=_host, port=port, **config
228
248
  )
229
249
 
230
250
  # get port of the socket if not specified
@@ -250,7 +270,7 @@ class SocketClient(Client):
250
270
  async def connect(
251
271
  dest_address: str, local_address: str | None = None, **kwargs
252
272
  ) -> "Client":
253
- host, port_str = dest_address.split(":", 1)
273
+ host, port_str = dest_address.rsplit(":", 1)
254
274
  port = int(port_str)
255
275
  (reader, writer) = await asyncio.open_connection(host=host, port=port, **kwargs)
256
276
  channel = SocketChannel(
@@ -28,7 +28,7 @@ import numpy as np
28
28
  from ...nvutils import get_cuda_context, get_index_and_uuid
29
29
  from ...serialization import deserialize
30
30
  from ...serialization.aio import BUFFER_SIZES_NAME, AioSerializer, get_header_length
31
- from ...utils import classproperty, implements, is_cuda_buffer, lazy_import
31
+ from ...utils import classproperty, implements, is_cuda_buffer, is_v6_ip, lazy_import
32
32
  from ..message import _MessageBase
33
33
  from .base import Channel, ChannelType, Client, Server
34
34
  from .core import register_client, register_server
@@ -401,11 +401,21 @@ class UCXServer(Server):
401
401
  prefix = f"{UCXServer.scheme}://"
402
402
  if address.startswith(prefix):
403
403
  address = address[len(prefix) :]
404
- host, port = address.split(":", 1)
404
+ host, port = address.rsplit(":", 1)
405
405
  port = int(port)
406
406
  else:
407
407
  host = config.pop("host")
408
408
  port = int(config.pop("port"))
409
+ _host = host
410
+ if config.pop("listen_elastic_ip", False):
411
+ # The Actor.address will be announce to client, and is not on our host,
412
+ # cannot actually listen on it,
413
+ # so we have to keep SocketServer.host untouched to make sure Actor.address not changed
414
+ if is_v6_ip(host):
415
+ _host = "::"
416
+ else:
417
+ _host = "0.0.0.0"
418
+
409
419
  handle_channel = config.pop("handle_channel")
410
420
 
411
421
  # init
@@ -414,7 +424,7 @@ class UCXServer(Server):
414
424
  async def serve_forever(client_ucp_endpoint: "ucp.Endpoint"): # type: ignore
415
425
  try:
416
426
  await server.on_connected(
417
- client_ucp_endpoint, local_address=server.address
427
+ client_ucp_endpoint, local_address="%s:%d" % (_host, port)
418
428
  )
419
429
  except ChannelClosed: # pragma: no cover
420
430
  logger.exception("Connection closed before handshake completed")
@@ -498,7 +508,7 @@ class UCXClient(Client):
498
508
  prefix = f"{UCXClient.scheme}://"
499
509
  if dest_address.startswith(prefix):
500
510
  dest_address = dest_address[len(prefix) :]
501
- host, port_str = dest_address.split(":", 1)
511
+ host, port_str = dest_address.rsplit(":", 1)
502
512
  port = int(port_str)
503
513
  kwargs = kwargs.copy()
504
514
  ucx_config = kwargs.pop("config", dict()).get("ucx", dict())
@@ -132,7 +132,7 @@ class MainActorPool(MainActorPoolBase):
132
132
  """Get external address for every process"""
133
133
  assert n_process is not None
134
134
  if ":" in address:
135
- host, port_str = address.split(":", 1)
135
+ host, port_str = address.rsplit(":", 1)
136
136
  port = int(port_str)
137
137
  if ports:
138
138
  if len(ports) != n_process:
@@ -324,6 +324,7 @@ class MainActorPool(MainActorPoolBase):
324
324
  start_method: str | None = None,
325
325
  kwargs: dict | None = None,
326
326
  ):
327
+ # external_address has port 0, subprocess will bind random port.
327
328
  external_address = (
328
329
  external_address
329
330
  or MainActorPool.get_external_addresses(self.external_address, n_process=1)[
@@ -393,7 +394,7 @@ class MainActorPool(MainActorPoolBase):
393
394
  content=self._config,
394
395
  )
395
396
  await self.handle_control_command(control_message)
396
-
397
+ # The actual port will return in process_status.
397
398
  return process_status.external_addresses[0]
398
399
 
399
400
  async def remove_sub_pool(
@@ -416,22 +417,21 @@ class MainActorPool(MainActorPoolBase):
416
417
  async def kill_sub_pool(
417
418
  self, process: multiprocessing.Process, force: bool = False
418
419
  ):
419
- if (
420
- "COV_CORE_SOURCE" in os.environ and not force and not _is_windows
421
- ): # pragma: no cover
422
- # must shutdown gracefully, or coverage info lost
423
- try:
424
- os.kill(process.pid, signal.SIGINT) # type: ignore
425
- except OSError: # pragma: no cover
426
- pass
427
- process.terminate()
420
+ if not force: # pragma: no cover
421
+ # must shutdown gracefully, or subprocess created by model will not exit
422
+ if not _is_windows:
423
+ try:
424
+ os.kill(process.pid, signal.SIGINT) # type: ignore
425
+ except OSError: # pragma: no cover
426
+ pass
427
+ process.terminate() # SIGTERM
428
428
  wait_pool = futures.ThreadPoolExecutor(1)
429
429
  try:
430
430
  loop = asyncio.get_running_loop()
431
431
  await loop.run_in_executor(wait_pool, process.join, 3)
432
432
  finally:
433
433
  wait_pool.shutdown(False)
434
- process.kill()
434
+ process.kill() # SIGKILL
435
435
  await asyncio.to_thread(process.join, 5)
436
436
 
437
437
  async def is_sub_pool_alive(self, process: multiprocessing.Process):
xoscar/collective/core.py CHANGED
@@ -95,7 +95,7 @@ class RankActor(Actor):
95
95
  return self._backend
96
96
 
97
97
  def _get_ip(self) -> str:
98
- return self.address.split(":")[0]
98
+ return self.address.rsplit(":", 1)[0]
99
99
 
100
100
  def _process_group_name(self, ranks: List[int]) -> str:
101
101
  return hashlib.sha1(
Binary file
xoscar/utils.py CHANGED
@@ -465,12 +465,12 @@ def is_linux():
465
465
 
466
466
 
467
467
  def is_v4_zero_ip(ip_port_addr: str) -> bool:
468
- return ip_port_addr.startswith("0.0.0.0:")
468
+ return ip_port_addr.split("://")[-1].startswith("0.0.0.0:")
469
469
 
470
470
 
471
471
  def is_v6_zero_ip(ip_port_addr: str) -> bool:
472
472
  # tcp6 addr ":::123", ":: means all zero"
473
- arr = ip_port_addr.split(":")
473
+ arr = ip_port_addr.split("://")[-1].split(":")
474
474
  if len(arr) <= 2: # Not tcp6 or udp6
475
475
  return False
476
476
  for part in arr[0:-1]:
@@ -480,6 +480,11 @@ def is_v6_zero_ip(ip_port_addr: str) -> bool:
480
480
  return True
481
481
 
482
482
 
483
+ def is_v6_ip(ip_port_addr: str) -> bool:
484
+ arr = ip_port_addr.split("://", 1)[-1].split(":")
485
+ return len(arr) > 1
486
+
487
+
483
488
  def fix_all_zero_ip(remote_addr: str, connect_addr: str) -> str:
484
489
  """
485
490
  Use connect_addr to fix ActorRef.address return by remote server.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: xoscar
3
- Version: 0.3.2
3
+ Version: 0.3.3
4
4
  Summary: Python actor framework for heterogeneous computing.
5
5
  Home-page: http://github.com/xorbitsai/xoscar
6
6
  Author: Qin Xuye
@@ -18,41 +18,41 @@ Classifier: Programming Language :: Python :: 3.11
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
22
- Requires-Dist: pandas >=1.0.0
23
- Requires-Dist: cloudpickle >=1.5.0
24
- Requires-Dist: psutil >=5.9.0
25
- Requires-Dist: tblib >=1.7.0
21
+ Requires-Dist: numpy<2.0.0,>=1.14.0
22
+ Requires-Dist: pandas>=1.0.0
23
+ Requires-Dist: cloudpickle>=1.5.0
24
+ Requires-Dist: psutil>=5.9.0
25
+ Requires-Dist: tblib>=1.7.0
26
26
  Requires-Dist: packaging
27
- Requires-Dist: pickle5 ; python_version < "3.8"
28
- Requires-Dist: uvloop >=0.14.0 ; sys_platform != "win32"
29
- Requires-Dist: scipy >=1.0.0 ; sys_platform != "win32" or python_version >= "3.10"
30
- Requires-Dist: scipy <=1.9.1,>=1.0.0 ; sys_platform == "win32" and python_version < "3.10"
27
+ Requires-Dist: pickle5; python_version < "3.8"
28
+ Requires-Dist: uvloop>=0.14.0; sys_platform != "win32"
29
+ Requires-Dist: scipy>=1.0.0; sys_platform != "win32" or python_version >= "3.10"
30
+ Requires-Dist: scipy<=1.9.1,>=1.0.0; sys_platform == "win32" and python_version < "3.10"
31
31
  Provides-Extra: dev
32
- Requires-Dist: cython >=0.29 ; extra == 'dev'
33
- Requires-Dist: pytest >=3.5.0 ; extra == 'dev'
34
- Requires-Dist: pytest-cov >=2.5.0 ; extra == 'dev'
35
- Requires-Dist: pytest-timeout >=1.2.0 ; extra == 'dev'
36
- Requires-Dist: pytest-forked >=1.0 ; extra == 'dev'
37
- Requires-Dist: pytest-asyncio >=0.14.0 ; extra == 'dev'
38
- Requires-Dist: ipython >=6.5.0 ; extra == 'dev'
39
- Requires-Dist: sphinx <5.0.0,>=3.0.0 ; extra == 'dev'
40
- Requires-Dist: pydata-sphinx-theme >=0.3.0 ; extra == 'dev'
41
- Requires-Dist: sphinx-intl >=0.9.9 ; extra == 'dev'
42
- Requires-Dist: flake8 >=3.8.0 ; extra == 'dev'
43
- Requires-Dist: black ; extra == 'dev'
44
- Requires-Dist: mock >=4.0.0 ; (python_version < "3.8") and extra == 'dev'
32
+ Requires-Dist: cython>=0.29; extra == "dev"
33
+ Requires-Dist: pytest>=3.5.0; extra == "dev"
34
+ Requires-Dist: pytest-cov>=2.5.0; extra == "dev"
35
+ Requires-Dist: pytest-timeout>=1.2.0; extra == "dev"
36
+ Requires-Dist: pytest-forked>=1.0; extra == "dev"
37
+ Requires-Dist: pytest-asyncio>=0.14.0; extra == "dev"
38
+ Requires-Dist: ipython>=6.5.0; extra == "dev"
39
+ Requires-Dist: sphinx<5.0.0,>=3.0.0; extra == "dev"
40
+ Requires-Dist: pydata-sphinx-theme>=0.3.0; extra == "dev"
41
+ Requires-Dist: sphinx-intl>=0.9.9; extra == "dev"
42
+ Requires-Dist: flake8>=3.8.0; extra == "dev"
43
+ Requires-Dist: black; extra == "dev"
44
+ Requires-Dist: mock>=4.0.0; python_version < "3.8" and extra == "dev"
45
45
  Provides-Extra: doc
46
- Requires-Dist: ipython >=6.5.0 ; extra == 'doc'
47
- Requires-Dist: sphinx <5.0.0,>=3.0.0 ; extra == 'doc'
48
- Requires-Dist: pydata-sphinx-theme >=0.3.0 ; extra == 'doc'
49
- Requires-Dist: sphinx-intl >=0.9.9 ; extra == 'doc'
46
+ Requires-Dist: ipython>=6.5.0; extra == "doc"
47
+ Requires-Dist: sphinx<5.0.0,>=3.0.0; extra == "doc"
48
+ Requires-Dist: pydata-sphinx-theme>=0.3.0; extra == "doc"
49
+ Requires-Dist: sphinx-intl>=0.9.9; extra == "doc"
50
50
  Provides-Extra: extra
51
- Requires-Dist: pyarrow >=5.0.0 ; extra == 'extra'
51
+ Requires-Dist: pyarrow>=5.0.0; extra == "extra"
52
52
  Provides-Extra: kubernetes
53
- Requires-Dist: kubernetes >=10.0.0 ; extra == 'kubernetes'
53
+ Requires-Dist: kubernetes>=10.0.0; extra == "kubernetes"
54
54
  Provides-Extra: ray
55
- Requires-Dist: xoscar-ray >=0.0.1 ; extra == 'ray'
55
+ Requires-Dist: xoscar-ray>=0.0.1; extra == "ray"
56
56
 
57
57
  <div align="center">
58
58
  <img width="77%" alt="" src="https://raw.githubusercontent.com/xprobe-inc/xoscar/main/doc/source/_static/Xoscar.svg"><br>
@@ -1,80 +1,80 @@
1
- xoscar-0.3.2.dist-info/WHEEL,sha256=iPTY0kiUgsIQ8RgTKKmTNHcTilFGetvFWd3_QTb8vUA,150
2
- xoscar-0.3.2.dist-info/top_level.txt,sha256=vYlqqY4Nys8Thm1hePIuUv8eQePdULVWMmt7lXtX_ZA,21
3
- xoscar-0.3.2.dist-info/RECORD,,
4
- xoscar-0.3.2.dist-info/METADATA,sha256=Sw1MUXmjiJDvY37wnlzYTfiAyRYM3pqIMfefEvjPr94,9246
5
- xoscar/batch.py,sha256=DpArS0L3WYJ_HVPG-6hSYEwoAFY1mY2-mlC4Jp5M_Dw,7872
6
- xoscar/_utils.pxd,sha256=5KYAL3jfPdejsHnrGGT2s--ZUX5SXznQWpHVSno429k,1157
7
- xoscar/context.pxd,sha256=qKa0OyDPZtVymftSh447m-RzFZgmz8rGqQBa7qlauvc,725
8
- xoscar/core.cpython-39-aarch64-linux-gnu.so,sha256=s4O7f1U01gxncDcu2FFBUADSv8wXBiftxeGCbR4g7-E,3474728
9
- xoscar/driver.py,sha256=498fowtJr6b3FE8FIOA_Tc1Vwx88nfZw7p0FxrML0h4,1372
10
- xoscar/__init__.py,sha256=0zX8kKaio3ZIrlzB79WybcravMJw1OxPWjDspTgJFyQ,1608
11
- xoscar/debug.py,sha256=9Z8SgE2WaKYQcyDo-5-DxEJQ533v7kWjrvCd28pSx3E,5069
12
- xoscar/_utils.cpython-39-aarch64-linux-gnu.so,sha256=a6JU8pwVu2ujoKmovi_Ud0vYtuG69yqdQewVoyYjCfI,1108120
13
- xoscar/errors.py,sha256=wBlQOKsXf0Fc4skN39tDie0YZT-VIAuLNRgoDl2pZcA,1241
14
1
  xoscar/_utils.pyx,sha256=UR1FtYXAYKIdEWR9HulEpMbSOrkQWi6xGz63d4IQmG0,7059
15
- xoscar/_version.py,sha256=ClSPrUjgGRGHIkVMQV9XQnkQ-n0akJMnq_rh819nqFE,23719
16
2
  xoscar/core.pxd,sha256=4lBq8J0kjcXcsGuvN7Kv4xcL5liHwTTFWlqyK7XAEnw,1280
17
- xoscar/backend.py,sha256=is436OPkZfSpQXaoqTRVta5eoye_pp45RFgCstAk2hU,1850
18
- xoscar/constants.py,sha256=Yn59lRIOvE1VFwyuZB5G2-gxYIyhIZ1rVovbdFAR2NM,759
19
- xoscar/context.pyx,sha256=8CdgPnWcE9eOp3N600WgDQ03MCi8P73eUOGcfV7Zksg,10942
20
- xoscar/core.pyx,sha256=Aqc2i8Fetsd5wRAPF4kL0ddnBZn3E2HRNCvup79BbQc,21730
21
3
  xoscar/api.py,sha256=3hztPoOxg8A_mlhWyWgVP7FMXG0PATA1TP4Rbaj7A-g,13327
4
+ xoscar/context.cpython-39-aarch64-linux-gnu.so,sha256=LV5N5Jhm721j5CYlFbWRXGsrjI2a6tKZj62HQ11jvDg,1443768
22
5
  xoscar/profiling.py,sha256=BC5OF0HzSaXv8V7w-y-B8r5gV5DgxHFoTEIF6jCMioQ,8015
23
- xoscar/context.cpython-39-aarch64-linux-gnu.so,sha256=QjPrgaZeXZwArzyD9lhAEHB7aw5ZrTC9gxHw_YY0qE8,1443096
24
- xoscar/utils.py,sha256=TYp6wC8xx2AjKcoKt6Xk0bwhFeccBJKCK50YQE1XOV4,16076
25
- xoscar/nvutils.py,sha256=qmW4mKLU0WB2yCs198ccQOgLL02zB7Fsa-AotO3NOmg,20412
26
6
  xoscar/libcpp.pxd,sha256=DJqBxLFOKL4iRr9Kale5UH3rbvPRD1x5bTSOPHFpz9I,1147
27
- xoscar/metrics/__init__.py,sha256=9Badi7rxYikGm2dQiNCrj9GgMRBxwuR3JaEKcFZmfak,705
7
+ xoscar/context.pyx,sha256=8CdgPnWcE9eOp3N600WgDQ03MCi8P73eUOGcfV7Zksg,10942
8
+ 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
+ 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
16
+ xoscar/debug.py,sha256=9Z8SgE2WaKYQcyDo-5-DxEJQ533v7kWjrvCd28pSx3E,5069
17
+ xoscar/constants.py,sha256=Yn59lRIOvE1VFwyuZB5G2-gxYIyhIZ1rVovbdFAR2NM,759
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
41
+ xoscar/collective/process_group.py,sha256=zy7LcIFnEcmrcxuECI89v0bQlUbSqQMkVyBw468WBnk,22599
42
+ xoscar/collective/xoscar_pygloo.cpython-39-aarch64-linux-gnu.so,sha256=6pdzuUj_40VB_sLxkYp75PcJam1VOdH0FeMGpkUwJ6M,1648904
43
+ xoscar/collective/common.py,sha256=INAnISbfnRicbbbDHTqbSr9ITb89ZphH5BUkSpEdXXU,3561
44
+ xoscar/collective/core.py,sha256=NVR-7Iaq3aDPCN6fgXcq9Ew6uFEszRwxYqmUG9FLcws,23502
28
45
  xoscar/metrics/api.py,sha256=BBlMIFvVAGVfrtpeJ1YlH9Tqhy9OzGavwvGyeHcQ0Tk,8856
46
+ xoscar/metrics/__init__.py,sha256=9Badi7rxYikGm2dQiNCrj9GgMRBxwuR3JaEKcFZmfak,705
29
47
  xoscar/metrics/backends/__init__.py,sha256=h_JgzSqV5lP6vQ6XX_17kE4IY4BRnvKta_7VLQAL1ms,581
30
48
  xoscar/metrics/backends/metric.py,sha256=aPhyc8JgH22L3rcHP8IjsmgrhSODjg6B5TZVnre97y8,4446
31
- xoscar/metrics/backends/prometheus/__init__.py,sha256=h_JgzSqV5lP6vQ6XX_17kE4IY4BRnvKta_7VLQAL1ms,581
32
49
  xoscar/metrics/backends/prometheus/prometheus_metric.py,sha256=MxoMvVrg0pOkKpkjJ0PcAuEaaEJR2FZljmPrLjQ1-oc,2050
50
+ xoscar/metrics/backends/prometheus/__init__.py,sha256=h_JgzSqV5lP6vQ6XX_17kE4IY4BRnvKta_7VLQAL1ms,581
33
51
  xoscar/metrics/backends/console/__init__.py,sha256=h_JgzSqV5lP6vQ6XX_17kE4IY4BRnvKta_7VLQAL1ms,581
34
52
  xoscar/metrics/backends/console/console_metric.py,sha256=y5CCtH33j3AqI5_Uhwi4mgOcAhyhb4cWv_YvR6fxcbQ,2082
53
+ 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
35
56
  xoscar/backends/__init__.py,sha256=VHEBQcUWM5bj027W8EUf9PiJUAP7JoMrRw3Tsvy5ySw,643
36
- xoscar/backends/message.cpython-39-aarch64-linux-gnu.so,sha256=X47tkGScmjsyQ51XpZeg8zWXU_Szy-E_UQaLLLugY78,3065624
37
- xoscar/backends/core.py,sha256=aHb3mMZ9vJe6pxg0P8kSOKvjXF1IaqgOgyhKVhHpNLM,7432
38
57
  xoscar/backends/message.pyx,sha256=_rXcsWPcWu77Z_38rvjDBdQojpY5xJoaHQrt57_LVyo,17612
39
- xoscar/backends/config.py,sha256=EG26f0GwX_f4dAhwTW77RBjiK9h8R_3JrD-rBF1bAq8,4984
40
- xoscar/backends/allocate_strategy.py,sha256=tC1Nbq2tJohahUwd-zoRYHEDX65wyuX8tmeY45uWj_w,4845
41
- xoscar/backends/pool.py,sha256=bvS1r31O01E8jTdoWOhSqcFymksNqO2nX3Fkqary8Ro,59149
42
58
  xoscar/backends/router.py,sha256=mhSvM5KVfV882jricVcpyxAqHEvhS4zL6ivczC6fOTE,7746
43
- xoscar/backends/context.py,sha256=Vr_PibRxYCDQ_gYK7r-BOlw9TXw8VQbFsVTH7K7mHPk,15470
44
- xoscar/backends/test/__init__.py,sha256=j2ZfD6prD9WjUxRUDC7Eq5Z7N7TkL6fFr59oNyc_vY4,682
59
+ xoscar/backends/pool.py,sha256=bvS1r31O01E8jTdoWOhSqcFymksNqO2nX3Fkqary8Ro,59149
60
+ xoscar/backends/core.py,sha256=aHb3mMZ9vJe6pxg0P8kSOKvjXF1IaqgOgyhKVhHpNLM,7432
61
+ xoscar/backends/config.py,sha256=EG26f0GwX_f4dAhwTW77RBjiK9h8R_3JrD-rBF1bAq8,4984
45
62
  xoscar/backends/test/backend.py,sha256=nv9WFhH5Bbq4Q1HB9yfpciZBaeHT4IQAtzugBWESrUY,1263
63
+ xoscar/backends/test/__init__.py,sha256=j2ZfD6prD9WjUxRUDC7Eq5Z7N7TkL6fFr59oNyc_vY4,682
46
64
  xoscar/backends/test/pool.py,sha256=TW4X6J-92Pti66103poQBNDBznX6CBD3RLOc_zixjTo,7257
47
- xoscar/backends/indigen/driver.py,sha256=VGzkacYKykegW5qhCuhx01gdgBZEKJjNIyfNCnA6Nm8,952
48
- xoscar/backends/indigen/__init__.py,sha256=tKHP5ClzedBRBpZsLRVErR3EUNbbDm4CY4u0rCFJr44,685
49
- xoscar/backends/indigen/backend.py,sha256=znl_fZzWGEtLH8hZ9j9Kkf0fva25jEem2_KO7I1RVvc,1612
50
- xoscar/backends/indigen/pool.py,sha256=3C1N2sbq02maUjl7jDhRkyYAoYmZD8hZBct6wxblq_Y,16709
65
+ xoscar/backends/communication/socket.py,sha256=W_khQ7fMSALFSZ2e_cnud2yp2cOjaMFutkNUhEGelI4,12566
66
+ xoscar/backends/communication/utils.py,sha256=AmovE-hmWLXNCPwHafYuaRjOk8m42BUyT3XBqfXQRVI,3664
67
+ xoscar/backends/communication/ucx.py,sha256=c9Ma3Z7iDH5_JITlnh46aHk8OlVQ-FebLhs2Ahlgxxw,19701
51
68
  xoscar/backends/communication/__init__.py,sha256=tB05BlK63iWQnfJgRzKt4mFKRtmWUki5hUGSZQwAotc,1050
52
- xoscar/backends/communication/core.py,sha256=sJeE3foRIqVPXldzYpFKHDSsabfAIFBU4JuXY4OyklY,2130
53
69
  xoscar/backends/communication/base.py,sha256=0P4Tr35GSWpRp394e9jVWUUoKKa-gIk177eYPw1BnSU,7421
54
- xoscar/backends/communication/errors.py,sha256=V3CdBe2xX9Rwv32f2dH2Msc84yaUhlyerZ42-739o1Q,723
55
- xoscar/backends/communication/ucx.py,sha256=eidp4l-YAzFMCYaeUcvpK4ecapg-92fXFKO-t_bBkTU,19267
56
- xoscar/backends/communication/socket.py,sha256=VBPiesyjX8c3ECWn8kv8qGwK3xCBqh_CHPrNDapYH6w,11819
57
- xoscar/backends/communication/utils.py,sha256=AmovE-hmWLXNCPwHafYuaRjOk8m42BUyT3XBqfXQRVI,3664
58
70
  xoscar/backends/communication/dummy.py,sha256=gaKPNiN4x2aGZV3IGaaa8eaweBVjRh8B19jU1B5t2yw,7798
59
- xoscar/serialization/core.cpython-39-aarch64-linux-gnu.so,sha256=GNYzilS8rnloq23HLqlJOikolom5id9I-Ode9dn9V2g,3217368
60
- xoscar/serialization/__init__.py,sha256=5Y_C3cYbQJIZ09LRjeCf-jrkLma7mfN8I5bznHrdsbg,846
61
- xoscar/serialization/cuda.py,sha256=iFUEnN4SiquBIhyieyOrfw3TnKnW-tU_vYgqOxO_DrA,3758
62
- xoscar/serialization/core.pxd,sha256=k4RoJgX5E5LGs4jdCQ7vvcn26MabXbrWoWhkO49X6YI,985
63
- xoscar/serialization/aio.py,sha256=S9e3rHMBwqqKmJtDz7KzYAqWc8w9bttA0Dj83IBfEU0,4577
64
- xoscar/serialization/scipy.py,sha256=yOEi0NB8cqQ6e2UnCZ1w006RsB7T725tIL-DM_hNcsU,2482
65
- xoscar/serialization/numpy.py,sha256=5Kem87CvpJmzUMp3QHk4WeHU30FoQWTJJP2SwIcaQG0,2919
66
- xoscar/serialization/exception.py,sha256=Jy8Lsk0z-VJyEUaWeuZIwkmxqaoB-nLKMa1D15Cl4js,1634
67
- xoscar/serialization/core.pyx,sha256=E3xIKmdI2gn99JduR3yuU_YTm-lOyG0Tkc7fZVBWCho,30131
68
- xoscar/serialization/pyfury.py,sha256=sifOnVMYoS82PzZEkzkfxesmMHei23k5UAUUKUyoOYQ,1163
69
- xoscar/collective/process_group.py,sha256=zy7LcIFnEcmrcxuECI89v0bQlUbSqQMkVyBw468WBnk,22599
70
- xoscar/collective/__init__.py,sha256=XsClIkO_3Jd8GDifYuAbZCmJLAo9ZqGvnjUn9iuogmU,774
71
- xoscar/collective/core.py,sha256=WfMJZloiRiqsLlIMhU4Pa47eo0jE-hoXdbTBwZPM6TM,23498
72
- xoscar/collective/common.py,sha256=INAnISbfnRicbbbDHTqbSr9ITb89ZphH5BUkSpEdXXU,3561
73
- xoscar/collective/xoscar_pygloo.cpython-39-aarch64-linux-gnu.so,sha256=6pdzuUj_40VB_sLxkYp75PcJam1VOdH0FeMGpkUwJ6M,1648904
74
- xoscar/collective/utils.py,sha256=3S4qF4JEnAUD3RiWVBUj-ZptL83CBSwGYyVZyIasAsE,1178
75
- xoscar/aio/__init__.py,sha256=4Rv9V_wDIKlg7VcJeo1GVlvobwskYb1jYXef-0GQOaY,809
76
- xoscar/aio/base.py,sha256=9j0f1piwfE5R5GIvV212vSD03ixdaeSzSSsO2kxJZVE,2249
77
- xoscar/aio/file.py,sha256=PBtkLp-Q7XtYl-zk00s18TtgIrkNr60J3Itf66ctO1o,1486
78
- xoscar/aio/_threads.py,sha256=WE9_NZY3K9n5bAzXRbj1Bc4dxS-1m1erMfZsUu-ULU4,1313
79
- xoscar/aio/lru.py,sha256=rpXCqSLtPV5xnWtd6uDwQQFGgIPEgvmWEQDkPNUx9cM,6311
80
- xoscar/aio/parallelism.py,sha256=VSsjk8wP-Bw7tLeUsTyLVNgp91thjxEfE3pCrw_vF5Q,1293
71
+ xoscar/backends/communication/core.py,sha256=sJeE3foRIqVPXldzYpFKHDSsabfAIFBU4JuXY4OyklY,2130
72
+ xoscar/backends/communication/errors.py,sha256=V3CdBe2xX9Rwv32f2dH2Msc84yaUhlyerZ42-739o1Q,723
73
+ xoscar/backends/indigen/driver.py,sha256=VGzkacYKykegW5qhCuhx01gdgBZEKJjNIyfNCnA6Nm8,952
74
+ xoscar/backends/indigen/backend.py,sha256=znl_fZzWGEtLH8hZ9j9Kkf0fva25jEem2_KO7I1RVvc,1612
75
+ xoscar/backends/indigen/__init__.py,sha256=tKHP5ClzedBRBpZsLRVErR3EUNbbDm4CY4u0rCFJr44,685
76
+ 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
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.43.0)
2
+ Generator: bdist_wheel (0.44.0)
3
3
  Root-Is-Purelib: false
4
4
  Tag: cp39-cp39-manylinux_2_17_aarch64
5
5
  Tag: cp39-cp39-manylinux2014_aarch64