maxframe 0.1.0b5__cp310-cp310-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-310-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-310-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-310-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-310-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,32 @@
1
+ # Copyright 1999-2024 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 .arange import arange
16
+ from .array import (
17
+ ArrayDataSource,
18
+ CSRMatrixDataSource,
19
+ array,
20
+ asarray,
21
+ ascontiguousarray,
22
+ asfortranarray,
23
+ tensor,
24
+ )
25
+ from .empty import TensorEmpty, TensorEmptyLike, empty, empty_like
26
+ from .from_dataframe import from_dataframe, from_index, from_series
27
+ from .from_dense import fromdense
28
+ from .from_sparse import fromsparse
29
+ from .full import full, full_like
30
+ from .ones import TensorOnes, TensorOnesLike, ones, ones_like
31
+ from .scalar import Scalar, scalar
32
+ from .zeros import TensorZeros, zeros
@@ -0,0 +1,156 @@
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 numpy as np
18
+
19
+ from ... import opcodes
20
+ from ...serialization.serializables import AnyField
21
+ from .core import TensorNoInput
22
+
23
+
24
+ class TensorArange(TensorNoInput):
25
+ _op_type_ = opcodes.TENSOR_ARANGE
26
+
27
+ start = AnyField("start")
28
+ stop = AnyField("stop")
29
+ step = AnyField("step")
30
+
31
+ def __init__(self, start=None, stop=None, step=None, dtype=None, **kw):
32
+ if dtype is not None:
33
+ dtype = np.dtype(dtype)
34
+ elif stop is not None and step is not None:
35
+ dtype = (
36
+ np.dtype(dtype)
37
+ if dtype is not None
38
+ else np.arange(0, type(stop)(1), step).dtype
39
+ )
40
+ super().__init__(start=start, stop=stop, step=step, dtype=dtype, **kw)
41
+
42
+
43
+ def arange(*args, **kwargs):
44
+ """
45
+ Return evenly spaced values within a given interval.
46
+
47
+ Values are generated within the half-open interval ``[start, stop)``
48
+ (in other words, the interval including `start` but excluding `stop`).
49
+ For integer arguments the function is equivalent to the Python built-in
50
+ `range <http://docs.python.org/lib/built-in-funcs.html>`_ function,
51
+ but returns a tensor rather than a list.
52
+
53
+ When using a non-integer step, such as 0.1, the results will often not
54
+ be consistent. It is better to use ``linspace`` for these cases.
55
+
56
+ Parameters
57
+ ----------
58
+ start : number, optional
59
+ Start of interval. The interval includes this value. The default
60
+ start value is 0.
61
+ stop : number
62
+ End of interval. The interval does not include this value, except
63
+ in some cases where `step` is not an integer and floating point
64
+ round-off affects the length of `out`.
65
+ step : number, optional
66
+ Spacing between values. For any output `out`, this is the distance
67
+ between two adjacent values, ``out[i+1] - out[i]``. The default
68
+ step size is 1. If `step` is specified as a position argument,
69
+ `start` must also be given.
70
+ dtype : dtype
71
+ The type of the output tensor. If `dtype` is not given, infer the data
72
+ type from the other input arguments.
73
+ gpu : bool, optional
74
+ Allocate the tensor on GPU if True, False as default
75
+
76
+ Returns
77
+ -------
78
+ arange : Tensor
79
+ Tensor of evenly spaced values.
80
+
81
+ For floating point arguments, the length of the result is
82
+ ``ceil((stop - start)/step)``. Because of floating point overflow,
83
+ this rule may result in the last element of `out` being greater
84
+ than `stop`.
85
+
86
+ See Also
87
+ --------
88
+ linspace : Evenly spaced numbers with careful handling of endpoints.
89
+ ogrid: Tensors of evenly spaced numbers in N-dimensions.
90
+ mgrid: Grid-shaped tensors of evenly spaced numbers in N-dimensions.
91
+
92
+ Examples
93
+ --------
94
+ >>> import maxframe.tensor as mt
95
+
96
+ >>> mt.arange(3).execute()
97
+ array([0, 1, 2])
98
+ >>> mt.arange(3.0).execute()
99
+ array([ 0., 1., 2.])
100
+ >>> mt.arange(3,7).execute()
101
+ array([3, 4, 5, 6])
102
+ >>> mt.arange(3,7,2).execute()
103
+ array([3, 5])
104
+ """
105
+ kw_args = [kwargs.get("start"), kwargs.get("stop"), kwargs.get("step")]
106
+ kw_def = any(arg is not None for arg in kw_args)
107
+ dtype = None
108
+ if not kw_def:
109
+ if len(args) == 1:
110
+ start = 0
111
+ stop = args[0]
112
+ step = 1
113
+ elif len(args) == 2:
114
+ start = args[0]
115
+ stop = args[1]
116
+ step = 1
117
+ elif len(args) == 3:
118
+ start, stop, step = args
119
+ elif len(args) == 4:
120
+ start, stop, step, dtype = args
121
+ dtype = np.dtype(dtype)
122
+ else:
123
+ raise TypeError("Required argument 'start' (pos 1) not found")
124
+ else:
125
+ names = "start", "stop", "step"
126
+ for i, arg in enumerate(args):
127
+ if kw_args[i] is not None:
128
+ raise TypeError(
129
+ f"Argument given by name ('{names[i]}') and position ({i})"
130
+ )
131
+ kw_args[i] = arg
132
+ start, stop, step = kw_args
133
+
134
+ if dtype is None:
135
+ if "dtype" in kwargs:
136
+ dtype = np.dtype(kwargs["dtype"])
137
+ else:
138
+ dtype = np.arange(0, type(stop)(1), step).dtype
139
+
140
+ start, stop = dtype.type(start), dtype.type(stop)
141
+ if dtype == np.datetime64 and not start:
142
+ raise ValueError(
143
+ "arange requires both a start and a stop for MaxFrame datetime64 ranges"
144
+ )
145
+ if dtype == np.datetime64:
146
+ span = np.array([stop - start])
147
+ span[0] = step
148
+ step = span[0]
149
+ dtype = np.dtype(stop.dtype)
150
+ else:
151
+ step = dtype.type(step)
152
+ size = max(int(np.ceil(np.true_divide(stop - start, step))), 0)
153
+
154
+ op = TensorArange(start, stop, step, dtype=dtype, gpu=kwargs.get("gpu", False))
155
+ shape = (size,)
156
+ return op(shape, chunk_size=kwargs.pop("chunk_size", None))
@@ -0,0 +1,415 @@
1
+ # Copyright 1999-2024 Alibaba Group Holding Ltd.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ import numpy as np
16
+
17
+ from ... import opcodes
18
+ from ...lib.sparse.core import cp, cps, get_array_module, issparse, sps
19
+ from ...serialization.serializables import (
20
+ AnyField,
21
+ FieldTypes,
22
+ NDArrayField,
23
+ StringField,
24
+ TupleField,
25
+ )
26
+ from ...utils import on_deserialize_shape, on_serialize_shape
27
+ from ..array_utils import is_array, is_cupy
28
+ from ..core import TENSOR_TYPE, Tensor, TensorData, TensorOrder
29
+ from ..utils import get_chunk_slices
30
+ from .core import TensorNoInput
31
+ from .scalar import scalar
32
+
33
+
34
+ class ArrayDataSource(TensorNoInput):
35
+ """
36
+ Represents data from numpy or cupy array
37
+ """
38
+
39
+ _op_type_ = opcodes.TENSOR_DATA_SOURCE
40
+
41
+ data = NDArrayField("data", default=None)
42
+ chunk_size = AnyField("chunk_size", default=None)
43
+ order = StringField("order", default=None)
44
+
45
+ def __init__(self, data=None, dtype=None, gpu=None, **kw):
46
+ if dtype is not None:
47
+ dtype = np.dtype(dtype)
48
+ elif data is not None:
49
+ dtype = np.dtype(data.dtype)
50
+
51
+ if gpu is None and is_cupy(data): # pragma: no cover
52
+ gpu = True
53
+
54
+ super().__init__(data=data, dtype=dtype, gpu=gpu, **kw)
55
+
56
+
57
+ class CSRMatrixDataSource(TensorNoInput):
58
+ """
59
+ Represents data from sparse array include scipy sparse or cupy sparse matrix.
60
+ """
61
+
62
+ _op_type_ = opcodes.SPARSE_MATRIX_DATA_SOURCE
63
+
64
+ indices = NDArrayField("indices")
65
+ indptr = NDArrayField("indptr")
66
+ data = NDArrayField("data")
67
+ shape = TupleField(
68
+ "shape",
69
+ FieldTypes.int64,
70
+ on_serialize=on_serialize_shape,
71
+ on_deserialize=on_deserialize_shape,
72
+ )
73
+ chunk_size = AnyField("chunk_size")
74
+
75
+ def __init__(self, data=None, **kw):
76
+ kw["sparse"] = True
77
+ if is_cupy(data): # pragma: no cover
78
+ kw["gpu"] = True
79
+ super().__init__(data=data, **kw)
80
+
81
+ def to_chunk_op(self, *args):
82
+ _, idx, chunk_size = args
83
+
84
+ xps = cps if self.gpu else sps
85
+ if len(self.shape) == 1:
86
+ shape = (1, self.shape[0])
87
+ else:
88
+ shape = self.shape
89
+ data = xps.csr_matrix((self.data, self.indices, self.indptr), shape)
90
+ chunk_data = data[get_chunk_slices(chunk_size, idx)]
91
+
92
+ chunk_op = self.copy().reset_key()
93
+ chunk_op.data = chunk_data.data
94
+ chunk_op.indices = chunk_data.indices
95
+ chunk_op.indptr = chunk_data.indptr
96
+ chunk_shape = chunk_data.shape[1:] if len(self.shape) == 1 else chunk_data.shape
97
+ chunk_op.shape = chunk_shape
98
+
99
+ return chunk_op
100
+
101
+
102
+ def _from_spmatrix(spmatrix, dtype=None, chunk_size=None, gpu=None):
103
+ if gpu is None:
104
+ m = get_array_module(spmatrix)
105
+ if cp is not None and m is cp:
106
+ gpu = True
107
+ elif cp is np:
108
+ gpu = False
109
+ if dtype and spmatrix.dtype != dtype:
110
+ spmatrix = spmatrix.astype(dtype)
111
+ spmatrix = spmatrix.tocsr()
112
+ op = CSRMatrixDataSource(
113
+ indices=spmatrix.indices,
114
+ indptr=spmatrix.indptr,
115
+ data=spmatrix.data,
116
+ shape=spmatrix.shape,
117
+ dtype=spmatrix.dtype,
118
+ gpu=gpu,
119
+ chunk_size=chunk_size,
120
+ )
121
+ return op(spmatrix.shape, chunk_size=chunk_size)
122
+
123
+
124
+ def tensor(
125
+ data=None, dtype=None, order="K", chunk_size=None, gpu=None, sparse=False
126
+ ) -> Tensor:
127
+ order = order or "K"
128
+ if isinstance(data, TENSOR_TYPE):
129
+ if isinstance(data, TensorData):
130
+ data = Tensor(data)
131
+ return data.astype(dtype or data.dtype, order=order, copy=False)
132
+ elif (
133
+ isinstance(data, (tuple, list))
134
+ and len(data) > 0
135
+ and all(isinstance(d, TENSOR_TYPE) for d in data)
136
+ ):
137
+ from ..merge import stack
138
+
139
+ data = stack(data)
140
+ return data.astype(dtype or data.dtype, order=order, copy=False)
141
+ elif np.isscalar(data):
142
+ return scalar(data, dtype=dtype)
143
+ elif issparse(data):
144
+ return _from_spmatrix(data, dtype=dtype, chunk_size=chunk_size, gpu=gpu)
145
+ elif hasattr(data, "__maxframe_tensor__"):
146
+ return data.__maxframe_tensor__(dtype=dtype, order=order)
147
+ else:
148
+ m = get_array_module(data)
149
+ try:
150
+ data = m.asarray(data, dtype=dtype, order=order)
151
+ except ValueError:
152
+ arr = data.__array__(dtype=dtype)
153
+ if isinstance(arr, TENSOR_TYPE):
154
+ return arr.astype(arr.dtype, order=order, copy=False)
155
+ raise
156
+ if gpu is None:
157
+ if cp is not None and m is cp:
158
+ gpu = True
159
+
160
+ if is_array(data):
161
+ if data.ndim == 0:
162
+ return scalar(data.item(), dtype=dtype)
163
+ tensor_order = (
164
+ TensorOrder.C_ORDER if data.flags["C_CONTIGUOUS"] else TensorOrder.F_ORDER
165
+ )
166
+ op = ArrayDataSource(data, dtype=dtype, gpu=gpu, chunk_size=chunk_size)
167
+ t = op(data.shape, chunk_size=chunk_size, order=tensor_order)
168
+ if sparse and not t.issparse():
169
+ return t.tosparse()
170
+ return t
171
+ else:
172
+ raise ValueError(f"Cannot create tensor by given data: {data}")
173
+
174
+
175
+ def array(x, dtype=None, copy=True, order="K", ndmin=None, chunk_size=None):
176
+ """
177
+ Create a tensor.
178
+
179
+ Parameters
180
+ ----------
181
+ object : array_like
182
+ An array, any object exposing the array interface, an object whose
183
+ __array__ method returns an array, or any (nested) sequence.
184
+ dtype : data-type, optional
185
+ The desired data-type for the array. If not given, then the type will
186
+ be determined as the minimum type required to hold the objects in the
187
+ sequence. This argument can only be used to 'upcast' the array. For
188
+ downcasting, use the .astype(t) method.
189
+ copy : bool, optional
190
+ If true (default), then the object is copied. Otherwise, a copy will
191
+ only be made if __array__ returns a copy, if obj is a nested sequence,
192
+ or if a copy is needed to satisfy any of the other requirements
193
+ (`dtype`, `order`, etc.).
194
+ order : {'K', 'A', 'C', 'F'}, optional
195
+ Specify the memory layout of the array. If object is not an array, the
196
+ newly created array will be in C order (row major) unless 'F' is
197
+ specified, in which case it will be in Fortran order (column major).
198
+ If object is an array the following holds.
199
+
200
+ ===== ========= ===================================================
201
+ order no copy copy=True
202
+ ===== ========= ===================================================
203
+ 'K' unchanged F & C order preserved, otherwise most similar order
204
+ 'A' unchanged F order if input is F and not C, otherwise C order
205
+ 'C' C order C order
206
+ 'F' F order F order
207
+ ===== ========= ===================================================
208
+
209
+ When ``copy=False`` and a copy is made for other reasons, the result is
210
+ the same as if ``copy=True``, with some exceptions for `A`, see the
211
+ Notes section. The default order is 'K'.
212
+ ndmin : int, optional
213
+ Specifies the minimum number of dimensions that the resulting
214
+ array should have. Ones will be prepended to the shape as
215
+ needed to meet this requirement.
216
+ chunk_size: int, tuple, optional
217
+ Specifies chunk size for each dimension.
218
+
219
+ Returns
220
+ -------
221
+ out : Tensor
222
+ An tensor object satisfying the specified requirements.
223
+
224
+ See Also
225
+ --------
226
+ empty, empty_like, zeros, zeros_like, ones, ones_like, full, full_like
227
+
228
+ Examples
229
+ --------
230
+ >>> import maxframe.tensor as mt
231
+
232
+ >>> mt.array([1, 2, 3]).execute()
233
+ array([1, 2, 3])
234
+
235
+ Upcasting:
236
+
237
+ >>> mt.array([1, 2, 3.0]).execute()
238
+ array([ 1., 2., 3.])
239
+
240
+ More than one dimension:
241
+
242
+ >>> mt.array([[1, 2], [3, 4]]).execute()
243
+ array([[1, 2],
244
+ [3, 4]])
245
+
246
+ Minimum dimensions 2:
247
+
248
+ >>> mt.array([1, 2, 3], ndmin=2).execute()
249
+ array([[1, 2, 3]])
250
+
251
+ Type provided:
252
+
253
+ >>> mt.array([1, 2, 3], dtype=complex).execute()
254
+ array([ 1.+0.j, 2.+0.j, 3.+0.j])
255
+
256
+ """
257
+ raw_x = x
258
+ order = order or "K"
259
+ x = tensor(x, dtype=dtype, order=order, chunk_size=chunk_size)
260
+ while ndmin is not None and x.ndim < ndmin:
261
+ x = x[np.newaxis]
262
+
263
+ if copy and x is raw_x:
264
+ x = x.copy(order=order)
265
+ elif (
266
+ not copy
267
+ and isinstance(raw_x, TENSOR_TYPE)
268
+ and raw_x.dtype == x.dtype
269
+ and raw_x.order == x.order
270
+ and raw_x.shape == x.shape
271
+ and raw_x is not x
272
+ and hasattr(raw_x, "data")
273
+ ):
274
+ raw_x.data = x.data
275
+
276
+ return x
277
+
278
+
279
+ def asarray(x, dtype=None, order=None, chunk_size=None):
280
+ """Convert the input to an array.
281
+
282
+ Parameters
283
+ ----------
284
+ a : array_like
285
+ Input data, in any form that can be converted to a tensor. This
286
+ includes lists, lists of tuples, tuples, tuples of tuples, tuples
287
+ of lists and tensors.
288
+ dtype : data-type, optional
289
+ By default, the data-type is inferred from the input data.
290
+ order : {'C', 'F'}, optional
291
+ Whether to use row-major (C-style) or
292
+ column-major (Fortran-style) memory representation.
293
+ chunk_size: int, tuple, optional
294
+ Specifies chunk size for each dimension.
295
+
296
+ Returns
297
+ -------
298
+ out : Tensor
299
+ Tensor interpretation of `a`. No copy is performed if the input
300
+ is already an ndarray with matching dtype and order. If `a` is a
301
+ subclass of ndarray, a base class ndarray is returned.
302
+
303
+ See Also
304
+ --------
305
+ ascontiguousarray : Convert input to a contiguous tensor.
306
+ asfortranarray : Convert input to a tensor with column-major
307
+ memory order.
308
+
309
+ Examples
310
+ --------
311
+ Convert a list into a tensor:
312
+
313
+ >>> import maxframe.tensor as mt
314
+
315
+ >>> a = [1, 2]
316
+ >>> mt.asarray(a).execute()
317
+ array([1, 2])
318
+
319
+ Existing arrays are not copied:
320
+
321
+ >>> a = mt.array([1, 2])
322
+ >>> mt.asarray(a) is a
323
+ True
324
+
325
+ If `dtype` is set, array is copied only if dtype does not match:
326
+
327
+ >>> a = mt.array([1, 2], dtype=mt.float32)
328
+ >>> mt.asarray(a, dtype=mt.float32) is a
329
+ True
330
+ >>> mt.asarray(a, dtype=mt.float64) is a
331
+ False
332
+ """
333
+ return array(x, dtype=dtype, copy=False, order=order, chunk_size=chunk_size)
334
+
335
+
336
+ def ascontiguousarray(a, dtype=None, chunk_size=None):
337
+ """
338
+ Return a contiguous tensor (ndim >= 1) in memory (C order).
339
+
340
+ Parameters
341
+ ----------
342
+ a : array_like
343
+ Input tensor.
344
+ dtype : str or dtype object, optional
345
+ Data-type of returned tensor.
346
+ chunk_size: int, tuple, optional
347
+ Specifies chunk size for each dimension.
348
+
349
+ Returns
350
+ -------
351
+ out : Tensor
352
+ Contiguous tensor of same shape and content as `a`, with type `dtype`
353
+ if specified.
354
+
355
+ See Also
356
+ --------
357
+ asfortranarray : Convert input to a tensor with column-major
358
+ memory order.
359
+ Tensor.flags : Information about the memory layout of the tensor.
360
+
361
+ Examples
362
+ --------
363
+ >>> import maxframe.tensor as mt
364
+ >>> x = mt.arange(6).reshape(2,3)
365
+ >>> mt.ascontiguousarray(x, dtype=mt.float32)
366
+ array([[ 0., 1., 2.],
367
+ [ 3., 4., 5.]], dtype=float32)
368
+ >>> x.flags['C_CONTIGUOUS']
369
+ True
370
+
371
+ Note: This function returns a tensor with at least one-dimension (1-d)
372
+ so it will not preserve 0-d tensors.
373
+
374
+ """
375
+
376
+ return array(a, dtype, copy=False, order="C", ndmin=1, chunk_size=chunk_size)
377
+
378
+
379
+ def asfortranarray(a, dtype=None, chunk_size=None):
380
+ """
381
+ Return a tensor (ndim >= 1) laid out in Fortran order in memory.
382
+
383
+ Parameters
384
+ ----------
385
+ a : array_like
386
+ Input tensor.
387
+ dtype : str or dtype object, optional
388
+ By default, the data-type is inferred from the input data.
389
+ chunk_size: int, tuple, optional
390
+ Specifies chunk size for each dimension.
391
+
392
+ Returns
393
+ -------
394
+ out : Tensor
395
+ The input `a` in Fortran, or column-major, order.
396
+
397
+ See Also
398
+ --------
399
+ ascontiguousarray : Convert input to a contiguous (C order) tensor.
400
+
401
+ Examples
402
+ --------
403
+ >>> import maxframe.tensor as mt
404
+ >>> x = mt.arange(6).reshape(2,3)
405
+ >>> y = mt.asfortranarray(x)
406
+ >>> x.flags['F_CONTIGUOUS']
407
+ False
408
+ >>> y.flags['F_CONTIGUOUS']
409
+ True
410
+
411
+ Note: This function returns a tensor with at least one-dimension (1-d)
412
+ so it will not preserve 0-d tensors.
413
+
414
+ """
415
+ return array(a, dtype, copy=False, order="F", ndmin=1, chunk_size=chunk_size)
@@ -0,0 +1,109 @@
1
+ # Copyright 1999-2024 Alibaba Group Holding Ltd.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ import numpy as np
16
+
17
+ from ...serialization.serializables import FieldTypes, StringField, TupleField
18
+ from ..core import TensorOrder
19
+ from ..operators import TensorOperator, TensorOperatorMixin
20
+ from ..utils import normalize_shape
21
+
22
+
23
+ class TensorDataSource(TensorOperator, TensorOperatorMixin):
24
+ """
25
+ Tensor data source base class, provide universal tile logic,
26
+ subclass can overwrite tile method.
27
+ """
28
+
29
+ __slots__ = ()
30
+
31
+
32
+ class TensorNoInput(TensorDataSource):
33
+ """
34
+ Tensor operator with no inputs.
35
+ """
36
+
37
+ def check_inputs(self, inputs):
38
+ # no inputs
39
+ if inputs and len(inputs) > 0:
40
+ raise ValueError("Tensor data source has no inputs")
41
+
42
+ def _new_tileables(self, inputs, kws=None, **kw):
43
+ shape = kw.get("shape", None)
44
+ self.extra_params[
45
+ "shape"
46
+ ] = shape # set shape to make the operator key different
47
+ return super()._new_tileables(inputs, kws=kws, **kw)
48
+
49
+ def __call__(self, shape, chunk_size=None, order=None):
50
+ shape = normalize_shape(shape)
51
+ order = TensorOrder.C_ORDER if order is None else order
52
+ return self.new_tensor(None, shape, raw_chunk_size=chunk_size, order=order)
53
+
54
+
55
+ class TensorHasInput(TensorDataSource):
56
+ """
57
+ Tensor operator with a single input.
58
+ """
59
+
60
+ @property
61
+ def input(self):
62
+ return self._input
63
+
64
+ def check_inputs(self, inputs):
65
+ # no inputs
66
+ if len(inputs) != 1:
67
+ raise ValueError("Tensor can only have 1 input")
68
+
69
+ def _set_inputs(self, inputs):
70
+ super()._set_inputs(inputs)
71
+ self._input = self._inputs[0]
72
+
73
+ def __call__(self, a, order=None):
74
+ order = a.order if order is None else order
75
+ return self.new_tensor([a], a.shape, order=order)
76
+
77
+
78
+ class TensorLike(TensorHasInput):
79
+ def _set_inputs(self, inputs):
80
+ super()._set_inputs(inputs)
81
+ if self.dtype is None:
82
+ self.dtype = self.input.dtype
83
+ if self.gpu is None:
84
+ self.gpu = self.input.op.gpu
85
+
86
+ # FIXME: remove when cupy supports other dtypes
87
+ if self.gpu and self.dtype not in (np.float32, np.float64):
88
+ raise NotImplementedError(
89
+ "Sparse tensor on GPU only supports float32 and float64"
90
+ )
91
+
92
+
93
+ class TensorFromHDF5Like(TensorNoInput):
94
+ filename = StringField("filename", default=None)
95
+ group = StringField("group", default=None)
96
+ dataset = StringField("dataset", default=None)
97
+ axis_offsets = TupleField("axis_offsets", FieldTypes.int64, default=None)
98
+
99
+ @property
100
+ def path(self):
101
+ return self.get_path(self.group, self.dataset)
102
+
103
+ @staticmethod
104
+ def get_path(group, dataset):
105
+ paths = []
106
+ if group:
107
+ paths.append(group)
108
+ paths.append(dataset)
109
+ return "/".join(paths)