maxframe 0.1.0b2__cp310-cp310-macosx_10_9_universal2.whl → 0.1.0b4__cp310-cp310-macosx_10_9_universal2.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 (42) hide show
  1. maxframe/_utils.cpython-310-darwin.so +0 -0
  2. maxframe/codegen.py +88 -19
  3. maxframe/config/config.py +9 -0
  4. maxframe/core/entity/executable.py +1 -0
  5. maxframe/core/entity/objects.py +3 -2
  6. maxframe/core/graph/core.cpython-310-darwin.so +0 -0
  7. maxframe/dataframe/__init__.py +7 -1
  8. maxframe/dataframe/core.py +4 -2
  9. maxframe/dataframe/datasource/read_odps_query.py +4 -2
  10. maxframe/dataframe/datasource/read_odps_table.py +3 -1
  11. maxframe/dataframe/datasource/tests/test_datasource.py +22 -0
  12. maxframe/dataframe/datastore/core.py +19 -0
  13. maxframe/dataframe/datastore/to_csv.py +2 -2
  14. maxframe/dataframe/datastore/to_odps.py +2 -2
  15. maxframe/dataframe/groupby/__init__.py +1 -0
  16. maxframe/dataframe/groupby/core.py +5 -0
  17. maxframe/dataframe/indexing/reset_index.py +1 -17
  18. maxframe/lib/aio/isolation.py +6 -1
  19. maxframe/lib/mmh3.cpython-310-darwin.so +0 -0
  20. maxframe/odpsio/arrow.py +8 -3
  21. maxframe/odpsio/schema.py +18 -5
  22. maxframe/odpsio/tests/test_schema.py +25 -0
  23. maxframe/opcodes.py +5 -0
  24. maxframe/protocol.py +7 -0
  25. maxframe/serialization/core.cpython-310-darwin.so +0 -0
  26. maxframe/serialization/serializables/core.py +6 -1
  27. maxframe/serialization/serializables/field.py +2 -0
  28. maxframe/session.py +4 -2
  29. maxframe/tensor/core.py +3 -3
  30. maxframe/tests/test_codegen.py +69 -0
  31. maxframe/tests/test_protocol.py +16 -8
  32. maxframe/tests/utils.py +1 -0
  33. maxframe/utils.py +20 -1
  34. {maxframe-0.1.0b2.dist-info → maxframe-0.1.0b4.dist-info}/METADATA +1 -1
  35. {maxframe-0.1.0b2.dist-info → maxframe-0.1.0b4.dist-info}/RECORD +42 -40
  36. maxframe_client/clients/framedriver.py +7 -7
  37. maxframe_client/session/odps.py +11 -10
  38. maxframe_client/session/task.py +8 -1
  39. maxframe_client/session/tests/test_task.py +29 -11
  40. maxframe_client/tests/test_session.py +23 -0
  41. {maxframe-0.1.0b2.dist-info → maxframe-0.1.0b4.dist-info}/WHEEL +0 -0
  42. {maxframe-0.1.0b2.dist-info → maxframe-0.1.0b4.dist-info}/top_level.txt +0 -0
@@ -61,6 +61,16 @@ def test_pandas_to_odps_schema_dataframe(wrap_obj):
61
61
  assert meta.pd_column_level_names == [None]
62
62
  assert meta.pd_index_level_names == [None]
63
63
 
64
+ test_df = _wrap_maxframe_obj(data, wrap=wrap_obj)
65
+ schema, meta = pandas_to_odps_schema(test_df, ignore_index=True)
66
+ assert [c.name for c in schema.columns] == list(test_df.dtypes.index.str.lower())
67
+ assert [c.type.name for c in schema.columns] == ["double"] * len(test_df.columns)
68
+ assert meta.type == OutputType.dataframe
69
+ assert meta.table_column_names == list(test_df.dtypes.index.str.lower())
70
+ assert meta.table_index_column_names == []
71
+ assert meta.pd_column_level_names == [None]
72
+ assert meta.pd_index_level_names == []
73
+
64
74
  data.columns = pd.MultiIndex.from_tuples(
65
75
  [("A", "A"), ("A", "B"), ("A", "C"), ("B", "A"), ("B", "B")], names=["c1", "c2"]
66
76
  )
@@ -99,6 +109,15 @@ def test_pandas_to_odps_schema_series(wrap_obj):
99
109
  assert meta.pd_column_level_names == [None]
100
110
  assert meta.pd_index_level_names == [None]
101
111
 
