xoscar 0.3.1__cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl → 0.3.3__cp310-cp310-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(
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.1
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/_utils.pyx,sha256=UR1FtYXAYKIdEWR9HulEpMbSOrkQWi6xGz63d4IQmG0,7059
2
+ xoscar/core.pxd,sha256=4lBq8J0kjcXcsGuvN7Kv4xcL5liHwTTFWlqyK7XAEnw,1280
3
+ xoscar/api.py,sha256=3hztPoOxg8A_mlhWyWgVP7FMXG0PATA1TP4Rbaj7A-g,13327
1
4
  xoscar/profiling.py,sha256=BC5OF0HzSaXv8V7w-y-B8r5gV5DgxHFoTEIF6jCMioQ,8015
2
- xoscar/context.cpython-310-aarch64-linux-gnu.so,sha256=1u9Z42JkAAcINK15mDao2mu8OdiNcAlbtr1ld-5wrKM,1434376
3
- xoscar/_version.py,sha256=ClSPrUjgGRGHIkVMQV9XQnkQ-n0akJMnq_rh819nqFE,23719
4
- xoscar/core.pyx,sha256=Aqc2i8Fetsd5wRAPF4kL0ddnBZn3E2HRNCvup79BbQc,21730
5
5
  xoscar/libcpp.pxd,sha256=DJqBxLFOKL4iRr9Kale5UH3rbvPRD1x5bTSOPHFpz9I,1147
6
- xoscar/core.cpython-310-aarch64-linux-gnu.so,sha256=8GaaxdgvX_qv0TlUUm9yE1CLeC9CSwYdw3vrF34qLxU,3474048
7
- xoscar/debug.py,sha256=9Z8SgE2WaKYQcyDo-5-DxEJQ533v7kWjrvCd28pSx3E,5069
8
- xoscar/_utils.cpython-310-aarch64-linux-gnu.so,sha256=dSrr2ptBB5Pxys0lsJygbZrXJSCsfevpu76xEr9iReE,1100360
9
- xoscar/backend.py,sha256=is436OPkZfSpQXaoqTRVta5eoye_pp45RFgCstAk2hU,1850
10
- xoscar/nvutils.py,sha256=qmW4mKLU0WB2yCs198ccQOgLL02zB7Fsa-AotO3NOmg,20412
11
- xoscar/driver.py,sha256=498fowtJr6b3FE8FIOA_Tc1Vwx88nfZw7p0FxrML0h4,1372
12
- xoscar/api.py,sha256=3hztPoOxg8A_mlhWyWgVP7FMXG0PATA1TP4Rbaj7A-g,13327
13
- xoscar/context.pxd,sha256=qKa0OyDPZtVymftSh447m-RzFZgmz8rGqQBa7qlauvc,725
14
- xoscar/utils.py,sha256=TYp6wC8xx2AjKcoKt6Xk0bwhFeccBJKCK50YQE1XOV4,16076
15
- xoscar/constants.py,sha256=Yn59lRIOvE1VFwyuZB5G2-gxYIyhIZ1rVovbdFAR2NM,759
16
- xoscar/errors.py,sha256=wBlQOKsXf0Fc4skN39tDie0YZT-VIAuLNRgoDl2pZcA,1241
6
+ xoscar/context.pyx,sha256=8CdgPnWcE9eOp3N600WgDQ03MCi8P73eUOGcfV7Zksg,10942
17
7
  xoscar/_utils.pxd,sha256=5KYAL3jfPdejsHnrGGT2s--ZUX5SXznQWpHVSno429k,1157
18
8
  xoscar/batch.py,sha256=DpArS0L3WYJ_HVPG-6hSYEwoAFY1mY2-mlC4Jp5M_Dw,7872
19
- xoscar/context.pyx,sha256=8CdgPnWcE9eOp3N600WgDQ03MCi8P73eUOGcfV7Zksg,10942
20
- xoscar/core.pxd,sha256=4lBq8J0kjcXcsGuvN7Kv4xcL5liHwTTFWlqyK7XAEnw,1280
21
- xoscar/_utils.pyx,sha256=UR1FtYXAYKIdEWR9HulEpMbSOrkQWi6xGz63d4IQmG0,7059
9
+ xoscar/utils.py,sha256=oNT8Hj_qjTsPGHcHlha21fh-93g8B9BLZ6tnihgZB00,16231
10
+ xoscar/core.pyx,sha256=Aqc2i8Fetsd5wRAPF4kL0ddnBZn3E2HRNCvup79BbQc,21730
11
+ xoscar/driver.py,sha256=498fowtJr6b3FE8FIOA_Tc1Vwx88nfZw7p0FxrML0h4,1372
12
+ xoscar/backend.py,sha256=is436OPkZfSpQXaoqTRVta5eoye_pp45RFgCstAk2hU,1850
13
+ xoscar/_version.py,sha256=ClSPrUjgGRGHIkVMQV9XQnkQ-n0akJMnq_rh819nqFE,23719
14
+ xoscar/_utils.cpython-310-aarch64-linux-gnu.so,sha256=zOw--rc0okFaW9hsbx0gvqoPMicAkXofFFfNi1aqJw0,1099896
15
+ xoscar/debug.py,sha256=9Z8SgE2WaKYQcyDo-5-DxEJQ533v7kWjrvCd28pSx3E,5069
16
+ xoscar/constants.py,sha256=Yn59lRIOvE1VFwyuZB5G2-gxYIyhIZ1rVovbdFAR2NM,759
22
17
  xoscar/__init__.py,sha256=0zX8kKaio3ZIrlzB79WybcravMJw1OxPWjDspTgJFyQ,1608
23
- xoscar/backends/pool.py,sha256=bvS1r31O01E8jTdoWOhSqcFymksNqO2nX3Fkqary8Ro,59149
24
- xoscar/backends/message.pyx,sha256=_rXcsWPcWu77Z_38rvjDBdQojpY5xJoaHQrt57_LVyo,17612
18
+ xoscar/core.cpython-310-aarch64-linux-gnu.so,sha256=GxpyvAR5iaLe87ID8mNPmYdtL6OvzV_QTIp5ugd3vcQ,3476280
19
+ xoscar/context.pxd,sha256=qKa0OyDPZtVymftSh447m-RzFZgmz8rGqQBa7qlauvc,725
20
+ xoscar/context.cpython-310-aarch64-linux-gnu.so,sha256=wtXssLge2fADq8HlPQysi2NLozedPglxN0quuyfBo5E,1435040
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.pyx,sha256=E3xIKmdI2gn99JduR3yuU_YTm-lOyG0Tkc7fZVBWCho,30131
28
+ xoscar/serialization/__init__.py,sha256=5Y_C3cYbQJIZ09LRjeCf-jrkLma7mfN8I5bznHrdsbg,846
29
+ xoscar/serialization/scipy.py,sha256=yOEi0NB8cqQ6e2UnCZ1w006RsB7T725tIL-DM_hNcsU,2482
30
+ xoscar/serialization/exception.py,sha256=Jy8Lsk0z-VJyEUaWeuZIwkmxqaoB-nLKMa1D15Cl4js,1634
31
+ xoscar/serialization/core.cpython-310-aarch64-linux-gnu.so,sha256=KOe9Fk4Y1qu52XQ9OntIMAbcx0uv8TIG-rOOKFAwRCw,3217040
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/common.py,sha256=INAnISbfnRicbbbDHTqbSr9ITb89ZphH5BUkSpEdXXU,3561
43
+ xoscar/collective/core.py,sha256=NVR-7Iaq3aDPCN6fgXcq9Ew6uFEszRwxYqmUG9FLcws,23502
44
+ xoscar/collective/xoscar_pygloo.cpython-310-aarch64-linux-gnu.so,sha256=VkNyJqW6TdAHbmWBjbxsjMq4oPf54V7yhtj7l5Pl8vs,1648920
45
+ xoscar/metrics/api.py,sha256=BBlMIFvVAGVfrtpeJ1YlH9Tqhy9OzGavwvGyeHcQ0Tk,8856
46
+ xoscar/metrics/__init__.py,sha256=9Badi7rxYikGm2dQiNCrj9GgMRBxwuR3JaEKcFZmfak,705
47
+ xoscar/metrics/backends/__init__.py,sha256=h_JgzSqV5lP6vQ6XX_17kE4IY4BRnvKta_7VLQAL1ms,581
48
+ xoscar/metrics/backends/metric.py,sha256=aPhyc8JgH22L3rcHP8IjsmgrhSODjg6B5TZVnre97y8,4446
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
51
+ xoscar/metrics/backends/console/__init__.py,sha256=h_JgzSqV5lP6vQ6XX_17kE4IY4BRnvKta_7VLQAL1ms,581
52
+ xoscar/metrics/backends/console/console_metric.py,sha256=y5CCtH33j3AqI5_Uhwi4mgOcAhyhb4cWv_YvR6fxcbQ,2082
25
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-310-aarch64-linux-gnu.so,sha256=PphVsF94ol2HJnkshRszfmkpu1ZkkzOokEpJliVOanU,3060312
56
+ xoscar/backends/__init__.py,sha256=VHEBQcUWM5bj027W8EUf9PiJUAP7JoMrRw3Tsvy5ySw,643
57
+ xoscar/backends/message.pyx,sha256=_rXcsWPcWu77Z_38rvjDBdQojpY5xJoaHQrt57_LVyo,17612
26
58
  xoscar/backends/router.py,sha256=mhSvM5KVfV882jricVcpyxAqHEvhS4zL6ivczC6fOTE,7746
27
- xoscar/backends/config.py,sha256=EG26f0GwX_f4dAhwTW77RBjiK9h8R_3JrD-rBF1bAq8,4984
59
+ xoscar/backends/pool.py,sha256=bvS1r31O01E8jTdoWOhSqcFymksNqO2nX3Fkqary8Ro,59149
28
60
  xoscar/backends/core.py,sha256=aHb3mMZ9vJe6pxg0P8kSOKvjXF1IaqgOgyhKVhHpNLM,7432
29
- xoscar/backends/message.cpython-310-aarch64-linux-gnu.so,sha256=24rr32IsojmJgDb8MvgsWBzYW15FHFdWfMAUzaSbcZU,3058656
30
- xoscar/backends/__init__.py,sha256=VHEBQcUWM5bj027W8EUf9PiJUAP7JoMrRw3Tsvy5ySw,643
31
- xoscar/backends/allocate_strategy.py,sha256=tC1Nbq2tJohahUwd-zoRYHEDX65wyuX8tmeY45uWj_w,4845
32
- xoscar/backends/communication/dummy.py,sha256=gaKPNiN4x2aGZV3IGaaa8eaweBVjRh8B19jU1B5t2yw,7798
33
- xoscar/backends/communication/socket.py,sha256=VBPiesyjX8c3ECWn8kv8qGwK3xCBqh_CHPrNDapYH6w,11819
61
+ xoscar/backends/config.py,sha256=EG26f0GwX_f4dAhwTW77RBjiK9h8R_3JrD-rBF1bAq8,4984
62
+ xoscar/backends/test/backend.py,sha256=nv9WFhH5Bbq4Q1HB9yfpciZBaeHT4IQAtzugBWESrUY,1263
63
+ xoscar/backends/test/__init__.py,sha256=j2ZfD6prD9WjUxRUDC7Eq5Z7N7TkL6fFr59oNyc_vY4,682
64
+ xoscar/backends/test/pool.py,sha256=TW4X6J-92Pti66103poQBNDBznX6CBD3RLOc_zixjTo,7257
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
68
+ xoscar/backends/communication/__init__.py,sha256=tB05BlK63iWQnfJgRzKt4mFKRtmWUki5hUGSZQwAotc,1050
34
69
  xoscar/backends/communication/base.py,sha256=0P4Tr35GSWpRp394e9jVWUUoKKa-gIk177eYPw1BnSU,7421
70
+ xoscar/backends/communication/dummy.py,sha256=gaKPNiN4x2aGZV3IGaaa8eaweBVjRh8B19jU1B5t2yw,7798
35
71
  xoscar/backends/communication/core.py,sha256=sJeE3foRIqVPXldzYpFKHDSsabfAIFBU4JuXY4OyklY,2130
36
- xoscar/backends/communication/ucx.py,sha256=eidp4l-YAzFMCYaeUcvpK4ecapg-92fXFKO-t_bBkTU,19267
37
- xoscar/backends/communication/utils.py,sha256=AmovE-hmWLXNCPwHafYuaRjOk8m42BUyT3XBqfXQRVI,3664
38
72
  xoscar/backends/communication/errors.py,sha256=V3CdBe2xX9Rwv32f2dH2Msc84yaUhlyerZ42-739o1Q,723
39
- xoscar/backends/communication/__init__.py,sha256=tB05BlK63iWQnfJgRzKt4mFKRtmWUki5hUGSZQwAotc,1050
40
- xoscar/backends/test/pool.py,sha256=TW4X6J-92Pti66103poQBNDBznX6CBD3RLOc_zixjTo,7257
41
- xoscar/backends/test/backend.py,sha256=nv9WFhH5Bbq4Q1HB9yfpciZBaeHT4IQAtzugBWESrUY,1263
42
- xoscar/backends/test/__init__.py,sha256=j2ZfD6prD9WjUxRUDC7Eq5Z7N7TkL6fFr59oNyc_vY4,682
43
- xoscar/backends/indigen/pool.py,sha256=3C1N2sbq02maUjl7jDhRkyYAoYmZD8hZBct6wxblq_Y,16709
44
- xoscar/backends/indigen/backend.py,sha256=znl_fZzWGEtLH8hZ9j9Kkf0fva25jEem2_KO7I1RVvc,1612
45
73
  xoscar/backends/indigen/driver.py,sha256=VGzkacYKykegW5qhCuhx01gdgBZEKJjNIyfNCnA6Nm8,952
74
+ xoscar/backends/indigen/backend.py,sha256=znl_fZzWGEtLH8hZ9j9Kkf0fva25jEem2_KO7I1RVvc,1612
46
75
  xoscar/backends/indigen/__init__.py,sha256=tKHP5ClzedBRBpZsLRVErR3EUNbbDm4CY4u0rCFJr44,685
47
- xoscar/metrics/api.py,sha256=BBlMIFvVAGVfrtpeJ1YlH9Tqhy9OzGavwvGyeHcQ0Tk,8856
48
- xoscar/metrics/__init__.py,sha256=9Badi7rxYikGm2dQiNCrj9GgMRBxwuR3JaEKcFZmfak,705
49
- xoscar/metrics/backends/metric.py,sha256=aPhyc8JgH22L3rcHP8IjsmgrhSODjg6B5TZVnre97y8,4446
50
- xoscar/metrics/backends/__init__.py,sha256=h_JgzSqV5lP6vQ6XX_17kE4IY4BRnvKta_7VLQAL1ms,581
51
- xoscar/metrics/backends/prometheus/prometheus_metric.py,sha256=MxoMvVrg0pOkKpkjJ0PcAuEaaEJR2FZljmPrLjQ1-oc,2050
52
- xoscar/metrics/backends/prometheus/__init__.py,sha256=h_JgzSqV5lP6vQ6XX_17kE4IY4BRnvKta_7VLQAL1ms,581
53
- xoscar/metrics/backends/console/console_metric.py,sha256=y5CCtH33j3AqI5_Uhwi4mgOcAhyhb4cWv_YvR6fxcbQ,2082
54
- xoscar/metrics/backends/console/__init__.py,sha256=h_JgzSqV5lP6vQ6XX_17kE4IY4BRnvKta_7VLQAL1ms,581
55
- xoscar/collective/common.py,sha256=INAnISbfnRicbbbDHTqbSr9ITb89ZphH5BUkSpEdXXU,3561
56
- xoscar/collective/xoscar_pygloo.cpython-310-aarch64-linux-gnu.so,sha256=VkNyJqW6TdAHbmWBjbxsjMq4oPf54V7yhtj7l5Pl8vs,1648920
57
- xoscar/collective/core.py,sha256=WfMJZloiRiqsLlIMhU4Pa47eo0jE-hoXdbTBwZPM6TM,23498
58
- xoscar/collective/utils.py,sha256=3S4qF4JEnAUD3RiWVBUj-ZptL83CBSwGYyVZyIasAsE,1178
59
- xoscar/collective/__init__.py,sha256=XsClIkO_3Jd8GDifYuAbZCmJLAo9ZqGvnjUn9iuogmU,774
60
- xoscar/collective/process_group.py,sha256=zy7LcIFnEcmrcxuECI89v0bQlUbSqQMkVyBw468WBnk,22599
61
- xoscar/serialization/exception.py,sha256=Jy8Lsk0z-VJyEUaWeuZIwkmxqaoB-nLKMa1D15Cl4js,1634
62
- xoscar/serialization/cuda.py,sha256=iFUEnN4SiquBIhyieyOrfw3TnKnW-tU_vYgqOxO_DrA,3758
63
- xoscar/serialization/aio.py,sha256=S9e3rHMBwqqKmJtDz7KzYAqWc8w9bttA0Dj83IBfEU0,4577
64
- xoscar/serialization/core.pyx,sha256=E3xIKmdI2gn99JduR3yuU_YTm-lOyG0Tkc7fZVBWCho,30131
65
- xoscar/serialization/pyfury.py,sha256=sifOnVMYoS82PzZEkzkfxesmMHei23k5UAUUKUyoOYQ,1163
66
- xoscar/serialization/core.cpython-310-aarch64-linux-gnu.so,sha256=8cTcS86ouvGAlQYGyHtuqFRO05mfolBobRCUv7K_QZU,3216640
67
- xoscar/serialization/numpy.py,sha256=5Kem87CvpJmzUMp3QHk4WeHU30FoQWTJJP2SwIcaQG0,2919
68
- xoscar/serialization/scipy.py,sha256=yOEi0NB8cqQ6e2UnCZ1w006RsB7T725tIL-DM_hNcsU,2482
69
- xoscar/serialization/core.pxd,sha256=k4RoJgX5E5LGs4jdCQ7vvcn26MabXbrWoWhkO49X6YI,985
70
- xoscar/serialization/__init__.py,sha256=5Y_C3cYbQJIZ09LRjeCf-jrkLma7mfN8I5bznHrdsbg,846
71
- xoscar/aio/lru.py,sha256=rpXCqSLtPV5xnWtd6uDwQQFGgIPEgvmWEQDkPNUx9cM,6311
72
- xoscar/aio/base.py,sha256=9j0f1piwfE5R5GIvV212vSD03ixdaeSzSSsO2kxJZVE,2249
73
- xoscar/aio/parallelism.py,sha256=VSsjk8wP-Bw7tLeUsTyLVNgp91thjxEfE3pCrw_vF5Q,1293
74
- xoscar/aio/_threads.py,sha256=WE9_NZY3K9n5bAzXRbj1Bc4dxS-1m1erMfZsUu-ULU4,1313
75
- xoscar/aio/file.py,sha256=PBtkLp-Q7XtYl-zk00s18TtgIrkNr60J3Itf66ctO1o,1486
76
- xoscar/aio/__init__.py,sha256=4Rv9V_wDIKlg7VcJeo1GVlvobwskYb1jYXef-0GQOaY,809
77
- xoscar-0.3.1.dist-info/WHEEL,sha256=H0QERcJuEKoCcMIutioyRp9n3LaQjdVoB25CT5wQyPk,154
78
- xoscar-0.3.1.dist-info/top_level.txt,sha256=vYlqqY4Nys8Thm1hePIuUv8eQePdULVWMmt7lXtX_ZA,21
79
- xoscar-0.3.1.dist-info/RECORD,,
80
- xoscar-0.3.1.dist-info/METADATA,sha256=E5RR5bNLUe_gBjm_Px5K6GstgVGNK9WZ79y-2vg2iuw,9246
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=I0wYwwsn7gQu60ACWwJQGbebdEKtv2Of_THtVcbr-hA,154
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: cp310-cp310-manylinux_2_17_aarch64
5
5
  Tag: cp310-cp310-manylinux2014_aarch64