maxframe 1.3.0__cp37-cp37m-win32.whl → 2.0.0__cp37-cp37m-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.

Files changed (644) hide show
  1. maxframe/_utils.cp37-win32.pyd +0 -0
  2. maxframe/_utils.pyi +21 -0
  3. maxframe/_utils.pyx +4 -3
  4. maxframe/codegen/__init__.py +27 -0
  5. maxframe/{codegen.py → codegen/core.py} +49 -43
  6. maxframe/codegen/spe/__init__.py +16 -0
  7. maxframe/codegen/spe/core.py +307 -0
  8. maxframe/codegen/spe/dataframe/__init__.py +37 -0
  9. maxframe/codegen/spe/dataframe/accessors/__init__.py +15 -0
  10. maxframe/codegen/spe/dataframe/accessors/base.py +53 -0
  11. maxframe/codegen/spe/dataframe/accessors/dict_.py +194 -0
  12. maxframe/codegen/spe/dataframe/accessors/list_.py +80 -0
  13. maxframe/codegen/spe/dataframe/arithmetic.py +84 -0
  14. maxframe/codegen/spe/dataframe/datasource.py +181 -0
  15. maxframe/codegen/spe/dataframe/datastore.py +204 -0
  16. maxframe/codegen/spe/dataframe/extensions.py +63 -0
  17. maxframe/codegen/spe/dataframe/fetch.py +26 -0
  18. maxframe/codegen/spe/dataframe/groupby.py +224 -0
  19. maxframe/codegen/spe/dataframe/indexing.py +238 -0
  20. maxframe/codegen/spe/dataframe/merge.py +73 -0
  21. maxframe/codegen/spe/dataframe/misc.py +286 -0
  22. maxframe/codegen/spe/dataframe/missing.py +64 -0
  23. maxframe/codegen/spe/dataframe/reduction.py +160 -0
  24. maxframe/codegen/spe/dataframe/sort.py +83 -0
  25. maxframe/codegen/spe/dataframe/statistics.py +46 -0
  26. maxframe/codegen/spe/dataframe/tests/__init__.py +13 -0
  27. maxframe/codegen/spe/dataframe/tests/accessors/__init__.py +13 -0
  28. maxframe/codegen/spe/dataframe/tests/accessors/test_base.py +33 -0
  29. maxframe/codegen/spe/dataframe/tests/accessors/test_dict.py +310 -0
  30. maxframe/codegen/spe/dataframe/tests/accessors/test_list.py +137 -0
  31. maxframe/codegen/spe/dataframe/tests/indexing/__init__.py +13 -0
  32. maxframe/codegen/spe/dataframe/tests/indexing/conftest.py +58 -0
  33. maxframe/codegen/spe/dataframe/tests/indexing/test_getitem.py +124 -0
  34. maxframe/codegen/spe/dataframe/tests/indexing/test_iloc.py +76 -0
  35. maxframe/codegen/spe/dataframe/tests/indexing/test_indexing.py +39 -0
  36. maxframe/codegen/spe/dataframe/tests/indexing/test_rename.py +51 -0
  37. maxframe/codegen/spe/dataframe/tests/indexing/test_reset_index.py +88 -0
  38. maxframe/codegen/spe/dataframe/tests/indexing/test_sample.py +45 -0
  39. maxframe/codegen/spe/dataframe/tests/indexing/test_set_axis.py +45 -0
  40. maxframe/codegen/spe/dataframe/tests/indexing/test_set_index.py +41 -0
  41. maxframe/codegen/spe/dataframe/tests/indexing/test_setitem.py +46 -0
  42. maxframe/codegen/spe/dataframe/tests/misc/__init__.py +13 -0
  43. maxframe/codegen/spe/dataframe/tests/misc/test_apply.py +133 -0
  44. maxframe/codegen/spe/dataframe/tests/misc/test_drop_duplicates.py +92 -0
  45. maxframe/codegen/spe/dataframe/tests/misc/test_misc.py +234 -0
  46. maxframe/codegen/spe/dataframe/tests/missing/__init__.py +13 -0
  47. maxframe/codegen/spe/dataframe/tests/missing/test_checkna.py +94 -0
  48. maxframe/codegen/spe/dataframe/tests/missing/test_dropna.py +50 -0
  49. maxframe/codegen/spe/dataframe/tests/missing/test_fillna.py +94 -0
  50. maxframe/codegen/spe/dataframe/tests/missing/test_replace.py +45 -0
  51. maxframe/codegen/spe/dataframe/tests/test_arithmetic.py +73 -0
  52. maxframe/codegen/spe/dataframe/tests/test_datasource.py +184 -0
  53. maxframe/codegen/spe/dataframe/tests/test_datastore.py +200 -0
  54. maxframe/codegen/spe/dataframe/tests/test_extensions.py +88 -0
  55. maxframe/codegen/spe/dataframe/tests/test_groupby.py +225 -0
  56. maxframe/codegen/spe/dataframe/tests/test_merge.py +400 -0
  57. maxframe/codegen/spe/dataframe/tests/test_reduction.py +104 -0
  58. maxframe/codegen/spe/dataframe/tests/test_sort.py +159 -0
  59. maxframe/codegen/spe/dataframe/tests/test_statistics.py +70 -0
  60. maxframe/codegen/spe/dataframe/tests/test_tseries.py +29 -0
  61. maxframe/codegen/spe/dataframe/tests/test_value_counts.py +60 -0
  62. maxframe/codegen/spe/dataframe/tests/test_window.py +69 -0
  63. maxframe/codegen/spe/dataframe/tseries.py +46 -0
  64. maxframe/codegen/spe/dataframe/udf.py +62 -0
  65. maxframe/codegen/spe/dataframe/value_counts.py +31 -0
  66. maxframe/codegen/spe/dataframe/window.py +65 -0
  67. maxframe/codegen/spe/learn/__init__.py +15 -0
  68. maxframe/codegen/spe/learn/contrib/__init__.py +15 -0
  69. maxframe/codegen/spe/learn/contrib/lightgbm.py +160 -0
  70. maxframe/codegen/spe/learn/contrib/models.py +41 -0
  71. maxframe/codegen/spe/learn/contrib/pytorch.py +49 -0
  72. maxframe/codegen/spe/learn/contrib/tests/__init__.py +13 -0
  73. maxframe/codegen/spe/learn/contrib/tests/test_lightgbm.py +123 -0
  74. maxframe/codegen/spe/learn/contrib/tests/test_models.py +41 -0
  75. maxframe/codegen/spe/learn/contrib/tests/test_pytorch.py +53 -0
  76. maxframe/codegen/spe/learn/contrib/tests/test_xgboost.py +98 -0
  77. maxframe/codegen/spe/learn/contrib/xgboost.py +152 -0
  78. maxframe/codegen/spe/learn/metrics/__init__.py +15 -0
  79. maxframe/codegen/spe/learn/metrics/_classification.py +120 -0
  80. maxframe/codegen/spe/learn/metrics/tests/__init__.py +13 -0
  81. maxframe/codegen/spe/learn/metrics/tests/test_classification.py +93 -0
  82. maxframe/codegen/spe/learn/model_selection/__init__.py +13 -0
  83. maxframe/codegen/spe/learn/model_selection/tests/__init__.py +13 -0
  84. maxframe/codegen/spe/learn/model_selection/tests/test_split.py +41 -0
  85. maxframe/codegen/spe/learn/preprocessing/__init__.py +15 -0
  86. maxframe/codegen/spe/learn/preprocessing/_data.py +37 -0
  87. maxframe/codegen/spe/learn/preprocessing/_label.py +47 -0
  88. maxframe/codegen/spe/learn/preprocessing/tests/__init__.py +13 -0
  89. maxframe/codegen/spe/learn/preprocessing/tests/test_data.py +31 -0
  90. maxframe/codegen/spe/learn/preprocessing/tests/test_label.py +43 -0
  91. maxframe/codegen/spe/learn/utils/__init__.py +15 -0
  92. maxframe/codegen/spe/learn/utils/checks.py +55 -0
  93. maxframe/codegen/spe/learn/utils/multiclass.py +60 -0
  94. maxframe/codegen/spe/learn/utils/shuffle.py +85 -0
  95. maxframe/codegen/spe/learn/utils/sparsefuncs.py +35 -0
  96. maxframe/codegen/spe/learn/utils/tests/__init__.py +13 -0
  97. maxframe/codegen/spe/learn/utils/tests/test_checks.py +48 -0
  98. maxframe/codegen/spe/learn/utils/tests/test_multiclass.py +52 -0
  99. maxframe/codegen/spe/learn/utils/tests/test_shuffle.py +50 -0
  100. maxframe/codegen/spe/learn/utils/tests/test_sparsefuncs.py +34 -0
  101. maxframe/codegen/spe/learn/utils/tests/test_validation.py +44 -0
  102. maxframe/codegen/spe/learn/utils/validation.py +35 -0
  103. maxframe/codegen/spe/objects.py +26 -0
  104. maxframe/codegen/spe/remote.py +29 -0
  105. maxframe/codegen/spe/tensor/__init__.py +28 -0
  106. maxframe/codegen/spe/tensor/arithmetic.py +95 -0
  107. maxframe/codegen/spe/tensor/core.py +41 -0
  108. maxframe/codegen/spe/tensor/datasource.py +165 -0
  109. maxframe/codegen/spe/tensor/extensions.py +35 -0
  110. maxframe/codegen/spe/tensor/fetch.py +26 -0
  111. maxframe/codegen/spe/tensor/indexing.py +63 -0
  112. maxframe/codegen/spe/tensor/linalg.py +63 -0
  113. maxframe/codegen/spe/tensor/merge.py +31 -0
  114. maxframe/codegen/spe/tensor/misc.py +121 -0
  115. maxframe/codegen/spe/tensor/random.py +29 -0
  116. maxframe/codegen/spe/tensor/reduction.py +39 -0
  117. maxframe/codegen/spe/tensor/reshape.py +26 -0
  118. maxframe/codegen/spe/tensor/sort.py +42 -0
  119. maxframe/codegen/spe/tensor/special.py +35 -0
  120. maxframe/codegen/spe/tensor/statistics.py +24 -0
  121. maxframe/codegen/spe/tensor/tests/__init__.py +13 -0
  122. maxframe/codegen/spe/tensor/tests/test_arithmetic.py +103 -0
  123. maxframe/codegen/spe/tensor/tests/test_datasource.py +99 -0
  124. maxframe/codegen/spe/tensor/tests/test_extensions.py +37 -0
  125. maxframe/codegen/spe/tensor/tests/test_indexing.py +44 -0
  126. maxframe/codegen/spe/tensor/tests/test_linalg.py +38 -0
  127. maxframe/codegen/spe/tensor/tests/test_merge.py +28 -0
  128. maxframe/codegen/spe/tensor/tests/test_misc.py +94 -0
  129. maxframe/codegen/spe/tensor/tests/test_random.py +55 -0
  130. maxframe/codegen/spe/tensor/tests/test_reduction.py +65 -0
  131. maxframe/codegen/spe/tensor/tests/test_reshape.py +39 -0
  132. maxframe/codegen/spe/tensor/tests/test_sort.py +49 -0
  133. maxframe/codegen/spe/tensor/tests/test_special.py +28 -0
  134. maxframe/codegen/spe/tensor/tests/test_statistics.py +29 -0
  135. maxframe/codegen/spe/tests/__init__.py +13 -0
  136. maxframe/codegen/spe/tests/test_remote.py +29 -0
  137. maxframe/codegen/spe/tests/test_spe_codegen.py +141 -0
  138. maxframe/codegen/spe/utils.py +54 -0
  139. maxframe/codegen/tests/__init__.py +13 -0
  140. maxframe/{tests → codegen/tests}/test_codegen.py +3 -5
  141. maxframe/config/__init__.py +1 -1
  142. maxframe/config/config.py +50 -23
  143. maxframe/config/tests/test_config.py +4 -12
  144. maxframe/config/validators.py +5 -0
  145. maxframe/conftest.py +38 -10
  146. maxframe/core/__init__.py +1 -0
  147. maxframe/core/context.py +110 -0
  148. maxframe/core/entity/__init__.py +1 -0
  149. maxframe/core/entity/core.py +0 -7
  150. maxframe/core/entity/objects.py +19 -5
  151. maxframe/core/entity/output_types.py +11 -0
  152. maxframe/core/entity/tests/test_objects.py +11 -12
  153. maxframe/core/entity/tileables.py +3 -1
  154. maxframe/core/entity/utils.py +15 -0
  155. maxframe/core/graph/__init__.py +6 -1
  156. maxframe/core/graph/builder/base.py +5 -1
  157. maxframe/core/graph/core.cp37-win32.pyd +0 -0
  158. maxframe/core/graph/core.pyx +17 -6
  159. maxframe/core/graph/entity.py +18 -6
  160. maxframe/core/operator/__init__.py +8 -3
  161. maxframe/core/operator/base.py +35 -12
  162. maxframe/core/operator/core.py +37 -14
  163. maxframe/core/operator/fetch.py +5 -18
  164. maxframe/core/operator/objects.py +0 -20
  165. maxframe/core/operator/shuffle.py +6 -72
  166. maxframe/dataframe/__init__.py +1 -0
  167. maxframe/dataframe/accessors/datetime_/core.py +7 -4
  168. maxframe/dataframe/accessors/string_/core.py +9 -6
  169. maxframe/dataframe/arithmetic/core.py +31 -20
  170. maxframe/dataframe/arithmetic/tests/test_arithmetic.py +6 -0
  171. maxframe/dataframe/core.py +98 -91
  172. maxframe/dataframe/datasource/core.py +8 -1
  173. maxframe/dataframe/datasource/date_range.py +8 -0
  174. maxframe/dataframe/datasource/from_index.py +9 -5
  175. maxframe/dataframe/datasource/from_records.py +9 -2
  176. maxframe/dataframe/datasource/from_tensor.py +32 -21
  177. maxframe/dataframe/datasource/read_csv.py +8 -2
  178. maxframe/dataframe/datasource/read_odps_query.py +109 -19
  179. maxframe/dataframe/datasource/read_odps_table.py +20 -5
  180. maxframe/dataframe/datasource/read_parquet.py +8 -3
  181. maxframe/dataframe/datasource/tests/test_datasource.py +80 -1
  182. maxframe/dataframe/datastore/tests/test_to_odps.py +52 -1
  183. maxframe/dataframe/datastore/to_csv.py +7 -3
  184. maxframe/dataframe/datastore/to_odps.py +42 -6
  185. maxframe/dataframe/extensions/__init__.py +6 -1
  186. maxframe/dataframe/extensions/apply_chunk.py +96 -136
  187. maxframe/dataframe/extensions/flatjson.py +3 -2
  188. maxframe/dataframe/extensions/flatmap.py +15 -7
  189. maxframe/dataframe/fetch/core.py +12 -1
  190. maxframe/dataframe/groupby/__init__.py +7 -0
  191. maxframe/dataframe/groupby/aggregation.py +62 -9
  192. maxframe/dataframe/groupby/apply.py +50 -74
  193. maxframe/dataframe/groupby/apply_chunk.py +393 -0
  194. maxframe/dataframe/groupby/core.py +80 -17
  195. maxframe/dataframe/groupby/extensions.py +26 -0
  196. maxframe/dataframe/groupby/fill.py +9 -4
  197. maxframe/dataframe/groupby/sample.py +7 -7
  198. maxframe/dataframe/groupby/tests/test_groupby.py +3 -3
  199. maxframe/dataframe/groupby/transform.py +57 -54
  200. maxframe/dataframe/indexing/align.py +7 -6
  201. maxframe/dataframe/indexing/getitem.py +9 -8
  202. maxframe/dataframe/indexing/iloc.py +28 -23
  203. maxframe/dataframe/indexing/insert.py +7 -3
  204. maxframe/dataframe/indexing/loc.py +9 -8
  205. maxframe/dataframe/indexing/reindex.py +36 -30
  206. maxframe/dataframe/indexing/rename_axis.py +18 -10
  207. maxframe/dataframe/indexing/reset_index.py +0 -2
  208. maxframe/dataframe/indexing/sample.py +13 -9
  209. maxframe/dataframe/indexing/set_axis.py +9 -6
  210. maxframe/dataframe/indexing/setitem.py +8 -5
  211. maxframe/dataframe/indexing/where.py +12 -9
  212. maxframe/dataframe/merge/__init__.py +0 -1
  213. maxframe/dataframe/merge/concat.py +10 -31
  214. maxframe/dataframe/merge/merge.py +2 -24
  215. maxframe/dataframe/misc/__init__.py +6 -0
  216. maxframe/dataframe/misc/_duplicate.py +7 -3
  217. maxframe/dataframe/misc/apply.py +106 -139
  218. maxframe/dataframe/misc/astype.py +3 -2
  219. maxframe/dataframe/misc/case_when.py +11 -7
  220. maxframe/dataframe/misc/cut.py +11 -10
  221. maxframe/dataframe/misc/describe.py +7 -3
  222. maxframe/dataframe/misc/drop.py +13 -11
  223. maxframe/dataframe/misc/eval.py +0 -2
  224. maxframe/dataframe/misc/get_dummies.py +78 -49
  225. maxframe/dataframe/misc/isin.py +13 -10
  226. maxframe/dataframe/misc/map.py +21 -6
  227. maxframe/dataframe/misc/melt.py +8 -1
  228. maxframe/dataframe/misc/pivot.py +232 -0
  229. maxframe/dataframe/misc/pivot_table.py +52 -40
  230. maxframe/dataframe/misc/rechunk.py +59 -0
  231. maxframe/dataframe/misc/shift.py +7 -4
  232. maxframe/dataframe/misc/stack.py +5 -3
  233. maxframe/dataframe/misc/tests/test_misc.py +167 -1
  234. maxframe/dataframe/misc/transform.py +63 -65
  235. maxframe/dataframe/misc/value_counts.py +7 -4
  236. maxframe/dataframe/missing/dropna.py +16 -7
  237. maxframe/dataframe/missing/fillna.py +18 -10
  238. maxframe/dataframe/missing/replace.py +10 -6
  239. maxframe/dataframe/missing/tests/test_missing.py +2 -2
  240. maxframe/dataframe/operators.py +1 -27
  241. maxframe/dataframe/reduction/aggregation.py +128 -3
  242. maxframe/dataframe/reduction/core.py +20 -6
  243. maxframe/dataframe/reduction/median.py +1 -1
  244. maxframe/dataframe/reduction/tests/test_reduction.py +33 -0
  245. maxframe/dataframe/reduction/unique.py +53 -7
  246. maxframe/dataframe/statistics/corr.py +9 -6
  247. maxframe/dataframe/statistics/quantile.py +9 -6
  248. maxframe/dataframe/tseries/to_datetime.py +6 -4
  249. maxframe/dataframe/utils.py +219 -31
  250. maxframe/dataframe/window/rolling.py +7 -4
  251. maxframe/env.py +1 -0
  252. maxframe/errors.py +9 -0
  253. maxframe/extension.py +13 -2
  254. maxframe/io/objects/core.py +67 -51
  255. maxframe/io/objects/tensor.py +73 -17
  256. maxframe/io/objects/tests/test_object_io.py +10 -55
  257. maxframe/io/odpsio/arrow.py +15 -2
  258. maxframe/io/odpsio/schema.py +43 -13
  259. maxframe/io/odpsio/tableio.py +63 -11
  260. maxframe/io/odpsio/tests/test_arrow.py +1 -2
  261. maxframe/io/odpsio/tests/test_schema.py +114 -1
  262. maxframe/io/odpsio/tests/test_tableio.py +42 -0
  263. maxframe/io/odpsio/tests/test_volumeio.py +21 -58
  264. maxframe/io/odpsio/volumeio.py +23 -8
  265. maxframe/learn/__init__.py +2 -2
  266. maxframe/learn/contrib/__init__.py +2 -2
  267. maxframe/learn/contrib/graph/connected_components.py +2 -1
  268. maxframe/learn/contrib/lightgbm/__init__.py +33 -0
  269. maxframe/learn/contrib/lightgbm/_predict.py +138 -0
  270. maxframe/learn/contrib/lightgbm/_train.py +163 -0
  271. maxframe/learn/contrib/lightgbm/callback.py +114 -0
  272. maxframe/learn/contrib/lightgbm/classifier.py +199 -0
  273. maxframe/learn/contrib/lightgbm/core.py +372 -0
  274. maxframe/learn/contrib/lightgbm/dataset.py +153 -0
  275. maxframe/learn/contrib/lightgbm/regressor.py +29 -0
  276. maxframe/learn/contrib/lightgbm/tests/__init__.py +13 -0
  277. maxframe/learn/contrib/lightgbm/tests/test_callback.py +58 -0
  278. maxframe/learn/contrib/llm/models/dashscope.py +34 -0
  279. maxframe/learn/contrib/llm/models/managed.py +15 -0
  280. maxframe/learn/contrib/llm/multi_modal.py +92 -0
  281. maxframe/learn/contrib/llm/text.py +21 -5
  282. maxframe/learn/contrib/models.py +38 -9
  283. maxframe/learn/contrib/utils.py +55 -0
  284. maxframe/learn/contrib/xgboost/callback.py +86 -0
  285. maxframe/learn/contrib/xgboost/classifier.py +26 -30
  286. maxframe/learn/contrib/xgboost/core.py +54 -42
  287. maxframe/learn/contrib/xgboost/dmatrix.py +19 -12
  288. maxframe/learn/contrib/xgboost/predict.py +13 -8
  289. maxframe/learn/contrib/xgboost/regressor.py +28 -27
  290. maxframe/learn/contrib/xgboost/tests/test_callback.py +41 -0
  291. maxframe/learn/contrib/xgboost/train.py +59 -16
  292. maxframe/learn/core.py +252 -0
  293. maxframe/learn/datasets/__init__.py +20 -0
  294. maxframe/learn/datasets/samples_generator.py +628 -0
  295. maxframe/learn/linear_model/__init__.py +15 -0
  296. maxframe/learn/linear_model/_base.py +163 -0
  297. maxframe/learn/linear_model/_lin_reg.py +175 -0
  298. maxframe/learn/metrics/__init__.py +25 -0
  299. maxframe/learn/metrics/_check_targets.py +95 -0
  300. maxframe/learn/metrics/_classification.py +1121 -0
  301. maxframe/learn/metrics/_regression.py +256 -0
  302. maxframe/learn/model_selection/__init__.py +15 -0
  303. maxframe/learn/model_selection/_split.py +451 -0
  304. maxframe/learn/model_selection/tests/__init__.py +13 -0
  305. maxframe/learn/model_selection/tests/test_split.py +156 -0
  306. maxframe/learn/preprocessing/__init__.py +16 -0
  307. maxframe/learn/preprocessing/_data/__init__.py +17 -0
  308. maxframe/learn/preprocessing/_data/min_max_scaler.py +390 -0
  309. maxframe/learn/preprocessing/_data/normalize.py +127 -0
  310. maxframe/learn/preprocessing/_data/standard_scaler.py +503 -0
  311. maxframe/learn/preprocessing/_data/utils.py +79 -0
  312. maxframe/learn/preprocessing/_label/__init__.py +16 -0
  313. maxframe/learn/preprocessing/_label/_label_binarizer.py +599 -0
  314. maxframe/learn/preprocessing/_label/_label_encoder.py +174 -0
  315. maxframe/learn/utils/__init__.py +4 -0
  316. maxframe/learn/utils/_encode.py +314 -0
  317. maxframe/learn/utils/checks.py +161 -0
  318. maxframe/learn/utils/core.py +33 -0
  319. maxframe/learn/utils/extmath.py +176 -0
  320. maxframe/learn/utils/multiclass.py +292 -0
  321. maxframe/learn/utils/shuffle.py +114 -0
  322. maxframe/learn/utils/sparsefuncs.py +87 -0
  323. maxframe/learn/utils/validation.py +775 -0
  324. maxframe/lib/__init__.py +0 -2
  325. maxframe/lib/compat.py +145 -0
  326. maxframe/lib/filesystem/_oss_lib/glob.py +1 -1
  327. maxframe/lib/mmh3.cp37-win32.pyd +0 -0
  328. maxframe/lib/sparse/__init__.py +10 -15
  329. maxframe/lib/sparse/array.py +45 -33
  330. maxframe/lib/sparse/core.py +0 -2
  331. maxframe/lib/sparse/linalg.py +31 -0
  332. maxframe/lib/sparse/matrix.py +5 -2
  333. maxframe/lib/sparse/tests/__init__.py +0 -2
  334. maxframe/lib/sparse/tests/test_sparse.py +53 -53
  335. maxframe/lib/sparse/vector.py +0 -2
  336. maxframe/mixin.py +59 -2
  337. maxframe/opcodes.py +13 -5
  338. maxframe/protocol.py +67 -14
  339. maxframe/remote/core.py +16 -14
  340. maxframe/remote/run_script.py +6 -3
  341. maxframe/serialization/__init__.py +2 -0
  342. maxframe/serialization/core.cp37-win32.pyd +0 -0
  343. maxframe/serialization/core.pxd +3 -0
  344. maxframe/serialization/core.pyi +3 -1
  345. maxframe/serialization/core.pyx +82 -4
  346. maxframe/serialization/pandas.py +5 -1
  347. maxframe/serialization/serializables/core.py +6 -5
  348. maxframe/serialization/serializables/field.py +2 -2
  349. maxframe/serialization/serializables/tests/test_field_type.py +3 -5
  350. maxframe/serialization/tests/test_serial.py +27 -0
  351. maxframe/session.py +4 -71
  352. maxframe/sperunner.py +165 -0
  353. maxframe/tensor/__init__.py +35 -2
  354. maxframe/tensor/arithmetic/__init__.py +2 -4
  355. maxframe/tensor/arithmetic/abs.py +0 -2
  356. maxframe/tensor/arithmetic/absolute.py +0 -2
  357. maxframe/tensor/arithmetic/add.py +34 -4
  358. maxframe/tensor/arithmetic/angle.py +0 -2
  359. maxframe/tensor/arithmetic/arccos.py +1 -4
  360. maxframe/tensor/arithmetic/arccosh.py +1 -3
  361. maxframe/tensor/arithmetic/arcsin.py +0 -2
  362. maxframe/tensor/arithmetic/arcsinh.py +0 -2
  363. maxframe/tensor/arithmetic/arctan.py +0 -2
  364. maxframe/tensor/arithmetic/arctan2.py +0 -2
  365. maxframe/tensor/arithmetic/arctanh.py +0 -2
  366. maxframe/tensor/arithmetic/around.py +0 -2
  367. maxframe/tensor/arithmetic/bitand.py +0 -2
  368. maxframe/tensor/arithmetic/bitor.py +1 -3
  369. maxframe/tensor/arithmetic/bitxor.py +1 -3
  370. maxframe/tensor/arithmetic/cbrt.py +0 -2
  371. maxframe/tensor/arithmetic/ceil.py +0 -2
  372. maxframe/tensor/arithmetic/clip.py +13 -13
  373. maxframe/tensor/arithmetic/conj.py +0 -2
  374. maxframe/tensor/arithmetic/copysign.py +0 -2
  375. maxframe/tensor/arithmetic/core.py +47 -39
  376. maxframe/tensor/arithmetic/cos.py +1 -3
  377. maxframe/tensor/arithmetic/cosh.py +0 -2
  378. maxframe/tensor/arithmetic/deg2rad.py +0 -2
  379. maxframe/tensor/arithmetic/degrees.py +0 -2
  380. maxframe/tensor/arithmetic/divide.py +0 -2
  381. maxframe/tensor/arithmetic/equal.py +0 -2
  382. maxframe/tensor/arithmetic/exp.py +1 -3
  383. maxframe/tensor/arithmetic/exp2.py +0 -2
  384. maxframe/tensor/arithmetic/expm1.py +0 -2
  385. maxframe/tensor/arithmetic/fabs.py +0 -2
  386. maxframe/tensor/arithmetic/fix.py +0 -2
  387. maxframe/tensor/arithmetic/float_power.py +0 -2
  388. maxframe/tensor/arithmetic/floor.py +0 -2
  389. maxframe/tensor/arithmetic/floordiv.py +0 -2
  390. maxframe/tensor/arithmetic/fmax.py +0 -2
  391. maxframe/tensor/arithmetic/fmin.py +0 -2
  392. maxframe/tensor/arithmetic/fmod.py +0 -2
  393. maxframe/tensor/arithmetic/frexp.py +6 -2
  394. maxframe/tensor/arithmetic/greater.py +0 -2
  395. maxframe/tensor/arithmetic/greater_equal.py +0 -2
  396. maxframe/tensor/arithmetic/hypot.py +0 -2
  397. maxframe/tensor/arithmetic/i0.py +1 -3
  398. maxframe/tensor/arithmetic/imag.py +0 -2
  399. maxframe/tensor/arithmetic/invert.py +1 -3
  400. maxframe/tensor/arithmetic/isclose.py +0 -2
  401. maxframe/tensor/arithmetic/iscomplex.py +0 -2
  402. maxframe/tensor/arithmetic/isfinite.py +1 -3
  403. maxframe/tensor/arithmetic/isinf.py +0 -2
  404. maxframe/tensor/arithmetic/isnan.py +0 -2
  405. maxframe/tensor/arithmetic/isreal.py +0 -2
  406. maxframe/tensor/arithmetic/ldexp.py +0 -2
  407. maxframe/tensor/arithmetic/less.py +0 -2
  408. maxframe/tensor/arithmetic/less_equal.py +0 -2
  409. maxframe/tensor/arithmetic/log.py +1 -3
  410. maxframe/tensor/arithmetic/log10.py +1 -3
  411. maxframe/tensor/arithmetic/log1p.py +1 -3
  412. maxframe/tensor/arithmetic/log2.py +1 -3
  413. maxframe/tensor/arithmetic/logaddexp.py +0 -2
  414. maxframe/tensor/arithmetic/logaddexp2.py +0 -2
  415. maxframe/tensor/arithmetic/logical_and.py +0 -2
  416. maxframe/tensor/arithmetic/logical_not.py +1 -3
  417. maxframe/tensor/arithmetic/logical_or.py +0 -2
  418. maxframe/tensor/arithmetic/logical_xor.py +0 -2
  419. maxframe/tensor/arithmetic/lshift.py +0 -2
  420. maxframe/tensor/arithmetic/maximum.py +0 -2
  421. maxframe/tensor/arithmetic/minimum.py +0 -2
  422. maxframe/tensor/arithmetic/mod.py +0 -2
  423. maxframe/tensor/arithmetic/modf.py +6 -2
  424. maxframe/tensor/arithmetic/multiply.py +37 -4
  425. maxframe/tensor/arithmetic/nan_to_num.py +0 -2
  426. maxframe/tensor/arithmetic/negative.py +0 -2
  427. maxframe/tensor/arithmetic/nextafter.py +0 -2
  428. maxframe/tensor/arithmetic/not_equal.py +0 -2
  429. maxframe/tensor/arithmetic/positive.py +0 -2
  430. maxframe/tensor/arithmetic/power.py +0 -2
  431. maxframe/tensor/arithmetic/rad2deg.py +0 -2
  432. maxframe/tensor/arithmetic/radians.py +0 -2
  433. maxframe/tensor/arithmetic/real.py +0 -2
  434. maxframe/tensor/arithmetic/reciprocal.py +5 -3
  435. maxframe/tensor/arithmetic/rint.py +1 -3
  436. maxframe/tensor/arithmetic/rshift.py +0 -2
  437. maxframe/tensor/arithmetic/setimag.py +0 -2
  438. maxframe/tensor/arithmetic/setreal.py +0 -2
  439. maxframe/tensor/arithmetic/sign.py +0 -2
  440. maxframe/tensor/arithmetic/signbit.py +0 -2
  441. maxframe/tensor/arithmetic/sin.py +0 -2
  442. maxframe/tensor/arithmetic/sinc.py +1 -3
  443. maxframe/tensor/arithmetic/sinh.py +0 -2
  444. maxframe/tensor/arithmetic/spacing.py +0 -2
  445. maxframe/tensor/arithmetic/sqrt.py +0 -2
  446. maxframe/tensor/arithmetic/square.py +0 -2
  447. maxframe/tensor/arithmetic/subtract.py +4 -2
  448. maxframe/tensor/arithmetic/tan.py +0 -2
  449. maxframe/tensor/arithmetic/tanh.py +0 -2
  450. maxframe/tensor/arithmetic/tests/__init__.py +0 -2
  451. maxframe/tensor/arithmetic/tests/test_arithmetic.py +43 -9
  452. maxframe/tensor/arithmetic/truediv.py +0 -2
  453. maxframe/tensor/arithmetic/trunc.py +0 -2
  454. maxframe/tensor/arithmetic/utils.py +32 -6
  455. maxframe/tensor/array_utils.py +3 -25
  456. maxframe/tensor/core.py +6 -6
  457. maxframe/tensor/datasource/__init__.py +10 -2
  458. maxframe/tensor/datasource/arange.py +0 -2
  459. maxframe/tensor/datasource/array.py +3 -22
  460. maxframe/tensor/datasource/core.py +15 -10
  461. maxframe/tensor/datasource/diag.py +140 -0
  462. maxframe/tensor/datasource/diagflat.py +69 -0
  463. maxframe/tensor/datasource/empty.py +0 -2
  464. maxframe/tensor/datasource/eye.py +95 -0
  465. maxframe/tensor/datasource/from_dataframe.py +0 -2
  466. maxframe/tensor/datasource/from_dense.py +0 -17
  467. maxframe/tensor/datasource/from_sparse.py +0 -2
  468. maxframe/tensor/datasource/full.py +0 -2
  469. maxframe/tensor/datasource/identity.py +54 -0
  470. maxframe/tensor/datasource/indices.py +115 -0
  471. maxframe/tensor/datasource/linspace.py +140 -0
  472. maxframe/tensor/datasource/meshgrid.py +135 -0
  473. maxframe/tensor/datasource/ones.py +8 -3
  474. maxframe/tensor/datasource/tests/test_datasource.py +32 -1
  475. maxframe/tensor/datasource/tri_array.py +107 -0
  476. maxframe/tensor/datasource/zeros.py +7 -3
  477. maxframe/tensor/extensions/__init__.py +31 -0
  478. maxframe/tensor/extensions/accessor.py +25 -0
  479. maxframe/tensor/extensions/apply_chunk.py +137 -0
  480. maxframe/tensor/indexing/__init__.py +1 -1
  481. maxframe/tensor/indexing/choose.py +8 -6
  482. maxframe/tensor/indexing/compress.py +0 -2
  483. maxframe/tensor/indexing/extract.py +0 -2
  484. maxframe/tensor/indexing/fill_diagonal.py +9 -6
  485. maxframe/tensor/indexing/flatnonzero.py +1 -3
  486. maxframe/tensor/indexing/getitem.py +10 -43
  487. maxframe/tensor/indexing/nonzero.py +2 -4
  488. maxframe/tensor/indexing/setitem.py +19 -9
  489. maxframe/tensor/indexing/slice.py +6 -3
  490. maxframe/tensor/indexing/take.py +0 -2
  491. maxframe/tensor/indexing/tests/__init__.py +0 -2
  492. maxframe/tensor/indexing/tests/test_indexing.py +0 -2
  493. maxframe/tensor/indexing/unravel_index.py +6 -6
  494. maxframe/tensor/lib/__init__.py +16 -0
  495. maxframe/tensor/lib/index_tricks.py +404 -0
  496. maxframe/tensor/linalg/__init__.py +36 -0
  497. maxframe/tensor/linalg/dot.py +145 -0
  498. maxframe/tensor/linalg/inner.py +36 -0
  499. maxframe/tensor/linalg/inv.py +83 -0
  500. maxframe/tensor/linalg/lu.py +115 -0
  501. maxframe/tensor/linalg/matmul.py +225 -0
  502. maxframe/tensor/linalg/qr.py +124 -0
  503. maxframe/tensor/linalg/solve_triangular.py +103 -0
  504. maxframe/tensor/linalg/svd.py +167 -0
  505. maxframe/tensor/linalg/tensordot.py +213 -0
  506. maxframe/tensor/linalg/vdot.py +73 -0
  507. maxframe/tensor/merge/__init__.py +4 -0
  508. maxframe/tensor/merge/append.py +74 -0
  509. maxframe/tensor/merge/column_stack.py +63 -0
  510. maxframe/tensor/merge/concatenate.py +3 -2
  511. maxframe/tensor/merge/dstack.py +71 -0
  512. maxframe/tensor/merge/hstack.py +70 -0
  513. maxframe/tensor/merge/stack.py +0 -2
  514. maxframe/tensor/merge/tests/test_merge.py +0 -2
  515. maxframe/tensor/misc/__init__.py +18 -5
  516. maxframe/tensor/misc/astype.py +10 -8
  517. maxframe/tensor/misc/broadcast_to.py +1 -1
  518. maxframe/tensor/misc/copy.py +64 -0
  519. maxframe/tensor/misc/diff.py +115 -0
  520. maxframe/tensor/misc/flatten.py +63 -0
  521. maxframe/tensor/misc/in1d.py +94 -0
  522. maxframe/tensor/misc/isin.py +130 -0
  523. maxframe/tensor/misc/ndim.py +53 -0
  524. maxframe/tensor/misc/ravel.py +0 -2
  525. maxframe/tensor/misc/repeat.py +129 -0
  526. maxframe/tensor/misc/searchsorted.py +147 -0
  527. maxframe/tensor/misc/setdiff1d.py +58 -0
  528. maxframe/tensor/misc/squeeze.py +117 -0
  529. maxframe/tensor/misc/swapaxes.py +113 -0
  530. maxframe/tensor/misc/tests/test_misc.py +0 -2
  531. maxframe/tensor/misc/transpose.py +8 -4
  532. maxframe/tensor/misc/trapezoid.py +123 -0
  533. maxframe/tensor/misc/unique.py +0 -1
  534. maxframe/tensor/misc/where.py +10 -8
  535. maxframe/tensor/operators.py +0 -34
  536. maxframe/tensor/random/__init__.py +3 -5
  537. maxframe/tensor/random/binomial.py +0 -2
  538. maxframe/tensor/random/bytes.py +0 -2
  539. maxframe/tensor/random/chisquare.py +0 -2
  540. maxframe/tensor/random/choice.py +9 -8
  541. maxframe/tensor/random/core.py +20 -5
  542. maxframe/tensor/random/dirichlet.py +0 -2
  543. maxframe/tensor/random/exponential.py +0 -2
  544. maxframe/tensor/random/f.py +2 -4
  545. maxframe/tensor/random/gamma.py +0 -2
  546. maxframe/tensor/random/geometric.py +0 -2
  547. maxframe/tensor/random/gumbel.py +0 -2
  548. maxframe/tensor/random/hypergeometric.py +0 -2
  549. maxframe/tensor/random/laplace.py +2 -4
  550. maxframe/tensor/random/logistic.py +0 -2
  551. maxframe/tensor/random/lognormal.py +0 -2
  552. maxframe/tensor/random/logseries.py +0 -2
  553. maxframe/tensor/random/multinomial.py +0 -2
  554. maxframe/tensor/random/multivariate_normal.py +0 -2
  555. maxframe/tensor/random/negative_binomial.py +0 -2
  556. maxframe/tensor/random/noncentral_chisquare.py +0 -2
  557. maxframe/tensor/random/noncentral_f.py +1 -3
  558. maxframe/tensor/random/normal.py +0 -2
  559. maxframe/tensor/random/pareto.py +0 -2
  560. maxframe/tensor/random/permutation.py +6 -3
  561. maxframe/tensor/random/poisson.py +0 -2
  562. maxframe/tensor/random/power.py +0 -2
  563. maxframe/tensor/random/rand.py +0 -2
  564. maxframe/tensor/random/randint.py +0 -2
  565. maxframe/tensor/random/randn.py +0 -2
  566. maxframe/tensor/random/random_integers.py +0 -2
  567. maxframe/tensor/random/random_sample.py +0 -2
  568. maxframe/tensor/random/rayleigh.py +0 -2
  569. maxframe/tensor/random/standard_cauchy.py +0 -2
  570. maxframe/tensor/random/standard_exponential.py +0 -2
  571. maxframe/tensor/random/standard_gamma.py +0 -2
  572. maxframe/tensor/random/standard_normal.py +0 -2
  573. maxframe/tensor/random/standard_t.py +0 -2
  574. maxframe/tensor/random/tests/__init__.py +0 -2
  575. maxframe/tensor/random/tests/test_random.py +0 -2
  576. maxframe/tensor/random/triangular.py +0 -2
  577. maxframe/tensor/random/uniform.py +0 -2
  578. maxframe/tensor/random/vonmises.py +0 -2
  579. maxframe/tensor/random/wald.py +0 -2
  580. maxframe/tensor/random/weibull.py +0 -2
  581. maxframe/tensor/random/zipf.py +0 -2
  582. maxframe/tensor/reduction/__init__.py +0 -2
  583. maxframe/tensor/reduction/all.py +0 -2
  584. maxframe/tensor/reduction/allclose.py +0 -2
  585. maxframe/tensor/reduction/any.py +0 -2
  586. maxframe/tensor/reduction/argmax.py +1 -3
  587. maxframe/tensor/reduction/argmin.py +1 -3
  588. maxframe/tensor/reduction/array_equal.py +0 -2
  589. maxframe/tensor/reduction/core.py +0 -2
  590. maxframe/tensor/reduction/count_nonzero.py +0 -2
  591. maxframe/tensor/reduction/cumprod.py +0 -2
  592. maxframe/tensor/reduction/cumsum.py +0 -2
  593. maxframe/tensor/reduction/max.py +0 -2
  594. maxframe/tensor/reduction/mean.py +0 -2
  595. maxframe/tensor/reduction/min.py +0 -2
  596. maxframe/tensor/reduction/nanargmax.py +0 -2
  597. maxframe/tensor/reduction/nanargmin.py +0 -2
  598. maxframe/tensor/reduction/nancumprod.py +0 -2
  599. maxframe/tensor/reduction/nancumsum.py +0 -2
  600. maxframe/tensor/reduction/nanmax.py +0 -2
  601. maxframe/tensor/reduction/nanmean.py +0 -2
  602. maxframe/tensor/reduction/nanmin.py +0 -2
  603. maxframe/tensor/reduction/nanprod.py +0 -2
  604. maxframe/tensor/reduction/nanstd.py +0 -2
  605. maxframe/tensor/reduction/nansum.py +0 -2
  606. maxframe/tensor/reduction/nanvar.py +0 -2
  607. maxframe/tensor/reduction/prod.py +0 -2
  608. maxframe/tensor/reduction/std.py +0 -2
  609. maxframe/tensor/reduction/sum.py +0 -2
  610. maxframe/tensor/reduction/tests/test_reduction.py +1 -4
  611. maxframe/tensor/reduction/var.py +0 -2
  612. maxframe/tensor/reshape/__init__.py +0 -2
  613. maxframe/tensor/reshape/reshape.py +6 -5
  614. maxframe/tensor/reshape/tests/__init__.py +0 -2
  615. maxframe/tensor/reshape/tests/test_reshape.py +0 -2
  616. maxframe/tensor/sort/__init__.py +16 -0
  617. maxframe/tensor/sort/argsort.py +150 -0
  618. maxframe/tensor/sort/sort.py +295 -0
  619. maxframe/tensor/special/__init__.py +37 -0
  620. maxframe/tensor/special/core.py +38 -0
  621. maxframe/tensor/special/misc.py +142 -0
  622. maxframe/tensor/special/statistical.py +56 -0
  623. maxframe/tensor/statistics/__init__.py +5 -0
  624. maxframe/tensor/statistics/average.py +143 -0
  625. maxframe/tensor/statistics/bincount.py +133 -0
  626. maxframe/tensor/statistics/quantile.py +10 -8
  627. maxframe/tensor/ufunc/__init__.py +0 -2
  628. maxframe/tensor/ufunc/ufunc.py +0 -2
  629. maxframe/tensor/utils.py +21 -3
  630. maxframe/tests/test_protocol.py +3 -3
  631. maxframe/tests/test_utils.py +210 -1
  632. maxframe/tests/utils.py +59 -1
  633. maxframe/udf.py +76 -6
  634. maxframe/utils.py +418 -17
  635. {maxframe-1.3.0.dist-info → maxframe-2.0.0.dist-info}/METADATA +5 -1
  636. maxframe-2.0.0.dist-info/RECORD +939 -0
  637. maxframe_client/clients/framedriver.py +19 -3
  638. maxframe_client/fetcher.py +113 -6
  639. maxframe_client/session/odps.py +173 -38
  640. maxframe_client/session/task.py +3 -1
  641. maxframe_client/tests/test_session.py +41 -5
  642. maxframe-1.3.0.dist-info/RECORD +0 -705
  643. {maxframe-1.3.0.dist-info → maxframe-2.0.0.dist-info}/WHEEL +0 -0
  644. {maxframe-1.3.0.dist-info → maxframe-2.0.0.dist-info}/top_level.txt +0 -0
