maxframe 0.1.0b2__cp38-cp38-win_amd64.whl → 0.1.0b4__cp38-cp38-win_amd64.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.
Files changed (42) hide show
  1. maxframe/_utils.cp38-win_amd64.pyd +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.cp38-win_amd64.pyd +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.cp38-win_amd64.pyd +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.cp38-win_amd64.pyd +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,21 +1,21 @@
1
1
  maxframe/__init__.py,sha256=MgltwhBvnUQDKKmHDg9Y69TJkRGmQQ9m8-D9FC2pcLU,1007
2
- maxframe/_utils.cp38-win_amd64.pyd,sha256=EvQCJPn9UQaFErsaWnzmnRMeOvX3pPPfzhKIosGPOPE,308736
2
+ maxframe/_utils.cp38-win_amd64.pyd,sha256=6iQnaOs0v1br0i1SjkUtFgrbof_YHT5dTJBQF65XPag,308736
3
3
  maxframe/_utils.pxd,sha256=_qHN-lCY1FQgDFIrrqA79Ys0SBdonp9kXRMS93xKSYk,1187
4
4
  maxframe/_utils.pyx,sha256=_3p6aJEJ6WZYLcNZ6o4DxoxsxqadTlJXFlgDeFPxqUQ,17564
5
- maxframe/codegen.py,sha256=LzOBM2H5U24Eis3NA9tiy5dNe5xKsk7YaUizZKkkG44,14020
5
+ maxframe/codegen.py,sha256=S23hTTu2fIJTv5PMIItE_NPUnadUyoiMmb-1YAqbaWw,16329
6
6
  maxframe/conftest.py,sha256=JE9I-5mP4u-vgUqYL22mNY3tqpGofM8VMe8c8VUYkzk,4403
7
7
  maxframe/env.py,sha256=xY4wjMWIJ4qLsFAQ5F-X5CrVR7dDSWiryPXni0YSK5c,1435
8
8
  maxframe/errors.py,sha256=xBnvoJjjNcHVLhwj77Dux9ut8isGVmmJXFqefmmx8Ak,711
9
9
  maxframe/extension.py,sha256=o7yiS99LWTtLF7ZX6F78UUJAqUyd-LllOXA2l69np50,2455
10
10
  maxframe/mixin.py,sha256=QfX0KqVIWDlVDSFs0lwdzLexw7lS7W_IUuK7aY1Ib8c,3624
11
- maxframe/opcodes.py,sha256=L-BvSFEUOMrtGJFXIH6zk2Xv_-te5VZxv5eDDCNNt0U,10566
12
- maxframe/protocol.py,sha256=4JOFt8zU56d7BltDxksmuQaJPSG_f18Js4XS24SzPDo,14230
13
- maxframe/session.py,sha256=Mme-jB2hioJC6ttrXfX4XSeHLCMYoFR0ikmmhx82-vc,36624
11
+ maxframe/opcodes.py,sha256=Gcqv1DIMPOXLHOt9yYSRisu2ihP1ez6QX0d5c_L06TA,10732
12
+ maxframe/protocol.py,sha256=N4i0ggLY131gwnxOrCgKeZwzhLKSRB171cx1lWRvUcw,14605
13
+ maxframe/session.py,sha256=ETR-n-DDyCYVh7I1juJfNBxcOrESJSjxW7JOHaSt9To,36700
14
14
  maxframe/typing_.py,sha256=pAgOhHHSM376N7PJLtNXvS5LHNYywz5dIjnA_hHRWSM,1133
15
15
  maxframe/udf.py,sha256=EFAAV2c8SpWKcF9_8Pocpjc4bXsEASf57Qy_Q30YH4Q,2315
16
- maxframe/utils.py,sha256=xbXViFjhzlAjvg_K7kHc0pxt2pSJJ_iSBlmCyXOWNAs,34644
16
+ maxframe/utils.py,sha256=fzlh5MTJcX9ZBEnIZ4tVMzf846X9YsUmVGTKG5GtZr4,35212
17
17
  maxframe/config/__init__.py,sha256=AHo3deaCm1JnbbRX_udboJEDYrYytdvivp9RFxJcumI,671
