maxframe 0.1.0b5__cp310-cp310-win32.whl → 1.0.0rc1__cp310-cp310-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.cp310-win32.pyd +0 -0
- maxframe/codegen.py +10 -2
- maxframe/config/config.py +4 -0
- maxframe/core/__init__.py +0 -3
- maxframe/core/entity/__init__.py +1 -8
- maxframe/core/entity/objects.py +3 -45
- maxframe/core/graph/core.cp310-win32.pyd +0 -0
- maxframe/core/graph/core.pyx +4 -4
- maxframe/dataframe/datastore/tests/__init__.py +13 -0
- maxframe/dataframe/datastore/tests/test_to_odps.py +48 -0
- maxframe/dataframe/datastore/to_odps.py +21 -0
- maxframe/dataframe/indexing/align.py +1 -1
- maxframe/dataframe/misc/apply.py +2 -0
- maxframe/dataframe/misc/memory_usage.py +2 -2
- maxframe/dataframe/misc/tests/test_misc.py +23 -0
- maxframe/dataframe/statistics/corr.py +3 -3
- maxframe/errors.py +13 -0
- maxframe/extension.py +12 -0
- maxframe/lib/mmh3.cp310-win32.pyd +0 -0
- maxframe/lib/mmh3.pyi +43 -0
- maxframe/lib/wrapped_pickle.py +2 -1
- maxframe/protocol.py +108 -10
- maxframe/serialization/core.cp310-win32.pyd +0 -0
- maxframe/serialization/core.pxd +3 -0
- maxframe/serialization/core.pyi +3 -0
- maxframe/serialization/core.pyx +54 -25
- maxframe/serialization/exception.py +1 -1
- maxframe/serialization/pandas.py +7 -2
- maxframe/serialization/serializables/core.py +119 -12
- maxframe/serialization/serializables/tests/test_serializable.py +46 -4
- maxframe/tensor/arithmetic/tests/test_arithmetic.py +1 -1
- maxframe/tensor/base/atleast_1d.py +1 -1
- maxframe/tensor/base/unique.py +1 -1
- maxframe/tensor/reduction/count_nonzero.py +1 -1
- maxframe/tests/test_protocol.py +34 -0
- maxframe/tests/test_utils.py +0 -12
- maxframe/tests/utils.py +2 -2
- maxframe/utils.py +16 -13
- {maxframe-0.1.0b5.dist-info → maxframe-1.0.0rc1.dist-info}/METADATA +2 -2
- {maxframe-0.1.0b5.dist-info → maxframe-1.0.0rc1.dist-info}/RECORD +46 -44
- maxframe_client/__init__.py +0 -1
- maxframe_client/session/odps.py +45 -5
- maxframe_client/session/task.py +41 -20
- maxframe_client/tests/test_session.py +36 -0
- maxframe_client/clients/spe.py +0 -104
- {maxframe-0.1.0b5.dist-info → maxframe-1.0.0rc1.dist-info}/WHEEL +0 -0
- {maxframe-0.1.0b5.dist-info → maxframe-1.0.0rc1.dist-info}/top_level.txt +0 -0
|
@@ -94,6 +94,11 @@ class MySimpleSerializable(Serializable):
|
|
|
94
94
|
_ref_val = ReferenceField("ref_val", "MySimpleSerializable")
|
|
95
95
|
|
|
96
96
|
|
|
97
|
+
class MySubSerializable(MySimpleSerializable):
|
|
98
|
+
_m_int_val = Int64Field("m_int_val", default=250)
|
|
99
|
+
_m_str_val = StringField("m_str_val", default="SUB_STR")
|
|
100
|
+
|
|
101
|
+
|
|
97
102
|
class MySerializable(Serializable):
|
|
98
103
|
_id = IdentityField("id")
|
|
99
104
|
_any_val = AnyField("any_val")
|
|
@@ -141,7 +146,7 @@ class MySerializable(Serializable):
|
|
|
141
146
|
|
|
142
147
|
|
|
143
148
|
@pytest.mark.parametrize("set_is_ci", [False, True], indirect=True)
|
|
144
|
-
@switch_unpickle
|
|
149
|
+
@switch_unpickle(forbidden=False)
|
|
145
150
|
def test_serializable(set_is_ci):
|
|
146
151
|
my_serializable = MySerializable(
|
|
147
152
|
_id="1",
|
|
@@ -165,7 +170,9 @@ def test_serializable(set_is_ci):
|
|
|
165
170
|
_key_val=MyHasKey("aaa"),
|
|
166
171
|
_ndarray_val=np.random.rand(4, 3),
|
|
167
172
|
_datetime64_val=pd.Timestamp(123),
|
|
168
|
-
_timedelta64_val=pd.Timedelta(
|
|
173
|
+
_timedelta64_val=pd.Timedelta(
|
|
174
|
+
days=1, seconds=123, microseconds=345, nanoseconds=132
|
|
175
|
+
),
|
|
169
176
|
_datatype_val=np.dtype(np.int32),
|
|
170
177
|
_index_val=pd.Index([1, 2]),
|
|
171
178
|
_series_val=pd.Series(["a", "b"]),
|
|
@@ -187,9 +194,44 @@ def test_serializable(set_is_ci):
|
|
|
187
194
|
_assert_serializable_eq(my_serializable, my_serializable2)
|
|
188
195
|
|
|
189
196
|
|
|
197
|
+
@pytest.mark.parametrize("set_is_ci", [False, True], indirect=True)
|
|
198
|
+
@switch_unpickle
|
|
199
|
+
def test_compatible_serializable(set_is_ci):
|
|
200
|
+
global MySimpleSerializable, MySubSerializable
|
|
201
|
+
|
|
202
|
+
old_base, old_sub = MySimpleSerializable, MySubSerializable
|
|
203
|
+
|
|
204
|
+
try:
|
|
205
|
+
my_sub_serializable = MySubSerializable(
|
|
206
|
+
_id="id_val",
|
|
207
|
+
_list_val=["abcd", "wxyz"],
|
|
208
|
+
_ref_val=MyHasKey(),
|
|
209
|
+
_m_int_val=3412,
|
|
210
|
+
_m_str_val="dfgghj",
|
|
211
|
+
)
|
|
212
|
+
header, buffers = serialize(my_sub_serializable)
|
|
213
|
+
|
|
214
|
+
class MySimpleSerializable(Serializable):
|
|
215
|
+
_id = IdentityField("id")
|
|
216
|
+
_int_val = Int64Field("int_val", default=1000)
|
|
217
|
+
_list_val = ListField("list_val", default_factory=list)
|
|
218
|
+
_ref_val = ReferenceField("ref_val", "MySimpleSerializable")
|
|
219
|
+
_dict_val = DictField("dict_val")
|
|
220
|
+
|
|
221
|
+
class MySubSerializable(MySimpleSerializable):
|
|
222
|
+
_m_int_val = Int64Field("m_int_val", default=250)
|
|
223
|
+
_m_str_val = StringField("m_str_val", default="SUB_STR")
|
|
224
|
+
|
|
225
|
+
my_sub_serializable2 = deserialize(header, buffers)
|
|
226
|
+
assert type(my_sub_serializable) is not type(my_sub_serializable2)
|
|
227
|
+
_assert_serializable_eq(my_sub_serializable, my_sub_serializable2)
|
|
228
|
+
finally:
|
|
229
|
+
MySimpleSerializable, MySubSerializable = old_base, old_sub
|
|
230
|
+
|
|
231
|
+
|
|
190
232
|
def _assert_serializable_eq(my_serializable, my_serializable2):
|
|
191
233
|
for field_name, field in my_serializable._FIELDS.items():
|
|
192
|
-
if not hasattr(my_serializable, field.
|
|
234
|
+
if not hasattr(my_serializable, field.name):
|
|
193
235
|
continue
|
|
194
236
|
expect_value = getattr(my_serializable, field_name)
|
|
195
237
|
actual_value = getattr(my_serializable2, field_name)
|
|
@@ -208,7 +250,7 @@ def _assert_serializable_eq(my_serializable, my_serializable2):
|
|
|
208
250
|
elif callable(expect_value):
|
|
209
251
|
assert expect_value(1) == actual_value(1)
|
|
210
252
|
else:
|
|
211
|
-
assert expect_value == actual_value
|
|
253
|
+
assert expect_value == actual_value, f"Field {field_name}"
|
|
212
254
|
|
|
213
255
|
|
|
214
256
|
@pytest.mark.parametrize("set_is_ci", [True], indirect=True)
|
|
@@ -252,7 +252,7 @@ def test_compare():
|
|
|
252
252
|
|
|
253
253
|
def test_frexp():
|
|
254
254
|
t1 = ones((3, 4, 5), chunk_size=2)
|
|
255
|
-
t2 = empty((3, 4, 5), dtype=np.
|
|
255
|
+
t2 = empty((3, 4, 5), dtype=np.dtype(float), chunk_size=2)
|
|
256
256
|
op_type = type(t1.op)
|
|
257
257
|
|
|
258
258
|
o1, o2 = frexp(t1)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
2
|
# -*- coding: utf-8 -*-
|
|
3
|
-
# Copyright 1999-
|
|
3
|
+
# Copyright 1999-2024 Alibaba Group Holding Ltd.
|
|
4
4
|
#
|
|
5
5
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
6
|
# you may not use this file except in compliance with the License.
|
maxframe/tensor/base/unique.py
CHANGED
maxframe/tests/test_protocol.py
CHANGED
|
@@ -85,6 +85,40 @@ def test_error_info_json_serialize():
|
|
|
85
85
|
deserial_err_info.reraise()
|
|
86
86
|
|
|
87
87
|
|
|
88
|
+
class CannotPickleException(Exception):
|
|
89
|
+
def __reduce__(self):
|
|
90
|
+
raise ValueError
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
class CannotUnpickleException(Exception):
|
|
94
|
+
@classmethod
|
|
95
|
+
def load_from_pk(cls, _):
|
|
96
|
+
raise ValueError
|
|
97
|
+
|
|
98
|
+
def __reduce__(self):
|
|
99
|
+
return type(self).load_from_pk, (0,)
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
def test_error_info_fallback_json_serialize():
|
|
103
|
+
try:
|
|
104
|
+
raise CannotPickleException
|
|
105
|
+
except CannotPickleException as ex:
|
|
106
|
+
err_info1 = ErrorInfo.from_exception(ex)
|
|
107
|
+
|
|
108
|
+
try:
|
|
109
|
+
raise CannotUnpickleException
|
|
110
|
+
except CannotUnpickleException as ex:
|
|
111
|
+
err_info2 = ErrorInfo.from_exception(ex)
|
|
112
|
+
|
|
113
|
+
for err_info in (err_info1, err_info2):
|
|
114
|
+
deserial_err_info = ErrorInfo.from_json(err_info.to_json())
|
|
115
|
+
assert deserial_err_info.raw_error_source is None
|
|
116
|
+
assert deserial_err_info.raw_error_data is None
|
|
117
|
+
|
|
118
|
+
with pytest.raises(RemoteException):
|
|
119
|
+
deserial_err_info.reraise()
|
|
120
|
+
|
|
121
|
+
|
|
88
122
|
def test_dag_info_json_serialize():
|
|
89
123
|
try:
|
|
90
124
|
raise ValueError("ERR_DATA")
|
maxframe/tests/test_utils.py
CHANGED
|
@@ -288,15 +288,6 @@ def test_estimate_pandas_size():
|
|
|
288
288
|
df2 = pd.DataFrame(np.random.rand(1000, 10))
|
|
289
289
|
assert utils.estimate_pandas_size(df2) == sys.getsizeof(df2)
|
|
290
290
|
|
|
291
|
-
df3 = pd.DataFrame(
|
|
292
|
-
{
|
|
293
|
-
"A": np.random.choice(["abcd", "def", "gh"], size=(1000,)),
|
|
294
|
-
"B": np.random.rand(1000),
|
|
295
|
-
"C": np.random.rand(1000),
|
|
296
|
-
}
|
|
297
|
-
)
|
|
298
|
-
assert utils.estimate_pandas_size(df3) != sys.getsizeof(df3)
|
|
299
|
-
|
|
300
291
|
s1 = pd.Series(np.random.rand(1000))
|
|
301
292
|
assert utils.estimate_pandas_size(s1) == sys.getsizeof(s1)
|
|
302
293
|
|
|
@@ -307,7 +298,6 @@ def test_estimate_pandas_size():
|
|
|
307
298
|
assert utils.estimate_pandas_size(s2) == sys.getsizeof(s2)
|
|
308
299
|
|
|
309
300
|
s3 = pd.Series(np.random.choice(["abcd", "def", "gh"], size=(1000,)))
|
|
310
|
-
assert utils.estimate_pandas_size(s3) != sys.getsizeof(s3)
|
|
311
301
|
assert (
|
|
312
302
|
pytest.approx(utils.estimate_pandas_size(s3) / sys.getsizeof(s3), abs=0.5) == 1
|
|
313
303
|
)
|
|
@@ -318,7 +308,6 @@ def test_estimate_pandas_size():
|
|
|
318
308
|
assert utils.estimate_pandas_size(idx1) == sys.getsizeof(idx1)
|
|
319
309
|
|
|
320
310
|
string_idx = pd.Index(np.random.choice(["a", "bb", "cc"], size=(1000,)))
|
|
321
|
-
assert utils.estimate_pandas_size(string_idx) != sys.getsizeof(string_idx)
|
|
322
311
|
assert (
|
|
323
312
|
pytest.approx(
|
|
324
313
|
utils.estimate_pandas_size(string_idx) / sys.getsizeof(string_idx), abs=0.5
|
|
@@ -338,7 +327,6 @@ def test_estimate_pandas_size():
|
|
|
338
327
|
},
|
|
339
328
|
index=idx2,
|
|
340
329
|
)
|
|
341
|
-
assert utils.estimate_pandas_size(df4) != sys.getsizeof(df4)
|
|
342
330
|
assert (
|
|
343
331
|
pytest.approx(utils.estimate_pandas_size(df4) / sys.getsizeof(df4), abs=0.5)
|
|
344
332
|
== 1
|
maxframe/tests/utils.py
CHANGED
|
@@ -25,7 +25,7 @@ import pytest
|
|
|
25
25
|
from tornado import netutil
|
|
26
26
|
|
|
27
27
|
from ..core import Tileable, TileableGraph
|
|
28
|
-
from ..utils import lazy_import
|
|
28
|
+
from ..utils import create_event, lazy_import
|
|
29
29
|
|
|
30
30
|
try:
|
|
31
31
|
from flaky import flaky
|
|
@@ -102,7 +102,7 @@ def run_app_in_thread(app_func):
|
|
|
102
102
|
def fixture_func(*args, **kwargs):
|
|
103
103
|
app_loop = asyncio.new_event_loop()
|
|
104
104
|
q = queue.Queue()
|
|
105
|
-
exit_event =
|
|
105
|
+
exit_event = create_event(app_loop)
|
|
106
106
|
app_thread = Thread(
|
|
107
107
|
name="TestAppThread",
|
|
108
108
|
target=app_thread_func,
|
maxframe/utils.py
CHANGED
|
@@ -33,7 +33,6 @@ import sys
|
|
|
33
33
|
import threading
|
|
34
34
|
import time
|
|
35
35
|
import tokenize as pytokenize
|
|
36
|
-
import traceback
|
|
37
36
|
import types
|
|
38
37
|
import weakref
|
|
39
38
|
import zlib
|
|
@@ -396,18 +395,6 @@ def build_tileable_dir_name(tileable_key: str) -> str:
|
|
|
396
395
|
return m.hexdigest()
|
|
397
396
|
|
|
398
397
|
|
|
399
|
-
def extract_messages_and_stacks(exc: Exception) -> Tuple[List[str], List[str]]:
|
|
400
|
-
cur_exc = exc
|
|
401
|
-
messages, stacks = [], []
|
|
402
|
-
while True:
|
|
403
|
-
messages.append(str(cur_exc))
|
|
404
|
-
stacks.append("".join(traceback.format_tb(cur_exc.__traceback__)))
|
|
405
|
-
if exc.__cause__ is None:
|
|
406
|
-
break
|
|
407
|
-
cur_exc = exc.__cause__
|
|
408
|
-
return messages, stacks
|
|
409
|
-
|
|
410
|
-
|
|
411
398
|
async def wait_http_response(
|
|
412
399
|
url: str, *, request_timeout: TimeoutType = None, **kwargs
|
|
413
400
|
) -> httpclient.HTTPResponse:
|
|
@@ -449,6 +436,21 @@ async def to_thread_pool(func, *args, pool=None, **kwargs):
|
|
|
449
436
|
return await loop.run_in_executor(pool, func_call)
|
|
450
437
|
|
|
451
438
|
|
|
439
|
+
def create_event(loop: asyncio.AbstractEventLoop) -> asyncio.Event:
|
|
440
|
+
"""
|
|
441
|
+
Create an asyncio.Event in a certain event loop.
|
|
442
|
+
"""
|
|
443
|
+
if sys.version_info[1] < 10 or loop is None:
|
|
444
|
+
return asyncio.Event(loop=loop)
|
|
445
|
+
|
|
446
|
+
# From Python3.10 the loop parameter has been removed. We should work around here.
|
|
447
|
+
old_loop = asyncio.get_running_loop()
|
|
448
|
+
asyncio.set_event_loop(loop)
|
|
449
|
+
event = asyncio.Event()
|
|
450
|
+
asyncio.set_event_loop(old_loop)
|
|
451
|
+
return event
|
|
452
|
+
|
|
453
|
+
|
|
452
454
|
class ToThreadCancelledError(asyncio.CancelledError):
|
|
453
455
|
def __init__(self, *args, result=None):
|
|
454
456
|
super().__init__(*args)
|
|
@@ -519,6 +521,7 @@ def config_odps_default_options():
|
|
|
519
521
|
"metaservice.client.cache.enable": "false",
|
|
520
522
|
"odps.sql.session.result.cache.enable": "false",
|
|
521
523
|
"odps.sql.submit.mode": "script",
|
|
524
|
+
"odps.sql.job.max.time.hours": 72,
|
|
522
525
|
}
|
|
523
526
|
|
|
524
527
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: maxframe
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 1.0.0rc1
|
|
4
4
|
Summary: MaxFrame operator-based data analyze framework
|
|
5
|
-
Requires-Dist: numpy
|
|
5
|
+
Requires-Dist: numpy <2.0.0,>=1.19.0
|
|
6
6
|
Requires-Dist: pandas >=1.0.0
|
|
7
7
|
Requires-Dist: pyodps >=0.11.6.1
|
|
8
8
|
Requires-Dist: scipy >=1.0
|
|
@@ -1,40 +1,40 @@
|
|
|
1
1
|
maxframe/__init__.py,sha256=RujkARDvD6mhFpR330UQ0UfogvIdae5EjR1euFpTiYA,1036
|
|
2
|
-
maxframe/_utils.cp310-win32.pyd,sha256=
|
|
2
|
+
maxframe/_utils.cp310-win32.pyd,sha256=sTpAJC7PASVcaIJXKZQ5k-TIHu2hiTQWKQgzEHmMXA8,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=t56uoJpfbyLvrctodXn-q3VoLzbwPgNSaXUsL4Ig4Ao,18345
|
|
6
6
|
maxframe/conftest.py,sha256=JE9I-5mP4u-vgUqYL22mNY3tqpGofM8VMe8c8VUYkzk,4403
|
|
7
7
|
maxframe/env.py,sha256=xY4wjMWIJ4qLsFAQ5F-X5CrVR7dDSWiryPXni0YSK5c,1435
|
|
8
|
-
maxframe/errors.py,sha256=
|
|
9
|
-
maxframe/extension.py,sha256=
|
|
8
|
+
maxframe/errors.py,sha256=nhQVjRbH5EsyLZhyAufvHpMhfDN6eR8vcrv4sjaI7p8,1000
|
|
9
|
+
maxframe/extension.py,sha256=XKgK2b42i-jfnLc0lBPiBMsGA6HMQ4a12mJc09tMAFc,2752
|
|
10
10
|
maxframe/mixin.py,sha256=QfX0KqVIWDlVDSFs0lwdzLexw7lS7W_IUuK7aY1Ib8c,3624
|
|
11
11
|
maxframe/opcodes.py,sha256=4Gj2svgrNNxylfUbQYs8WbDqTpoCoLtlNCtAYdHr-BU,10781
|
|
12
|
-
maxframe/protocol.py,sha256=
|
|
12
|
+
maxframe/protocol.py,sha256=3SvkrIxd-NoDpUdJnYPUhzIkX5G53krG_DkynO96ivQ,18330
|
|
13
13
|
maxframe/session.py,sha256=CfDT2iwjl5NAisPrZ6LF0xG_hr75Wr0cfHd6rvtHajw,37515
|
|
14
14
|
maxframe/typing_.py,sha256=pAgOhHHSM376N7PJLtNXvS5LHNYywz5dIjnA_hHRWSM,1133
|
|
15
15
|
maxframe/udf.py,sha256=GJre7snHQxkoyUWX0rpDkrGGU8-qA-SmSe2H9nSMEfo,4422
|
|
16
|
-
maxframe/utils.py,sha256=
|
|
16
|
+
maxframe/utils.py,sha256=ame3LYmU3ByXNk9YLDi5aEru0SpIdMcEb7XCXh08qts,35489
|
|
17
17
|
maxframe/config/__init__.py,sha256=AHo3deaCm1JnbbRX_udboJEDYrYytdvivp9RFxJcumI,671
|
|
18
|
-
maxframe/config/config.py,sha256=
|
|
18
|
+
maxframe/config/config.py,sha256=Z5a2FIBAXD_r9qWv_V6i_ei9zk4h4qOAUsZJxlVtWCM,14181
|
|
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
|
|
22
22
|
maxframe/config/tests/test_validators.py,sha256=kz9Yxiqvl_BJq2CT61JTzfpRyrjm6lFrjqIfqeld_yo,1274
|
|
23
|
-
maxframe/core/__init__.py,sha256=
|
|
23
|
+
maxframe/core/__init__.py,sha256=KxXGWHijQZqmI4yIpQO7N6kQ0ok1UiUnae7Jh0jSgBA,1678
|
|
24
24
|
maxframe/core/base.py,sha256=43qZ_sJFgW857qhT1jqgsjdAsBy9tzCeqeX62CPm4vM,4691
|
|
25
25
|
maxframe/core/mode.py,sha256=a-2AjLrIaqemN3pZPFhdfrPYXR7ryCLcsT1KJwWKPb0,3107
|
|
26
|
-
maxframe/core/entity/__init__.py,sha256=
|
|
26
|
+
maxframe/core/entity/__init__.py,sha256=pUaRpxYxgP1pQuAjGEl9DxAJEvz5Tp_Tpzh4dnxmII0,1251
|
|
27
27
|
maxframe/core/entity/chunks.py,sha256=zKk8Iyc3IkakIDW1bMYq_zZNLrR4ZMdXH-mBuOiFerM,2202
|
|
28
28
|
maxframe/core/entity/core.py,sha256=aFwjNMhTJ4ybr1WzmMVSTG211fzutzaATs14QoNh-JM,4170
|
|
29
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=-cnPtk7LBIcFk4d7CY6MwDhlkoW42Xv3qdI2CD03puA,1898
|
|
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.cp310-win32.pyd,sha256=
|
|
37
|
-
maxframe/core/graph/core.pyx,sha256=
|
|
36
|
+
maxframe/core/graph/core.cp310-win32.pyd,sha256=w5B7mwar_UDVL7ct3Kn8V2GCL8mXYo4-BJDilbAnj1A,218112
|
|
37
|
+
maxframe/core/graph/core.pyx,sha256=J619C6xfVCF8NQ8oeinhICYSg-w5ecX-dnBI7NB-6n0,16390
|
|
38
38
|
maxframe/core/graph/entity.py,sha256=RT_xbP5niUN5D6gqZ5Pg1vUegHn8bqPk8G8A30quOVA,5730
|
|
39
39
|
maxframe/core/graph/builder/__init__.py,sha256=vTRY5xRPOMHUsK0jAtNIb1BjSPGqi_6lv86AroiiiL4,718
|
|
40
40
|
maxframe/core/graph/builder/base.py,sha256=IzNYD4A2alnYaOvZnipDzC-ZIfNsYR80wLnFcx7bJzc,2635
|
|
@@ -128,7 +128,9 @@ maxframe/dataframe/datasource/tests/test_datasource.py,sha256=UumRBjE-bIuCi7Z4_3
|
|
|
128
128
|
maxframe/dataframe/datastore/__init__.py,sha256=MmlHYvFacMReOHDQMXF-z2bCsLyrSHYBVwIlCsZGOK4,810
|
|
129
129
|
maxframe/dataframe/datastore/core.py,sha256=HCqrZN47RP-IC6zDqLX_RErDUAWkcTB58FHNU70V2b4,762
|
|
130
130
|
maxframe/dataframe/datastore/to_csv.py,sha256=sns4bBgNpq7Ihb-goNqaBRdiEtrG-V6jqhNkWGZ1YaE,7974
|
|
131
|
-
maxframe/dataframe/datastore/to_odps.py,sha256=
|
|
131
|
+
maxframe/dataframe/datastore/to_odps.py,sha256=joTDca3-fF27ASoksjnuz6JT4ozn3x8t7nDpAG_OSaw,6596
|
|
132
|
+
maxframe/dataframe/datastore/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
|
|
133
|
+
maxframe/dataframe/datastore/tests/test_to_odps.py,sha256=385SCJK_XkddV9dJrRqSOuaXurpGjWd_QwRSeGTOTNU,1344
|
|
132
134
|
maxframe/dataframe/extensions/__init__.py,sha256=x6QCVQIfpa8JP2Vu-nZwHJ1CzATnyPoKCBMqxjXwpO0,1439
|
|
133
135
|
maxframe/dataframe/extensions/accessor.py,sha256=0OA8YPL3rofSvdU0z_1kMLImahrvow_vhxdQDYODki0,1497
|
|
134
136
|
maxframe/dataframe/extensions/reshuffle.py,sha256=yOlJ-3R4v9CoiEKFA1zgCOvbocy00MxpFBbQuTn-uDw,2720
|
|
@@ -150,7 +152,7 @@ maxframe/dataframe/groupby/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym
|
|
|
150
152
|
maxframe/dataframe/groupby/tests/test_groupby.py,sha256=GiFRklxfp9RAD7jwuvNRbhg9mROpKPFxfXGtNhFWFCI,12516
|
|
151
153
|
maxframe/dataframe/indexing/__init__.py,sha256=AkjowbPJu6kM4fJF5baU6g6FA7n2ux5__f4_2budLSs,3297
|
|
152
154
|
maxframe/dataframe/indexing/add_prefix_suffix.py,sha256=YMHFXnVcFsRJfVIOHlTWkOGCqzxWAJam3SXmIRjKGKk,3076
|
|
153
|
-
maxframe/dataframe/indexing/align.py,sha256
|
|
155
|
+
maxframe/dataframe/indexing/align.py,sha256=-kV91o_-pq7rFsv0zgnGZuEyn8HqyUK_Ejv4VWF5fps,12434
|
|
154
156
|
maxframe/dataframe/indexing/at.py,sha256=7Igb4I9_9drZSCZITFRNL3Q-7EI_mtfklUrnNP0apHo,2300
|
|
155
157
|
maxframe/dataframe/indexing/getitem.py,sha256=eS8dnlMEP2zaYvzYZFlBNfwjD89UqT0MRIlNuDcAJQc,7958
|
|
156
158
|
maxframe/dataframe/indexing/iat.py,sha256=gc9V2Ps8fvBFIgJbYTY3ZJmH54rv-dunZzJsY3Lns1s,1164
|
|
@@ -177,7 +179,7 @@ maxframe/dataframe/merge/tests/test_merge.py,sha256=Mkk2f_NnxPqtG_2AyeG_Bt-CdY-J
|
|
|
177
179
|
maxframe/dataframe/misc/__init__.py,sha256=Lq82VMR4qWhYD1lYTbj8Wr7ndOh0CNATdOtlOikuZRQ,5401
|
|
178
180
|
maxframe/dataframe/misc/_duplicate.py,sha256=EYNv1_sKm14d91Gm4_Buxo7b5Tuy93MOvaq1TTAUkis,1516
|
|
179
181
|
maxframe/dataframe/misc/accessor.py,sha256=XtbMV6QrYb2m9oAd8swkFoKAq5mxj_QO0LVLVw5uJB4,10303
|
|
180
|
-
maxframe/dataframe/misc/apply.py,sha256=
|
|
182
|
+
maxframe/dataframe/misc/apply.py,sha256=hAuN5P9DrWVfHwXi1MZBQrAe0nRiTDHUc4nJvKC2XMk,24130
|
|
181
183
|
maxframe/dataframe/misc/astype.py,sha256=9CO4BEW98Flqk7HHWScjxRK8EdeTRgQDYcyRwEnyIB0,8033
|
|
182
184
|
maxframe/dataframe/misc/case_when.py,sha256=txasRkyfwn2QCEVZ7W0lrI3_ia0PKwBRFBy6TLrQh1I,4992
|
|
183
185
|
maxframe/dataframe/misc/check_monotonic.py,sha256=LDltdmPq90fZn8A0ucqpNy0uswKo2hJx59Y4EHSN9l4,2506
|
|
@@ -194,7 +196,7 @@ maxframe/dataframe/misc/get_dummies.py,sha256=fkoGya2HUVMlJviEfCy1toedfa_gOro_E0
|
|
|
194
196
|
maxframe/dataframe/misc/isin.py,sha256=mqce_GgIkT390glXJ4jq4JEcRYhpbJNkN6tqP-8x078,7148
|
|
195
197
|
maxframe/dataframe/misc/map.py,sha256=NSsQvOFrRvULVHPOfJk3B_tIh2IRU4IE0oOF2qkL4mE,8385
|
|
196
198
|
maxframe/dataframe/misc/melt.py,sha256=LoqZ45-J8WvXixtFEbEF1UCtZy4-E6loFtVdFghgt0A,5282
|
|
197
|
-
maxframe/dataframe/misc/memory_usage.py,sha256=
|
|
199
|
+
maxframe/dataframe/misc/memory_usage.py,sha256=3d6g2lAW7R4BV_vpUpn2-BFs9cwbEW03UH-6AEhmue0,8137
|
|
198
200
|
maxframe/dataframe/misc/pct_change.py,sha256=V4D2MH7b2EmtCHVKwYxX4wcGsuj1EBruwIXlJ5mAZ_c,4736
|
|
199
201
|
maxframe/dataframe/misc/pivot_table.py,sha256=5HmAdczDMJbznFq2omuBKjjib0WvTrohXGwCtHAMwOY,9782
|
|
200
202
|
maxframe/dataframe/misc/qcut.py,sha256=kcYhSf6m47u5zIEPgG98nE3hv57e6uuCuJs_dxpcszE,3841
|
|
@@ -207,7 +209,7 @@ maxframe/dataframe/misc/transform.py,sha256=JotPUQzKGhCLRi53sk7USU9HscNjUKCzzus9
|
|
|
207
209
|
maxframe/dataframe/misc/transpose.py,sha256=SsKRuN9Pj36D6kntnsLfzBsFHjSCiV1cZuPJuKHgbGU,3772
|
|
208
210
|
maxframe/dataframe/misc/value_counts.py,sha256=7Yd3ZSrCRDMRX093IlzdsrTJ5UUx0n_lbD5AmXLUr_U,5674
|
|
209
211
|
maxframe/dataframe/misc/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
|
|
210
|
-
maxframe/dataframe/misc/tests/test_misc.py,sha256=
|
|
212
|
+
maxframe/dataframe/misc/tests/test_misc.py,sha256=7P3-dJwsMVhD6ft5HNXorUp-SnO8o9eTTAoFGXzhiNg,16121
|
|
211
213
|
maxframe/dataframe/missing/__init__.py,sha256=DQDpYqjvXN6o6TF76wJIpf1fZICOEJskljzwDNjN80k,1866
|
|
212
214
|
maxframe/dataframe/missing/checkna.py,sha256=_Rd-HRX7lTzMV3myu745tzoTB8WIqDIJu2TcT1SfdB0,7113
|
|
213
215
|
maxframe/dataframe/missing/dropna.py,sha256=fJ7xUmhWnViyPnW6nKTF3u2dktqsuwGimSyO71mh0kk,8518
|
|
@@ -253,7 +255,7 @@ maxframe/dataframe/sort/sort_values.py,sha256=kPTaKVZzqSkMKTPLXANoK_NKK4IwShqXev
|
|
|
253
255
|
maxframe/dataframe/sort/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
|
|
254
256
|
maxframe/dataframe/sort/tests/test_sort.py,sha256=2KwQP4eyAL7rflYrbei9ocU5oum3NjiGurWirR2GzHg,2685
|
|
255
257
|
maxframe/dataframe/statistics/__init__.py,sha256=gC4z9SHj8mG1EECYiMNeGPNF3aie1AOw8UATmiLG-bo,1117
|
|
256
|
-
maxframe/dataframe/statistics/corr.py,sha256=
|
|
258
|
+
maxframe/dataframe/statistics/corr.py,sha256=ufSCKpITCR8HnKc7osxnxDwg8hvptrcKOjIeKsF4eB4,9763
|
|
257
259
|
maxframe/dataframe/statistics/quantile.py,sha256=fISgDO8cMFKn1yjCV07BpowBYsS5HYwvBZkOCdglUJU,12054
|
|
258
260
|
maxframe/dataframe/statistics/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
|
|
259
261
|
maxframe/dataframe/statistics/tests/test_statistics.py,sha256=tvk_kTcOuzRLFspidSPVoZrBVtVsbHhGb16LU-Vr3lU,2812
|
|
@@ -298,9 +300,10 @@ maxframe/learn/utils/core.py,sha256=WNDISxPFsWmjkwHwEvjVGCkAOkIftqzEQFPA_KWr7FY,
|
|
|
298
300
|
maxframe/lib/__init__.py,sha256=_PB28W40qku6YiT8fJYqdmEdRMQfelOwGeksCOZJfCc,657
|
|
299
301
|
maxframe/lib/compression.py,sha256=QQpNK79iUC9zck74I0HKMhapSRnLBXtTRyS91taEVIc,1497
|
|
300
302
|
maxframe/lib/functools_compat.py,sha256=2LTrkSw5i-z5E9XCtZzfg9-0vPrYxicKvDjnnNrAL1Q,2697
|
|
301
|
-
maxframe/lib/mmh3.cp310-win32.pyd,sha256=
|
|
303
|
+
maxframe/lib/mmh3.cp310-win32.pyd,sha256=0F-3_OYn6_WVBuChrILkC4prw34m7IdFa9wAWFca-W0,15360
|
|
304
|
+
maxframe/lib/mmh3.pyi,sha256=pkzO6SUUukCty3X-WFsuokWBtIPWyxEa06ypF9liruI,1537
|
|
302
305
|
maxframe/lib/version.py,sha256=VOVZu3KHS53YUsb_vQsT7AyHwcCWAgc-3bBqV5ANcbQ,18941
|
|
303
|
-
maxframe/lib/wrapped_pickle.py,sha256=
|
|
306
|
+
maxframe/lib/wrapped_pickle.py,sha256=Akx-qhMMJJ6VVzQYrcVO_umFjx0IR-Yzb1XqyOS1Mio,3976
|
|
304
307
|
maxframe/lib/aio/__init__.py,sha256=xzIYnV42_7CYuDTTv8svscIXQeJMF0nn8AXMbpv173M,963
|
|
305
308
|
maxframe/lib/aio/_runners.py,sha256=zhDC92KxrYxLEufo5Hk8QU-mTVOxNL7IM9pZXas_nDg,5367
|
|
306
309
|
maxframe/lib/aio/_threads.py,sha256=cDaEKg5STncq9QTPUUwehJ722vgueqBoB1C-NeoHN8E,1363
|
|
@@ -361,22 +364,22 @@ maxframe/remote/core.py,sha256=w_eTDEs0O7iIzLn1YrMGh2gcNAzzbqV0mx2bRT7su_U,7001
|
|
|
361
364
|
maxframe/remote/run_script.py,sha256=k93-vaFLUanWoBRai4-78DX_SLeZ8_rbbxcCtOIXZO8,3677
|
|
362
365
|
maxframe/serialization/__init__.py,sha256=nxxU7CI6MRcL3sjA1KmLkpTGKA3KG30FKl-MJJ0MCdI,947
|
|
363
366
|
maxframe/serialization/arrow.py,sha256=OMeDjLcPgagqzokG7g3Vhwm6Xw1j-Kph1V2QsIwi6dw,3513
|
|
364
|
-
maxframe/serialization/core.cp310-win32.pyd,sha256=
|
|
365
|
-
maxframe/serialization/core.pxd,sha256=
|
|
366
|
-
maxframe/serialization/core.pyi,sha256=
|
|
367
|
-
maxframe/serialization/core.pyx,sha256=
|
|
368
|
-
maxframe/serialization/exception.py,sha256=
|
|
367
|
+
maxframe/serialization/core.cp310-win32.pyd,sha256=cYpfjKq3dhpnE3OLjxJzexOlnobagxl08OD20hnISOs,357888
|
|
368
|
+
maxframe/serialization/core.pxd,sha256=KioRiFhr5DTuqXnS2imJ3djWfSv2IAmhnz-kAFPgU6A,1548
|
|
369
|
+
maxframe/serialization/core.pyi,sha256=ELDG44v8O7A7RfURExMfVEJENuaEYHTwgJ-vzlH2Vh4,2206
|
|
370
|
+
maxframe/serialization/core.pyx,sha256=4iyUotIVV8CkVhHo3RyotDP1E7M2C1KMb0_40Ex_h1c,36321
|
|
371
|
+
maxframe/serialization/exception.py,sha256=noFTo9iwQje8Q0XnJV21J6bkbYahyoFLQSdl-OXNRIs,3079
|
|
369
372
|
maxframe/serialization/maxframe_objects.py,sha256=ZHyvxIALoPuB_y3CRc70hZXyfdj4IhaKMXUEYLXHQag,1404
|
|
370
373
|
maxframe/serialization/numpy.py,sha256=ENrFKl24mtYyO1vZRLwHvMD0r4z_UI7J2-yNlmfWSdk,3304
|
|
371
|
-
maxframe/serialization/pandas.py,sha256=
|
|
374
|
+
maxframe/serialization/pandas.py,sha256=wqRcZhUd5tMi__7kmvhW1_-DdhBLnW00kz0hDrUvmEY,7522
|
|
372
375
|
maxframe/serialization/scipy.py,sha256=fGwQ5ZreymrMT8g7TneATfFdKFF7YPNZQqgWgMa3J8M,2498
|
|
373
376
|
maxframe/serialization/serializables/__init__.py,sha256=rlQhIaSAVzz4KYkc5shEHFZDPd6WDMPkxalU76yjJ3M,1406
|
|
374
|
-
maxframe/serialization/serializables/core.py,sha256=
|
|
377
|
+
maxframe/serialization/serializables/core.py,sha256=9XPxeVY33xrT77JVpO5uBc-olKn3bu8mdj58U1L4R0k,14165
|
|
375
378
|
maxframe/serialization/serializables/field.py,sha256=DVott3HAbne4UvN-heSFS9gSl0wCxV5RssS738FCjzk,16639
|
|
376
379
|
maxframe/serialization/serializables/field_type.py,sha256=hkxrXT2SL_tATuobtJDfL4DzzVP2hJjDlC3PrJg6ZKo,15454
|
|
377
380
|
maxframe/serialization/serializables/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
|
|
378
381
|
maxframe/serialization/serializables/tests/test_field_type.py,sha256=uG87-bdG8xGmjrubEHCww1ZKmRupSvnNKnZoV2SnwYM,4502
|
|
379
|
-
maxframe/serialization/serializables/tests/test_serializable.py,sha256=
|
|
382
|
+
maxframe/serialization/serializables/tests/test_serializable.py,sha256=w5r-WC-8Zi1xAO1AfxdkjGcbGHZ8G5B-z_-d47Fje-A,10159
|
|
380
383
|
maxframe/serialization/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
|
|
381
384
|
maxframe/serialization/tests/test_serial.py,sha256=9G2CbPBHINwcZ038pRwZON_OtH-JVXZ8w66BLYWP578,12923
|
|
382
385
|
maxframe/tensor/__init__.py,sha256=lY_GZBClz2MIGwaMerP2DvbsUbC5crCel_kwkeuiyX4,3702
|
|
@@ -484,14 +487,14 @@ maxframe/tensor/arithmetic/truediv.py,sha256=xrsN8Z-q6msst9S8-469XQFgrs7T4RTkaym
|
|
|
484
487
|
maxframe/tensor/arithmetic/trunc.py,sha256=3z8jme9ZpPU8TqNo2ioViqJa7ThNK9KOVX1wl-R0a7M,2375
|
|
485
488
|
maxframe/tensor/arithmetic/utils.py,sha256=Kc3xqbIK9uRhHhDKFwAj-mW7SRljajfK9UOMyXyCHCY,2304
|
|
486
489
|
maxframe/tensor/arithmetic/tests/__init__.py,sha256=_PB28W40qku6YiT8fJYqdmEdRMQfelOwGeksCOZJfCc,657
|
|
487
|
-
maxframe/tensor/arithmetic/tests/test_arithmetic.py,sha256=
|
|
490
|
+
maxframe/tensor/arithmetic/tests/test_arithmetic.py,sha256=fAkVgixF-WfRZHGujGmB_s5llwiL1DDdvxcAsWPYfEY,11409
|
|
488
491
|
maxframe/tensor/base/__init__.py,sha256=qVf97u2J74RSjCmkF-7N-ylxWUc6mbiPPWpDe45vRmQ,1113
|
|
489
492
|
maxframe/tensor/base/astype.py,sha256=fzj0o3pJMVaSEEKMR-JBsd2FktlSa9ABtpt-fcWKio0,4513
|
|
490
|
-
maxframe/tensor/base/atleast_1d.py,sha256=
|
|
493
|
+
maxframe/tensor/base/atleast_1d.py,sha256=_d7xamputAAHFY8v0Ayc8ILMdqS6fLZYhWQLOh_LFmc,1992
|
|
491
494
|
maxframe/tensor/base/broadcast_to.py,sha256=V-OB8YSbMfkMP2JpbiIQ0A9PrC-OHfaWzrntf5AOEwo,2775
|
|
492
495
|
maxframe/tensor/base/ravel.py,sha256=P9SCDU-UUHzd1HqZbodBSgKjtjiOFkyfLV_G9LFnz_U,3265
|
|
493
496
|
maxframe/tensor/base/transpose.py,sha256=yMK1KzxguKZOWxT3oMo5GchjB-1Yakilp2rEX3QlxFM,3539
|
|
494
|
-
maxframe/tensor/base/unique.py,sha256=
|
|
497
|
+
maxframe/tensor/base/unique.py,sha256=GYLorbwtjCKCTzkbFWk-zaUORU2mQJ2nbXDi2Wr-IP8,6943
|
|
495
498
|
maxframe/tensor/base/where.py,sha256=cSg1mDhiOBB4F0Soh_uVw3yeSve9pfEhPSIDadc-wto,4127
|
|
496
499
|
maxframe/tensor/base/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
|
|
497
500
|
maxframe/tensor/base/tests/test_base.py,sha256=i9TneozyHCHDhO438U285KS6tdh0Zks8mgkRm3fsHxk,2957
|
|
@@ -588,7 +591,7 @@ maxframe/tensor/reduction/argmax.py,sha256=UqPBCgnyLFpIjaNPWxcyLGynpOzYnaVj23PQy
|
|
|
588
591
|
maxframe/tensor/reduction/argmin.py,sha256=Gy_O7kEcJosGQImqkR5S7N5ygs-bXnYcpljj3TSe5Ho,3202
|
|
589
592
|
maxframe/tensor/reduction/array_equal.py,sha256=1otUnsacNdSgkdP1hHs3NcAdqtJNyY3F1oOVItrmv70,1859
|
|
590
593
|
maxframe/tensor/reduction/core.py,sha256=NwASayI1P1uCCFCyNltH-cVezefW3Th2qS6viSuSKMQ,5257
|
|
591
|
-
maxframe/tensor/reduction/count_nonzero.py,sha256=
|
|
594
|
+
maxframe/tensor/reduction/count_nonzero.py,sha256=82Q6vm4_2eFcdFsPSUw6PD1eUV_4geKVckvs7GnRsfE,2802
|
|
592
595
|
maxframe/tensor/reduction/cumprod.py,sha256=zitvIvh2Sb4iL7yL2Spenoe7NQndV9LJ4qrejd_ul48,3369
|
|
593
596
|
maxframe/tensor/reduction/cumsum.py,sha256=IUOvbrVEgjDOdd3nsxnDy3Fx0eJC0EfOGt0PIfik_PM,3592
|
|
594
597
|
maxframe/tensor/reduction/max.py,sha256=8B5k9n89orftEYLI_Lwl10O0zbN6vq5SxUpX0W9L7Bo,4099
|
|
@@ -622,26 +625,25 @@ maxframe/tensor/ufunc/__init__.py,sha256=8QUi-cPvvbsD7i7LOeZ9sc0v1XXd7lt-XV5pQKb
|
|
|
622
625
|
maxframe/tensor/ufunc/ufunc.py,sha256=XRtGlhdrW7H--mrc8fTBOlUP0mzKpd9tdRtCuLDymtc,7383
|
|
623
626
|
maxframe/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
|
|
624
627
|
maxframe/tests/test_codegen.py,sha256=h3TKqP4zghxTn1twH7gR9jOe6NKXdCC1B4u0chlUrpY,2277
|
|
625
|
-
maxframe/tests/test_protocol.py,sha256=
|
|
626
|
-
maxframe/tests/test_utils.py,sha256=
|
|
627
|
-
maxframe/tests/utils.py,sha256=
|
|
628
|
-
maxframe_client/__init__.py,sha256=
|
|
628
|
+
maxframe/tests/test_protocol.py,sha256=JkvsgGnbVSLu3VsUd_XT_qstcHPnKLzmoDBEXetaWT8,6281
|
|
629
|
+
maxframe/tests/test_utils.py,sha256=5Z2cym1tlpnF73f4I3WC1eBocsbNEDGzDErJL_fKWx8,11868
|
|
630
|
+
maxframe/tests/utils.py,sha256=nZeSDh0jLWo1hKPkuq8Y2uwQhLwjaKok4wcnq9vhyn8,4740
|
|
631
|
+
maxframe_client/__init__.py,sha256=hIVOnxj6AoN2zIMxQCzRb10k0LSoYS_DrQevXO9KPBg,705
|
|
629
632
|
maxframe_client/conftest.py,sha256=UWWMYjmohHL13hLl4adb0gZPLRdBVOYVvsFo6VZruI0,658
|
|
630
633
|
maxframe_client/fetcher.py,sha256=yFP6Hgz01-qPqBwmTX5-5ECU-G6q-TX5SUktplcJgcU,9213
|
|
631
634
|
maxframe_client/clients/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
|
|
632
635
|
maxframe_client/clients/framedriver.py,sha256=upN6C1eZrCpLTsS6fihWOMy392psWfo0bw2XgSLI_Yg,4581
|
|
633
|
-
maxframe_client/clients/spe.py,sha256=uizNBejhU_FrMhsgsFgDnq7gL7Cxk803LeLYmr3nmxs,3697
|
|
634
636
|
maxframe_client/session/__init__.py,sha256=9zFCd3zkSADESAFc4SPoQ2nkvRwsIhhpNNO2TtSaWbU,854
|
|
635
637
|
maxframe_client/session/consts.py,sha256=nD-D0zHXumbQI8w3aUyltJS59K5ftipf3xCtHNLmtc8,1380
|
|
636
638
|
maxframe_client/session/graph.py,sha256=GSZaJ-PV4DK8bTcNtoSoY5kDTyyIRAKleh4tOCSUbsI,4470
|
|
637
|
-
maxframe_client/session/odps.py,sha256=
|
|
638
|
-
maxframe_client/session/task.py,sha256=
|
|
639
|
+
maxframe_client/session/odps.py,sha256=rOQJokPpA_hczjWsXyvYnl9m9o1DlZLMnoDIsQtmbnc,19885
|
|
640
|
+
maxframe_client/session/task.py,sha256=8_ZN2xbMdkRy2XdgJpEmB35vhGxfL0Qluzd0NVTjPwE,11402
|
|
639
641
|
maxframe_client/session/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
|
|
640
642
|
maxframe_client/session/tests/test_task.py,sha256=861usEURVXeTUzfJYZmBfwsHfZFexG23mMtT5IJOOm4,3364
|
|
641
643
|
maxframe_client/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
|
|
642
644
|
maxframe_client/tests/test_fetcher.py,sha256=7iYXLMIoCJLfgUkjB2HBkV-sqQ-xGlhtzfp9hRJz_kM,3605
|
|
643
|
-
maxframe_client/tests/test_session.py,sha256=
|
|
644
|
-
maxframe-0.
|
|
645
|
-
maxframe-0.
|
|
646
|
-
maxframe-0.
|
|
647
|
-
maxframe-0.
|
|
645
|
+
maxframe_client/tests/test_session.py,sha256=ZrZCYVbqtCOJZigGoyGube-EtLYE8SQxTSckbMQmgds,9616
|
|
646
|
+
maxframe-1.0.0rc1.dist-info/METADATA,sha256=lbj0kDpDDcdf43LuG_y2tgyKSs38tbOE0YeufvQWk84,3157
|
|
647
|
+
maxframe-1.0.0rc1.dist-info/WHEEL,sha256=RyLtD17TRXemRgS90DEnpEXWZB9e6GGH4dvD03N_Jp0,98
|
|
648
|
+
maxframe-1.0.0rc1.dist-info/top_level.txt,sha256=64x-fc2q59c_vXwNUkehyjF1vb8JWqFSdYmUqIFqoTM,31
|
|
649
|
+
maxframe-1.0.0rc1.dist-info/RECORD,,
|
maxframe_client/__init__.py
CHANGED
maxframe_client/session/odps.py
CHANGED
|
@@ -31,6 +31,11 @@ from maxframe.dataframe import read_odps_table
|
|
|
31
31
|
from maxframe.dataframe.core import DATAFRAME_TYPE, SERIES_TYPE
|
|
32
32
|
from maxframe.dataframe.datasource import PandasDataSourceOperator
|
|
33
33
|
from maxframe.dataframe.datasource.read_odps_table import DataFrameReadODPSTable
|
|
34
|
+
from maxframe.errors import (
|
|
35
|
+
MaxFrameError,
|
|
36
|
+
NoTaskServerResponseError,
|
|
37
|
+
SessionAlreadyClosedError,
|
|
38
|
+
)
|
|
34
39
|
from maxframe.odpsio import HaloTableIO, pandas_to_arrow, pandas_to_odps_schema
|
|
35
40
|
from maxframe.protocol import (
|
|
36
41
|
DagInfo,
|
|
@@ -144,10 +149,15 @@ class MaxFrameSession(ToThreadMixin, IsolatedAsyncSession):
|
|
|
144
149
|
|
|
145
150
|
schema, table_meta = pandas_to_odps_schema(t, unknown_as_string=True)
|
|
146
151
|
if self._odps_entry.exist_table(table_meta.table_name):
|
|
147
|
-
self._odps_entry.delete_table(
|
|
152
|
+
self._odps_entry.delete_table(
|
|
153
|
+
table_meta.table_name, hints=options.sql.settings
|
|
154
|
+
)
|
|
148
155
|
table_name = build_temp_table_name(self.session_id, t.key)
|
|
149
156
|
table_obj = self._odps_entry.create_table(
|
|
150
|
-
table_name,
|
|
157
|
+
table_name,
|
|
158
|
+
schema,
|
|
159
|
+
lifecycle=options.session.temp_table_lifecycle,
|
|
160
|
+
hints=options.sql.settings,
|
|
151
161
|
)
|
|
152
162
|
|
|
153
163
|
data = t.op.get_data()
|
|
@@ -264,8 +274,10 @@ class MaxFrameSession(ToThreadMixin, IsolatedAsyncSession):
|
|
|
264
274
|
self, dag_info: DagInfo, tileables: List, progress: Progress
|
|
265
275
|
):
|
|
266
276
|
start_time = time.time()
|
|
277
|
+
session_id = dag_info.session_id
|
|
267
278
|
dag_id = dag_info.dag_id
|
|
268
279
|
wait_timeout = 10
|
|
280
|
+
server_no_response_time = None
|
|
269
281
|
with enter_mode(build=True, kernel=True):
|
|
270
282
|
key_to_tileables = {t.key: t for t in tileables}
|
|
271
283
|
|
|
@@ -280,9 +292,37 @@ class MaxFrameSession(ToThreadMixin, IsolatedAsyncSession):
|
|
|
280
292
|
if timeout_val <= 0:
|
|
281
293
|
raise TimeoutError("Running DAG timed out")
|
|
282
294
|
|
|
283
|
-
|
|
284
|
-
self.
|
|
285
|
-
|
|
295
|
+
try:
|
|
296
|
+
dag_info: DagInfo = await self.ensure_async_call(
|
|
297
|
+
self._caller.get_dag_info, dag_id
|
|
298
|
+
)
|
|
299
|
+
server_no_response_time = None
|
|
300
|
+
except (NoTaskServerResponseError, SessionAlreadyClosedError) as ex:
|
|
301
|
+
# when we receive SessionAlreadyClosedError after NoTaskServerResponseError
|
|
302
|
+
# is received, it is possible that task server is restarted and
|
|
303
|
+
# SessionAlreadyClosedError might be flaky. Otherwise, the error
|
|
304
|
+
# should be raised.
|
|
305
|
+
if (
|
|
306
|
+
isinstance(ex, SessionAlreadyClosedError)
|
|
307
|
+
and not server_no_response_time
|
|
308
|
+
):
|
|
309
|
+
raise
|
|
310
|
+
server_no_response_time = server_no_response_time or time.time()
|
|
311
|
+
if (
|
|
312
|
+
time.time() - server_no_response_time
|
|
313
|
+
> options.client.task_restart_timeout
|
|
314
|
+
):
|
|
315
|
+
raise MaxFrameError(
|
|
316
|
+
"Failed to get valid response from service. "
|
|
317
|
+
f"Session {self._session_id}."
|
|
318
|
+
) from None
|
|
319
|
+
await asyncio.sleep(timeout_val)
|
|
320
|
+
continue
|
|
321
|
+
|
|
322
|
+
if dag_info is None:
|
|
323
|
+
raise SystemError(
|
|
324
|
+
f"Cannot find DAG with ID {dag_id} in session {session_id}"
|
|
325
|
+
)
|
|
286
326
|
progress.value = dag_info.progress
|
|
287
327
|
if dag_info.status != DagStatus.RUNNING:
|
|
288
328
|
break
|