maxframe 2.2.0__cp312-cp312-win_amd64.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 (1094) hide show
  1. maxframe/__init__.py +33 -0
  2. maxframe/_utils.cp312-win_amd64.pyd +0 -0
  3. maxframe/_utils.pxd +33 -0
  4. maxframe/_utils.pyi +21 -0
  5. maxframe/_utils.pyx +561 -0
  6. maxframe/codegen/__init__.py +27 -0
  7. maxframe/codegen/core.py +596 -0
  8. maxframe/codegen/spe/__init__.py +16 -0
  9. maxframe/codegen/spe/core.py +307 -0
  10. maxframe/codegen/spe/dataframe/__init__.py +38 -0
  11. maxframe/codegen/spe/dataframe/accessors/__init__.py +15 -0
  12. maxframe/codegen/spe/dataframe/accessors/base.py +71 -0
  13. maxframe/codegen/spe/dataframe/accessors/dict_.py +89 -0
  14. maxframe/codegen/spe/dataframe/accessors/list_.py +44 -0
  15. maxframe/codegen/spe/dataframe/accessors/struct_.py +28 -0
  16. maxframe/codegen/spe/dataframe/arithmetic.py +89 -0
  17. maxframe/codegen/spe/dataframe/datasource.py +181 -0
  18. maxframe/codegen/spe/dataframe/datastore.py +204 -0
  19. maxframe/codegen/spe/dataframe/extensions.py +63 -0
  20. maxframe/codegen/spe/dataframe/fetch.py +26 -0
  21. maxframe/codegen/spe/dataframe/groupby.py +312 -0
  22. maxframe/codegen/spe/dataframe/indexing.py +333 -0
  23. maxframe/codegen/spe/dataframe/merge.py +106 -0
  24. maxframe/codegen/spe/dataframe/misc.py +262 -0
  25. maxframe/codegen/spe/dataframe/missing.py +64 -0
  26. maxframe/codegen/spe/dataframe/reduction.py +165 -0
  27. maxframe/codegen/spe/dataframe/reshape.py +46 -0
  28. maxframe/codegen/spe/dataframe/sort.py +96 -0
  29. maxframe/codegen/spe/dataframe/statistics.py +46 -0
  30. maxframe/codegen/spe/dataframe/tests/__init__.py +13 -0
  31. maxframe/codegen/spe/dataframe/tests/accessors/__init__.py +13 -0
  32. maxframe/codegen/spe/dataframe/tests/accessors/test_base.py +33 -0
  33. maxframe/codegen/spe/dataframe/tests/accessors/test_dict.py +304 -0
  34. maxframe/codegen/spe/dataframe/tests/accessors/test_list.py +134 -0
  35. maxframe/codegen/spe/dataframe/tests/accessors/test_struct.py +75 -0
  36. maxframe/codegen/spe/dataframe/tests/indexing/__init__.py +13 -0
  37. maxframe/codegen/spe/dataframe/tests/indexing/conftest.py +58 -0
  38. maxframe/codegen/spe/dataframe/tests/indexing/test_getitem.py +124 -0
  39. maxframe/codegen/spe/dataframe/tests/indexing/test_iloc.py +95 -0
  40. maxframe/codegen/spe/dataframe/tests/indexing/test_indexing.py +39 -0
  41. maxframe/codegen/spe/dataframe/tests/indexing/test_loc.py +35 -0
  42. maxframe/codegen/spe/dataframe/tests/indexing/test_rename.py +51 -0
  43. maxframe/codegen/spe/dataframe/tests/indexing/test_reset_index.py +88 -0
  44. maxframe/codegen/spe/dataframe/tests/indexing/test_sample.py +45 -0
  45. maxframe/codegen/spe/dataframe/tests/indexing/test_set_axis.py +45 -0
  46. maxframe/codegen/spe/dataframe/tests/indexing/test_set_index.py +41 -0
  47. maxframe/codegen/spe/dataframe/tests/indexing/test_setitem.py +46 -0
  48. maxframe/codegen/spe/dataframe/tests/misc/__init__.py +13 -0
  49. maxframe/codegen/spe/dataframe/tests/misc/test_apply.py +133 -0
  50. maxframe/codegen/spe/dataframe/tests/misc/test_drop_duplicates.py +92 -0
  51. maxframe/codegen/spe/dataframe/tests/misc/test_misc.py +202 -0
  52. maxframe/codegen/spe/dataframe/tests/missing/__init__.py +13 -0
  53. maxframe/codegen/spe/dataframe/tests/missing/test_checkna.py +94 -0
  54. maxframe/codegen/spe/dataframe/tests/missing/test_dropna.py +50 -0
  55. maxframe/codegen/spe/dataframe/tests/missing/test_fillna.py +94 -0
  56. maxframe/codegen/spe/dataframe/tests/missing/test_replace.py +45 -0
  57. maxframe/codegen/spe/dataframe/tests/test_arithmetic.py +73 -0
  58. maxframe/codegen/spe/dataframe/tests/test_datasource.py +184 -0
  59. maxframe/codegen/spe/dataframe/tests/test_datastore.py +200 -0
  60. maxframe/codegen/spe/dataframe/tests/test_extensions.py +88 -0
  61. maxframe/codegen/spe/dataframe/tests/test_groupby.py +288 -0
  62. maxframe/codegen/spe/dataframe/tests/test_merge.py +426 -0
  63. maxframe/codegen/spe/dataframe/tests/test_reduction.py +104 -0
  64. maxframe/codegen/spe/dataframe/tests/test_reshape.py +79 -0
  65. maxframe/codegen/spe/dataframe/tests/test_sort.py +179 -0
  66. maxframe/codegen/spe/dataframe/tests/test_statistics.py +70 -0
  67. maxframe/codegen/spe/dataframe/tests/test_tseries.py +29 -0
  68. maxframe/codegen/spe/dataframe/tests/test_value_counts.py +60 -0
  69. maxframe/codegen/spe/dataframe/tests/test_window.py +69 -0
  70. maxframe/codegen/spe/dataframe/tseries.py +46 -0
  71. maxframe/codegen/spe/dataframe/udf.py +62 -0
  72. maxframe/codegen/spe/dataframe/value_counts.py +31 -0
  73. maxframe/codegen/spe/dataframe/window.py +65 -0
  74. maxframe/codegen/spe/learn/__init__.py +15 -0
  75. maxframe/codegen/spe/learn/contrib/__init__.py +15 -0
  76. maxframe/codegen/spe/learn/contrib/lightgbm.py +160 -0
  77. maxframe/codegen/spe/learn/contrib/models.py +41 -0
  78. maxframe/codegen/spe/learn/contrib/pytorch.py +49 -0
  79. maxframe/codegen/spe/learn/contrib/tests/__init__.py +13 -0
  80. maxframe/codegen/spe/learn/contrib/tests/test_lightgbm.py +123 -0
  81. maxframe/codegen/spe/learn/contrib/tests/test_models.py +41 -0
  82. maxframe/codegen/spe/learn/contrib/tests/test_pytorch.py +53 -0
  83. maxframe/codegen/spe/learn/contrib/tests/test_xgboost.py +99 -0
  84. maxframe/codegen/spe/learn/contrib/xgboost.py +152 -0
  85. maxframe/codegen/spe/learn/metrics/__init__.py +15 -0
  86. maxframe/codegen/spe/learn/metrics/_classification.py +120 -0
  87. maxframe/codegen/spe/learn/metrics/_ranking.py +76 -0
  88. maxframe/codegen/spe/learn/metrics/pairwise.py +51 -0
  89. maxframe/codegen/spe/learn/metrics/tests/__init__.py +13 -0
  90. maxframe/codegen/spe/learn/metrics/tests/test_classification.py +93 -0
  91. maxframe/codegen/spe/learn/metrics/tests/test_pairwise.py +36 -0
  92. maxframe/codegen/spe/learn/metrics/tests/test_ranking.py +59 -0
  93. maxframe/codegen/spe/learn/model_selection/__init__.py +13 -0
  94. maxframe/codegen/spe/learn/model_selection/tests/__init__.py +13 -0
  95. maxframe/codegen/spe/learn/model_selection/tests/test_split.py +41 -0
  96. maxframe/codegen/spe/learn/preprocessing/__init__.py +15 -0
  97. maxframe/codegen/spe/learn/preprocessing/_data.py +37 -0
  98. maxframe/codegen/spe/learn/preprocessing/_label.py +47 -0
  99. maxframe/codegen/spe/learn/preprocessing/tests/__init__.py +13 -0
  100. maxframe/codegen/spe/learn/preprocessing/tests/test_data.py +31 -0
  101. maxframe/codegen/spe/learn/preprocessing/tests/test_label.py +43 -0
  102. maxframe/codegen/spe/learn/utils/__init__.py +15 -0
  103. maxframe/codegen/spe/learn/utils/checks.py +55 -0
  104. maxframe/codegen/spe/learn/utils/multiclass.py +60 -0
  105. maxframe/codegen/spe/learn/utils/shuffle.py +85 -0
  106. maxframe/codegen/spe/learn/utils/sparsefuncs.py +35 -0
  107. maxframe/codegen/spe/learn/utils/tests/__init__.py +13 -0
  108. maxframe/codegen/spe/learn/utils/tests/test_checks.py +48 -0
  109. maxframe/codegen/spe/learn/utils/tests/test_multiclass.py +52 -0
  110. maxframe/codegen/spe/learn/utils/tests/test_shuffle.py +50 -0
  111. maxframe/codegen/spe/learn/utils/tests/test_sparsefuncs.py +34 -0
  112. maxframe/codegen/spe/learn/utils/tests/test_validation.py +44 -0
  113. maxframe/codegen/spe/learn/utils/validation.py +35 -0
  114. maxframe/codegen/spe/objects.py +26 -0
  115. maxframe/codegen/spe/remote.py +29 -0
  116. maxframe/codegen/spe/tensor/__init__.py +31 -0
  117. maxframe/codegen/spe/tensor/arithmetic.py +95 -0
  118. maxframe/codegen/spe/tensor/core.py +41 -0
  119. maxframe/codegen/spe/tensor/datasource.py +165 -0
  120. maxframe/codegen/spe/tensor/extensions.py +35 -0
  121. maxframe/codegen/spe/tensor/fetch.py +26 -0
  122. maxframe/codegen/spe/tensor/fft.py +74 -0
  123. maxframe/codegen/spe/tensor/indexing.py +63 -0
  124. maxframe/codegen/spe/tensor/linalg.py +90 -0
  125. maxframe/codegen/spe/tensor/merge.py +31 -0
  126. maxframe/codegen/spe/tensor/misc.py +175 -0
  127. maxframe/codegen/spe/tensor/random.py +29 -0
  128. maxframe/codegen/spe/tensor/reduction.py +39 -0
  129. maxframe/codegen/spe/tensor/reshape.py +26 -0
  130. maxframe/codegen/spe/tensor/sort.py +42 -0
  131. maxframe/codegen/spe/tensor/spatial.py +45 -0
  132. maxframe/codegen/spe/tensor/special.py +35 -0
  133. maxframe/codegen/spe/tensor/statistics.py +68 -0
  134. maxframe/codegen/spe/tensor/tests/__init__.py +13 -0
  135. maxframe/codegen/spe/tensor/tests/test_arithmetic.py +103 -0
  136. maxframe/codegen/spe/tensor/tests/test_datasource.py +99 -0
  137. maxframe/codegen/spe/tensor/tests/test_extensions.py +37 -0
  138. maxframe/codegen/spe/tensor/tests/test_fft.py +64 -0
  139. maxframe/codegen/spe/tensor/tests/test_indexing.py +44 -0
  140. maxframe/codegen/spe/tensor/tests/test_linalg.py +52 -0
  141. maxframe/codegen/spe/tensor/tests/test_merge.py +28 -0
  142. maxframe/codegen/spe/tensor/tests/test_misc.py +144 -0
  143. maxframe/codegen/spe/tensor/tests/test_random.py +55 -0
  144. maxframe/codegen/spe/tensor/tests/test_reduction.py +65 -0
  145. maxframe/codegen/spe/tensor/tests/test_reshape.py +39 -0
  146. maxframe/codegen/spe/tensor/tests/test_sort.py +49 -0
  147. maxframe/codegen/spe/tensor/tests/test_spatial.py +33 -0
  148. maxframe/codegen/spe/tensor/tests/test_special.py +28 -0
  149. maxframe/codegen/spe/tensor/tests/test_statistics.py +43 -0
  150. maxframe/codegen/spe/tests/__init__.py +13 -0
  151. maxframe/codegen/spe/tests/test_remote.py +29 -0
  152. maxframe/codegen/spe/tests/test_spe_codegen.py +135 -0
  153. maxframe/codegen/spe/utils.py +56 -0
  154. maxframe/codegen/tests/__init__.py +13 -0
  155. maxframe/codegen/tests/test_codegen.py +67 -0
  156. maxframe/config/__init__.py +15 -0
  157. maxframe/config/config.py +627 -0
  158. maxframe/config/tests/__init__.py +13 -0
  159. maxframe/config/tests/test_config.py +114 -0
  160. maxframe/config/tests/test_validators.py +46 -0
  161. maxframe/config/validators.py +142 -0
  162. maxframe/conftest.py +251 -0
  163. maxframe/core/__init__.py +53 -0
  164. maxframe/core/accessor.py +45 -0
  165. maxframe/core/base.py +156 -0
  166. maxframe/core/context.py +110 -0
  167. maxframe/core/entity/__init__.py +34 -0
  168. maxframe/core/entity/core.py +150 -0
  169. maxframe/core/entity/executable.py +337 -0
  170. maxframe/core/entity/objects.py +115 -0
  171. maxframe/core/entity/output_types.py +98 -0
  172. maxframe/core/entity/tests/__init__.py +13 -0
  173. maxframe/core/entity/tests/test_objects.py +42 -0
  174. maxframe/core/entity/tileables.py +367 -0
  175. maxframe/core/entity/utils.py +39 -0
  176. maxframe/core/graph/__init__.py +22 -0
  177. maxframe/core/graph/builder/__init__.py +15 -0
  178. maxframe/core/graph/builder/base.py +91 -0
  179. maxframe/core/graph/builder/tileable.py +34 -0
  180. maxframe/core/graph/builder/utils.py +37 -0
  181. maxframe/core/graph/core.cp312-win_amd64.pyd +0 -0
  182. maxframe/core/graph/core.pyx +478 -0
  183. maxframe/core/graph/entity.py +158 -0
  184. maxframe/core/graph/tests/__init__.py +13 -0
  185. maxframe/core/graph/tests/test_graph.py +205 -0
  186. maxframe/core/mode.py +96 -0
  187. maxframe/core/operator/__init__.py +32 -0
  188. maxframe/core/operator/base.py +480 -0
  189. maxframe/core/operator/core.py +307 -0
  190. maxframe/core/operator/fetch.py +40 -0
  191. maxframe/core/operator/objects.py +43 -0
  192. maxframe/core/operator/shuffle.py +45 -0
  193. maxframe/core/operator/tests/__init__.py +13 -0
  194. maxframe/core/operator/tests/test_core.py +64 -0
  195. maxframe/core/operator/utils.py +68 -0
  196. maxframe/core/tests/__init__.py +13 -0
  197. maxframe/core/tests/test_mode.py +75 -0
  198. maxframe/dataframe/__init__.py +89 -0
  199. maxframe/dataframe/accessors/__init__.py +15 -0
  200. maxframe/dataframe/accessors/compat.py +45 -0
  201. maxframe/dataframe/accessors/datetime_/__init__.py +35 -0
  202. maxframe/dataframe/accessors/datetime_/accessor.py +67 -0
  203. maxframe/dataframe/accessors/datetime_/core.py +82 -0
  204. maxframe/dataframe/accessors/datetime_/tests/__init__.py +13 -0
  205. maxframe/dataframe/accessors/datetime_/tests/test_datetime_accessor.py +41 -0
  206. maxframe/dataframe/accessors/dict_/__init__.py +43 -0
  207. maxframe/dataframe/accessors/dict_/accessor.py +39 -0
  208. maxframe/dataframe/accessors/dict_/contains.py +72 -0
  209. maxframe/dataframe/accessors/dict_/core.py +48 -0
  210. maxframe/dataframe/accessors/dict_/getitem.py +140 -0
  211. maxframe/dataframe/accessors/dict_/length.py +64 -0
  212. maxframe/dataframe/accessors/dict_/remove.py +75 -0
  213. maxframe/dataframe/accessors/dict_/setitem.py +79 -0
  214. maxframe/dataframe/accessors/dict_/tests/__init__.py +13 -0
  215. maxframe/dataframe/accessors/dict_/tests/test_dict_accessor.py +168 -0
  216. maxframe/dataframe/accessors/list_/__init__.py +37 -0
  217. maxframe/dataframe/accessors/list_/accessor.py +39 -0
  218. maxframe/dataframe/accessors/list_/core.py +48 -0
  219. maxframe/dataframe/accessors/list_/getitem.py +128 -0
  220. maxframe/dataframe/accessors/list_/length.py +64 -0
  221. maxframe/dataframe/accessors/list_/tests/__init__.py +13 -0
  222. maxframe/dataframe/accessors/list_/tests/test_list_accessor.py +81 -0
  223. maxframe/dataframe/accessors/plotting/__init__.py +40 -0
  224. maxframe/dataframe/accessors/plotting/core.py +78 -0
  225. maxframe/dataframe/accessors/plotting/tests/__init__.py +13 -0
  226. maxframe/dataframe/accessors/plotting/tests/test_plotting_accessor.py +136 -0
  227. maxframe/dataframe/accessors/string_/__init__.py +36 -0
  228. maxframe/dataframe/accessors/string_/accessor.py +215 -0
  229. maxframe/dataframe/accessors/string_/core.py +224 -0
  230. maxframe/dataframe/accessors/string_/tests/__init__.py +13 -0
  231. maxframe/dataframe/accessors/string_/tests/test_string_accessor.py +73 -0
  232. maxframe/dataframe/accessors/struct_/__init__.py +37 -0
  233. maxframe/dataframe/accessors/struct_/accessor.py +39 -0
  234. maxframe/dataframe/accessors/struct_/core.py +43 -0
  235. maxframe/dataframe/accessors/struct_/dtypes.py +53 -0
  236. maxframe/dataframe/accessors/struct_/field.py +123 -0
  237. maxframe/dataframe/accessors/struct_/tests/__init__.py +13 -0
  238. maxframe/dataframe/accessors/struct_/tests/test_struct_accessor.py +91 -0
  239. maxframe/dataframe/arithmetic/__init__.py +369 -0
  240. maxframe/dataframe/arithmetic/abs.py +33 -0
  241. maxframe/dataframe/arithmetic/add.py +60 -0
  242. maxframe/dataframe/arithmetic/arccos.py +28 -0
  243. maxframe/dataframe/arithmetic/arccosh.py +28 -0
  244. maxframe/dataframe/arithmetic/arcsin.py +28 -0
  245. maxframe/dataframe/arithmetic/arcsinh.py +28 -0
  246. maxframe/dataframe/arithmetic/arctan.py +28 -0
  247. maxframe/dataframe/arithmetic/arctanh.py +28 -0
  248. maxframe/dataframe/arithmetic/between.py +106 -0
  249. maxframe/dataframe/arithmetic/bitwise_and.py +46 -0
  250. maxframe/dataframe/arithmetic/bitwise_or.py +50 -0
  251. maxframe/dataframe/arithmetic/bitwise_xor.py +46 -0
  252. maxframe/dataframe/arithmetic/ceil.py +28 -0
  253. maxframe/dataframe/arithmetic/core.py +361 -0
  254. maxframe/dataframe/arithmetic/cos.py +28 -0
  255. maxframe/dataframe/arithmetic/cosh.py +28 -0
  256. maxframe/dataframe/arithmetic/degrees.py +28 -0
  257. maxframe/dataframe/arithmetic/docstring.py +416 -0
  258. maxframe/dataframe/arithmetic/dot.py +237 -0
  259. maxframe/dataframe/arithmetic/equal.py +58 -0
  260. maxframe/dataframe/arithmetic/exp.py +28 -0
  261. maxframe/dataframe/arithmetic/exp2.py +28 -0
  262. maxframe/dataframe/arithmetic/expm1.py +28 -0
  263. maxframe/dataframe/arithmetic/floor.py +28 -0
  264. maxframe/dataframe/arithmetic/floordiv.py +64 -0
  265. maxframe/dataframe/arithmetic/greater.py +59 -0
  266. maxframe/dataframe/arithmetic/greater_equal.py +59 -0
  267. maxframe/dataframe/arithmetic/invert.py +33 -0
  268. maxframe/dataframe/arithmetic/is_ufuncs.py +62 -0
  269. maxframe/dataframe/arithmetic/less.py +57 -0
  270. maxframe/dataframe/arithmetic/less_equal.py +59 -0
  271. maxframe/dataframe/arithmetic/log.py +28 -0
  272. maxframe/dataframe/arithmetic/log10.py +28 -0
  273. maxframe/dataframe/arithmetic/log2.py +28 -0
  274. maxframe/dataframe/arithmetic/mod.py +60 -0
  275. maxframe/dataframe/arithmetic/multiply.py +60 -0
  276. maxframe/dataframe/arithmetic/negative.py +33 -0
  277. maxframe/dataframe/arithmetic/not_equal.py +58 -0
  278. maxframe/dataframe/arithmetic/power.py +68 -0
  279. maxframe/dataframe/arithmetic/radians.py +28 -0
  280. maxframe/dataframe/arithmetic/round.py +144 -0
  281. maxframe/dataframe/arithmetic/sin.py +28 -0
  282. maxframe/dataframe/arithmetic/sinh.py +28 -0
  283. maxframe/dataframe/arithmetic/sqrt.py +28 -0
  284. maxframe/dataframe/arithmetic/subtract.py +64 -0
  285. maxframe/dataframe/arithmetic/tan.py +28 -0
  286. maxframe/dataframe/arithmetic/tanh.py +28 -0
  287. maxframe/dataframe/arithmetic/tests/__init__.py +13 -0
  288. maxframe/dataframe/arithmetic/tests/test_arithmetic.py +724 -0
  289. maxframe/dataframe/arithmetic/truediv.py +64 -0
  290. maxframe/dataframe/arithmetic/trunc.py +28 -0
  291. maxframe/dataframe/arrays.py +864 -0
  292. maxframe/dataframe/core.py +2393 -0
  293. maxframe/dataframe/datasource/__init__.py +33 -0
  294. maxframe/dataframe/datasource/core.py +88 -0
  295. maxframe/dataframe/datasource/dataframe.py +59 -0
  296. maxframe/dataframe/datasource/date_range.py +512 -0
  297. maxframe/dataframe/datasource/from_dict.py +124 -0
  298. maxframe/dataframe/datasource/from_index.py +58 -0
  299. maxframe/dataframe/datasource/from_records.py +191 -0
  300. maxframe/dataframe/datasource/from_tensor.py +498 -0
  301. maxframe/dataframe/datasource/index.py +117 -0
  302. maxframe/dataframe/datasource/read_csv.py +533 -0
  303. maxframe/dataframe/datasource/read_odps_query.py +513 -0
  304. maxframe/dataframe/datasource/read_odps_table.py +273 -0
  305. maxframe/dataframe/datasource/read_parquet.py +426 -0
  306. maxframe/dataframe/datasource/series.py +55 -0
  307. maxframe/dataframe/datasource/tests/__init__.py +13 -0
  308. maxframe/dataframe/datasource/tests/test_datasource.py +663 -0
  309. maxframe/dataframe/datastore/__init__.py +30 -0
  310. maxframe/dataframe/datastore/core.py +19 -0
  311. maxframe/dataframe/datastore/tests/__init__.py +13 -0
  312. maxframe/dataframe/datastore/tests/test_to_odps.py +99 -0
  313. maxframe/dataframe/datastore/to_csv.py +219 -0
  314. maxframe/dataframe/datastore/to_odps.py +258 -0
  315. maxframe/dataframe/extensions/__init__.py +70 -0
  316. maxframe/dataframe/extensions/accessor.py +35 -0
  317. maxframe/dataframe/extensions/apply_chunk.py +733 -0
  318. maxframe/dataframe/extensions/cartesian_chunk.py +153 -0
  319. maxframe/dataframe/extensions/collect_kv.py +126 -0
  320. maxframe/dataframe/extensions/extract_kv.py +177 -0
  321. maxframe/dataframe/extensions/flatjson.py +132 -0
  322. maxframe/dataframe/extensions/flatmap.py +329 -0
  323. maxframe/dataframe/extensions/map_reduce.py +263 -0
  324. maxframe/dataframe/extensions/rebalance.py +62 -0
  325. maxframe/dataframe/extensions/reshuffle.py +83 -0
  326. maxframe/dataframe/extensions/tests/__init__.py +13 -0
  327. maxframe/dataframe/extensions/tests/test_apply_chunk.py +194 -0
  328. maxframe/dataframe/extensions/tests/test_extensions.py +198 -0
  329. maxframe/dataframe/extensions/tests/test_map_reduce.py +135 -0
  330. maxframe/dataframe/fetch/__init__.py +15 -0
  331. maxframe/dataframe/fetch/core.py +97 -0
  332. maxframe/dataframe/groupby/__init__.py +101 -0
  333. maxframe/dataframe/groupby/aggregation.py +437 -0
  334. maxframe/dataframe/groupby/apply.py +235 -0
  335. maxframe/dataframe/groupby/apply_chunk.py +409 -0
  336. maxframe/dataframe/groupby/core.py +326 -0
  337. maxframe/dataframe/groupby/cum.py +102 -0
  338. maxframe/dataframe/groupby/expanding.py +264 -0
  339. maxframe/dataframe/groupby/extensions.py +26 -0
  340. maxframe/dataframe/groupby/fill.py +149 -0
  341. maxframe/dataframe/groupby/getitem.py +105 -0
  342. maxframe/dataframe/groupby/head.py +115 -0
  343. maxframe/dataframe/groupby/rank.py +136 -0
  344. maxframe/dataframe/groupby/rolling.py +206 -0
  345. maxframe/dataframe/groupby/sample.py +214 -0
  346. maxframe/dataframe/groupby/shift.py +114 -0
  347. maxframe/dataframe/groupby/tests/__init__.py +13 -0
  348. maxframe/dataframe/groupby/tests/test_groupby.py +373 -0
  349. maxframe/dataframe/groupby/transform.py +264 -0
  350. maxframe/dataframe/indexing/__init__.py +103 -0
  351. maxframe/dataframe/indexing/add_prefix_suffix.py +110 -0
  352. maxframe/dataframe/indexing/align.py +350 -0
  353. maxframe/dataframe/indexing/at.py +83 -0
  354. maxframe/dataframe/indexing/droplevel.py +195 -0
  355. maxframe/dataframe/indexing/filter.py +169 -0
  356. maxframe/dataframe/indexing/get_level_values.py +76 -0
  357. maxframe/dataframe/indexing/getitem.py +205 -0
  358. maxframe/dataframe/indexing/iat.py +82 -0
  359. maxframe/dataframe/indexing/iloc.py +711 -0
  360. maxframe/dataframe/indexing/insert.py +90 -0
  361. maxframe/dataframe/indexing/loc.py +694 -0
  362. maxframe/dataframe/indexing/reindex.py +541 -0
  363. maxframe/dataframe/indexing/rename.py +445 -0
  364. maxframe/dataframe/indexing/rename_axis.py +217 -0
  365. maxframe/dataframe/indexing/reorder_levels.py +143 -0
  366. maxframe/dataframe/indexing/reset_index.py +427 -0
  367. maxframe/dataframe/indexing/sample.py +232 -0
  368. maxframe/dataframe/indexing/set_axis.py +197 -0
  369. maxframe/dataframe/indexing/set_index.py +128 -0
  370. maxframe/dataframe/indexing/setitem.py +133 -0
  371. maxframe/dataframe/indexing/swaplevel.py +185 -0
  372. maxframe/dataframe/indexing/take.py +99 -0
  373. maxframe/dataframe/indexing/tests/__init__.py +13 -0
  374. maxframe/dataframe/indexing/tests/test_indexing.py +488 -0
  375. maxframe/dataframe/indexing/truncate.py +140 -0
  376. maxframe/dataframe/indexing/where.py +300 -0
  377. maxframe/dataframe/indexing/xs.py +148 -0
  378. maxframe/dataframe/initializer.py +298 -0
  379. maxframe/dataframe/merge/__init__.py +50 -0
  380. maxframe/dataframe/merge/append.py +120 -0
  381. maxframe/dataframe/merge/combine_first.py +120 -0
  382. maxframe/dataframe/merge/compare.py +387 -0
  383. maxframe/dataframe/merge/concat.py +500 -0
  384. maxframe/dataframe/merge/merge.py +806 -0
  385. maxframe/dataframe/merge/tests/__init__.py +13 -0
  386. maxframe/dataframe/merge/tests/test_merge.py +390 -0
  387. maxframe/dataframe/merge/update.py +271 -0
  388. maxframe/dataframe/misc/__init__.py +131 -0
  389. maxframe/dataframe/misc/_duplicate.py +56 -0
  390. maxframe/dataframe/misc/apply.py +730 -0
  391. maxframe/dataframe/misc/astype.py +237 -0
  392. maxframe/dataframe/misc/case_when.py +145 -0
  393. maxframe/dataframe/misc/check_monotonic.py +84 -0
  394. maxframe/dataframe/misc/check_unique.py +51 -0
  395. maxframe/dataframe/misc/clip.py +145 -0
  396. maxframe/dataframe/misc/cut.py +386 -0
  397. maxframe/dataframe/misc/describe.py +278 -0
  398. maxframe/dataframe/misc/diff.py +210 -0
  399. maxframe/dataframe/misc/drop.py +442 -0
  400. maxframe/dataframe/misc/drop_duplicates.py +251 -0
  401. maxframe/dataframe/misc/duplicated.py +292 -0
  402. maxframe/dataframe/misc/eval.py +730 -0
  403. maxframe/dataframe/misc/explode.py +171 -0
  404. maxframe/dataframe/misc/get_dummies.py +241 -0
  405. maxframe/dataframe/misc/isin.py +220 -0
  406. maxframe/dataframe/misc/map.py +347 -0
  407. maxframe/dataframe/misc/memory_usage.py +248 -0
  408. maxframe/dataframe/misc/pct_change.py +68 -0
  409. maxframe/dataframe/misc/qcut.py +104 -0
  410. maxframe/dataframe/misc/rechunk.py +59 -0
  411. maxframe/dataframe/misc/select_dtypes.py +104 -0
  412. maxframe/dataframe/misc/shift.py +259 -0
  413. maxframe/dataframe/misc/tests/__init__.py +13 -0
  414. maxframe/dataframe/misc/tests/test_misc.py +615 -0
  415. maxframe/dataframe/misc/to_numeric.py +181 -0
  416. maxframe/dataframe/misc/transform.py +346 -0
  417. maxframe/dataframe/misc/transpose.py +148 -0
  418. maxframe/dataframe/misc/valid_index.py +115 -0
  419. maxframe/dataframe/misc/value_counts.py +206 -0
  420. maxframe/dataframe/missing/__init__.py +53 -0
  421. maxframe/dataframe/missing/checkna.py +230 -0
  422. maxframe/dataframe/missing/dropna.py +294 -0
  423. maxframe/dataframe/missing/fillna.py +283 -0
  424. maxframe/dataframe/missing/replace.py +446 -0
  425. maxframe/dataframe/missing/tests/__init__.py +13 -0
  426. maxframe/dataframe/missing/tests/test_missing.py +90 -0
  427. maxframe/dataframe/operators.py +231 -0
  428. maxframe/dataframe/reduction/__init__.py +124 -0
  429. maxframe/dataframe/reduction/aggregation.py +499 -0
  430. maxframe/dataframe/reduction/all.py +78 -0
  431. maxframe/dataframe/reduction/any.py +78 -0
  432. maxframe/dataframe/reduction/argmax.py +100 -0
  433. maxframe/dataframe/reduction/argmin.py +100 -0
  434. maxframe/dataframe/reduction/core.py +898 -0
  435. maxframe/dataframe/reduction/count.py +63 -0
  436. maxframe/dataframe/reduction/cov.py +166 -0
  437. maxframe/dataframe/reduction/cummax.py +30 -0
  438. maxframe/dataframe/reduction/cummin.py +30 -0
  439. maxframe/dataframe/reduction/cumprod.py +30 -0
  440. maxframe/dataframe/reduction/cumsum.py +30 -0
  441. maxframe/dataframe/reduction/custom_reduction.py +42 -0
  442. maxframe/dataframe/reduction/idxmax.py +185 -0
  443. maxframe/dataframe/reduction/idxmin.py +185 -0
  444. maxframe/dataframe/reduction/kurtosis.py +111 -0
  445. maxframe/dataframe/reduction/max.py +65 -0
  446. maxframe/dataframe/reduction/mean.py +63 -0
  447. maxframe/dataframe/reduction/median.py +56 -0
  448. maxframe/dataframe/reduction/min.py +65 -0
  449. maxframe/dataframe/reduction/nunique.py +142 -0
  450. maxframe/dataframe/reduction/prod.py +81 -0
  451. maxframe/dataframe/reduction/reduction_size.py +36 -0
  452. maxframe/dataframe/reduction/sem.py +73 -0
  453. maxframe/dataframe/reduction/skew.py +93 -0
  454. maxframe/dataframe/reduction/std.py +53 -0
  455. maxframe/dataframe/reduction/str_concat.py +51 -0
  456. maxframe/dataframe/reduction/sum.py +81 -0
  457. maxframe/dataframe/reduction/tests/__init__.py +13 -0
  458. maxframe/dataframe/reduction/tests/test_reduction.py +529 -0
  459. maxframe/dataframe/reduction/unique.py +153 -0
  460. maxframe/dataframe/reduction/var.py +76 -0
  461. maxframe/dataframe/reshape/__init__.py +38 -0
  462. maxframe/dataframe/reshape/melt.py +169 -0
  463. maxframe/dataframe/reshape/pivot.py +233 -0
  464. maxframe/dataframe/reshape/pivot_table.py +275 -0
  465. maxframe/dataframe/reshape/stack.py +240 -0
  466. maxframe/dataframe/reshape/unstack.py +114 -0
  467. maxframe/dataframe/sort/__init__.py +42 -0
  468. maxframe/dataframe/sort/argsort.py +62 -0
  469. maxframe/dataframe/sort/core.py +37 -0
  470. maxframe/dataframe/sort/nlargest.py +238 -0
  471. maxframe/dataframe/sort/nsmallest.py +228 -0
  472. maxframe/dataframe/sort/sort_index.py +153 -0
  473. maxframe/dataframe/sort/sort_values.py +301 -0
  474. maxframe/dataframe/sort/tests/__init__.py +13 -0
  475. maxframe/dataframe/sort/tests/test_sort.py +81 -0
  476. maxframe/dataframe/statistics/__init__.py +33 -0
  477. maxframe/dataframe/statistics/corr.py +284 -0
  478. maxframe/dataframe/statistics/quantile.py +338 -0
  479. maxframe/dataframe/statistics/tests/__init__.py +13 -0
  480. maxframe/dataframe/statistics/tests/test_statistics.py +82 -0
  481. maxframe/dataframe/tests/__init__.py +13 -0
  482. maxframe/dataframe/tests/test_initializer.py +60 -0
  483. maxframe/dataframe/tests/test_typing.py +104 -0
  484. maxframe/dataframe/tests/test_utils.py +165 -0
  485. maxframe/dataframe/tseries/__init__.py +13 -0
  486. maxframe/dataframe/tseries/tests/__init__.py +13 -0
  487. maxframe/dataframe/tseries/tests/test_tseries.py +30 -0
  488. maxframe/dataframe/tseries/to_datetime.py +299 -0
  489. maxframe/dataframe/typing_.py +185 -0
  490. maxframe/dataframe/ufunc/__init__.py +27 -0
  491. maxframe/dataframe/ufunc/tensor.py +54 -0
  492. maxframe/dataframe/ufunc/ufunc.py +53 -0
  493. maxframe/dataframe/utils.py +1647 -0
  494. maxframe/dataframe/window/__init__.py +29 -0
  495. maxframe/dataframe/window/aggregation.py +100 -0
  496. maxframe/dataframe/window/core.py +82 -0
  497. maxframe/dataframe/window/ewm.py +247 -0
  498. maxframe/dataframe/window/expanding.py +151 -0
  499. maxframe/dataframe/window/rolling.py +389 -0
  500. maxframe/dataframe/window/tests/__init__.py +13 -0
  501. maxframe/dataframe/window/tests/test_ewm.py +70 -0
  502. maxframe/dataframe/window/tests/test_expanding.py +60 -0
  503. maxframe/dataframe/window/tests/test_rolling.py +57 -0
  504. maxframe/env.py +37 -0
  505. maxframe/errors.py +47 -0
  506. maxframe/extension.py +107 -0
  507. maxframe/io/__init__.py +13 -0
  508. maxframe/io/objects/__init__.py +24 -0
  509. maxframe/io/objects/core.py +156 -0
  510. maxframe/io/objects/tensor.py +132 -0
  511. maxframe/io/objects/tests/__init__.py +13 -0
  512. maxframe/io/objects/tests/test_object_io.py +79 -0
  513. maxframe/io/odpsio/__init__.py +23 -0
  514. maxframe/io/odpsio/arrow.py +161 -0
  515. maxframe/io/odpsio/schema.py +496 -0
  516. maxframe/io/odpsio/tableio.py +727 -0
  517. maxframe/io/odpsio/tests/__init__.py +13 -0
  518. maxframe/io/odpsio/tests/test_arrow.py +132 -0
  519. maxframe/io/odpsio/tests/test_schema.py +580 -0
  520. maxframe/io/odpsio/tests/test_tableio.py +205 -0
  521. maxframe/io/odpsio/tests/test_volumeio.py +75 -0
  522. maxframe/io/odpsio/volumeio.py +102 -0
  523. maxframe/learn/__init__.py +25 -0
  524. maxframe/learn/cluster/__init__.py +15 -0
  525. maxframe/learn/cluster/_kmeans.py +782 -0
  526. maxframe/learn/contrib/__init__.py +17 -0
  527. maxframe/learn/contrib/graph/__init__.py +15 -0
  528. maxframe/learn/contrib/graph/connected_components.py +216 -0
  529. maxframe/learn/contrib/graph/tests/__init__.py +13 -0
  530. maxframe/learn/contrib/graph/tests/test_connected_components.py +53 -0
  531. maxframe/learn/contrib/lightgbm/__init__.py +33 -0
  532. maxframe/learn/contrib/lightgbm/_predict.py +138 -0
  533. maxframe/learn/contrib/lightgbm/_train.py +163 -0
  534. maxframe/learn/contrib/lightgbm/callback.py +114 -0
  535. maxframe/learn/contrib/lightgbm/classifier.py +199 -0
  536. maxframe/learn/contrib/lightgbm/core.py +372 -0
  537. maxframe/learn/contrib/lightgbm/dataset.py +153 -0
  538. maxframe/learn/contrib/lightgbm/regressor.py +29 -0
  539. maxframe/learn/contrib/lightgbm/tests/__init__.py +13 -0
  540. maxframe/learn/contrib/lightgbm/tests/test_callback.py +58 -0
  541. maxframe/learn/contrib/llm/__init__.py +17 -0
  542. maxframe/learn/contrib/llm/core.py +77 -0
  543. maxframe/learn/contrib/llm/models/__init__.py +15 -0
  544. maxframe/learn/contrib/llm/models/dashscope.py +108 -0
  545. maxframe/learn/contrib/llm/models/managed.py +54 -0
  546. maxframe/learn/contrib/llm/multi_modal.py +135 -0
  547. maxframe/learn/contrib/llm/text.py +302 -0
  548. maxframe/learn/contrib/models.py +106 -0
  549. maxframe/learn/contrib/pytorch/__init__.py +16 -0
  550. maxframe/learn/contrib/pytorch/run_function.py +110 -0
  551. maxframe/learn/contrib/pytorch/run_script.py +102 -0
  552. maxframe/learn/contrib/pytorch/tests/__init__.py +13 -0
  553. maxframe/learn/contrib/pytorch/tests/test_pytorch.py +42 -0
  554. maxframe/learn/contrib/utils.py +108 -0
  555. maxframe/learn/contrib/xgboost/__init__.py +33 -0
  556. maxframe/learn/contrib/xgboost/callback.py +86 -0
  557. maxframe/learn/contrib/xgboost/classifier.py +117 -0
  558. maxframe/learn/contrib/xgboost/core.py +445 -0
  559. maxframe/learn/contrib/xgboost/dmatrix.py +157 -0
  560. maxframe/learn/contrib/xgboost/predict.py +131 -0
  561. maxframe/learn/contrib/xgboost/regressor.py +86 -0
  562. maxframe/learn/contrib/xgboost/tests/__init__.py +13 -0
  563. maxframe/learn/contrib/xgboost/tests/test_callback.py +41 -0
  564. maxframe/learn/contrib/xgboost/tests/test_core.py +43 -0
  565. maxframe/learn/contrib/xgboost/train.py +179 -0
  566. maxframe/learn/core.py +344 -0
  567. maxframe/learn/datasets/__init__.py +20 -0
  568. maxframe/learn/datasets/samples_generator.py +628 -0
  569. maxframe/learn/linear_model/__init__.py +15 -0
  570. maxframe/learn/linear_model/_base.py +220 -0
  571. maxframe/learn/linear_model/_lin_reg.py +175 -0
  572. maxframe/learn/metrics/__init__.py +31 -0
  573. maxframe/learn/metrics/_check_targets.py +95 -0
  574. maxframe/learn/metrics/_classification.py +1266 -0
  575. maxframe/learn/metrics/_ranking.py +477 -0
  576. maxframe/learn/metrics/_regression.py +256 -0
  577. maxframe/learn/metrics/_scorer.py +60 -0
  578. maxframe/learn/metrics/pairwise/__init__.py +21 -0
  579. maxframe/learn/metrics/pairwise/core.py +77 -0
  580. maxframe/learn/metrics/pairwise/cosine.py +115 -0
  581. maxframe/learn/metrics/pairwise/euclidean.py +176 -0
  582. maxframe/learn/metrics/pairwise/haversine.py +96 -0
  583. maxframe/learn/metrics/pairwise/manhattan.py +80 -0
  584. maxframe/learn/metrics/pairwise/pairwise.py +127 -0
  585. maxframe/learn/metrics/pairwise/pairwise_distances_topk.py +121 -0
  586. maxframe/learn/metrics/pairwise/rbf_kernel.py +51 -0
  587. maxframe/learn/metrics/tests/__init__.py +13 -0
  588. maxframe/learn/metrics/tests/test_scorer.py +26 -0
  589. maxframe/learn/model_selection/__init__.py +15 -0
  590. maxframe/learn/model_selection/_split.py +451 -0
  591. maxframe/learn/model_selection/tests/__init__.py +13 -0
  592. maxframe/learn/model_selection/tests/test_split.py +156 -0
  593. maxframe/learn/preprocessing/__init__.py +16 -0
  594. maxframe/learn/preprocessing/_data/__init__.py +17 -0
  595. maxframe/learn/preprocessing/_data/min_max_scaler.py +390 -0
  596. maxframe/learn/preprocessing/_data/normalize.py +127 -0
  597. maxframe/learn/preprocessing/_data/standard_scaler.py +503 -0
  598. maxframe/learn/preprocessing/_data/utils.py +79 -0
  599. maxframe/learn/preprocessing/_label/__init__.py +16 -0
  600. maxframe/learn/preprocessing/_label/_label_binarizer.py +599 -0
  601. maxframe/learn/preprocessing/_label/_label_encoder.py +174 -0
  602. maxframe/learn/utils/__init__.py +19 -0
  603. maxframe/learn/utils/_encode.py +314 -0
  604. maxframe/learn/utils/checks.py +160 -0
  605. maxframe/learn/utils/core.py +121 -0
  606. maxframe/learn/utils/extmath.py +213 -0
  607. maxframe/learn/utils/multiclass.py +292 -0
  608. maxframe/learn/utils/odpsio.py +193 -0
  609. maxframe/learn/utils/shuffle.py +114 -0
  610. maxframe/learn/utils/sparsefuncs.py +87 -0
  611. maxframe/learn/utils/validation.py +775 -0
  612. maxframe/lib/__init__.py +13 -0
  613. maxframe/lib/aio/__init__.py +27 -0
  614. maxframe/lib/aio/_runners.py +162 -0
  615. maxframe/lib/aio/_threads.py +35 -0
  616. maxframe/lib/aio/base.py +82 -0
  617. maxframe/lib/aio/file.py +85 -0
  618. maxframe/lib/aio/isolation.py +100 -0
  619. maxframe/lib/aio/lru.py +242 -0
  620. maxframe/lib/aio/parallelism.py +37 -0
  621. maxframe/lib/aio/tests/__init__.py +13 -0
  622. maxframe/lib/aio/tests/test_aio_file.py +55 -0
  623. maxframe/lib/compat.py +185 -0
  624. maxframe/lib/compression.py +55 -0
  625. maxframe/lib/cython/__init__.py +13 -0
  626. maxframe/lib/cython/libcpp.pxd +30 -0
  627. maxframe/lib/dtypes_extension/__init__.py +30 -0
  628. maxframe/lib/dtypes_extension/_fake_arrow_dtype.py +604 -0
  629. maxframe/lib/dtypes_extension/blob.py +304 -0
  630. maxframe/lib/dtypes_extension/dtypes.py +106 -0
  631. maxframe/lib/dtypes_extension/tests/__init__.py +13 -0
  632. maxframe/lib/dtypes_extension/tests/test_blob.py +88 -0
  633. maxframe/lib/dtypes_extension/tests/test_dtypes.py +63 -0
  634. maxframe/lib/dtypes_extension/tests/test_fake_arrow_dtype.py +75 -0
  635. maxframe/lib/filesystem/__init__.py +21 -0
  636. maxframe/lib/filesystem/_glob.py +173 -0
  637. maxframe/lib/filesystem/_oss_lib/__init__.py +13 -0
  638. maxframe/lib/filesystem/_oss_lib/common.py +270 -0
  639. maxframe/lib/filesystem/_oss_lib/glob.py +147 -0
  640. maxframe/lib/filesystem/_oss_lib/handle.py +152 -0
  641. maxframe/lib/filesystem/arrow.py +236 -0
  642. maxframe/lib/filesystem/base.py +263 -0
  643. maxframe/lib/filesystem/core.py +95 -0
  644. maxframe/lib/filesystem/fsmap.py +164 -0
  645. maxframe/lib/filesystem/hdfs.py +31 -0
  646. maxframe/lib/filesystem/local.py +112 -0
  647. maxframe/lib/filesystem/oss.py +226 -0
  648. maxframe/lib/filesystem/tests/__init__.py +13 -0
  649. maxframe/lib/filesystem/tests/test_filesystem.py +225 -0
  650. maxframe/lib/filesystem/tests/test_oss.py +220 -0
  651. maxframe/lib/functools_compat.py +81 -0
  652. maxframe/lib/mmh3.cp312-win_amd64.pyd +0 -0
  653. maxframe/lib/mmh3.pyi +43 -0
  654. maxframe/lib/mmh3_src/MurmurHash3.cpp +339 -0
  655. maxframe/lib/mmh3_src/MurmurHash3.h +43 -0
  656. maxframe/lib/mmh3_src/mmh3module.cpp +387 -0
  657. maxframe/lib/sparse/__init__.py +856 -0
  658. maxframe/lib/sparse/array.py +1616 -0
  659. maxframe/lib/sparse/core.py +90 -0
  660. maxframe/lib/sparse/linalg.py +31 -0
  661. maxframe/lib/sparse/matrix.py +244 -0
  662. maxframe/lib/sparse/tests/__init__.py +13 -0
  663. maxframe/lib/sparse/tests/test_sparse.py +476 -0
  664. maxframe/lib/sparse/vector.py +148 -0
  665. maxframe/lib/tblib/LICENSE +20 -0
  666. maxframe/lib/tblib/__init__.py +327 -0
  667. maxframe/lib/tblib/cpython.py +83 -0
  668. maxframe/lib/tblib/decorators.py +44 -0
  669. maxframe/lib/tblib/pickling_support.py +90 -0
  670. maxframe/lib/tests/__init__.py +13 -0
  671. maxframe/lib/tests/test_wrapped_pickle.py +51 -0
  672. maxframe/lib/version.py +620 -0
  673. maxframe/lib/wrapped_pickle.py +150 -0
  674. maxframe/mixin.py +157 -0
  675. maxframe/opcodes.py +649 -0
  676. maxframe/protocol.py +607 -0
  677. maxframe/remote/__init__.py +18 -0
  678. maxframe/remote/core.py +208 -0
  679. maxframe/remote/run_script.py +124 -0
  680. maxframe/serialization/__init__.py +39 -0
  681. maxframe/serialization/arrow.py +120 -0
  682. maxframe/serialization/blob.py +32 -0
  683. maxframe/serialization/core.cp312-win_amd64.pyd +0 -0
  684. maxframe/serialization/core.pxd +50 -0
  685. maxframe/serialization/core.pyi +66 -0
  686. maxframe/serialization/core.pyx +1265 -0
  687. maxframe/serialization/exception.py +84 -0
  688. maxframe/serialization/maxframe_objects.py +39 -0
  689. maxframe/serialization/numpy.py +110 -0
  690. maxframe/serialization/pandas.py +278 -0
  691. maxframe/serialization/scipy.py +71 -0
  692. maxframe/serialization/serializables/__init__.py +55 -0
  693. maxframe/serialization/serializables/core.py +469 -0
  694. maxframe/serialization/serializables/field.py +624 -0
  695. maxframe/serialization/serializables/field_type.py +592 -0
  696. maxframe/serialization/serializables/tests/__init__.py +13 -0
  697. maxframe/serialization/serializables/tests/test_field_type.py +119 -0
  698. maxframe/serialization/serializables/tests/test_serializable.py +313 -0
  699. maxframe/serialization/tests/__init__.py +13 -0
  700. maxframe/serialization/tests/test_serial.py +487 -0
  701. maxframe/session.py +1250 -0
  702. maxframe/sperunner.py +165 -0
  703. maxframe/tensor/__init__.py +325 -0
  704. maxframe/tensor/arithmetic/__init__.py +322 -0
  705. maxframe/tensor/arithmetic/abs.py +66 -0
  706. maxframe/tensor/arithmetic/absolute.py +66 -0
  707. maxframe/tensor/arithmetic/add.py +112 -0
  708. maxframe/tensor/arithmetic/angle.py +70 -0
  709. maxframe/tensor/arithmetic/arccos.py +101 -0
  710. maxframe/tensor/arithmetic/arccosh.py +89 -0
  711. maxframe/tensor/arithmetic/arcsin.py +92 -0
  712. maxframe/tensor/arithmetic/arcsinh.py +84 -0
  713. maxframe/tensor/arithmetic/arctan.py +104 -0
  714. maxframe/tensor/arithmetic/arctan2.py +126 -0
  715. maxframe/tensor/arithmetic/arctanh.py +84 -0
  716. maxframe/tensor/arithmetic/around.py +112 -0
  717. maxframe/tensor/arithmetic/bitand.py +93 -0
  718. maxframe/tensor/arithmetic/bitor.py +100 -0
  719. maxframe/tensor/arithmetic/bitxor.py +93 -0
  720. maxframe/tensor/arithmetic/cbrt.py +64 -0
  721. maxframe/tensor/arithmetic/ceil.py +69 -0
  722. maxframe/tensor/arithmetic/clip.py +165 -0
  723. maxframe/tensor/arithmetic/conj.py +72 -0
  724. maxframe/tensor/arithmetic/copysign.py +76 -0
  725. maxframe/tensor/arithmetic/core.py +552 -0
  726. maxframe/tensor/arithmetic/cos.py +83 -0
  727. maxframe/tensor/arithmetic/cosh.py +70 -0
  728. maxframe/tensor/arithmetic/deg2rad.py +70 -0
  729. maxframe/tensor/arithmetic/degrees.py +75 -0
  730. maxframe/tensor/arithmetic/divide.py +112 -0
  731. maxframe/tensor/arithmetic/equal.py +74 -0
  732. maxframe/tensor/arithmetic/exp.py +104 -0
  733. maxframe/tensor/arithmetic/exp2.py +65 -0
  734. maxframe/tensor/arithmetic/expm1.py +77 -0
  735. maxframe/tensor/arithmetic/fabs.py +72 -0
  736. maxframe/tensor/arithmetic/fix.py +67 -0
  737. maxframe/tensor/arithmetic/float_power.py +101 -0
  738. maxframe/tensor/arithmetic/floor.py +75 -0
  739. maxframe/tensor/arithmetic/floordiv.py +92 -0
  740. maxframe/tensor/arithmetic/fmax.py +103 -0
  741. maxframe/tensor/arithmetic/fmin.py +104 -0
  742. maxframe/tensor/arithmetic/fmod.py +97 -0
  743. maxframe/tensor/arithmetic/frexp.py +96 -0
  744. maxframe/tensor/arithmetic/greater.py +75 -0
  745. maxframe/tensor/arithmetic/greater_equal.py +67 -0
  746. maxframe/tensor/arithmetic/hypot.py +75 -0
  747. maxframe/tensor/arithmetic/i0.py +87 -0
  748. maxframe/tensor/arithmetic/imag.py +65 -0
  749. maxframe/tensor/arithmetic/invert.py +108 -0
  750. maxframe/tensor/arithmetic/isclose.py +114 -0
  751. maxframe/tensor/arithmetic/iscomplex.py +62 -0
  752. maxframe/tensor/arithmetic/iscomplexobj.py +53 -0
  753. maxframe/tensor/arithmetic/isfinite.py +104 -0
  754. maxframe/tensor/arithmetic/isinf.py +101 -0
  755. maxframe/tensor/arithmetic/isnan.py +80 -0
  756. maxframe/tensor/arithmetic/isreal.py +61 -0
  757. maxframe/tensor/arithmetic/ldexp.py +97 -0
  758. maxframe/tensor/arithmetic/less.py +67 -0
  759. maxframe/tensor/arithmetic/less_equal.py +67 -0
  760. maxframe/tensor/arithmetic/log.py +90 -0
  761. maxframe/tensor/arithmetic/log10.py +83 -0
  762. maxframe/tensor/arithmetic/log1p.py +93 -0
  763. maxframe/tensor/arithmetic/log2.py +83 -0
  764. maxframe/tensor/arithmetic/logaddexp.py +78 -0
  765. maxframe/tensor/arithmetic/logaddexp2.py +76 -0
  766. maxframe/tensor/arithmetic/logical_and.py +79 -0
  767. maxframe/tensor/arithmetic/logical_not.py +72 -0
  768. maxframe/tensor/arithmetic/logical_or.py +80 -0
  769. maxframe/tensor/arithmetic/logical_xor.py +86 -0
  770. maxframe/tensor/arithmetic/lshift.py +80 -0
  771. maxframe/tensor/arithmetic/maximum.py +106 -0
  772. maxframe/tensor/arithmetic/minimum.py +106 -0
  773. maxframe/tensor/arithmetic/mod.py +102 -0
  774. maxframe/tensor/arithmetic/modf.py +87 -0
  775. maxframe/tensor/arithmetic/multiply.py +114 -0
  776. maxframe/tensor/arithmetic/nan_to_num.py +97 -0
  777. maxframe/tensor/arithmetic/negative.py +63 -0
  778. maxframe/tensor/arithmetic/nextafter.py +66 -0
  779. maxframe/tensor/arithmetic/not_equal.py +70 -0
  780. maxframe/tensor/arithmetic/positive.py +45 -0
  781. maxframe/tensor/arithmetic/power.py +104 -0
  782. maxframe/tensor/arithmetic/rad2deg.py +69 -0
  783. maxframe/tensor/arithmetic/radians.py +75 -0
  784. maxframe/tensor/arithmetic/real.py +68 -0
  785. maxframe/tensor/arithmetic/reciprocal.py +78 -0
  786. maxframe/tensor/arithmetic/rint.py +66 -0
  787. maxframe/tensor/arithmetic/rshift.py +79 -0
  788. maxframe/tensor/arithmetic/setimag.py +27 -0
  789. maxframe/tensor/arithmetic/setreal.py +27 -0
  790. maxframe/tensor/arithmetic/sign.py +79 -0
  791. maxframe/tensor/arithmetic/signbit.py +63 -0
  792. maxframe/tensor/arithmetic/sin.py +96 -0
  793. maxframe/tensor/arithmetic/sinc.py +100 -0
  794. maxframe/tensor/arithmetic/sinh.py +91 -0
  795. maxframe/tensor/arithmetic/spacing.py +70 -0
  796. maxframe/tensor/arithmetic/sqrt.py +79 -0
  797. maxframe/tensor/arithmetic/square.py +67 -0
  798. maxframe/tensor/arithmetic/subtract.py +83 -0
  799. maxframe/tensor/arithmetic/tan.py +86 -0
  800. maxframe/tensor/arithmetic/tanh.py +90 -0
  801. maxframe/tensor/arithmetic/tests/__init__.py +13 -0
  802. maxframe/tensor/arithmetic/tests/test_arithmetic.py +458 -0
  803. maxframe/tensor/arithmetic/truediv.py +102 -0
  804. maxframe/tensor/arithmetic/trunc.py +70 -0
  805. maxframe/tensor/arithmetic/utils.py +91 -0
  806. maxframe/tensor/array_utils.py +164 -0
  807. maxframe/tensor/core.py +594 -0
  808. maxframe/tensor/datasource/__init__.py +40 -0
  809. maxframe/tensor/datasource/arange.py +154 -0
  810. maxframe/tensor/datasource/array.py +399 -0
  811. maxframe/tensor/datasource/core.py +114 -0
  812. maxframe/tensor/datasource/diag.py +140 -0
  813. maxframe/tensor/datasource/diagflat.py +69 -0
  814. maxframe/tensor/datasource/empty.py +167 -0
  815. maxframe/tensor/datasource/eye.py +95 -0
  816. maxframe/tensor/datasource/from_dataframe.py +68 -0
  817. maxframe/tensor/datasource/from_dense.py +37 -0
  818. maxframe/tensor/datasource/from_sparse.py +45 -0
  819. maxframe/tensor/datasource/full.py +184 -0
  820. maxframe/tensor/datasource/identity.py +54 -0
  821. maxframe/tensor/datasource/indices.py +115 -0
  822. maxframe/tensor/datasource/linspace.py +140 -0
  823. maxframe/tensor/datasource/meshgrid.py +135 -0
  824. maxframe/tensor/datasource/ones.py +178 -0
  825. maxframe/tensor/datasource/scalar.py +40 -0
  826. maxframe/tensor/datasource/tests/__init__.py +13 -0
  827. maxframe/tensor/datasource/tests/test_datasource.py +310 -0
  828. maxframe/tensor/datasource/tri_array.py +107 -0
  829. maxframe/tensor/datasource/zeros.py +192 -0
  830. maxframe/tensor/extensions/__init__.py +33 -0
  831. maxframe/tensor/extensions/accessor.py +25 -0
  832. maxframe/tensor/extensions/apply_chunk.py +137 -0
  833. maxframe/tensor/extensions/rebalance.py +65 -0
  834. maxframe/tensor/fetch/__init__.py +15 -0
  835. maxframe/tensor/fetch/core.py +54 -0
  836. maxframe/tensor/fft/__init__.py +32 -0
  837. maxframe/tensor/fft/core.py +168 -0
  838. maxframe/tensor/fft/fft.py +112 -0
  839. maxframe/tensor/fft/fft2.py +118 -0
  840. maxframe/tensor/fft/fftfreq.py +80 -0
  841. maxframe/tensor/fft/fftn.py +123 -0
  842. maxframe/tensor/fft/fftshift.py +79 -0
  843. maxframe/tensor/fft/hfft.py +112 -0
  844. maxframe/tensor/fft/ifft.py +114 -0
  845. maxframe/tensor/fft/ifft2.py +115 -0
  846. maxframe/tensor/fft/ifftn.py +123 -0
  847. maxframe/tensor/fft/ifftshift.py +73 -0
  848. maxframe/tensor/fft/ihfft.py +93 -0
  849. maxframe/tensor/fft/irfft.py +118 -0
  850. maxframe/tensor/fft/irfft2.py +62 -0
  851. maxframe/tensor/fft/irfftn.py +114 -0
  852. maxframe/tensor/fft/rfft.py +116 -0
  853. maxframe/tensor/fft/rfft2.py +63 -0
  854. maxframe/tensor/fft/rfftfreq.py +87 -0
  855. maxframe/tensor/fft/rfftn.py +113 -0
  856. maxframe/tensor/indexing/__init__.py +47 -0
  857. maxframe/tensor/indexing/choose.py +198 -0
  858. maxframe/tensor/indexing/compress.py +122 -0
  859. maxframe/tensor/indexing/core.py +190 -0
  860. maxframe/tensor/indexing/extract.py +69 -0
  861. maxframe/tensor/indexing/fill_diagonal.py +180 -0
  862. maxframe/tensor/indexing/flatnonzero.py +58 -0
  863. maxframe/tensor/indexing/getitem.py +144 -0
  864. maxframe/tensor/indexing/nonzero.py +118 -0
  865. maxframe/tensor/indexing/setitem.py +142 -0
  866. maxframe/tensor/indexing/slice.py +32 -0
  867. maxframe/tensor/indexing/take.py +128 -0
  868. maxframe/tensor/indexing/tests/__init__.py +13 -0
  869. maxframe/tensor/indexing/tests/test_indexing.py +232 -0
  870. maxframe/tensor/indexing/unravel_index.py +103 -0
  871. maxframe/tensor/lib/__init__.py +16 -0
  872. maxframe/tensor/lib/index_tricks.py +404 -0
  873. maxframe/tensor/linalg/__init__.py +43 -0
  874. maxframe/tensor/linalg/_einsumfunc.py +1025 -0
  875. maxframe/tensor/linalg/cholesky.py +117 -0
  876. maxframe/tensor/linalg/dot.py +145 -0
  877. maxframe/tensor/linalg/einsum.py +339 -0
  878. maxframe/tensor/linalg/inner.py +36 -0
  879. maxframe/tensor/linalg/inv.py +83 -0
  880. maxframe/tensor/linalg/lstsq.py +100 -0
  881. maxframe/tensor/linalg/lu.py +115 -0
  882. maxframe/tensor/linalg/matmul.py +225 -0
  883. maxframe/tensor/linalg/matrix_norm.py +75 -0
  884. maxframe/tensor/linalg/norm.py +249 -0
  885. maxframe/tensor/linalg/qr.py +124 -0
  886. maxframe/tensor/linalg/solve.py +72 -0
  887. maxframe/tensor/linalg/solve_triangular.py +103 -0
  888. maxframe/tensor/linalg/svd.py +167 -0
  889. maxframe/tensor/linalg/tensordot.py +213 -0
  890. maxframe/tensor/linalg/vdot.py +73 -0
  891. maxframe/tensor/linalg/vector_norm.py +113 -0
  892. maxframe/tensor/merge/__init__.py +21 -0
  893. maxframe/tensor/merge/append.py +74 -0
  894. maxframe/tensor/merge/column_stack.py +63 -0
  895. maxframe/tensor/merge/concatenate.py +103 -0
  896. maxframe/tensor/merge/dstack.py +71 -0
  897. maxframe/tensor/merge/hstack.py +70 -0
  898. maxframe/tensor/merge/stack.py +130 -0
  899. maxframe/tensor/merge/tests/__init__.py +13 -0
  900. maxframe/tensor/merge/tests/test_merge.py +79 -0
  901. maxframe/tensor/merge/vstack.py +74 -0
  902. maxframe/tensor/misc/__init__.py +72 -0
  903. maxframe/tensor/misc/argwhere.py +72 -0
  904. maxframe/tensor/misc/array_split.py +46 -0
  905. maxframe/tensor/misc/astype.py +121 -0
  906. maxframe/tensor/misc/atleast_1d.py +72 -0
  907. maxframe/tensor/misc/atleast_2d.py +70 -0
  908. maxframe/tensor/misc/atleast_3d.py +85 -0
  909. maxframe/tensor/misc/broadcast_arrays.py +57 -0
  910. maxframe/tensor/misc/broadcast_to.py +89 -0
  911. maxframe/tensor/misc/copy.py +64 -0
  912. maxframe/tensor/misc/copyto.py +130 -0
  913. maxframe/tensor/misc/delete.py +104 -0
  914. maxframe/tensor/misc/diff.py +115 -0
  915. maxframe/tensor/misc/dsplit.py +68 -0
  916. maxframe/tensor/misc/ediff1d.py +74 -0
  917. maxframe/tensor/misc/expand_dims.py +85 -0
  918. maxframe/tensor/misc/flatten.py +63 -0
  919. maxframe/tensor/misc/flip.py +90 -0
  920. maxframe/tensor/misc/fliplr.py +64 -0
  921. maxframe/tensor/misc/flipud.py +68 -0
  922. maxframe/tensor/misc/hsplit.py +85 -0
  923. maxframe/tensor/misc/in1d.py +94 -0
  924. maxframe/tensor/misc/insert.py +139 -0
  925. maxframe/tensor/misc/isin.py +130 -0
  926. maxframe/tensor/misc/moveaxis.py +83 -0
  927. maxframe/tensor/misc/ndim.py +53 -0
  928. maxframe/tensor/misc/ravel.py +90 -0
  929. maxframe/tensor/misc/repeat.py +129 -0
  930. maxframe/tensor/misc/result_type.py +88 -0
  931. maxframe/tensor/misc/roll.py +124 -0
  932. maxframe/tensor/misc/rollaxis.py +77 -0
  933. maxframe/tensor/misc/searchsorted.py +147 -0
  934. maxframe/tensor/misc/setdiff1d.py +58 -0
  935. maxframe/tensor/misc/shape.py +89 -0
  936. maxframe/tensor/misc/split.py +190 -0
  937. maxframe/tensor/misc/squeeze.py +117 -0
  938. maxframe/tensor/misc/swapaxes.py +113 -0
  939. maxframe/tensor/misc/tests/__init__.py +13 -0
  940. maxframe/tensor/misc/tests/test_misc.py +112 -0
  941. maxframe/tensor/misc/tile.py +109 -0
  942. maxframe/tensor/misc/transpose.py +133 -0
  943. maxframe/tensor/misc/trapezoid.py +123 -0
  944. maxframe/tensor/misc/unique.py +205 -0
  945. maxframe/tensor/misc/vsplit.py +74 -0
  946. maxframe/tensor/misc/where.py +129 -0
  947. maxframe/tensor/operators.py +83 -0
  948. maxframe/tensor/random/__init__.py +166 -0
  949. maxframe/tensor/random/beta.py +87 -0
  950. maxframe/tensor/random/binomial.py +135 -0
  951. maxframe/tensor/random/bytes.py +37 -0
  952. maxframe/tensor/random/chisquare.py +108 -0
  953. maxframe/tensor/random/choice.py +187 -0
  954. maxframe/tensor/random/core.py +249 -0
  955. maxframe/tensor/random/dirichlet.py +121 -0
  956. maxframe/tensor/random/exponential.py +92 -0
  957. maxframe/tensor/random/f.py +133 -0
  958. maxframe/tensor/random/gamma.py +126 -0
  959. maxframe/tensor/random/geometric.py +91 -0
  960. maxframe/tensor/random/gumbel.py +165 -0
  961. maxframe/tensor/random/hypergeometric.py +146 -0
  962. maxframe/tensor/random/laplace.py +131 -0
  963. maxframe/tensor/random/logistic.py +127 -0
  964. maxframe/tensor/random/lognormal.py +157 -0
  965. maxframe/tensor/random/logseries.py +120 -0
  966. maxframe/tensor/random/multinomial.py +131 -0
  967. maxframe/tensor/random/multivariate_normal.py +190 -0
  968. maxframe/tensor/random/negative_binomial.py +123 -0
  969. maxframe/tensor/random/noncentral_chisquare.py +130 -0
  970. maxframe/tensor/random/noncentral_f.py +124 -0
  971. maxframe/tensor/random/normal.py +141 -0
  972. maxframe/tensor/random/pareto.py +138 -0
  973. maxframe/tensor/random/permutation.py +107 -0
  974. maxframe/tensor/random/poisson.py +109 -0
  975. maxframe/tensor/random/power.py +140 -0
  976. maxframe/tensor/random/rand.py +80 -0
  977. maxframe/tensor/random/randint.py +119 -0
  978. maxframe/tensor/random/randn.py +94 -0
  979. maxframe/tensor/random/random_integers.py +121 -0
  980. maxframe/tensor/random/random_sample.py +84 -0
  981. maxframe/tensor/random/rayleigh.py +108 -0
  982. maxframe/tensor/random/shuffle.py +61 -0
  983. maxframe/tensor/random/standard_cauchy.py +103 -0
  984. maxframe/tensor/random/standard_exponential.py +70 -0
  985. maxframe/tensor/random/standard_gamma.py +118 -0
  986. maxframe/tensor/random/standard_normal.py +72 -0
  987. maxframe/tensor/random/standard_t.py +133 -0
  988. maxframe/tensor/random/tests/__init__.py +13 -0
  989. maxframe/tensor/random/tests/test_random.py +165 -0
  990. maxframe/tensor/random/triangular.py +117 -0
  991. maxframe/tensor/random/uniform.py +129 -0
  992. maxframe/tensor/random/vonmises.py +129 -0
  993. maxframe/tensor/random/wald.py +112 -0
  994. maxframe/tensor/random/weibull.py +138 -0
  995. maxframe/tensor/random/zipf.py +120 -0
  996. maxframe/tensor/rechunk/__init__.py +26 -0
  997. maxframe/tensor/rechunk/rechunk.py +43 -0
  998. maxframe/tensor/reduction/__init__.py +64 -0
  999. maxframe/tensor/reduction/all.py +101 -0
  1000. maxframe/tensor/reduction/allclose.py +86 -0
  1001. maxframe/tensor/reduction/any.py +103 -0
  1002. maxframe/tensor/reduction/argmax.py +101 -0
  1003. maxframe/tensor/reduction/argmin.py +101 -0
  1004. maxframe/tensor/reduction/array_equal.py +63 -0
  1005. maxframe/tensor/reduction/core.py +166 -0
  1006. maxframe/tensor/reduction/count_nonzero.py +80 -0
  1007. maxframe/tensor/reduction/cumprod.py +95 -0
  1008. maxframe/tensor/reduction/cumsum.py +99 -0
  1009. maxframe/tensor/reduction/max.py +118 -0
  1010. maxframe/tensor/reduction/mean.py +122 -0
  1011. maxframe/tensor/reduction/min.py +118 -0
  1012. maxframe/tensor/reduction/nanargmax.py +80 -0
  1013. maxframe/tensor/reduction/nanargmin.py +74 -0
  1014. maxframe/tensor/reduction/nancumprod.py +89 -0
  1015. maxframe/tensor/reduction/nancumsum.py +92 -0
  1016. maxframe/tensor/reduction/nanmax.py +109 -0
  1017. maxframe/tensor/reduction/nanmean.py +105 -0
  1018. maxframe/tensor/reduction/nanmin.py +109 -0
  1019. maxframe/tensor/reduction/nanprod.py +92 -0
  1020. maxframe/tensor/reduction/nanstd.py +124 -0
  1021. maxframe/tensor/reduction/nansum.py +113 -0
  1022. maxframe/tensor/reduction/nanvar.py +149 -0
  1023. maxframe/tensor/reduction/prod.py +128 -0
  1024. maxframe/tensor/reduction/std.py +132 -0
  1025. maxframe/tensor/reduction/sum.py +123 -0
  1026. maxframe/tensor/reduction/tests/__init__.py +13 -0
  1027. maxframe/tensor/reduction/tests/test_reduction.py +189 -0
  1028. maxframe/tensor/reduction/var.py +176 -0
  1029. maxframe/tensor/reshape/__init__.py +15 -0
  1030. maxframe/tensor/reshape/reshape.py +192 -0
  1031. maxframe/tensor/reshape/tests/__init__.py +13 -0
  1032. maxframe/tensor/reshape/tests/test_reshape.py +35 -0
  1033. maxframe/tensor/sort/__init__.py +18 -0
  1034. maxframe/tensor/sort/argpartition.py +98 -0
  1035. maxframe/tensor/sort/argsort.py +150 -0
  1036. maxframe/tensor/sort/partition.py +228 -0
  1037. maxframe/tensor/sort/sort.py +295 -0
  1038. maxframe/tensor/spatial/__init__.py +15 -0
  1039. maxframe/tensor/spatial/distance/__init__.py +17 -0
  1040. maxframe/tensor/spatial/distance/cdist.py +421 -0
  1041. maxframe/tensor/spatial/distance/pdist.py +398 -0
  1042. maxframe/tensor/spatial/distance/squareform.py +153 -0
  1043. maxframe/tensor/special/__init__.py +175 -0
  1044. maxframe/tensor/special/airy.py +55 -0
  1045. maxframe/tensor/special/bessel.py +199 -0
  1046. maxframe/tensor/special/core.py +99 -0
  1047. maxframe/tensor/special/ellip_func_integrals.py +155 -0
  1048. maxframe/tensor/special/ellip_harm.py +55 -0
  1049. maxframe/tensor/special/err_fresnel.py +223 -0
  1050. maxframe/tensor/special/gamma_funcs.py +303 -0
  1051. maxframe/tensor/special/hypergeometric_funcs.py +69 -0
  1052. maxframe/tensor/special/info_theory.py +189 -0
  1053. maxframe/tensor/special/misc.py +163 -0
  1054. maxframe/tensor/special/statistical.py +56 -0
  1055. maxframe/tensor/statistics/__init__.py +24 -0
  1056. maxframe/tensor/statistics/average.py +143 -0
  1057. maxframe/tensor/statistics/bincount.py +133 -0
  1058. maxframe/tensor/statistics/corrcoef.py +77 -0
  1059. maxframe/tensor/statistics/cov.py +222 -0
  1060. maxframe/tensor/statistics/digitize.py +126 -0
  1061. maxframe/tensor/statistics/histogram.py +520 -0
  1062. maxframe/tensor/statistics/median.py +85 -0
  1063. maxframe/tensor/statistics/percentile.py +175 -0
  1064. maxframe/tensor/statistics/ptp.py +89 -0
  1065. maxframe/tensor/statistics/quantile.py +290 -0
  1066. maxframe/tensor/ufunc/__init__.py +24 -0
  1067. maxframe/tensor/ufunc/ufunc.py +198 -0
  1068. maxframe/tensor/utils.py +716 -0
  1069. maxframe/tests/__init__.py +13 -0
  1070. maxframe/tests/test_protocol.py +178 -0
  1071. maxframe/tests/test_utils.py +615 -0
  1072. maxframe/tests/utils.py +245 -0
  1073. maxframe/typing_.py +42 -0
  1074. maxframe/udf.py +260 -0
  1075. maxframe/utils.py +1721 -0
  1076. maxframe-2.2.0.dist-info/METADATA +110 -0
  1077. maxframe-2.2.0.dist-info/RECORD +1094 -0
  1078. maxframe-2.2.0.dist-info/WHEEL +5 -0
  1079. maxframe-2.2.0.dist-info/top_level.txt +3 -0
  1080. maxframe_client/__init__.py +16 -0
  1081. maxframe_client/clients/__init__.py +13 -0
  1082. maxframe_client/clients/framedriver.py +137 -0
  1083. maxframe_client/conftest.py +15 -0
  1084. maxframe_client/fetcher.py +411 -0
  1085. maxframe_client/session/__init__.py +22 -0
  1086. maxframe_client/session/consts.py +39 -0
  1087. maxframe_client/session/graph.py +125 -0
  1088. maxframe_client/session/odps.py +802 -0
  1089. maxframe_client/session/task.py +322 -0
  1090. maxframe_client/session/tests/__init__.py +13 -0
  1091. maxframe_client/session/tests/test_task.py +115 -0
  1092. maxframe_client/tests/__init__.py +13 -0
  1093. maxframe_client/tests/test_fetcher.py +180 -0
  1094. maxframe_client/tests/test_session.py +385 -0