18
- maxframe/config/config.py,sha256=PYJgzQy3rjVDbLzfyn9vtU4Lf7cgcJgqO5qDmNVnMUc,13321
18
+ maxframe/config/config.py,sha256=Za9cgJfSJ4noNEcOaQ8tI1lhjT0Lvd3uCURqR7vlmbg,13578
19
19
  maxframe/config/validators.py,sha256=pKnloh2kEOBRSsT8ks-zL8XVSaMMVIEvHvwNJlideeo,1672
20
20
  maxframe/config/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
21
21
  maxframe/config/tests/test_config.py,sha256=FWQZ6KBUG_jY1-KaR-GKXl7khhlTbuLlk3uaEV8koM8,2839
@@ -26,14 +26,14 @@ maxframe/core/mode.py,sha256=a-2AjLrIaqemN3pZPFhdfrPYXR7ryCLcsT1KJwWKPb0,3107
26
26
  maxframe/core/entity/__init__.py,sha256=tD4zo3KXpzLrQraHnIXeO1Q961lSsIqpbAGRK2WijVE,1336
27
27
  maxframe/core/entity/chunks.py,sha256=zKk8Iyc3IkakIDW1bMYq_zZNLrR4ZMdXH-mBuOiFerM,2202
28
28
  maxframe/core/entity/core.py,sha256=aFwjNMhTJ4ybr1WzmMVSTG211fzutzaATs14QoNh-JM,4170
29
- maxframe/core/entity/executable.py,sha256=Pt-ad4u2jqb9mCbOHp0DcL1Oo6kjUzF411ZxQrouqys,11239
29
+ maxframe/core/entity/executable.py,sha256=CKxFGvFPfY_8JBprhpyndhTSLgVLtUG4G5n7Dw0dHnw,11275
30
30
  maxframe/core/entity/fuse.py,sha256=X1lI0WXj5t0flgGI5-qlVl5LoYkAdLJHk2Vv767C9G4,2350
31
- maxframe/core/entity/objects.py,sha256=GST_N6nwNxUv1wXaPBWty7n8Asn2hX8wfIDjrctkZP8,3119
31
+ maxframe/core/entity/objects.py,sha256=Ys_l6cBp0HwgRmXuqYo4HsnjdbfUW4mgvek5W0IMmXY,3134
32
32
  maxframe/core/entity/output_types.py,sha256=NnNeDBVAEhD8dtPBWzpM7n6s8neVFrahjd0zMGWroCc,2735
33
33
  maxframe/core/entity/tileables.py,sha256=6jJyFscvb8sH5K_k2VaNGeUm8YrpevCtou3WSUl4Dw8,13973
34
34
  maxframe/core/entity/utils.py,sha256=454RYVbTMVW_8KnfDqUPec4kz1p98izVTC2OrzhOkao,966
35
35
  maxframe/core/graph/__init__.py,sha256=n1WiszgVu0VdXsk12oiAyggduNwu-1-9YKnfZqvmmXk,838
36
- maxframe/core/graph/core.cp38-win_amd64.pyd,sha256=GRnMiJS8GuMH6XyW76QDjJaPlOTGufwCYTLVBrwJ4bk,250368
36
+ maxframe/core/graph/core.cp38-win_amd64.pyd,sha256=_JfoM2G1nDBu9EZTOm40LYHvpP34d37SWYM1JmYHvSg,250368
37
37
  maxframe/core/graph/core.pyx,sha256=WYlYtXXSs72vfhf2ttJO-4u85exYzy2J9mlALHOMqoA,16354
38
38
  maxframe/core/graph/entity.py,sha256=RT_xbP5niUN5D6gqZ5Pg1vUegHn8bqPk8G8A30quOVA,5730
39
39
  maxframe/core/graph/builder/__init__.py,sha256=vTRY5xRPOMHUsK0jAtNIb1BjSPGqi_6lv86AroiiiL4,718
@@ -54,9 +54,9 @@ maxframe/core/operator/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH
54
54
  maxframe/core/operator/tests/test_core.py,sha256=iqZk4AWubFLO24V_VeV6SEy5xrzBFLP9qKK6tKO0SGs,1755
55
55
  maxframe/core/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
56
56
  maxframe/core/tests/test_mode.py,sha256=fyRH-ksa6MogEs6kNhtXhCZyvhYqflgaXJYI3nSo-ps,2507
