maxframe 0.1.0b5__cp310-cp310-macosx_11_0_arm64.whl → 1.0.0rc1__cp310-cp310-macosx_11_0_arm64.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 maxframe might be problematic. Click here for more details.

Files changed (47) hide show
  1. maxframe/_utils.cpython-310-darwin.so +0 -0
  2. maxframe/codegen.py +10 -2
  3. maxframe/config/config.py +4 -0
  4. maxframe/core/__init__.py +0 -3
  5. maxframe/core/entity/__init__.py +1 -8
  6. maxframe/core/entity/objects.py +3 -45
  7. maxframe/core/graph/core.cpython-310-darwin.so +0 -0
  8. maxframe/core/graph/core.pyx +4 -4
  9. maxframe/dataframe/datastore/tests/__init__.py +13 -0
  10. maxframe/dataframe/datastore/tests/test_to_odps.py +48 -0
  11. maxframe/dataframe/datastore/to_odps.py +21 -0
  12. maxframe/dataframe/indexing/align.py +1 -1
  13. maxframe/dataframe/misc/apply.py +2 -0
  14. maxframe/dataframe/misc/memory_usage.py +2 -2
  15. maxframe/dataframe/misc/tests/test_misc.py +23 -0
  16. maxframe/dataframe/statistics/corr.py +3 -3
  17. maxframe/errors.py +13 -0
  18. maxframe/extension.py +12 -0
  19. maxframe/lib/mmh3.cpython-310-darwin.so +0 -0
  20. maxframe/lib/mmh3.pyi +43 -0
  21. maxframe/lib/wrapped_pickle.py +2 -1
  22. maxframe/protocol.py +108 -10
  23. maxframe/serialization/core.cpython-310-darwin.so +0 -0
  24. maxframe/serialization/core.pxd +3 -0
  25. maxframe/serialization/core.pyi +3 -0
  26. maxframe/serialization/core.pyx +54 -25
  27. maxframe/serialization/exception.py +1 -1
  28. maxframe/serialization/pandas.py +7 -2
  29. maxframe/serialization/serializables/core.py +119 -12
  30. maxframe/serialization/serializables/tests/test_serializable.py +46 -4
  31. maxframe/tensor/arithmetic/tests/test_arithmetic.py +1 -1
  32. maxframe/tensor/base/atleast_1d.py +1 -1
  33. maxframe/tensor/base/unique.py +1 -1
  34. maxframe/tensor/reduction/count_nonzero.py +1 -1
  35. maxframe/tests/test_protocol.py +34 -0
  36. maxframe/tests/test_utils.py +0 -12
  37. maxframe/tests/utils.py +2 -2
  38. maxframe/utils.py +16 -13
  39. {maxframe-0.1.0b5.dist-info → maxframe-1.0.0rc1.dist-info}/METADATA +2 -2
  40. {maxframe-0.1.0b5.dist-info → maxframe-1.0.0rc1.dist-info}/RECORD +46 -44
  41. maxframe_client/__init__.py +0 -1
  42. maxframe_client/session/odps.py +45 -5
  43. maxframe_client/session/task.py +41 -20
  44. maxframe_client/tests/test_session.py +36 -0
  45. maxframe_client/clients/spe.py +0 -104
  46. {maxframe-0.1.0b5.dist-info → maxframe-1.0.0rc1.dist-info}/WHEEL +0 -0
  47. {maxframe-0.1.0b5.dist-info → maxframe-1.0.0rc1.dist-info}/top_level.txt +0 -0
@@ -94,6 +94,11 @@ class MySimpleSerializable(Serializable):
94
94
  _ref_val = ReferenceField("ref_val", "MySimpleSerializable")
95
95
 
96
96
 
97
+ class MySubSerializable(MySimpleSerializable):
98
+ _m_int_val = Int64Field("m_int_val", default=250)
99
+ _m_str_val = StringField("m_str_val", default="SUB_STR")
100
+
101
+
97
102
  class MySerializable(Serializable):
98
103
  _id = IdentityField("id")
99
104
  _any_val = AnyField("any_val")
@@ -141,7 +146,7 @@ class MySerializable(Serializable):
141
146
 
142
147
 
143
148
  @pytest.mark.parametrize("set_is_ci", [False, True], indirect=True)
144
- @switch_unpickle
149
+ @switch_unpickle(forbidden=False)
145
150
  def test_serializable(set_is_ci):
