xoscar 0.3.2__cp310-cp310-macosx_10_9_x86_64.whl → 0.3.3__cp310-cp310-macosx_10_9_x86_64.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.

Binary file
@@ -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
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,7 +1,7 @@
1
- xoscar-0.3.2.dist-info/RECORD,,
2
- xoscar-0.3.2.dist-info/WHEEL,sha256=5gVbVe_w8vFuKIeI1RffqCqgT_cNTJucal8EyR-41SQ,111
3
- xoscar-0.3.2.dist-info/top_level.txt,sha256=vYlqqY4Nys8Thm1hePIuUv8eQePdULVWMmt7lXtX_ZA,21
4
- xoscar-0.3.2.dist-info/METADATA,sha256=Sw1MUXmjiJDvY37wnlzYTfiAyRYM3pqIMfefEvjPr94,9246
1
+ xoscar-0.3.3.dist-info/RECORD,,
2
+ xoscar-0.3.3.dist-info/WHEEL,sha256=nPnFyIBL7U_jHhV7vnVf4j0Qdy-Lw81YghwI4vwEdmw,111
3
+ xoscar-0.3.3.dist-info/top_level.txt,sha256=vYlqqY4Nys8Thm1hePIuUv8eQePdULVWMmt7lXtX_ZA,21
4
+ xoscar-0.3.3.dist-info/METADATA,sha256=JhNlxO_63BsavL78aca-Dh-oYDl82IbMttpvR5Fdq2U,9193
5
5
  xoscar/_utils.pyx,sha256=UR1FtYXAYKIdEWR9HulEpMbSOrkQWi6xGz63d4IQmG0,7059
6
6
  xoscar/backend.py,sha256=is436OPkZfSpQXaoqTRVta5eoye_pp45RFgCstAk2hU,1850
7
7
  xoscar/core.pxd,sha256=4lBq8J0kjcXcsGuvN7Kv4xcL5liHwTTFWlqyK7XAEnw,1280
@@ -10,18 +10,18 @@ xoscar/context.pxd,sha256=qKa0OyDPZtVymftSh447m-RzFZgmz8rGqQBa7qlauvc,725
10
10
  xoscar/batch.py,sha256=DpArS0L3WYJ_HVPG-6hSYEwoAFY1mY2-mlC4Jp5M_Dw,7872
11
11
  xoscar/nvutils.py,sha256=qmW4mKLU0WB2yCs198ccQOgLL02zB7Fsa-AotO3NOmg,20412
12
12
  xoscar/constants.py,sha256=Yn59lRIOvE1VFwyuZB5G2-gxYIyhIZ1rVovbdFAR2NM,759
13
- xoscar/_utils.cpython-310-darwin.so,sha256=azT9avG6nPbrCHxmNpBoyQHnrjYzvgf23tQ34ro2yUc,190840
13
+ xoscar/_utils.cpython-310-darwin.so,sha256=CLf2vE1bofaA7Md_iMjrXIH8eOsN34WvNG6mZKwB8D0,160624
14
14
  xoscar/__init__.py,sha256=0zX8kKaio3ZIrlzB79WybcravMJw1OxPWjDspTgJFyQ,1608
15
15
  xoscar/api.py,sha256=3hztPoOxg8A_mlhWyWgVP7FMXG0PATA1TP4Rbaj7A-g,13327
16
- xoscar/utils.py,sha256=TYp6wC8xx2AjKcoKt6Xk0bwhFeccBJKCK50YQE1XOV4,16076
16
+ xoscar/utils.py,sha256=oNT8Hj_qjTsPGHcHlha21fh-93g8B9BLZ6tnihgZB00,16231
17
17
  xoscar/debug.py,sha256=9Z8SgE2WaKYQcyDo-5-DxEJQ533v7kWjrvCd28pSx3E,5069
18
18
  xoscar/libcpp.pxd,sha256=DJqBxLFOKL4iRr9Kale5UH3rbvPRD1x5bTSOPHFpz9I,1147
19
19
  xoscar/context.pyx,sha256=8CdgPnWcE9eOp3N600WgDQ03MCi8P73eUOGcfV7Zksg,10942
20
20
  xoscar/errors.py,sha256=wBlQOKsXf0Fc4skN39tDie0YZT-VIAuLNRgoDl2pZcA,1241
21
21
  xoscar/core.pyx,sha256=Aqc2i8Fetsd5wRAPF4kL0ddnBZn3E2HRNCvup79BbQc,21730
22
22
  xoscar/driver.py,sha256=498fowtJr6b3FE8FIOA_Tc1Vwx88nfZw7p0FxrML0h4,1372