57
- maxframe/dataframe/__init__.py,sha256=tDpskfQDhuP5IoaqPFPvuzZCYW_FXAdmnD48CDQ_ysQ,2166
57
+ maxframe/dataframe/__init__.py,sha256=BdHZ903J7SkZDOxHDxNZvDxxXjSW8Gj-fJiHG26p-kM,2275
58
58
  maxframe/dataframe/arrays.py,sha256=rOvhxMQars9E3SOYSu0ygBuuRVY0QV6xzengnMqKs4s,29616
59
- maxframe/dataframe/core.py,sha256=63TqgmOCTr5wtwbILJ6bLtHZQ6xnZd7LvVrMqR27GDQ,76034
59
+ maxframe/dataframe/core.py,sha256=mGlHzJqs9EZa0qLxxe-Qp0Kd5SnsVI3r6itDhLxVdGM,76126
60
60
  maxframe/dataframe/initializer.py,sha256=WW96yQjquofNFt6RPZvgWW4SBmH0OEDj8-BxpuyKThY,10552
61
61
  maxframe/dataframe/operators.py,sha256=jl611oPN5TGpf6UDuIwcLUsjmTcbVBNLLd6cvq8TvKo,8144
62
62
  maxframe/dataframe/utils.py,sha256=5bk441fXa9dpeT98g8OY8TtMypuoB3XSc3rLA0gjPL4,45371
@@ -119,15 +119,16 @@ maxframe/dataframe/datasource/from_records.py,sha256=ygpKOMXZnDdWzGxMxQ4KdGv-tJF
119
119
  maxframe/dataframe/datasource/from_tensor.py,sha256=mShHYi0fZcG7ZShFVgIezaphh8tSFqR9-nQMm5YKIhw,15146
120
120
  maxframe/dataframe/datasource/index.py,sha256=X_NShW67nYJGxaWp3qOrvyInNkz9L-XHjbApU4fHoes,4518
121
121
  maxframe/dataframe/datasource/read_csv.py,sha256=IvQihmpcZIdzSD7ziX92aTAHNyP5WnTgd2cZz_h43sQ,24668
122
- maxframe/dataframe/datasource/read_odps_query.py,sha256=BbIfSc1dOzauZQYLAIxKO-Z2VGZmBQ884UqSdalmG_o,10115
123
- maxframe/dataframe/datasource/read_odps_table.py,sha256=kZDpJvq3d39hLYa4oznk2LjJXipOUkfXadDhxPFSZbs,9267
122
+ maxframe/dataframe/datasource/read_odps_query.py,sha256=rvlFp35g0vYIRZszhMSjHt5tAR668ir1GVBb-T80TQk,10224
123
+ maxframe/dataframe/datasource/read_odps_table.py,sha256=r_VbiWWgBpJArBBB-NJCMRUbCTfUrGEOMJmq9a2TIC8,9380
124
124
  maxframe/dataframe/datasource/read_parquet.py,sha256=SZPrWoax2mwMBNvRk_3lkS72pZLe-_X_GwQ1JROBMs4,14952
125
125
  maxframe/dataframe/datasource/series.py,sha256=elQVupKETh-hUHI2fTu8TRxBE729Vyrmpjx17XlRV-8,1964
126
126
  maxframe/dataframe/datasource/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
127
- maxframe/dataframe/datasource/tests/test_datasource.py,sha256=mJc8z0dSDyT1nni-VTij6LLcu_sp8Cj0eekxga4Ritk,13999
127
+ maxframe/dataframe/datasource/tests/test_datasource.py,sha256=UumRBjE-bIuCi7Z4_3t8qb58ZcF8ePRZf3xF7DTvqIA,15041
128
128
  maxframe/dataframe/datastore/__init__.py,sha256=MmlHYvFacMReOHDQMXF-z2bCsLyrSHYBVwIlCsZGOK4,810
129
- maxframe/dataframe/datastore/to_csv.py,sha256=lheaF3ZmBPrcwcWyhK5gEVAGIaLJbvTyVAzqZFGG7eM,8026
130
- maxframe/dataframe/datastore/to_odps.py,sha256=Ml_iF9AspqIgGbeOAjTF3ukAwv-7SizribuqXZdxuXo,5776
129
+ maxframe/dataframe/datastore/core.py,sha256=HCqrZN47RP-IC6zDqLX_RErDUAWkcTB58FHNU70V2b4,762
130
+ maxframe/dataframe/datastore/to_csv.py,sha256=sns4bBgNpq7Ihb-goNqaBRdiEtrG-V6jqhNkWGZ1YaE,7974
131
+ maxframe/dataframe/datastore/to_odps.py,sha256=NVHLccpNYbF6YPk3PKziStonkKlR0JaOFF0AxWlMhBw,5724
131
132
  maxframe/dataframe/extensions/__init__.py,sha256=x6QCVQIfpa8JP2Vu-nZwHJ1CzATnyPoKCBMqxjXwpO0,1439