146
151
  my_serializable = MySerializable(
147
152
  _id="1",
@@ -165,7 +170,9 @@ def test_serializable(set_is_ci):
165
170
  _key_val=MyHasKey("aaa"),
166
171
  _ndarray_val=np.random.rand(4, 3),
167
172
  _datetime64_val=pd.Timestamp(123),
168
- _timedelta64_val=pd.Timedelta(days=1),
173
+ _timedelta64_val=pd.Timedelta(
174
+ days=1, seconds=123, microseconds=345, nanoseconds=132
175
+ ),
169
176
  _datatype_val=np.dtype(np.int32),
170
177
  _index_val=pd.Index([1, 2]),
171
178
  _series_val=pd.Series(["a", "b"]),
@@ -187,9 +194,44 @@ def test_serializable(set_is_ci):
187
194
  _assert_serializable_eq(my_serializable, my_serializable2)
188
195
 
189
196
 
197
+ @pytest.mark.parametrize("set_is_ci", [False, True], indirect=True)
198
+ @switch_unpickle
199
+ def test_compatible_serializable(set_is_ci):
200
+ global MySimpleSerializable, MySubSerializable
201
+
202
+ old_base, old_sub = MySimpleSerializable, MySubSerializable
203
+
204
+ try:
205
+ my_sub_serializable = MySubSerializable(
206
+ _id="id_val",
207
+ _list_val=["abcd", "wxyz"],
208
+ _ref_val=MyHasKey(),
209
+ _m_int_val=3412,
210
+ _m_str_val="dfgghj",
211
+ )
212
+ header, buffers = serialize(my_sub_serializable)
213
+
214
+ class MySimpleSerializable(Serializable):
215
+ _id = IdentityField("id")
216
+ _int_val = Int64Field("int_val", default=1000)
217
+ _list_val = ListField("list_val", default_factory=list)
218
+ _ref_val = ReferenceField("ref_val", "MySimpleSerializable")
219
+ _dict_val = DictField("dict_val")
220
+
221
+ class MySubSerializable(MySimpleSerializable):
222
+ _m_int_val = Int64Field("m_int_val", default=250)
223
+ _m_str_val = StringField("m_str_val", default="SUB_STR")
224
+
225
+ my_sub_serializable2 = deserialize(header, buffers)
226
+ assert type(my_sub_serializable) is not type(my_sub_serializable2)
227
+ _assert_serializable_eq(my_sub_serializable, my_sub_serializable2)
228
+ finally:
229
+ MySimpleSerializable, MySubSerializable = old_base, old_sub
230
+
231
+
190
232
  def _assert_serializable_eq(my_serializable, my_serializable2):
191
233
  for field_name, field in my_serializable._FIELDS.items():
192
- if not hasattr(my_serializable, field.tag):
234
+ if not hasattr(my_serializable, field.name):
193
235
  continue
194
236
  expect_value = getattr(my_serializable, field_name)
195
237
  actual_value = getattr(my_serializable2, field_name)
@@ -208,7 +250,7 @@ def _assert_serializable_eq(my_serializable, my_serializable2):
208
250
  elif callable(expect_value):
209
251
  assert expect_value(1) == actual_value(1)
210
252
  else:
211
- assert expect_value == actual_value
253
+ assert expect_value == actual_value, f"Field {field_name}"
212
254
 
213
255
 
214
256
  @pytest.mark.parametrize("set_is_ci", [True], indirect=True)
@@ -252,7 +252,7 @@ def test_compare():
252
252
 
253
253
  def test_frexp():
254
254
  t1 = ones((3, 4, 5), chunk_size=2)
255
- t2 = empty((3, 4, 5), dtype=np.float_, chunk_size=2)
255
+ t2 = empty((3, 4, 5), dtype=np.dtype(float), chunk_size=2)
256
256
  op_type = type(t1.op)
257
257
 
258
258
  o1, o2 = frexp(t1)
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding: utf-8 -*-
3
- # Copyright 1999-2021 Alibaba Group Holding Ltd.
3
+ # Copyright 1999-2024 Alibaba Group Holding Ltd.
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
6
6
  # you may not use this file except in compliance with the License.
@@ -75,7 +75,7 @@ class TensorUnique(TensorHasInput, TensorOperatorMixin):
75
75
  if self.return_counts:
76
76
  kw = {
77
77
  "shape": (np.nan,),
78
- "dtype": np.dtype(np.int_),
78
+ "dtype": np.dtype(int),
79
79
  "gpu": input_obj.op.gpu,
80
80
  "type": "counts",
81
81
  }
@@ -77,5 +77,5 @@ def count_nonzero(a, axis=None):
77
77
  array([2, 3])
78
78
 
79
79
  """
80
- op = TensorCountNonzero(axis=axis, dtype=np.dtype(np.int_), keepdims=None)
80
+ op = TensorCountNonzero(axis=axis, dtype=np.dtype(int), keepdims=None)
81
81
  return op(a)
@@ -85,6 +85,40 @@ def test_error_info_json_serialize():
85
85
  deserial_err_info.reraise()
86
86
 
87
87
 
88
+ class CannotPickleException(Exception):
89
+ def __reduce__(self):
90
+ raise ValueError
91
+
92
+
93
+ class CannotUnpickleException(Exception):
94
+ @classmethod
95
+ def load_from_pk(cls, _):
96
+ raise ValueError
97
+
98
+ def __reduce__(self):
99
+ return type(self).load_from_pk, (0,)
100
+
101
+
102
+ def test_error_info_fallback_json_serialize():
103
+ try:
104
+ raise CannotPickleException
105
+ except CannotPickleException as ex:
106
+ err_info1 = ErrorInfo.from_exception(ex)
107
+
108
+ try:
109
+ raise CannotUnpickleException
110
+ except CannotUnpickleException as ex:
111
+ err_info2 = ErrorInfo.from_exception(ex)
112
+
113
+ for err_info in (err_info1, err_info2):
114
+ deserial_err_info = ErrorInfo.from_json(err_info.to_json())
115
+ assert deserial_err_info.raw_error_source is None
116
+ assert deserial_err_info.raw_error_data is None
117
+
118
+ with pytest.raises(RemoteException):
119
+ deserial_err_info.reraise()
120
+
121
+
88
122
  def test_dag_info_json_serialize():
89
123
  try:
90
124
  raise ValueError("ERR_DATA")
@@ -288,15 +288,6 @@ def test_estimate_pandas_size():
288
288
  df2 = pd.DataFrame(np.random.rand(1000, 10))
289
289
  assert utils.estimate_pandas_size(df2) == sys.getsizeof(df2)
290
290
 
291
- df3 = pd.DataFrame(
292
- {
293
- "A": np.random.choice(["abcd", "def", "gh"], size=(1000,)),
294
- "B": np.random.rand(1000),
295
- "C": np.random.rand(1000),
296
- }
297
- )
298
- assert utils.estimate_pandas_size(df3) != sys.getsizeof(df3)
299
-
300
291
  s1 = pd.Series(np.random.rand(1000))
301
292
  assert utils.estimate_pandas_size(s1) == sys.getsizeof(s1)
302
293
 
@@ -307,7 +298,6 @@ def test_estimate_pandas_size():
307
298
  assert utils.estimate_pandas_size(s2) == sys.getsizeof(s2)
308
299
 
309
300
  s3 = pd.Series(np.random.choice(["abcd", "def", "gh"], size=(1000,)))
310
- assert utils.estimate_pandas_size(s3) != sys.getsizeof(s3)
311
301
  assert (
312
302
  pytest.approx(utils.estimate_pandas_size(s3) / sys.getsizeof(s3), abs=0.5) == 1
313
303
  )
@@ -318,7 +308,6 @@ def test_estimate_pandas_size():
318
308
  assert utils.estimate_pandas_size(idx1) == sys.getsizeof(idx1)
319
309
 
320
310
  string_idx = pd.Index(np.random.choice(["a", "bb", "cc"], size=(1000,)))
321
- assert utils.estimate_pandas_size(string_idx) != sys.getsizeof(string_idx)
322
311
  assert (
323
312
  pytest.approx(
324
313
  utils.estimate_pandas_size(string_idx) / sys.getsizeof(string_idx), abs=0.5
@@ -338,7 +327,6 @@ def test_estimate_pandas_size():
338
327
  },
339
328
  index=idx2,
340
329
  )
341
- assert utils.estimate_pandas_size(df4) != sys.getsizeof(df4)
342
330
  assert (
343
331
  pytest.approx(utils.estimate_pandas_size(df4) / sys.getsizeof(df4), abs=0.5)
344
332
  == 1
maxframe/tests/utils.py CHANGED
@@ -25,7 +25,7 @@ import pytest
25
25
  from tornado import netutil
26
26
 
27
27
  from ..core import Tileable, TileableGraph
28
- from ..utils import lazy_import
28
+ from ..utils import create_event, lazy_import
29
29
 
30
30
  try:
31
31
  from flaky import flaky
@@ -102,7 +102,7 @@ def run_app_in_thread(app_func):
102
102
  def fixture_func(*args, **kwargs):
103
103
  app_loop = asyncio.new_event_loop()
104
104
  q = queue.Queue()
105
- exit_event = asyncio.Event(loop=app_loop)
105
+ exit_event = create_event(app_loop)
106
106
  app_thread = Thread(
107
107
  name="TestAppThread",
108
108
  target=app_thread_func,
maxframe/utils.py CHANGED
@@ -33,7 +33,6 @@ import sys
33
33
  import threading
34
34
  import time
35
35
  import tokenize as pytokenize
36
- import traceback
37
36
  import types
38
37
  import weakref
39
38
  import zlib
@@ -396,18 +395,6 @@ def build_tileable_dir_name(tileable_key: str) -> str:
396
395
  return m.hexdigest()
397
396
 
398
397
 
399
- def extract_messages_and_stacks(exc: Exception) -> Tuple[List[str], List[str]]:
400
- cur_exc = exc
401
- messages, stacks = [], []
402
- while True:
403
- messages.append(str(cur_exc))
404
- stacks.append("".join(traceback.format_tb(cur_exc.__traceback__)))
405
- if exc.__cause__ is None:
406
- break
407
- cur_exc = exc.__cause__
408
- return messages, stacks
409
-
410
-
411
398
  async def wait_http_response(
412
399
  url: str, *, request_timeout: TimeoutType = None, **kwargs
413
400
  ) -> httpclient.HTTPResponse:
@@ -449,6 +436,21 @@ async def to_thread_pool(func, *args, pool=None, **kwargs):
449
436
  return await loop.run_in_executor(pool, func_call)
450
437
 
451
438
 
439
+ def create_event(loop: asyncio.AbstractEventLoop) -> asyncio.Event:
440
+ """
441
+ Create an asyncio.Event in a certain event loop.
442
+ """
443
+ if sys.version_info[1] < 10 or loop is None:
444
+ return asyncio.Event(loop=loop)
445
+
446
+ # From Python3.10 the loop parameter has been removed. We should work around here.
447
+ old_loop = asyncio.get_running_loop()
448
+ asyncio.set_event_loop(loop)
449
+ event = asyncio.Event()
450
+ asyncio.set_event_loop(old_loop)
451
+ return event
452
+
453
+
452
454
  class ToThreadCancelledError(asyncio.CancelledError):
453
455
  def __init__(self, *args, result=None):
454
456
  super().__init__(*args)
@@ -519,6 +521,7 @@ def config_odps_default_options():
519
521
  "metaservice.client.cache.enable": "false",
520
522
  "odps.sql.session.result.cache.enable": "false",
521
523
  "odps.sql.submit.mode": "script",
524
+ "odps.sql.job.max.time.hours": 72,
522
525
  }
523
526
 
524
527
 
@@ -1,8 +1,8 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: maxframe
3
- Version: 0.1.0b5
3
+ Version: 1.0.0rc1
4
4
  Summary: MaxFrame operator-based data analyze framework
5
- Requires-Dist: numpy >=1.19.0
5
+ Requires-Dist: numpy <2.0.0,>=1.19.0
6
6
  Requires-Dist: pandas >=1.0.0
7
7
  Requires-Dist: pyodps >=0.11.6.1
8
8
  Requires-Dist: scipy >=1.0
@@ -1,21 +1,20 @@
1
- maxframe-0.1.0b5.dist-info/RECORD,,
2
- maxframe-0.1.0b5.dist-info/WHEEL,sha256=E2L8cNry8_qENFWMb8KxRWLe-RhZW94hLc32Xo3HiTg,110
3
- maxframe-0.1.0b5.dist-info/top_level.txt,sha256=64x-fc2q59c_vXwNUkehyjF1vb8JWqFSdYmUqIFqoTM,31
4
- maxframe-0.1.0b5.dist-info/METADATA,sha256=cnNixA7GoFVbe5XauylcYj_NQVLErMPn_5uoJnSO5w8,3045
1
+ maxframe-1.0.0rc1.dist-info/RECORD,,
2
+ maxframe-1.0.0rc1.dist-info/WHEEL,sha256=E2L8cNry8_qENFWMb8KxRWLe-RhZW94hLc32Xo3HiTg,110
3
+ maxframe-1.0.0rc1.dist-info/top_level.txt,sha256=64x-fc2q59c_vXwNUkehyjF1vb8JWqFSdYmUqIFqoTM,31
4
+ maxframe-1.0.0rc1.dist-info/METADATA,sha256=YbKuyerj5kotQU8UiyPs2KY_OjKcsM4bhm2R9eZJVmg,3053
5
5
  maxframe_client/conftest.py,sha256=7cwy2sFy5snEaxvtMvxfYFUnG6WtYC_9XxVrwJxOpcU,643
6
- maxframe_client/__init__.py,sha256=3b-z0oFVVwtIzVFBxOb9pw7gz4IhTSh4FiHtVgnxS4Q,724
6
+ maxframe_client/__init__.py,sha256=0_6MYIqksNc-B0hORLb0yqNQUhtqdFD7TGg39bQ-_NI,689
7
7
  maxframe_client/fetcher.py,sha256=p2hsVE2ihvhtuVCAaJhKccCiebl5f6BBPN6KIXOO0jo,8949
8
8
  maxframe_client/clients/__init__.py,sha256=FEFOVLi3o2GpZoedTtLYvbie0eQBehJIjtCrWca2ZHw,596
9
- maxframe_client/clients/spe.py,sha256=ArZMNQ7olicI4O1JO7CyRP7-hb60DF71ZKCTO0N39uE,3593
10
9
  maxframe_client/clients/framedriver.py,sha256=Rn09529D2qBTgNGc0oCY0l7b3FgzT87TqS1nujGQaHw,4463
11
- maxframe_client/tests/test_session.py,sha256=0G522Ia05fFuBJv6b6UTIxTNot3QK1Kjte6Xiimhouc,7884
10
+ maxframe_client/tests/test_session.py,sha256=F6cT1Lgudm2KHK6YpxpxiDveJdHGChRc4jhuEvDBP6k,9325
12
11
  maxframe_client/tests/__init__.py,sha256=FEFOVLi3o2GpZoedTtLYvbie0eQBehJIjtCrWca2ZHw,596
13
12
  maxframe_client/tests/test_fetcher.py,sha256=q7kYCznM6WSxx9TCbHrxs7Zy1L2a5zu9D-Pi1XNgQzg,3516
14
- maxframe_client/session/task.py,sha256=ec6AWeXBe_Q-Lats5ZW4V4J9qWokeq-ccBiAulCXpF8,10165
13
+ maxframe_client/session/task.py,sha256=v0tnS2QtkiNt7D47l_3QjXOqNqlkD7NGL8dJ_h4Fr_E,11101
15
14
  maxframe_client/session/graph.py,sha256=nwILNOIVaIf4E3xWffTAAlRsKRYU_zGW3oVO10du8Xw,4351
16
15
  maxframe_client/session/__init__.py,sha256=KPqhSlAJiuUz8TC-z5o7mHDVXzLSqWwrZ33zNni7piY,832
17
16
  maxframe_client/session/consts.py,sha256=R37BxDF3kgCy0qmDdwLaH5jB7mb7SzfYV6g9yHBKAwk,1344
18
- maxframe_client/session/odps.py,sha256=wIclE3cV2Awled2UiLUwATxsjc_fWFfbaW1UUcrmHCU,17526
17
+ maxframe_client/session/odps.py,sha256=26UjVEIxrTpYtfHxdd-h1aF4OL9TD38UE6aqWeE_8pA,19363
19
18
  maxframe_client/session/tests/test_task.py,sha256=lDdw3gToaM3xSaRXEmHUoAo2h0id7t4v_VvpdKxQAao,3279
20
19
  maxframe_client/session/tests/__init__.py,sha256=FEFOVLi3o2GpZoedTtLYvbie0eQBehJIjtCrWca2ZHw,596
21
20
  maxframe/_utils.pyx,sha256=I4kmfhNr-xXK2ak22dr4Vwahzn-JmTaYctbL3y9_UBQ,17017
@@ -23,16 +22,16 @@ maxframe/conftest.py,sha256=ZzwKhGp7LAVpzQYJkniwIUQqIegcaDQAhyzDyU2qld4,4264
23
22
  maxframe/opcodes.py,sha256=1Da6d3a82mecIHmnyZve4gSH_KN-q3Snl0nSygue2Ng,10191
24
23
  maxframe/env.py,sha256=_K499f7giN7Iu9f39iI9p_naaEDoJ0rx8dInbzqFOVI,1402
25
24
  maxframe/mixin.py,sha256=HBAeWYGb7N6ZIgkA-YpkKiSY1GetcEVNTuMb0ieznBs,3524
26
- maxframe/protocol.py,sha256=LjjE6iw0ZVx82tBMbff4izkGuiJxRG0MTOaPYYpRL10,14190
27
- maxframe/_utils.cpython-310-darwin.so,sha256=_myLZ3pEtZhx7xu1tjJqQq171Y8a7C9qTa--NuyIaSg,387712
25
+ maxframe/protocol.py,sha256=VfJNsUYPUwJ73ZpMMMranrN9F2pAJPmcZYuHcSAXQRs,17817
26
+ maxframe/_utils.cpython-310-darwin.so,sha256=oT7dPzPSnMURSpZg8xJSweEMMHA0DiSMATy87llpOCo,387712
28
27
  maxframe/session.py,sha256=o2jp5NQP1pVMkp4AujN_3DB1HffZ0rMd5EbYZiLJxls,36205
29
28
  maxframe/__init__.py,sha256=SqTFS_1o2HDuVY1mhS0ELlqDuM-biwM_MN0EYGkJLf0,1004
30
- maxframe/utils.py,sha256=b4CvX6vh3AXmQKHQaxYIDtebJ4l6hMrTO_HqETwkVG0,34244
31
- maxframe/extension.py,sha256=4IzF9sPyaRoAzLud0iDLooOgcyq4QunXH0ki3q9Hn8I,2374
32
- maxframe/errors.py,sha256=nQZoLGdLJz-Uf9c2vUvQl08QMvRqtkBOhKfdPYRZA4o,690
29
+ maxframe/utils.py,sha256=E9BbGYrwW4JMCM6BweUESSnGrZGQ7JZvnnFemvKOSoQ,34372
30
+ maxframe/extension.py,sha256=F5XTYzW5hNw0AIQz3d6u6Yk7adDdiV4c-HD7bF0X1FI,2659
31
+ maxframe/errors.py,sha256=vHcpVrKRHmoZPa6IwsdDT-jOZUTlhCp8c0e8F2C-5uU,966
33
32
  maxframe/udf.py,sha256=-FzQCuV0GNyo3SH1r3rPQ3QMAydhYtE7KI8ff4Mv_PU,4288
34
33
  maxframe/typing_.py,sha256=fzHETru3IOZAJwU9I7n_ib3wHuQRJ9XFVmAk7WpqkMo,1096
35
- maxframe/codegen.py,sha256=B0y-bFXgze2CMUnAfrdOXsPrByyEAbq7pgio3mHl_j8,17516
34
+ maxframe/codegen.py,sha256=qO5Q8XbqIVGvWphyIqR6eimboIsbVV7KEBLH7e9sIYY,17809
36
35
  maxframe/_utils.pxd,sha256=AhJ4vA_UqZqPshi5nvIZq1xgr80fhIVQ9dm5-UdkYJ8,1154
37
36
  maxframe/dataframe/arrays.py,sha256=RWzimUcrds5CsIlPausfJAkLUjcktBSSXwdXyUNKEtU,28752
38
37
  maxframe/dataframe/__init__.py,sha256=T08TZjNg2yWh7RmI0hX9PiBTlD5e9L_s3KnKsSLnBFA,2237
@@ -40,7 +39,7 @@ maxframe/dataframe/core.py,sha256=b27b0XomeqISCPxltavESlueTTYEXF5wjtrTKEZtld4,74
40
39
  maxframe/dataframe/initializer.py,sha256=4BpZJB8bbyFnABUYWBrk_qzzrogEsWgFuU21Ma9IsjY,10264
41
40
  maxframe/dataframe/utils.py,sha256=uaRpQp5Lciow-9UBDnuUacYvi4erJgyvTDnQziRDkFU,44272
42
41
  maxframe/dataframe/operators.py,sha256=T7Ik1shfoyrMZ1x0wHXG26bsod1_YjMGQgGAFNpH6k0,7871
43
- maxframe/dataframe/statistics/corr.py,sha256=r9EwD6mqvlm3loEXr3ElS4XIr2NETfmTjC9V1fh4GW8,9495
42
+ maxframe/dataframe/statistics/corr.py,sha256=3dExebs9QC8GBaZZUSKXrN2eYt-hWMayJ2MHHzTn-8s,9483
44
43
  maxframe/dataframe/statistics/quantile.py,sha256=eH-kAg-SZ5JdI8K3P6p9gNeDu4cbJaUC3Dt-zoCoTv0,11713
45
44
  maxframe/dataframe/statistics/__init__.py,sha256=Ate3HERUCrjhRoGhpR9SNZA5JHlvuIVSrHgYPEcJd6Q,1084
46
45
  maxframe/dataframe/statistics/tests/test_statistics.py,sha256=3kpFq9EoUI8PBikQGwMoMN7vwBTeoQeF3XG2h2Hzcu0,2730
@@ -61,7 +60,7 @@ maxframe/dataframe/misc/pct_change.py,sha256=dNvj5VDPndRqc8lPweWcTiSz4p4oSibeQ2y
61
60
  maxframe/dataframe/misc/duplicated.py,sha256=JPtBDLaxlVUqFBU3U3bqGnKQNaOcKwS5sdVfBFJt-Uo,8534
62
61
  maxframe/dataframe/misc/pivot_table.py,sha256=YoKjjtOw2Z6KU3q3opAFag1gICz5Kc_VIcKNs3ur62A,9520
63
62
  maxframe/dataframe/misc/map.py,sha256=RbUi0xPzT0hnsKid5RA5uHYyTeBnpzXlukR48Ntooxk,8149
64
- maxframe/dataframe/misc/memory_usage.py,sha256=JN4x0ObjG7JP84ZMLRaQR8_-Eplg2_YxfJgi7XGM310,7897
63
+ maxframe/dataframe/misc/memory_usage.py,sha256=BPBSYNFvxTYG5kXdX-ogLn1_c_u__G9UeWkEIKrnfyA,7889
65
64
  maxframe/dataframe/misc/isin.py,sha256=POBR3Gvwlu2TH1AWWvKW12XOlu8HF2dJuBCBbOHgq74,6931
66
65
  maxframe/dataframe/misc/shift.py,sha256=feTqtnIRm0YGha5Ps_feQOqHLxSbicnOMbthmZc6pEM,8935
67
66
  maxframe/dataframe/misc/transpose.py,sha256=-Q7iFtafKKibpZKWYxf0bUg4zIZPTupvY4hkdAlB3Gw,3636
@@ -76,8 +75,8 @@ maxframe/dataframe/misc/eval.py,sha256=-2svFR5uraqnzKeCS2bJRx5POHRxqST2lbk6qzee7
76
75
  maxframe/dataframe/misc/value_counts.py,sha256=ds3EVCs0jL1hcTWREzPgb7-20ezcYSNvu9ZtCYqrvfk,5492
77
76
  maxframe/dataframe/misc/select_dtypes.py,sha256=xEdLNun58kvp-Vbl3u2cr8kaXFG8GsIU2BMfo7tFCM8,3144
78
77
  maxframe/dataframe/misc/drop.py,sha256=-RHIQWek2LUTK8lOILNpCWYftCY3-I3DHSP0XT4uHBc,13029
79
- maxframe/dataframe/misc/apply.py,sha256=BTszTrgGDNATweYogT_0_hKyPF1A2xYVQGF81DYQLb4,23366
80
- maxframe/dataframe/misc/tests/test_misc.py,sha256=Loi_HGVRe248yL7DI-5dAPR5eaJtPIXdaodFh8-fsOU,15142
78
+ maxframe/dataframe/misc/apply.py,sha256=UQf9LsH3d33bUaiHNGwyvz_wjoBYro9YbuzAChcU5G0,23436
79
+ maxframe/dataframe/misc/tests/test_misc.py,sha256=5yF01TfqHmNBayMGWc5_4bS8vEc2bQ-kPMSwn54ytM0,15630
81
80
  maxframe/dataframe/misc/tests/__init__.py,sha256=FEFOVLi3o2GpZoedTtLYvbie0eQBehJIjtCrWca2ZHw,596
82
81
  maxframe/dataframe/datasource/index.py,sha256=D7PcfIWS-6Hv1-8o6adNesditOAa9kb4JOQK1WlqNDQ,4401
83
82
  maxframe/dataframe/datasource/read_csv.py,sha256=cpp6kX0DVrqY0KticL1h11tckobSzz1gyK4Sf2puUjo,24140
@@ -142,7 +141,9 @@ maxframe/dataframe/groupby/tests/test_groupby.py,sha256=VsHDG-UaZUXlZ1l498y44ecf
142
141
  maxframe/dataframe/datastore/__init__.py,sha256=Ujd4ix4UJ7Zq-sV2pXTRDvZkKUvtt8sr-FfiUoi6Kh4,784
143
142
  maxframe/dataframe/datastore/core.py,sha256=hLGhqYxX73tq9sOFxMyYBRMawTnsVQqluW5FcE3YHfE,743
144
143
  maxframe/dataframe/datastore/to_csv.py,sha256=xVfpEsicD5A5uXLSdCN08K8uGyWB4QxnRcAbgBVUzbs,7747
145
- maxframe/dataframe/datastore/to_odps.py,sha256=wZzD3yc6YQAGYVwEzYY-qxscn8Sj9I43lR70tFHe3m0,5562
144
+ maxframe/dataframe/datastore/to_odps.py,sha256=5ZS22l8QZQjOd6pGQL-rEUP5gqu8DMa1fqdL6TTx_Zg,6413
145
+ maxframe/dataframe/datastore/tests/__init__.py,sha256=FEFOVLi3o2GpZoedTtLYvbie0eQBehJIjtCrWca2ZHw,596
146
+ maxframe/dataframe/datastore/tests/test_to_odps.py,sha256=EaFprN1mErrqqy54Rzbw6PQxPbBCgxDP0E055RIIH0g,1296
146
147
  maxframe/dataframe/fetch/__init__.py,sha256=E3VjxLRKjtr-D__K-c0aRETvBG7CQRG1iEtH0Qghq0s,653
147
148
  maxframe/dataframe/fetch/core.py,sha256=z61_orBtOIrKFpFdJTNqyPhOw5ZCGe6QkXnDrGdMy6U,3338
148
149
  maxframe/dataframe/reduction/max.py,sha256=CqaueIN3cuF7vlE2rt2MAcXAD3Syd_R8W2dzcFhTmV0,1660
@@ -239,7 +240,7 @@ maxframe/dataframe/arithmetic/tests/test_arithmetic.py,sha256=Zm0hwTo_NqFAa3iDmY
239
240
  maxframe/dataframe/indexing/reset_index.py,sha256=uzGszHfkhwZgZtEaygy5UPrvHPNPXgWZaTOXdNxGBT8,13122
240
241
  maxframe/dataframe/indexing/iat.py,sha256=ANURJ8qn_UitgM01gDPeaQOlSBxbk0pmN4Yr-iPRXM8,1127
241
242
  maxframe/dataframe/indexing/loc.py,sha256=ZmiK3a2f-krkXFvNLSlzRRa6GWGiAAXk_3mWZC_MqdQ,14845
242
- maxframe/dataframe/indexing/align.py,sha256=BdrfIrf6A7v8W0GIuv1mdx87CzR15ARnqIH_aWUjWqY,12089
243
+ maxframe/dataframe/indexing/align.py,sha256=hEuoaNX4bI9LBWp_1kGG7GSs3PDF95tDXo7GX5nypGI,12085
243
244
  maxframe/dataframe/indexing/rename.py,sha256=W4CV2FK9Wt15GWukHbeWi7scXwiVL1ZRoXeAy7zIsLQ,13547
244
245
  maxframe/dataframe/indexing/setitem.py,sha256=PgVZr2A_joTHz9GUbnGfuSI28qSnwe-n84yKFJagLUc,5004
245
246
  maxframe/dataframe/indexing/where.py,sha256=3h64jI_tXmWAu1ZvfeS58h8nUfBN7K7OZ0C22_5-_uk,8567
@@ -275,22 +276,22 @@ maxframe/learn/contrib/pytorch/__init__.py,sha256=koagbwLwH1VNLTWYx29ckatBChZ_f9
275
276
  maxframe/learn/contrib/pytorch/run_function.py,sha256=oMDMVqDFQJ5d8DllZrqqRmBT2lx1cTmAv0hdQlO2GrY,3244
276
277
  maxframe/learn/contrib/pytorch/tests/__init__.py,sha256=FEFOVLi3o2GpZoedTtLYvbie0eQBehJIjtCrWca2ZHw,596
277
278
  maxframe/learn/contrib/pytorch/tests/test_pytorch.py,sha256=ztAli4QwNUDfvM7M2LulJItFNWlUDFc_MByDF2KAcTI,1402
278
- maxframe/core/__init__.py,sha256=UoKY1FbSKr3ZITHR5FGb1jx92YI3MPYbvXCX5RDUuCY,1677
279
+ maxframe/core/__init__.py,sha256=BrapLnnMHHg-AM_OJcAgGyvD7Fwy4mdl1ceMmzImpeU,1616
279
280
  maxframe/core/mode.py,sha256=uRzQDTu471APFDOx12NkTgZiPB-YiCuPhmakhEtIz3M,3011
280
281
  maxframe/core/base.py,sha256=3ZNLtl0jZWY5ZIwmIJF1-khF-DYxoeHxAMMiOCwpaBA,4535
281
282
  maxframe/core/entity/tileables.py,sha256=b9jn_OQ-FQkbw7E7jMLjoJ4-VR7tBS8Mbx_j4iZ7uNc,13535
282
- maxframe/core/entity/__init__.py,sha256=Hz_p6eTkrSdkT7YCo5aeGZ33tms5wwifMp4TeYsAVlw,1292
283
+ maxframe/core/entity/__init__.py,sha256=QarGyhv2B6MFlHaI8v6lOUsMIRoiHd1Vm1U4z959U3Y,1214
283
284
  maxframe/core/entity/core.py,sha256=t7Ex9Yb7A1h_XwyRG88Fx4ZOai-NQKi2luRVS_jFPEo,4018
284
285
  maxframe/core/entity/utils.py,sha256=IuNgFmBQFRioAA1hgZe6nTEggOmDY-iooZqncQQrV28,942
285
286
  maxframe/core/entity/executable.py,sha256=HKXHXdPIyxg9i-OWmJxIY3KfXwX0x3xN9QcR5Xhc7dQ,10938
286
287
  maxframe/core/entity/output_types.py,sha256=uqApvFK8w6_aMxRets69dTwD1ndBDgVgqDCflyt9ubg,2645
287
- maxframe/core/entity/objects.py,sha256=RMHLTGbIHZNxxX59lAuQydAKcR32qKleIYUqdElGS4E,3034
288
+ maxframe/core/entity/objects.py,sha256=TikNltV350KxFxP1xNovK7CONda6K4PixmqD_ZLOR-Q,1840
288
289
  maxframe/core/entity/fuse.py,sha256=47U6MHRzA2ZvUi-kJb7b3mC_gN07x3yebBgX2Jj7VZo,2277
289
290
  maxframe/core/entity/chunks.py,sha256=yNSLCWOpA_Z6aGr6ZI32dIJf3xPdRBWbvdsl8sTM3BE,2134
290
291
  maxframe/core/graph/__init__.py,sha256=rnsXwW0ouh1f7SVtq73-PzLE-MBM6Op_0l6J7b7wGRE,821
291
292
  maxframe/core/graph/entity.py,sha256=56gjXyDXN-TTPm3AQOxuRVQbb_fguKFDL_Xm7i95XEk,5559
292
- maxframe/core/graph/core.pyx,sha256=ZJPx_MTOBMaX-6mns6tAiu-wrIBvRAKN44YAGTypJ1Y,15887
293
- maxframe/core/graph/core.cpython-310-darwin.so,sha256=EoirxElV7jZ-NG-iqbOtEtkt_9m1vcRr6RAjuazSfZA,325128
293
+ maxframe/core/graph/core.pyx,sha256=kyqE5-X9Tc82wU4N_zsf8jNthAHWHTVRNFQWNNbzgpM,15923
294
+ maxframe/core/graph/core.cpython-310-darwin.so,sha256=vvyBLTzWseoxKo1AMGZyUEHs81ptUtWtj3mO_t9N8BY,325160
294
295
  maxframe/core/graph/tests/__init__.py,sha256=FEFOVLi3o2GpZoedTtLYvbie0eQBehJIjtCrWca2ZHw,596
295
296
  maxframe/core/graph/tests/test_graph.py,sha256=kZfe_SfMOoHjEfXvtVtn0RjK4lOd-tFasxSpfL4G1WE,7462
296
297
  maxframe/core/graph/builder/__init__.py,sha256=BV5tAiZ-bJE0FBGSCEnfqKNwBNHgvB9aSzEp0PY6SnA,702
@@ -309,32 +310,32 @@ maxframe/core/operator/fuse.py,sha256=0RGemF99gQCwV4aEk-K6T5KAGToO-487dFk8LyYDIZ
309
310
  maxframe/core/operator/base.py,sha256=nxuSKjbBzDrItM9PGmFo8RLwParazu525jMLWj0kXkM,15251
310
311
  maxframe/core/operator/tests/test_core.py,sha256=57aICnc5VLqdVK7icAORTWC81bSjBxeeVWIJcha9J_0,1691
311
312
  maxframe/core/operator/tests/__init__.py,sha256=FEFOVLi3o2GpZoedTtLYvbie0eQBehJIjtCrWca2ZHw,596
312
- maxframe/config/config.py,sha256=Uhwf6SqtMCRDVvif76lFEiGiYrIlUF97JbpVkOzHpic,13576
313
+ maxframe/config/config.py,sha256=acJ2WVY1JDBsty2VPTn5Twtp2jt4c9BUH7ZDELiNxVE,13734
313
314
  maxframe/config/validators.py,sha256=2m9MrkjDUFiU4PPaWIw8tjwMaOy8AYmuJFqVnnY8IMY,1615
314
315
  maxframe/config/__init__.py,sha256=g5lN3nP2HTAXa6ExGxU1NwU1M9ulYPmAcsV-gU7nIW8,656
315
316
  maxframe/config/tests/__init__.py,sha256=FEFOVLi3o2GpZoedTtLYvbie0eQBehJIjtCrWca2ZHw,596
316
317
  maxframe/config/tests/test_validators.py,sha256=U_7yKSl0FdVdDwKU1EsnCzNWaOXi8xrIC08x7hb_O4c,1240
317
318
  maxframe/config/tests/test_config.py,sha256=Cx3buKli4F77zwJaB-vnUSlE9LUbt3ObHW38cIE2dDs,2736
318
- maxframe/serialization/exception.py,sha256=TIlEDiuYwVgYkN4Se0ydXn2KzEJy4Yv8w2XwlTBqDdM,3027
319
- maxframe/serialization/core.pxd,sha256=51XCBozW9j_E0sBgyYkHf5xNfqCMJb36Fwm_Pxv_rZs,1303
320
- maxframe/serialization/pandas.py,sha256=D4_H4KjAl8DRQtODh9VBP94yB8ce1cYQUKrzXtn10KE,7147
321
- maxframe/serialization/core.pyi,sha256=tU0i8Xtb5pW4NjSxylhCY3h5pDZx4uRmBb8Juk1CDdE,1922
319
+ maxframe/serialization/exception.py,sha256=2Ubi2ld5XpduqAln26q0T67XLj-OpdwW1Z-nyC_wtCI,2993
320
+ maxframe/serialization/core.pxd,sha256=eBrSXiAPlX83Kbwml5IKJvqsIT03lPCeS6is9HplLiU,1501
321
+ maxframe/serialization/pandas.py,sha256=Fj0HZsnTyZqDW4pTiz2AX_Clly6NwjAbQoaMhYwCocs,7315
322
+ maxframe/serialization/core.pyi,sha256=a3CQxlJv5aYyy__VNKEq5XsaHE-n0MPKE_9CcWu8Q34,2142
322
323
  maxframe/serialization/arrow.py,sha256=VnGxNLU9UV_cUPTze43bEFCIbYLAOZnp2pAwVJbAIzQ,3418
323
324
  maxframe/serialization/__init__.py,sha256=9eSnoDww1uw2DAXEBBTB2atJQHzd-38XVxrCkoaypxA,921
324
325
  maxframe/serialization/maxframe_objects.py,sha256=R9WEjbHL0Kr56OGkYDU9fcGi7gII6fGlXhi6IyihTsM,1365
325
326
  maxframe/serialization/numpy.py,sha256=8_GSo45l_eNoMn4NAGEb9NLXY_9i4tf9KK4EzG0mKpA,3213
326
327
  maxframe/serialization/scipy.py,sha256=hP0fAW0di9UgJrGtANB2S8hLDbFBtR8p5NDqAMt5rDI,2427
327
- maxframe/serialization/core.pyx,sha256=AATN47RdBTq2zg7--3xX2VHyAZSvoAuYRt7B7gEgKPE,33984
328
- maxframe/serialization/core.cpython-310-darwin.so,sha256=Ewy9FUAoxz_Ee0gmQoik2A5CaSzfiAAub_eNB4_n0YY,519096
328
+ maxframe/serialization/core.pyx,sha256=ZLVh7W7LgUb4KPb7rtuezRL6sQC4GNb3hLndAeSbiyU,35198
329
+ maxframe/serialization/core.cpython-310-darwin.so,sha256=MBJCUATohh4cYiOp7CmpqMxst4GMI1XZl9AWfgt1CEo,520616
329
330
  maxframe/serialization/tests/test_serial.py,sha256=Wj_I6CBQMaOtE8WtqdUaBoU8FhBOihht6SfeHOJV-zU,12511
330
331
  maxframe/serialization/tests/__init__.py,sha256=FEFOVLi3o2GpZoedTtLYvbie0eQBehJIjtCrWca2ZHw,596
331
332
  maxframe/serialization/serializables/field.py,sha256=atVgX-9rsVG1fTev7vjQArVwIEaCRjXoSEjpQ3mh6bA,16015
332
333
  maxframe/serialization/serializables/__init__.py,sha256=_wyFZF5QzSP32wSXlXHEPl98DN658I66WamP8XPJy0c,1351
333
- maxframe/serialization/serializables/core.py,sha256=xlqVUlBK3aLTavHLWHg4JXUTaBGzSuM7t-XHahB8et4,8965
334
+ maxframe/serialization/serializables/core.py,sha256=C8J2lxNUNQWgoKc5rF-Eb8H7JSqFDRZpvM9eEUYjxCY,13796
334
335
  maxframe/serialization/serializables/field_type.py,sha256=Feh09hu8XyaxS5MaJ4za_pcvqJVuMkOeGxwQ9OuJw6I,14865
335
336
  maxframe/serialization/serializables/tests/test_field_type.py,sha256=T3ebXbUkKveC9Pq1nIl85e4eYascFeJ52d0REHbz5jo,4381
336
337
  maxframe/serialization/serializables/tests/__init__.py,sha256=FEFOVLi3o2GpZoedTtLYvbie0eQBehJIjtCrWca2ZHw,596
337
- maxframe/serialization/serializables/tests/test_serializable.py,sha256=nwdN7B2xnI_Bh-s90TyjPvyFFVWOE9JVBqm4bdwYZ6o,8243
338
+ maxframe/serialization/serializables/tests/test_serializable.py,sha256=P6BCYvm-0HxlEHruyw-SIdVBywxQw16JUMws_lvqTk0,9867
338
339
  maxframe/odpsio/tableio.py,sha256=TiXZViZMqWq_RaSCCcw8EJuj7ymsKe7chIkUthrnS7I,10148
339
340
  maxframe/odpsio/arrow.py,sha256=5GyAOaQLY_UeJS1CL98zNQpLMw5OfPrcI_YHP-G5Bas,3793
340
341
  maxframe/odpsio/__init__.py,sha256=HcxZsE4hRwbhtE-ZXhDWZMmQlv-2dOTvQq2NajhGEo4,799
@@ -345,17 +346,18 @@ maxframe/odpsio/tests/__init__.py,sha256=FEFOVLi3o2GpZoedTtLYvbie0eQBehJIjtCrWca
345
346
  maxframe/odpsio/tests/test_schema.py,sha256=XTixGKHOWiprp5PZVOo2q9h4-HAUPL8vTUmoeXQDIiM,11958
346
347
  maxframe/odpsio/tests/test_arrow.py,sha256=SQ9EmI9_VOOC8u6Rg6nh3IPC2fPbLvJ9HwtpMNDRhL8,3106
347
348
  maxframe/odpsio/tests/test_volumeio.py,sha256=UEqFANuPKyFtlIh2JNi-LoixH52bxsgHdxu3himnEvs,3022
348
- maxframe/tests/test_utils.py,sha256=xaAoURr5NOJUTY0XVa2H8qOStcEH5UQSXItkatHFxFE,11977
349
- maxframe/tests/test_protocol.py,sha256=t11yxh4_gWxxCuk09zo3pn9Nn96DBBQTBt12ewKDwLQ,5187
349
+ maxframe/tests/test_utils.py,sha256=imfe7sN1_4EjWuT4qMYMwjOjgL0t5oewyhebBGPDBhY,11504
350
+ maxframe/tests/test_protocol.py,sha256=9DWr3z1AI2DUMnLyak91PKSfV_ILkOtwAZPCmM42kcg,6103
350
351
  maxframe/tests/__init__.py,sha256=FEFOVLi3o2GpZoedTtLYvbie0eQBehJIjtCrWca2ZHw,596
351
- maxframe/tests/utils.py,sha256=wJtSFXt3BD4i5zdO4JBQk_kNAxrtyGLro0jodCA4xuY,4568
352
+ maxframe/tests/utils.py,sha256=YfK3o5VRSowVFnertoNmog3ABzNoeoiIF6MRNf4FV-U,4576
352
353
  maxframe/tests/test_codegen.py,sha256=GMrnpSb2eyB_nmuv8-_p47Kw877ElKS3BP52SpqZNIQ,2208
353
- maxframe/lib/wrapped_pickle.py,sha256=xJa0wI-GsBZFKQpVnlh_hZBlQ2u1D8VO2aBIW7VOdP4,3810
354
+ maxframe/lib/wrapped_pickle.py,sha256=HJCb8ERK6clUVgPe529vduMmbMVqBlrQ3W8mH3tYcaE,3836
354
355
  maxframe/lib/version.py,sha256=yQ6HkDOvU9X1rpI49auh-qku2g7gIiztgEH6v1urOrk,18321
355
356
  maxframe/lib/compression.py,sha256=k9DSrl_dNBsn5azLjBdL5B4WZ6eNvmCrdMbcF1G7JSc,1442
356
357
  maxframe/lib/__init__.py,sha256=CzfbLNqqm1yR1i6fDwCd4h1ptuKVDbURFVCb0ra7QNc,642
358
+ maxframe/lib/mmh3.pyi,sha256=AOp_XqbA5-NwepeeBeG0OFJj5tjEAFLzcViyRNZ0eVI,1494
357
359
  maxframe/lib/functools_compat.py,sha256=PMSkct9GIbzq-aBwTnggrOLNfLh4xQnYTIFMPblzCUA,2616
358
- maxframe/lib/mmh3.cpython-310-darwin.so,sha256=zhVg2Wq00wkdzDEYCGqd0YdkLpHkxLrVulUaj3AOOZc,54232
360
+ maxframe/lib/mmh3.cpython-310-darwin.so,sha256=55c2Ja7NCfFseDu7Qd_p3f0HO3dXZr2zWSz5aXdbcSg,54232
359
361
  maxframe/lib/mmh3_src/mmh3module.cpp,sha256=9J9eA42eKWTl546fvfQPNuIM3B2jpWSADpgIw3tr2jg,11604
360
362
  maxframe/lib/mmh3_src/MurmurHash3.h,sha256=lg5uXUFyMBge2BWRn0FgrqaCFCMfDWoTXD4PQtjHrMA,1263
361
363
  maxframe/lib/mmh3_src/MurmurHash3.cpp,sha256=kgrteG44VSftwp5hhD7pyTENDRU9wI_DqLD1493-bP0,8096
@@ -442,7 +444,7 @@ maxframe/tensor/reduction/max.py,sha256=Z6TQSwaDcOmSstjKjntqKfinvF0XWNTGYDvvV-AI
442
444
  maxframe/tensor/reduction/allclose.py,sha256=8C9E01aUZL-rGjlx_S1zN504peV_7vjjQA3DZSPElOI,2942
443
445
  maxframe/tensor/reduction/nanmin.py,sha256=hq3TE7pM9HGakNEOIE9QPHG2O8soa2uPBrVsVHYsYyw,3947
444
446
  maxframe/tensor/reduction/nanvar.py,sha256=HmF0rOtjKFC-Rb0RubU5r5eDnf1HDf6W7knz0OxTOTc,5418
445
- maxframe/tensor/reduction/count_nonzero.py,sha256=Q1Sf4LqS0WNs3sCdwzHaIpJ5ilm5Jvnm-BXcPKSm98U,2725
447
+ maxframe/tensor/reduction/count_nonzero.py,sha256=3lzihwV17qw0hPyI7k-iq7i-L3ToMMRX5MgoRvlONLI,2721
446
448
  maxframe/tensor/reduction/nanmean.py,sha256=Ar_BbvsM600v3NkJIPUNsHo5Fv2S_INwOOEyRgpnc3A,3944
447
449
  maxframe/tensor/reduction/nancumsum.py,sha256=r47LTZ65-m6u1vr-zoxKw50Q3wOg2gwWy3ewHtV1jRg,3283
448
450
  maxframe/tensor/reduction/nansum.py,sha256=2x-RMKHxN9ikE8tm455wpKtYT1i-lKtuE03mKQopzA0,4066
@@ -568,7 +570,7 @@ maxframe/tensor/arithmetic/sin.py,sha256=Ux8mQS-pb3F7PCD_35Ghl7p2e2yF2jiS_1WC9zi
568
570
  maxframe/tensor/arithmetic/reciprocal.py,sha256=q3TKbF209Kbv7HD0hM9AF7xlQ9zXHrpHaFc9dHFuplE,2375
569
571
  maxframe/tensor/arithmetic/bitxor.py,sha256=l1bRVnzHSa7N7-nd2MzDxF33guNoml8mPB9t9_0QpMc,2908
570
572
  maxframe/tensor/arithmetic/tests/__init__.py,sha256=CzfbLNqqm1yR1i6fDwCd4h1ptuKVDbURFVCb0ra7QNc,642
571
- maxframe/tensor/arithmetic/tests/test_arithmetic.py,sha256=dzFf3ijSeVKOSiP1iI_pwxJUoVuY9r6T8O87pbVrLmk,10989
573
+ maxframe/tensor/arithmetic/tests/test_arithmetic.py,sha256=_zCcx-fzGoKjzkv90bkz3zzOs3u2afvKVotCWF-xCZU,10995
572
574
  maxframe/tensor/indexing/choose.py,sha256=TNsRP_1zoMnqfJyqk_RgPtRPFCisEXq5CMh3FUmPZ-8,7584
573
575
  maxframe/tensor/indexing/nonzero.py,sha256=JN5TyPzS1LIIjIaieXsDkffCjuq-CPBUDG3qMvNsIWI,3646
574
576
  maxframe/tensor/indexing/slice.py,sha256=VbalHoaXUGulPjskcQ4PoiZQhB2q3P1R8MrGKY2MqGw,1022
@@ -634,12 +636,12 @@ maxframe/tensor/random/tests/__init__.py,sha256=CzfbLNqqm1yR1i6fDwCd4h1ptuKVDbUR
634
636
  maxframe/tensor/random/tests/test_random.py,sha256=2hGaik9A783PFuuxIrhCDZ2O-SYKwUh98LKPwf1psLs,4275
635
637
  maxframe/tensor/base/astype.py,sha256=zeLfyWkuc1LxMIiIO6ghZ_enR7IPgq0Hy4O18h8JQPk,4394
636
638
  maxframe/tensor/base/where.py,sha256=fMGBfppo4QToHX-B3rtTorstz83m8uWWhOQj6Qbu34U,4000
637
- maxframe/tensor/base/unique.py,sha256=MFJMBZAGHLnyGL5RGClCzwVKeSb0v0l0hDJ2zgXuSTQ,6742
639
+ maxframe/tensor/base/unique.py,sha256=52OM0UvbxbgvpjSGcTdCRi3fJUzFA-GxZpn7RExJGEo,6738
638
640
  maxframe/tensor/base/__init__.py,sha256=FMnuIAaGUObPZpXBnN-9eTSmmdq0Cdb-VI_JNHKVy3Q,1079
639
641
  maxframe/tensor/base/transpose.py,sha256=yDfr1vD6doNlsuKuU94daE0IgIwGMuyBfXhKauQ1UaM,3414
640
642
  maxframe/tensor/base/ravel.py,sha256=pJkez1NHoLqVMBPm5aA8uMNFeWURTAJV_iU98Vqr-50,3173
641
643
  maxframe/tensor/base/broadcast_to.py,sha256=p0hi128OWlj3lXmacvxMhZOjUCq8fiA3yjy9nESZXgE,2686
642
- maxframe/tensor/base/atleast_1d.py,sha256=rpzzmdCgdz-IrL5WtFd31BPHaCS0V_wLuYJHjVo-vnE,1918
644
+ maxframe/tensor/base/atleast_1d.py,sha256=rCw_Ik6Y4isiMuC2Kvs0F7nDdSvx9RPahoq_v6D66Jo,1918
643
645
  maxframe/tensor/base/tests/__init__.py,sha256=FEFOVLi3o2GpZoedTtLYvbie0eQBehJIjtCrWca2ZHw,596
644
646
  maxframe/tensor/base/tests/test_base.py,sha256=syedkA0jMjevYouCL3vCMuWpJ-3hfOc28wKXqF_MMno,2843
645
647
  maxframe/remote/run_script.py,sha256=Z1j662AwDF9sr-z1xnPTlrfSTixi2RBZjccXEilfpGA,3556
@@ -13,5 +13,4 @@
13
13
  # limitations under the License.
14
14
 
15
15
  from .clients.framedriver import FrameDriverClient
16
- from .clients.spe import SPEClient
17
16
  from .session import MaxFrameRestSession
@@ -31,6 +31,11 @@ from maxframe.dataframe import read_odps_table
31
31
  from maxframe.dataframe.core import DATAFRAME_TYPE, SERIES_TYPE
32
32
  from maxframe.dataframe.datasource import PandasDataSourceOperator
33
33
  from maxframe.dataframe.datasource.read_odps_table import DataFrameReadODPSTable
34
+ from maxframe.errors import (
35
+ MaxFrameError,
36
+ NoTaskServerResponseError,
37
+ SessionAlreadyClosedError,
38
+ )
34
39
  from maxframe.odpsio import HaloTableIO, pandas_to_arrow, pandas_to_odps_schema
35
40
  from maxframe.protocol import (
36
41
  DagInfo,
@@ -144,10 +149,15 @@ class MaxFrameSession(ToThreadMixin, IsolatedAsyncSession):
144
149
 
145
150
  schema, table_meta = pandas_to_odps_schema(t, unknown_as_string=True)
146
151
  if self._odps_entry.exist_table(table_meta.table_name):
147
- self._odps_entry.delete_table(table_meta.table_name)
152
+ self._odps_entry.delete_table(
153
+ table_meta.table_name, hints=options.sql.settings
154
+ )
148
155
  table_name = build_temp_table_name(self.session_id, t.key)
149
156
  table_obj = self._odps_entry.create_table(
150
- table_name, schema, lifecycle=options.session.temp_table_lifecycle
157
+ table_name,
158
+ schema,
159
+ lifecycle=options.session.temp_table_lifecycle,
160
+ hints=options.sql.settings,
151
161
  )
152
162
 
153
163
  data = t.op.get_data()
@@ -264,8 +274,10 @@ class MaxFrameSession(ToThreadMixin, IsolatedAsyncSession):
264
274
  self, dag_info: DagInfo, tileables: List, progress: Progress
265
275
  ):
266
276
  start_time = time.time()
277
+ session_id = dag_info.session_id
267
278
  dag_id = dag_info.dag_id
268
279
  wait_timeout = 10
280
+ server_no_response_time = None
269
281
  with enter_mode(build=True, kernel=True):
270
282
  key_to_tileables = {t.key: t for t in tileables}
271
283
 
@@ -280,9 +292,37 @@ class MaxFrameSession(ToThreadMixin, IsolatedAsyncSession):
280
292
  if timeout_val <= 0:
281
293
  raise TimeoutError("Running DAG timed out")
282
294
 
283
- dag_info: DagInfo = await self.ensure_async_call(
284
- self._caller.get_dag_info, dag_id
285
- )
295
+ try:
296
+ dag_info: DagInfo = await self.ensure_async_call(
297
+ self._caller.get_dag_info, dag_id
298
+ )
299
+ server_no_response_time = None
300
+ except (NoTaskServerResponseError, SessionAlreadyClosedError) as ex:
301
+ # when we receive SessionAlreadyClosedError after NoTaskServerResponseError
302
+ # is received, it is possible that task server is restarted and
303
+ # SessionAlreadyClosedError might be flaky. Otherwise, the error
304
+ # should be raised.
305
+ if (
306
+ isinstance(ex, SessionAlreadyClosedError)
307
+ and not server_no_response_time
308
+ ):
309
+ raise
310
+ server_no_response_time = server_no_response_time or time.time()
311
+ if (
312
+ time.time() - server_no_response_time
313
+ > options.client.task_restart_timeout
314
+ ):
315
+ raise MaxFrameError(
316
+ "Failed to get valid response from service. "
317
+ f"Session {self._session_id}."
318
+ ) from None
319
+ await asyncio.sleep(timeout_val)
320
+ continue
321
+
322
+ if dag_info is None:
323
+ raise SystemError(
324
+ f"Cannot find DAG with ID {dag_id} in session {session_id}"
325
+ )
286
326
  progress.value = dag_info.progress
287
327
  if dag_info.status != DagStatus.RUNNING:
288
328
  break