maxframe 0.1.0b5__cp311-cp311-macosx_11_0_arm64.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 (647) hide show
  1. maxframe/__init__.py +32 -0
  2. maxframe/_utils.cpython-311-darwin.so +0 -0
  3. maxframe/_utils.pxd +33 -0
  4. maxframe/_utils.pyx +547 -0
  5. maxframe/codegen.py +528 -0
  6. maxframe/config/__init__.py +15 -0
  7. maxframe/config/config.py +443 -0
  8. maxframe/config/tests/__init__.py +13 -0
  9. maxframe/config/tests/test_config.py +103 -0
  10. maxframe/config/tests/test_validators.py +34 -0
  11. maxframe/config/validators.py +57 -0
  12. maxframe/conftest.py +139 -0
  13. maxframe/core/__init__.py +65 -0
  14. maxframe/core/base.py +156 -0
  15. maxframe/core/entity/__init__.py +44 -0
  16. maxframe/core/entity/chunks.py +68 -0
  17. maxframe/core/entity/core.py +152 -0
  18. maxframe/core/entity/executable.py +337 -0
  19. maxframe/core/entity/fuse.py +73 -0
  20. maxframe/core/entity/objects.py +100 -0
  21. maxframe/core/entity/output_types.py +90 -0
  22. maxframe/core/entity/tileables.py +438 -0
  23. maxframe/core/entity/utils.py +24 -0
  24. maxframe/core/graph/__init__.py +17 -0
  25. maxframe/core/graph/builder/__init__.py +16 -0
  26. maxframe/core/graph/builder/base.py +86 -0
  27. maxframe/core/graph/builder/chunk.py +430 -0
  28. maxframe/core/graph/builder/tileable.py +34 -0
  29. maxframe/core/graph/builder/utils.py +41 -0
  30. maxframe/core/graph/core.cpython-311-darwin.so +0 -0
  31. maxframe/core/graph/core.pyx +467 -0
  32. maxframe/core/graph/entity.py +171 -0
  33. maxframe/core/graph/tests/__init__.py +13 -0
  34. maxframe/core/graph/tests/test_graph.py +205 -0
  35. maxframe/core/mode.py +96 -0
  36. maxframe/core/operator/__init__.py +34 -0
  37. maxframe/core/operator/base.py +450 -0
  38. maxframe/core/operator/core.py +276 -0
  39. maxframe/core/operator/fetch.py +53 -0
  40. maxframe/core/operator/fuse.py +29 -0
  41. maxframe/core/operator/objects.py +72 -0
  42. maxframe/core/operator/shuffle.py +111 -0
  43. maxframe/core/operator/tests/__init__.py +13 -0
  44. maxframe/core/operator/tests/test_core.py +64 -0
  45. maxframe/core/tests/__init__.py +13 -0
  46. maxframe/core/tests/test_mode.py +75 -0
  47. maxframe/dataframe/__init__.py +81 -0
  48. maxframe/dataframe/arithmetic/__init__.py +359 -0
  49. maxframe/dataframe/arithmetic/abs.py +33 -0
  50. maxframe/dataframe/arithmetic/add.py +60 -0
  51. maxframe/dataframe/arithmetic/arccos.py +28 -0
  52. maxframe/dataframe/arithmetic/arccosh.py +28 -0
  53. maxframe/dataframe/arithmetic/arcsin.py +28 -0
  54. maxframe/dataframe/arithmetic/arcsinh.py +28 -0
  55. maxframe/dataframe/arithmetic/arctan.py +28 -0
  56. maxframe/dataframe/arithmetic/arctanh.py +28 -0
  57. maxframe/dataframe/arithmetic/around.py +152 -0
  58. maxframe/dataframe/arithmetic/bitwise_and.py +46 -0
  59. maxframe/dataframe/arithmetic/bitwise_or.py +50 -0
  60. maxframe/dataframe/arithmetic/bitwise_xor.py +46 -0
  61. maxframe/dataframe/arithmetic/ceil.py +28 -0
  62. maxframe/dataframe/arithmetic/core.py +342 -0
  63. maxframe/dataframe/arithmetic/cos.py +28 -0
  64. maxframe/dataframe/arithmetic/cosh.py +28 -0
  65. maxframe/dataframe/arithmetic/degrees.py +28 -0
  66. maxframe/dataframe/arithmetic/docstring.py +442 -0
  67. maxframe/dataframe/arithmetic/equal.py +56 -0
  68. maxframe/dataframe/arithmetic/exp.py +28 -0
  69. maxframe/dataframe/arithmetic/exp2.py +28 -0
  70. maxframe/dataframe/arithmetic/expm1.py +28 -0
  71. maxframe/dataframe/arithmetic/floor.py +28 -0
  72. maxframe/dataframe/arithmetic/floordiv.py +64 -0
  73. maxframe/dataframe/arithmetic/greater.py +57 -0
  74. maxframe/dataframe/arithmetic/greater_equal.py +57 -0
  75. maxframe/dataframe/arithmetic/invert.py +33 -0
  76. maxframe/dataframe/arithmetic/is_ufuncs.py +62 -0
  77. maxframe/dataframe/arithmetic/less.py +57 -0
  78. maxframe/dataframe/arithmetic/less_equal.py +57 -0
  79. maxframe/dataframe/arithmetic/log.py +28 -0
  80. maxframe/dataframe/arithmetic/log10.py +28 -0
  81. maxframe/dataframe/arithmetic/log2.py +28 -0
  82. maxframe/dataframe/arithmetic/mod.py +60 -0
  83. maxframe/dataframe/arithmetic/multiply.py +60 -0
  84. maxframe/dataframe/arithmetic/negative.py +33 -0
  85. maxframe/dataframe/arithmetic/not_equal.py +56 -0
  86. maxframe/dataframe/arithmetic/power.py +68 -0
  87. maxframe/dataframe/arithmetic/radians.py +28 -0
  88. maxframe/dataframe/arithmetic/sin.py +28 -0
  89. maxframe/dataframe/arithmetic/sinh.py +28 -0
  90. maxframe/dataframe/arithmetic/sqrt.py +28 -0
  91. maxframe/dataframe/arithmetic/subtract.py +64 -0
  92. maxframe/dataframe/arithmetic/tan.py +28 -0
  93. maxframe/dataframe/arithmetic/tanh.py +28 -0
  94. maxframe/dataframe/arithmetic/tests/__init__.py +13 -0
  95. maxframe/dataframe/arithmetic/tests/test_arithmetic.py +695 -0
  96. maxframe/dataframe/arithmetic/truediv.py +64 -0
  97. maxframe/dataframe/arithmetic/trunc.py +28 -0
  98. maxframe/dataframe/arrays.py +864 -0
  99. maxframe/dataframe/core.py +2417 -0
  100. maxframe/dataframe/datasource/__init__.py +15 -0
  101. maxframe/dataframe/datasource/core.py +81 -0
  102. maxframe/dataframe/datasource/dataframe.py +59 -0
  103. maxframe/dataframe/datasource/date_range.py +504 -0
  104. maxframe/dataframe/datasource/from_index.py +54 -0
  105. maxframe/dataframe/datasource/from_records.py +107 -0
  106. maxframe/dataframe/datasource/from_tensor.py +419 -0
  107. maxframe/dataframe/datasource/index.py +117 -0
  108. maxframe/dataframe/datasource/read_csv.py +528 -0
  109. maxframe/dataframe/datasource/read_odps_query.py +299 -0
  110. maxframe/dataframe/datasource/read_odps_table.py +253 -0
  111. maxframe/dataframe/datasource/read_parquet.py +421 -0
  112. maxframe/dataframe/datasource/series.py +55 -0
  113. maxframe/dataframe/datasource/tests/__init__.py +13 -0
  114. maxframe/dataframe/datasource/tests/test_datasource.py +401 -0
  115. maxframe/dataframe/datastore/__init__.py +26 -0
  116. maxframe/dataframe/datastore/core.py +19 -0
  117. maxframe/dataframe/datastore/to_csv.py +227 -0
  118. maxframe/dataframe/datastore/to_odps.py +162 -0
  119. maxframe/dataframe/extensions/__init__.py +41 -0
  120. maxframe/dataframe/extensions/accessor.py +50 -0
  121. maxframe/dataframe/extensions/reshuffle.py +83 -0
  122. maxframe/dataframe/extensions/tests/__init__.py +13 -0
  123. maxframe/dataframe/extensions/tests/test_extensions.py +38 -0
  124. maxframe/dataframe/fetch/__init__.py +15 -0
  125. maxframe/dataframe/fetch/core.py +86 -0
  126. maxframe/dataframe/groupby/__init__.py +82 -0
  127. maxframe/dataframe/groupby/aggregation.py +350 -0
  128. maxframe/dataframe/groupby/apply.py +251 -0
  129. maxframe/dataframe/groupby/core.py +179 -0
  130. maxframe/dataframe/groupby/cum.py +124 -0
  131. maxframe/dataframe/groupby/fill.py +141 -0
  132. maxframe/dataframe/groupby/getitem.py +92 -0
  133. maxframe/dataframe/groupby/head.py +105 -0
  134. maxframe/dataframe/groupby/sample.py +214 -0
  135. maxframe/dataframe/groupby/tests/__init__.py +13 -0
  136. maxframe/dataframe/groupby/tests/test_groupby.py +374 -0
  137. maxframe/dataframe/groupby/transform.py +255 -0
  138. maxframe/dataframe/indexing/__init__.py +84 -0
  139. maxframe/dataframe/indexing/add_prefix_suffix.py +110 -0
  140. maxframe/dataframe/indexing/align.py +349 -0
  141. maxframe/dataframe/indexing/at.py +83 -0
  142. maxframe/dataframe/indexing/getitem.py +204 -0
  143. maxframe/dataframe/indexing/iat.py +37 -0
  144. maxframe/dataframe/indexing/iloc.py +566 -0
  145. maxframe/dataframe/indexing/insert.py +86 -0
  146. maxframe/dataframe/indexing/loc.py +411 -0
  147. maxframe/dataframe/indexing/reindex.py +526 -0
  148. maxframe/dataframe/indexing/rename.py +462 -0
  149. maxframe/dataframe/indexing/rename_axis.py +209 -0
  150. maxframe/dataframe/indexing/reset_index.py +402 -0
  151. maxframe/dataframe/indexing/sample.py +221 -0
  152. maxframe/dataframe/indexing/set_axis.py +194 -0
  153. maxframe/dataframe/indexing/set_index.py +61 -0
  154. maxframe/dataframe/indexing/setitem.py +130 -0
  155. maxframe/dataframe/indexing/tests/__init__.py +13 -0
  156. maxframe/dataframe/indexing/tests/test_indexing.py +488 -0
  157. maxframe/dataframe/indexing/where.py +308 -0
  158. maxframe/dataframe/initializer.py +288 -0
  159. maxframe/dataframe/merge/__init__.py +32 -0
  160. maxframe/dataframe/merge/append.py +121 -0
  161. maxframe/dataframe/merge/concat.py +325 -0
  162. maxframe/dataframe/merge/merge.py +593 -0
  163. maxframe/dataframe/merge/tests/__init__.py +13 -0
  164. maxframe/dataframe/merge/tests/test_merge.py +215 -0
  165. maxframe/dataframe/misc/__init__.py +134 -0
  166. maxframe/dataframe/misc/_duplicate.py +46 -0
  167. maxframe/dataframe/misc/accessor.py +276 -0
  168. maxframe/dataframe/misc/apply.py +692 -0
  169. maxframe/dataframe/misc/astype.py +236 -0
  170. maxframe/dataframe/misc/case_when.py +141 -0
  171. maxframe/dataframe/misc/check_monotonic.py +84 -0
  172. maxframe/dataframe/misc/cut.py +383 -0
  173. maxframe/dataframe/misc/datetimes.py +79 -0
  174. maxframe/dataframe/misc/describe.py +108 -0
  175. maxframe/dataframe/misc/diff.py +210 -0
  176. maxframe/dataframe/misc/drop.py +440 -0
  177. maxframe/dataframe/misc/drop_duplicates.py +248 -0
  178. maxframe/dataframe/misc/duplicated.py +292 -0
  179. maxframe/dataframe/misc/eval.py +728 -0
  180. maxframe/dataframe/misc/explode.py +171 -0
  181. maxframe/dataframe/misc/get_dummies.py +208 -0
  182. maxframe/dataframe/misc/isin.py +217 -0
  183. maxframe/dataframe/misc/map.py +236 -0
  184. maxframe/dataframe/misc/melt.py +162 -0
  185. maxframe/dataframe/misc/memory_usage.py +248 -0
  186. maxframe/dataframe/misc/pct_change.py +150 -0
  187. maxframe/dataframe/misc/pivot_table.py +262 -0
  188. maxframe/dataframe/misc/qcut.py +104 -0
  189. maxframe/dataframe/misc/select_dtypes.py +104 -0
  190. maxframe/dataframe/misc/shift.py +256 -0
  191. maxframe/dataframe/misc/stack.py +238 -0
  192. maxframe/dataframe/misc/string_.py +221 -0
  193. maxframe/dataframe/misc/tests/__init__.py +13 -0
  194. maxframe/dataframe/misc/tests/test_misc.py +468 -0
  195. maxframe/dataframe/misc/to_numeric.py +178 -0
  196. maxframe/dataframe/misc/transform.py +361 -0
  197. maxframe/dataframe/misc/transpose.py +136 -0
  198. maxframe/dataframe/misc/value_counts.py +182 -0
  199. maxframe/dataframe/missing/__init__.py +53 -0
  200. maxframe/dataframe/missing/checkna.py +223 -0
  201. maxframe/dataframe/missing/dropna.py +280 -0
  202. maxframe/dataframe/missing/fillna.py +275 -0
  203. maxframe/dataframe/missing/replace.py +439 -0
  204. maxframe/dataframe/missing/tests/__init__.py +13 -0
  205. maxframe/dataframe/missing/tests/test_missing.py +89 -0
  206. maxframe/dataframe/operators.py +273 -0
  207. maxframe/dataframe/plotting/__init__.py +40 -0
  208. maxframe/dataframe/plotting/core.py +78 -0
  209. maxframe/dataframe/plotting/tests/__init__.py +13 -0
  210. maxframe/dataframe/plotting/tests/test_plotting.py +136 -0
  211. maxframe/dataframe/reduction/__init__.py +107 -0
  212. maxframe/dataframe/reduction/aggregation.py +344 -0
  213. maxframe/dataframe/reduction/all.py +78 -0
  214. maxframe/dataframe/reduction/any.py +78 -0
  215. maxframe/dataframe/reduction/core.py +837 -0
  216. maxframe/dataframe/reduction/count.py +59 -0
  217. maxframe/dataframe/reduction/cummax.py +30 -0
  218. maxframe/dataframe/reduction/cummin.py +30 -0
  219. maxframe/dataframe/reduction/cumprod.py +30 -0
  220. maxframe/dataframe/reduction/cumsum.py +30 -0
  221. maxframe/dataframe/reduction/custom_reduction.py +42 -0
  222. maxframe/dataframe/reduction/kurtosis.py +104 -0
  223. maxframe/dataframe/reduction/max.py +65 -0
  224. maxframe/dataframe/reduction/mean.py +61 -0
  225. maxframe/dataframe/reduction/min.py +65 -0
  226. maxframe/dataframe/reduction/nunique.py +141 -0
  227. maxframe/dataframe/reduction/prod.py +76 -0
  228. maxframe/dataframe/reduction/reduction_size.py +36 -0
  229. maxframe/dataframe/reduction/sem.py +69 -0
  230. maxframe/dataframe/reduction/skew.py +89 -0
  231. maxframe/dataframe/reduction/std.py +53 -0
  232. maxframe/dataframe/reduction/str_concat.py +48 -0
  233. maxframe/dataframe/reduction/sum.py +77 -0
  234. maxframe/dataframe/reduction/tests/__init__.py +13 -0
  235. maxframe/dataframe/reduction/tests/test_reduction.py +486 -0
  236. maxframe/dataframe/reduction/unique.py +90 -0
  237. maxframe/dataframe/reduction/var.py +72 -0
  238. maxframe/dataframe/sort/__init__.py +34 -0
  239. maxframe/dataframe/sort/core.py +36 -0
  240. maxframe/dataframe/sort/sort_index.py +153 -0
  241. maxframe/dataframe/sort/sort_values.py +311 -0
  242. maxframe/dataframe/sort/tests/__init__.py +13 -0
  243. maxframe/dataframe/sort/tests/test_sort.py +81 -0
  244. maxframe/dataframe/statistics/__init__.py +33 -0
  245. maxframe/dataframe/statistics/corr.py +280 -0
  246. maxframe/dataframe/statistics/quantile.py +341 -0
  247. maxframe/dataframe/statistics/tests/__init__.py +13 -0
  248. maxframe/dataframe/statistics/tests/test_statistics.py +82 -0
  249. maxframe/dataframe/tests/__init__.py +13 -0
  250. maxframe/dataframe/tests/test_initializer.py +29 -0
  251. maxframe/dataframe/tseries/__init__.py +13 -0
  252. maxframe/dataframe/tseries/tests/__init__.py +13 -0
  253. maxframe/dataframe/tseries/tests/test_tseries.py +30 -0
  254. maxframe/dataframe/tseries/to_datetime.py +297 -0
  255. maxframe/dataframe/ufunc/__init__.py +27 -0
  256. maxframe/dataframe/ufunc/tensor.py +54 -0
  257. maxframe/dataframe/ufunc/ufunc.py +52 -0
  258. maxframe/dataframe/utils.py +1267 -0
  259. maxframe/dataframe/window/__init__.py +29 -0
  260. maxframe/dataframe/window/aggregation.py +96 -0
  261. maxframe/dataframe/window/core.py +69 -0
  262. maxframe/dataframe/window/ewm.py +249 -0
  263. maxframe/dataframe/window/expanding.py +147 -0
  264. maxframe/dataframe/window/rolling.py +376 -0
  265. maxframe/dataframe/window/tests/__init__.py +13 -0
  266. maxframe/dataframe/window/tests/test_ewm.py +70 -0
  267. maxframe/dataframe/window/tests/test_expanding.py +66 -0
  268. maxframe/dataframe/window/tests/test_rolling.py +57 -0
  269. maxframe/env.py +33 -0
  270. maxframe/errors.py +21 -0
  271. maxframe/extension.py +81 -0
  272. maxframe/learn/__init__.py +17 -0
  273. maxframe/learn/contrib/__init__.py +17 -0
  274. maxframe/learn/contrib/pytorch/__init__.py +16 -0
  275. maxframe/learn/contrib/pytorch/run_function.py +110 -0
  276. maxframe/learn/contrib/pytorch/run_script.py +102 -0
  277. maxframe/learn/contrib/pytorch/tests/__init__.py +13 -0
  278. maxframe/learn/contrib/pytorch/tests/test_pytorch.py +42 -0
  279. maxframe/learn/contrib/utils.py +52 -0
  280. maxframe/learn/contrib/xgboost/__init__.py +26 -0
  281. maxframe/learn/contrib/xgboost/classifier.py +86 -0
  282. maxframe/learn/contrib/xgboost/core.py +156 -0
  283. maxframe/learn/contrib/xgboost/dmatrix.py +150 -0
  284. maxframe/learn/contrib/xgboost/predict.py +138 -0
  285. maxframe/learn/contrib/xgboost/regressor.py +78 -0
  286. maxframe/learn/contrib/xgboost/tests/__init__.py +13 -0
  287. maxframe/learn/contrib/xgboost/tests/test_core.py +43 -0
  288. maxframe/learn/contrib/xgboost/train.py +121 -0
  289. maxframe/learn/utils/__init__.py +15 -0
  290. maxframe/learn/utils/core.py +29 -0
  291. maxframe/lib/__init__.py +15 -0
  292. maxframe/lib/aio/__init__.py +27 -0
  293. maxframe/lib/aio/_runners.py +162 -0
  294. maxframe/lib/aio/_threads.py +35 -0
  295. maxframe/lib/aio/base.py +82 -0
  296. maxframe/lib/aio/file.py +85 -0
  297. maxframe/lib/aio/isolation.py +100 -0
  298. maxframe/lib/aio/lru.py +242 -0
  299. maxframe/lib/aio/parallelism.py +37 -0
  300. maxframe/lib/aio/tests/__init__.py +13 -0
  301. maxframe/lib/aio/tests/test_aio_file.py +55 -0
  302. maxframe/lib/compression.py +55 -0
  303. maxframe/lib/cython/__init__.py +13 -0
  304. maxframe/lib/cython/libcpp.pxd +30 -0
  305. maxframe/lib/filesystem/__init__.py +21 -0
  306. maxframe/lib/filesystem/_glob.py +173 -0
  307. maxframe/lib/filesystem/_oss_lib/__init__.py +13 -0
  308. maxframe/lib/filesystem/_oss_lib/common.py +198 -0
  309. maxframe/lib/filesystem/_oss_lib/glob.py +147 -0
  310. maxframe/lib/filesystem/_oss_lib/handle.py +156 -0
  311. maxframe/lib/filesystem/arrow.py +236 -0
  312. maxframe/lib/filesystem/base.py +263 -0
  313. maxframe/lib/filesystem/core.py +95 -0
  314. maxframe/lib/filesystem/fsmap.py +164 -0
  315. maxframe/lib/filesystem/hdfs.py +31 -0
  316. maxframe/lib/filesystem/local.py +112 -0
  317. maxframe/lib/filesystem/oss.py +157 -0
  318. maxframe/lib/filesystem/tests/__init__.py +13 -0
  319. maxframe/lib/filesystem/tests/test_filesystem.py +223 -0
  320. maxframe/lib/filesystem/tests/test_oss.py +182 -0
  321. maxframe/lib/functools_compat.py +81 -0
  322. maxframe/lib/mmh3.cpython-311-darwin.so +0 -0
  323. maxframe/lib/mmh3_src/MurmurHash3.cpp +339 -0
  324. maxframe/lib/mmh3_src/MurmurHash3.h +43 -0
  325. maxframe/lib/mmh3_src/mmh3module.cpp +387 -0
  326. maxframe/lib/sparse/__init__.py +861 -0
  327. maxframe/lib/sparse/array.py +1604 -0
  328. maxframe/lib/sparse/core.py +92 -0
  329. maxframe/lib/sparse/matrix.py +241 -0
  330. maxframe/lib/sparse/tests/__init__.py +15 -0
  331. maxframe/lib/sparse/tests/test_sparse.py +476 -0
  332. maxframe/lib/sparse/vector.py +150 -0
  333. maxframe/lib/tblib/LICENSE +20 -0
  334. maxframe/lib/tblib/__init__.py +327 -0
  335. maxframe/lib/tblib/cpython.py +83 -0
  336. maxframe/lib/tblib/decorators.py +44 -0
  337. maxframe/lib/tblib/pickling_support.py +90 -0
  338. maxframe/lib/tests/__init__.py +13 -0
  339. maxframe/lib/tests/test_wrapped_pickle.py +51 -0
  340. maxframe/lib/version.py +620 -0
  341. maxframe/lib/wrapped_pickle.py +139 -0
  342. maxframe/mixin.py +100 -0
  343. maxframe/odpsio/__init__.py +21 -0
  344. maxframe/odpsio/arrow.py +91 -0
  345. maxframe/odpsio/schema.py +364 -0
  346. maxframe/odpsio/tableio.py +322 -0
  347. maxframe/odpsio/tests/__init__.py +13 -0
  348. maxframe/odpsio/tests/test_arrow.py +88 -0
  349. maxframe/odpsio/tests/test_schema.py +297 -0
  350. maxframe/odpsio/tests/test_tableio.py +136 -0
  351. maxframe/odpsio/tests/test_volumeio.py +90 -0
  352. maxframe/odpsio/volumeio.py +95 -0
  353. maxframe/opcodes.py +590 -0
  354. maxframe/protocol.py +415 -0
  355. maxframe/remote/__init__.py +18 -0
  356. maxframe/remote/core.py +210 -0
  357. maxframe/remote/run_script.py +121 -0
  358. maxframe/serialization/__init__.py +26 -0
  359. maxframe/serialization/arrow.py +95 -0
  360. maxframe/serialization/core.cpython-311-darwin.so +0 -0
  361. maxframe/serialization/core.pxd +44 -0
  362. maxframe/serialization/core.pyi +61 -0
  363. maxframe/serialization/core.pyx +1094 -0
  364. maxframe/serialization/exception.py +86 -0
  365. maxframe/serialization/maxframe_objects.py +39 -0
  366. maxframe/serialization/numpy.py +91 -0
  367. maxframe/serialization/pandas.py +202 -0
  368. maxframe/serialization/scipy.py +71 -0
  369. maxframe/serialization/serializables/__init__.py +55 -0
  370. maxframe/serialization/serializables/core.py +262 -0
  371. maxframe/serialization/serializables/field.py +624 -0
  372. maxframe/serialization/serializables/field_type.py +589 -0
  373. maxframe/serialization/serializables/tests/__init__.py +13 -0
  374. maxframe/serialization/serializables/tests/test_field_type.py +121 -0
  375. maxframe/serialization/serializables/tests/test_serializable.py +250 -0
  376. maxframe/serialization/tests/__init__.py +13 -0
  377. maxframe/serialization/tests/test_serial.py +412 -0
  378. maxframe/session.py +1310 -0
  379. maxframe/tensor/__init__.py +183 -0
  380. maxframe/tensor/arithmetic/__init__.py +315 -0
  381. maxframe/tensor/arithmetic/abs.py +68 -0
  382. maxframe/tensor/arithmetic/absolute.py +68 -0
  383. maxframe/tensor/arithmetic/add.py +82 -0
  384. maxframe/tensor/arithmetic/angle.py +72 -0
  385. maxframe/tensor/arithmetic/arccos.py +104 -0
  386. maxframe/tensor/arithmetic/arccosh.py +91 -0
  387. maxframe/tensor/arithmetic/arcsin.py +94 -0
  388. maxframe/tensor/arithmetic/arcsinh.py +86 -0
  389. maxframe/tensor/arithmetic/arctan.py +106 -0
  390. maxframe/tensor/arithmetic/arctan2.py +128 -0
  391. maxframe/tensor/arithmetic/arctanh.py +86 -0
  392. maxframe/tensor/arithmetic/around.py +114 -0
  393. maxframe/tensor/arithmetic/bitand.py +95 -0
  394. maxframe/tensor/arithmetic/bitor.py +102 -0
  395. maxframe/tensor/arithmetic/bitxor.py +95 -0
  396. maxframe/tensor/arithmetic/cbrt.py +66 -0
  397. maxframe/tensor/arithmetic/ceil.py +71 -0
  398. maxframe/tensor/arithmetic/clip.py +165 -0
  399. maxframe/tensor/arithmetic/conj.py +74 -0
  400. maxframe/tensor/arithmetic/copysign.py +78 -0
  401. maxframe/tensor/arithmetic/core.py +544 -0
  402. maxframe/tensor/arithmetic/cos.py +85 -0
  403. maxframe/tensor/arithmetic/cosh.py +72 -0
  404. maxframe/tensor/arithmetic/deg2rad.py +72 -0
  405. maxframe/tensor/arithmetic/degrees.py +77 -0
  406. maxframe/tensor/arithmetic/divide.py +114 -0
  407. maxframe/tensor/arithmetic/equal.py +76 -0
  408. maxframe/tensor/arithmetic/exp.py +106 -0
  409. maxframe/tensor/arithmetic/exp2.py +67 -0
  410. maxframe/tensor/arithmetic/expm1.py +79 -0
  411. maxframe/tensor/arithmetic/fabs.py +74 -0
  412. maxframe/tensor/arithmetic/fix.py +69 -0
  413. maxframe/tensor/arithmetic/float_power.py +103 -0
  414. maxframe/tensor/arithmetic/floor.py +77 -0
  415. maxframe/tensor/arithmetic/floordiv.py +94 -0
  416. maxframe/tensor/arithmetic/fmax.py +105 -0
  417. maxframe/tensor/arithmetic/fmin.py +106 -0
  418. maxframe/tensor/arithmetic/fmod.py +99 -0
  419. maxframe/tensor/arithmetic/frexp.py +92 -0
  420. maxframe/tensor/arithmetic/greater.py +77 -0
  421. maxframe/tensor/arithmetic/greater_equal.py +69 -0
  422. maxframe/tensor/arithmetic/hypot.py +77 -0
  423. maxframe/tensor/arithmetic/i0.py +89 -0
  424. maxframe/tensor/arithmetic/imag.py +67 -0
  425. maxframe/tensor/arithmetic/invert.py +110 -0
  426. maxframe/tensor/arithmetic/isclose.py +115 -0
  427. maxframe/tensor/arithmetic/iscomplex.py +64 -0
  428. maxframe/tensor/arithmetic/isfinite.py +106 -0
  429. maxframe/tensor/arithmetic/isinf.py +103 -0
  430. maxframe/tensor/arithmetic/isnan.py +82 -0
  431. maxframe/tensor/arithmetic/isreal.py +63 -0
  432. maxframe/tensor/arithmetic/ldexp.py +99 -0
  433. maxframe/tensor/arithmetic/less.py +69 -0
  434. maxframe/tensor/arithmetic/less_equal.py +69 -0
  435. maxframe/tensor/arithmetic/log.py +92 -0
  436. maxframe/tensor/arithmetic/log10.py +85 -0
  437. maxframe/tensor/arithmetic/log1p.py +95 -0
  438. maxframe/tensor/arithmetic/log2.py +85 -0
  439. maxframe/tensor/arithmetic/logaddexp.py +80 -0
  440. maxframe/tensor/arithmetic/logaddexp2.py +78 -0
  441. maxframe/tensor/arithmetic/logical_and.py +81 -0
  442. maxframe/tensor/arithmetic/logical_not.py +74 -0
  443. maxframe/tensor/arithmetic/logical_or.py +82 -0
  444. maxframe/tensor/arithmetic/logical_xor.py +88 -0
  445. maxframe/tensor/arithmetic/lshift.py +82 -0
  446. maxframe/tensor/arithmetic/maximum.py +108 -0
  447. maxframe/tensor/arithmetic/minimum.py +108 -0
  448. maxframe/tensor/arithmetic/mod.py +104 -0
  449. maxframe/tensor/arithmetic/modf.py +83 -0
  450. maxframe/tensor/arithmetic/multiply.py +81 -0
  451. maxframe/tensor/arithmetic/nan_to_num.py +99 -0
  452. maxframe/tensor/arithmetic/negative.py +65 -0
  453. maxframe/tensor/arithmetic/nextafter.py +68 -0
  454. maxframe/tensor/arithmetic/not_equal.py +72 -0
  455. maxframe/tensor/arithmetic/positive.py +47 -0
  456. maxframe/tensor/arithmetic/power.py +106 -0
  457. maxframe/tensor/arithmetic/rad2deg.py +71 -0
  458. maxframe/tensor/arithmetic/radians.py +77 -0
  459. maxframe/tensor/arithmetic/real.py +70 -0
  460. maxframe/tensor/arithmetic/reciprocal.py +76 -0
  461. maxframe/tensor/arithmetic/rint.py +68 -0
  462. maxframe/tensor/arithmetic/rshift.py +81 -0
  463. maxframe/tensor/arithmetic/setimag.py +29 -0
  464. maxframe/tensor/arithmetic/setreal.py +29 -0
  465. maxframe/tensor/arithmetic/sign.py +81 -0
  466. maxframe/tensor/arithmetic/signbit.py +65 -0
  467. maxframe/tensor/arithmetic/sin.py +98 -0
  468. maxframe/tensor/arithmetic/sinc.py +102 -0
  469. maxframe/tensor/arithmetic/sinh.py +93 -0
  470. maxframe/tensor/arithmetic/spacing.py +72 -0
  471. maxframe/tensor/arithmetic/sqrt.py +81 -0
  472. maxframe/tensor/arithmetic/square.py +69 -0
  473. maxframe/tensor/arithmetic/subtract.py +81 -0
  474. maxframe/tensor/arithmetic/tan.py +88 -0
  475. maxframe/tensor/arithmetic/tanh.py +92 -0
  476. maxframe/tensor/arithmetic/tests/__init__.py +15 -0
  477. maxframe/tensor/arithmetic/tests/test_arithmetic.py +414 -0
  478. maxframe/tensor/arithmetic/truediv.py +104 -0
  479. maxframe/tensor/arithmetic/trunc.py +72 -0
  480. maxframe/tensor/arithmetic/utils.py +65 -0
  481. maxframe/tensor/array_utils.py +186 -0
  482. maxframe/tensor/base/__init__.py +34 -0
  483. maxframe/tensor/base/astype.py +119 -0
  484. maxframe/tensor/base/atleast_1d.py +74 -0
  485. maxframe/tensor/base/broadcast_to.py +89 -0
  486. maxframe/tensor/base/ravel.py +92 -0
  487. maxframe/tensor/base/tests/__init__.py +13 -0
  488. maxframe/tensor/base/tests/test_base.py +114 -0
  489. maxframe/tensor/base/transpose.py +125 -0
  490. maxframe/tensor/base/unique.py +205 -0
  491. maxframe/tensor/base/where.py +127 -0
  492. maxframe/tensor/core.py +724 -0
  493. maxframe/tensor/datasource/__init__.py +32 -0
  494. maxframe/tensor/datasource/arange.py +156 -0
  495. maxframe/tensor/datasource/array.py +415 -0
  496. maxframe/tensor/datasource/core.py +109 -0
  497. maxframe/tensor/datasource/empty.py +169 -0
  498. maxframe/tensor/datasource/from_dataframe.py +70 -0
  499. maxframe/tensor/datasource/from_dense.py +54 -0
  500. maxframe/tensor/datasource/from_sparse.py +47 -0
  501. maxframe/tensor/datasource/full.py +186 -0
  502. maxframe/tensor/datasource/ones.py +173 -0
  503. maxframe/tensor/datasource/scalar.py +40 -0
  504. maxframe/tensor/datasource/tests/__init__.py +13 -0
  505. maxframe/tensor/datasource/tests/test_datasource.py +278 -0
  506. maxframe/tensor/datasource/zeros.py +188 -0
  507. maxframe/tensor/fetch/__init__.py +15 -0
  508. maxframe/tensor/fetch/core.py +54 -0
  509. maxframe/tensor/indexing/__init__.py +47 -0
  510. maxframe/tensor/indexing/choose.py +196 -0
  511. maxframe/tensor/indexing/compress.py +124 -0
  512. maxframe/tensor/indexing/core.py +190 -0
  513. maxframe/tensor/indexing/extract.py +71 -0
  514. maxframe/tensor/indexing/fill_diagonal.py +183 -0
  515. maxframe/tensor/indexing/flatnonzero.py +60 -0
  516. maxframe/tensor/indexing/getitem.py +175 -0
  517. maxframe/tensor/indexing/nonzero.py +120 -0
  518. maxframe/tensor/indexing/setitem.py +132 -0
  519. maxframe/tensor/indexing/slice.py +29 -0
  520. maxframe/tensor/indexing/take.py +130 -0
  521. maxframe/tensor/indexing/tests/__init__.py +15 -0
  522. maxframe/tensor/indexing/tests/test_indexing.py +234 -0
  523. maxframe/tensor/indexing/unravel_index.py +103 -0
  524. maxframe/tensor/merge/__init__.py +15 -0
  525. maxframe/tensor/merge/stack.py +132 -0
  526. maxframe/tensor/merge/tests/__init__.py +13 -0
  527. maxframe/tensor/merge/tests/test_merge.py +52 -0
  528. maxframe/tensor/operators.py +123 -0
  529. maxframe/tensor/random/__init__.py +168 -0
  530. maxframe/tensor/random/beta.py +87 -0
  531. maxframe/tensor/random/binomial.py +137 -0
  532. maxframe/tensor/random/bytes.py +39 -0
  533. maxframe/tensor/random/chisquare.py +110 -0
  534. maxframe/tensor/random/choice.py +186 -0
  535. maxframe/tensor/random/core.py +234 -0
  536. maxframe/tensor/random/dirichlet.py +123 -0
  537. maxframe/tensor/random/exponential.py +94 -0
  538. maxframe/tensor/random/f.py +135 -0
  539. maxframe/tensor/random/gamma.py +128 -0
  540. maxframe/tensor/random/geometric.py +93 -0
  541. maxframe/tensor/random/gumbel.py +167 -0
  542. maxframe/tensor/random/hypergeometric.py +148 -0
  543. maxframe/tensor/random/laplace.py +133 -0
  544. maxframe/tensor/random/logistic.py +129 -0
  545. maxframe/tensor/random/lognormal.py +159 -0
  546. maxframe/tensor/random/logseries.py +122 -0
  547. maxframe/tensor/random/multinomial.py +133 -0
  548. maxframe/tensor/random/multivariate_normal.py +192 -0
  549. maxframe/tensor/random/negative_binomial.py +125 -0
  550. maxframe/tensor/random/noncentral_chisquare.py +132 -0
  551. maxframe/tensor/random/noncentral_f.py +126 -0
  552. maxframe/tensor/random/normal.py +143 -0
  553. maxframe/tensor/random/pareto.py +140 -0
  554. maxframe/tensor/random/permutation.py +104 -0
  555. maxframe/tensor/random/poisson.py +111 -0
  556. maxframe/tensor/random/power.py +142 -0
  557. maxframe/tensor/random/rand.py +82 -0
  558. maxframe/tensor/random/randint.py +121 -0
  559. maxframe/tensor/random/randn.py +96 -0
  560. maxframe/tensor/random/random_integers.py +123 -0
  561. maxframe/tensor/random/random_sample.py +86 -0
  562. maxframe/tensor/random/rayleigh.py +110 -0
  563. maxframe/tensor/random/shuffle.py +61 -0
  564. maxframe/tensor/random/standard_cauchy.py +105 -0
  565. maxframe/tensor/random/standard_exponential.py +72 -0
  566. maxframe/tensor/random/standard_gamma.py +120 -0
  567. maxframe/tensor/random/standard_normal.py +74 -0
  568. maxframe/tensor/random/standard_t.py +135 -0
  569. maxframe/tensor/random/tests/__init__.py +15 -0
  570. maxframe/tensor/random/tests/test_random.py +167 -0
  571. maxframe/tensor/random/triangular.py +119 -0
  572. maxframe/tensor/random/uniform.py +131 -0
  573. maxframe/tensor/random/vonmises.py +131 -0
  574. maxframe/tensor/random/wald.py +114 -0
  575. maxframe/tensor/random/weibull.py +140 -0
  576. maxframe/tensor/random/zipf.py +122 -0
  577. maxframe/tensor/rechunk/__init__.py +26 -0
  578. maxframe/tensor/rechunk/rechunk.py +43 -0
  579. maxframe/tensor/reduction/__init__.py +66 -0
  580. maxframe/tensor/reduction/all.py +103 -0
  581. maxframe/tensor/reduction/allclose.py +88 -0
  582. maxframe/tensor/reduction/any.py +105 -0
  583. maxframe/tensor/reduction/argmax.py +103 -0
  584. maxframe/tensor/reduction/argmin.py +103 -0
  585. maxframe/tensor/reduction/array_equal.py +64 -0
  586. maxframe/tensor/reduction/core.py +168 -0
  587. maxframe/tensor/reduction/count_nonzero.py +81 -0
  588. maxframe/tensor/reduction/cumprod.py +97 -0
  589. maxframe/tensor/reduction/cumsum.py +101 -0
  590. maxframe/tensor/reduction/max.py +120 -0
  591. maxframe/tensor/reduction/mean.py +123 -0
  592. maxframe/tensor/reduction/min.py +120 -0
  593. maxframe/tensor/reduction/nanargmax.py +82 -0
  594. maxframe/tensor/reduction/nanargmin.py +76 -0
  595. maxframe/tensor/reduction/nancumprod.py +91 -0
  596. maxframe/tensor/reduction/nancumsum.py +94 -0
  597. maxframe/tensor/reduction/nanmax.py +111 -0
  598. maxframe/tensor/reduction/nanmean.py +106 -0
  599. maxframe/tensor/reduction/nanmin.py +111 -0
  600. maxframe/tensor/reduction/nanprod.py +94 -0
  601. maxframe/tensor/reduction/nanstd.py +126 -0
  602. maxframe/tensor/reduction/nansum.py +115 -0
  603. maxframe/tensor/reduction/nanvar.py +149 -0
  604. maxframe/tensor/reduction/prod.py +130 -0
  605. maxframe/tensor/reduction/std.py +134 -0
  606. maxframe/tensor/reduction/sum.py +125 -0
  607. maxframe/tensor/reduction/tests/__init__.py +13 -0
  608. maxframe/tensor/reduction/tests/test_reduction.py +181 -0
  609. maxframe/tensor/reduction/var.py +176 -0
  610. maxframe/tensor/reshape/__init__.py +17 -0
  611. maxframe/tensor/reshape/reshape.py +188 -0
  612. maxframe/tensor/reshape/tests/__init__.py +15 -0
  613. maxframe/tensor/reshape/tests/test_reshape.py +37 -0
  614. maxframe/tensor/statistics/__init__.py +13 -0
  615. maxframe/tensor/statistics/percentile.py +175 -0
  616. maxframe/tensor/statistics/quantile.py +288 -0
  617. maxframe/tensor/ufunc/__init__.py +26 -0
  618. maxframe/tensor/ufunc/ufunc.py +200 -0
  619. maxframe/tensor/utils.py +718 -0
  620. maxframe/tests/__init__.py +13 -0
  621. maxframe/tests/test_codegen.py +69 -0
  622. maxframe/tests/test_protocol.py +144 -0
  623. maxframe/tests/test_utils.py +376 -0
  624. maxframe/tests/utils.py +164 -0
  625. maxframe/typing_.py +37 -0
  626. maxframe/udf.py +134 -0
  627. maxframe/utils.py +1114 -0
  628. maxframe-0.1.0b5.dist-info/METADATA +104 -0
  629. maxframe-0.1.0b5.dist-info/RECORD +647 -0
  630. maxframe-0.1.0b5.dist-info/WHEEL +5 -0
  631. maxframe-0.1.0b5.dist-info/top_level.txt +3 -0
  632. maxframe_client/__init__.py +17 -0
  633. maxframe_client/clients/__init__.py +13 -0
  634. maxframe_client/clients/framedriver.py +118 -0
  635. maxframe_client/clients/spe.py +104 -0
  636. maxframe_client/conftest.py +15 -0
  637. maxframe_client/fetcher.py +264 -0
  638. maxframe_client/session/__init__.py +22 -0
  639. maxframe_client/session/consts.py +36 -0
  640. maxframe_client/session/graph.py +119 -0
  641. maxframe_client/session/odps.py +482 -0
  642. maxframe_client/session/task.py +280 -0
  643. maxframe_client/session/tests/__init__.py +13 -0
  644. maxframe_client/session/tests/test_task.py +85 -0
  645. maxframe_client/tests/__init__.py +13 -0
  646. maxframe_client/tests/test_fetcher.py +89 -0
  647. maxframe_client/tests/test_session.py +255 -0
