maxframe 0.1.0b2__cp39-cp39-win32.whl → 0.1.0b4__cp39-cp39-win32.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.
- maxframe/_utils.cp39-win32.pyd +0 -0
- maxframe/codegen.py +88 -19
- maxframe/config/config.py +9 -0
- maxframe/core/entity/executable.py +1 -0
- maxframe/core/entity/objects.py +3 -2
- maxframe/core/graph/core.cp39-win32.pyd +0 -0
- maxframe/dataframe/__init__.py +7 -1
- maxframe/dataframe/core.py +4 -2
- maxframe/dataframe/datasource/read_odps_query.py +4 -2
- maxframe/dataframe/datasource/read_odps_table.py +3 -1
- maxframe/dataframe/datasource/tests/test_datasource.py +22 -0
- maxframe/dataframe/datastore/core.py +19 -0
- maxframe/dataframe/datastore/to_csv.py +2 -2
- maxframe/dataframe/datastore/to_odps.py +2 -2
- maxframe/dataframe/groupby/__init__.py +1 -0
- maxframe/dataframe/groupby/core.py +5 -0
- maxframe/dataframe/indexing/reset_index.py +1 -17
- maxframe/lib/aio/isolation.py +6 -1
- maxframe/lib/mmh3.cp39-win32.pyd +0 -0
- maxframe/odpsio/arrow.py +8 -3
- maxframe/odpsio/schema.py +18 -5
- maxframe/odpsio/tests/test_schema.py +25 -0
- maxframe/opcodes.py +5 -0
- maxframe/protocol.py +7 -0
- maxframe/serialization/core.cp39-win32.pyd +0 -0
- maxframe/serialization/serializables/core.py +6 -1
- maxframe/serialization/serializables/field.py +2 -0
- maxframe/session.py +4 -2
- maxframe/tensor/core.py +3 -3
- maxframe/tests/test_codegen.py +69 -0
- maxframe/tests/test_protocol.py +16 -8
- maxframe/tests/utils.py +1 -0
- maxframe/utils.py +20 -1
- {maxframe-0.1.0b2.dist-info → maxframe-0.1.0b4.dist-info}/METADATA +1 -1
- {maxframe-0.1.0b2.dist-info → maxframe-0.1.0b4.dist-info}/RECORD +42 -40
- maxframe_client/clients/framedriver.py +7 -7
- maxframe_client/session/odps.py +11 -10
- maxframe_client/session/task.py +8 -1
- maxframe_client/session/tests/test_task.py +29 -11
- maxframe_client/tests/test_session.py +23 -0
- {maxframe-0.1.0b2.dist-info → maxframe-0.1.0b4.dist-info}/WHEEL +0 -0
- {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()
|
|
Binary file
|
|
@@ -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
|
-
|
|
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(
|
|
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]
|
|
185
|
-
on_deserialize=lambda x: [TensorChunk(it) for it in 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
|
+
)
|
maxframe/tests/test_protocol.py
CHANGED
|
@@ -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
|
-
|
|
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
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(
|
|
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,21 +1,21 @@
|
|
|
1
1
|
maxframe/__init__.py,sha256=MgltwhBvnUQDKKmHDg9Y69TJkRGmQQ9m8-D9FC2pcLU,1007
|
|
2
|
-
maxframe/_utils.cp39-win32.pyd,sha256=
|
|
2
|
+
maxframe/_utils.cp39-win32.pyd,sha256=3M-B0_hbHRuSlcR30tbeEGNOKKk98rJZTmC7FJBa6ko,268800
|
|
3
3
|
maxframe/_utils.pxd,sha256=_qHN-lCY1FQgDFIrrqA79Ys0SBdonp9kXRMS93xKSYk,1187
|
|
4
4
|
maxframe/_utils.pyx,sha256=_3p6aJEJ6WZYLcNZ6o4DxoxsxqadTlJXFlgDeFPxqUQ,17564
|
|
5
|
-
maxframe/codegen.py,sha256=
|
|
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=
|
|
12
|
-
maxframe/protocol.py,sha256=
|
|
13
|
-
maxframe/session.py,sha256=
|
|
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=
|
|
16
|
+
maxframe/utils.py,sha256=fzlh5MTJcX9ZBEnIZ4tVMzf846X9YsUmVGTKG5GtZr4,35212
|
|
17
17
|
maxframe/config/__init__.py,sha256=AHo3deaCm1JnbbRX_udboJEDYrYytdvivp9RFxJcumI,671
|
|
18
|
-
maxframe/config/config.py,sha256=
|
|
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=
|
|
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=
|
|
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.cp39-win32.pyd,sha256=
|
|
36
|
+
maxframe/core/graph/core.cp39-win32.pyd,sha256=v3SPW-2yzfdWh9qKBVlb8bH85nvVo37GqgPPcS26PdA,217600
|
|
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=
|
|
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=
|
|
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=
|
|
123
|
-
maxframe/dataframe/datasource/read_odps_table.py,sha256=
|
|
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=
|
|
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/
|
|
130
|
-
maxframe/dataframe/datastore/
|
|
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=
|
|
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=
|
|
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=
|
|
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.cp39-win32.pyd,sha256=
|
|
287
|
+
maxframe/lib/mmh3.cp39-win32.pyd,sha256=pWd_OA-NWqPDh_K7SaC4rbPudlZjIotJZihLBij-s-g,14848
|
|
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=
|
|
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=
|
|
336
|
-
maxframe/odpsio/schema.py,sha256=
|
|
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=
|
|
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.cp39-win32.pyd,sha256=
|
|
350
|
+
maxframe/serialization/core.cp39-win32.pyd,sha256=RWX4Qx0YzJeJIadmnThFqWqZ7EYbPmhXozfifAswRrE,348672
|
|
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=
|
|
359
|
-
maxframe/serialization/serializables/field.py,sha256=
|
|
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
|
|
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/
|
|
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=
|
|
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=
|
|
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=
|
|
619
|
-
maxframe_client/session/task.py,sha256=
|
|
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=
|
|
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=
|
|
625
|
-
maxframe-0.1.
|
|
626
|
-
maxframe-0.1.
|
|
627
|
-
maxframe-0.1.
|
|
628
|
-
maxframe-0.1.
|
|
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=J4VEqyL9z1mLE9UmMSsP54FoLo18dqSe_E9pRPZ-IbI,96
|
|
629
|
+
maxframe-0.1.0b4.dist-info/top_level.txt,sha256=64x-fc2q59c_vXwNUkehyjF1vb8JWqFSdYmUqIFqoTM,31
|
|
630
|
+
maxframe-0.1.0b4.dist-info/RECORD,,
|