112
+ schema, meta = pandas_to_odps_schema(test_s, ignore_index=True)
113
+ assert [c.name for c in schema.columns] == ["_data"]
114
+ assert [c.type.name for c in schema.columns] == ["double"]
115
+ assert meta.type == OutputType.series
116
+ assert meta.table_column_names == ["_data"]
117
+ assert meta.table_index_column_names == []
118
+ assert meta.pd_column_level_names == [None]
119
+ assert meta.pd_index_level_names == []
120
+
102
121
  data.index = pd.MultiIndex.from_arrays(
103
122
  [np.random.choice(list("ABC"), 100), np.random.randint(0, 10, 100)],
104
123
  names=["c1", "c2"],
@@ -130,6 +149,9 @@ def test_pandas_to_odps_schema_index(wrap_obj):
130
149
  assert meta.pd_column_level_names == []
131
150
  assert meta.pd_index_level_names == [None]
132
151
 
152
+ with pytest.raises(AssertionError):
153
+ pandas_to_odps_schema(test_idx, unknown_as_string=True, ignore_index=True)
154
+
133
155
  data = pd.MultiIndex.from_arrays(
134
156
  [np.random.choice(list("ABC"), 100), np.random.randint(0, 10, 100)],
135
157
  names=["c1", "c2"],
@@ -159,6 +181,9 @@ def test_pandas_to_odps_schema_scalar(wrap_obj):
159
181
  assert meta.pd_column_level_names == []
160
182
  assert meta.pd_index_level_names == [None]
161
183
 
184
+ with pytest.raises(AssertionError):
185
+ pandas_to_odps_schema(test_scalar, unknown_as_string=True, ignore_index=True)
186
+
162
187
 
163
188
  def test_odps_arrow_schema_conversion():
164
189
  odps_schema = odps_types.OdpsSchema(
maxframe/opcodes.py CHANGED
@@ -564,6 +564,11 @@ CHOLESKY_FUSE = 999988
564
564
  # MaxFrame-dedicated functions
565
565
  DATAFRAME_RESHUFFLE = 10001
566
566
 
567
+ # MaxFrame internal operators
568
+ DATAFRAME_PROJECTION_SAME_INDEX_MERGE = 100001
569
+ GROUPBY_AGGR_SAME_INDEX_MERGE = 100002
570
+ DATAFRAME_ILOC_GET_AND_RENAME_ITEM = 100003
571
+
567
572
  # fetches
568
573
  FETCH_SHUFFLE = 999998
569
574
  FETCH = 999999
maxframe/protocol.py CHANGED
@@ -46,6 +46,8 @@ BodyType = TypeVar("BodyType", bound="Serializable")
46
46
 
47
47
 
48
48
  class JsonSerializable(Serializable):
49
+ _ignore_non_existing_keys = True
50
+
49
51
  @classmethod
50
52
  def from_json(cls, serialized: dict) -> "JsonSerializable":
51
53
  raise NotImplementedError
@@ -245,6 +247,8 @@ class DagInfo(JsonSerializable):
245
247
  default_factory=dict,
246
248
  )
247
249
  error_info: Optional[ErrorInfo] = ReferenceField("error_info", default=None)
250
+ start_timestamp: Optional[float] = Float64Field("start_timestamp", default=None)
251
+ end_timestamp: Optional[float] = Float64Field("end_timestamp", default=None)
248
252
 
249
253
  @classmethod
250
254
  def from_json(cls, serialized: dict) -> "DagInfo":
@@ -265,7 +269,10 @@ class DagInfo(JsonSerializable):
265
269
  "dag_id": self.dag_id,
266
270
  "status": self.status.value,
267
271
  "progress": self.progress,
272
+ "start_timestamp": self.start_timestamp,
273
+ "end_timestamp": self.end_timestamp,
268
274
  }
275
+ ret = {k: v for k, v in ret.items() if v is not None}
269
276
  if self.tileable_to_result_infos:
270
277
  ret["tileable_to_result_infos"] = {
271
278
  k: v.to_json() for k, v in self.tileable_to_result_infos.items()
@@ -112,6 +112,7 @@ class Serializable(metaclass=SerializableMeta):
112
112
  __slots__ = ("__weakref__",)
113
113
 
114
114
  _cache_primitive_serial = False
115
+ _ignore_non_existing_keys = False
115
116
 
116
117
  _FIELDS: Dict[str, Field]
117
118
  _FIELD_ORDER: List[str]
@@ -128,7 +129,11 @@ class Serializable(metaclass=SerializableMeta):
128
129
  else:
129
130
  values = kwargs
130
131
  for k, v in values.items():
131
- fields[k].set(self, v)
132
+ try:
133
+ fields[k].set(self, v)
134
+ except KeyError:
135
+ if not self._ignore_non_existing_keys:
136
+ raise
132
137
 
133
138
  def __on_deserialize__(self):
134
139
  pass
@@ -507,12 +507,14 @@ class ReferenceField(Field):
507
507
  tag: str,
508
508
  reference_type: Union[str, Type] = None,
509
509
  default: Any = no_default,
510
+ default_factory: Optional[Callable] = None,
510
511
  on_serialize: Callable[[Any], Any] = None,
511
512
  on_deserialize: Callable[[Any], Any] = None,
512
513
  ):
513
514
  super().__init__(
514
515
  tag,
515
516
  default=default,
517
+ default_factory=default_factory,
516
518
  on_serialize=on_serialize,
517
519
  on_deserialize=on_deserialize,
518
520
  )
maxframe/session.py CHANGED
@@ -1211,7 +1211,7 @@ def new_session(
1211
1211
  # load third party extensions.
1212
1212
  ensure_isolation_created(kwargs)
1213
1213
 
1214
- odps_entry = odps_entry or ODPS.from_environments()
1214
+ odps_entry = odps_entry or ODPS.from_global() or ODPS.from_environments()
1215
1215
  if address is None:
1216
1216
  from maxframe_client.session.consts import ODPS_SESSION_INSECURE_SCHEME
1217
1217
 
@@ -1255,7 +1255,9 @@ def get_default_or_create(**kwargs):
1255
1255
  if session is None:
1256
1256
  # no session attached, try to create one
1257
1257
  warnings.warn(warning_msg)
1258
- session = new_session(ODPS.from_environments(), **kwargs)
1258
+ session = new_session(
1259
+ ODPS.from_global() or ODPS.from_environments(), **kwargs
1260
+ )
1259
1261
  session.as_default()
1260
1262
  if isinstance(session, IsolatedAsyncSession):
1261
1263
  session = SyncSession.from_isolated_session(session)
maxframe/tensor/core.py CHANGED
@@ -43,7 +43,7 @@ from ..serialization.serializables import (
43
43
  StringField,
44
44
  TupleField,
45
45
  )
46
- from ..utils import on_deserialize_shape, on_serialize_shape
46
+ from ..utils import on_deserialize_shape, on_serialize_shape, skip_na_call
47
47
  from .utils import fetch_corner_data, get_chunk_slices
48
48
 
49
49
  logger = logging.getLogger(__name__)
@@ -181,8 +181,8 @@ class TensorData(HasShapeTileableData, _ExecuteAndFetchMixin):
181
181
  _chunks = ListField(
182
182
  "chunks",
183
183
  FieldTypes.reference(TensorChunkData),
184
- on_serialize=lambda x: [it.data for it in x] if x is not None else x,
185
- on_deserialize=lambda x: [TensorChunk(it) for it in x] if x is not None else x,
184
+ on_serialize=skip_na_call(lambda x: [it.data for it in x]),
185
+ on_deserialize=skip_na_call(lambda x: [TensorChunk(it) for it in x]),
186
186
  )
187
187
 
188
188
  def __init__(
@@ -0,0 +1,69 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Copyright 1999-2024 Alibaba Group Holding Ltd.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+ import base64
17
+ from typing import List, Tuple
18
+
19
+ # 使用pytest生成单元测试
20
+ import pytest
21
+
22
+ from maxframe.codegen import UserCodeMixin
23
+ from maxframe.lib import wrapped_pickle
24
+ from maxframe.serialization.core import PickleContainer
25
+
26
+
27
+ @pytest.mark.parametrize(
28
+ "input_obj, expected_output",
29
+ [
30
+ (None, "None"),
31
+ (10, "10"),
32
+ (3.14, "3.14"),
33
+ (True, "True"),
34
+ (False, "False"),
35
+ (b"hello", "base64.b64decode(b'aGVsbG8=')"),
36
+ ("hello", "'hello'"),
37
+ ([1, 2, 3], "[1, 2, 3]"),
38
+ ({"a": 1, "b": 2}, "{'a': 1, 'b': 2}"),
39
+ ((1, 2, 3), "(1, 2, 3)"),
40
+ ((1,), "(1,)"),
41
+ ((), "()"),
42
+ ({1, 2, 3}, "{1, 2, 3}"),
43
+ (set(), "set()"),
44
+ ],
45
+ )
46
+ def test_obj_to_python_expr(input_obj, expected_output):
47
+ assert UserCodeMixin.obj_to_python_expr(input_obj) == expected_output
48
+
49
+
50
+ def test_obj_to_python_expr_custom_object():
51
+ class CustomClass:
52
+ def __init__(self, a: int, b: List[int], c: Tuple[int, int]):
53
+ self.a = a
54
+ self.b = b
55
+ self.c = c
56
+
57
+ custom_obj = CustomClass(1, [2, 3], (4, 5))
58
+ pickle_data = wrapped_pickle.dumps(custom_obj)
59
+ pickle_str = base64.b64encode(pickle_data)
60
+ custom_obj_pickle_container = PickleContainer([pickle_data])
61
+
62
+ # with class obj will not support currently
63
+ with pytest.raises(ValueError):
64
+ UserCodeMixin.obj_to_python_expr(custom_obj)
65
+
66
+ assert (
67
+ UserCodeMixin.obj_to_python_expr(custom_obj_pickle_container)
68
+ == f"cloudpickle.loads(base64.b64decode({pickle_str}), buffers=[])"
69
+ )
@@ -11,6 +11,8 @@
11
11
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
+
15
+ import json
14
16
  import time
15
17
 
16
18
  import pytest
@@ -29,28 +31,32 @@ from ..serialization import RemoteException
29
31
  from ..utils import deserialize_serializable, serialize_serializable
30
32
 
31
33
 
34
+ def _json_round_trip(json_data: dict) -> dict:
35
+ return json.loads(json.dumps(json_data))
36
+
37
+
32
38
  def test_result_info_json_serialize():
33
- ri = ResultInfo.from_json(ResultInfo().to_json())
39
+ ri = ResultInfo.from_json(_json_round_trip(ResultInfo().to_json()))
34
40
  assert type(ri) is ResultInfo
35
41
 
36
42
  ri = ODPSTableResultInfo(
37
43
  full_table_name="table_name", partition_specs=["pt=partition"]
38
44
  )
39
- deserial_ri = ResultInfo.from_json(ri.to_json())
45
+ deserial_ri = ResultInfo.from_json(_json_round_trip(ri.to_json()))
40
46
  assert type(ri) is ODPSTableResultInfo
41
47
  assert ri.result_type == deserial_ri.result_type
42
48
  assert ri.full_table_name == deserial_ri.full_table_name
43
49
  assert ri.partition_specs == deserial_ri.partition_specs
44
50
 
45
51
  ri = ODPSTableResultInfo(full_table_name="table_name")
46
- deserial_ri = ResultInfo.from_json(ri.to_json())
52
+ deserial_ri = ResultInfo.from_json(_json_round_trip(ri.to_json()))
47
53
  assert type(ri) is ODPSTableResultInfo
48
54
  assert ri.result_type == deserial_ri.result_type
49
55
  assert ri.full_table_name == deserial_ri.full_table_name
50
56
  assert ri.partition_specs == deserial_ri.partition_specs
51
57
 
52
58
  ri = ODPSVolumeResultInfo(volume_name="vol_name", volume_path="vol_path")
53
- deserial_ri = ResultInfo.from_json(ri.to_json())
59
+ deserial_ri = ResultInfo.from_json(_json_round_trip(ri.to_json()))
54
60
  assert type(ri) is ODPSVolumeResultInfo
55
61
  assert ri.result_type == deserial_ri.result_type
56
62
  assert ri.volume_name == deserial_ri.volume_name
@@ -63,7 +69,7 @@ def test_error_info_json_serialize():
63
69
  except ValueError as ex:
64
70
  err_info = ErrorInfo.from_exception(ex)
65
71
 
66
- deserial_err_info = ErrorInfo.from_json(err_info.to_json())
72
+ deserial_err_info = ErrorInfo.from_json(_json_round_trip(err_info.to_json()))
67
73
  assert deserial_err_info.error_messages == err_info.error_messages
68
74
  assert isinstance(deserial_err_info.raw_error_data, ValueError)
69
75
 
@@ -73,7 +79,7 @@ def test_error_info_json_serialize():
73
79
  with pytest.raises(RemoteException):
74
80
  mf_err_info.reraise()
75
81
 
76
- deserial_err_info = ErrorInfo.from_json(mf_err_info.to_json())
82
+ deserial_err_info = ErrorInfo.from_json(_json_round_trip(mf_err_info.to_json()))
77
83
  assert isinstance(deserial_err_info.raw_error_data, ValueError)
78
84
  with pytest.raises(ValueError):
79
85
  deserial_err_info.reraise()
@@ -94,7 +100,9 @@ def test_dag_info_json_serialize():
94
100
  },
95
101
  error_info=err_info,
96
102
  )
97
- deserial_info = DagInfo.from_json(info.to_json())
103
+ json_info = info.to_json()
104
+ json_info["non_existing_field"] = "non_existing"
105
+ deserial_info = DagInfo.from_json(_json_round_trip(json_info))
98
106
  assert deserial_info.session_id == info.session_id
99
107
  assert deserial_info.dag_id == info.dag_id
100
108
  assert deserial_info.status == info.status
@@ -121,7 +129,7 @@ def test_session_info_json_serialize():
121
129
  idle_timestamp=None,
122
130
  dag_infos={"test_dag_id": dag_info},
123
131
  )