23
- xoscar/context.cpython-310-darwin.so,sha256=OKKASrtSjSh7UyiFDVg8XxnvtL2mRRz5sPrmAvxgpiE,214680
24
- xoscar/core.cpython-310-darwin.so,sha256=mdQfAte3v0QYakTS7Xtz3TihG7epEnAGHd2ijU5H19c,516792
23
+ xoscar/context.cpython-310-darwin.so,sha256=F2ZCxmVTIUIunjaeBAycjXmAo0klguGTLeO_bN00DCU,200592
24
+ xoscar/core.cpython-310-darwin.so,sha256=yS6ZpQJ5sBg1N8b6wni-KRAPWQux5oK1dMLX8wr4gfQ,448320
25
25
  xoscar/profiling.py,sha256=BC5OF0HzSaXv8V7w-y-B8r5gV5DgxHFoTEIF6jCMioQ,8015
26
26
  xoscar/_utils.pxd,sha256=5KYAL3jfPdejsHnrGGT2s--ZUX5SXznQWpHVSno429k,1157
27
27
  xoscar/metrics/__init__.py,sha256=9Badi7rxYikGm2dQiNCrj9GgMRBxwuR3JaEKcFZmfak,705
@@ -32,9 +32,9 @@ xoscar/metrics/backends/prometheus/__init__.py,sha256=h_JgzSqV5lP6vQ6XX_17kE4IY4
32
32
  xoscar/metrics/backends/prometheus/prometheus_metric.py,sha256=MxoMvVrg0pOkKpkjJ0PcAuEaaEJR2FZljmPrLjQ1-oc,2050
33
33
  xoscar/metrics/backends/console/console_metric.py,sha256=y5CCtH33j3AqI5_Uhwi4mgOcAhyhb4cWv_YvR6fxcbQ,2082
34
34
  xoscar/metrics/backends/console/__init__.py,sha256=h_JgzSqV5lP6vQ6XX_17kE4IY4BRnvKta_7VLQAL1ms,581
35
- xoscar/collective/xoscar_pygloo.cpython-310-darwin.so,sha256=k_altfaz1aqO6biZumdmAQ-FZns1x7BLWbkg-yHIO3Q,1268784
35
+ xoscar/collective/xoscar_pygloo.cpython-310-darwin.so,sha256=NfJlLSm3_tBr4faeo5bNc6MoW18pB1VPlQuidVZR6tk,1266368
36
36
  xoscar/collective/__init__.py,sha256=XsClIkO_3Jd8GDifYuAbZCmJLAo9ZqGvnjUn9iuogmU,774
37
- xoscar/collective/core.py,sha256=WfMJZloiRiqsLlIMhU4Pa47eo0jE-hoXdbTBwZPM6TM,23498
37
+ xoscar/collective/core.py,sha256=NVR-7Iaq3aDPCN6fgXcq9Ew6uFEszRwxYqmUG9FLcws,23502
38
38
  xoscar/collective/common.py,sha256=INAnISbfnRicbbbDHTqbSr9ITb89ZphH5BUkSpEdXXU,3561
39
39
  xoscar/collective/utils.py,sha256=3S4qF4JEnAUD3RiWVBUj-ZptL83CBSwGYyVZyIasAsE,1178
40
40
  xoscar/collective/process_group.py,sha256=zy7LcIFnEcmrcxuECI89v0bQlUbSqQMkVyBw468WBnk,22599
@@ -47,10 +47,10 @@ xoscar/serialization/cuda.py,sha256=iFUEnN4SiquBIhyieyOrfw3TnKnW-tU_vYgqOxO_DrA,
47
47
  xoscar/serialization/scipy.py,sha256=yOEi0NB8cqQ6e2UnCZ1w006RsB7T725tIL-DM_hNcsU,2482
48
48
  xoscar/serialization/aio.py,sha256=S9e3rHMBwqqKmJtDz7KzYAqWc8w9bttA0Dj83IBfEU0,4577
49
49
  xoscar/serialization/core.pyx,sha256=E3xIKmdI2gn99JduR3yuU_YTm-lOyG0Tkc7fZVBWCho,30131
50
- xoscar/serialization/core.cpython-310-darwin.so,sha256=_00TIW0i_xlsXEDBXksEHzTtYaLZDY4APyPsUo5chDk,475744
50
+ xoscar/serialization/core.cpython-310-darwin.so,sha256=VTVXFo5WlkZjNWdjTBnh275STTo8hAj2w_sAtOqfIts,409320
51
51
  xoscar/backends/config.py,sha256=EG26f0GwX_f4dAhwTW77RBjiK9h8R_3JrD-rBF1bAq8,4984