132
133
  maxframe/dataframe/extensions/accessor.py,sha256=0OA8YPL3rofSvdU0z_1kMLImahrvow_vhxdQDYODki0,1497
133
134
  maxframe/dataframe/extensions/reshuffle.py,sha256=yOlJ-3R4v9CoiEKFA1zgCOvbocy00MxpFBbQuTn-uDw,2720
@@ -135,10 +136,10 @@ maxframe/dataframe/extensions/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b
135
136
  maxframe/dataframe/extensions/tests/test_extensions.py,sha256=oDnVwQx-o8p4wmen8ZS3gnudOAihFAdNKQhSCqNNXzQ,1324
136
137
  maxframe/dataframe/fetch/__init__.py,sha256=W1arTCAjD0v_bdVeIzpJMnil3h0Ucsn29zFWmgZcYck,668
137
138
  maxframe/dataframe/fetch/core.py,sha256=27VANjpMm2rdCg1KPZxWZrKWNuNgSMzZrordI05mqWc,3424
138
- maxframe/dataframe/groupby/__init__.py,sha256=YjjKMh841TLcU-gik7n9fjeYNFwtYjvrHNq4zf83UBM,3415
139
+ maxframe/dataframe/groupby/__init__.py,sha256=wMjmvk4ced1uCm7bw0oodIKvaep61KhupriL9JRRq5w,3443
139
140
  maxframe/dataframe/groupby/aggregation.py,sha256=cUnu-Bj6YD1TVkaafwL2aGIIqixLEq7s9-7BQ_1T2DI,12303
140
141
  maxframe/dataframe/groupby/apply.py,sha256=DQHyEfqj-3tfK-CxwpdVgya0_YC9dImeWYPZJDw7ckk,9735
141
- maxframe/dataframe/groupby/core.py,sha256=BPcDrMN710phqwV1_F7kZKKan7ZqxoER-Jd4mXxMMyw,6154
142
+ maxframe/dataframe/groupby/core.py,sha256=NG6e3sqIu5dnBw9_DCQEDtsnxM5e4Yl1oD7Z_qjdtWA,6254
142
143
  maxframe/dataframe/groupby/cum.py,sha256=A7vIWLsb50VLu3yAngO-BfZecjWj0Fk6TZ5v4uQEAPM,3879
143
144
  maxframe/dataframe/groupby/fill.py,sha256=AXRmA_j-m7ig0udLCJ02FwIce2GLQ2U8KlnuCe-NY3U,4862
144
145
  maxframe/dataframe/groupby/getitem.py,sha256=owNzoE8UEfM41dfuntKkRBjjYYbY8O8CMJchIhCEyds,3344
@@ -159,7 +160,7 @@ maxframe/dataframe/indexing/loc.py,sha256=senwgO_ijLJtbzaeqS_CMefV8nlf3guEQXKdSQ
159
160
  maxframe/dataframe/indexing/reindex.py,sha256=v4Rd85aNfh3onzcFqOhdUjiLrDv9QuNtGh-OaWpnG-4,19699
160
161
  maxframe/dataframe/indexing/rename.py,sha256=E7gI6lHGoBbMnldtErxv5StmS7jrGDdXGtpDusavihA,14009
161
162
  maxframe/dataframe/indexing/rename_axis.py,sha256=ugKcve4Kp8EuSmokQFUL-mVhGQ1cd6IDZ3UauHPiFeQ,6511
162
- maxframe/dataframe/indexing/reset_index.py,sha256=h77bfAHkh1mknUwOBsnTmickejKikW6IUMXmhn6rjcg,14410
163
+ maxframe/dataframe/indexing/reset_index.py,sha256=_NFQZTjHzc_IgiqC-aqFJUfjneyJUN42-ujxGPfBVnQ,13524
163
164
  maxframe/dataframe/indexing/sample.py,sha256=cVpmTV4q0Lo5dK3RdIpP3G5Yo6A6rwCRcqQ-rBEKnPs,8393