@@ -13,7 +13,7 @@
13
13
  # limitations under the License.
14
14
 
15
15
  from numbers import Integral
16
- from typing import Dict
16
+ from typing import Dict, List
17
17
 
18
18
  import numpy as np
19
19
  import pandas as pd
@@ -21,7 +21,7 @@ from pandas.core.dtypes.cast import find_common_type
21
21
  from pandas.core.indexing import IndexingError
22
22
 
23
23
  from ... import opcodes
24
- from ...core import ENTITY_TYPE, OutputType
24
+ from ...core import ENTITY_TYPE, EntityData, OutputType
25
25
  from ...serialization.serializables import AnyField, KeyField, ListField
26
26
  from ...tensor.datasource import asarray
27
27
  from ...tensor.utils import calc_sliced_size, filter_inputs
@@ -182,17 +182,18 @@ class DataFrameLocGetItem(DataFrameOperator, DataFrameOperatorMixin):
182
182
  def can_index_miss(self):
183
183
  return False
184
184
 
185
- def _set_inputs(self, inputs):
186
- super()._set_inputs(inputs)
187
- inputs_iter = iter(self._inputs)
188
- self._input = next(inputs_iter)
185
+ @classmethod
186
+ def _set_inputs(cls, op: "DataFrameLocGetItem", inputs: List[EntityData]):
187
+ super()._set_inputs(op, inputs)
188
+ inputs_iter = iter(op._inputs)
189
+ op._input = next(inputs_iter)
189
190
  indexes = []
