maxframe 2.0.0b2__cp39-cp39-macosx_10_9_universal2.whl → 2.2.0__cp39-cp39-macosx_10_9_universal2.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of maxframe might be problematic. Click here for more details.

Files changed (391) hide show
  1. maxframe/__init__.py +1 -0
  2. maxframe/_utils.cpython-39-darwin.so +0 -0
  3. maxframe/_utils.pyx +14 -1
  4. maxframe/codegen/core.py +6 -6
  5. maxframe/codegen/spe/core.py +1 -1
  6. maxframe/codegen/spe/dataframe/__init__.py +1 -0
  7. maxframe/codegen/spe/dataframe/accessors/base.py +18 -0
  8. maxframe/codegen/spe/dataframe/accessors/dict_.py +25 -130
  9. maxframe/codegen/spe/dataframe/accessors/list_.py +12 -48
  10. maxframe/codegen/spe/dataframe/accessors/struct_.py +28 -0
  11. maxframe/codegen/spe/dataframe/arithmetic.py +7 -2
  12. maxframe/codegen/spe/dataframe/groupby.py +88 -0
  13. maxframe/codegen/spe/dataframe/indexing.py +99 -4
  14. maxframe/codegen/spe/dataframe/merge.py +34 -1
  15. maxframe/codegen/spe/dataframe/misc.py +9 -33
  16. maxframe/codegen/spe/dataframe/reduction.py +14 -9
  17. maxframe/codegen/spe/dataframe/reshape.py +46 -0
  18. maxframe/codegen/spe/dataframe/sort.py +30 -17
  19. maxframe/codegen/spe/dataframe/tests/accessors/test_dict.py +9 -15
  20. maxframe/codegen/spe/dataframe/tests/accessors/test_list.py +4 -7
  21. maxframe/codegen/spe/dataframe/tests/accessors/test_struct.py +75 -0
  22. maxframe/codegen/spe/dataframe/tests/indexing/test_iloc.py +20 -1
  23. maxframe/codegen/spe/dataframe/tests/indexing/test_loc.py +35 -0
  24. maxframe/codegen/spe/dataframe/tests/misc/test_misc.py +0 -32
  25. maxframe/codegen/spe/dataframe/tests/test_groupby.py +81 -18
  26. maxframe/codegen/spe/dataframe/tests/test_merge.py +27 -1
  27. maxframe/codegen/spe/dataframe/tests/test_reshape.py +79 -0
  28. maxframe/codegen/spe/dataframe/tests/test_sort.py +20 -0
  29. maxframe/codegen/spe/learn/contrib/tests/test_xgboost.py +2 -1
  30. maxframe/codegen/spe/learn/metrics/__init__.py +1 -1
  31. maxframe/codegen/spe/learn/metrics/_ranking.py +76 -0
  32. maxframe/codegen/spe/learn/metrics/pairwise.py +51 -0
  33. maxframe/codegen/spe/learn/metrics/tests/test_pairwise.py +36 -0
  34. maxframe/codegen/spe/learn/metrics/tests/test_ranking.py +59 -0
  35. maxframe/codegen/spe/tensor/__init__.py +3 -0
  36. maxframe/codegen/spe/tensor/fft.py +74 -0
  37. maxframe/codegen/spe/tensor/linalg.py +29 -2
  38. maxframe/codegen/spe/tensor/misc.py +79 -25
  39. maxframe/codegen/spe/tensor/spatial.py +45 -0
  40. maxframe/codegen/spe/tensor/statistics.py +44 -0
  41. maxframe/codegen/spe/tensor/tests/test_fft.py +64 -0
  42. maxframe/codegen/spe/tensor/tests/test_linalg.py +15 -1
  43. maxframe/codegen/spe/tensor/tests/test_misc.py +52 -2
  44. maxframe/codegen/spe/tensor/tests/test_spatial.py +33 -0
  45. maxframe/codegen/spe/tensor/tests/test_statistics.py +15 -1
  46. maxframe/codegen/spe/tests/test_spe_codegen.py +6 -12
  47. maxframe/codegen/spe/utils.py +2 -0
  48. maxframe/config/config.py +70 -9
  49. maxframe/config/tests/test_validators.py +13 -1
  50. maxframe/config/validators.py +49 -0
  51. maxframe/conftest.py +44 -17
  52. maxframe/core/accessor.py +2 -2
  53. maxframe/core/entity/core.py +5 -0
  54. maxframe/core/entity/tileables.py +1 -1
  55. maxframe/core/graph/core.cpython-39-darwin.so +0 -0
  56. maxframe/core/graph/entity.py +1 -2
  57. maxframe/core/operator/base.py +9 -2
  58. maxframe/core/operator/core.py +10 -2
  59. maxframe/core/operator/utils.py +13 -0
  60. maxframe/dataframe/__init__.py +10 -3
  61. maxframe/dataframe/accessors/__init__.py +1 -1
  62. maxframe/dataframe/accessors/compat.py +45 -0
  63. maxframe/dataframe/accessors/datetime_/__init__.py +4 -1
  64. maxframe/dataframe/accessors/dict_/contains.py +7 -16
  65. maxframe/dataframe/accessors/dict_/core.py +48 -0
  66. maxframe/dataframe/accessors/dict_/getitem.py +17 -21
  67. maxframe/dataframe/accessors/dict_/length.py +7 -16
  68. maxframe/dataframe/accessors/dict_/remove.py +6 -18
  69. maxframe/dataframe/accessors/dict_/setitem.py +8 -18
  70. maxframe/dataframe/accessors/dict_/tests/test_dict_accessor.py +62 -22
  71. maxframe/dataframe/accessors/list_/__init__.py +2 -2
  72. maxframe/dataframe/accessors/list_/core.py +48 -0
  73. maxframe/dataframe/accessors/list_/getitem.py +12 -19
  74. maxframe/dataframe/accessors/list_/length.py +7 -16
  75. maxframe/dataframe/accessors/list_/tests/test_list_accessor.py +11 -9
  76. maxframe/dataframe/accessors/string_/__init__.py +4 -1
  77. maxframe/dataframe/accessors/struct_/__init__.py +37 -0
  78. maxframe/dataframe/accessors/struct_/accessor.py +39 -0
  79. maxframe/dataframe/accessors/struct_/core.py +43 -0
  80. maxframe/dataframe/accessors/struct_/dtypes.py +53 -0
  81. maxframe/dataframe/accessors/struct_/field.py +123 -0
  82. maxframe/dataframe/accessors/struct_/tests/__init__.py +13 -0
  83. maxframe/dataframe/accessors/struct_/tests/test_struct_accessor.py +91 -0
  84. maxframe/dataframe/arithmetic/__init__.py +14 -4
  85. maxframe/dataframe/arithmetic/between.py +106 -0
  86. maxframe/dataframe/arithmetic/dot.py +237 -0
  87. maxframe/dataframe/arithmetic/{around.py → round.py} +11 -7
  88. maxframe/dataframe/core.py +63 -118
  89. maxframe/dataframe/datasource/__init__.py +18 -0
  90. maxframe/dataframe/datasource/from_dict.py +124 -0
  91. maxframe/dataframe/datasource/from_index.py +1 -1
  92. maxframe/dataframe/datasource/from_records.py +77 -0
  93. maxframe/dataframe/datasource/from_tensor.py +109 -41
  94. maxframe/dataframe/datasource/read_csv.py +2 -3
  95. maxframe/dataframe/datasource/tests/test_datasource.py +37 -0
  96. maxframe/dataframe/datastore/__init__.py +5 -1
  97. maxframe/dataframe/datastore/to_csv.py +29 -41
  98. maxframe/dataframe/datastore/to_odps.py +30 -4
  99. maxframe/dataframe/extensions/__init__.py +20 -4
  100. maxframe/dataframe/extensions/apply_chunk.py +32 -6
  101. maxframe/dataframe/extensions/cartesian_chunk.py +153 -0
  102. maxframe/dataframe/extensions/collect_kv.py +126 -0
  103. maxframe/dataframe/extensions/extract_kv.py +177 -0
  104. maxframe/dataframe/extensions/map_reduce.py +263 -0
  105. maxframe/dataframe/extensions/rebalance.py +62 -0
  106. maxframe/dataframe/extensions/tests/test_apply_chunk.py +9 -2
  107. maxframe/dataframe/extensions/tests/test_extensions.py +54 -0
  108. maxframe/dataframe/extensions/tests/test_map_reduce.py +135 -0
  109. maxframe/dataframe/groupby/__init__.py +12 -1
  110. maxframe/dataframe/groupby/aggregation.py +78 -45
  111. maxframe/dataframe/groupby/apply.py +1 -1
  112. maxframe/dataframe/groupby/apply_chunk.py +18 -2
  113. maxframe/dataframe/groupby/core.py +96 -12
  114. maxframe/dataframe/groupby/cum.py +4 -25
  115. maxframe/dataframe/groupby/expanding.py +264 -0
  116. maxframe/dataframe/groupby/fill.py +1 -1
  117. maxframe/dataframe/groupby/getitem.py +12 -5
  118. maxframe/dataframe/groupby/head.py +11 -1
  119. maxframe/dataframe/groupby/rank.py +136 -0
  120. maxframe/dataframe/groupby/rolling.py +206 -0
  121. maxframe/dataframe/groupby/shift.py +114 -0
  122. maxframe/dataframe/groupby/tests/test_groupby.py +0 -5
  123. maxframe/dataframe/indexing/__init__.py +20 -1
  124. maxframe/dataframe/indexing/droplevel.py +195 -0
  125. maxframe/dataframe/indexing/filter.py +169 -0
  126. maxframe/dataframe/indexing/get_level_values.py +76 -0
  127. maxframe/dataframe/indexing/iat.py +45 -0
  128. maxframe/dataframe/indexing/iloc.py +152 -12
  129. maxframe/dataframe/indexing/insert.py +1 -1
  130. maxframe/dataframe/indexing/loc.py +287 -7
  131. maxframe/dataframe/indexing/reindex.py +14 -5
  132. maxframe/dataframe/indexing/rename.py +6 -0
  133. maxframe/dataframe/indexing/rename_axis.py +2 -2
  134. maxframe/dataframe/indexing/reorder_levels.py +143 -0
  135. maxframe/dataframe/indexing/reset_index.py +33 -6
  136. maxframe/dataframe/indexing/sample.py +8 -0
  137. maxframe/dataframe/indexing/setitem.py +3 -3
  138. maxframe/dataframe/indexing/swaplevel.py +185 -0
  139. maxframe/dataframe/indexing/take.py +99 -0
  140. maxframe/dataframe/indexing/truncate.py +140 -0
  141. maxframe/dataframe/indexing/where.py +0 -11
  142. maxframe/dataframe/indexing/xs.py +148 -0
  143. maxframe/dataframe/merge/__init__.py +12 -1
  144. maxframe/dataframe/merge/append.py +97 -98
  145. maxframe/dataframe/merge/combine_first.py +120 -0
  146. maxframe/dataframe/merge/compare.py +387 -0
  147. maxframe/dataframe/merge/concat.py +183 -0
  148. maxframe/dataframe/merge/update.py +271 -0
  149. maxframe/dataframe/misc/__init__.py +16 -10
  150. maxframe/dataframe/misc/_duplicate.py +10 -4
  151. maxframe/dataframe/misc/apply.py +1 -1
  152. maxframe/dataframe/misc/check_unique.py +51 -0
  153. maxframe/dataframe/misc/clip.py +145 -0
  154. maxframe/dataframe/misc/describe.py +175 -9
  155. maxframe/dataframe/misc/drop_duplicates.py +2 -2
  156. maxframe/dataframe/misc/duplicated.py +2 -2
  157. maxframe/dataframe/misc/get_dummies.py +5 -1
  158. maxframe/dataframe/misc/isin.py +2 -2
  159. maxframe/dataframe/misc/map.py +94 -0
  160. maxframe/dataframe/misc/tests/test_misc.py +13 -2
  161. maxframe/dataframe/misc/to_numeric.py +3 -0
  162. maxframe/dataframe/misc/transform.py +12 -5
  163. maxframe/dataframe/misc/transpose.py +13 -1
  164. maxframe/dataframe/misc/valid_index.py +115 -0
  165. maxframe/dataframe/misc/value_counts.py +38 -4
  166. maxframe/dataframe/missing/checkna.py +13 -6
  167. maxframe/dataframe/missing/dropna.py +5 -0
  168. maxframe/dataframe/missing/fillna.py +1 -1
  169. maxframe/dataframe/missing/replace.py +7 -4
  170. maxframe/dataframe/reduction/__init__.py +29 -15
  171. maxframe/dataframe/reduction/aggregation.py +38 -9
  172. maxframe/dataframe/reduction/all.py +2 -2
  173. maxframe/dataframe/reduction/any.py +2 -2
  174. maxframe/dataframe/reduction/argmax.py +100 -0
  175. maxframe/dataframe/reduction/argmin.py +100 -0
  176. maxframe/dataframe/reduction/core.py +65 -18
  177. maxframe/dataframe/reduction/count.py +13 -9
  178. maxframe/dataframe/reduction/cov.py +166 -0
  179. maxframe/dataframe/reduction/cummax.py +2 -2
  180. maxframe/dataframe/reduction/cummin.py +2 -2
  181. maxframe/dataframe/reduction/cumprod.py +2 -2
  182. maxframe/dataframe/reduction/cumsum.py +2 -2
  183. maxframe/dataframe/reduction/custom_reduction.py +2 -2
  184. maxframe/dataframe/reduction/idxmax.py +185 -0
  185. maxframe/dataframe/reduction/idxmin.py +185 -0
  186. maxframe/dataframe/reduction/kurtosis.py +37 -30
  187. maxframe/dataframe/reduction/max.py +2 -2
  188. maxframe/dataframe/reduction/mean.py +9 -7
  189. maxframe/dataframe/reduction/median.py +2 -2
  190. maxframe/dataframe/reduction/min.py +2 -2
  191. maxframe/dataframe/reduction/nunique.py +9 -8
  192. maxframe/dataframe/reduction/prod.py +18 -13
  193. maxframe/dataframe/reduction/reduction_size.py +2 -2
  194. maxframe/dataframe/reduction/sem.py +13 -9
  195. maxframe/dataframe/reduction/skew.py +31 -27
  196. maxframe/dataframe/reduction/str_concat.py +10 -7
  197. maxframe/dataframe/reduction/sum.py +18 -14
  198. maxframe/dataframe/reduction/unique.py +20 -3
  199. maxframe/dataframe/reduction/var.py +16 -12
  200. maxframe/dataframe/reshape/__init__.py +38 -0
  201. maxframe/dataframe/{misc → reshape}/pivot.py +1 -0
  202. maxframe/dataframe/{misc → reshape}/pivot_table.py +1 -0
  203. maxframe/dataframe/reshape/unstack.py +114 -0
  204. maxframe/dataframe/sort/__init__.py +8 -0
  205. maxframe/dataframe/sort/argsort.py +62 -0
  206. maxframe/dataframe/sort/core.py +1 -0
  207. maxframe/dataframe/sort/nlargest.py +238 -0
  208. maxframe/dataframe/sort/nsmallest.py +228 -0
  209. maxframe/dataframe/statistics/__init__.py +3 -3
  210. maxframe/dataframe/statistics/corr.py +1 -0
  211. maxframe/dataframe/statistics/quantile.py +2 -2
  212. maxframe/dataframe/tests/test_typing.py +104 -0
  213. maxframe/dataframe/tests/test_utils.py +66 -2
  214. maxframe/dataframe/typing_.py +185 -0
  215. maxframe/dataframe/utils.py +95 -26
  216. maxframe/dataframe/window/aggregation.py +8 -4
  217. maxframe/dataframe/window/core.py +14 -1
  218. maxframe/dataframe/window/ewm.py +1 -3
  219. maxframe/dataframe/window/expanding.py +37 -35
  220. maxframe/dataframe/window/rolling.py +49 -39
  221. maxframe/dataframe/window/tests/test_expanding.py +1 -7
  222. maxframe/dataframe/window/tests/test_rolling.py +1 -1
  223. maxframe/env.py +7 -4
  224. maxframe/errors.py +2 -2
  225. maxframe/io/odpsio/schema.py +9 -3
  226. maxframe/io/odpsio/tableio.py +7 -2
  227. maxframe/io/odpsio/tests/test_schema.py +198 -83
  228. maxframe/learn/__init__.py +10 -2
  229. maxframe/learn/cluster/__init__.py +15 -0
  230. maxframe/learn/cluster/_kmeans.py +782 -0
  231. maxframe/learn/contrib/llm/core.py +2 -0
  232. maxframe/learn/contrib/xgboost/core.py +86 -1
  233. maxframe/learn/contrib/xgboost/train.py +5 -2
  234. maxframe/learn/core.py +66 -0
  235. maxframe/learn/linear_model/_base.py +58 -1
  236. maxframe/learn/linear_model/_lin_reg.py +1 -1
  237. maxframe/learn/metrics/__init__.py +6 -0
  238. maxframe/learn/metrics/_classification.py +145 -0
  239. maxframe/learn/metrics/_ranking.py +477 -0
  240. maxframe/learn/metrics/_scorer.py +60 -0
  241. maxframe/learn/metrics/pairwise/__init__.py +21 -0
  242. maxframe/learn/metrics/pairwise/core.py +77 -0
  243. maxframe/learn/metrics/pairwise/cosine.py +115 -0
  244. maxframe/learn/metrics/pairwise/euclidean.py +176 -0
  245. maxframe/learn/metrics/pairwise/haversine.py +96 -0
  246. maxframe/learn/metrics/pairwise/manhattan.py +80 -0
  247. maxframe/learn/metrics/pairwise/pairwise.py +127 -0
  248. maxframe/learn/metrics/pairwise/pairwise_distances_topk.py +121 -0
  249. maxframe/learn/metrics/pairwise/rbf_kernel.py +51 -0
  250. maxframe/learn/metrics/tests/__init__.py +13 -0
  251. maxframe/learn/metrics/tests/test_scorer.py +26 -0
  252. maxframe/learn/utils/__init__.py +1 -1
  253. maxframe/learn/utils/checks.py +1 -2
  254. maxframe/learn/utils/core.py +59 -0
  255. maxframe/learn/utils/extmath.py +37 -0
  256. maxframe/learn/utils/odpsio.py +193 -0
  257. maxframe/learn/utils/validation.py +2 -2
  258. maxframe/lib/compat.py +40 -0
  259. maxframe/lib/dtypes_extension/__init__.py +16 -1
  260. maxframe/lib/dtypes_extension/_fake_arrow_dtype.py +604 -0
  261. maxframe/lib/dtypes_extension/blob.py +304 -0
  262. maxframe/lib/dtypes_extension/dtypes.py +40 -0
  263. maxframe/lib/dtypes_extension/tests/test_blob.py +88 -0
  264. maxframe/lib/dtypes_extension/tests/test_dtypes.py +16 -1
  265. maxframe/lib/dtypes_extension/tests/test_fake_arrow_dtype.py +75 -0
  266. maxframe/lib/filesystem/_oss_lib/common.py +122 -50
  267. maxframe/lib/filesystem/_oss_lib/glob.py +1 -1
  268. maxframe/lib/filesystem/_oss_lib/handle.py +21 -25
  269. maxframe/lib/filesystem/base.py +1 -1
  270. maxframe/lib/filesystem/core.py +1 -1
  271. maxframe/lib/filesystem/oss.py +115 -46
  272. maxframe/lib/filesystem/tests/test_oss.py +74 -36
  273. maxframe/lib/mmh3.cpython-39-darwin.so +0 -0
  274. maxframe/lib/wrapped_pickle.py +10 -0
  275. maxframe/opcodes.py +33 -15
  276. maxframe/protocol.py +12 -0
  277. maxframe/serialization/__init__.py +11 -2
  278. maxframe/serialization/arrow.py +38 -13
  279. maxframe/serialization/blob.py +32 -0
  280. maxframe/serialization/core.cpython-39-darwin.so +0 -0
  281. maxframe/serialization/core.pyx +39 -1
  282. maxframe/serialization/exception.py +2 -4
  283. maxframe/serialization/numpy.py +11 -0
  284. maxframe/serialization/pandas.py +46 -9
  285. maxframe/serialization/serializables/core.py +2 -2
  286. maxframe/serialization/tests/test_serial.py +29 -2
  287. maxframe/tensor/__init__.py +38 -8
  288. maxframe/tensor/arithmetic/__init__.py +19 -10
  289. maxframe/tensor/arithmetic/iscomplexobj.py +53 -0
  290. maxframe/tensor/arithmetic/tests/test_arithmetic.py +6 -0
  291. maxframe/tensor/core.py +3 -2
  292. maxframe/tensor/datasource/tests/test_datasource.py +2 -1
  293. maxframe/tensor/extensions/__init__.py +2 -0
  294. maxframe/tensor/extensions/apply_chunk.py +3 -3
  295. maxframe/tensor/extensions/rebalance.py +65 -0
  296. maxframe/tensor/fft/__init__.py +32 -0
  297. maxframe/tensor/fft/core.py +168 -0
  298. maxframe/tensor/fft/fft.py +112 -0
  299. maxframe/tensor/fft/fft2.py +118 -0
  300. maxframe/tensor/fft/fftfreq.py +80 -0
  301. maxframe/tensor/fft/fftn.py +123 -0
  302. maxframe/tensor/fft/fftshift.py +79 -0
  303. maxframe/tensor/fft/hfft.py +112 -0
  304. maxframe/tensor/fft/ifft.py +114 -0
  305. maxframe/tensor/fft/ifft2.py +115 -0
  306. maxframe/tensor/fft/ifftn.py +123 -0
  307. maxframe/tensor/fft/ifftshift.py +73 -0
  308. maxframe/tensor/fft/ihfft.py +93 -0
  309. maxframe/tensor/fft/irfft.py +118 -0
  310. maxframe/tensor/fft/irfft2.py +62 -0
  311. maxframe/tensor/fft/irfftn.py +114 -0
  312. maxframe/tensor/fft/rfft.py +116 -0
  313. maxframe/tensor/fft/rfft2.py +63 -0
  314. maxframe/tensor/fft/rfftfreq.py +87 -0
  315. maxframe/tensor/fft/rfftn.py +113 -0
  316. maxframe/tensor/indexing/fill_diagonal.py +1 -7
  317. maxframe/tensor/linalg/__init__.py +7 -0
  318. maxframe/tensor/linalg/_einsumfunc.py +1025 -0
  319. maxframe/tensor/linalg/cholesky.py +117 -0
  320. maxframe/tensor/linalg/einsum.py +339 -0
  321. maxframe/tensor/linalg/lstsq.py +100 -0
  322. maxframe/tensor/linalg/matrix_norm.py +75 -0
  323. maxframe/tensor/linalg/norm.py +249 -0
  324. maxframe/tensor/linalg/solve.py +72 -0
  325. maxframe/tensor/linalg/solve_triangular.py +2 -2
  326. maxframe/tensor/linalg/vector_norm.py +113 -0
  327. maxframe/tensor/misc/__init__.py +24 -1
  328. maxframe/tensor/misc/argwhere.py +72 -0
  329. maxframe/tensor/misc/array_split.py +46 -0
  330. maxframe/tensor/misc/broadcast_arrays.py +57 -0
  331. maxframe/tensor/misc/copyto.py +130 -0
  332. maxframe/tensor/misc/delete.py +104 -0
  333. maxframe/tensor/misc/dsplit.py +68 -0
  334. maxframe/tensor/misc/ediff1d.py +74 -0
  335. maxframe/tensor/misc/expand_dims.py +85 -0
  336. maxframe/tensor/misc/flip.py +90 -0
  337. maxframe/tensor/misc/fliplr.py +64 -0
  338. maxframe/tensor/misc/flipud.py +68 -0
  339. maxframe/tensor/misc/hsplit.py +85 -0
  340. maxframe/tensor/misc/insert.py +139 -0
  341. maxframe/tensor/misc/moveaxis.py +83 -0
  342. maxframe/tensor/misc/result_type.py +88 -0
  343. maxframe/tensor/misc/roll.py +124 -0
  344. maxframe/tensor/misc/rollaxis.py +77 -0
  345. maxframe/tensor/misc/shape.py +89 -0
  346. maxframe/tensor/misc/split.py +190 -0
  347. maxframe/tensor/misc/tile.py +109 -0
  348. maxframe/tensor/misc/vsplit.py +74 -0
  349. maxframe/tensor/reduction/array_equal.py +2 -1
  350. maxframe/tensor/sort/__init__.py +2 -0
  351. maxframe/tensor/sort/argpartition.py +98 -0
  352. maxframe/tensor/sort/partition.py +228 -0
  353. maxframe/tensor/spatial/__init__.py +15 -0
  354. maxframe/tensor/spatial/distance/__init__.py +17 -0
  355. maxframe/tensor/spatial/distance/cdist.py +421 -0
  356. maxframe/tensor/spatial/distance/pdist.py +398 -0
  357. maxframe/tensor/spatial/distance/squareform.py +153 -0
  358. maxframe/tensor/special/__init__.py +159 -21
  359. maxframe/tensor/special/airy.py +55 -0
  360. maxframe/tensor/special/bessel.py +199 -0
  361. maxframe/tensor/special/core.py +65 -4
  362. maxframe/tensor/special/ellip_func_integrals.py +155 -0
  363. maxframe/tensor/special/ellip_harm.py +55 -0
  364. maxframe/tensor/special/err_fresnel.py +223 -0
  365. maxframe/tensor/special/gamma_funcs.py +303 -0
  366. maxframe/tensor/special/hypergeometric_funcs.py +69 -0
  367. maxframe/tensor/special/info_theory.py +189 -0
  368. maxframe/tensor/special/misc.py +21 -0
  369. maxframe/tensor/statistics/__init__.py +6 -0
  370. maxframe/tensor/statistics/corrcoef.py +77 -0
  371. maxframe/tensor/statistics/cov.py +222 -0
  372. maxframe/tensor/statistics/digitize.py +126 -0
  373. maxframe/tensor/statistics/histogram.py +520 -0
  374. maxframe/tensor/statistics/median.py +85 -0
  375. maxframe/tensor/statistics/ptp.py +89 -0
  376. maxframe/tensor/utils.py +3 -3
  377. maxframe/tests/test_utils.py +43 -1
  378. maxframe/tests/utils.py +0 -2
  379. maxframe/typing_.py +2 -0
  380. maxframe/udf.py +27 -2
  381. maxframe/utils.py +193 -19
  382. {maxframe-2.0.0b2.dist-info → maxframe-2.2.0.dist-info}/METADATA +3 -2
  383. {maxframe-2.0.0b2.dist-info → maxframe-2.2.0.dist-info}/RECORD +391 -236
  384. maxframe_client/fetcher.py +35 -4
  385. maxframe_client/session/odps.py +7 -2
  386. maxframe_client/tests/test_fetcher.py +76 -3
  387. maxframe_client/tests/test_session.py +4 -1
  388. /maxframe/dataframe/{misc → reshape}/melt.py +0 -0
  389. /maxframe/dataframe/{misc → reshape}/stack.py +0 -0
  390. {maxframe-2.0.0b2.dist-info → maxframe-2.2.0.dist-info}/WHEEL +0 -0
  391. {maxframe-2.0.0b2.dist-info → maxframe-2.2.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,43 @@
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 .... import opcodes
16
+ from ....core import OutputType
17
+ from ....serialization.serializables import DictField, StringField, TupleField
18
+ from ....utils import no_default
19
+ from ...operators import DataFrameOperator, DataFrameOperatorMixin
20
+
21
+
22
+ class SeriesStructMethod(DataFrameOperator, DataFrameOperatorMixin):
23
+ _op_type_ = opcodes.SERIES_STRUCT_METHOD
24
+
25
+ method = StringField("method", default=None)
26
+ method_args = TupleField("method_args", default_factory=list)
27
+ method_kwargs = DictField("method_kwargs", default_factory=dict)
28
+
29
+ def __init__(self, output_types=None, **kw):
30
+ output_types = output_types or [OutputType.series]
31
+ kw["_output_types"] = kw.get("_output_types") or output_types
32
+ super().__init__(**kw)
33
+
34
+ def __call__(self, inp, dtype=None, name=no_default):
35
+ dtype = dtype if dtype is not None else inp.dtype
36
+ name = inp.name if name is no_default else name
37
+ return self.new_series(
38
+ [inp],
39
+ shape=inp.shape,
40
+ dtype=dtype,
41
+ index_value=inp.index_value,
42
+ name=name,
43
+ )
@@ -0,0 +1,53 @@
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 pandas as pd
16
+
17
+ from ....lib.dtypes_extension import ArrowDtype
18
+
19
+
20
+ def struct_dtypes(series):
21
+ """
22
+ Return the dtype object of each child field of the struct.
23
+
24
+ Returns
25
+ -------
26
+ pandas.Series
27
+ The data type of each child field.
28
+
29
+ Examples
30
+ --------
31
+ >>> import maxframe.dataframe as md
32
+ >>> import pandas as pd
33
+ >>> import pyarrow as pa
34
+ >>> s = md.Series(
35
+ ... [
36
+ ... {"version": 1, "project": "pandas"},
37
+ ... {"version": 2, "project": "pandas"},
38
+ ... {"version": 1, "project": "numpy"},
39
+ ... ],
40
+ ... dtype=pd.ArrowDtype(pa.struct(
41
+ ... [("version", pa.int64()), ("project", pa.string())]
42
+ ... ))
43
+ ... )
44
+ >>> s.struct.dtypes.execute()
45
+ version int64[pyarrow]
46
+ project string[pyarrow]
47
+ dtype: object
48
+ """
49
+ pa_type = series.dtype.pyarrow_dtype
50
+ fields = [pa_type[idx] for idx in range(pa_type.num_fields)]
51
+ dtypes_list = [ArrowDtype(ft.type) for ft in fields]
52
+ dt_name = [ft.name for ft in fields]
53
+ return pd.Series(dtypes_list, index=dt_name)
@@ -0,0 +1,123 @@
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 ....lib.dtypes_extension import ArrowDtype
16
+ from .core import SeriesStructMethod
17
+
18
+
19
+ def struct_field(series, name_or_index):
20
+ """
21
+ Extract a child field of a struct as a Series.
22
+
23
+ Parameters
24
+ ----------
25
+ name_or_index : str | bytes | int | expression | list
26
+ Name or index of the child field to extract.
27
+
28
+ For list-like inputs, this will index into a nested
29
+ struct.
30
+
31
+ Returns
32
+ -------
33
+ pandas.Series
34
+ The data corresponding to the selected child field.
35
+
36
+ See Also
37
+ --------
38
+ Series.struct.explode : Return all child fields as a DataFrame.
39
+
40
+ Notes
41
+ -----
42
+ The name of the resulting Series will be set using the following
43
+ rules:
44
+
45
+ - For string, bytes, or integer `name_or_index` (or a list of these, for
46
+ a nested selection), the Series name is set to the selected
47
+ field's name.
48
+ - For a :class:`pyarrow.compute.Expression`, this is set to
49
+ the string form of the expression.
50
+ - For list-like `name_or_index`, the name will be set to the
51
+ name of the final field selected.
52
+
53
+ Examples
54
+ --------
55
+ >>> import maxframe.dataframe as md
56
+ >>> import pandas as pd
57
+ >>> import pyarrow as pa
58
+ >>> s = md.Series(
59
+ ... [
60
+ ... {"version": 1, "project": "pandas"},
61
+ ... {"version": 2, "project": "pandas"},
62
+ ... {"version": 1, "project": "numpy"},
63
+ ... ],
64
+ ... dtype=pd.ArrowDtype(pa.struct(
65
+ ... [("version", pa.int64()), ("project", pa.string())]
66
+ ... ))
67
+ ... )
68
+
69
+ Extract by field name.
70
+
71
+ >>> s.struct.field("project").execute()
72
+ 0 pandas
73
+ 1 pandas
74
+ 2 numpy
75
+ Name: project, dtype: string[pyarrow]
76
+
77
+ Extract by field index.
78
+
79
+ >>> s.struct.field(0).execute()
80
+ 0 1
81
+ 1 2
82
+ 2 1
83
+ Name: version, dtype: int64[pyarrow]
84
+
85
+ For nested struct types, you can pass a list of values to index
86
+ multiple levels:
87
+
88
+ >>> version_type = pa.struct([
89
+ ... ("major", pa.int64()),
90
+ ... ("minor", pa.int64()),
91
+ ... ])
92
+ >>> s = md.Series(
93
+ ... [
94
+ ... {"version": {"major": 1, "minor": 5}, "project": "pandas"},
95
+ ... {"version": {"major": 2, "minor": 1}, "project": "pandas"},
96
+ ... {"version": {"major": 1, "minor": 26}, "project": "numpy"},
97
+ ... ],
98
+ ... dtype=pd.ArrowDtype(pa.struct(
99
+ ... [("version", version_type), ("project", pa.string())]
100
+ ... ))
101
+ ... )
102
+ >>> s.struct.field(["version", "minor"]).execute()
103
+ 0 5
104
+ 1 1
105
+ 2 26
106
+ Name: minor, dtype: int64[pyarrow]
107
+ >>> s.struct.field([0, 0]).execute()
108
+ 0 1
109
+ 1 2
110
+ 2 1
111
+ Name: major, dtype: int64[pyarrow]
112
+ """
113
+ op = SeriesStructMethod(
114
+ method="field",
115
+ method_kwargs={"name_or_index": name_or_index},
116
+ )
117
+ names = name_or_index if isinstance(name_or_index, list) else [name_or_index]
118
+ arrow_type = series.dtype.pyarrow_dtype
119
+ arrow_name = None
120
+ for n in names:
121
+ arrow_name = arrow_type[n].name
122
+ arrow_type = arrow_type[n].type
123
+ return op(series, dtype=ArrowDtype(arrow_type), name=arrow_name)
@@ -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.
@@ -0,0 +1,91 @@
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 pandas as pd
16
+ import pyarrow as pa
17
+ import pytest
18
+
19
+ from ..... import dataframe as md
20
+ from .....utils import ARROW_DTYPE_NOT_SUPPORTED
21
+ from ..core import SeriesStructMethod
22
+
23
+ pytestmark = pytest.mark.skipif(
24
+ ARROW_DTYPE_NOT_SUPPORTED, reason="Arrow Dtype is not supported"
25
+ )
26
+
27
+
28
+ @pytest.fixture
29
+ def series():
30
+ version_type = pa.struct(
31
+ [
32
+ ("major", pa.int64()),
33
+ ("minor", pa.int64()),
34
+ ]
35
+ )
36
+ return md.Series(
37
+ [
38
+ {"version": {"major": 1, "minor": 5}, "project": "pandas"},
39
+ {"version": {"major": 2, "minor": 1}, "project": "pandas"},
40
+ {"version": {"major": 1, "minor": 26}, "project": "numpy"},
41
+ ],
42
+ dtype=pd.ArrowDtype(
43
+ pa.struct([("version", version_type), ("project", pa.string())])
44
+ ),
45
+ )
46
+
47
+
48
+ def test_dtypes(series):
49
+ pd.testing.assert_series_equal(
50
+ series.struct.dtypes,
51
+ pd.Series(
52
+ [
53
+ pd.ArrowDtype(
54
+ pa.struct([("major", pa.int64()), ("minor", pa.int64())])
55
+ ),
56
+ pd.ArrowDtype(pa.string()),
57
+ ],
58
+ index=["version", "project"],
59
+ ),
60
+ )
61
+
62
+
63
+ def test_field(series):
64
+ version_type = pa.struct(
65
+ [
66
+ ("major", pa.int64()),
67
+ ("minor", pa.int64()),
68
+ ]
69
+ )
70
+
71
+ s1 = series.struct.field("version")
72
+ assert isinstance(s1, md.Series)
73
+ assert s1.name == "version"
74
+ assert s1.dtype == pd.ArrowDtype(version_type)
75
+ assert s1.shape == (3,)
76
+ assert s1.index_value == series.index_value
77
+ op = s1.op
78
+ assert isinstance(op, SeriesStructMethod)
79
+ assert op.method == "field"
80
+ assert op.method_kwargs["name_or_index"] == "version"
81
+
82
+ s2 = series.struct.field(["version", "major"])
83
+ assert isinstance(s1, md.Series)
84
+ assert s2.name == "major"
85
+ assert s2.dtype == pd.ArrowDtype(pa.int64())
86
+ assert s2.shape == (3,)
87
+ assert s2.index_value == series.index_value
88
+ op = s2.op
89
+ assert isinstance(op, SeriesStructMethod)
90
+ assert op.method == "field"
91
+ assert op.method_kwargs["name_or_index"] == ["version", "major"]
@@ -29,14 +29,15 @@ from .arcsin import DataFrameArcsin
29
29
  from .arcsinh import DataFrameArcsinh
30
30
  from .arctan import DataFrameArctan
31
31
  from .arctanh import DataFrameArctanh
32
- from .around import DataFrameAround, around
32
+ from .between import between
33
33
  from .bitwise_and import DataFrameAnd, bitand, rbitand
34
- from .bitwise_or import DataFrameOr, bitor, rbitor
34
+ from .bitwise_or import DataFrameOr, DataFrameTreeOr, bitor, rbitor
35
35
  from .bitwise_xor import DataFrameXor, bitxor, rbitxor
36
36
  from .ceil import DataFrameCeil
37
37
  from .cos import DataFrameCos
38
38
  from .cosh import DataFrameCosh
39
39
  from .degrees import DataFrameDegrees
40
+ from .dot import DataFrameDot, dot, rdot
40
41
  from .equal import DataFrameEqual, eq
41
42
  from .exp import DataFrameExp
42
43
  from .exp2 import DataFrameExp2
@@ -58,6 +59,7 @@ from .negative import DataFrameNegative, negative
58
59
  from .not_equal import DataFrameNotEqual, ne
59
60
  from .power import DataFramePower, power, rpower
60
61
  from .radians import DataFrameRadians
62
+ from .round import DataFrameRound, round
61
63
  from .sin import DataFrameSin
62
64
  from .sinh import DataFrameSinh
63
65
  from .sqrt import DataFrameSqrt
@@ -220,7 +222,7 @@ def _install():
220
222
  DataFrameDegrees,
221
223
  DataFrameCeil,
222
224
  DataFrameFloor,
223
- DataFrameAround,
225
+ DataFrameRound,
224
226
  DataFrameExp,
225
227
  DataFrameExp2,
226
228
  DataFrameExpm1,
@@ -255,7 +257,8 @@ def _install():
255
257
  for entity in DATAFRAME_TYPE + SERIES_TYPE:
256
258
  setattr(entity, "__abs__", abs_)
257
259
  setattr(entity, "abs", abs_)
258
- _register_method(entity, "round", around)
260
+ _register_method(entity, "around", round)
261
+ _register_method(entity, "round", round)
259
262
  setattr(entity, "__invert__", invert)
260
263
 
261
264
  setattr(entity, "__add__", wrap_notimplemented_exception(add))
@@ -310,6 +313,10 @@ def _install():
310
313
  _register_bin_method(entity, "ge", ge)
311
314
  _register_bin_method(entity, "le", le)
312
315
 
316
+ setattr(entity, "__matmul__", dot)
317
+ setattr(entity, "__rmatmul__", rdot)
318
+ _register_method(entity, "dot", dot)
319
+
313
320
  setattr(entity, "__and__", wrap_notimplemented_exception(bitand))
314
321
  setattr(entity, "__rand__", wrap_notimplemented_exception(rbitand))
315
322
 
@@ -321,6 +328,9 @@ def _install():
321
328
 
322
329
  setattr(entity, "__neg__", wrap_notimplemented_exception(negative))
323
330
 
331
+ for entity in SERIES_TYPE:
332
+ setattr(entity, "between", between)
333
+
324
334
  for entity in INDEX_TYPE:
325
335
  setattr(entity, "__eq__", _wrap_eq())
326
336
 
@@ -0,0 +1,106 @@
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
+
16
+ def between(series, left, right, inclusive="both"):
17
+ """
18
+ Return boolean Series equivalent to left <= series <= right.
19
+ This function returns a boolean vector containing `True` wherever the
20
+ corresponding Series element is between the boundary values `left` and
21
+ `right`. NA values are treated as `False`.
22
+
23
+ Parameters
24
+ ----------
25
+ left : scalar or list-like
26
+ Left boundary.
27
+ right : scalar or list-like
28
+ Right boundary.
29
+ inclusive : {"both", "neither", "left", "right"}
30
+ Include boundaries. Whether to set each bound as closed or open.
31
+
32
+ Returns
33
+ -------
34
+ Series
35
+ Series representing whether each element is between left and
36
+ right (inclusive).
37
+
38
+ See Also
39
+ --------
40
+ Series.gt : Greater than of series and other.
41
+ Series.lt : Less than of series and other.
42
+
43
+ Notes
44
+ -----
45
+ This function is equivalent to ``(left <= ser) & (ser <= right)``
46
+
47
+ Examples
48
+ --------
49
+ >>> import maxframe.dataframe as md
50
+ >>> s = md.Series([2, 0, 4, 8, np.nan])
51
+
52
+ Boundary values are included by default:
53
+
54
+ >>> s.between(1, 4).execute()
55
+ 0 True
56
+ 1 False
57
+ 2 True
58
+ 3 False
59
+ 4 False
60
+ dtype: bool
61
+
62
+ With `inclusive` set to ``"neither"`` boundary values are excluded:
63
+
64
+ >>> s.between(1, 4, inclusive="neither").execute()
65
+ 0 True
66
+ 1 False
67
+ 2 False
68
+ 3 False
69
+ 4 False
70
+ dtype: bool
71
+
72
+ `left` and `right` can be any scalar value:
73
+
74
+ >>> s = md.Series(['Alice', 'Bob', 'Carol', 'Eve'])
75
+ >>> s.between('Anna', 'Daniel').execute()
76
+ 0 False
77
+ 1 True
78
+ 2 True
79
+ 3 False
80
+ dtype: bool
81
+ """
82
+ if isinstance(inclusive, bool): # pragma: no cover
83
+ # for pandas < 1.3.0
84
+ if inclusive:
85
+ inclusive = "both"
86
+ else:
87
+ inclusive = "neither"
88
+ if inclusive == "both":
89
+ lmask = series >= left
90
+ rmask = series <= right
91
+ elif inclusive == "left":
92
+ lmask = series >= left
93
+ rmask = series < right
94
+ elif inclusive == "right":
95
+ lmask = series > left
96
+ rmask = series <= right
97
+ elif inclusive == "neither":
98
+ lmask = series > left
99
+ rmask = series < right
100
+ else:
101
+ raise ValueError(
102
+ "Inclusive has to be either string of 'both',"
103
+ "'left', 'right', or 'neither'."
104
+ )
105
+
106
+ return lmask & rmask