maxframe 2.0.0b2__cp37-cp37m-win32.whl → 2.3.0rc1__cp37-cp37m-win32.whl

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

Potentially problematic release.


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

Files changed (443) hide show
  1. maxframe/__init__.py +1 -0
  2. maxframe/_utils.cp37-win32.pyd +0 -0
  3. maxframe/_utils.pyx +14 -1
  4. maxframe/codegen/core.py +9 -8
  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 +38 -1
  15. maxframe/codegen/spe/dataframe/misc.py +11 -33
  16. maxframe/codegen/spe/dataframe/reduction.py +32 -9
  17. maxframe/codegen/spe/dataframe/reshape.py +46 -0
  18. maxframe/codegen/spe/dataframe/sort.py +39 -18
  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_reduction.py +13 -0
  28. maxframe/codegen/spe/dataframe/tests/test_reshape.py +79 -0
  29. maxframe/codegen/spe/dataframe/tests/test_sort.py +20 -0
  30. maxframe/codegen/spe/dataframe/tseries.py +9 -0
  31. maxframe/codegen/spe/learn/contrib/lightgbm.py +4 -3
  32. maxframe/codegen/spe/learn/contrib/tests/test_xgboost.py +2 -1
  33. maxframe/codegen/spe/learn/metrics/__init__.py +1 -1
  34. maxframe/codegen/spe/learn/metrics/_ranking.py +76 -0
  35. maxframe/codegen/spe/learn/metrics/pairwise.py +51 -0
  36. maxframe/codegen/spe/learn/metrics/tests/test_pairwise.py +36 -0
  37. maxframe/codegen/spe/learn/metrics/tests/test_ranking.py +59 -0
  38. maxframe/codegen/spe/tensor/__init__.py +3 -0
  39. maxframe/codegen/spe/tensor/datasource.py +1 -0
  40. maxframe/codegen/spe/tensor/fft.py +74 -0
  41. maxframe/codegen/spe/tensor/linalg.py +29 -2
  42. maxframe/codegen/spe/tensor/misc.py +79 -25
  43. maxframe/codegen/spe/tensor/spatial.py +45 -0
  44. maxframe/codegen/spe/tensor/statistics.py +44 -0
  45. maxframe/codegen/spe/tensor/tests/test_fft.py +64 -0
  46. maxframe/codegen/spe/tensor/tests/test_linalg.py +15 -1
  47. maxframe/codegen/spe/tensor/tests/test_misc.py +52 -2
  48. maxframe/codegen/spe/tensor/tests/test_spatial.py +33 -0
  49. maxframe/codegen/spe/tensor/tests/test_statistics.py +15 -1
  50. maxframe/codegen/spe/tests/test_spe_codegen.py +6 -12
  51. maxframe/codegen/spe/utils.py +2 -0
  52. maxframe/config/config.py +73 -9
  53. maxframe/config/tests/test_validators.py +13 -1
  54. maxframe/config/validators.py +49 -0
  55. maxframe/conftest.py +54 -17
  56. maxframe/core/accessor.py +2 -2
  57. maxframe/core/base.py +2 -1
  58. maxframe/core/entity/core.py +5 -0
  59. maxframe/core/entity/tileables.py +3 -1
  60. maxframe/core/graph/core.cp37-win32.pyd +0 -0
  61. maxframe/core/graph/entity.py +8 -3
  62. maxframe/core/mode.py +6 -1
  63. maxframe/core/operator/base.py +9 -2
  64. maxframe/core/operator/core.py +10 -2
  65. maxframe/core/operator/utils.py +13 -0
  66. maxframe/dataframe/__init__.py +12 -5
  67. maxframe/dataframe/accessors/__init__.py +1 -1
  68. maxframe/dataframe/accessors/compat.py +45 -0
  69. maxframe/dataframe/accessors/datetime_/__init__.py +4 -1
  70. maxframe/dataframe/accessors/dict_/contains.py +7 -16
  71. maxframe/dataframe/accessors/dict_/core.py +48 -0
  72. maxframe/dataframe/accessors/dict_/getitem.py +17 -21
  73. maxframe/dataframe/accessors/dict_/length.py +7 -16
  74. maxframe/dataframe/accessors/dict_/remove.py +6 -18
  75. maxframe/dataframe/accessors/dict_/setitem.py +8 -18
  76. maxframe/dataframe/accessors/dict_/tests/test_dict_accessor.py +62 -22
  77. maxframe/dataframe/accessors/list_/__init__.py +2 -2
  78. maxframe/dataframe/accessors/list_/core.py +48 -0
  79. maxframe/dataframe/accessors/list_/getitem.py +12 -19
  80. maxframe/dataframe/accessors/list_/length.py +7 -16
  81. maxframe/dataframe/accessors/list_/tests/test_list_accessor.py +11 -9
  82. maxframe/dataframe/accessors/string_/__init__.py +4 -1
  83. maxframe/dataframe/accessors/struct_/__init__.py +37 -0
  84. maxframe/dataframe/accessors/struct_/accessor.py +39 -0
  85. maxframe/dataframe/accessors/struct_/core.py +43 -0
  86. maxframe/dataframe/accessors/struct_/dtypes.py +53 -0
  87. maxframe/dataframe/accessors/struct_/field.py +123 -0
  88. maxframe/dataframe/accessors/struct_/tests/__init__.py +13 -0
  89. maxframe/dataframe/accessors/struct_/tests/test_struct_accessor.py +91 -0
  90. maxframe/dataframe/arithmetic/__init__.py +18 -4
  91. maxframe/dataframe/arithmetic/between.py +106 -0
  92. maxframe/dataframe/arithmetic/dot.py +237 -0
  93. maxframe/dataframe/arithmetic/maximum.py +33 -0
  94. maxframe/dataframe/arithmetic/minimum.py +33 -0
  95. maxframe/dataframe/arithmetic/{around.py → round.py} +11 -7
  96. maxframe/dataframe/core.py +161 -224
  97. maxframe/dataframe/datasource/__init__.py +18 -0
  98. maxframe/dataframe/datasource/core.py +6 -0
  99. maxframe/dataframe/datasource/direct.py +57 -0
  100. maxframe/dataframe/datasource/from_dict.py +124 -0
  101. maxframe/dataframe/datasource/from_index.py +1 -1
  102. maxframe/dataframe/datasource/from_records.py +77 -0
  103. maxframe/dataframe/datasource/from_tensor.py +109 -41
  104. maxframe/dataframe/datasource/read_csv.py +21 -14
  105. maxframe/dataframe/datasource/read_odps_query.py +29 -6
  106. maxframe/dataframe/datasource/read_odps_table.py +32 -10
  107. maxframe/dataframe/datasource/read_parquet.py +38 -39
  108. maxframe/dataframe/datasource/tests/test_datasource.py +37 -0
  109. maxframe/dataframe/datastore/__init__.py +11 -1
  110. maxframe/dataframe/datastore/direct.py +268 -0
  111. maxframe/dataframe/datastore/to_csv.py +29 -41
  112. maxframe/dataframe/datastore/to_odps.py +36 -4
  113. maxframe/dataframe/extensions/__init__.py +20 -4
  114. maxframe/dataframe/extensions/apply_chunk.py +32 -6
  115. maxframe/dataframe/extensions/cartesian_chunk.py +153 -0
  116. maxframe/dataframe/extensions/collect_kv.py +126 -0
  117. maxframe/dataframe/extensions/extract_kv.py +177 -0
  118. maxframe/dataframe/extensions/flatjson.py +2 -1
  119. maxframe/dataframe/extensions/map_reduce.py +263 -0
  120. maxframe/dataframe/extensions/rebalance.py +62 -0
  121. maxframe/dataframe/extensions/tests/test_apply_chunk.py +9 -2
  122. maxframe/dataframe/extensions/tests/test_extensions.py +54 -0
  123. maxframe/dataframe/extensions/tests/test_map_reduce.py +135 -0
  124. maxframe/dataframe/groupby/__init__.py +17 -2
  125. maxframe/dataframe/groupby/aggregation.py +86 -49
  126. maxframe/dataframe/groupby/apply.py +1 -1
  127. maxframe/dataframe/groupby/apply_chunk.py +19 -5
  128. maxframe/dataframe/groupby/core.py +116 -16
  129. maxframe/dataframe/groupby/cum.py +4 -25
  130. maxframe/dataframe/groupby/expanding.py +264 -0
  131. maxframe/dataframe/groupby/fill.py +1 -1
  132. maxframe/dataframe/groupby/getitem.py +12 -5
  133. maxframe/dataframe/groupby/head.py +11 -1
  134. maxframe/dataframe/groupby/rank.py +136 -0
  135. maxframe/dataframe/groupby/rolling.py +206 -0
  136. maxframe/dataframe/groupby/shift.py +114 -0
  137. maxframe/dataframe/groupby/tests/test_groupby.py +0 -5
  138. maxframe/dataframe/indexing/__init__.py +22 -2
  139. maxframe/dataframe/indexing/droplevel.py +195 -0
  140. maxframe/dataframe/indexing/filter.py +169 -0
  141. maxframe/dataframe/indexing/get_level_values.py +76 -0
  142. maxframe/dataframe/indexing/iat.py +45 -0
  143. maxframe/dataframe/indexing/iloc.py +152 -12
  144. maxframe/dataframe/indexing/insert.py +46 -18
  145. maxframe/dataframe/indexing/loc.py +287 -7
  146. maxframe/dataframe/indexing/reindex.py +14 -5
  147. maxframe/dataframe/indexing/rename.py +6 -0
  148. maxframe/dataframe/indexing/rename_axis.py +2 -2
  149. maxframe/dataframe/indexing/reorder_levels.py +143 -0
  150. maxframe/dataframe/indexing/reset_index.py +33 -6
  151. maxframe/dataframe/indexing/sample.py +8 -0
  152. maxframe/dataframe/indexing/setitem.py +3 -3
  153. maxframe/dataframe/indexing/swaplevel.py +185 -0
  154. maxframe/dataframe/indexing/take.py +99 -0
  155. maxframe/dataframe/indexing/truncate.py +140 -0
  156. maxframe/dataframe/indexing/where.py +0 -11
  157. maxframe/dataframe/indexing/xs.py +148 -0
  158. maxframe/dataframe/merge/__init__.py +15 -1
  159. maxframe/dataframe/merge/append.py +97 -98
  160. maxframe/dataframe/merge/combine.py +244 -0
  161. maxframe/dataframe/merge/combine_first.py +120 -0
  162. maxframe/dataframe/merge/compare.py +387 -0
  163. maxframe/dataframe/merge/concat.py +183 -0
  164. maxframe/dataframe/merge/update.py +271 -0
  165. maxframe/dataframe/misc/__init__.py +28 -11
  166. maxframe/dataframe/misc/_duplicate.py +10 -4
  167. maxframe/dataframe/misc/apply.py +1 -1
  168. maxframe/dataframe/misc/check_unique.py +82 -0
  169. maxframe/dataframe/misc/clip.py +145 -0
  170. maxframe/dataframe/misc/describe.py +175 -9
  171. maxframe/dataframe/misc/drop.py +31 -0
  172. maxframe/dataframe/misc/drop_duplicates.py +2 -2
  173. maxframe/dataframe/misc/duplicated.py +2 -2
  174. maxframe/dataframe/misc/get_dummies.py +5 -1
  175. maxframe/dataframe/misc/infer_dtypes.py +251 -0
  176. maxframe/dataframe/misc/isin.py +2 -2
  177. maxframe/dataframe/misc/map.py +125 -18
  178. maxframe/dataframe/misc/repeat.py +159 -0
  179. maxframe/dataframe/misc/tests/test_misc.py +48 -3
  180. maxframe/dataframe/misc/to_numeric.py +3 -0
  181. maxframe/dataframe/misc/transform.py +12 -5
  182. maxframe/dataframe/misc/transpose.py +13 -1
  183. maxframe/dataframe/misc/valid_index.py +115 -0
  184. maxframe/dataframe/misc/value_counts.py +38 -4
  185. maxframe/dataframe/missing/checkna.py +14 -6
  186. maxframe/dataframe/missing/dropna.py +5 -0
  187. maxframe/dataframe/missing/fillna.py +1 -1
  188. maxframe/dataframe/missing/replace.py +7 -4
  189. maxframe/dataframe/reduction/__init__.py +35 -16
  190. maxframe/dataframe/reduction/aggregation.py +43 -14
  191. maxframe/dataframe/reduction/all.py +2 -2
  192. maxframe/dataframe/reduction/any.py +2 -2
  193. maxframe/dataframe/reduction/argmax.py +103 -0
  194. maxframe/dataframe/reduction/argmin.py +103 -0
  195. maxframe/dataframe/reduction/core.py +80 -24
  196. maxframe/dataframe/reduction/count.py +13 -9
  197. maxframe/dataframe/reduction/cov.py +166 -0
  198. maxframe/dataframe/reduction/cummax.py +2 -2
  199. maxframe/dataframe/reduction/cummin.py +2 -2
  200. maxframe/dataframe/reduction/cumprod.py +2 -2
  201. maxframe/dataframe/reduction/cumsum.py +2 -2
  202. maxframe/dataframe/reduction/custom_reduction.py +2 -2
  203. maxframe/dataframe/reduction/idxmax.py +185 -0
  204. maxframe/dataframe/reduction/idxmin.py +185 -0
  205. maxframe/dataframe/reduction/kurtosis.py +37 -30
  206. maxframe/dataframe/reduction/max.py +2 -2
  207. maxframe/dataframe/reduction/mean.py +9 -7
  208. maxframe/dataframe/reduction/median.py +2 -2
  209. maxframe/dataframe/reduction/min.py +2 -2
  210. maxframe/dataframe/reduction/mode.py +144 -0
  211. maxframe/dataframe/reduction/nunique.py +19 -11
  212. maxframe/dataframe/reduction/prod.py +18 -13
  213. maxframe/dataframe/reduction/reduction_size.py +2 -2
  214. maxframe/dataframe/reduction/sem.py +13 -9
  215. maxframe/dataframe/reduction/skew.py +31 -27
  216. maxframe/dataframe/reduction/str_concat.py +10 -7
  217. maxframe/dataframe/reduction/sum.py +18 -14
  218. maxframe/dataframe/reduction/tests/test_reduction.py +12 -0
  219. maxframe/dataframe/reduction/unique.py +20 -3
  220. maxframe/dataframe/reduction/var.py +16 -12
  221. maxframe/dataframe/reshape/__init__.py +38 -0
  222. maxframe/dataframe/{misc → reshape}/pivot.py +1 -0
  223. maxframe/dataframe/{misc → reshape}/pivot_table.py +1 -0
  224. maxframe/dataframe/reshape/unstack.py +114 -0
  225. maxframe/dataframe/sort/__init__.py +16 -1
  226. maxframe/dataframe/sort/argsort.py +68 -0
  227. maxframe/dataframe/sort/core.py +2 -1
  228. maxframe/dataframe/sort/nlargest.py +238 -0
  229. maxframe/dataframe/sort/nsmallest.py +228 -0
  230. maxframe/dataframe/sort/rank.py +147 -0
  231. maxframe/dataframe/statistics/__init__.py +3 -3
  232. maxframe/dataframe/statistics/corr.py +1 -0
  233. maxframe/dataframe/statistics/quantile.py +2 -2
  234. maxframe/dataframe/tests/test_typing.py +104 -0
  235. maxframe/dataframe/tests/test_utils.py +66 -2
  236. maxframe/dataframe/tseries/__init__.py +19 -0
  237. maxframe/dataframe/tseries/at_time.py +61 -0
  238. maxframe/dataframe/tseries/between_time.py +122 -0
  239. maxframe/dataframe/typing_.py +185 -0
  240. maxframe/dataframe/utils.py +125 -52
  241. maxframe/dataframe/window/aggregation.py +8 -4
  242. maxframe/dataframe/window/core.py +14 -1
  243. maxframe/dataframe/window/ewm.py +1 -3
  244. maxframe/dataframe/window/expanding.py +37 -35
  245. maxframe/dataframe/window/rolling.py +49 -39
  246. maxframe/dataframe/window/tests/test_expanding.py +1 -7
  247. maxframe/dataframe/window/tests/test_rolling.py +1 -1
  248. maxframe/env.py +7 -4
  249. maxframe/errors.py +2 -2
  250. maxframe/io/odpsio/schema.py +9 -3
  251. maxframe/io/odpsio/tableio.py +7 -2
  252. maxframe/io/odpsio/tests/test_schema.py +198 -83
  253. maxframe/learn/__init__.py +10 -2
  254. maxframe/learn/cluster/__init__.py +15 -0
  255. maxframe/learn/cluster/_kmeans.py +782 -0
  256. maxframe/learn/contrib/llm/core.py +18 -7
  257. maxframe/learn/contrib/llm/deploy/__init__.py +13 -0
  258. maxframe/learn/contrib/llm/deploy/config.py +221 -0
  259. maxframe/learn/contrib/llm/deploy/core.py +247 -0
  260. maxframe/learn/contrib/llm/deploy/framework.py +35 -0
  261. maxframe/learn/contrib/llm/deploy/loader.py +360 -0
  262. maxframe/learn/contrib/llm/deploy/tests/__init__.py +13 -0
  263. maxframe/learn/contrib/llm/deploy/tests/test_register_models.py +359 -0
  264. maxframe/learn/contrib/llm/models/__init__.py +1 -0
  265. maxframe/learn/contrib/llm/models/dashscope.py +12 -6
  266. maxframe/learn/contrib/llm/models/managed.py +76 -11
  267. maxframe/learn/contrib/llm/models/openai.py +72 -0
  268. maxframe/learn/contrib/llm/tests/__init__.py +13 -0
  269. maxframe/learn/contrib/llm/tests/test_core.py +34 -0
  270. maxframe/learn/contrib/llm/tests/test_openai.py +187 -0
  271. maxframe/learn/contrib/llm/tests/test_text_gen.py +155 -0
  272. maxframe/learn/contrib/llm/text.py +348 -42
  273. maxframe/learn/contrib/models.py +4 -1
  274. maxframe/learn/contrib/xgboost/classifier.py +2 -0
  275. maxframe/learn/contrib/xgboost/core.py +113 -4
  276. maxframe/learn/contrib/xgboost/predict.py +4 -2
  277. maxframe/learn/contrib/xgboost/regressor.py +5 -0
  278. maxframe/learn/contrib/xgboost/train.py +7 -2
  279. maxframe/learn/core.py +66 -0
  280. maxframe/learn/linear_model/_base.py +58 -1
  281. maxframe/learn/linear_model/_lin_reg.py +1 -1
  282. maxframe/learn/metrics/__init__.py +6 -0
  283. maxframe/learn/metrics/_classification.py +145 -0
  284. maxframe/learn/metrics/_ranking.py +477 -0
  285. maxframe/learn/metrics/_scorer.py +60 -0
  286. maxframe/learn/metrics/pairwise/__init__.py +21 -0
  287. maxframe/learn/metrics/pairwise/core.py +77 -0
  288. maxframe/learn/metrics/pairwise/cosine.py +115 -0
  289. maxframe/learn/metrics/pairwise/euclidean.py +176 -0
  290. maxframe/learn/metrics/pairwise/haversine.py +96 -0
  291. maxframe/learn/metrics/pairwise/manhattan.py +80 -0
  292. maxframe/learn/metrics/pairwise/pairwise.py +127 -0
  293. maxframe/learn/metrics/pairwise/pairwise_distances_topk.py +121 -0
  294. maxframe/learn/metrics/pairwise/rbf_kernel.py +51 -0
  295. maxframe/learn/metrics/tests/__init__.py +13 -0
  296. maxframe/learn/metrics/tests/test_scorer.py +26 -0
  297. maxframe/learn/preprocessing/_data/min_max_scaler.py +34 -23
  298. maxframe/learn/preprocessing/_data/standard_scaler.py +34 -25
  299. maxframe/learn/utils/__init__.py +2 -1
  300. maxframe/learn/utils/checks.py +1 -2
  301. maxframe/learn/utils/core.py +59 -0
  302. maxframe/learn/utils/extmath.py +79 -9
  303. maxframe/learn/utils/odpsio.py +262 -0
  304. maxframe/learn/utils/validation.py +2 -2
  305. maxframe/lib/compat.py +40 -0
  306. maxframe/lib/dtypes_extension/__init__.py +16 -1
  307. maxframe/lib/dtypes_extension/_fake_arrow_dtype.py +604 -0
  308. maxframe/lib/dtypes_extension/blob.py +304 -0
  309. maxframe/lib/dtypes_extension/dtypes.py +40 -0
  310. maxframe/lib/dtypes_extension/tests/test_blob.py +88 -0
  311. maxframe/lib/dtypes_extension/tests/test_dtypes.py +16 -1
  312. maxframe/lib/dtypes_extension/tests/test_fake_arrow_dtype.py +75 -0
  313. maxframe/lib/filesystem/_oss_lib/common.py +124 -50
  314. maxframe/lib/filesystem/_oss_lib/glob.py +1 -1
  315. maxframe/lib/filesystem/_oss_lib/handle.py +21 -25
  316. maxframe/lib/filesystem/base.py +1 -1
  317. maxframe/lib/filesystem/core.py +1 -1
  318. maxframe/lib/filesystem/oss.py +115 -46
  319. maxframe/lib/filesystem/tests/test_oss.py +74 -36
  320. maxframe/lib/mmh3.cp37-win32.pyd +0 -0
  321. maxframe/lib/wrapped_pickle.py +10 -0
  322. maxframe/opcodes.py +41 -15
  323. maxframe/protocol.py +12 -0
  324. maxframe/remote/core.py +4 -0
  325. maxframe/serialization/__init__.py +11 -2
  326. maxframe/serialization/arrow.py +38 -13
  327. maxframe/serialization/blob.py +32 -0
  328. maxframe/serialization/core.cp37-win32.pyd +0 -0
  329. maxframe/serialization/core.pyx +39 -1
  330. maxframe/serialization/exception.py +2 -4
  331. maxframe/serialization/numpy.py +11 -0
  332. maxframe/serialization/pandas.py +46 -9
  333. maxframe/serialization/serializables/core.py +2 -2
  334. maxframe/serialization/tests/test_serial.py +31 -4
  335. maxframe/tensor/__init__.py +38 -8
  336. maxframe/tensor/arithmetic/__init__.py +19 -10
  337. maxframe/tensor/arithmetic/core.py +2 -2
  338. maxframe/tensor/arithmetic/iscomplexobj.py +53 -0
  339. maxframe/tensor/arithmetic/tests/test_arithmetic.py +6 -9
  340. maxframe/tensor/core.py +6 -2
  341. maxframe/tensor/datasource/tests/test_datasource.py +2 -1
  342. maxframe/tensor/extensions/__init__.py +2 -0
  343. maxframe/tensor/extensions/apply_chunk.py +3 -3
  344. maxframe/tensor/extensions/rebalance.py +65 -0
  345. maxframe/tensor/fft/__init__.py +32 -0
  346. maxframe/tensor/fft/core.py +168 -0
  347. maxframe/tensor/fft/fft.py +112 -0
  348. maxframe/tensor/fft/fft2.py +118 -0
  349. maxframe/tensor/fft/fftfreq.py +80 -0
  350. maxframe/tensor/fft/fftn.py +123 -0
  351. maxframe/tensor/fft/fftshift.py +79 -0
  352. maxframe/tensor/fft/hfft.py +112 -0
  353. maxframe/tensor/fft/ifft.py +114 -0
  354. maxframe/tensor/fft/ifft2.py +115 -0
  355. maxframe/tensor/fft/ifftn.py +123 -0
  356. maxframe/tensor/fft/ifftshift.py +73 -0
  357. maxframe/tensor/fft/ihfft.py +93 -0
  358. maxframe/tensor/fft/irfft.py +118 -0
  359. maxframe/tensor/fft/irfft2.py +62 -0
  360. maxframe/tensor/fft/irfftn.py +114 -0
  361. maxframe/tensor/fft/rfft.py +116 -0
  362. maxframe/tensor/fft/rfft2.py +63 -0
  363. maxframe/tensor/fft/rfftfreq.py +87 -0
  364. maxframe/tensor/fft/rfftn.py +113 -0
  365. maxframe/tensor/indexing/fill_diagonal.py +1 -7
  366. maxframe/tensor/linalg/__init__.py +7 -0
  367. maxframe/tensor/linalg/_einsumfunc.py +1025 -0
  368. maxframe/tensor/linalg/cholesky.py +117 -0
  369. maxframe/tensor/linalg/einsum.py +339 -0
  370. maxframe/tensor/linalg/lstsq.py +100 -0
  371. maxframe/tensor/linalg/matrix_norm.py +75 -0
  372. maxframe/tensor/linalg/norm.py +249 -0
  373. maxframe/tensor/linalg/solve.py +72 -0
  374. maxframe/tensor/linalg/solve_triangular.py +2 -2
  375. maxframe/tensor/linalg/vector_norm.py +113 -0
  376. maxframe/tensor/misc/__init__.py +24 -1
  377. maxframe/tensor/misc/argwhere.py +72 -0
  378. maxframe/tensor/misc/array_split.py +46 -0
  379. maxframe/tensor/misc/broadcast_arrays.py +57 -0
  380. maxframe/tensor/misc/copyto.py +130 -0
  381. maxframe/tensor/misc/delete.py +104 -0
  382. maxframe/tensor/misc/dsplit.py +68 -0
  383. maxframe/tensor/misc/ediff1d.py +74 -0
  384. maxframe/tensor/misc/expand_dims.py +85 -0
  385. maxframe/tensor/misc/flip.py +90 -0
  386. maxframe/tensor/misc/fliplr.py +64 -0
  387. maxframe/tensor/misc/flipud.py +68 -0
  388. maxframe/tensor/misc/hsplit.py +85 -0
  389. maxframe/tensor/misc/insert.py +139 -0
  390. maxframe/tensor/misc/moveaxis.py +83 -0
  391. maxframe/tensor/misc/result_type.py +88 -0
  392. maxframe/tensor/misc/roll.py +124 -0
  393. maxframe/tensor/misc/rollaxis.py +77 -0
  394. maxframe/tensor/misc/shape.py +89 -0
  395. maxframe/tensor/misc/split.py +190 -0
  396. maxframe/tensor/misc/tile.py +109 -0
  397. maxframe/tensor/misc/vsplit.py +74 -0
  398. maxframe/tensor/reduction/array_equal.py +2 -1
  399. maxframe/tensor/sort/__init__.py +2 -0
  400. maxframe/tensor/sort/argpartition.py +98 -0
  401. maxframe/tensor/sort/partition.py +228 -0
  402. maxframe/tensor/spatial/__init__.py +15 -0
  403. maxframe/tensor/spatial/distance/__init__.py +17 -0
  404. maxframe/tensor/spatial/distance/cdist.py +421 -0
  405. maxframe/tensor/spatial/distance/pdist.py +398 -0
  406. maxframe/tensor/spatial/distance/squareform.py +153 -0
  407. maxframe/tensor/special/__init__.py +159 -21
  408. maxframe/tensor/special/airy.py +55 -0
  409. maxframe/tensor/special/bessel.py +199 -0
  410. maxframe/tensor/special/core.py +65 -4
  411. maxframe/tensor/special/ellip_func_integrals.py +155 -0
  412. maxframe/tensor/special/ellip_harm.py +55 -0
  413. maxframe/tensor/special/err_fresnel.py +223 -0
  414. maxframe/tensor/special/gamma_funcs.py +303 -0
  415. maxframe/tensor/special/hypergeometric_funcs.py +69 -0
  416. maxframe/tensor/special/info_theory.py +189 -0
  417. maxframe/tensor/special/misc.py +21 -0
  418. maxframe/tensor/statistics/__init__.py +6 -0
  419. maxframe/tensor/statistics/corrcoef.py +77 -0
  420. maxframe/tensor/statistics/cov.py +222 -0
  421. maxframe/tensor/statistics/digitize.py +126 -0
  422. maxframe/tensor/statistics/histogram.py +520 -0
  423. maxframe/tensor/statistics/median.py +85 -0
  424. maxframe/tensor/statistics/ptp.py +89 -0
  425. maxframe/tensor/utils.py +3 -3
  426. maxframe/tests/test_udf.py +61 -0
  427. maxframe/tests/test_utils.py +51 -6
  428. maxframe/tests/utils.py +0 -2
  429. maxframe/typing_.py +2 -0
  430. maxframe/udf.py +130 -9
  431. maxframe/utils.py +254 -27
  432. {maxframe-2.0.0b2.dist-info → maxframe-2.3.0rc1.dist-info}/METADATA +3 -3
  433. {maxframe-2.0.0b2.dist-info → maxframe-2.3.0rc1.dist-info}/RECORD +442 -264
  434. maxframe_client/fetcher.py +35 -4
  435. maxframe_client/session/odps.py +7 -2
  436. maxframe_client/session/task.py +8 -1
  437. maxframe_client/tests/test_fetcher.py +76 -3
  438. maxframe_client/tests/test_session.py +28 -1
  439. maxframe/dataframe/arrays.py +0 -864
  440. /maxframe/dataframe/{misc → reshape}/melt.py +0 -0
  441. /maxframe/dataframe/{misc → reshape}/stack.py +0 -0
  442. {maxframe-2.0.0b2.dist-info → maxframe-2.3.0rc1.dist-info}/WHEEL +0 -0
  443. {maxframe-2.0.0b2.dist-info → maxframe-2.3.0rc1.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,55 @@
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 ..utils import implement_scipy, infer_scipy_dtype
16
+ from .core import TensorSpecialMultiOp, _register_special_op
17
+
18
+
19
+ @_register_special_op
20
+ class TensorEllipHarm(TensorSpecialMultiOp):
21
+ _ARG_COUNT = 5
22
+ _func_name = "ellip_harm"
23
+
24
+
25
+ @implement_scipy("scipy.special.ellip_harm")
26
+ @infer_scipy_dtype("scipy.special.ellip_harm")
27
+ def ellip_harm(h2, k2, n, p, s, signm=1, signn=1, **kwargs):
28
+ op = TensorEllipHarm(**kwargs)
29
+ return op(h2, k2, n, p, s, signm, signn)
30
+
31
+
32
+ @_register_special_op
33
+ class TensorEllipHarm2(TensorSpecialMultiOp):
34
+ _ARG_COUNT = 5
35
+ _func_name = "ellip_harm_2"
36
+
37
+
38
+ @implement_scipy("scipy.special.ellip_harm_2")
39
+ @infer_scipy_dtype("scipy.special.ellip_harm_2")
40
+ def ellip_harm_2(h2, k2, n, p, s, **kwargs):
41
+ op = TensorEllipHarm2(**kwargs)
42
+ return op(h2, k2, n, p, s)
43
+
44
+
45
+ @_register_special_op
46
+ class TensorEllipNormal(TensorSpecialMultiOp):
47
+ _ARG_COUNT = 4
48
+ _func_name = "ellip_normal"
49
+
50
+
51
+ @implement_scipy("scipy.special.ellip_normal")
52
+ @infer_scipy_dtype("scipy.special.ellip_normal")
53
+ def ellip_normal(h2, k2, n, p, **kwargs):
54
+ op = TensorEllipNormal(**kwargs)
55
+ return op(h2, k2, n, p)
@@ -0,0 +1,223 @@
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 ..arithmetic.utils import arithmetic_operator
16
+ from ..utils import implement_scipy, infer_scipy_dtype
17
+ from .core import (
18
+ TensorSpecialMultiOp,
19
+ TensorSpecialUnaryOp,
20
+ TensorSpecialUnaryTupleOp,
21
+ _register_special_op,
22
+ )
23
+
24
+
25
+ @_register_special_op
26
+ @arithmetic_operator(sparse_mode="unary")
27
+ class TensorErf(TensorSpecialUnaryOp):
28
+ _func_name = "erf"
29
+
30
+
31
+ @_register_special_op
32
+ @arithmetic_operator(sparse_mode="unary")
33
+ class TensorErfc(TensorSpecialUnaryOp):
34
+ _func_name = "erfc"
35
+
36
+
37
+ @_register_special_op
38
+ @arithmetic_operator(sparse_mode="unary")
39
+ class TensorErfcx(TensorSpecialUnaryOp):
40
+ _func_name = "erfcx"
41
+
42
+
43
+ @_register_special_op
44
+ @arithmetic_operator(sparse_mode="unary")
45
+ class TensorErfi(TensorSpecialUnaryOp):
46
+ _func_name = "erfi"
47
+
48
+
49
+ @_register_special_op
50
+ @arithmetic_operator(sparse_mode="unary")
51
+ class TensorErfinv(TensorSpecialUnaryOp):
52
+ _func_name = "erfinv"
53
+
54
+
55
+ @_register_special_op
56
+ @arithmetic_operator(sparse_mode="unary")
57
+ class TensorErfcinv(TensorSpecialUnaryOp):
58
+ _func_name = "erfcinv"
59
+
60
+
61
+ @_register_special_op
62
+ @arithmetic_operator(sparse_mode="unary")
63
+ class TensorWofz(TensorSpecialUnaryOp):
64
+ _func_name = "wofz"
65
+
66
+
67
+ @_register_special_op
68
+ @arithmetic_operator(sparse_mode="unary")
69
+ class TensorDawsn(TensorSpecialUnaryOp):
70
+ _func_name = "dawsn"
71
+
72
+
73
+ @_register_special_op
74
+ class TensorFresnel(TensorSpecialUnaryTupleOp):
75
+ _func_name = "fresnel"
76
+ _n_outputs = 2
77
+
78
+
79
+ @_register_special_op
80
+ class TensorModFresnelP(TensorSpecialUnaryTupleOp):
81
+ _func_name = "modfresnelp"
82
+ _n_outputs = 2
83
+
84
+
85
+ @_register_special_op
86
+ class TensorModFresnelM(TensorSpecialUnaryTupleOp):
87
+ _func_name = "modfresnelm"
88
+ _n_outputs = 2
89
+
90
+
91
+ @_register_special_op
92
+ class TensorVoigtProfile(TensorSpecialMultiOp):
93
+ _ARG_COUNT = 3
94
+ _func_name = "voigt_profile"
95
+
96
+
97
+ @implement_scipy("scipy.special.erf")
98
+ @infer_scipy_dtype("scipy.special.erf")
99
+ def erf(x, out=None, where=None, **kwargs):
100
+ """
101
+ Returns the error function of complex argument.
102
+
103
+ It is defined as ``2/sqrt(pi)*integral(exp(-t**2), t=0..z)``.
104
+
105
+ Parameters
106
+ ----------
107
+ x : Tensor
108
+ Input tensor.
109
+
110
+ Returns
111
+ -------
112
+ res : Tensor
113
+ The values of the error function at the given points `x`.
114
+
115
+ See Also
116
+ --------
117
+ erfc, erfinv, erfcinv, wofz, erfcx, erfi
118
+
119
+ Notes
120
+ -----
121
+ The cumulative of the unit normal distribution is given by
122
+ ``Phi(z) = 1/2[1 + erf(z/sqrt(2))]``.
123
+
124
+ References
125
+ ----------
126
+ .. [1] https://en.wikipedia.org/wiki/Error_function
127
+ .. [2] Milton Abramowitz and Irene A. Stegun, eds.
128
+ Handbook of Mathematical Functions with Formulas,
129
+ Graphs, and Mathematical Tables. New York: Dover,
130
+ 1972. http://www.math.sfu.ca/~cbm/aands/page_297.htm
131
+ .. [3] Steven G. Johnson, Faddeeva W function implementation.
132
+ http://ab-initio.mit.edu/Faddeeva
133
+
134
+ Examples
135
+ --------
136
+ >>> import maxframe.tensor as mt
137
+ >>> from maxframe.tensor import special
138
+ >>> import matplotlib.pyplot as plt
139
+ >>> x = mt.linspace(-3, 3)
140
+ >>> plt.plot(x, special.erf(x))
141
+ >>> plt.xlabel('$x$')
142
+ >>> plt.ylabel('$erf(x)$')
143
+ >>> plt.show()
144
+ """
145
+ op = TensorErf(**kwargs)
146
+ return op(x, out=out, where=where)
147
+
148
+
149
+ @implement_scipy("scipy.special.erfc")
150
+ @infer_scipy_dtype("scipy.special.erfc")
151
+ def erfc(x, out=None, where=None, **kwargs):
152
+ op = TensorErfc(**kwargs)
153
+ return op(x, out=out, where=where)
154
+
155
+
156
+ @implement_scipy("scipy.special.erfcx")
157
+ @infer_scipy_dtype("scipy.special.erfcx")
158
+ def erfcx(x, out=None, where=None, **kwargs):
159
+ op = TensorErfcx(**kwargs)
160
+ return op(x, out=out, where=where)
161
+
162
+
163
+ @implement_scipy("scipy.special.erfi")
164
+ @infer_scipy_dtype("scipy.special.erfi")
165
+ def erfi(x, out=None, where=None, **kwargs):
166
+ op = TensorErfi(**kwargs)
167
+ return op(x, out=out, where=where)
168
+
169
+
170
+ @implement_scipy("scipy.special.erfinv")
171
+ @infer_scipy_dtype("scipy.special.erfinv")
172
+ def erfinv(x, out=None, where=None, **kwargs):
173
+ op = TensorErfinv(**kwargs)
174
+ return op(x, out=out, where=where)
175
+
176
+
177
+ @implement_scipy("scipy.special.erfcinv")
178
+ @infer_scipy_dtype("scipy.special.erfcinv")
179
+ def erfcinv(x, out=None, where=None, **kwargs):
180
+ op = TensorErfcinv(**kwargs)
181
+ return op(x, out=out, where=where)
182
+
183
+
184
+ @implement_scipy("scipy.special.wofz")
185
+ @infer_scipy_dtype("scipy.special.wofz")
186
+ def wofz(x, out=None, where=None, **kwargs):
187
+ op = TensorWofz(**kwargs)
188
+ return op(x, out=out, where=where)
189
+
190
+
191
+ @implement_scipy("scipy.special.dawsn")
192
+ @infer_scipy_dtype("scipy.special.dawsn")
193
+ def dawsn(x, out=None, where=None, **kwargs):
194
+ op = TensorDawsn(**kwargs)
195
+ return op(x, out=out, where=where)
196
+
197
+
198
+ @implement_scipy("scipy.special.fresnel")
199
+ @infer_scipy_dtype("scipy.special.fresnel", multi_outputs=True)
200
+ def fresnel(x, out=None, **kwargs):
201
+ op = TensorFresnel(**kwargs)
202
+ return op(x, out=out)
203
+
204
+
205
+ @implement_scipy("scipy.special.modfresnelp")
206
+ @infer_scipy_dtype("scipy.special.modfresnelp", multi_outputs=True)
207
+ def modfresnelp(x, out=None, **kwargs):
208
+ op = TensorModFresnelP(**kwargs)
209
+ return op(x, out=out)
210
+
211
+
212
+ @implement_scipy("scipy.special.modfresnelm")
213
+ @infer_scipy_dtype("scipy.special.modfresnelm", multi_outputs=True)
214
+ def modfresnelm(x, out=None, **kwargs):
215
+ op = TensorModFresnelM(**kwargs)
216
+ return op(x, out=out)
217
+
218
+
219
+ @implement_scipy("scipy.special.voigt_profile")
220
+ @infer_scipy_dtype("scipy.special.voigt_profile")
221
+ def voigt_profile(x, sigma, gamma, **kwargs):
222
+ op = TensorVoigtProfile(**kwargs)
223
+ return op(x, sigma, gamma)
@@ -0,0 +1,303 @@
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 ..arithmetic.utils import arithmetic_operator
16
+ from ..utils import implement_scipy, infer_scipy_dtype
17
+ from .core import (
18
+ TensorSpecialBinOp,
19
+ TensorSpecialMultiOp,
20
+ TensorSpecialUnaryOp,
21
+ _register_special_op,
22
+ )
23
+
24
+
25
+ class NoOrderSpecialMixin:
26
+ @classmethod
27
+ def _get_func(cls, xp):
28
+ func = super()._get_func(xp)
29
+
30
+ def _wrapped(*args, **kw):
31
+ kw.pop("order", None)
32
+ return func(*args, **kw)
33
+
34
+ return _wrapped
35
+
36
+
37
+ @_register_special_op
38
+ @arithmetic_operator(sparse_mode="unary")
39
+ class TensorGamma(TensorSpecialUnaryOp):
40
+ _func_name = "gamma"
41
+
42
+
43
+ @implement_scipy("scipy.special.gamma")
44
+ @infer_scipy_dtype("scipy.special.gamma")
45
+ def gamma(x, **kwargs):
46
+ op = TensorGamma(**kwargs)
47
+ return op(x)
48
+
49
+
50
+ @_register_special_op
51
+ @arithmetic_operator(sparse_mode="unary")
52
+ class TensorGammaln(TensorSpecialUnaryOp):
53
+ _func_name = "gammaln"
54
+
55
+
56
+ @implement_scipy("scipy.special.gammaln")
57
+ @infer_scipy_dtype("scipy.special.gammaln")
58
+ def gammaln(x, out=None, where=None, **kwargs):
59
+ """
60
+ Logarithm of the absolute value of the Gamma function.
61
+
62
+ Parameters
63
+ ----------
64
+ x : array-like
65
+ Values on the real line at which to compute ``gammaln``
66
+ out : Tensor, None, or tuple of Tensor and None, optional
67
+ A location into which the result is stored. If provided, it must have
68
+ a shape that the inputs broadcast to. If not provided or `None`,
69
+ a freshly-allocated tensor is returned. A tuple (possible only as a
70
+ keyword argument) must have length equal to the number of outputs.
71
+ where : array_like, optional
72
+ Values of True indicate to calculate the ufunc at that position, values
73
+ of False indicate to leave the value in the output alone.
74
+ **kwargs
75
+
76
+ Returns
77
+ -------
78
+ gammaln : Tensor
79
+ Values of ``gammaln`` at x.
80
+
81
+ See Also
82
+ --------
83
+ gammasgn : sign of the gamma function
84
+ loggamma : principal branch of the logarithm of the gamma function
85
+
86
+ Notes
87
+ -----
88
+ When used in conjunction with `gammasgn`, this function is useful
89
+ for working in logspace on the real axis without having to deal with
90
+ complex numbers, via the relation ``exp(gammaln(x)) = gammasgn(x)*gamma(x)``.
91
+
92
+ For complex-valued log-gamma, use `loggamma` instead of `gammaln`.
93
+ """
94
+ op = TensorGammaln(**kwargs)
95
+ return op(x, out=out, where=where)
96
+
97
+
98
+ @_register_special_op
99
+ @arithmetic_operator(sparse_mode="unary")
100
+ class TensorLogGamma(TensorSpecialUnaryOp):
101
+ _func_name = "loggamma"
102
+
103
+
104
+ @implement_scipy("scipy.special.loggamma")
105
+ @infer_scipy_dtype("scipy.special.loggamma")
106
+ def loggamma(x, **kwargs):
107
+ op = TensorLogGamma(**kwargs)
108
+ return op(x)
109
+
110
+
111
+ @_register_special_op
112
+ @arithmetic_operator(sparse_mode="unary")
113
+ class TensorGammaSgn(TensorSpecialUnaryOp):
114
+ _func_name = "gammasgn"
115
+
116
+
117
+ @implement_scipy("scipy.special.gammasgn")
118
+ @infer_scipy_dtype("scipy.special.gammasgn")
119
+ def gammasgn(x, **kwargs):
120
+ op = TensorGammaSgn(**kwargs)
121
+ return op(x)
122
+
123
+
124
+ @_register_special_op
125
+ @arithmetic_operator(sparse_mode="binary_and")
126
+ class TensorGammaInc(TensorSpecialBinOp):
127
+ _func_name = "gammainc"
128
+
129
+
130
+ @implement_scipy("scipy.special.gammainc")
131
+ @infer_scipy_dtype("scipy.special.gammainc")
132
+ def gammainc(a, b, **kwargs):
133
+ op = TensorGammaInc(**kwargs)
134
+ return op(a, b)
135
+
136
+
137
+ @_register_special_op
138
+ @arithmetic_operator(sparse_mode="binary_and")
139
+ class TensorGammaIncInv(TensorSpecialBinOp):
140
+ _func_name = "gammaincinv"
141
+
142
+
143
+ @implement_scipy("scipy.special.gammaincinv")
144
+ @infer_scipy_dtype("scipy.special.gammaincinv")
145
+ def gammaincinv(a, b, **kwargs):
146
+ op = TensorGammaIncInv(**kwargs)
147
+ return op(a, b)
148
+
149
+
150
+ @_register_special_op
151
+ @arithmetic_operator(sparse_mode="binary_and")
152
+ class TensorGammaIncc(TensorSpecialBinOp):
153
+ _func_name = "gammaincc"
154
+
155
+
156
+ @implement_scipy("scipy.special.gammainc")
157
+ @infer_scipy_dtype("scipy.special.gammainc")
158
+ def gammaincc(a, b, **kwargs):
159
+ op = TensorGammaIncc(**kwargs)
160
+ return op(a, b)
161
+
162
+
163
+ @_register_special_op
164
+ @arithmetic_operator(sparse_mode="binary_and")
165
+ class TensorGammaInccInv(TensorSpecialBinOp):
166
+ _func_name = "gammainccinv"
167
+
168
+
169
+ @implement_scipy("scipy.special.gammainccinv")
170
+ @infer_scipy_dtype("scipy.special.gammainccinv")
171
+ def gammainccinv(a, b, **kwargs):
172
+ op = TensorGammaInccInv(**kwargs)
173
+ return op(a, b)
174
+
175
+
176
+ @_register_special_op
177
+ @arithmetic_operator(sparse_mode="binary_and")
178
+ class TensorBeta(TensorSpecialBinOp):
179
+ _func_name = "beta"
180
+
181
+
182
+ @implement_scipy("scipy.special.beta")
183
+ @infer_scipy_dtype("scipy.special.beta")
184
+ def beta(a, b, out=None, **kwargs):
185
+ op = TensorBeta(**kwargs)
186
+ return op(a, b, out=out)
187
+
188
+
189
+ @_register_special_op
190
+ @arithmetic_operator(sparse_mode="binary_and")
191
+ class TensorBetaLn(TensorSpecialBinOp):
192
+ _func_name = "betaln"
193
+
194
+
195
+ @implement_scipy("scipy.special.betaln")
196
+ @infer_scipy_dtype("scipy.special.betaln")
197
+ def betaln(a, b, out=None, **kwargs):
198
+ op = TensorBetaLn(**kwargs)
199
+ return op(a, b, out=out)
200
+
201
+
202
+ @_register_special_op
203
+ class TensorBetaInc(TensorSpecialMultiOp):
204
+ _ARG_COUNT = 3
205
+ _func_name = "betainc"
206
+
207
+
208
+ @implement_scipy("scipy.special.betainc")
209
+ @infer_scipy_dtype("scipy.special.betainc")
210
+ def betainc(a, b, x, out=None, **kwargs):
211
+ op = TensorBetaInc(**kwargs)
212
+ return op(a, b, x, out=out)
213
+
214
+
215
+ @_register_special_op
216
+ class TensorBetaIncInv(TensorSpecialMultiOp):
217
+ _ARG_COUNT = 3
218
+ _func_name = "betaincinv"
219
+
220
+
221
+ @implement_scipy("scipy.special.betaincinv")
222
+ @infer_scipy_dtype("scipy.special.betaincinv")
223
+ def betaincinv(a, b, y, out=None, **kwargs):
224
+ op = TensorBetaIncInv(**kwargs)
225
+ return op(a, b, y, out=out)
226
+
227
+
228
+ @_register_special_op
229
+ @arithmetic_operator(sparse_mode="unary")
230
+ class TensorPsi(TensorSpecialUnaryOp):
231
+ _func_name = "psi"
232
+
233
+
234
+ @implement_scipy("scipy.special.psi")
235
+ @infer_scipy_dtype("scipy.special.psi")
236
+ def psi(x, out=None, **kwargs):
237
+ op = TensorPsi(**kwargs)
238
+ return op(x, out=out)
239
+
240
+
241
+ @_register_special_op
242
+ @arithmetic_operator(sparse_mode="unary")
243
+ class TensorRGamma(TensorSpecialUnaryOp):
244
+ _func_name = "rgamma"
245
+
246
+
247
+ @implement_scipy("scipy.special.rgamma")
248
+ @infer_scipy_dtype("scipy.special.rgamma")
249
+ def rgamma(x, out=None, **kwargs):
250
+ op = TensorRGamma(**kwargs)
251
+ return op(x, out=out)
252
+
253
+
254
+ @_register_special_op
255
+ @arithmetic_operator(sparse_mode="binary_and")
256
+ class TensorPolyGamma(NoOrderSpecialMixin, TensorSpecialBinOp):
257
+ _func_name = "polygamma"
258
+
259
+
260
+ @implement_scipy("scipy.special.polygamma")
261
+ @infer_scipy_dtype("scipy.special.polygamma")
262
+ def polygamma(a, b, **kwargs):
263
+ op = TensorPolyGamma(**kwargs)
264
+ return op(a, b)
265
+
266
+
267
+ @_register_special_op
268
+ @arithmetic_operator(sparse_mode="binary_and")
269
+ class TensorMultiGammaLn(NoOrderSpecialMixin, TensorSpecialBinOp):
270
+ _func_name = "multigammaln"
271
+
272
+
273
+ @implement_scipy("scipy.special.multigammaln")
274
+ @infer_scipy_dtype("scipy.special.multigammaln")
275
+ def multigammaln(a, b, **kwargs):
276
+ op = TensorMultiGammaLn(**kwargs)
277
+ return op(a, b)
278
+
279
+
280
+ @_register_special_op
281
+ @arithmetic_operator(sparse_mode="unary")
282
+ class TensorDiGamma(TensorSpecialUnaryOp):
283
+ _func_name = "digamma"
284
+
285
+
286
+ @implement_scipy("scipy.special.digamma")
287
+ @infer_scipy_dtype("scipy.special.digamma")
288
+ def digamma(x, out=None, **kwargs):
289
+ op = TensorDiGamma(**kwargs)
290
+ return op(x, out=out)
291
+
292
+
293
+ @_register_special_op
294
+ @arithmetic_operator(sparse_mode="binary_and")
295
+ class TensorPoch(TensorSpecialBinOp):
296
+ _func_name = "poch"
297
+
298
+
299
+ @implement_scipy("scipy.special.poch")
300
+ @infer_scipy_dtype("scipy.special.poch")
301
+ def poch(a, b, **kwargs):
302
+ op = TensorPoch(**kwargs)
303
+ return op(a, b)
@@ -0,0 +1,69 @@
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 ..arithmetic.utils import arithmetic_operator
16
+ from ..utils import implement_scipy, infer_scipy_dtype
17
+ from .core import TensorSpecialBinOp, TensorSpecialMultiOp, _register_special_op
18
+
19
+
20
+ @_register_special_op
21
+ class TensorHYP2F1(TensorSpecialMultiOp):
22
+ _ARG_COUNT = 4
23
+ _func_name = "hyp2f1"
24
+
25
+
26
+ @implement_scipy("scipy.special.hyp2f1")
27
+ @infer_scipy_dtype("scipy.special.hyp2f1")
28
+ def hyp2f1(a, b, c, z, **kwargs):
29
+ op = TensorHYP2F1(**kwargs)
30
+ return op(a, b, c, z)
31
+
32
+
33
+ @_register_special_op
34
+ class TensorHYP1F1(TensorSpecialMultiOp):
35
+ _ARG_COUNT = 3
36
+ _func_name = "hyp1f1"
37
+
38
+
39
+ @implement_scipy("scipy.special.hyp1f1")
40
+ @infer_scipy_dtype("scipy.special.hyp1f1")
41
+ def hyp1f1(a, b, x, out=None, **kwargs):
42
+ op = TensorHYP1F1(**kwargs)
43
+ return op(a, b, x, out=out)
44
+
45
+
46
+ @_register_special_op
47
+ class TensorHYPERU(TensorSpecialMultiOp):
48
+ _ARG_COUNT = 3
49
+ _func_name = "hyperu"
50
+
51
+
52
+ @implement_scipy("scipy.special.hyperu")
53
+ @infer_scipy_dtype("scipy.special.hyperu")
54
+ def hyperu(a, b, x, out=None, **kwargs):
55
+ op = TensorHYPERU(**kwargs)
56
+ return op(a, b, x, out=out)
57
+
58
+
59
+ @_register_special_op
60
+ @arithmetic_operator(sparse_mode="binary_and")
61
+ class TensorHYP0F1(TensorSpecialBinOp):
62
+ _func_name = "hyp0f1"
63
+
64
+
65
+ @implement_scipy("scipy.special.hyp0f1")
66
+ @infer_scipy_dtype("scipy.special.hyp0f1")
67
+ def hyp0f1(v, z, out=None, **kwargs):
68
+ op = TensorHYP0F1(**kwargs)
69
+ return op(v, z, out=out)