190
- for index in self.indexes:
191
+ for index in op.indexes:
191
192
  if isinstance(index, ENTITY_TYPE):
192
193
  indexes.append(next(inputs_iter))
193
194
  else:
194
195
  indexes.append(index)
195
- self.indexes = list(indexes)
196
+ op.indexes = list(indexes)
196
197
 
197
198
  @classmethod
198
199
  def _calc_slice_param(
@@ -12,6 +12,8 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
+ from typing import List
16
+
15
17
  import numpy as np
16
18
 
17
19
  try:
@@ -20,7 +22,7 @@ except ImportError: # pragma: no cover
20
22
  sps = None
21
23
 
22
24
  from ... import opcodes
23
- from ...core import ENTITY_TYPE
25
+ from ...core import ENTITY_TYPE, EntityData
24
26
  from ...serialization.serializables import (
25
27
  AnyField,
26
28
  BoolField,
@@ -53,6 +55,7 @@ class DataFrameReindex(DataFrameOperator, DataFrameOperatorMixin):
53
55
  level = AnyField("level", default=None)
54
56
  fill_value = AnyField("fill_value", default=None)
55
57
  limit = Int64Field("limit", default=None)
58
+ tolerance = Int64Field("tolerance", default=None)
56
59
  enable_sparse = BoolField("enable_sparse", default=None)
57
60
 
58
61
  @property
@@ -86,14 +89,15 @@ class DataFrameReindex(DataFrameOperator, DataFrameOperatorMixin):
86
89
  def can_index_miss(self):
87
90
  return True
88
91
 
89
- def _set_inputs(self, inputs):
90
- super()._set_inputs(inputs)
91
- inputs_iter = iter(self._inputs)
92
- self._input = next(inputs_iter)
93
- if self.index is not None and isinstance(self.index, ENTITY_TYPE):
94
- self.index = next(inputs_iter)
95
- if self.fill_value is not None and isinstance(self.fill_value, ENTITY_TYPE):
96
- self.fill_value = next(inputs_iter)
92
+ @classmethod
93
+ def _set_inputs(cls, op: "DataFrameReindex", inputs: List[EntityData]):
94
+ super()._set_inputs(op, inputs)
95
+ inputs_iter = iter(op._inputs)
96
+ op._input = next(inputs_iter)
97
+ if op.index is not None and isinstance(op.index, ENTITY_TYPE):
98
+ op.index = next(inputs_iter)
99
+ if op.fill_value is not None and isinstance(op.fill_value, ENTITY_TYPE):
100
+ op.fill_value = next(inputs_iter)
97
101
 
98
102
  def __call__(self, df_or_series):
99
103
  inputs = [df_or_series]
@@ -137,7 +141,21 @@ class DataFrameReindex(DataFrameOperator, DataFrameOperatorMixin):
137
141
  )
138
142
 
139
143
 
140
- def reindex(df_or_series, *args, **kwargs):
144
+ def reindex(
145
+ df_or_series,
146
+ labels=None,
147
+ *,
148
+ index=None,
149
+ columns=None,
150
+ axis=None,
151
+ method=None,
152
+ copy=None,
153
+ level=None,
154
+ fill_value=None,
155
+ limit=None,
156
+ tolerance=None,
157
+ enable_sparse=False
158
+ ):
141
159
  """
142
160
  Conform Series/DataFrame to new index with optional filling logic.
143
161
 
@@ -342,26 +360,14 @@ def reindex(df_or_series, *args, **kwargs):
342
360
 
343
361
  See the :ref:`user guide <basics.reindexing>` for more.
344
362
  """
345
- axes = validate_axis_style_args(df_or_series, args, kwargs, "labels", "reindex")
346
- # Pop these, since the values are in `kwargs` under different names
347
- kwargs.pop("index", None)
348
- if df_or_series.ndim > 1:
349
- kwargs.pop("columns", None)
350
- kwargs.pop("axis", None)
351
- kwargs.pop("labels", None)
352
- method = kwargs.pop("method", None)
353
- level = kwargs.pop("level", None)
354
- copy = kwargs.pop("copy", True)
355
- limit = kwargs.pop("limit", None)
356
- tolerance = kwargs.pop("tolerance", None)
357
- fill_value = kwargs.pop("fill_value", None)
358
- enable_sparse = kwargs.pop("enable_sparse", None)
359
-
360
- if kwargs:
361
- raise TypeError(
362
- "reindex() got an unexpected keyword "
363
- f'argument "{list(kwargs.keys())[0]}"'
364
- )
363
+ axes_kwargs = dict(index=index, columns=columns, axis=axis)
364
+ axes = validate_axis_style_args(
365
+ df_or_series,
366
+ (labels,),
367
+ {k: v for k, v in axes_kwargs.items() if v is not None},
368
+ "labels",
369
+ "reindex",
370
+ )
365
371
 
366
372
  if tolerance is not None: # pragma: no cover
367
373
  raise NotImplementedError("`tolerance` is not supported yet")
@@ -14,7 +14,8 @@
14
14
 
15
15
  from ... import opcodes
16
16
  from ...core import OutputType
17
- from ...serialization.serializables import AnyField, BoolField
17
+ from ...serialization.serializables import AnyField, BoolField, Int32Field
18
+ from ...utils import no_default
18
19
  from ..core import DATAFRAME_TYPE
19
20
  from ..operators import DataFrameOperator, DataFrameOperatorMixin
20
21
  from ..utils import build_df, build_series, parse_index, validate_axis
@@ -27,6 +28,7 @@ class DataFrameRenameAxis(DataFrameOperator, DataFrameOperatorMixin):
27
28
  columns = AnyField("columns", default=None)
28
29
  copy_value = BoolField("copy_value", default=None)
29
30
  level = AnyField("level", default=None)
31
+ axis = Int32Field("axis", default=0)
30
32
 
31
33
  @staticmethod
32
34
  def _update_params(params, obj, mapper, axis, level):
@@ -54,7 +56,7 @@ class DataFrameRenameAxis(DataFrameOperator, DataFrameOperatorMixin):
54
56
  else:
55
57
  self._output_types = [OutputType.series]
56
58
 
57
- if self.index is not None:
59
+ if self.axis == 0:
58
60
  self._update_params(
59
61
  params, df_or_series, self.index, axis=0, level=self.level
60
62
  )
@@ -68,21 +70,27 @@ class DataFrameRenameAxis(DataFrameOperator, DataFrameOperatorMixin):
68
70
 
69
71
  def rename_axis_with_level(
70
72
  df_or_series,
71
- mapper=None,
72
- index=None,
73
- columns=None,
73
+ mapper=no_default,
74
+ index=no_default,
75
+ columns=no_default,
74
76
  axis=0,
75
77
  copy=True,
76
78
  level=None,
77
79
  inplace=False,
78
80
  ):
79
81
  axis = validate_axis(axis, df_or_series)
80
- if mapper is not None:
82
+ if mapper is not no_default:
81
83
  if axis == 0:
82
84
  index = mapper
83
85
  else:
84
86
  columns = mapper
85
- op = DataFrameRenameAxis(index=index, columns=columns, copy_value=copy, level=level)
87
+ op = DataFrameRenameAxis(
88
+ index=None if index is no_default else index,
89
+ columns=None if columns is no_default else columns,
90
+ copy_value=copy,
91
+ level=level,
92
+ axis=0 if index is not no_default else 1,
93
+ )
86
94
  result = op(df_or_series)
87
95
  if not inplace:
88
96
  return result
@@ -92,9 +100,9 @@ def rename_axis_with_level(
92
100
 
93
101
  def rename_axis(
94
102
  df_or_series,
95
- mapper=None,
96
- index=None,
97
- columns=None,
103
+ mapper=no_default,
104
+ index=no_default,
105
+ columns=no_default,
98
106
  axis=0,
99
107
  copy=True,
100
108
  inplace=False,
@@ -1,5 +1,3 @@
1
- #!/usr/bin/env python
2
- # -*- coding: utf-8 -*-
3
1
  # Copyright 1999-2025 Alibaba Group Holding Ltd.
4
2
  #
5
3
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -13,11 +13,12 @@
13
13
  # limitations under the License.
14
14
 
15
15
  import copy
16
+ from typing import List
16
17
 
17
18
  import numpy as np
18
19
 
19
20
  from ... import opcodes
20
- from ...core import ENTITY_TYPE, get_output_types
21
+ from ...core import ENTITY_TYPE, EntityData, get_output_types
21
22
  from ...serialization.serializables import (
22
23
  AnyField,
23
24
  BoolField,
@@ -46,23 +47,23 @@ class DataFrameSample(DataFrameOperator, DataFrameOperatorMixin):
46
47
  random_state = np.random.RandomState(seed)
47
48
  super().__init__(random_state=random_state, seed=seed, **kw)
48
49
 
49
- def _set_inputs(self, inputs):
50
- super()._set_inputs(inputs)
50
+ @classmethod
51
+ def _set_inputs(cls, op: "DataFrameSample", inputs: List[EntityData]):
52
+ super()._set_inputs(op, inputs)
51
53
  it = iter(inputs)
52
54
  next(it)
53
- if isinstance(self.weights, ENTITY_TYPE):
54
- self.weights = next(it)
55
+ if isinstance(op.weights, ENTITY_TYPE):
56
+ op.weights = next(it)
55
57
 
56
58
  def __call__(self, df):
57
59
  params = df.params
58
60
  new_shape = list(df.shape)
59
61
 
60
- if self.frac is not None and not np.isnan(df.shape[self.axis]):
61
- self.size = int(self.frac * df.shape[self.axis])
62
- self.frac = None
63
-
64
62
  if self.size is not None:
65
63
  new_shape[self.axis] = self.size
64
+ elif self.frac is not None:
65
+ new_shape[self.axis] = np.nan
66
+
66
67
  params["shape"] = tuple(new_shape)
67
68
  params["index_value"] = parse_index(df.index_value.to_pandas()[:0])
68
69
 
@@ -196,6 +197,9 @@ def sample(
196
197
  falcon 2 2 10
197
198
  fish 0 0 8
198
199
  """
200
+ if frac and n:
201
+ raise ValueError("Please enter a value for `frac` OR `n`, not both.")
202
+
199
203
  axis = validate_axis(axis or 0, df_or_series)
200
204
  if axis == 1:
201
205
  raise NotImplementedError("Currently cannot sample over columns")
@@ -12,11 +12,13 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
+ from typing import List
16
+
15
17
  import numpy as np
16
18
  import pandas as pd
17
19
 
18
20
  from ... import opcodes
19
- from ...core import ENTITY_TYPE, get_output_types
21
+ from ...core import ENTITY_TYPE, EntityData, get_output_types
20
22
  from ...serialization.serializables import AnyField, Int8Field, KeyField
21
23
  from ..operators import DataFrameOperator, DataFrameOperatorMixin
22
24
  from ..utils import parse_index, validate_axis
@@ -29,11 +31,12 @@ class DataFrameSetAxis(DataFrameOperator, DataFrameOperatorMixin):
29
31
  axis = Int8Field("axis", default=None)
30
32
  value = AnyField("value", default=None)
31
33
 
32
- def _set_inputs(self, inputs):
33
- super()._set_inputs(inputs)
34
- self.input = inputs[0]
35
- if isinstance(self.value, ENTITY_TYPE):
36
- self.value = inputs[-1]
34
+ @classmethod
35
+ def _set_inputs(cls, op: "DataFrameSetAxis", inputs: List[EntityData]):
36
+ super()._set_inputs(op, inputs)
37
+ op.input = inputs[0]
38
+ if isinstance(op.value, ENTITY_TYPE):
39
+ op.value = inputs[-1]
37
40
 
38
41
  def __call__(self, df_or_series):
39
42
  new_size = self.value.shape[0]
@@ -12,12 +12,14 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
+ from typing import List
16
+
15
17
  import numpy as np
16
18
  import pandas as pd
17
19
  from pandas.api.types import is_list_like
18
20
 
19
21
  from ... import opcodes
20
- from ...core import OutputType
22
+ from ...core import EntityData, OutputType
21
23
  from ...serialization.serializables import AnyField, KeyField
22
24
  from ...tensor.core import TENSOR_TYPE
23
25
  from ...utils import pd_release_version
@@ -43,11 +45,12 @@ class DataFrameSetitem(DataFrameOperator, DataFrameOperatorMixin):
43
45
  if self.output_types is None:
44
46
  self.output_types = [OutputType.dataframe]
45
47
 
46
- def _set_inputs(self, inputs):
47
- super()._set_inputs(inputs)
48
- self.target = self._inputs[0]
48
+ @classmethod
49
+ def _set_inputs(cls, op: "DataFrameSetitem", inputs: List[EntityData]):
50
+ super()._set_inputs(op, inputs)
51
+ op.target = op._inputs[0]
49
52
  if len(inputs) > 1:
50
- self.value = self._inputs[-1]
53
+ op.value = op._inputs[-1]
51
54
 
52
55
  @staticmethod
53
56
  def _is_scalar_tensor(t):
@@ -12,11 +12,13 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
+ from typing import List
16
+
15
17
  import numpy as np
16
18
  import pandas as pd
17
19
 
18
20
  from ... import opcodes
19
- from ...core import ENTITY_TYPE
21
+ from ...core import ENTITY_TYPE, EntityData
20
22
  from ...serialization.serializables import AnyField, BoolField, Int32Field, StringField
21
23
  from ...tensor.utils import filter_inputs
22
24
  from ..core import DATAFRAME_TYPE, SERIES_TYPE
@@ -99,14 +101,15 @@ class DataFrameWhere(DataFrameOperator, DataFrameOperatorMixin):
99
101
  index_value=df_or_series.index_value,
100
102
  )
101
103
 
102
- def _set_inputs(self, inputs):
103
- super()._set_inputs(inputs)
104
- inputs_iter = iter(self._inputs)
105
- self._input = next(inputs_iter)
106
- if isinstance(self.cond, ENTITY_TYPE):
107
- self.cond = next(inputs_iter)
108
- if isinstance(self.other, ENTITY_TYPE):
109
- self.other = next(inputs_iter)
104
+ @classmethod
105
+ def _set_inputs(cls, op: "DataFrameWhere", inputs: List[EntityData]):
106
+ super()._set_inputs(op, inputs)
107
+ inputs_iter = iter(op._inputs)
108
+ op._input = next(inputs_iter)
109
+ if isinstance(op.cond, ENTITY_TYPE):
110
+ op.cond = next(inputs_iter)
111
+ if isinstance(op.other, ENTITY_TYPE):
112
+ op.other = next(inputs_iter)
110
113
 
111
114
 
112
115
  _doc_template = """
@@ -16,7 +16,6 @@ from .append import DataFrameAppend, append
16
16
  from .concat import DataFrameConcat, concat
17
17
  from .merge import (
18
18
  DataFrameMerge,
19
- DataFrameMergeAlign,
20
19
  DistributedMapJoinHint,
21
20
  MapJoinHint,
22
21
  SkewJoinHint,
@@ -17,7 +17,7 @@ from typing import List, Union
17
17
  import pandas as pd
18
18
 
19
19
  from ... import opcodes
20
- from ...core import ENTITY_TYPE, OutputType
20
+ from ...core import ENTITY_TYPE, EntityData, OutputType
21
21
  from ...serialization.serializables import (
22
22
  AnyField,
23
23
  BoolField,
@@ -256,45 +256,24 @@ class GroupByConcat(DataFrameOperator, DataFrameOperatorMixin):
256
256
  def groupby_params(self):
257
257
  return self._groupby_params
258
258
 
259
- def _set_inputs(self, inputs):
260
- super()._set_inputs(inputs)
261
- inputs_iter = iter(self._inputs)
259
+ @classmethod
260
+ def _set_inputs(cls, op: "GroupByConcat", inputs: List[EntityData]):
261
+ super()._set_inputs(op, inputs)
262
+ inputs_iter = iter(op._inputs)
262
263
 
263
264
  new_groups = []
264
- for _ in self._groups:
265
+ for _ in op._groups:
265
266
  new_groups.append(next(inputs_iter))
266
- self._groups = new_groups
267
+ op._groups = new_groups
267
268
 
268
- if isinstance(self._groupby_params["by"], list):
269
+ if isinstance(op._groupby_params["by"], list):
269
270
  by = []
270
- for v in self._groupby_params["by"]:
271
+ for v in op._groupby_params["by"]:
271
272
  if isinstance(v, ENTITY_TYPE):
272
273
  by.append(next(inputs_iter))
273
274
  else:
274
275
  by.append(v)
275
- self._groupby_params["by"] = by
276
-
277
- @classmethod
278
- def execute(cls, ctx, op):
279
- input_data = [ctx[input.key] for input in op.groups]
280
- obj = pd.concat([d.obj for d in input_data])
281
-
282
- params = op.groupby_params.copy()
283
- if isinstance(params["by"], list):
284
- by = []
285
- for v in params["by"]:
286
- if isinstance(v, ENTITY_TYPE):
287
- by.append(ctx[v.key])
288
- else:
289
- by.append(v)
290
- params["by"] = by
291
- selection = params.pop("selection", None)
292
-
293
- result = obj.groupby(**params)
294
- if selection:
295
- result = result[selection]
296
-
297
- ctx[op.outputs[0].key] = result
276
+ op._groupby_params["by"] = by
298
277
 
299
278
 
300
279
  def concat(
@@ -22,13 +22,11 @@ from pandas import Index
22
22
 
23
23
  from ... import opcodes
24
24
  from ...core import OutputType
25
- from ...core.operator import MapReduceOperator
26
25
  from ...serialization.serializables import (
27
26
  AnyField,
28
27
  BoolField,
29
28
  DictField,
30
29
  Int32Field,
31
- KeyField,
32
30
  NamedTupleField,
33
31
  Serializable,
34
32
  StringField,
@@ -53,26 +51,6 @@ DEFAULT_BLOOM_FILTER_ON = "large"
53
51
 
54
52
  cudf = lazy_import("cudf")
55
53
 
56
-
57
- class DataFrameMergeAlign(MapReduceOperator, DataFrameOperatorMixin):
58
- _op_type_ = opcodes.DATAFRAME_SHUFFLE_MERGE_ALIGN
59
-
60
- index_shuffle_size = Int32Field("index_shuffle_size")
61
- shuffle_on = AnyField("shuffle_on")
62
-
63
- input = KeyField("input")
64
- # for mapper
65
- mapper_id = Int32Field("mapper_id", default=0)
66
-
67
- def __init__(self, output_types=None, **kw):
68
- super().__init__(_output_types=output_types, **kw)
69
- self._output_types = output_types
70
-
71
- @property
72
- def output_limit(self) -> int:
73
- return len(self.output_types)
74
-
75
-
76
54
  MergeSplitInfo = namedtuple("MergeSplitInfo", "split_side, split_index, nsplits")
77
55
 
78
56
 
@@ -300,8 +278,8 @@ class DataFrameMerge(DataFrameOperator, DataFrameOperatorMixin):
300
278
  left_hint = AnyField("left_hint", default=None)
301
279
  right_hint = AnyField("right_hint", default=None)
302
280
 
303
- def __init__(self, copy=None, **kwargs):
304
- super().__init__(copy_=copy, **kwargs)
281
+ def __init__(self, copy=None, output_types=None, **kwargs):
282
+ super().__init__(copy_=copy, _output_types=output_types, **kwargs)
305
283
 
306
284
  def __call__(self, left, right):
307
285
  empty_left, empty_right = build_df(left), build_df(right)
@@ -38,8 +38,10 @@ from .map import index_map, series_map
38
38
  from .melt import melt
39
39
  from .memory_usage import df_memory_usage, index_memory_usage, series_memory_usage
40
40
  from .pct_change import pct_change
41
+ from .pivot import pivot
41
42
  from .pivot_table import pivot_table
42
43
  from .qcut import qcut
44
+ from .rechunk import rechunk
43
45
  from .select_dtypes import select_dtypes
44
46
  from .shift import shift, tshift
45
47
  from .stack import stack
@@ -68,9 +70,11 @@ def _install():
68
70
  setattr(t, "melt", melt)
69
71
  setattr(t, "memory_usage", df_memory_usage)
70
72
  setattr(t, "pct_change", pct_change)
73
+ setattr(t, "pivot", pivot)
71
74
  setattr(t, "pivot_table", pivot_table)
72
75
  setattr(t, "pop", df_pop)
73
76
  setattr(t, "query", df_query)
77
+ setattr(t, "rechunk", rechunk)
74
78
  setattr(t, "select_dtypes", select_dtypes)
75
79
  setattr(t, "shift", shift)
76
80
  setattr(t, "stack", stack)
@@ -96,6 +100,7 @@ def _install():
96
100
  setattr(t, "map", series_map)
97
101
  setattr(t, "memory_usage", series_memory_usage)
98
102
  setattr(t, "pct_change", pct_change)
103
+ setattr(t, "rechunk", rechunk)
99
104
  setattr(t, "shift", shift)
100
105
  setattr(t, "transform", series_transform)
101
106
  setattr(t, "tshift", tshift)
@@ -112,6 +117,7 @@ def _install():
112
117
  setattr(t, "is_monotonic_decreasing", property(fget=is_monotonic_decreasing))
113
118
  setattr(t, "map", index_map)
114
119
  setattr(t, "memory_usage", index_memory_usage)
120
+ setattr(t, "rechunk", rechunk)
115
121
  setattr(t, "value_counts", value_counts)
116
122
 
117
123
 
@@ -12,9 +12,12 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
+ from typing import List
16
+
15
17
  import pandas as pd
16
18
  from pandas.api.types import is_list_like
17
19
 
20
+ from ...core import EntityData
18
21
  from ...core.operator import MapReduceOperator
19
22
  from ...serialization.serializables import AnyField, KeyField, StringField
20
23
  from ..operators import DataFrameOperatorMixin
@@ -26,9 +29,10 @@ class DuplicateOperand(MapReduceOperator, DataFrameOperatorMixin):
26
29
  keep = AnyField("keep", default="first")
27
30
  method = StringField("method", default=None)
28
31
 
29
- def _set_inputs(self, inputs):
30
- super()._set_inputs(inputs)
31
- self.input = self._inputs[0]
32
+ @classmethod
33
+ def _set_inputs(cls, op: "DuplicateOperand", inputs: List[EntityData]):
34
+ super()._set_inputs(op, inputs)
35
+ op.input = op._inputs[0]
32
36
 
33
37
 
34
38
  def validate_subset(df, subset):