164
165
  maxframe/dataframe/indexing/set_axis.py,sha256=ECRV5rRfbsKAQ90nEZVWCtGyu_0hN8ZPTmWNRGIJ0zo,5724
165
166
  maxframe/dataframe/indexing/set_index.py,sha256=XHX9CA0nvPd0War2GTKgr_FKuir_Tiu1bfQ5qz3vBKo,2180
@@ -283,7 +284,7 @@ maxframe/learn/contrib/pytorch/tests/test_pytorch.py,sha256=GHP-oD5uMU8LD90Jt2cH
283
284
  maxframe/lib/__init__.py,sha256=_PB28W40qku6YiT8fJYqdmEdRMQfelOwGeksCOZJfCc,657
284
285
  maxframe/lib/compression.py,sha256=QQpNK79iUC9zck74I0HKMhapSRnLBXtTRyS91taEVIc,1497
285
286
  maxframe/lib/functools_compat.py,sha256=2LTrkSw5i-z5E9XCtZzfg9-0vPrYxicKvDjnnNrAL1Q,2697
286
- maxframe/lib/mmh3.cp38-win_amd64.pyd,sha256=QJ2uH0_G31k-UGSvBbEoezRNiOB3s-JwVU5ICrKbTSE,17408
287
+ maxframe/lib/mmh3.cp38-win_amd64.pyd,sha256=wkfm7AMJoM3aVDDpH2BKcmmDwkj55JLalxBr6TE0Vq8,17408
287
288
  maxframe/lib/version.py,sha256=VOVZu3KHS53YUsb_vQsT7AyHwcCWAgc-3bBqV5ANcbQ,18941
288
289
  maxframe/lib/wrapped_pickle.py,sha256=bzEaokhAZlkjXqw1xfeKO1KX2awhKIz_1RT81yPPoag,3949
289
290
  maxframe/lib/aio/__init__.py,sha256=xzIYnV42_7CYuDTTv8svscIXQeJMF0nn8AXMbpv173M,963
@@ -291,7 +292,7 @@ maxframe/lib/aio/_runners.py,sha256=zhDC92KxrYxLEufo5Hk8QU-mTVOxNL7IM9pZXas_nDg,
291
292
  maxframe/lib/aio/_threads.py,sha256=cDaEKg5STncq9QTPUUwehJ722vgueqBoB1C-NeoHN8E,1363
292
293
  maxframe/lib/aio/base.py,sha256=Ol0MnkcsBRfsQdZWceYfaWVtNOuiHzY8EYo2Zh0QFvM,2240
293
294
  maxframe/lib/aio/file.py,sha256=uy2LM_U8-Snpf45yZqUQRR_0hZT5UXZnwq0qENpMI6k,2097
294
- maxframe/lib/aio/isolation.py,sha256=zUqytRXUHRniUrZCRtsJkBldP-RnGWv3KpelQ3hyRdU,2723
295
+ maxframe/lib/aio/isolation.py,sha256=wIliQ1qFtGV_cZ4stE21QHKUVtq7j88m7ZuZF8Ye2iE,2861
295
296
  maxframe/lib/aio/lru.py,sha256=hZ0QY8VWhZr06B11YqjEONKcjySP7oKaa-p9evwnxZY,7133
296
297
  maxframe/lib/aio/parallelism.py,sha256=Q3dXir6wr5vG2SmVSz0n6BdH7d5mhMTohfeFs5JDTtU,1272
297
298
  maxframe/lib/aio/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
@@ -332,13 +333,13 @@ maxframe/lib/tblib/pickling_support.py,sha256=D9A0eX7gJeyqhXWxJJZ1GRwwcc5lj86wBR
332
333
  maxframe/lib/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
333
334
  maxframe/lib/tests/test_wrapped_pickle.py,sha256=WV0EJQ1hTSp8xjuosWWtEO7PeiBqdDUYgStxp72_c94,1575
334
335
  maxframe/odpsio/__init__.py,sha256=0SesD04XxFli4Gp23ipMkefFQ2ZTB0PItwZoSHpDC-k,820