52
52
  xoscar/backends/allocate_strategy.py,sha256=tC1Nbq2tJohahUwd-zoRYHEDX65wyuX8tmeY45uWj_w,4845
53
- xoscar/backends/message.cpython-310-darwin.so,sha256=Xfzguyz3MT0iUUpf28DUlVmjvcWmulKa7I8eXG_9MLM,417592
53
+ xoscar/backends/message.cpython-310-darwin.so,sha256=EaxMQMjXt5QUT4vjH89D7gVBOmW1T_OXVE_Q4BiCKGw,365296
54
54
  xoscar/backends/__init__.py,sha256=VHEBQcUWM5bj027W8EUf9PiJUAP7JoMrRw3Tsvy5ySw,643
55
55
  xoscar/backends/core.py,sha256=aHb3mMZ9vJe6pxg0P8kSOKvjXF1IaqgOgyhKVhHpNLM,7432
56
56
  xoscar/backends/context.py,sha256=Vr_PibRxYCDQ_gYK7r-BOlw9TXw8VQbFsVTH7K7mHPk,15470
@@ -60,16 +60,16 @@ xoscar/backends/pool.py,sha256=bvS1r31O01E8jTdoWOhSqcFymksNqO2nX3Fkqary8Ro,59149
60
60
  xoscar/backends/indigen/backend.py,sha256=znl_fZzWGEtLH8hZ9j9Kkf0fva25jEem2_KO7I1RVvc,1612
61
61
  xoscar/backends/indigen/__init__.py,sha256=tKHP5ClzedBRBpZsLRVErR3EUNbbDm4CY4u0rCFJr44,685
62
62
  xoscar/backends/indigen/driver.py,sha256=VGzkacYKykegW5qhCuhx01gdgBZEKJjNIyfNCnA6Nm8,952
63
- xoscar/backends/indigen/pool.py,sha256=3C1N2sbq02maUjl7jDhRkyYAoYmZD8hZBct6wxblq_Y,16709
63
+ xoscar/backends/indigen/pool.py,sha256=mWYkOP4VVoUsXFgfpwruPuWblF6Waan5vxit8B-9_oQ,16852
64
64
  xoscar/backends/test/backend.py,sha256=nv9WFhH5Bbq4Q1HB9yfpciZBaeHT4IQAtzugBWESrUY,1263
65
65
  xoscar/backends/test/__init__.py,sha256=j2ZfD6prD9WjUxRUDC7Eq5Z7N7TkL6fFr59oNyc_vY4,682
66
66
  xoscar/backends/test/pool.py,sha256=TW4X6J-92Pti66103poQBNDBznX6CBD3RLOc_zixjTo,7257
67
- xoscar/backends/communication/ucx.py,sha256=eidp4l-YAzFMCYaeUcvpK4ecapg-92fXFKO-t_bBkTU,19267
67
+ xoscar/backends/communication/ucx.py,sha256=c9Ma3Z7iDH5_JITlnh46aHk8OlVQ-FebLhs2Ahlgxxw,19701
68
68
  xoscar/backends/communication/__init__.py,sha256=tB05BlK63iWQnfJgRzKt4mFKRtmWUki5hUGSZQwAotc,1050
69
69
  xoscar/backends/communication/core.py,sha256=sJeE3foRIqVPXldzYpFKHDSsabfAIFBU4JuXY4OyklY,2130
70
70
  xoscar/backends/communication/utils.py,sha256=AmovE-hmWLXNCPwHafYuaRjOk8m42BUyT3XBqfXQRVI,3664
71
71
  xoscar/backends/communication/errors.py,sha256=V3CdBe2xX9Rwv32f2dH2Msc84yaUhlyerZ42-739o1Q,723
72
- xoscar/backends/communication/socket.py,sha256=VBPiesyjX8c3ECWn8kv8qGwK3xCBqh_CHPrNDapYH6w,11819
72
+ xoscar/backends/communication/socket.py,sha256=W_khQ7fMSALFSZ2e_cnud2yp2cOjaMFutkNUhEGelI4,12566
73
73
  xoscar/backends/communication/dummy.py,sha256=gaKPNiN4x2aGZV3IGaaa8eaweBVjRh8B19jU1B5t2yw,7798
74
74
  xoscar/backends/communication/base.py,sha256=0P4Tr35GSWpRp394e9jVWUUoKKa-gIk177eYPw1BnSU,7421
75
75
  xoscar/aio/__init__.py,sha256=4Rv9V_wDIKlg7VcJeo1GVlvobwskYb1jYXef-0GQOaY,809
@@ -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-macosx_10_9_x86_64
5
5