maxframe 0.1.0b2__cp311-cp311-macosx_10_9_universal2.whl → 0.1.0b4__cp311-cp311-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.
- maxframe/_utils.cpython-311-darwin.so +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.cpython-311-darwin.so +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.cpython-311-darwin.so +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.cpython-311-darwin.so +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,42 +1,42 @@
|
|
|
1
|
-
maxframe-0.1.
|
|
2
|
-
maxframe-0.1.
|
|
3
|
-
maxframe-0.1.
|
|
4
|
-
maxframe-0.1.
|
|
1
|
+
maxframe-0.1.0b4.dist-info/RECORD,,
|
|
2
|
+
maxframe-0.1.0b4.dist-info/WHEEL,sha256=eupBwbXGAhwNAPJSvj5BiShZwdZO8jnQ5yHfv-9aUGw,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=
|
|
11
|
-
maxframe_client/tests/test_session.py,sha256=
|
|
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=
|
|
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=
|
|
19
|
-
maxframe_client/session/tests/test_task.py,sha256=
|
|
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/_utils.cpython-311-darwin.so,sha256=
|
|
24
|
-
maxframe/opcodes.py,sha256=
|
|
23
|
+
maxframe/_utils.cpython-311-darwin.so,sha256=F7VCnOwdB3pkVvjrJ_dyRQ8WyrhuSk2-IYGxtkxS3So,914505
|
|
24
|
+
maxframe/opcodes.py,sha256=FE9MUlENCKaO2gVIaSweF5Rsti6nKfYoD-vSRkoPlgM,10145
|
|
25
25
|
maxframe/env.py,sha256=_K499f7giN7Iu9f39iI9p_naaEDoJ0rx8dInbzqFOVI,1402
|
|
26
26
|
maxframe/mixin.py,sha256=HBAeWYGb7N6ZIgkA-YpkKiSY1GetcEVNTuMb0ieznBs,3524
|
|
27
|
-
maxframe/protocol.py,sha256=
|
|
28
|
-
maxframe/session.py,sha256=
|
|
27
|
+
maxframe/protocol.py,sha256=LjjE6iw0ZVx82tBMbff4izkGuiJxRG0MTOaPYYpRL10,14190
|
|
28
|
+
maxframe/session.py,sha256=y1XSn2G5PAQenuAkz2hb54CuWStbb_S8IFdMcJiNyoQ,35418
|
|
29
29
|
maxframe/__init__.py,sha256=YGnga-nYEppPoDZoZ5s64PZ0RYLaWtcYtmYSLTjKUBE,976
|
|
30
|
-
maxframe/utils.py,sha256=
|
|
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=
|
|
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=
|
|
39
|
-
maxframe/dataframe/core.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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/
|
|
142
|
-
maxframe/dataframe/datastore/
|
|
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=
|
|
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,13 +268,13 @@ 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=
|
|
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=
|
|
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
|
-
maxframe/core/graph/core.cpython-311-darwin.so,sha256=
|
|
277
|
+
maxframe/core/graph/core.cpython-311-darwin.so,sha256=ZntaPsS-nai5T4nZjoeWaSWdsk63-kvyPd8ZtatI9Lo,731943
|
|
277
278
|
maxframe/core/graph/entity.py,sha256=56gjXyDXN-TTPm3AQOxuRVQbb_fguKFDL_Xm7i95XEk,5559
|
|
278
279
|
maxframe/core/graph/core.pyx,sha256=ZJPx_MTOBMaX-6mns6tAiu-wrIBvRAKN44YAGTypJ1Y,15887
|
|
279
280
|
maxframe/core/graph/tests/__init__.py,sha256=FEFOVLi3o2GpZoedTtLYvbie0eQBehJIjtCrWca2ZHw,596
|
|
@@ -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=
|
|
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
|
|
@@ -308,36 +309,37 @@ maxframe/serialization/__init__.py,sha256=9eSnoDww1uw2DAXEBBTB2atJQHzd-38XVxrCko
|
|
|
308
309
|
maxframe/serialization/maxframe_objects.py,sha256=R9WEjbHL0Kr56OGkYDU9fcGi7gII6fGlXhi6IyihTsM,1365
|
|
309
310
|
maxframe/serialization/numpy.py,sha256=8_GSo45l_eNoMn4NAGEb9NLXY_9i4tf9KK4EzG0mKpA,3213
|
|
310
311
|
maxframe/serialization/scipy.py,sha256=hP0fAW0di9UgJrGtANB2S8hLDbFBtR8p5NDqAMt5rDI,2427
|
|
311
|
-
maxframe/serialization/core.cpython-311-darwin.so,sha256=
|
|
312
|
+
maxframe/serialization/core.cpython-311-darwin.so,sha256=FDjHVTw6XJnyf2tXIeDSYXJvaYANQo_dZ1413hjQWP8,1341639
|
|
312
313
|
maxframe/serialization/core.pyx,sha256=AATN47RdBTq2zg7--3xX2VHyAZSvoAuYRt7B7gEgKPE,33984
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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
|
-
maxframe/lib/mmh3.cpython-311-darwin.so,sha256=
|
|
342
|
+
maxframe/lib/mmh3.cpython-311-darwin.so,sha256=YR_c3rMEhrE9_t42f7ShWvbbXDpwhtIogplog9406Yc,120391
|
|
341
343
|
maxframe/lib/functools_compat.py,sha256=PMSkct9GIbzq-aBwTnggrOLNfLh4xQnYTIFMPblzCUA,2616
|
|
342
344
|
maxframe/lib/mmh3_src/mmh3module.cpp,sha256=9J9eA42eKWTl546fvfQPNuIM3B2jpWSADpgIw3tr2jg,11604
|
|
343
345
|
maxframe/lib/mmh3_src/MurmurHash3.h,sha256=lg5uXUFyMBge2BWRn0FgrqaCFCMfDWoTXD4PQtjHrMA,1263
|
|
@@ -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=
|
|
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=
|
|
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
|