335
- maxframe/odpsio/arrow.py,sha256=fYNQa_n-Dy-y3l9oAu50-fOsV3C1GaNZpBsOhlYO8i4,3732
336
- maxframe/odpsio/schema.py,sha256=clW2pgjGY6lsHSfyKx-M6xqvPJerCsqlrGm6ommFHmY,12068
336
+ maxframe/odpsio/arrow.py,sha256=vvi9g5IZ8Wn224obv3vOO8U1X6UlNNTxSOfDA4Dvx0M,3875
337
+ maxframe/odpsio/schema.py,sha256=Hba-eCXnBUS6NxHRsshaohzO1eThm4HeVzzvAF7E3Vg,12479
337
338
  maxframe/odpsio/tableio.py,sha256=r_Y47V5NhvLHsK7kypdswSDmOWag1Zoh9-FEjKe5MG0,9660
338
339
  maxframe/odpsio/volumeio.py,sha256=IT_OO-RG2rJZOEx8C8xRr0oNR358RSAJQAp6WGxeXzI,3838
339
340
  maxframe/odpsio/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
340
341
  maxframe/odpsio/tests/test_arrow.py,sha256=yeDWFzsm2IMS-k6jimlQ7uim5T6WW1Anuy8didaf4cs,3194
341
- maxframe/odpsio/tests/test_schema.py,sha256=cXQYEhETUSoJmQ7MW33bFyR2ho6WciU4ot9LnxFsARM,10839
342
+ maxframe/odpsio/tests/test_schema.py,sha256=BI2Eq_DkyCimJEjSylAm_z3SLVNdEzKto7nqu7uyiW0,12088
342
343
  maxframe/odpsio/tests/test_tableio.py,sha256=ZyQxBAVA5GG3j_NOPTTFs5vCQqQywhRKC9OAJx9LJxM,4789
343
344
  maxframe/odpsio/tests/test_volumeio.py,sha256=xvnrPZueZ76OAWK2zW_tHHI_cDxo7gJXTHiEe0lkmjk,3112
344
345
  maxframe/remote/__init__.py,sha256=Yu1ZDLICbehNfd1ur7_2bnIn2VFIsTxH_cILCbHAeZY,747
@@ -346,7 +347,7 @@ maxframe/remote/core.py,sha256=w_eTDEs0O7iIzLn1YrMGh2gcNAzzbqV0mx2bRT7su_U,7001
346
347
  maxframe/remote/run_script.py,sha256=k93-vaFLUanWoBRai4-78DX_SLeZ8_rbbxcCtOIXZO8,3677
347
348
  maxframe/serialization/__init__.py,sha256=nxxU7CI6MRcL3sjA1KmLkpTGKA3KG30FKl-MJJ0MCdI,947
348
349
  maxframe/serialization/arrow.py,sha256=OMeDjLcPgagqzokG7g3Vhwm6Xw1j-Kph1V2QsIwi6dw,3513
349
- maxframe/serialization/core.cp38-win_amd64.pyd,sha256=rbZWQzsueIFi4KxvhD9aBFEMEia1FRCEt6kXnR7AJ-k,397824
350
+ maxframe/serialization/core.cp38-win_amd64.pyd,sha256=gBaf2kOFy6elDw4BCzayrqDqK84HpYn9vBrat_XEHdo,397824
350
351
  maxframe/serialization/core.pxd,sha256=Fymih3Wo-CrOY27_o_DRINdbRGR7mgiT-XCaXCXafxM,1347
351
352
  maxframe/serialization/core.pyx,sha256=Qmipu3LiJGIBVy_7d4tSJqcYWnG5xj2I7IaPv2PSq5E,35078
352
353
  maxframe/serialization/exception.py,sha256=e7bZyPlZ8XhSCdeOwlYreq0HazPXKOgOA6r9Q4Ecn2Y,3113
@@ -355,8 +356,8 @@ maxframe/serialization/numpy.py,sha256=ENrFKl24mtYyO1vZRLwHvMD0r4z_UI7J2-yNlmfWS
355
356
  maxframe/serialization/pandas.py,sha256=3aPzDOg9UYSI9GFpWm2aJc8EAi-d-timM8vQ8kTL3Cg,7349
356
357
  maxframe/serialization/scipy.py,sha256=fGwQ5ZreymrMT8g7TneATfFdKFF7YPNZQqgWgMa3J8M,2498
357
358
  maxframe/serialization/serializables/__init__.py,sha256=rlQhIaSAVzz4KYkc5shEHFZDPd6WDMPkxalU76yjJ3M,1406