@@ -0,0 +1,478 @@
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ import logging
16
+ from collections import deque
17
+ from io import StringIO
18
+
19
+ logger = logging.getLogger(__name__)
20
+
21
+
22
+ cdef class DirectedGraph:
23
+ cdef readonly:
24
+ dict _nodes
25
+ dict _predecessors
26
+ dict _successors
27
+
28
+ def __init__(self):
29
+ self._nodes = dict()
30
+ self._predecessors = dict()
31
+ self._successors = dict()
32
+
33
+ def __iter__(self):
34
+ return iter(self._nodes)
35
+
36
+ def __contains__(self, n):
37
+ return n in self._nodes
38
+
39
+ def __len__(self):
40
+ return len(self._nodes)
41
+
42
+ def __getitem__(self, n):
43
+ return self._successors[n]
44
+
45
+ def contains(self, node):
46
+ return node in self._nodes
47
+
48
+ def add_node(self, node, node_attr=None, **node_attrs):
49
+ if node_attr is None:
50
+ node_attr = node_attrs
51
+ else:
52
+ try:
53
+ node_attr.update(node_attrs)
54
+ except AttributeError:
55
+ raise TypeError('The node_attr argument must be a dictionary')
56
+ self._add_node(node, node_attr)
57
+
58
+ cdef inline _add_node(self, node, dict node_attr=None):
59
+ if node_attr is None:
60
+ node_attr = dict()
61
+ if node not in self._nodes:
62
+ self._nodes[node] = node_attr
63
+ self._successors[node] = dict()
64
+ self._predecessors[node] = dict()
65
+ else:
66
+ self._nodes[node].update(node_attr)
67
+
68
+ def remove_node(self, node):
69
+ if node not in self._nodes:
70
+ raise KeyError(f'Node {node} does not exist '
71
+ f'in the directed graph')
72
+
73
+ del self._nodes[node]
74
+
75
+ for succ in self._successors[node]:
76
+ del self._predecessors[succ][node]
77
+ del self._successors[node]
78
+
79
+ for pred in self._predecessors[node]:
80
+ del self._successors[pred][node]
81
+ del self._predecessors[node]
82
+
83
+ def add_edge(self, u, v, edge_attr=None, **edge_attrs):
84
+ if edge_attr is None:
85
+ edge_attr = edge_attrs
86
+ else:
87
+ try:
88
+ edge_attr.update(edge_attrs)
89
+ except AttributeError:
90
+ raise TypeError('The edge_attr argument must be a dictionary')
91
+ self._add_edge(u, v, edge_attr)
92
+
93
+ cdef inline _add_edge(self, u, v, edge_attr=None):
94
+ cdef:
95
+ dict u_succ, v_pred
96
+
97
+ if u not in self._nodes:
98
+ raise KeyError(f'Node {u} does not exist in the directed graph')
99
+ if v not in self._nodes:
100
+ raise KeyError(f'Node {v} does not exist in the directed graph')
101
+
102
+ if edge_attr is None:
103
+ edge_attr = dict()
104
+
105
+ u_succ = self._successors[u]
106
+ if v in u_succ:
107
+ u_succ[v].update(edge_attr)
108
+ else:
109
+ u_succ[v] = edge_attr
110
+
111
+ v_pred = self._predecessors[v]
112
+ if u not in v_pred:
113
+ # `update` is not necessary, as they point to the same object
114
+ v_pred[u] = edge_attr
115
+
116
+ def remove_edge(self, u, v):
117
+ try:
118
+ del self._successors[u][v]
119
+ del self._predecessors[v][u]
120
+ except KeyError:
121
+ raise KeyError(f'Edge {u}->{v} does not exist in the directed graph')
122
+
123
+ def has_successor(self, u, v):
124
+ return (u in self._successors) and (v in self._successors[u])
125
+
126
+ def has_predecessor(self, u, v):
127
+ return (u in self._predecessors) and (v in self._predecessors[u])
128
+
129
+ def iter_nodes(self, data=False):
130
+ if data:
131
+ return iter(self._nodes.items())
132
+ return iter(self._nodes)
133
+
134
+ def iter_successors(self, n):
135
+ try:
136
+ return iter(self._successors[n])
137
+ except KeyError:
138
+ raise KeyError(f'Node {n} does not exist in the directed graph')
139
+
140
+ cpdef list successors(self, n):
141
+ try:
142
+ return list(self._successors[n])
143
+ except KeyError:
144
+ raise KeyError(f'Node {n} does not exist in the directed graph')
145
+
146
+ def iter_predecessors(self, n):
147
+ try:
148
+ return iter(self._predecessors[n])
149
+ except KeyError:
150
+ raise KeyError(f'Node {n} does not exist in the directed graph')
151
+
152
+ cpdef list predecessors(self, n):
153
+ try:
154
+ return list(self._predecessors[n])
155
+ except KeyError:
156
+ raise KeyError(f'Node {n} does not exist in the directed graph')
157
+
158
+ cpdef int count_successors(self, n):
159
+ return len(self._successors[n])
160
+
161
+ cpdef int count_predecessors(self, n):
162
+ return len(self._predecessors[n])
163
+
164
+ def iter_indep(self, bint reverse=False):
165
+ cdef dict preds
166
+ preds = self._predecessors if not reverse else self._successors
167
+ for n, p in preds.items():
168
+ if len(p) == 0:
169
+ yield n
170
+
171
+ cpdef int count_indep(self, reverse=False):
172
+ cdef:
173
+ dict preds
174
+ int result = 0
175
+ preds = self._predecessors if not reverse else self._successors
176
+ for n, p in preds.items():
177
+ if len(p) == 0:
178
+ result += 1
179
+ return result
180
+
181
+ def dfs(self, start=None, visit_predicate=None, successors=None, reverse=False):
182
+ cdef:
183
+ set visited = set()
184
+ list stack
185
+ bint visit_all = False
186
+
187
+ if reverse:
188
+ pred_fun, succ_fun = self.successors, self.predecessors
189
+ else:
190
+ pred_fun, succ_fun = self.predecessors, self.successors
191
+
192
+ if start:
193
+ if not isinstance(start, (list, tuple)):
194
+ start = [start]
195
+ stack = list(start)
196
+ else:
197
+ stack = list(self.iter_indep(reverse=reverse))
198
+
199
+ def _default_visit_predicate(n, visited):
200
+ cdef list preds
201
+ preds = pred_fun(n)
202
+ return not preds or all(pred in visited for pred in preds)
203
+
204
+ successors = successors or succ_fun
205
+ visit_all = (visit_predicate == 'all')
206
+ visit_predicate = visit_predicate or _default_visit_predicate
207
+
208
+ while stack:
209
+ node = stack.pop()
210
+ if node in visited:
211
+ continue
212
+ preds = self.predecessors(node)
213
+ if visit_all or visit_predicate(node, visited):
214
+ yield node
215
+ visited.add(node)
216
+ stack.extend(n for n in successors(node) if n not in visited)
217
+ else:
218
+ stack.append(node)
219
+ stack.extend(n for n in preds if n not in visited)
220
+
221
+ def bfs(self, start=None, visit_predicate=None, successors=None, reverse=False):
222
+ cdef:
223
+ object queue
224
+ object node
225
+ set visited = set()
226
+ bint visit_all = False
227
+
228
+ if reverse:
229
+ pred_fun, succ_fun = self.successors, self.predecessors
230
+ else:
231
+ pred_fun, succ_fun = self.predecessors, self.successors
232
+
233
+ if start is not None:
234
+ if not isinstance(start, (list, tuple)):
235
+ start = [start]
236
+ queue = deque(start)
237
+ else:
238
+ queue = deque(self.iter_indep(reverse=reverse))
239
+
240
+ def _default_visit_predicate(n, visited):
241
+ preds = pred_fun(n)
242
+ return not preds or all(pred in visited for pred in preds)
243
+
244
+ successors = successors or succ_fun
245
+ visit_all = (visit_predicate == 'all')
246
+ visit_predicate = visit_predicate or _default_visit_predicate
247
+
248
+ while queue:
249
+ node = queue.popleft()
250
+ if node in visited:
251
+ continue
252
+ preds = pred_fun(node)
253
+ if visit_all or visit_predicate(node, visited):
254
+ yield node
255
+ visited.add(node)
256
+ queue.extend(n for n in successors(node) if n not in visited)
257
+ else:
258
+ queue.append(node)
259
+ queue.extend(n for n in preds if n not in visited)
260
+
261
+ def copy(self):
262
+ cdef DirectedGraph graph = type(self)()
263
+ for n in self:
264
+ if n not in graph._nodes:
265
+ graph._add_node(n)
266
+ for succ in self.iter_successors(n):
267
+ if succ not in graph._nodes:
268
+ graph._add_node(succ)
269
+ graph._add_edge(n, succ)
270
+ return graph
271
+
272
+ def copyto(self, DirectedGraph other_graph):
273
+ if other_graph is self:
274
+ return
275
+
276
+ other_graph._nodes = self._nodes.copy()
277
+ other_graph._predecessors = self._predecessors.copy()
278
+ other_graph._successors = self._successors.copy()
279
+
280
+ def build_undirected(self):
281
+ cdef DirectedGraph graph = DirectedGraph()
282
+ for n in self:
283
+ if n not in graph._nodes:
284
+ graph._add_node(n)
285
+ for succ in self._successors[n]:
286
+ if succ not in graph._nodes:
287
+ graph._add_node(succ)
288
+ graph._add_edge(n, succ)
289
+ graph._add_edge(succ, n)
290
+ return graph
291
+
292
+ def build_reversed(self):
293
+ cdef DirectedGraph graph = type(self)()
294
+ for n in self:
295
+ if n not in graph._nodes:
296
+ graph._add_node(n)
297
+ for succ in self._successors[n]:
298
+ if succ not in graph._nodes:
299
+ graph._add_node(succ)
300
+ graph._add_edge(succ, n)
301
+ return graph
302
+
303
+ @classmethod
304
+ def _repr_in_dot(cls, val):
305
+ if isinstance(val, bool):
306
+ return 'true' if val else 'false'
307
+ if isinstance(val, str):
308
+ return f'"{val}"'
309
+ return val
310
+
311
+ def _extract_operators(self, node):
312
+ if getattr(node, "opfunc", None) is not None:
313
+ return [node.opfunc]
314
+ return [node.op]
315
+
316
+ def to_dot(
317
+ self,
318
+ graph_attrs=None,
319
+ node_attrs=None,
320
+ trunc_key=5,
321
+ result_chunk_keys=None,
322
+ show_columns=False,
323
+ with_op_id=True,
324
+ ):
325
+
326
+ sio = StringIO()
327
+ sio.write('digraph {\n')
328
+ sio.write('splines=curved\n')
329
+ sio.write('rankdir=BT\n')
330
+
331
+ if graph_attrs:
332
+ sio.write('graph [{0}];\n'.format(
333
+ ' '.join(f'{k}={self._repr_in_dot(v)}' for k, v in graph_attrs.items())))
334
+ if node_attrs:
335
+ sio.write('node [{0}];\n'.format(
336
+ ' '.join(f'{k}={self._repr_in_dot(v)}' for k, v in node_attrs.items())))
337
+
338
+ chunk_style = '[shape=box]'
339
+ operator_style = '[shape=circle]'
340
+
341
+ visited = set()
342
+
343
+ def get_col_names(obj):
344
+ if hasattr(obj, "dtypes"):
345
+ return f"\"{','.join(list(obj.dtypes.index))}\""
346
+ elif hasattr(obj, "name"):
347
+ return f"\"{obj.name}\""
348
+ else:
349
+ return "\"N/A\""
350
+
351
+ for node in self.iter_nodes():
352
+ for op in self._extract_operators(node):
353
+ op_name = op.op_name
354
+ if op.stage is not None:
355
+ op_name = f'{op_name}:{op.stage.name}'
356
+ if op.key in visited:
357
+ continue
358
+
359
+ op_key_id = op.key[:trunc_key]
360
+ if with_op_id:
361
+ op_key_id += f"_{id(op)}"
362
+
363
+ for input_chunk in (op.inputs or []):
364
+ if input_chunk.key not in visited:
365
+ sio.write(f'"Chunk:{self._gen_chunk_key(input_chunk, trunc_key)}" {chunk_style}\n')
366
+ visited.add(input_chunk.key)
367
+ if op.key not in visited:
368
+ sio.write(f'"{op_name}:{op_key_id}" {operator_style}\n')
369
+ visited.add(op.key)
370
+ sio.write(f'"Chunk:{self._gen_chunk_key(input_chunk, trunc_key)}" -> '
371
+ f'"{op_name}:{op_key_id}"\n')
372
+
373
+ for output_chunk in (op.outputs or []):
374
+ if output_chunk.key not in visited:
375
+ tmp_chunk_style = chunk_style
376
+ if result_chunk_keys and output_chunk.key in result_chunk_keys:
377
+ tmp_chunk_style = '[shape=box,style=filled,fillcolor=cadetblue1]'
378
+ sio.write(f'"Chunk:{self._gen_chunk_key(output_chunk, trunc_key)}" {tmp_chunk_style}\n')
379
+ visited.add(output_chunk.key)
380
+ if op.key not in visited:
381
+ sio.write(f'"{op_name}:{op_key_id}" {operator_style}\n')
382
+ visited.add(op.key)
383
+ sio.write(f'"{op_name}:{op_key_id}" -> '
384
+ f'"Chunk:{self._gen_chunk_key(output_chunk, trunc_key)}"')
385
+ if show_columns:
386
+ sio.write(f' [ label={get_col_names(output_chunk)} ]')
387
+ sio.write("\n")
388
+
389
+ sio.write('}')
390
+ return sio.getvalue()
391
+
392
+ @classmethod
393
+ def _gen_chunk_key(cls, chunk, trunc_key):
394
+ if "_" in chunk.key:
395
+ key, index = chunk.key.split("_", 1)
396
+ return "_".join([key[:trunc_key], index])
397
+ else: # pragma: no cover
398
+ return chunk.key[:trunc_key]
399
+
400
+ def _repr_svg_(self): # pragma: no cover
401
+ from graphviz import Source
402
+ return Source(self.to_dot())._repr_svg_()
403
+
404
+ def _repr_mimebundle_(self, *args, **kw): # pragma: no cover
405
+ from graphviz import Source
406
+ return Source(self.to_dot())._repr_mimebundle_(*args, **kw)
407
+
408
+ def compose(self, list keys=None):
409
+ from ...optimizes.chunk_graph.fuse import Fusion
410
+
411
+ return Fusion(self).compose(keys=keys)
412
+
413
+ def decompose(self, nodes=None):
414
+ from ...optimizes.chunk_graph.fuse import Fusion
415
+
416
+ Fusion(self).decompose(nodes=nodes)
417
+
418
+ def view(self, filename='default', graph_attrs=None, trunc_key=5, node_attrs=None, result_chunk_keys=None, show_columns=False): # pragma: no cover
419
+ from graphviz import Source
420
+
421
+ g = Source(self.to_dot(graph_attrs, node_attrs, trunc_key=trunc_key, result_chunk_keys=result_chunk_keys, show_columns=show_columns))
422
+ g.view(filename=filename, cleanup=True)
423
+
424
+ def to_dag(self):
425
+ dag = DAG()
426
+ dag._nodes = self._nodes.copy()
427
+ dag._predecessors = self._predecessors.copy()
428
+ dag._successors = self._successors.copy()
429
+ return dag
430
+
431
+
432
+ class GraphContainsCycleError(Exception):
433
+ pass
434
+
435
+
436
+ cdef class DAG(DirectedGraph):
437
+ def to_dag(self):
438
+ return self
439
+
440
+ def topological_iter(self, succ_checker=None, reverse=False):
441
+ cdef:
442
+ dict preds, succs
443
+ set visited = set()
444
+ list stack
445
+
446
+ if len(self) == 0:
447
+ return
448
+
449
+ if reverse:
450
+ preds, succs = self._successors, self._predecessors
451
+ else:
452
+ preds, succs = self._predecessors, self._successors
453
+
454
+ # copy predecessors and successors
455
+ succs = dict((k, set(v)) for k, v in succs.items())
456
+ preds = dict((k, set(v)) for k, v in preds.items())
457
+
458
+ def _default_succ_checker(_, predecessors):
459
+ return len(predecessors) == 0
460
+
461
+ succ_checker = succ_checker or _default_succ_checker
462
+
463
+ stack = list((p for p, l in preds.items() if len(l) == 0))
464
+ if not stack:
465
+ raise GraphContainsCycleError
466
+ while stack:
467
+ node = stack.pop()
468
+ yield node
469
+ visited.add(node)
470
+ for succ in succs.get(node, {}):
471
+ if succ in visited:
472
+ raise GraphContainsCycleError
473
+ succ_preds = preds[succ]
474
+ succ_preds.remove(node)
475
+ if succ_checker(succ, succ_preds):
476
+ stack.append(succ)
477
+ if len(visited) != len(self):
478
+ raise GraphContainsCycleError
@@ -0,0 +1,158 @@
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ from abc import ABCMeta, abstractmethod
16
+ from typing import Dict, Iterable, List
17
+
18
+ from ...core import Tileable
19
+ from ...serialization.core import buffered, load_type
20
+ from ...serialization.serializables import (
21
+ BoolField,
22
+ DictField,
23
+ ListField,
24
+ Serializable,
25
+ StringField,
26
+ )
27
+ from ...serialization.serializables.core import SerializableSerializer
28
+ from ...utils import extract_class_name, tokenize
29
+ from .core import DAG
30
+
31
+
32
+ class EntityGraph(DAG, metaclass=ABCMeta):
33
+ @property
34
+ @abstractmethod
35
+ def results(self):
36
+ """
37
+ Return result tileables or chunks.
38
+
39
+ Returns
40
+ -------
41
+ results
42
+ """
43
+
44
+ @results.setter
45
+ @abstractmethod
46
+ def results(self, new_results):
47
+ """
48
+ Set result tileables or chunks.
49
+
50
+ Parameters
51
+ ----------
52
+ new_results
53
+
54
+ Returns
55
+ -------
56
+
57
+ """
58
+
59
+ def copy(self) -> "EntityGraph":
60
+ graph = super().copy()
61
+ graph.results = self.results.copy()
62
+ return graph
63
+
64
+
65
+ class TileableGraph(EntityGraph, Iterable[Tileable]):
66
+ _result_tileables: List[Tileable]
67
+ # logic key is a unique and deterministic key for `TileableGraph`. For
68
+ # multiple runs the logic key will remain same if the computational logic
69
+ # doesn't change. And it can be used to some optimization when running a
70
+ # same `execute`, like HBO.
71
+ _logic_key: str
72
+
73
+ def __init__(self, result_tileables: List[Tileable] = None):
74
+ super().__init__()
75
+ self._result_tileables = result_tileables
76
+
77
+ @property
78
+ def result_tileables(self):
79
+ return self._result_tileables
80
+
81
+ @property
82
+ def results(self):
83
+ return self._result_tileables
84
+
85
+ @results.setter
86
+ def results(self, new_results):
87
+ self._result_tileables = new_results
88
+
89
+ @property
90
+ def logic_key(self):
91
+ if not hasattr(self, "_logic_key") or self._logic_key is None:
92
+ token_keys = []
93
+ for node in self.bfs():
94
+ logic_key = node.op.get_logic_key()
95
+ if hasattr(node.op, "logic_key") and node.op.logic_key is None:
96
+ node.op.logic_key = logic_key
97
+ token_keys.append(
98
+ tokenize(logic_key, **node.extra_params)
99
+ if node.extra_params
100
+ else logic_key
101
+ )
102
+ self._logic_key = tokenize(*token_keys)
103
+ return self._logic_key
104
+
105
+
106
+ class SerializableGraph(Serializable):
107
+ _is_chunk = BoolField("is_chunk")
108
+ # TODO(qinxuye): remove this logic when we handle fetch elegantly,
109
+ # now, the node in the graph and inputs for operator may be inconsistent,
110
+ # for example, an operator's inputs may be chunks,
111
+ # but in the graph, the predecessors are all fetch chunks,
112
+ # we serialize the fetch chunks first to make sure when operator's inputs
113
+ # are serialized, they will just be marked as serialized and skip serialization.
114
+ _fetch_nodes = ListField("fetch_nodes")
115
+ _nodes = DictField("nodes")
116
+ _predecessors = DictField("predecessors")
117
+ _successors = DictField("successors")
118
+ _results = ListField("results")
119
+ _graph_cls = StringField("graph_cls")
120
+
121
+ @classmethod
122
+ def from_graph(cls, graph: EntityGraph) -> "SerializableGraph":
123
+ return SerializableGraph(
124
+ _is_chunk=False,
125
+ _fetch_nodes=[chunk for chunk in graph if chunk.is_fetch()],
126
+ _nodes=graph._nodes,
127
+ _predecessors=graph._predecessors,
128
+ _successors=graph._successors,
129
+ _results=graph.results,
130
+ _graph_cls=extract_class_name(type(graph)),
131
+ )
132
+
133
+ def to_graph(self) -> EntityGraph:
134
+ graph_cls = (
135
+ load_type(self._graph_cls, EntityGraph)
136
+ if hasattr(self, "_graph_cls") and self._graph_cls
137
+ else TileableGraph
138
+ )
139
+ graph = graph_cls(self._results)
140
+ graph._nodes.update(self._nodes)
141
+ graph._predecessors.update(self._predecessors)
142
+ graph._successors.update(self._successors)
143
+ return graph
144
+
145
+
146
+ class GraphSerializer(SerializableSerializer):
147
+ @buffered
148
+ def serial(self, obj: EntityGraph, context: Dict):
149
+ serializable_graph = SerializableGraph.from_graph(obj)
150
+ return [], [serializable_graph], False
151
+
152
+ def deserial(self, serialized: List, context: Dict, subs: List) -> TileableGraph:
153
+ serializable_graph: EntityGraph = subs[0]
154
+ return serializable_graph.to_graph()
155
+
156
+
157
+ GraphSerializer.register(EntityGraph)
158
+ SerializableSerializer.register(SerializableGraph)
@@ -0,0 +1,13 @@
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.