@@ -0,0 +1,724 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+ # Copyright 1999-2024 Alibaba Group Holding Ltd.
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ import logging
18
+ from collections.abc import Iterable
19
+ from enum import Enum
20
+ from operator import attrgetter
21
+ from typing import Any, Dict
22
+
23
+ import numpy as np
24
+
25
+ from ..core import (
26
+ Chunk,
27
+ ChunkData,
28
+ HasShapeTileable,
29
+ HasShapeTileableData,
30
+ OutputType,
31
+ _ExecuteAndFetchMixin,
32
+ is_build_mode,
33
+ register_output_types,
34
+ )
35
+ from ..core.entity.utils import refresh_tileable_shape
36
+ from ..serialization.serializables import (
37
+ AnyField,
38
+ DataTypeField,
39
+ EnumField,
40
+ FieldTypes,
41
+ ListField,
42
+ Serializable,
43
+ StringField,
44
+ TupleField,
45
+ )
46
+ from ..utils import on_deserialize_shape, on_serialize_shape, skip_na_call
47
+ from .utils import fetch_corner_data, get_chunk_slices
48
+
49
+ logger = logging.getLogger(__name__)
50
+
51
+
52
+ class TensorOrder(Enum):
53
+ # C order
54
+ C_ORDER = "C"
55
+ # Fortran order
56
+ F_ORDER = "F"
57
+
58
+
59
+ class TensorChunkData(ChunkData):
60
+ __slots__ = ()
61
+ _no_copy_attrs_ = ChunkData._no_copy_attrs_ | {"dtype"}
62
+ type_name = "Tensor"
63
+
64
+ # required fields
65
+ _shape = TupleField(
66
+ "shape",
67
+ FieldTypes.int64,
68
+ on_serialize=on_serialize_shape,
69
+ on_deserialize=on_deserialize_shape,
70
+ )
71
+ _order = EnumField("order", TensorOrder, FieldTypes.string)
72
+ # optional fields
73
+ _dtype = DataTypeField("dtype")
74
+
75
+ def __init__(self, op=None, index=None, shape=None, dtype=None, order=None, **kw):
76
+ if isinstance(order, str):
77
+ order = getattr(TensorOrder, order)
78
+ super().__init__(
79
+ _op=op, _index=index, _shape=shape, _dtype=dtype, _order=order, **kw
80
+ )
81
+ if self.order is None and self.op is not None:
82
+ if len(self.inputs) == 0:
83
+ self._order = TensorOrder.C_ORDER
84
+ elif all(
85
+ hasattr(inp, "order") and inp.order == TensorOrder.F_ORDER
86
+ for inp in self.inputs
87
+ ):
88
+ self._order = TensorOrder.F_ORDER
89
+ else:
90
+ self._order = TensorOrder.C_ORDER
91
+
92
+ @property
93
+ def params(self) -> Dict[str, Any]:
94
+ # params return the properties which useful to rebuild a new chunk
95
+ return {
96
+ "shape": self.shape,
97
+ "dtype": self.dtype,
98
+ "order": self.order,
99
+ "index": self.index,
100
+ }
101
+
102
+ @params.setter
103
+ def params(self, new_params: Dict[str, Any]):
104
+ params = new_params.copy()
105
+ params.pop("index", None) # index not needed to update
106
+ new_shape = params.pop("shape", None)
107
+ if new_shape is not None:
108
+ self._shape = new_shape
109
+ dtype = params.pop("dtype", None)
110
+ if dtype is not None:
111
+ self._dtype = dtype
112
+ order = params.pop("order", None)
113
+ if order is not None:
114
+ self._order = order
115
+ if params: # pragma: no cover
116
+ raise TypeError(f"Unknown params: {list(params)}")
117
+
118
+ @classmethod
119
+ def get_params_from_data(cls, data: np.ndarray) -> Dict[str, Any]:
120
+ from .array_utils import is_cupy
121
+
122
+ if not is_cupy(data):
123
+ data = np.asarray(data)
124
+ order = (
125
+ TensorOrder.C_ORDER if data.flags["C_CONTIGUOUS"] else TensorOrder.F_ORDER
126
+ )
127
+ return {"shape": data.shape, "dtype": data.dtype, "order": order}
128
+
129
+ def __len__(self):
130
+ try:
131
+ return self.shape[0]
132
+ except IndexError:
133
+ if is_build_mode():
134
+ return 0
135
+ raise TypeError("len() of unsized object")
136
+
137
+ @property
138
+ def shape(self):
139
+ return getattr(self, "_shape", None)
140
+
141
+ @property
142
+ def ndim(self):
143
+ return len(self.shape)
144
+
145
+ @property
146
+ def size(self):
147
+ return np.prod(self.shape).item()
148
+
149
+ @property
150
+ def dtype(self):
151
+ return getattr(self, "_dtype", None) or self.op.dtype
152
+
153
+ @property
154
+ def order(self):
155
+ return getattr(self, "_order", None)
156
+
157
+ @property
158
+ def nbytes(self):
159
+ return np.prod(self.shape) * self.dtype.itemsize
160
+
161
+
162
+ class TensorChunk(Chunk):
163
+ __slots__ = ()
164
+ _allow_data_type_ = (TensorChunkData,)
165
+ type_name = "Tensor"
166
+
167
+ def __len__(self):
168
+ return len(self._data)
169
+
170
+
171
+ class TensorData(HasShapeTileableData, _ExecuteAndFetchMixin):
172
+ __slots__ = ()
173
+ type_name = "Tensor"
174
+
175
+ # required fields
176
+ _order = StringField(
177
+ "order", on_serialize=attrgetter("value"), on_deserialize=TensorOrder
178
+ )
179
+ # optional fields
180
+ _dtype = DataTypeField("dtype")
181
+ _chunks = ListField(
182
+ "chunks",
183
+ FieldTypes.reference(TensorChunkData),
184
+ on_serialize=skip_na_call(lambda x: [it.data for it in x]),
185
+ on_deserialize=skip_na_call(lambda x: [TensorChunk(it) for it in x]),
186
+ )
187
+
188
+ def __init__(
189
+ self,
190
+ op=None,
191
+ shape=None,
192
+ dtype=None,
193
+ order=None,
194
+ **kw,
195
+ ):
196
+ if isinstance(order, str):
197
+ order = getattr(TensorOrder, order)
198
+ super().__init__(
199
+ _op=op,
200
+ _shape=shape,
201
+ _dtype=dtype,
202
+ _order=order,
203
+ **kw,
204
+ )
205
+ if self.order is None and self.op is not None:
206
+ if len(self.inputs) == 0:
207
+ self._order = TensorOrder.C_ORDER
208
+ elif all(
209
+ hasattr(inp, "order") and inp.order == TensorOrder.F_ORDER
210
+ for inp in self.inputs
211
+ ):
212
+ self._order = TensorOrder.F_ORDER
213
+ else:
214
+ self._order = TensorOrder.C_ORDER
215
+
216
+ def _to_str(self, representation=False):
217
+ if is_build_mode() or len(self._executed_sessions) == 0:
218
+ # in build mode, or not executed, just return representation
219
+ if representation:
220
+ return f"Tensor <op={type(self._op).__name__}, shape={self._shape}, key={self._key}>"
221
+ else:
222
+ return f"Tensor(op={type(self._op).__name__}, shape={self._shape})"
223
+ else:
224
+ print_options = np.get_printoptions()
225
+ threshold = print_options["threshold"]
226
+
227
+ corner_data = fetch_corner_data(self, session=self._executed_sessions[-1])
228
+ # if less than default threshold, just set it as default,
229
+ # if not, set to corner_data.size - 1 make sure ... exists in repr
230
+ threshold = threshold if self.size <= threshold else corner_data.size - 1
231
+ with np.printoptions(threshold=threshold):
232
+ corner_str = repr(corner_data) if representation else str(corner_data)
233
+ return corner_str
234
+
235
+ def __str__(self):
236
+ return self._to_str(representation=False)
237
+
238
+ def __repr__(self):
239
+ return self._to_str(representation=True)
240
+
241
+ @property
242
+ def params(self):
243
+ # params return the properties which useful to rebuild a new tileable object
244
+ return {"shape": self.shape, "dtype": self.dtype, "order": self.order}
245
+
246
+ @params.setter
247
+ def params(self, new_params: Dict[str, Any]):
248
+ params = new_params.copy()
249
+ shape = params.pop("shape", None)
250
+ if shape is not None:
251
+ self._shape = shape
252
+ dtype = params.pop("dtype", None)
253
+ if dtype is not None:
254
+ self._dtype = dtype
255
+ order = params.pop("order", None)
256
+ if order is not None:
257
+ self._order = order
258
+ if params: # pragma: no cover
259
+ raise TypeError(f"Unknown params: {list(params)}")
260
+
261
+ def refresh_params(self):
262
+ refresh_tileable_shape(self)
263
+ if self._dtype is None:
264
+ self._dtype = self.chunks[0].dtype
265
+
266
+ @property
267
+ def flags(self):
268
+ c_order = True if self.ndim <= 1 else self.order == TensorOrder.C_ORDER
269
+ f_order = True if self.ndim <= 1 else self.order == TensorOrder.F_ORDER
270
+ return {"C_CONTIGUOUS": c_order, "F_CONTIGUOUS": f_order}
271
+
272
+ @property
273
+ def real(self):
274
+ from .arithmetic import real
275
+
276
+ return real(self)
277
+
278
+ @property
279
+ def imag(self):
280
+ from .arithmetic import imag
281
+
282
+ return imag(self)
283
+
284
+ @property
285
+ def dtype(self):
286
+ return getattr(self, "_dtype", None) or self.op.dtype
287
+
288
+ @property
289
+ def order(self):
290
+ return getattr(self, "_order", None)
291
+
292
+ @property
293
+ def nbytes(self):
294
+ return np.prod(self.shape) * self.dtype.itemsize
295
+
296
+ def get_chunk_slices(self, idx):
297
+ return get_chunk_slices(self.nsplits, idx)
298
+
299
+ def is_scalar(self):
300
+ return self.ndim == 0
301
+
302
+ isscalar = is_scalar
303
+
304
+ def tosparse(self, missing=None):
305
+ if self.issparse():
306
+ return self
307
+
308
+ from .datasource import fromdense
309
+
310
+ return fromdense(self, missing=missing)
311
+
312
+ def todense(self, fill_value=None):
313
+ if not self.issparse():
314
+ return self
315
+
316
+ from .datasource import fromsparse
317
+
318
+ return fromsparse(self, fill_value=fill_value)
319
+
320
+ def transpose(self, *axes):
321
+ from .base import transpose
322
+
323
+ if len(axes) == 1 and isinstance(axes[0], Iterable):
324
+ axes = axes[0]
325
+
326
+ return transpose(self, axes)
327
+
328
+ @property
329
+ def T(self):
330
+ return self.transpose()
331
+
332
+ def reshape(self, shape, *shapes, **kw):
333
+ from .reshape import reshape
334
+
335
+ order = kw.pop("order", "C")
336
+ if kw:
337
+ raise TypeError(
338
+ f"'{next(iter(kw))}' is an invalid keyword argument for this function"
339
+ )
340
+
341
+ if isinstance(shape, Iterable):
342
+ shape = tuple(shape)
343
+ else:
344
+ shape = (shape,)
345
+ shape += shapes
346
+
347
+ return reshape(self, shape, order=order)
348
+
349
+ def totiledb(self, uri, ctx=None, key=None, timestamp=None):
350
+ from .datastore import totiledb
351
+
352
+ return totiledb(uri, self, ctx=ctx, key=key, timestamp=timestamp)
353
+
354
+ @staticmethod
355
+ def from_dataframe(in_df):
356
+ from .datasource import from_dataframe
357
+
358
+ return from_dataframe(in_df)
359
+
360
+ def to_dataframe(self, *args, **kwargs):
361
+ from ..dataframe.datasource.from_tensor import dataframe_from_tensor
362
+
363
+ return dataframe_from_tensor(self, *args, **kwargs)
364
+
365
+ @property
366
+ def flat(self):
367
+ return flatiter(self)
368
+
369
+ def to_numpy(self, session=None, **kw):
370
+ return self._execute_and_fetch(session=session, **kw)
371
+
372
+
373
+ class Tensor(HasShapeTileable):
374
+ __slots__ = ()
375
+ _allow_data_type_ = (TensorData,)
376
+ type_name = "Tensor"
377
+
378
+ def __len__(self):
379
+ return len(self._data)
380
+
381
+ @property
382
+ def shape(self):
383
+ return self._data.shape
384
+
385
+ @shape.setter
386
+ def shape(self, new_shape):
387
+ self._data = self._data.reshape(new_shape).data
388
+
389
+ def _update_shape(self, new_shape):
390
+ self._data._update_shape(new_shape)
391
+
392
+ @property
393
+ def real(self):
394
+ return self.data.real
395
+
396
+ @real.setter
397
+ def real(self, new_real):
398
+ from .arithmetic.setreal import set_real
399
+
400
+ self._data = set_real(self._data, new_real).data
401
+
402
+ @property
403
+ def imag(self):
404
+ return self.data.imag
405
+
406
+ @imag.setter
407
+ def imag(self, new_imag):
408
+ from .arithmetic.setimag import set_imag
409
+
410
+ self._data = set_imag(self._data, new_imag).data
411
+
412
+ def __array__(self, dtype=None):
413
+ return np.asarray(self.to_numpy(), dtype=dtype)
414
+
415
+ def __array_function__(self, func, types, args, kwargs):
416
+ from .. import tensor as module
417
+
418
+ for submodule in func.__module__.split(".")[1:]:
419
+ try:
420
+ module = getattr(module, submodule)
421
+ except AttributeError:
422
+ return NotImplemented
423
+ if not hasattr(module, func.__name__):
424
+ return NotImplemented
425
+ maxframe_func = getattr(module, func.__name__)
426
+ if maxframe_func is func:
427
+ # avoid Numpy func
428
+ return NotImplemented
429
+ return maxframe_func(*args, **kwargs)
430
+
431
+ def view(self):
432
+ return self._view()
433
+
434
+ @property
435
+ def ndim(self):
436
+ """
437
+ Number of array dimensions.
438
+
439
+ Examples
440
+ --------
441
+ >>> import maxframe.tensor as mt
442
+ >>> x = mt.array([1, 2, 3])
443
+ >>> x.ndim
444
+ 1
445
+ >>> y = mt.zeros((2, 3, 4))
446
+ >>> y.ndim
447
+ 3
448
+ """
449
+ return super().ndim
450
+
451
+ def transpose(self, *axes):
452
+ """
453
+ Returns a view of the tensor with axes transposed.
454
+
455
+ For a 1-D tensor, this has no effect. (To change between column and
456
+ row vectors, first cast the 1-D tensor into a matrix object.)
457
+ For a 2-D tensor, this is the usual matrix transpose.
458
+ For an n-D tensor, if axes are given, their order indicates how the
459
+ axes are permuted (see Examples). If axes are not provided and
460
+ ``a.shape = (i[0], i[1], ... i[n-2], i[n-1])``, then
461
+ ``a.transpose().shape = (i[n-1], i[n-2], ... i[1], i[0])``.
462
+
463
+ Parameters
464
+ ----------
465
+ axes : None, tuple of ints, or `n` ints
466
+
467
+ * None or no argument: reverses the order of the axes.
468
+
469
+ * tuple of ints: `i` in the `j`-th place in the tuple means `a`'s
470
+ `i`-th axis becomes `a.transpose()`'s `j`-th axis.
471
+
472
+ * `n` ints: same as an n-tuple of the same ints (this form is
473
+ intended simply as a "convenience" alternative to the tuple form)
474
+
475
+ Returns
476
+ -------
477
+ out : Tensor
478
+ View of `a`, with axes suitably permuted.
479
+
480
+ See Also
481
+ --------
482
+ Tensor.T : Tensor property returning the tensor transposed.
483
+
484
+ Examples
485
+ --------
486
+ >>> import maxframe.tensor as mt
487
+
488
+ >>> a = mt.array([[1, 2], [3, 4]])
489
+ >>> a.execute()
490
+ array([[1, 2],
491
+ [3, 4]])
492
+ >>> a.transpose().execute()
493
+ array([[1, 3],
494
+ [2, 4]])
495
+ >>> a.transpose((1, 0))
496
+ array([[1, 3],
497
+ [2, 4]])
498
+ >>> a.transpose(1, 0).execute()
499
+ array([[1, 3],
500
+ [2, 4]])
501
+ """
502
+ return self._data.transpose(*axes)
503
+
504
+ @property
505
+ def T(self):
506
+ """
507
+ Same as self.transpose(), except that self is returned if
508
+ self.ndim < 2.
509
+
510
+ Examples
511
+ --------
512
+ >>> import maxframe.tensor as mt
513
+
514
+ >>> x = mt.array([[1.,2.],[3.,4.]])
515
+ >>> x.execute()
516
+ array([[ 1., 2.],
517
+ [ 3., 4.]])
518
+ >>> x.T.execute()
519
+ array([[ 1., 3.],
520
+ [ 2., 4.]])
521
+ >>> x = mt.array([1.,2.,3.,4.])
522
+ >>> x.execute()
523
+ array([ 1., 2., 3., 4.])
524
+ >>> x.T.execute()
525
+ array([ 1., 2., 3., 4.])
526
+ """
527
+ return self._data.T
528
+
529
+ def totiledb(self, uri, ctx=None, key=None, timestamp=None):
530
+ return self._data.totiledb(uri, ctx=ctx, key=key, timestamp=timestamp)
531
+
532
+ def copy(self, order="C"):
533
+ return super().copy().astype(self.dtype, order=order, copy=False)
534
+
535
+ def sort(self, axis=-1, kind=None, parallel_kind=None, psrs_kinds=None, order=None):
536
+ """
537
+ Sort a tensor, in-place.
538
+
539
+ Parameters
540
+ ----------
541
+ axis : int, optional
542
+ Axis along which to sort. Default is -1, which means sort along the
543
+ last axis.
544
+ kind : {'quicksort', 'mergesort', 'heapsort', 'stable'}, optional
545
+ Sorting algorithm. Default is 'quicksort'.
546
+ parallel_kind: {'PSRS'}, optional
547
+ Parallel sorting algorithm, for the details, refer to:
548
+ http://csweb.cs.wfu.edu/bigiron/LittleFE-PSRS/build/html/PSRSalgorithm.html
549
+ psrs_kinds: list with 3 elements, optional
550
+ Sorting algorithms during PSRS algorithm.
551
+ order : str or list of str, optional
552
+ When `a` is a tensor with fields defined, this argument specifies
553
+ which fields to compare first, second, etc. A single field can
554
+ be specified as a string, and not all fields need be specified,
555
+ but unspecified fields will still be used, in the order in which
556
+ they come up in the dtype, to break ties.
557
+
558
+ See Also
559
+ --------
560
+ numpy.sort : Return a sorted copy of a tensor.
561
+ argsort : Indirect sort.
562
+ lexsort : Indirect stable sort on multiple keys.
563
+ searchsorted : Find elements in sorted tensor.
564
+ partition: Partial sort.
565
+
566
+ Notes
567
+ -----
568
+ See ``sort`` for notes on the different sorting algorithms.
569
+
570
+ Examples
571
+ --------
572
+ >>> import maxframe.tensor as mt
573
+ >>> a = mt.array([[1,4], [3,1]])
574
+ >>> a.sort(axis=1)
575
+ >>> a.execute()
576
+ array([[1, 4],
577
+ [1, 3]])
578
+ >>> a.sort(axis=0)
579
+ >>> a.execute()
580
+ array([[1, 3],
581
+ [1, 4]])
582
+
583
+ Use the `order` keyword to specify a field to use when sorting a
584
+ structured tensor:
585
+
586
+ >>> a = mt.array([('a', 2), ('c', 1)], dtype=[('x', 'S1'), ('y', int)])
587
+ >>> a.sort(order='y')
588
+ >>> a.execute()
589
+ array([('c', 1), ('a', 2)],
590
+ dtype=[('x', '|S1'), ('y', '<i4')])
591
+ """
592
+ from .base import sort
593
+
594
+ self._data = sort(
595
+ self,
596
+ axis=axis,
597
+ kind=kind,
598
+ parallel_kind=parallel_kind,
599
+ psrs_kinds=psrs_kinds,
600
+ order=order,
601
+ ).data
602
+
603
+ def partition(self, kth, axis=-1, kind="introselect", order=None, **kw):
604
+ """
605
+ Rearranges the elements in the tensor in such a way that the value of the
606
+ element in kth position is in the position it would be in a sorted tensor.
607
+ All elements smaller than the kth element are moved before this element and
608
+ all equal or greater are moved behind it. The ordering of the elements in
609
+ the two partitions is undefined.
610
+
611
+ Parameters
612
+ ----------
613
+ kth : int or sequence of ints
614
+ Element index to partition by. The kth element value will be in its
615
+ final sorted position and all smaller elements will be moved before it
616
+ and all equal or greater elements behind it.
617
+ The order of all elements in the partitions is undefined.
618
+ If provided with a sequence of kth it will partition all elements
619
+ indexed by kth of them into their sorted position at once.
620
+ axis : int, optional
621
+ Axis along which to sort. Default is -1, which means sort along the
622
+ last axis.
623
+ kind : {'introselect'}, optional
624
+ Selection algorithm. Default is 'introselect'.
625
+ order : str or list of str, optional
626
+ When `a` is a tensor with fields defined, this argument specifies
627
+ which fields to compare first, second, etc. A single field can
628
+ be specified as a string, and not all fields need to be specified,
629
+ but unspecified fields will still be used, in the order in which
630
+ they come up in the dtype, to break ties.
631
+
632
+ See Also
633
+ --------
634
+ mt.partition : Return a partitioned copy of an tensor.
635
+ argpartition : Indirect partition.
636
+ sort : Full sort.
637
+
638
+ Notes
639
+ -----
640
+ See ``mt.partition`` for notes on the different algorithms.
641
+
642
+ Examples
643
+ --------
644
+ >>> import maxframe.tensor as mt
645
+ >>> a = mt.array([3, 4, 2, 1])
646
+ >>> a.partition(3)
647
+ >>> a.execute()
648
+ array([2, 1, 3, 4])
649
+
650
+ >>> a.partition((1, 3))
651
+ >>> a.execute()
652
+ array([1, 2, 3, 4])
653
+ """
654
+ from .base import partition
655
+
656
+ self._data = partition(self, kth, axis=axis, kind=kind, order=order, **kw).data
657
+
658
+ @property
659
+ def flat(self):
660
+ """
661
+ Flat iterator object to iterate over arrays.
662
+
663
+ A `flatiter` iterator is returned by ``x.flat`` for any tensor `x`.
664
+ It allows iterating over the tensor as if it were a 1-D array,
665
+ either in a for-loop or by calling its `next` method.
666
+
667
+ Iteration is done in row-major, C-style order (the last
668
+ index varying the fastest). The iterator can also be indexed using
669
+ basic slicing or advanced indexing.
670
+
671
+ See Also
672
+ --------
673
+ Tensor.flat : Return a flat iterator over a tensor.
674
+ Tensor.flatten : Returns a flattened copy of a tensor.
675
+
676
+ Examples
677
+ --------
678
+ >>> import maxframe.tensor as mt
679
+
680
+ >>> x = mt.arange(6).reshape(2, 3)
681
+ >>> fl = x.flat
682
+
683
+ >>> fl[2:4].execute()
684
+ array([2, 3])
685
+ """
686
+ return self._data.flat
687
+
688
+ def from_dataframe(self, in_df):
689
+ return self._data.from_dataframe(in_df)
690
+
691
+ def to_dataframe(self, *args, **kwargs):
692
+ return self._data.to_dataframe(*args, **kwargs)
693
+
694
+ def to_numpy(self, session=None, **kw):
695
+ return self._data.to_numpy(session, **kw)
696
+
697
+
698
+ SparseTensor = Tensor
699
+
700
+
701
+ class flatiter(object):
702
+ def __init__(self, tensor):
703
+ # flatten creates a copy
704
+ self._flatten_tensor = tensor.flatten()
705
+ # ravel creates a view
706
+ self._ravel_tensor = tensor.ravel()
707
+
708
+ def __getitem__(self, item):
709
+ # a.flat[item] create a copy
710
+ return self._flatten_tensor[item]
711
+
712
+ def __setitem__(self, key, value):
713
+ # a.flat[item] = value will apply changes to original tensor
714
+ self._ravel_tensor[key] = value
715
+
716
+
717
+ class Indexes(Serializable):
718
+ indexes = AnyField("indexes")
719
+
720
+
721
+ TENSOR_TYPE = (Tensor, TensorData)
722
+
723
+ register_output_types(OutputType.tensor, TENSOR_TYPE)
724
+ register_output_types(OutputType.scalar, TENSOR_TYPE)