358
- maxframe/serialization/serializables/core.py,sha256=9QlrQIRWSf0Ocs3YB4_n62v03RAkrb1rGN8AFCuzumI,9053
359
- maxframe/serialization/serializables/field.py,sha256=Rv9qFKCE0G9TSJXo1VU8mYu_OLakFsiZHC0enDrKIBs,16540
359
+ maxframe/serialization/serializables/core.py,sha256=QUjHQPG_Qd5yh_bW-mCdapY5uKUl-s1axrM2N3eomyQ,9227
360
+ maxframe/serialization/serializables/field.py,sha256=DVott3HAbne4UvN-heSFS9gSl0wCxV5RssS738FCjzk,16639
360
361
  maxframe/serialization/serializables/field_type.py,sha256=hkxrXT2SL_tATuobtJDfL4DzzVP2hJjDlC3PrJg6ZKo,15454
361
362
  maxframe/serialization/serializables/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
362
363
  maxframe/serialization/serializables/tests/test_field_type.py,sha256=uG87-bdG8xGmjrubEHCww1ZKmRupSvnNKnZoV2SnwYM,4502
@@ -365,7 +366,7 @@ maxframe/serialization/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH
365
366
  maxframe/serialization/tests/test_serial.py,sha256=9G2CbPBHINwcZ038pRwZON_OtH-JVXZ8w66BLYWP578,12923
366
367
  maxframe/tensor/__init__.py,sha256=aomZCK-bt5OYyRLGcbACxtFLrWIp14F4R3P79zwbN5E,3694
367
368
  maxframe/tensor/array_utils.py,sha256=xr_Ng-4dETJFjsMfWi5gbTPM9mRmPvRWj8QY2WKjmCg,5129
368
- maxframe/tensor/core.py,sha256=u9HPbYj1gOF4m7WJpjSCprIHR-3HEEwK_LhjPNmro7g,22644
369
+ maxframe/tensor/core.py,sha256=-G-UzY81GTKj2SD9FQLqBg-UDod5LjjrEA-uF16ofms,22638
369
370
  maxframe/tensor/operators.py,sha256=8VsSZ8OcImGkSRQvrYlV05KMHGsroAYmW1o9RM2yV1U,3584
370
371
  maxframe/tensor/utils.py,sha256=An35s6MrbltYvN8WYzjKCjyozTDbGQrvUW_qz8KnA94,23632
371
372
  maxframe/tensor/arithmetic/__init__.py,sha256=SUlcG0Mf9ddgxAdydenuJ9eY5yVu0TgKfpBujI3OX4w,9695
@@ -603,26 +604,27 @@ maxframe/tensor/statistics/quantile.py,sha256=HrPxQoRXTEGf-5m79osqhUoSTFpWmIwmhO
603
604
  maxframe/tensor/ufunc/__init__.py,sha256=8QUi-cPvvbsD7i7LOeZ9sc0v1XXd7lt-XV5pQKbVZJs,821
604
605
  maxframe/tensor/ufunc/ufunc.py,sha256=XRtGlhdrW7H--mrc8fTBOlUP0mzKpd9tdRtCuLDymtc,7383
605
606
  maxframe/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
606
- maxframe/tests/test_protocol.py,sha256=n7LSC42JtGQuCRt0XY8sd9ewf6i_1C0LE3ux9yNMGp8,4993
607
+ maxframe/tests/test_codegen.py,sha256=h3TKqP4zghxTn1twH7gR9jOe6NKXdCC1B4u0chlUrpY,2277
608
+ maxframe/tests/test_protocol.py,sha256=IgZT2CBH1dv6V1DwSq-PjvrUhvtOf8Mab6dnWhAT3No,5331
607
609
  maxframe/tests/test_utils.py,sha256=0Iey3O6zrGI1yQU2OSpWavJNvhUjrmdkct4-27tkGUM,12353
608
- maxframe/tests/utils.py,sha256=ulCRwCjaJeoMo4NwvekJq5BhEJzzr9sdTn-cOx9HG_A,4697
610
+ maxframe/tests/utils.py,sha256=gCre-8BApU4-AEun9WShm4Ff5a9a_oKxvLNneESXBjU,4732
609
611
  maxframe_client/__init__.py,sha256=xqlN69LjvAp2bNCaT9d82U9AF5WKi_c4UOheEW1wV9E,741