124
- deserial_info = SessionInfo.from_json(info.to_json())
132
+ deserial_info = SessionInfo.from_json(_json_round_trip(info.to_json()))
125
133
  assert deserial_info.session_id == info.session_id
126
134
  assert deserial_info.settings == info.settings
127
135
  assert deserial_info.start_timestamp == info.start_timestamp
maxframe/tests/utils.py CHANGED
@@ -104,6 +104,7 @@ def run_app_in_thread(app_func):
104
104
  q = queue.Queue()
105
105
  exit_event = asyncio.Event(loop=app_loop)
106
106
  app_thread = Thread(
107
+ name="TestAppThread",
107
108
  target=app_thread_func,
108
109
  args=(app_loop, q, exit_event, args, kwargs),
109
110
  )
maxframe/utils.py CHANGED
@@ -338,6 +338,14 @@ def deserialize_serializable(ser_serializable: bytes):
338
338
  return deserialize(header2, buffers2)
339
339
 
340
340
 
341
+ def skip_na_call(func: Callable):
342
+ @functools.wraps(func)
343
+ def new_func(x):
344
+ return func(x) if x is not None else None
345
+
346
+ return new_func
347
+
348
+
341
349
  def url_path_join(*pieces):
342
350
  """Join components of url into a relative url
343
351
 
@@ -373,6 +381,11 @@ def build_temp_table_name(session_id: str, tileable_key: str) -> str:
373
381
  return f"tmp_mf_{session_id}_{tileable_key}"
374
382
 
375
383
 
384
+ def build_temp_intermediate_table_name(session_id: str, tileable_key: str) -> str:
385
+ temp_table = build_temp_table_name(session_id, tileable_key)
386
+ return f"{temp_table}_intermediate"
387
+
388
+
376
389
  def build_session_volume_name(session_id: str) -> str:
377
390
  return f"mf_vol_{session_id}"
378
391
 
@@ -450,6 +463,9 @@ _ToThreadRetType = TypeVar("_ToThreadRetType")
450
463
 
451
464
 
452
465
  class ToThreadMixin:
466
+ _thread_pool_size = 1
467
+ _counter = itertools.count().__next__
468
+
453
469
  def __del__(self):
454
470
  if hasattr(self, "_pool"):
455
471
  kw = {"wait": False}
@@ -466,7 +482,10 @@ class ToThreadMixin:
466
482
  **kwargs,
467
483
  ) -> _ToThreadRetType:
468
484
  if not hasattr(self, "_pool"):
469
- self._pool = concurrent.futures.ThreadPoolExecutor(1)
485
+ self._pool = concurrent.futures.ThreadPoolExecutor(
486
+ self._thread_pool_size,
487
+ thread_name_prefix=f"{type(self).__name__}Pool-{self._counter()}",
488
+ )
470
489
 
471
490
  task = asyncio.create_task(
472
491
  to_thread_pool(func, *args, **kwargs, pool=self._pool)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: maxframe
3
- Version: 0.1.0b2
3
+ Version: 0.1.0b4
4
4
  Summary: MaxFrame operator-based data analyze framework
5
5
  Requires-Dist: numpy >=1.19.0
6
6
  Requires-Dist: pandas >=1.0.0
@@ -1,42 +1,42 @@
1
- maxframe-0.1.0b2.dist-info/RECORD,,
2
- maxframe-0.1.0b2.dist-info/WHEEL,sha256=r7U64H7df5k5VoE41bE2otJ6YmrMps4wUd2_S2hHvHQ,115
3
- maxframe-0.1.0b2.dist-info/top_level.txt,sha256=64x-fc2q59c_vXwNUkehyjF1vb8JWqFSdYmUqIFqoTM,31
4
- maxframe-0.1.0b2.dist-info/METADATA,sha256=NeMSt0fZ-RjNm4v-FwVNTSA1Keglfyg5vWBBMTMCq_0,3043
1
+ maxframe-0.1.0b4.dist-info/RECORD,,
2
+ maxframe-0.1.0b4.dist-info/WHEEL,sha256=r7U64H7df5k5VoE41bE2otJ6YmrMps4wUd2_S2hHvHQ,115
3
+ maxframe-0.1.0b4.dist-info/top_level.txt,sha256=64x-fc2q59c_vXwNUkehyjF1vb8JWqFSdYmUqIFqoTM,31
4
+ maxframe-0.1.0b4.dist-info/METADATA,sha256=M5MjCW0gBbtdN7bOgXnAyVv3__iRHgIGuqRb_qHAHi4,3043
5
5
  maxframe_client/conftest.py,sha256=7cwy2sFy5snEaxvtMvxfYFUnG6WtYC_9XxVrwJxOpcU,643
6
6
  maxframe_client/__init__.py,sha256=3b-z0oFVVwtIzVFBxOb9pw7gz4IhTSh4FiHtVgnxS4Q,724
7
7
  maxframe_client/fetcher.py,sha256=Ys_qu2qtniXuj9YSfeHvevdrAAEgm8k4YjyoZusdVmg,6813
8
8
  maxframe_client/clients/__init__.py,sha256=FEFOVLi3o2GpZoedTtLYvbie0eQBehJIjtCrWca2ZHw,596
9
9
  maxframe_client/clients/spe.py,sha256=ArZMNQ7olicI4O1JO7CyRP7-hb60DF71ZKCTO0N39uE,3593
10
- maxframe_client/clients/framedriver.py,sha256=NtG3QjZpuMmxZl9IWJRAAzWLojaWn6k8vy0YRTq6hqU,4452
11
- maxframe_client/tests/test_session.py,sha256=Z86Zv2p1ECpiZDNK7YitRXoEIDmhNWbRJB0HSyX462Y,6238
10
+ maxframe_client/clients/framedriver.py,sha256=Rn09529D2qBTgNGc0oCY0l7b3FgzT87TqS1nujGQaHw,4463
11
+ maxframe_client/tests/test_session.py,sha256=ZaiQTsnn-qr3VzdyuSei05AeM3FYhVpXQizg50mcSRc,6902
12
12
  maxframe_client/tests/__init__.py,sha256=FEFOVLi3o2GpZoedTtLYvbie0eQBehJIjtCrWca2ZHw,596
13
13
  maxframe_client/tests/test_fetcher.py,sha256=q7kYCznM6WSxx9TCbHrxs7Zy1L2a5zu9D-Pi1XNgQzg,3516
14
- maxframe_client/session/task.py,sha256=lb_uNH-DKvL2VnGIJC449p5z3zR8eTyQ3B_xjH1MEOY,10842
14
+ maxframe_client/session/task.py,sha256=z5j8qtBM6cs_lZrvfy4Ji3F3sVOhPOCr5r1RsNe7rN4,11102
15
15
  maxframe_client/session/graph.py,sha256=nwILNOIVaIf4E3xWffTAAlRsKRYU_zGW3oVO10du8Xw,4351
16
16
  maxframe_client/session/__init__.py,sha256=KPqhSlAJiuUz8TC-z5o7mHDVXzLSqWwrZ33zNni7piY,832
17
17
  maxframe_client/session/consts.py,sha256=R37BxDF3kgCy0qmDdwLaH5jB7mb7SzfYV6g9yHBKAwk,1344
18
- maxframe_client/session/odps.py,sha256=uuPk5rc1OpFk9PNFU1R6r4HQXOHAOU7ZVvbcdGk_N_s,16248
19
- maxframe_client/session/tests/test_task.py,sha256=MvizDb-WXbJn-cZ_e6rozO-VT95Expxu6ngyeD0TyZA,2617
18
+ maxframe_client/session/odps.py,sha256=4O4lpoEICC7PwDu6koGZ1XOXuCt_zSblF6xtPARl7n8,16328
19
+ maxframe_client/session/tests/test_task.py,sha256=lDdw3gToaM3xSaRXEmHUoAo2h0id7t4v_VvpdKxQAao,3279
20
20
  maxframe_client/session/tests/__init__.py,sha256=FEFOVLi3o2GpZoedTtLYvbie0eQBehJIjtCrWca2ZHw,596
21
21
  maxframe/_utils.pyx,sha256=I4kmfhNr-xXK2ak22dr4Vwahzn-JmTaYctbL3y9_UBQ,17017
22
22
  maxframe/conftest.py,sha256=ZzwKhGp7LAVpzQYJkniwIUQqIegcaDQAhyzDyU2qld4,4264
23
- maxframe/opcodes.py,sha256=L1_GGenexNnD4dk1ueelgpAebHCC-cY7d--1QPhw8l4,9984
23
+ maxframe/opcodes.py,sha256=FE9MUlENCKaO2gVIaSweF5Rsti6nKfYoD-vSRkoPlgM,10145
24
24
  maxframe/env.py,sha256=_K499f7giN7Iu9f39iI9p_naaEDoJ0rx8dInbzqFOVI,1402
25
25
  maxframe/mixin.py,sha256=HBAeWYGb7N6ZIgkA-YpkKiSY1GetcEVNTuMb0ieznBs,3524
26
- maxframe/protocol.py,sha256=8nt4L6C8CLiCU214gxKzwb4L_nxW-1vt368afZgQQgs,13822
27
- maxframe/_utils.cpython-310-darwin.so,sha256=Gdzx8ICGc6FFu4VglR3rSyNWRfs7v2wvr3rbasmGYZU,914377
28
- maxframe/session.py,sha256=TspAq0EUhi-7VQb1kAuQyjhpX8vMYqgdk4vzbGCkJcY,35344
26
+ maxframe/protocol.py,sha256=LjjE6iw0ZVx82tBMbff4izkGuiJxRG0MTOaPYYpRL10,14190
27
+ maxframe/_utils.cpython-310-darwin.so,sha256=43N0XK0qW7JBzqLLegrvj-AJLnkQmP-qh9yBiitkgKQ,914377
28
+ maxframe/session.py,sha256=y1XSn2G5PAQenuAkz2hb54CuWStbb_S8IFdMcJiNyoQ,35418
29
29
  maxframe/__init__.py,sha256=YGnga-nYEppPoDZoZ5s64PZ0RYLaWtcYtmYSLTjKUBE,976
30
- maxframe/utils.py,sha256=U-MFtfKr0Np1PGsH9YhVomoKS-jzRrFGGSWkx9tYZGs,33555
30
+ maxframe/utils.py,sha256=0cAfRm_M5vfSGzaLgLqEu8M75nYK9BOd_lQowejpdHY,34104
31
31
  maxframe/extension.py,sha256=4IzF9sPyaRoAzLud0iDLooOgcyq4QunXH0ki3q9Hn8I,2374
32
32
  maxframe/errors.py,sha256=nQZoLGdLJz-Uf9c2vUvQl08QMvRqtkBOhKfdPYRZA4o,690
33
33
  maxframe/udf.py,sha256=tWOMTkNqGWw3ZpNC9wEU0GGNSBV8sV7E-Ye80DI28eg,2241
34
34
  maxframe/typing_.py,sha256=fzHETru3IOZAJwU9I7n_ib3wHuQRJ9XFVmAk7WpqkMo,1096
35
- maxframe/codegen.py,sha256=mqMIphJFN8r5jtiPrs51QuoBiZoOuYsHBcEeKnUBb-Y,13606
35
+ maxframe/codegen.py,sha256=pSiGHoEo9YajFPHbFHvi7fGkiJmAQdBCe0mMXNOG6-U,15846
36
36
  maxframe/_utils.pxd,sha256=AhJ4vA_UqZqPshi5nvIZq1xgr80fhIVQ9dm5-UdkYJ8,1154
37
37
  maxframe/dataframe/arrays.py,sha256=RWzimUcrds5CsIlPausfJAkLUjcktBSSXwdXyUNKEtU,28752
38
- maxframe/dataframe/__init__.py,sha256=CttHAoUmkUi0o4qujJ29QwHdg2PKjcOGBT_D9eWkSIs,2092
39
- maxframe/dataframe/core.py,sha256=mJ5I_qBP8HDAzlwPnkj8RN4EyBHC8d5unbe2LC6HKXg,73641
38
+ maxframe/dataframe/__init__.py,sha256=h4SQPQQBpVPxTNGP5Rtx5uO7RI8gO7_FpXjeh_k9PN8,2195
39
+ maxframe/dataframe/core.py,sha256=aNkexKwBuaQv28R0HYTLXcD64U4nEcBsBfLfGCFSSGs,73731
40
40
  maxframe/dataframe/initializer.py,sha256=4BpZJB8bbyFnABUYWBrk_qzzrogEsWgFuU21Ma9IsjY,10264
41
41
  maxframe/dataframe/utils.py,sha256=qWRo51rcMTlo4mvZ8ZZq1zIF9CiAgU1qRtoCAaYrR34,44111
42
42
  maxframe/dataframe/operators.py,sha256=T7Ik1shfoyrMZ1x0wHXG26bsod1_YjMGQgGAFNpH6k0,7871
@@ -83,14 +83,14 @@ maxframe/dataframe/datasource/from_index.py,sha256=2061zsQn-BhyHTT0X9tE0JK8vLxQU
83
83
  maxframe/dataframe/datasource/dataframe.py,sha256=LxAKF4gBIHhnJQPuaAUdIEyMAq7HTfiEeNVls5n4I4A,2023
84
84
  maxframe/dataframe/datasource/series.py,sha256=QcYiBNcR8jjH6vdO6l6H9F46KHmlBqVCTI2tv9eyZ9w,1909
85
85
  maxframe/dataframe/datasource/__init__.py,sha256=C8EKsHTJi-1jvJUKIpZtMtsK-ZID3dtxL1voXnaltTs,640
86
- maxframe/dataframe/datasource/read_odps_query.py,sha256=t-kALzm2OXRHChCwRiTWPIp41o-q_v2xHNR9W6nm6Yk,9820
86
+ maxframe/dataframe/datasource/read_odps_query.py,sha256=PkDtM1lG2odWcgjtKOdr5A95rqlkiFUKQy03v5-4pqU,9927
87
87
  maxframe/dataframe/datasource/core.py,sha256=ozFmDgw1og7nK9_jU-u3tLEq9pNbitN-8w8XWdbKkJ0,2687
88
88
  maxframe/dataframe/datasource/date_range.py,sha256=CDGpxDyjLwnb66j-MIiiTfXGXHGh5MLhEmj6x2riIlU,17244
89
- maxframe/dataframe/datasource/read_odps_table.py,sha256=2FIgD2N6IOFj9IbpwOCX_XYOmFpOugLY2Byl6-jtVsI,9018
89
+ maxframe/dataframe/datasource/read_odps_table.py,sha256=u3TNBlSMvQzKMQXFincqWKcUu8a4jeXX_RW3gctPXF4,9129
90
90
  maxframe/dataframe/datasource/read_parquet.py,sha256=9auOcy8snTxCOohgXZCUXfT_O39irdkBngZH5svgx0E,14531
91
91
  maxframe/dataframe/datasource/from_tensor.py,sha256=4viuN5SLLye7Xeb8kouOpm-osoQ2yEovWTDNPQuW8gE,14727
92
92
  maxframe/dataframe/datasource/from_records.py,sha256=WBYouYyg7m_8NJdN-yUWSfJlIpm6DVP3IMfLXZFugyI,3442
93
- maxframe/dataframe/datasource/tests/test_datasource.py,sha256=iSAg0W9lme45uBSOR77j0dR7dSevyrHpkM2VVONZGyU,13620
93
+ maxframe/dataframe/datasource/tests/test_datasource.py,sha256=4O3N-XD-MpJxEQfILu4cS7gU82hqgS9g9gnDDEsw56k,14640
94
94
  maxframe/dataframe/datasource/tests/__init__.py,sha256=FEFOVLi3o2GpZoedTtLYvbie0eQBehJIjtCrWca2ZHw,596
95
95
  maxframe/dataframe/sort/sort_index.py,sha256=Hwbkm9x8kqGgXh4gMcAtYMDjYtt-S3CJXfYR9pN5Iqk,5412
96
96
  maxframe/dataframe/sort/__init__.py,sha256=Vt2Ynr7uAX51hLbQu93QeHiFH4D9_WJMO99KljpbO2U,1160
@@ -128,9 +128,9 @@ maxframe/dataframe/extensions/tests/__init__.py,sha256=FEFOVLi3o2GpZoedTtLYvbie0
128
128
  maxframe/dataframe/groupby/aggregation.py,sha256=BuhqZal6RLHkjvwJep86oT1a7rMqxxUAPxQ_dao6I6E,11953
129
129
  maxframe/dataframe/groupby/fill.py,sha256=JF3NxyXigZqg8ecKtLSndDmNMX8S6g_ChQR9JAK036E,4721
130
130
  maxframe/dataframe/groupby/cum.py,sha256=jdGQm7U-GosgHMfneHZC5Z2uraj6iBmSFOhqP3m18B0,3755
131
- maxframe/dataframe/groupby/__init__.py,sha256=TNb4WhAV0Q9d65bKMo_n3-bkPhAMj2YA6ZHalPUUeoU,3334
131
+ maxframe/dataframe/groupby/__init__.py,sha256=nZkz1OAdYRj8qwQkUAZDax0pfCsUH_fprwuksS97vuc,3361
132
132
  maxframe/dataframe/groupby/getitem.py,sha256=kUcI9oIrjOcAHnho96Le9yEJxFydALsWbGpZfTtF8gY,3252
133
- maxframe/dataframe/groupby/core.py,sha256=AHO_6tX0fL1YkXLXUm2FjhPvxnmfmj-lkx711Uk5TPM,5980
133
+ maxframe/dataframe/groupby/core.py,sha256=K1hg9jod6z3C65SYoidmEAd_k0Mear4l5IQuwNMjpxQ,6075
134
134
  maxframe/dataframe/groupby/transform.py,sha256=pY3WPA4gN8piYSTInncjnRdh8mi9FDQa00A-Pyaoil4,8586
135
135
  maxframe/dataframe/groupby/head.py,sha256=ZDkbSn3HuUR4GGkZJqo_fL-6KFJfs55aKXQkAh_0wvA,3266
136
136
  maxframe/dataframe/groupby/sample.py,sha256=IdoyzT-V5309txYvM_iaYKupsULfozMGwm1K3oihTf4,6935
@@ -138,8 +138,9 @@ maxframe/dataframe/groupby/apply.py,sha256=gZVHN8nMXoy7BEHTBAVLQKtGicQ_jB3dsny8j
138
138
  maxframe/dataframe/groupby/tests/__init__.py,sha256=FEFOVLi3o2GpZoedTtLYvbie0eQBehJIjtCrWca2ZHw,596
139
139
  maxframe/dataframe/groupby/tests/test_groupby.py,sha256=VsHDG-UaZUXlZ1l498y44ecfzJJ9D2oY4QmPCjS6wBs,12142
140
140
  maxframe/dataframe/datastore/__init__.py,sha256=Ujd4ix4UJ7Zq-sV2pXTRDvZkKUvtt8sr-FfiUoi6Kh4,784
141
- maxframe/dataframe/datastore/to_csv.py,sha256=VUTocKlrDVyOs3Cvve9NwHtiKNJ2sQTnYnG11ML3kxE,7799
142
- maxframe/dataframe/datastore/to_odps.py,sha256=h8WOZ759Q9aHw8HdCAws0T979_SYXuSP5NcUgT2cTPw,5614
141
+ maxframe/dataframe/datastore/core.py,sha256=hLGhqYxX73tq9sOFxMyYBRMawTnsVQqluW5FcE3YHfE,743
142
+ maxframe/dataframe/datastore/to_csv.py,sha256=xVfpEsicD5A5uXLSdCN08K8uGyWB4QxnRcAbgBVUzbs,7747
143
+ maxframe/dataframe/datastore/to_odps.py,sha256=wZzD3yc6YQAGYVwEzYY-qxscn8Sj9I43lR70tFHe3m0,5562
143
144
  maxframe/dataframe/fetch/__init__.py,sha256=E3VjxLRKjtr-D__K-c0aRETvBG7CQRG1iEtH0Qghq0s,653
144
145
  maxframe/dataframe/fetch/core.py,sha256=z61_orBtOIrKFpFdJTNqyPhOw5ZCGe6QkXnDrGdMy6U,3338
145
146
  maxframe/dataframe/reduction/max.py,sha256=CqaueIN3cuF7vlE2rt2MAcXAD3Syd_R8W2dzcFhTmV0,1660
@@ -233,7 +234,7 @@ maxframe/dataframe/arithmetic/radians.py,sha256=pSq9S0KlV0Xx0vGSdxdol3348dSyYuxG
233
234
  maxframe/dataframe/arithmetic/sin.py,sha256=zgWoijVpASlkZ7cnZZxKSSHUiLqQ0pKUAIOHEfCBubc,915
234
235
  maxframe/dataframe/arithmetic/tests/__init__.py,sha256=FEFOVLi3o2GpZoedTtLYvbie0eQBehJIjtCrWca2ZHw,596
235
236
  maxframe/dataframe/arithmetic/tests/test_arithmetic.py,sha256=Zm0hwTo_NqFAa3iDmYF2Q10-884d8ltOsby2WjcioBA,24372
236
- maxframe/dataframe/indexing/reset_index.py,sha256=pdLv7YwyY-lMGg4qegGmRzu-MLNjg--xESZ4jeDcl1I,13992
237
+ maxframe/dataframe/indexing/reset_index.py,sha256=uzGszHfkhwZgZtEaygy5UPrvHPNPXgWZaTOXdNxGBT8,13122
237
238
  maxframe/dataframe/indexing/iat.py,sha256=ANURJ8qn_UitgM01gDPeaQOlSBxbk0pmN4Yr-iPRXM8,1127
238
239
  maxframe/dataframe/indexing/loc.py,sha256=ZmiK3a2f-krkXFvNLSlzRRa6GWGiAAXk_3mWZC_MqdQ,14845
239
240
  maxframe/dataframe/indexing/align.py,sha256=BdrfIrf6A7v8W0GIuv1mdx87CzR15ARnqIH_aWUjWqY,12089
@@ -267,15 +268,15 @@ maxframe/core/entity/tileables.py,sha256=b9jn_OQ-FQkbw7E7jMLjoJ4-VR7tBS8Mbx_j4iZ
267
268
  maxframe/core/entity/__init__.py,sha256=Hz_p6eTkrSdkT7YCo5aeGZ33tms5wwifMp4TeYsAVlw,1292
268
269
  maxframe/core/entity/core.py,sha256=t7Ex9Yb7A1h_XwyRG88Fx4ZOai-NQKi2luRVS_jFPEo,4018
269
270
  maxframe/core/entity/utils.py,sha256=IuNgFmBQFRioAA1hgZe6nTEggOmDY-iooZqncQQrV28,942
270
- maxframe/core/entity/executable.py,sha256=mkG6Ao6f4jAPhgGlPg4KOCwXIhdEZ5I69AEf3VF2iGQ,10903
271
+ maxframe/core/entity/executable.py,sha256=HKXHXdPIyxg9i-OWmJxIY3KfXwX0x3xN9QcR5Xhc7dQ,10938
271
272
  maxframe/core/entity/output_types.py,sha256=uqApvFK8w6_aMxRets69dTwD1ndBDgVgqDCflyt9ubg,2645
272
- maxframe/core/entity/objects.py,sha256=3bhwSSzVD0o_UEzsXie-SuCie9y_mma9VDblpy3XmG8,3020
273
+ maxframe/core/entity/objects.py,sha256=RMHLTGbIHZNxxX59lAuQydAKcR32qKleIYUqdElGS4E,3034
273
274
  maxframe/core/entity/fuse.py,sha256=47U6MHRzA2ZvUi-kJb7b3mC_gN07x3yebBgX2Jj7VZo,2277
274
275
  maxframe/core/entity/chunks.py,sha256=yNSLCWOpA_Z6aGr6ZI32dIJf3xPdRBWbvdsl8sTM3BE,2134
275
276
  maxframe/core/graph/__init__.py,sha256=rnsXwW0ouh1f7SVtq73-PzLE-MBM6Op_0l6J7b7wGRE,821
276
277
  maxframe/core/graph/entity.py,sha256=56gjXyDXN-TTPm3AQOxuRVQbb_fguKFDL_Xm7i95XEk,5559
277
278
  maxframe/core/graph/core.pyx,sha256=ZJPx_MTOBMaX-6mns6tAiu-wrIBvRAKN44YAGTypJ1Y,15887
278
- maxframe/core/graph/core.cpython-310-darwin.so,sha256=3NsvJ1I7DlaP_tCPHnKj2FJUGFdwGLR_Tt3YSkAUzk8,731559
279
+ maxframe/core/graph/core.cpython-310-darwin.so,sha256=2HZ4KfOyEMLr_hRgdogIibdcSP4HpBakvPMvSO5E6Ns,731559
279
280
  maxframe/core/graph/tests/__init__.py,sha256=FEFOVLi3o2GpZoedTtLYvbie0eQBehJIjtCrWca2ZHw,596
280
281
  maxframe/core/graph/tests/test_graph.py,sha256=kZfe_SfMOoHjEfXvtVtn0RjK4lOd-tFasxSpfL4G1WE,7462
281
282
  maxframe/core/graph/builder/__init__.py,sha256=BV5tAiZ-bJE0FBGSCEnfqKNwBNHgvB9aSzEp0PY6SnA,702
@@ -294,7 +295,7 @@ maxframe/core/operator/fuse.py,sha256=0RGemF99gQCwV4aEk-K6T5KAGToO-487dFk8LyYDIZ
294
295
  maxframe/core/operator/base.py,sha256=nxuSKjbBzDrItM9PGmFo8RLwParazu525jMLWj0kXkM,15251
295
296
  maxframe/core/operator/tests/test_core.py,sha256=57aICnc5VLqdVK7icAORTWC81bSjBxeeVWIJcha9J_0,1691
296
297
  maxframe/core/operator/tests/__init__.py,sha256=FEFOVLi3o2GpZoedTtLYvbie0eQBehJIjtCrWca2ZHw,596
297
- maxframe/config/config.py,sha256=IqySITkIuIs0Gb6VME55Ox0WXOOT5yFwacC1gWLS83I,12897
298
+ maxframe/config/config.py,sha256=zWw0kzlkNbsKY5_oee2e5mdWqC_qrxor42SRkA-hSz0,13145
298
299
  maxframe/config/validators.py,sha256=2m9MrkjDUFiU4PPaWIw8tjwMaOy8AYmuJFqVnnY8IMY,1615
299
300
  maxframe/config/__init__.py,sha256=g5lN3nP2HTAXa6ExGxU1NwU1M9ulYPmAcsV-gU7nIW8,656
300
301
  maxframe/config/tests/__init__.py,sha256=FEFOVLi3o2GpZoedTtLYvbie0eQBehJIjtCrWca2ZHw,596
@@ -309,36 +310,37 @@ maxframe/serialization/maxframe_objects.py,sha256=R9WEjbHL0Kr56OGkYDU9fcGi7gII6f
309
310
  maxframe/serialization/numpy.py,sha256=8_GSo45l_eNoMn4NAGEb9NLXY_9i4tf9KK4EzG0mKpA,3213
310
311
  maxframe/serialization/scipy.py,sha256=hP0fAW0di9UgJrGtANB2S8hLDbFBtR8p5NDqAMt5rDI,2427
311
312
  maxframe/serialization/core.pyx,sha256=AATN47RdBTq2zg7--3xX2VHyAZSvoAuYRt7B7gEgKPE,33984
312
- maxframe/serialization/core.cpython-310-darwin.so,sha256=yyHWLEBJp3GoBQz_0uOOYcnlcXFdys6Ba4KvPHg4bhE,1308295
313
+ maxframe/serialization/core.cpython-310-darwin.so,sha256=-tzxxl7I2f6WikMTVda9cnO-Aj3wgOPBVtgAiCIhSGM,1308311
313
314
  maxframe/serialization/tests/test_serial.py,sha256=Wj_I6CBQMaOtE8WtqdUaBoU8FhBOihht6SfeHOJV-zU,12511
314
315
  maxframe/serialization/tests/__init__.py,sha256=FEFOVLi3o2GpZoedTtLYvbie0eQBehJIjtCrWca2ZHw,596
315
- maxframe/serialization/serializables/field.py,sha256=OjQyF667xANnNTVpQ34etd2LTNZrNUW_1K5lYuVWI1U,15918
316
+ maxframe/serialization/serializables/field.py,sha256=atVgX-9rsVG1fTev7vjQArVwIEaCRjXoSEjpQ3mh6bA,16015
316
317
  maxframe/serialization/serializables/__init__.py,sha256=_wyFZF5QzSP32wSXlXHEPl98DN658I66WamP8XPJy0c,1351
317
- maxframe/serialization/serializables/core.py,sha256=a_6_UgomggS5ty5LXycnAphjFiqA0nEqgNUOQGN04pk,8796
318
+ maxframe/serialization/serializables/core.py,sha256=xlqVUlBK3aLTavHLWHg4JXUTaBGzSuM7t-XHahB8et4,8965
318
319
  maxframe/serialization/serializables/field_type.py,sha256=Feh09hu8XyaxS5MaJ4za_pcvqJVuMkOeGxwQ9OuJw6I,14865
319
320
  maxframe/serialization/serializables/tests/test_field_type.py,sha256=T3ebXbUkKveC9Pq1nIl85e4eYascFeJ52d0REHbz5jo,4381
320
321
  maxframe/serialization/serializables/tests/__init__.py,sha256=FEFOVLi3o2GpZoedTtLYvbie0eQBehJIjtCrWca2ZHw,596
321
322
  maxframe/serialization/serializables/tests/test_serializable.py,sha256=nwdN7B2xnI_Bh-s90TyjPvyFFVWOE9JVBqm4bdwYZ6o,8243
322
323
  maxframe/odpsio/tableio.py,sha256=QjjcNxb8h0OXvif3xDarsjq-52aqsWdPezpSn46__g0,9360
323
- maxframe/odpsio/arrow.py,sha256=S9wgULzuUeqQNhBuEXp2yaAA5E9EZM0PTteqM345tRA,3645
324
+ maxframe/odpsio/arrow.py,sha256=jNbfb36TDzpMjloDyXkwCfGDiCe-8z3IGMNlF_s1fIs,3783
324
325
  maxframe/odpsio/__init__.py,sha256=HcxZsE4hRwbhtE-ZXhDWZMmQlv-2dOTvQq2NajhGEo4,799
325
326
  maxframe/odpsio/volumeio.py,sha256=b2SQqusgrtkJJ6uMjnFv5s56XjchF8F4lLTTSHynRMc,3743
326
- maxframe/odpsio/schema.py,sha256=WsJ0bi1-78g6adyPKQFqFJRH3YPXMqGl_qmOe5z7me4,11717
327
+ maxframe/odpsio/schema.py,sha256=aXvK_1BSwttuUyROyIa_HNHohLZBp7LrW9VXzHPGXyY,12115
327
328
  maxframe/odpsio/tests/test_tableio.py,sha256=5nKq8I8Pzrfl89BjIIGyrvqPRiXdejTcYCtd-R2vTAo,4653
328
329
  maxframe/odpsio/tests/__init__.py,sha256=FEFOVLi3o2GpZoedTtLYvbie0eQBehJIjtCrWca2ZHw,596
329
- maxframe/odpsio/tests/test_schema.py,sha256=yss1ly55ErYse95XMFq2s_GWL8UnwZga5RyNIhtcx70,10572
330
+ maxframe/odpsio/tests/test_schema.py,sha256=pfBGHdgnCOcvuvEe66WCZDt_ijG2jaoA_lCKC9-ejYo,11796
330
331
  maxframe/odpsio/tests/test_arrow.py,sha256=SQ9EmI9_VOOC8u6Rg6nh3IPC2fPbLvJ9HwtpMNDRhL8,3106
331
332
  maxframe/odpsio/tests/test_volumeio.py,sha256=UEqFANuPKyFtlIh2JNi-LoixH52bxsgHdxu3himnEvs,3022
332
333
  maxframe/tests/test_utils.py,sha256=xaAoURr5NOJUTY0XVa2H8qOStcEH5UQSXItkatHFxFE,11977
333
- maxframe/tests/test_protocol.py,sha256=GnA-czIKHvNqZCBbgnWQZ1CP06_SorTEvGZ9VHUGvK4,4857
334
+ maxframe/tests/test_protocol.py,sha256=t11yxh4_gWxxCuk09zo3pn9Nn96DBBQTBt12ewKDwLQ,5187
334
335
  maxframe/tests/__init__.py,sha256=FEFOVLi3o2GpZoedTtLYvbie0eQBehJIjtCrWca2ZHw,596
335
- maxframe/tests/utils.py,sha256=DHpzJLs-U6xiv5jSHe0m1D2b5bk7WLA7fa2-PY4HpOg,4534
336
+ maxframe/tests/utils.py,sha256=wJtSFXt3BD4i5zdO4JBQk_kNAxrtyGLro0jodCA4xuY,4568
337
+ maxframe/tests/test_codegen.py,sha256=GMrnpSb2eyB_nmuv8-_p47Kw877ElKS3BP52SpqZNIQ,2208
336
338
  maxframe/lib/wrapped_pickle.py,sha256=xJa0wI-GsBZFKQpVnlh_hZBlQ2u1D8VO2aBIW7VOdP4,3810
337
339
  maxframe/lib/version.py,sha256=yQ6HkDOvU9X1rpI49auh-qku2g7gIiztgEH6v1urOrk,18321
338
340
  maxframe/lib/compression.py,sha256=k9DSrl_dNBsn5azLjBdL5B4WZ6eNvmCrdMbcF1G7JSc,1442
339
341
  maxframe/lib/__init__.py,sha256=CzfbLNqqm1yR1i6fDwCd4h1ptuKVDbURFVCb0ra7QNc,642
340
342
  maxframe/lib/functools_compat.py,sha256=PMSkct9GIbzq-aBwTnggrOLNfLh4xQnYTIFMPblzCUA,2616
341
- maxframe/lib/mmh3.cpython-310-darwin.so,sha256=WHkthBcmllwsUbOdS5l3kOt91BDtkdtdAjBEUR6CeJc,120391
343
+ maxframe/lib/mmh3.cpython-310-darwin.so,sha256=2E17yX_AsHp5vRjFjW7BFLpn_rlX1vkNISP9OCtazac,120391
342
344
  maxframe/lib/mmh3_src/mmh3module.cpp,sha256=9J9eA42eKWTl546fvfQPNuIM3B2jpWSADpgIw3tr2jg,11604
343
345
  maxframe/lib/mmh3_src/MurmurHash3.h,sha256=lg5uXUFyMBge2BWRn0FgrqaCFCMfDWoTXD4PQtjHrMA,1263
344
346
  maxframe/lib/mmh3_src/MurmurHash3.cpp,sha256=kgrteG44VSftwp5hhD7pyTENDRU9wI_DqLD1493-bP0,8096
@@ -346,7 +348,7 @@ maxframe/lib/tests/__init__.py,sha256=FEFOVLi3o2GpZoedTtLYvbie0eQBehJIjtCrWca2ZH
346
348
  maxframe/lib/tests/test_wrapped_pickle.py,sha256=oz1RLwHSZstXgw4caNeaD0ZgQZvkzDLsx7hFN-NvP7U,1524
347
349
  maxframe/lib/cython/__init__.py,sha256=FEFOVLi3o2GpZoedTtLYvbie0eQBehJIjtCrWca2ZHw,596
348
350
  maxframe/lib/cython/libcpp.pxd,sha256=2o9HWtyCMtN9xk7WH_mq1i89IbMPwfZA8yHETjRALXs,1100
349
- maxframe/lib/aio/isolation.py,sha256=p2QuFBVe1ktX8uVFbu6_U1yNzbhBNpFZ9f4A6-Y6XHo,2628
351
+ maxframe/lib/aio/isolation.py,sha256=2nA16GdOXEUNVVdxQXbmU4YvY6wPG2oSV4z1x9uW6Gw,2761
350
352
  maxframe/lib/aio/__init__.py,sha256=1_nx7d5AqXRwa7ODzVfL8gH-tsDAH4YyY-JFPC8TA6w,936
351
353
  maxframe/lib/aio/_threads.py,sha256=tr7FYViGT7nyR7HRw3vE3W-9r3-dZ1IP_Kbhe9sgqpw,1328
352
354
  maxframe/lib/aio/file.py,sha256=aZF8NkkccsVsOniWMBiPqPSk48bb7zGRPB2BegWRaqM,2012
@@ -386,7 +388,7 @@ maxframe/lib/tblib/cpython.py,sha256=FQ0f6WTQyQHoMRhgPqrA0y0Ygxlbj5IC53guxA4h9Cw
386
388
  maxframe/lib/tblib/decorators.py,sha256=bcllK3kVuPnj6SNZGmlJGxTK0ovdt7TJDXrhA4UE5sQ,1063
387
389
  maxframe/tensor/array_utils.py,sha256=259vG4SjyhiheARCZeEnfJdZjoojyrELn41oRcyAELs,4943
388
390
  maxframe/tensor/__init__.py,sha256=-kir8LUsXCDGcc7YdKqWgNEHSrgU_HE5uPam0jLLP6g,3511
389
- maxframe/tensor/core.py,sha256=x9HRQbMjhXJTtPQjKhkN42qZaPQIR7uvkMkOpqUspL8,21920
391
+ maxframe/tensor/core.py,sha256=Ojxaf5b8sJ6ZZGezyFHQJ5XsSpUrBOnZgFeUQgpVJpI,21914
390
392
  maxframe/tensor/utils.py,sha256=bwVN0iuVic1tpFai6Hk-1tQLqckQ2IYS7yZKMTcOU1I,22914
391
393
  maxframe/tensor/operators.py,sha256=iGkDIRz152gXrPb5JbqOvXngpq3QaCg-aNO4gHZPLN0,3461
392
394
  maxframe/tensor/statistics/quantile.py,sha256=UFzTmBwgNL7k_QOJ84qPfycQrW8MyOa1gcp-uFsylIY,9484