maxframe 0.1.0b4__cp311-cp311-win32.whl → 0.1.0b5__cp311-cp311-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/__init__.py +1 -0
- maxframe/_utils.cp311-win32.pyd +0 -0
- maxframe/codegen.py +46 -1
- maxframe/config/config.py +11 -1
- maxframe/core/graph/core.cp311-win32.pyd +0 -0
- maxframe/dataframe/__init__.py +1 -0
- maxframe/dataframe/core.py +30 -8
- maxframe/dataframe/datasource/read_odps_query.py +3 -1
- maxframe/dataframe/datasource/read_odps_table.py +3 -1
- maxframe/dataframe/misc/__init__.py +4 -0
- maxframe/dataframe/misc/apply.py +1 -1
- maxframe/dataframe/misc/case_when.py +141 -0
- maxframe/dataframe/misc/pivot_table.py +262 -0
- maxframe/dataframe/misc/tests/test_misc.py +61 -0
- maxframe/dataframe/plotting/core.py +2 -2
- maxframe/dataframe/reduction/core.py +2 -1
- maxframe/dataframe/utils.py +7 -0
- maxframe/learn/contrib/utils.py +52 -0
- maxframe/learn/contrib/xgboost/__init__.py +26 -0
- maxframe/learn/contrib/xgboost/classifier.py +86 -0
- maxframe/learn/contrib/xgboost/core.py +156 -0
- maxframe/learn/contrib/xgboost/dmatrix.py +150 -0
- maxframe/learn/contrib/xgboost/predict.py +138 -0
- maxframe/learn/contrib/xgboost/regressor.py +78 -0
- maxframe/learn/contrib/xgboost/tests/__init__.py +13 -0
- maxframe/learn/contrib/xgboost/tests/test_core.py +43 -0
- maxframe/learn/contrib/xgboost/train.py +121 -0
- maxframe/learn/utils/__init__.py +15 -0
- maxframe/learn/utils/core.py +29 -0
- maxframe/lib/mmh3.cp311-win32.pyd +0 -0
- maxframe/odpsio/arrow.py +2 -3
- maxframe/odpsio/tableio.py +22 -0
- maxframe/odpsio/tests/test_schema.py +16 -11
- maxframe/opcodes.py +3 -0
- maxframe/serialization/core.cp311-win32.pyd +0 -0
- maxframe/serialization/core.pyi +61 -0
- maxframe/session.py +28 -0
- maxframe/tensor/__init__.py +1 -1
- maxframe/tensor/base/__init__.py +2 -0
- maxframe/tensor/base/atleast_1d.py +74 -0
- maxframe/tensor/base/unique.py +205 -0
- maxframe/tensor/datasource/array.py +4 -2
- maxframe/tensor/datasource/scalar.py +1 -1
- maxframe/udf.py +63 -3
- maxframe/utils.py +6 -0
- {maxframe-0.1.0b4.dist-info → maxframe-0.1.0b5.dist-info}/METADATA +2 -2
- {maxframe-0.1.0b4.dist-info → maxframe-0.1.0b5.dist-info}/RECORD +53 -36
- maxframe_client/fetcher.py +65 -3
- maxframe_client/session/odps.py +30 -1
- maxframe_client/session/task.py +26 -53
- maxframe_client/tests/test_session.py +28 -1
- {maxframe-0.1.0b4.dist-info → maxframe-0.1.0b5.dist-info}/WHEEL +0 -0
- {maxframe-0.1.0b4.dist-info → maxframe-0.1.0b5.dist-info}/top_level.txt +0 -0
maxframe/udf.py
CHANGED
|
@@ -12,21 +12,51 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
+
import shlex
|
|
15
16
|
from typing import Callable, List, Optional, Union
|
|
16
17
|
|
|
17
18
|
from odps.models import Resource
|
|
18
19
|
|
|
19
20
|
from .serialization.serializables import (
|
|
21
|
+
BoolField,
|
|
20
22
|
FieldTypes,
|
|
21
23
|
FunctionField,
|
|
22
24
|
ListField,
|
|
23
25
|
Serializable,
|
|
26
|
+
StringField,
|
|
24
27
|
)
|
|
28
|
+
from .utils import tokenize
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class PythonPackOptions(Serializable):
|
|
32
|
+
key = StringField("key")
|
|
33
|
+
requirements = ListField("requirements", FieldTypes.string, default_factory=list)
|
|
34
|
+
force_rebuild = BoolField("force_rebuild", default=False)
|
|
35
|
+
prefer_binary = BoolField("prefer_binary", default=False)
|
|
36
|
+
pre_release = BoolField("pre_release", default=False)
|
|
37
|
+
pack_instance_id = StringField("pack_instance_id", default=None)
|
|
38
|
+
|
|
39
|
+
def __init__(self, key: str = None, **kw):
|
|
40
|
+
super().__init__(key=key, **kw)
|
|
41
|
+
if self.key is None:
|
|
42
|
+
args = {
|
|
43
|
+
"force_rebuild": self.force_rebuild,
|
|
44
|
+
"prefer_binary": self.prefer_binary,
|
|
45
|
+
"pre_release": self.pre_release,
|
|
46
|
+
}
|
|
47
|
+
self.key = tokenize(set(self.requirements), args)
|
|
48
|
+
|
|
49
|
+
def __repr__(self):
|
|
50
|
+
return (
|
|
51
|
+
f"<PythonPackOptions {self.requirements} force_rebuild={self.force_rebuild} "
|
|
52
|
+
f"prefer_binary={self.prefer_binary} pre_release={self.pre_release}>"
|
|
53
|
+
)
|
|
25
54
|
|
|
26
55
|
|
|
27
56
|
class MarkedFunction(Serializable):
|
|
28
57
|
func = FunctionField("func")
|
|
29
58
|
resources = ListField("resources", FieldTypes.string, default_factory=list)
|
|
59
|
+
pythonpacks = ListField("pythonpacks", FieldTypes.reference, default_factory=list)
|
|
30
60
|
|
|
31
61
|
def __init__(self, func: Optional[Callable] = None, **kw):
|
|
32
62
|
super().__init__(func=func, **kw)
|
|
@@ -54,13 +84,39 @@ def with_resources(*resources: Union[str, Resource], use_wrapper_class: bool = T
|
|
|
54
84
|
def func_wrapper(func):
|
|
55
85
|
str_resources = [res_to_str(r) for r in resources]
|
|
56
86
|
if not use_wrapper_class:
|
|
57
|
-
func
|
|
87
|
+
existing = getattr(func, "resources") or []
|
|
88
|
+
func.resources = existing + str_resources
|
|
89
|
+
return func
|
|
90
|
+
|
|
91
|
+
if isinstance(func, MarkedFunction):
|
|
92
|
+
func.resources = func.resources + str_resources
|
|
58
93
|
return func
|
|
94
|
+
return MarkedFunction(func, resources=str_resources)
|
|
95
|
+
|
|
96
|
+
return func_wrapper
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
def with_python_requirements(
|
|
100
|
+
*requirements: str,
|
|
101
|
+
force_rebuild: bool = False,
|
|
102
|
+
prefer_binary: bool = False,
|
|
103
|
+
pre_release: bool = False,
|
|
104
|
+
):
|
|
105
|
+
result_req = []
|
|
106
|
+
for req in requirements:
|
|
107
|
+
result_req.extend(shlex.split(req))
|
|
59
108
|
|
|
109
|
+
def func_wrapper(func):
|
|
110
|
+
pack_item = PythonPackOptions(
|
|
111
|
+
requirements=requirements,
|
|
112
|
+
force_rebuild=force_rebuild,
|
|
113
|
+
prefer_binary=prefer_binary,
|
|
114
|
+
pre_release=pre_release,
|
|
115
|
+
)
|
|
60
116
|
if isinstance(func, MarkedFunction):
|
|
61
|
-
func.
|
|
117
|
+
func.pythonpacks.append(pack_item)
|
|
62
118
|
return func
|
|
63
|
-
return MarkedFunction(func,
|
|
119
|
+
return MarkedFunction(func, pythonpacks=[pack_item])
|
|
64
120
|
|
|
65
121
|
return func_wrapper
|
|
66
122
|
|
|
@@ -72,3 +128,7 @@ def get_udf_resources(
|
|
|
72
128
|
func: Callable,
|
|
73
129
|
) -> List[Union[Resource, str]]:
|
|
74
130
|
return getattr(func, "resources", None) or []
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
def get_udf_pythonpacks(func: Callable) -> List[PythonPackOptions]:
|
|
134
|
+
return getattr(func, "pythonpacks", None) or []
|
maxframe/utils.py
CHANGED
|
@@ -1106,3 +1106,9 @@ def get_python_tag():
|
|
|
1106
1106
|
# todo add implementation suffix for non-GIL tags when PEP703 is ready
|
|
1107
1107
|
version_info = sys.version_info
|
|
1108
1108
|
return f"cp{version_info[0]}{version_info[1]}"
|
|
1109
|
+
|
|
1110
|
+
|
|
1111
|
+
def get_item_if_scalar(val: Any) -> Any:
|
|
1112
|
+
if isinstance(val, np.ndarray) and val.shape == ():
|
|
1113
|
+
return val.item()
|
|
1114
|
+
return val
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: maxframe
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.0b5
|
|
4
4
|
Summary: MaxFrame operator-based data analyze framework
|
|
5
5
|
Requires-Dist: numpy >=1.19.0
|
|
6
6
|
Requires-Dist: pandas >=1.0.0
|
|
7
|
-
Requires-Dist: pyodps >=0.11.
|
|
7
|
+
Requires-Dist: pyodps >=0.11.6.1
|
|
8
8
|
Requires-Dist: scipy >=1.0
|
|
9
9
|
Requires-Dist: pyarrow >=1.0.0
|
|
10
10
|
Requires-Dist: msgpack >=1.0.0
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
maxframe/__init__.py,sha256=
|
|
2
|
-
maxframe/_utils.cp311-win32.pyd,sha256=
|
|
1
|
+
maxframe/__init__.py,sha256=RujkARDvD6mhFpR330UQ0UfogvIdae5EjR1euFpTiYA,1036
|
|
2
|
+
maxframe/_utils.cp311-win32.pyd,sha256=q0xNszR_ABV4muNQBF4eVjQUyWnnfz9itc-qYtgqKY4,269312
|
|
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=bkOqyLYo_8sJ_zPZK-T9JMvBeKkntqb1Oona9l2aNio,18044
|
|
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=
|
|
11
|
+
maxframe/opcodes.py,sha256=4Gj2svgrNNxylfUbQYs8WbDqTpoCoLtlNCtAYdHr-BU,10781
|
|
12
12
|
maxframe/protocol.py,sha256=N4i0ggLY131gwnxOrCgKeZwzhLKSRB171cx1lWRvUcw,14605
|
|
13
|
-
maxframe/session.py,sha256=
|
|
13
|
+
maxframe/session.py,sha256=CfDT2iwjl5NAisPrZ6LF0xG_hr75Wr0cfHd6rvtHajw,37515
|
|
14
14
|
maxframe/typing_.py,sha256=pAgOhHHSM376N7PJLtNXvS5LHNYywz5dIjnA_hHRWSM,1133
|
|
15
|
-
maxframe/udf.py,sha256=
|
|
16
|
-
maxframe/utils.py,sha256=
|
|
15
|
+
maxframe/udf.py,sha256=GJre7snHQxkoyUWX0rpDkrGGU8-qA-SmSe2H9nSMEfo,4422
|
|
16
|
+
maxframe/utils.py,sha256=T_2JIUKG4sWNbrZ_2hf4RWBSRlTQMxW1XnbdudEQPrI,35358
|
|
17
17
|
maxframe/config/__init__.py,sha256=AHo3deaCm1JnbbRX_udboJEDYrYytdvivp9RFxJcumI,671
|
|
18
|
-
maxframe/config/config.py,sha256=
|
|
18
|
+
maxframe/config/config.py,sha256=ChDD61-POFvc_wTmfrQaK-8leKV2huiGgnQvi9IsUAk,14019
|
|
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
|
|
@@ -33,7 +33,7 @@ maxframe/core/entity/output_types.py,sha256=NnNeDBVAEhD8dtPBWzpM7n6s8neVFrahjd0z
|
|
|
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.cp311-win32.pyd,sha256=
|
|
36
|
+
maxframe/core/graph/core.cp311-win32.pyd,sha256=0WjCFaihmewTFIUCr9u4XIwfFZ2K5dVA44ixy5fmKbw,211968
|
|
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,12 +54,12 @@ 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=6wzq6JcohLtvR9kkE2Pc476ExNGslCFRijKFE_R6PB8,2318
|
|
58
58
|
maxframe/dataframe/arrays.py,sha256=rOvhxMQars9E3SOYSu0ygBuuRVY0QV6xzengnMqKs4s,29616
|
|
59
|
-
maxframe/dataframe/core.py,sha256=
|
|
59
|
+
maxframe/dataframe/core.py,sha256=fOrn9ehPmZnymO-r586jpWW9DTMGt7HWvFMwv-JOrjM,76830
|
|
60
60
|
maxframe/dataframe/initializer.py,sha256=WW96yQjquofNFt6RPZvgWW4SBmH0OEDj8-BxpuyKThY,10552
|
|
61
61
|
maxframe/dataframe/operators.py,sha256=jl611oPN5TGpf6UDuIwcLUsjmTcbVBNLLd6cvq8TvKo,8144
|
|
62
|
-
maxframe/dataframe/utils.py,sha256=
|
|
62
|
+
maxframe/dataframe/utils.py,sha256=nYpTY5TmpJGs2_1VQBNxR_6miPTcdpIbqgw0aqh1Axo,45539
|
|
63
63
|
maxframe/dataframe/arithmetic/__init__.py,sha256=MPnITPuO7DDjAMTBawpennv6D0V9AnT6oF0nz2KUIqc,12837
|
|
64
64
|
maxframe/dataframe/arithmetic/abs.py,sha256=EgyzciSwjE_I3ZBuzeVJFVzBHsxn9MWzCtvHgyEl6ek,1016
|
|
65
65
|
maxframe/dataframe/arithmetic/add.py,sha256=wbmfAZgxjuP02ZUV4-VEsNhJlyo9tytXwkEx65ahuxI,1766
|
|
@@ -119,8 +119,8 @@ 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=6Z8yCSIG96PJFq8B3wk2D29xGedj7y3vV24vGbpoSUA,10269
|
|
123
|
+
maxframe/dataframe/datasource/read_odps_table.py,sha256=d_8jeOMuxyo69l2BYR_kSMI6Ixv25BtqF95YtY9r1Pk,9425
|
|
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
|
|
@@ -174,11 +174,12 @@ maxframe/dataframe/merge/concat.py,sha256=cIlwVguZTWFx6GX5fTZ3YctKNkn9wP72TpbxKR
|
|
|
174
174
|
maxframe/dataframe/merge/merge.py,sha256=2bqjWlpW_EAbeyYhzQo1nKJ3l7DZJoSuxFmTfHej1X4,22231
|
|
175
175
|
maxframe/dataframe/merge/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
|
|
176
176
|
maxframe/dataframe/merge/tests/test_merge.py,sha256=Mkk2f_NnxPqtG_2AyeG_Bt-CdY-JOcNuJ9ADCDA30H4,7480
|
|
177
|
-
maxframe/dataframe/misc/__init__.py,sha256=
|
|
177
|
+
maxframe/dataframe/misc/__init__.py,sha256=Lq82VMR4qWhYD1lYTbj8Wr7ndOh0CNATdOtlOikuZRQ,5401
|
|
178
178
|
maxframe/dataframe/misc/_duplicate.py,sha256=EYNv1_sKm14d91Gm4_Buxo7b5Tuy93MOvaq1TTAUkis,1516
|
|
179
179
|
maxframe/dataframe/misc/accessor.py,sha256=XtbMV6QrYb2m9oAd8swkFoKAq5mxj_QO0LVLVw5uJB4,10303
|
|
180
|
-
maxframe/dataframe/misc/apply.py,sha256=
|
|
180
|
+
maxframe/dataframe/misc/apply.py,sha256=HnKJP8EtN8LxALiMaLUp7qrI9dcdj6b7TwXmGe_jV8Y,24058
|
|
181
181
|
maxframe/dataframe/misc/astype.py,sha256=9CO4BEW98Flqk7HHWScjxRK8EdeTRgQDYcyRwEnyIB0,8033
|
|
182
|
+
maxframe/dataframe/misc/case_when.py,sha256=txasRkyfwn2QCEVZ7W0lrI3_ia0PKwBRFBy6TLrQh1I,4992
|
|
182
183
|
maxframe/dataframe/misc/check_monotonic.py,sha256=LDltdmPq90fZn8A0ucqpNy0uswKo2hJx59Y4EHSN9l4,2506
|
|
183
184
|
maxframe/dataframe/misc/cut.py,sha256=dOKWwd1D2CYU9LVQvfonMrD8E2eGeBONZvWN1ArCfMM,14288
|
|
184
185
|
maxframe/dataframe/misc/datetimes.py,sha256=zR99O-8EKKWt4UtNdPI22K8N9mP9XSs9lDQLBPEmFlo,2582
|
|
@@ -195,6 +196,7 @@ maxframe/dataframe/misc/map.py,sha256=NSsQvOFrRvULVHPOfJk3B_tIh2IRU4IE0oOF2qkL4m
|
|
|
195
196
|
maxframe/dataframe/misc/melt.py,sha256=LoqZ45-J8WvXixtFEbEF1UCtZy4-E6loFtVdFghgt0A,5282
|
|
196
197
|
maxframe/dataframe/misc/memory_usage.py,sha256=B_UnQKJW62KQMv2VHlZSjlREFdD6t6qT24x4XTcTTMU,8145
|
|
197
198
|
maxframe/dataframe/misc/pct_change.py,sha256=V4D2MH7b2EmtCHVKwYxX4wcGsuj1EBruwIXlJ5mAZ_c,4736
|
|
199
|
+
maxframe/dataframe/misc/pivot_table.py,sha256=5HmAdczDMJbznFq2omuBKjjib0WvTrohXGwCtHAMwOY,9782
|
|
198
200
|
maxframe/dataframe/misc/qcut.py,sha256=kcYhSf6m47u5zIEPgG98nE3hv57e6uuCuJs_dxpcszE,3841
|
|
199
201
|
maxframe/dataframe/misc/select_dtypes.py,sha256=qsrWW8BNBd-hAT1yIlrnbvBjfbzZyttzch7bxKgRkCg,3248
|
|
200
202
|
maxframe/dataframe/misc/shift.py,sha256=HCGKBuToksgu5LZR_k5eaQrdyrXCeqRZYbZs0J5-N6s,9191
|
|
@@ -205,7 +207,7 @@ maxframe/dataframe/misc/transform.py,sha256=JotPUQzKGhCLRi53sk7USU9HscNjUKCzzus9
|
|
|
205
207
|
maxframe/dataframe/misc/transpose.py,sha256=SsKRuN9Pj36D6kntnsLfzBsFHjSCiV1cZuPJuKHgbGU,3772
|
|
206
208
|
maxframe/dataframe/misc/value_counts.py,sha256=7Yd3ZSrCRDMRX093IlzdsrTJ5UUx0n_lbD5AmXLUr_U,5674
|
|
207
209
|
maxframe/dataframe/misc/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
|
|
208
|
-
maxframe/dataframe/misc/tests/test_misc.py,sha256=
|
|
210
|
+
maxframe/dataframe/misc/tests/test_misc.py,sha256=ur4XDSGnwDcS4Kjf8KIiml5MMpBa12jvgjA0f8-bpdY,15610
|
|
209
211
|
maxframe/dataframe/missing/__init__.py,sha256=DQDpYqjvXN6o6TF76wJIpf1fZICOEJskljzwDNjN80k,1866
|
|
210
212
|
maxframe/dataframe/missing/checkna.py,sha256=_Rd-HRX7lTzMV3myu745tzoTB8WIqDIJu2TcT1SfdB0,7113
|
|
211
213
|
maxframe/dataframe/missing/dropna.py,sha256=fJ7xUmhWnViyPnW6nKTF3u2dktqsuwGimSyO71mh0kk,8518
|
|
@@ -214,14 +216,14 @@ maxframe/dataframe/missing/replace.py,sha256=g9KqENIuuaFW33KIFXTClngWcVu2ttrGa28
|
|
|
214
216
|
maxframe/dataframe/missing/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
|
|
215
217
|
maxframe/dataframe/missing/tests/test_missing.py,sha256=zhsgn-yonyXYhlFZtH2OpXtvN0NLxFOZpU_vCumTCqA,3223
|
|
216
218
|
maxframe/dataframe/plotting/__init__.py,sha256=FlSQds0Rdv7CXo_PJFWErMO5KccKrxdLJO58h1IL6uk,1433
|
|
217
|
-
maxframe/dataframe/plotting/core.py,sha256=
|
|
219
|
+
maxframe/dataframe/plotting/core.py,sha256=fgMSAJldKXGjRzj_qfN9QK1kaThqnv8wybJHSu8Y4qg,2311
|
|
218
220
|
maxframe/dataframe/plotting/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
|
|
219
221
|
maxframe/dataframe/plotting/tests/test_plotting.py,sha256=AZ4-C_ASyt3mD29ytsYa0Ut6gA2028ugCKfP9aLK448,4254
|
|
220
222
|
maxframe/dataframe/reduction/__init__.py,sha256=ejIK5G6ylU0q37XVs_2DkmsnHTtYbE44ffhExNl5Usk,4297
|
|
221
223
|
maxframe/dataframe/reduction/aggregation.py,sha256=-v_jzKAiLGHOmv3MTDgqovfEYLgeJobU3CqaMWKqkRo,12948
|
|
222
224
|
maxframe/dataframe/reduction/all.py,sha256=enpOWffBNXAEgFSaiZm0KPwU3izMvWd7M8smLwZjaeE,2044
|
|
223
225
|
maxframe/dataframe/reduction/any.py,sha256=PensVOfgCcxu7u7-1OuMcD6gov2c2kN01B57O3eoHw8,2048
|
|
224
|
-
maxframe/dataframe/reduction/core.py,sha256=
|
|
226
|
+
maxframe/dataframe/reduction/core.py,sha256=QrZ4R9Q96wk7oaIzRZ2-KrFZcFbsbamZ8uUuQKAWdio,31232
|
|
225
227
|
maxframe/dataframe/reduction/count.py,sha256=YLx9bFb2IdnBIkTyApRad0x1yub6TmqncP6TzGcOL_Q,1800
|
|
226
228
|
maxframe/dataframe/reduction/cummax.py,sha256=S2iUhfBL2lKwFKhFIYMQxlE26pYroEYKG3cqmG0gIAs,1043
|
|
227
229
|
maxframe/dataframe/reduction/cummin.py,sha256=EWz1CUCQoTwxluvvQPtcNxWdIISr3bBaZPttB104Pdc,1043
|
|
@@ -276,15 +278,27 @@ maxframe/dataframe/window/tests/test_expanding.py,sha256=PsFYI6YXxNHYlsyaesy9yIA
|
|
|
276
278
|
maxframe/dataframe/window/tests/test_rolling.py,sha256=eJYHh4MhKm_e9h4bCnK_d_aAYlKGQtFAbZTTEILe6gU,1771
|
|
277
279
|
maxframe/learn/__init__.py,sha256=1QzrFCJmdZFy0Nh1Ng3V6yY_NVvoSUdTIqcU-HIa1wk,649
|
|
278
280
|
maxframe/learn/contrib/__init__.py,sha256=2_AumQELt_0MMsSDS7nwk4Fy0TE807lasVuFvGEv1Lc,649
|
|
281
|
+
maxframe/learn/contrib/utils.py,sha256=e4E-QLr7SAhCBTUX246SBpi9DtRNQAE-xOUxvNnFzZY,1714
|
|
279
282
|
maxframe/learn/contrib/pytorch/__init__.py,sha256=a60NZy-COXEFgyC0uXJRBZGi-Vd9HZcqX62bKAMPKaM,703
|
|
280
283
|
maxframe/learn/contrib/pytorch/run_function.py,sha256=aQQhy2Bc6EEe-NVZb17hK4I9_TqIM1uI3fIMihY3TSQ,3354
|
|
281
284
|
maxframe/learn/contrib/pytorch/run_script.py,sha256=FOBXdJ9Q5QOirGGXq8_XwpwrTpDEmWt45-9n4VR_ixI,3213
|
|
282
285
|
maxframe/learn/contrib/pytorch/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
|
|
283
286
|
maxframe/learn/contrib/pytorch/tests/test_pytorch.py,sha256=GHP-oD5uMU8LD90Jt2cHbYRDdM5efjzsjpeBkc3t_qE,1444
|
|
287
|
+
maxframe/learn/contrib/xgboost/__init__.py,sha256=vk9xZO_FUwyVCrcLP1dbEz6JCZQBEHsmhGr1uQ45FAI,925
|
|
288
|
+
maxframe/learn/contrib/xgboost/classifier.py,sha256=DWvQ9_GLg-ZeSFQp6NN5-7_BA9NxkpxEv5WtuodU31o,3022
|
|
289
|
+
maxframe/learn/contrib/xgboost/core.py,sha256=RzGTONv1WgDb0ZXUxzDDkbqepvznAPRyjSgD2N4MdPc,5350
|
|
290
|
+
maxframe/learn/contrib/xgboost/dmatrix.py,sha256=8bCcfJGG84s7sKBNcw4urvwPWqX6mMvEN_KyaL52JxM,5006
|
|
291
|
+
maxframe/learn/contrib/xgboost/predict.py,sha256=FOrLkzjoYjxJZdrisy_bXoRBA8itdGuaP3QDV1hzDl0,4802
|
|
292
|
+
maxframe/learn/contrib/xgboost/regressor.py,sha256=osuNG4N1SILgjL-CodYnM9ODwewaVi4-8tHdfWZWJpg,2610
|
|
293
|
+
maxframe/learn/contrib/xgboost/train.py,sha256=yn2_45hDvuAi4VKkFPR11i38o0mrFaNJ668qBnj2wDI,4079
|
|
294
|
+
maxframe/learn/contrib/xgboost/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
|
|
295
|
+
maxframe/learn/contrib/xgboost/tests/test_core.py,sha256=qNSXaB1t1vpoCD6RfpnFjJZHS8ShW9O_uz0ucXXlfpE,1449
|
|
296
|
+
maxframe/learn/utils/__init__.py,sha256=w2_QpDZ9J5BcSgbqu8P2RlkVRWC2gLowfgsaDPtz_Pg,661
|
|
297
|
+
maxframe/learn/utils/core.py,sha256=WNDISxPFsWmjkwHwEvjVGCkAOkIftqzEQFPA_KWr7FY,1058
|
|
284
298
|
maxframe/lib/__init__.py,sha256=_PB28W40qku6YiT8fJYqdmEdRMQfelOwGeksCOZJfCc,657
|
|
285
299
|
maxframe/lib/compression.py,sha256=QQpNK79iUC9zck74I0HKMhapSRnLBXtTRyS91taEVIc,1497
|
|
286
300
|
maxframe/lib/functools_compat.py,sha256=2LTrkSw5i-z5E9XCtZzfg9-0vPrYxicKvDjnnNrAL1Q,2697
|
|
287
|
-
maxframe/lib/mmh3.cp311-win32.pyd,sha256=
|
|
301
|
+
maxframe/lib/mmh3.cp311-win32.pyd,sha256=zrfxneJKRLJdeWyEIfKCdDdKDHYQGv8dmWtc6yk5Hn4,14848
|
|
288
302
|
maxframe/lib/version.py,sha256=VOVZu3KHS53YUsb_vQsT7AyHwcCWAgc-3bBqV5ANcbQ,18941
|
|
289
303
|
maxframe/lib/wrapped_pickle.py,sha256=bzEaokhAZlkjXqw1xfeKO1KX2awhKIz_1RT81yPPoag,3949
|
|
290
304
|
maxframe/lib/aio/__init__.py,sha256=xzIYnV42_7CYuDTTv8svscIXQeJMF0nn8AXMbpv173M,963
|
|
@@ -333,13 +347,13 @@ maxframe/lib/tblib/pickling_support.py,sha256=D9A0eX7gJeyqhXWxJJZ1GRwwcc5lj86wBR
|
|
|
333
347
|
maxframe/lib/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
|
|
334
348
|
maxframe/lib/tests/test_wrapped_pickle.py,sha256=WV0EJQ1hTSp8xjuosWWtEO7PeiBqdDUYgStxp72_c94,1575
|
|
335
349
|
maxframe/odpsio/__init__.py,sha256=0SesD04XxFli4Gp23ipMkefFQ2ZTB0PItwZoSHpDC-k,820
|
|
336
|
-
maxframe/odpsio/arrow.py,sha256=
|
|
350
|
+
maxframe/odpsio/arrow.py,sha256=pFw7aP7u8maEnXXF63VpMbI2qrOvWl78dYWGqHkXuJA,3884
|
|
337
351
|
maxframe/odpsio/schema.py,sha256=Hba-eCXnBUS6NxHRsshaohzO1eThm4HeVzzvAF7E3Vg,12479
|
|
338
|
-
maxframe/odpsio/tableio.py,sha256=
|
|
352
|
+
maxframe/odpsio/tableio.py,sha256=ugLy15g2JoCD3GHhCRrH9PT9g9hyKfwrC71qXEVqvB0,10470
|
|
339
353
|
maxframe/odpsio/volumeio.py,sha256=IT_OO-RG2rJZOEx8C8xRr0oNR358RSAJQAp6WGxeXzI,3838
|
|
340
354
|
maxframe/odpsio/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
|
|
341
355
|
maxframe/odpsio/tests/test_arrow.py,sha256=yeDWFzsm2IMS-k6jimlQ7uim5T6WW1Anuy8didaf4cs,3194
|
|
342
|
-
maxframe/odpsio/tests/test_schema.py,sha256=
|
|
356
|
+
maxframe/odpsio/tests/test_schema.py,sha256=QekMLBWu98IUN6mCloOxEQU0-7RL5OKzV8EE3A17wfU,12255
|
|
343
357
|
maxframe/odpsio/tests/test_tableio.py,sha256=ZyQxBAVA5GG3j_NOPTTFs5vCQqQywhRKC9OAJx9LJxM,4789
|
|
344
358
|
maxframe/odpsio/tests/test_volumeio.py,sha256=xvnrPZueZ76OAWK2zW_tHHI_cDxo7gJXTHiEe0lkmjk,3112
|
|
345
359
|
maxframe/remote/__init__.py,sha256=Yu1ZDLICbehNfd1ur7_2bnIn2VFIsTxH_cILCbHAeZY,747
|
|
@@ -347,8 +361,9 @@ maxframe/remote/core.py,sha256=w_eTDEs0O7iIzLn1YrMGh2gcNAzzbqV0mx2bRT7su_U,7001
|
|
|
347
361
|
maxframe/remote/run_script.py,sha256=k93-vaFLUanWoBRai4-78DX_SLeZ8_rbbxcCtOIXZO8,3677
|
|
348
362
|
maxframe/serialization/__init__.py,sha256=nxxU7CI6MRcL3sjA1KmLkpTGKA3KG30FKl-MJJ0MCdI,947
|
|
349
363
|
maxframe/serialization/arrow.py,sha256=OMeDjLcPgagqzokG7g3Vhwm6Xw1j-Kph1V2QsIwi6dw,3513
|
|
350
|
-
maxframe/serialization/core.cp311-win32.pyd,sha256=
|
|
364
|
+
maxframe/serialization/core.cp311-win32.pyd,sha256=M27xubK2BJ26otEOvnTjX65FIqDRukR9s5bKSxqE2Yw,348672
|
|
351
365
|
maxframe/serialization/core.pxd,sha256=Fymih3Wo-CrOY27_o_DRINdbRGR7mgiT-XCaXCXafxM,1347
|
|
366
|
+
maxframe/serialization/core.pyi,sha256=uaz1R6oGDZhwqmuUotsySL3T8NlUnnNcGQ6hweAtC20,1983
|
|
352
367
|
maxframe/serialization/core.pyx,sha256=Qmipu3LiJGIBVy_7d4tSJqcYWnG5xj2I7IaPv2PSq5E,35078
|
|
353
368
|
maxframe/serialization/exception.py,sha256=e7bZyPlZ8XhSCdeOwlYreq0HazPXKOgOA6r9Q4Ecn2Y,3113
|
|
354
369
|
maxframe/serialization/maxframe_objects.py,sha256=ZHyvxIALoPuB_y3CRc70hZXyfdj4IhaKMXUEYLXHQag,1404
|
|
@@ -364,7 +379,7 @@ maxframe/serialization/serializables/tests/test_field_type.py,sha256=uG87-bdG8xG
|
|
|
364
379
|
maxframe/serialization/serializables/tests/test_serializable.py,sha256=jnXDfBSNomsEKUKPGd9rCQe8dbOJo7bcFZWvSbEpVsk,8493
|
|
365
380
|
maxframe/serialization/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
|
|
366
381
|
maxframe/serialization/tests/test_serial.py,sha256=9G2CbPBHINwcZ038pRwZON_OtH-JVXZ8w66BLYWP578,12923
|
|
367
|
-
maxframe/tensor/__init__.py,sha256=
|
|
382
|
+
maxframe/tensor/__init__.py,sha256=lY_GZBClz2MIGwaMerP2DvbsUbC5crCel_kwkeuiyX4,3702
|
|
368
383
|
maxframe/tensor/array_utils.py,sha256=xr_Ng-4dETJFjsMfWi5gbTPM9mRmPvRWj8QY2WKjmCg,5129
|
|
369
384
|
maxframe/tensor/core.py,sha256=-G-UzY81GTKj2SD9FQLqBg-UDod5LjjrEA-uF16ofms,22638
|
|
370
385
|
maxframe/tensor/operators.py,sha256=8VsSZ8OcImGkSRQvrYlV05KMHGsroAYmW1o9RM2yV1U,3584
|
|
@@ -470,17 +485,19 @@ maxframe/tensor/arithmetic/trunc.py,sha256=3z8jme9ZpPU8TqNo2ioViqJa7ThNK9KOVX1wl
|
|
|
470
485
|
maxframe/tensor/arithmetic/utils.py,sha256=Kc3xqbIK9uRhHhDKFwAj-mW7SRljajfK9UOMyXyCHCY,2304
|
|
471
486
|
maxframe/tensor/arithmetic/tests/__init__.py,sha256=_PB28W40qku6YiT8fJYqdmEdRMQfelOwGeksCOZJfCc,657
|
|
472
487
|
maxframe/tensor/arithmetic/tests/test_arithmetic.py,sha256=e8sc6uYI09to_vzci5Vl8BuTM_oDBi4rQ5sQnQkjer4,11403
|
|
473
|
-
maxframe/tensor/base/__init__.py,sha256=
|
|
488
|
+
maxframe/tensor/base/__init__.py,sha256=qVf97u2J74RSjCmkF-7N-ylxWUc6mbiPPWpDe45vRmQ,1113
|
|
474
489
|
maxframe/tensor/base/astype.py,sha256=fzj0o3pJMVaSEEKMR-JBsd2FktlSa9ABtpt-fcWKio0,4513
|
|
490
|
+
maxframe/tensor/base/atleast_1d.py,sha256=AgFdj7P3nBy6WibI54IPIwfowLHsk2BHfH3bXKVn5rg,1992
|
|
475
491
|
maxframe/tensor/base/broadcast_to.py,sha256=V-OB8YSbMfkMP2JpbiIQ0A9PrC-OHfaWzrntf5AOEwo,2775
|
|
476
492
|
maxframe/tensor/base/ravel.py,sha256=P9SCDU-UUHzd1HqZbodBSgKjtjiOFkyfLV_G9LFnz_U,3265
|
|
477
493
|
maxframe/tensor/base/transpose.py,sha256=yMK1KzxguKZOWxT3oMo5GchjB-1Yakilp2rEX3QlxFM,3539
|
|
494
|
+
maxframe/tensor/base/unique.py,sha256=zzE3w6VAZslTgYx4FDUPQ3bMsBsj-61z0BPY5hPaM6Q,6947
|
|
478
495
|
maxframe/tensor/base/where.py,sha256=cSg1mDhiOBB4F0Soh_uVw3yeSve9pfEhPSIDadc-wto,4127
|
|
479
496
|
maxframe/tensor/base/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
|
|
480
497
|
maxframe/tensor/base/tests/test_base.py,sha256=i9TneozyHCHDhO438U285KS6tdh0Zks8mgkRm3fsHxk,2957
|
|
481
498
|
maxframe/tensor/datasource/__init__.py,sha256=xtrdcuP6yTc_T19ITPsJTknoqTT-XudlhSlffrScjsY,1178
|
|
482
499
|
maxframe/tensor/datasource/arange.py,sha256=tjNF_huiWTtqtN6YBBtn0tvP9Pnebf6LNXRmAsYqRQk,5632
|
|
483
|
-
maxframe/tensor/datasource/array.py,sha256=
|
|
500
|
+
maxframe/tensor/datasource/array.py,sha256=pC1eeo4C1EkdHklStr6aOCBfRx1SqyeHHwRglKI2W1A,13419
|
|
484
501
|
maxframe/tensor/datasource/core.py,sha256=LzuHtRWCNny1y-IzGylelWZ6rejS31LdT4E7qs_uIQs,3520
|
|
485
502
|
maxframe/tensor/datasource/empty.py,sha256=GpK-DHUfJp9M46wUrGt5lf-YbDDveubwntDjTVYnmMw,6019
|
|
486
503
|
maxframe/tensor/datasource/from_dataframe.py,sha256=iJY2cw2yA6YKnqRLyB0XdvpdemHHzpU7q2SA1sYo6mo,2573
|
|
@@ -488,7 +505,7 @@ maxframe/tensor/datasource/from_dense.py,sha256=txyxNBD0oXr3Ama9me2ay1_ASuDu1QK3
|
|
|
488
505
|
maxframe/tensor/datasource/from_sparse.py,sha256=le-Wfno7Z8XY71TLwEOhO80fkvKXwKXbDgsrOfmDM8s,1593
|
|
489
506
|
maxframe/tensor/datasource/full.py,sha256=-54C2YwqIEP3rPGsY0rnbgMBp15_NqgDJ7lxOJJuXGU,6462
|
|
490
507
|
maxframe/tensor/datasource/ones.py,sha256=0UuYAwMLGfjF-O_90vkwsMqQlAAfJ98TdxbfgC1y6Fk,5182
|
|
491
|
-
maxframe/tensor/datasource/scalar.py,sha256=
|
|
508
|
+
maxframe/tensor/datasource/scalar.py,sha256=g2dsnmOEzV30I0UK3ytMtkiosdfH3NJ6wacZuxBpmbk,1196
|
|
492
509
|
maxframe/tensor/datasource/zeros.py,sha256=DJZK_kraSn820O17GSHLFHV43x1JL3Gt_HdlN0p5o7k,5860
|
|
493
510
|
maxframe/tensor/datasource/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
|
|
494
511
|
maxframe/tensor/datasource/tests/test_datasource.py,sha256=C9sOu8rpDNpu3yMhgln4UzkqW5SklL63IJXRwrwOCYc,7931
|
|
@@ -610,21 +627,21 @@ maxframe/tests/test_utils.py,sha256=0Iey3O6zrGI1yQU2OSpWavJNvhUjrmdkct4-27tkGUM,
|
|
|
610
627
|
maxframe/tests/utils.py,sha256=gCre-8BApU4-AEun9WShm4Ff5a9a_oKxvLNneESXBjU,4732
|
|
611
628
|
maxframe_client/__init__.py,sha256=xqlN69LjvAp2bNCaT9d82U9AF5WKi_c4UOheEW1wV9E,741
|
|
612
629
|
maxframe_client/conftest.py,sha256=UWWMYjmohHL13hLl4adb0gZPLRdBVOYVvsFo6VZruI0,658
|
|
613
|
-
maxframe_client/fetcher.py,sha256=
|
|
630
|
+
maxframe_client/fetcher.py,sha256=yFP6Hgz01-qPqBwmTX5-5ECU-G6q-TX5SUktplcJgcU,9213
|
|
614
631
|
maxframe_client/clients/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
|
|
615
632
|
maxframe_client/clients/framedriver.py,sha256=upN6C1eZrCpLTsS6fihWOMy392psWfo0bw2XgSLI_Yg,4581
|
|
616
633
|
maxframe_client/clients/spe.py,sha256=uizNBejhU_FrMhsgsFgDnq7gL7Cxk803LeLYmr3nmxs,3697
|
|
617
634
|
maxframe_client/session/__init__.py,sha256=9zFCd3zkSADESAFc4SPoQ2nkvRwsIhhpNNO2TtSaWbU,854
|
|
618
635
|
maxframe_client/session/consts.py,sha256=nD-D0zHXumbQI8w3aUyltJS59K5ftipf3xCtHNLmtc8,1380
|
|
619
636
|
maxframe_client/session/graph.py,sha256=GSZaJ-PV4DK8bTcNtoSoY5kDTyyIRAKleh4tOCSUbsI,4470
|
|
620
|
-
maxframe_client/session/odps.py,sha256=
|
|
621
|
-
maxframe_client/session/task.py,sha256=
|
|
637
|
+
maxframe_client/session/odps.py,sha256=6OySk4Fo5N5OG_HiuuTxSU5n-UUVYZ0AjTrMzcE-jGY,18008
|
|
638
|
+
maxframe_client/session/task.py,sha256=rY7pXNd_5ixaE3-wSwKTUr2bMPIYwuVAEeia3qY24fk,10445
|
|
622
639
|
maxframe_client/session/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
|
|
623
640
|
maxframe_client/session/tests/test_task.py,sha256=861usEURVXeTUzfJYZmBfwsHfZFexG23mMtT5IJOOm4,3364
|
|
624
641
|
maxframe_client/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
|
|
625
642
|
maxframe_client/tests/test_fetcher.py,sha256=7iYXLMIoCJLfgUkjB2HBkV-sqQ-xGlhtzfp9hRJz_kM,3605
|
|
626
|
-
maxframe_client/tests/test_session.py,sha256=
|
|
627
|
-
maxframe-0.1.
|
|
628
|
-
maxframe-0.1.
|
|
629
|
-
maxframe-0.1.
|
|
630
|
-
maxframe-0.1.
|
|
643
|
+
maxframe_client/tests/test_session.py,sha256=M41_lHLjgCSCWTxnDci4UnLeGty-Mi8Vi2SfB32EPcI,8139
|
|
644
|
+
maxframe-0.1.0b5.dist-info/METADATA,sha256=SaNZ5DLD6aoMtuSJ_f-mN1Lfj9zFsB6U9RfZ_1b03uY,3149
|
|
645
|
+
maxframe-0.1.0b5.dist-info/WHEEL,sha256=deu9bZJH225Lz7TZI9C8JKotIcjmi5Ibg2UG8qmj-qM,98
|
|
646
|
+
maxframe-0.1.0b5.dist-info/top_level.txt,sha256=64x-fc2q59c_vXwNUkehyjF1vb8JWqFSdYmUqIFqoTM,31
|
|
647
|
+
maxframe-0.1.0b5.dist-info/RECORD,,
|
maxframe_client/fetcher.py
CHANGED
|
@@ -12,16 +12,21 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
+
import base64
|
|
16
|
+
import json
|
|
15
17
|
from abc import ABC, abstractmethod
|
|
16
18
|
from numbers import Integral
|
|
17
|
-
from typing import Any, Dict, List, Type, Union
|
|
19
|
+
from typing import Any, Dict, List, Optional, Type, Union
|
|
18
20
|
|
|
21
|
+
import pandas as pd
|
|
19
22
|
import pyarrow as pa
|
|
20
23
|
from odps import ODPS
|
|
21
24
|
from odps.models import ExternalVolume, PartedVolume
|
|
25
|
+
from odps.tunnel import TableTunnel
|
|
22
26
|
from tornado import httpclient
|
|
23
27
|
|
|
24
28
|
from maxframe.core import OBJECT_TYPE
|
|
29
|
+
from maxframe.dataframe.core import DATAFRAME_TYPE
|
|
25
30
|
from maxframe.lib import wrapped_pickle as pickle
|
|
26
31
|
from maxframe.odpsio import HaloTableIO, arrow_to_pandas, build_dataframe_table_meta
|
|
27
32
|
from maxframe.protocol import (
|
|
@@ -31,8 +36,9 @@ from maxframe.protocol import (
|
|
|
31
36
|
ResultInfo,
|
|
32
37
|
ResultType,
|
|
33
38
|
)
|
|
39
|
+
from maxframe.tensor.core import TENSOR_TYPE
|
|
34
40
|
from maxframe.typing_ import PandasObjectTypes, TileableType
|
|
35
|
-
from maxframe.utils import ToThreadMixin
|
|
41
|
+
from maxframe.utils import ToThreadMixin, deserialize_serializable
|
|
36
42
|
|
|
37
43
|
_result_fetchers: Dict[ResultType, Type["ResultFetcher"]] = dict()
|
|
38
44
|
|
|
@@ -52,6 +58,14 @@ class ResultFetcher(ABC):
|
|
|
52
58
|
def __init__(self, odps_entry: ODPS):
|
|
53
59
|
self._odps_entry = odps_entry
|
|
54
60
|
|
|
61
|
+
@abstractmethod
|
|
62
|
+
async def update_tileable_meta(
|
|
63
|
+
self,
|
|
64
|
+
tileable: TileableType,
|
|
65
|
+
info: ResultInfo,
|
|
66
|
+
) -> None:
|
|
67
|
+
raise NotImplementedError
|
|
68
|
+
|
|
55
69
|
@abstractmethod
|
|
56
70
|
async def fetch(
|
|
57
71
|
self,
|
|
@@ -66,6 +80,13 @@ class ResultFetcher(ABC):
|
|
|
66
80
|
class NullFetcher(ResultFetcher):
|
|
67
81
|
result_type = ResultType.NULL
|
|
68
82
|
|
|
83
|
+
async def update_tileable_meta(
|
|
84
|
+
self,
|
|
85
|
+
tileable: TileableType,
|
|
86
|
+
info: ResultInfo,
|
|
87
|
+
) -> None:
|
|
88
|
+
return
|
|
89
|
+
|
|
69
90
|
async def fetch(
|
|
70
91
|
self,
|
|
71
92
|
tileable: TileableType,
|
|
@@ -79,6 +100,40 @@ class NullFetcher(ResultFetcher):
|
|
|
79
100
|
class ODPSTableFetcher(ToThreadMixin, ResultFetcher):
|
|
80
101
|
result_type = ResultType.ODPS_TABLE
|
|
81
102
|
|
|
103
|
+
def _get_table_comment(self, table_name: str) -> Optional[str]:
|
|
104
|
+
table = self._odps_entry.get_table(table_name)
|
|
105
|
+
return getattr(table, "comment", None)
|
|
106
|
+
|
|
107
|
+
async def update_tileable_meta(
|
|
108
|
+
self,
|
|
109
|
+
tileable: TileableType,
|
|
110
|
+
info: ODPSTableResultInfo,
|
|
111
|
+
) -> None:
|
|
112
|
+
if isinstance(tileable, DATAFRAME_TYPE) and tileable.dtypes is None:
|
|
113
|
+
tb_comment = await self.to_thread(
|
|
114
|
+
self._get_table_comment, info.full_table_name
|
|
115
|
+
)
|
|
116
|
+
if tb_comment: # pragma: no branch
|
|
117
|
+
comment_data = json.loads(tb_comment)
|
|
118
|
+
|
|
119
|
+
table_meta: DataFrameTableMeta = deserialize_serializable(
|
|
120
|
+
base64.b64decode(comment_data["table_meta"])
|
|
121
|
+
)
|
|
122
|
+
tileable.refresh_from_table_meta(table_meta)
|
|
123
|
+
|
|
124
|
+
if tileable.shape and any(pd.isna(x) for x in tileable.shape):
|
|
125
|
+
part_specs = [None] if not info.partition_specs else info.partition_specs
|
|
126
|
+
tunnel = TableTunnel(self._odps_entry)
|
|
127
|
+
total_records = 0
|
|
128
|
+
for part_spec in part_specs:
|
|
129
|
+
session = tunnel.create_download_session(
|
|
130
|
+
info.full_table_name, part_spec
|
|
131
|
+
)
|
|
132
|
+
total_records += session.count
|
|
133
|
+
new_shape_list = list(tileable.shape)
|
|
134
|
+
new_shape_list[-1] = total_records
|
|
135
|
+
tileable.params = {"shape": tuple(new_shape_list)}
|
|
136
|
+
|
|
82
137
|
def _read_single_source(
|
|
83
138
|
self,
|
|
84
139
|
table_meta: DataFrameTableMeta,
|
|
@@ -149,6 +204,13 @@ class ODPSTableFetcher(ToThreadMixin, ResultFetcher):
|
|
|
149
204
|
class ODPSVolumeFetcher(ToThreadMixin, ResultFetcher):
|
|
150
205
|
result_type = ResultType.ODPS_VOLUME
|
|
151
206
|
|
|
207
|
+
async def update_tileable_meta(
|
|
208
|
+
self,
|
|
209
|
+
tileable: TileableType,
|
|
210
|
+
info: ODPSVolumeResultInfo,
|
|
211
|
+
) -> None:
|
|
212
|
+
return
|
|
213
|
+
|
|
152
214
|
async def _read_parted_volume_data(
|
|
153
215
|
self, volume: PartedVolume, partition: str, file_name: str
|
|
154
216
|
) -> bytes:
|
|
@@ -197,6 +259,6 @@ class ODPSVolumeFetcher(ToThreadMixin, ResultFetcher):
|
|
|
197
259
|
info: ODPSVolumeResultInfo,
|
|
198
260
|
indexes: List[Union[Integral, slice]],
|
|
199
261
|
) -> Any:
|
|
200
|
-
if isinstance(tileable, OBJECT_TYPE):
|
|
262
|
+
if isinstance(tileable, (OBJECT_TYPE, TENSOR_TYPE)):
|
|
201
263
|
return await self._fetch_object(info)
|
|
202
264
|
raise NotImplementedError(f"Fetching {type(tileable)} not implemented")
|
maxframe_client/session/odps.py
CHANGED
|
@@ -84,6 +84,9 @@ class MaxFrameServiceCaller(metaclass=abc.ABCMeta):
|
|
|
84
84
|
def decref(self, tileable_keys: List[str]) -> None:
|
|
85
85
|
raise NotImplementedError
|
|
86
86
|
|
|
87
|
+
def get_logview_address(self, dag_id=None, hours=None) -> Optional[str]:
|
|
88
|
+
return None
|
|
89
|
+
|
|
87
90
|
|
|
88
91
|
class MaxFrameSession(ToThreadMixin, IsolatedAsyncSession):
|
|
89
92
|
_odps_entry: Optional[ODPS]
|
|
@@ -129,6 +132,7 @@ class MaxFrameSession(ToThreadMixin, IsolatedAsyncSession):
|
|
|
129
132
|
async def _init(self, _address: str):
|
|
130
133
|
session_info = await self.ensure_async_call(self._caller.create_session)
|
|
131
134
|
self._session_id = session_info.session_id
|
|
135
|
+
await self._show_logview_address()
|
|
132
136
|
|
|
133
137
|
def _upload_and_get_read_tileable(self, t: TileableType) -> Optional[TileableType]:
|
|
134
138
|
if (
|
|
@@ -142,7 +146,9 @@ class MaxFrameSession(ToThreadMixin, IsolatedAsyncSession):
|
|
|
142
146
|
if self._odps_entry.exist_table(table_meta.table_name):
|
|
143
147
|
self._odps_entry.delete_table(table_meta.table_name)
|
|
144
148
|
table_name = build_temp_table_name(self.session_id, t.key)
|
|
145
|
-
table_obj = self._odps_entry.create_table(
|
|
149
|
+
table_obj = self._odps_entry.create_table(
|
|
150
|
+
table_name, schema, lifecycle=options.session.temp_table_lifecycle
|
|
151
|
+
)
|
|
146
152
|
|
|
147
153
|
data = t.op.get_data()
|
|
148
154
|
batch_size = options.session.upload_batch_size
|
|
@@ -239,6 +245,8 @@ class MaxFrameSession(ToThreadMixin, IsolatedAsyncSession):
|
|
|
239
245
|
self._caller.submit_dag, tileable_graph, replaced_infos
|
|
240
246
|
)
|
|
241
247
|
|
|
248
|
+
await self._show_logview_address(dag_info.dag_id)
|
|
249
|
+
|
|
242
250
|
progress = Progress()
|
|
243
251
|
profiling = Profiling()
|
|
244
252
|
aio_task = asyncio.create_task(
|
|
@@ -294,6 +302,8 @@ class MaxFrameSession(ToThreadMixin, IsolatedAsyncSession):
|
|
|
294
302
|
|
|
295
303
|
for key, result_info in dag_info.tileable_to_result_infos.items():
|
|
296
304
|
t = key_to_tileables[key]
|
|
305
|
+
fetcher = get_fetcher_cls(result_info.result_type)(self._odps_entry)
|
|
306
|
+
await fetcher.update_tileable_meta(t, result_info)
|
|
297
307
|
self._tileable_to_infos[t] = result_info
|
|
298
308
|
|
|
299
309
|
def _get_data_tileable_and_indexes(
|
|
@@ -388,6 +398,25 @@ class MaxFrameSession(ToThreadMixin, IsolatedAsyncSession):
|
|
|
388
398
|
async def get_mutable_tensor(self, name: str):
|
|
389
399
|
raise NotImplementedError
|
|
390
400
|
|
|
401
|
+
async def get_logview_address(self, hours=None) -> Optional[str]:
|
|
402
|
+
return await self.get_dag_logview_address(None, hours)
|
|
403
|
+
|
|
404
|
+
async def get_dag_logview_address(self, dag_id=None, hours=None) -> Optional[str]:
|
|
405
|
+
return await self.ensure_async_call(
|
|
406
|
+
self._caller.get_logview_address, dag_id, hours
|
|
407
|
+
)
|
|
408
|
+
|
|
409
|
+
async def _show_logview_address(self, dag_id=None, hours=None):
|
|
410
|
+
identity = f"Session ID: {self._session_id}"
|
|
411
|
+
if dag_id:
|
|
412
|
+
identity += f", DAG ID: {dag_id}"
|
|
413
|
+
|
|
414
|
+
logview_addr = await self.get_dag_logview_address(dag_id, hours)
|
|
415
|
+
if logview_addr:
|
|
416
|
+
logger.info("%s, Logview: %s", identity, logview_addr)
|
|
417
|
+
else:
|
|
418
|
+
logger.info("%s, Logview address does not exist", identity)
|
|
419
|
+
|
|
391
420
|
|
|
392
421
|
class MaxFrameRestCaller(MaxFrameServiceCaller):
|
|
393
422
|
_client: FrameDriverClient
|