610
612
  maxframe_client/conftest.py,sha256=UWWMYjmohHL13hLl4adb0gZPLRdBVOYVvsFo6VZruI0,658
611
613
  maxframe_client/fetcher.py,sha256=ajt14PYVEXKShXSx-qTL_8adMCXBEsZoOhHr3yx95-M,7015
612
614
  maxframe_client/clients/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
613
- maxframe_client/clients/framedriver.py,sha256=_Hv_pcV0Rmc3v8sNLzrZyTYz5AyoavDPOs8jtotFQWU,4570
615
+ maxframe_client/clients/framedriver.py,sha256=upN6C1eZrCpLTsS6fihWOMy392psWfo0bw2XgSLI_Yg,4581
614
616
  maxframe_client/clients/spe.py,sha256=uizNBejhU_FrMhsgsFgDnq7gL7Cxk803LeLYmr3nmxs,3697
615
617
  maxframe_client/session/__init__.py,sha256=9zFCd3zkSADESAFc4SPoQ2nkvRwsIhhpNNO2TtSaWbU,854
616
618
  maxframe_client/session/consts.py,sha256=nD-D0zHXumbQI8w3aUyltJS59K5ftipf3xCtHNLmtc8,1380
617
619
  maxframe_client/session/graph.py,sha256=GSZaJ-PV4DK8bTcNtoSoY5kDTyyIRAKleh4tOCSUbsI,4470
618
- maxframe_client/session/odps.py,sha256=RG7_28UaS_8tgJUOa4ohw2QtwX2fF4yqsGGy2MksQWI,16700
619
- maxframe_client/session/task.py,sha256=pJYSdOo-nTXTz7An0u2vZop1MtQKMhAAhiT2m8ilk38,11142
620
+ maxframe_client/session/odps.py,sha256=AZKFz1_Pl8-zJ_RwxBoN00uUDKf4MbzhvVZ5cTywURM,16781
621
+ maxframe_client/session/task.py,sha256=R8x8OERIb673vTq-o0ig6Zy2NT4_jvi8AbLhyMaljo8,11409
620
622
  maxframe_client/session/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
621
- maxframe_client/session/tests/test_task.py,sha256=lm2q1tWZiaYeU0D11_f_t7acZLLi1Ts-nlIFpZHsm4U,2684
623
+ maxframe_client/session/tests/test_task.py,sha256=861usEURVXeTUzfJYZmBfwsHfZFexG23mMtT5IJOOm4,3364
622
624
  maxframe_client/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
623
625
  maxframe_client/tests/test_fetcher.py,sha256=7iYXLMIoCJLfgUkjB2HBkV-sqQ-xGlhtzfp9hRJz_kM,3605
624
- maxframe_client/tests/test_session.py,sha256=vTycMT6IMtPQcpVFCXFWLniHXj6m03JsSciJ7x_kAbU,6443
625
- maxframe-0.1.0b2.dist-info/METADATA,sha256=FLBUoJqc372CTgONZ6NrajzjXo3jFdUiVp1ZQH4HSXk,3147
626
- maxframe-0.1.0b2.dist-info/WHEEL,sha256=Wb4yjwIXVKEpht4JWFUZNCzpG7JLBNZnqtK2YNdqLkI,100
627
- maxframe-0.1.0b2.dist-info/top_level.txt,sha256=64x-fc2q59c_vXwNUkehyjF1vb8JWqFSdYmUqIFqoTM,31
628
- maxframe-0.1.0b2.dist-info/RECORD,,
626
+ maxframe_client/tests/test_session.py,sha256=_i6ICUTg6LMs-KD3w3pYNSt5_k9gCOkMx4gTfE20CF8,7130
627
+ maxframe-0.1.0b4.dist-info/METADATA,sha256=uH-sH39DV-QlQoIEKtD3W7Os0Z99jZgTs7uyKf-t30Q,3147
628
+ maxframe-0.1.0b4.dist-info/WHEEL,sha256=Wb4yjwIXVKEpht4JWFUZNCzpG7JLBNZnqtK2YNdqLkI,100
629
+ maxframe-0.1.0b4.dist-info/top_level.txt,sha256=64x-fc2q59c_vXwNUkehyjF1vb8JWqFSdYmUqIFqoTM,31
630
+ maxframe-0.1.0b4.dist-info/RECORD,,