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,182 @@
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 time
16
+ from io import BytesIO
17
+
18
+ import mock
19
+ import pytest
20
+
21
+ from .. import oss
22
+ from .._oss_lib import glob as og
23
+ from .._oss_lib.common import OSSFileEntry
24
+ from ..oss import build_oss_path
25
+
26
+
27
+ class OSSObjInfo:
28
+ def __init__(self, name, content):
29
+ self.key = name
30
+ # Use the current time as "Last-Modified" in the test.
31
+ self.last_modified = int(time.time())
32
+ self.size = len(content.encode("utf8"))
33
+
34
+
35
+ class ObjectMeta:
36
+ def __init__(self, key, obj_dict):
37
+ self.headers = {}
38
+ self.headers["Last-Modified"] = int(time.time())
39
+ self.headers["Content-Length"] = len(obj_dict[key].encode("utf8"))
40
+
41
+
42
+ class MockObject:
43
+ def __init__(self, obj_dict, key, byte_range):
44
+ self._stream = BytesIO(obj_dict[key].encode("utf8"))
45
+ self._byte_range = byte_range
46
+
47
+ def read(self):
48
+ self._stream.seek(self._byte_range[0])
49
+ if self._byte_range[1] is None:
50
+ return self._stream.read()
51
+ else:
52
+ size = self._byte_range[1] - self._byte_range[0] + 1
53
+ return self._stream.read(size)
54
+
55
+
56
+ class SideEffectBucket:
57
+ def __init__(self, *_, **__):
58
+ self.obj_dict = {
59
+ "file.csv": "id1,id2,id3\n1,2,3\n",
60
+ "dir/": "",
61
+ "dir/file1.csv": "2",
62
+ "dir/file2.csv": "3",
63
+ "dir/subdir/": "",
64
+ "dir/subdir/file3.csv": "s4",
65
+ "dir/subdir/file4.csv": "s5",
66
+ "dir2/": "",
67
+ "dir2/file6.csv": "6",
68
+ "dir2/file7.csv": "7",
69
+ }
70
+
71
+ def get_object_meta(self, key):
72
+ return ObjectMeta(key, self.obj_dict)
73
+
74
+ def object_exists(self, key):
75
+ return key in self.obj_dict.keys()
76
+
77
+ def get_object(self, key, byte_range):
78
+ return MockObject(self.obj_dict, key, byte_range)
79
+
80
+
81
+ class SideEffectObjIter:
82
+ def __init__(self, *args, **kwargs):
83
+ self.bucket = args[0]
84
+ self.prefix = kwargs["prefix"]
85
+
86
+ def __iter__(self):
87
+ for name, content in self.bucket.obj_dict.items():
88
+ if name.startswith(self.prefix):
89
+ yield OSSObjInfo(name, content)
90
+
91
+
92
+ @mock.patch("oss2.Bucket", side_effect=SideEffectBucket)
93
+ @mock.patch("oss2.ObjectIteratorV2", side_effect=SideEffectObjIter)
94
+ def test_oss_filesystem(fake_obj_iter, fake_oss_bucket):
95
+ access_key_id = "your_access_key_id"
96
+ access_key_secret = "your_access_key_secret"
97
+ end_point = "your_endpoint"
98
+
99
+ file_path = f"oss://bucket/file.csv"
100
+ dir_path = f"oss://bucket/dir/"
101
+ dir_path_content_magic = f"oss://bucket/dir*/"
102
+ other_scheme_path = f"scheme://netloc/path"
103
+ not_exist_file_path = f"oss://bucket/not_exist.csv"
104
+
105
+ fake_file_path = build_oss_path(
106
+ file_path, access_key_id, access_key_secret, end_point
107
+ )
108
+ fake_dir_path = build_oss_path(
109
+ dir_path, access_key_id, access_key_secret, end_point
110
+ )
111
+ fake_dir_path_contains_magic = build_oss_path(
112
+ dir_path_content_magic, access_key_id, access_key_secret, end_point
113
+ )
114
+ fake_other_scheme_path = build_oss_path(
115
+ other_scheme_path, access_key_id, access_key_secret, end_point
116
+ )
117
+ fake_not_exist_file_path = build_oss_path(
118
+ not_exist_file_path, access_key_id, access_key_secret, end_point
119
+ )
120
+ fs = oss.OSSFileSystem.get_instance()
121
+
122
+ # Test OSSFileSystem.
123
+ assert len(fs.ls(fake_dir_path)) == 4
124
+ assert not fs.isfile(fake_dir_path)
125
+ assert fs.isdir(fake_dir_path)
126
+ assert not fs.isdir(fake_file_path)
127
+ assert fs.isfile(fake_file_path)
128
+ assert fs.exists(fake_file_path)
129
+ assert not fs.exists(fake_not_exist_file_path)
130
+ assert fs.stat(fake_file_path)["type"] == "file"
131
+ assert fs.stat(fake_dir_path)["type"] == "directory"
132
+ assert fs.glob(fake_dir_path) == [fake_dir_path]
133
+
134
+ with pytest.raises(ValueError) as e:
135
+ fs.exists(fake_other_scheme_path)
136
+ msg1 = e.value.args[0]
137
+ assert (
138
+ msg1 == f"Except scheme oss, but got scheme: "
139
+ f"scheme in path: {fake_other_scheme_path}"
140
+ )
141
+
142
+ with pytest.raises(RuntimeError) as e:
143
+ fs.exists(file_path)
144
+ msg2 = e.value.args[0]
145
+ assert msg2 == "Please use build_oss_path to add OSS info"
146
+
147
+ with pytest.raises(OSError):
148
+ print(fs.ls(fake_file_path))
149
+
150
+ assert len(fs.glob(fake_file_path)) == 1
151
+ assert len(fs.glob(fake_dir_path + "*", recursive=True)) == 4
152
+ assert len(fs.glob(fake_dir_path_contains_magic)) == 2
153
+
154
+ # Test the specific functions of glob.
155
+ assert og.has_magic(b"*")
156
+ assert og.escape(b"*") == b"[*]"
157
+ assert og.escape("*") == "[*]"
158
+
159
+ # test OSSIOBase
160
+ with fs.open(fake_file_path) as f:
161
+ assert f.readline() == b"id1,id2,id3\n"
162
+ assert f.readline() == b"1,2,3\n"
163
+ f.seek(-1, 2)
164
+ assert f.readline() == b"\n"
165
+ with pytest.raises(AttributeError):
166
+ f.fileno()
167
+ with pytest.raises(OSError):
168
+ f.seek(-1)
169
+ with pytest.raises(OSError):
170
+ f.seek(-100, 1)
171
+ with pytest.raises(ValueError):
172
+ f.seek(1, 3)
173
+ f.seek(0)
174
+ assert f.read() == b"id1,id2,id3\n1,2,3\n"
175
+ f.seek(0)
176
+ assert f.readline(2) == b"id"
177
+ f.seek(0)
178
+ with pytest.raises(TypeError):
179
+ f.readline("2")
180
+
181
+ fe = OSSFileEntry(fake_file_path)
182
+ assert fe.path == fake_file_path
@@ -0,0 +1,81 @@
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
+ """
16
+ Backported functools APIs from Python 3.8
17
+ """
18
+
19
+ from typing import List
20
+
21
+ __all__ = ["cached_property"]
22
+
23
+ # Avoid importing types, so we can speedup import time
24
+ GenericAlias = type(List[int])
25
+
26
+ _NOT_FOUND = object()
27
+
28
+
29
+ class cached_property:
30
+ def __init__(self, func):
31
+ self.func = func
32
+ self.attrname = None
33
+ self.__doc__ = func.__doc__
34
+ self.__module__ = func.__module__
35
+
36
+ def __set_name__(self, owner, name):
37
+ if self.attrname is None:
38
+ self.attrname = name
39
+ elif name != self.attrname:
40
+ raise TypeError(
41
+ "Cannot assign the same cached_property to two different names "
42
+ f"({self.attrname!r} and {name!r})."
43
+ )
44
+
45
+ def __get__(self, instance, owner=None):
46
+ if instance is None:
47
+ return self
48
+ if self.attrname is None:
49
+ raise TypeError(
50
+ "Cannot use cached_property instance without calling __set_name__ on it."
51
+ )
52
+ try:
53
+ cache = instance.__dict__
54
+ except (
55
+ AttributeError
56
+ ): # not all objects have __dict__ (e.g. class defines slots)
57
+ msg = (
58
+ f"No '__dict__' attribute on {type(instance).__name__!r} "
59
+ f"instance to cache {self.attrname!r} property."
60
+ )
61
+ raise TypeError(msg) from None
62
+ val = cache.get(self.attrname, _NOT_FOUND)
63
+ if val is _NOT_FOUND:
64
+ val = self.func(instance)
65
+ try:
66
+ cache[self.attrname] = val
67
+ except TypeError:
68
+ msg = (
69
+ f"The '__dict__' attribute on {type(instance).__name__!r} instance "
70
+ f"does not support item assignment for caching {self.attrname!r} property."
71
+ )
72
+ raise TypeError(msg) from None
73
+ return val
74
+
75
+ __class_getitem__ = classmethod(GenericAlias)
76
+
77
+
78
+ try:
79
+ from functools import cached_property # noqa: F811
80
+ except ImportError:
81
+ pass
Binary file
@@ -0,0 +1,339 @@
1
+ //-----------------------------------------------------------------------------
2
+ // MurmurHash3 was written by Austin Appleby, and is placed in the public
3
+ // domain. The author hereby disclaims copyright to this source code.
4
+
5
+ // Note - The x86 and x64 versions do _not_ produce the same results, as the
6
+ // algorithms are optimized for their respective platforms. You can still
7
+ // compile and run any of them on any platform, but your performance with the
8
+ // non-native version will be less than optimal.
9
+
10
+ #include "MurmurHash3.h"
11
+
12
+ //-----------------------------------------------------------------------------
13
+ // Platform-specific functions and macros
14
+
15
+ // Microsoft Visual Studio
16
+
17
+ #if defined(_MSC_VER)
18
+
19
+ #define FORCE_INLINE __forceinline
20
+
21
+ #include <stdlib.h>
22
+
23
+ #define ROTL32(x,y) _rotl(x,y)
24
+ #define ROTL64(x,y) _rotl64(x,y)
25
+
26
+ #define BIG_CONSTANT(x) (x)
27
+
28
+ // Other compilers
29
+
30
+ #else // defined(_MSC_VER)
31
+
32
+ #if defined(__GNUC__) && ((__GNUC__ > 4) || (__GNUC__ == 4 && GNUC_MINOR >= 4))
33
+ /* gcc version >= 4.4 4.1 = RHEL 5, 4.4 = RHEL 6. Don't inline for RHEL 5 gcc which is 4.1*/
34
+ #define FORCE_INLINE inline __attribute__((always_inline))
35
+ #else
36
+ #define FORCE_INLINE
37
+ #endif
38
+
39
+ inline uint32_t rotl32 ( uint32_t x, int8_t r )
40
+ {
41
+ return (x << r) | (x >> (32 - r));
42
+ }
43
+
44
+ inline uint64_t rotl64 ( uint64_t x, int8_t r )
45
+ {
46
+ return (x << r) | (x >> (64 - r));
47
+ }
48
+
49
+ #define ROTL32(x,y) rotl32(x,y)
50
+ #define ROTL64(x,y) rotl64(x,y)
51
+
52
+ #define BIG_CONSTANT(x) (x##LLU)
53
+
54
+ #endif // !defined(_MSC_VER)
55
+
56
+ //-----------------------------------------------------------------------------
57
+ // Block read - if your platform needs to do endian-swapping or can only
58
+ // handle aligned reads, do the conversion here
59
+
60
+ FORCE_INLINE uint32_t getblock ( const uint32_t * p, int i )
61
+ {
62
+ return p[i];
63
+ }
64
+
65
+ FORCE_INLINE uint64_t getblock ( const uint64_t * p, int i )
66
+ {
67
+ return p[i];
68
+ }
69
+
70
+ //-----------------------------------------------------------------------------
71
+ // Finalization mix - force all bits of a hash block to avalanche
72
+
73
+ FORCE_INLINE uint32_t fmix ( uint32_t h )
74
+ {
75
+ h ^= h >> 16;
76
+ h *= 0x85ebca6b;
77
+ h ^= h >> 13;
78
+ h *= 0xc2b2ae35;
79
+ h ^= h >> 16;
80
+
81
+ return h;
82
+ }
83
+
84
+ //----------
85
+
86
+ FORCE_INLINE uint64_t fmix ( uint64_t k )
87
+ {
88
+ k ^= k >> 33;
89
+ k *= BIG_CONSTANT(0xff51afd7ed558ccd);
90
+ k ^= k >> 33;
91
+ k *= BIG_CONSTANT(0xc4ceb9fe1a85ec53);
92
+ k ^= k >> 33;
93
+
94
+ return k;
95
+ }
96
+
97
+ //-----------------------------------------------------------------------------
98
+
99
+ void MurmurHash3_x86_32 ( const void * key, Py_ssize_t len,
100
+ uint32_t seed, void * out )
101
+ {
102
+ const uint8_t * data = (const uint8_t*)key;
103
+ const Py_ssize_t nblocks = len / 4;
104
+
105
+ uint32_t h1 = seed;
106
+
107
+ const uint32_t c1 = 0xcc9e2d51;
108
+ const uint32_t c2 = 0x1b873593;
109
+
110
+ //----------
111
+ // body
112
+
113
+ const uint32_t * blocks = (const uint32_t *)(data + nblocks*4);
114
+
115
+ for(Py_ssize_t i = -nblocks; i; i++)
116
+ {
117
+ uint32_t k1 = getblock(blocks,i);
118
+
119
+ k1 *= c1;
120
+ k1 = ROTL32(k1,15);
121
+ k1 *= c2;
122
+
123
+ h1 ^= k1;
124
+ h1 = ROTL32(h1,13);
125
+ h1 = h1*5+0xe6546b64;
126
+ }
127
+
128
+ //----------
129
+ // tail
130
+
131
+ const uint8_t * tail = (const uint8_t*)(data + nblocks*4);
132
+
133
+ uint32_t k1 = 0;
134
+
135
+ switch(len & 3)
136
+ {
137
+ case 3: k1 ^= tail[2] << 16;
138
+ case 2: k1 ^= tail[1] << 8;
139
+ case 1: k1 ^= tail[0];
140
+ k1 *= c1; k1 = ROTL32(k1,15); k1 *= c2; h1 ^= k1;
141
+ };
142
+
143
+ //----------
144
+ // finalization
145
+
146
+ h1 ^= len;
147
+
148
+ h1 = fmix(h1);
149
+
150
+ *(uint32_t*)out = h1;
151
+ }
152
+
153
+ //-----------------------------------------------------------------------------
154
+
155
+ void MurmurHash3_x86_128 ( const void * key, const Py_ssize_t len,
156
+ uint32_t seed, void * out )
157
+ {
158
+ const uint8_t * data = (const uint8_t*)key;
159
+ const Py_ssize_t nblocks = len / 16;
160
+
161
+ uint32_t h1 = seed;
162
+ uint32_t h2 = seed;
163
+ uint32_t h3 = seed;
164
+ uint32_t h4 = seed;
165
+
166
+ const uint32_t c1 = 0x239b961b;
167
+ const uint32_t c2 = 0xab0e9789;
168
+ const uint32_t c3 = 0x38b34ae5;
169
+ const uint32_t c4 = 0xa1e38b93;
170
+
171
+ //----------
172
+ // body
173
+
174
+ const uint32_t * blocks = (const uint32_t *)(data + nblocks*16);
175
+
176
+ for(Py_ssize_t i = -nblocks; i; i++)
177
+ {
178
+ uint32_t k1 = getblock(blocks,i*4+0);
179
+ uint32_t k2 = getblock(blocks,i*4+1);
180
+ uint32_t k3 = getblock(blocks,i*4+2);
181
+ uint32_t k4 = getblock(blocks,i*4+3);
182
+
183
+ k1 *= c1; k1 = ROTL32(k1,15); k1 *= c2; h1 ^= k1;
184
+
185
+ h1 = ROTL32(h1,19); h1 += h2; h1 = h1*5+0x561ccd1b;
186
+
187
+ k2 *= c2; k2 = ROTL32(k2,16); k2 *= c3; h2 ^= k2;
188
+
189
+ h2 = ROTL32(h2,17); h2 += h3; h2 = h2*5+0x0bcaa747;
190
+
191
+ k3 *= c3; k3 = ROTL32(k3,17); k3 *= c4; h3 ^= k3;
192
+
193
+ h3 = ROTL32(h3,15); h3 += h4; h3 = h3*5+0x96cd1c35;
194
+
195
+ k4 *= c4; k4 = ROTL32(k4,18); k4 *= c1; h4 ^= k4;
196
+
197
+ h4 = ROTL32(h4,13); h4 += h1; h4 = h4*5+0x32ac3b17;
198
+ }
199
+
200
+ //----------
201
+ // tail
202
+
203
+ const uint8_t * tail = (const uint8_t*)(data + nblocks*16);
204
+
205
+ uint32_t k1 = 0;
206
+ uint32_t k2 = 0;
207
+ uint32_t k3 = 0;
208
+ uint32_t k4 = 0;
209
+
210
+ switch(len & 15)
211
+ {
212
+ case 15: k4 ^= tail[14] << 16;
213
+ case 14: k4 ^= tail[13] << 8;
214
+ case 13: k4 ^= tail[12] << 0;
215
+ k4 *= c4; k4 = ROTL32(k4,18); k4 *= c1; h4 ^= k4;
216
+
217
+ case 12: k3 ^= tail[11] << 24;
218
+ case 11: k3 ^= tail[10] << 16;
219
+ case 10: k3 ^= tail[ 9] << 8;
220
+ case 9: k3 ^= tail[ 8] << 0;
221
+ k3 *= c3; k3 = ROTL32(k3,17); k3 *= c4; h3 ^= k3;
222
+
223
+ case 8: k2 ^= tail[ 7] << 24;
224
+ case 7: k2 ^= tail[ 6] << 16;
225
+ case 6: k2 ^= tail[ 5] << 8;
226
+ case 5: k2 ^= tail[ 4] << 0;
227
+ k2 *= c2; k2 = ROTL32(k2,16); k2 *= c3; h2 ^= k2;
228
+
229
+ case 4: k1 ^= tail[ 3] << 24;
230
+ case 3: k1 ^= tail[ 2] << 16;
231
+ case 2: k1 ^= tail[ 1] << 8;
232
+ case 1: k1 ^= tail[ 0] << 0;
233
+ k1 *= c1; k1 = ROTL32(k1,15); k1 *= c2; h1 ^= k1;
234
+ };
235
+
236
+ //----------
237
+ // finalization
238
+
239
+ h1 ^= len; h2 ^= len; h3 ^= len; h4 ^= len;
240
+
241
+ h1 += h2; h1 += h3; h1 += h4;
242
+ h2 += h1; h3 += h1; h4 += h1;
243
+
244
+ h1 = fmix(h1);
245
+ h2 = fmix(h2);
246
+ h3 = fmix(h3);
247
+ h4 = fmix(h4);
248
+
249
+ h1 += h2; h1 += h3; h1 += h4;
250
+ h2 += h1; h3 += h1; h4 += h1;
251
+
252
+ ((uint32_t*)out)[0] = h1;
253
+ ((uint32_t*)out)[1] = h2;
254
+ ((uint32_t*)out)[2] = h3;
255
+ ((uint32_t*)out)[3] = h4;
256
+ }
257
+
258
+ //-----------------------------------------------------------------------------
259
+
260
+ void MurmurHash3_x64_128 ( const void * key, const Py_ssize_t len,
261
+ const uint32_t seed, void * out )
262
+ {
263
+ const uint8_t * data = (const uint8_t*)key;
264
+ const Py_ssize_t nblocks = len / 16;
265
+
266
+ uint64_t h1 = seed;
267
+ uint64_t h2 = seed;
268
+
269
+ const uint64_t c1 = BIG_CONSTANT(0x87c37b91114253d5);
270
+ const uint64_t c2 = BIG_CONSTANT(0x4cf5ad432745937f);
271
+
272
+ //----------
273
+ // body
274
+
275
+ const uint64_t * blocks = (const uint64_t *)(data);
276
+
277
+ for(Py_ssize_t i = 0; i < nblocks; i++)
278
+ {
279
+ uint64_t k1 = getblock(blocks,i*2+0);
280
+ uint64_t k2 = getblock(blocks,i*2+1);
281
+
282
+ k1 *= c1; k1 = ROTL64(k1,31); k1 *= c2; h1 ^= k1;
283
+
284
+ h1 = ROTL64(h1,27); h1 += h2; h1 = h1*5+0x52dce729;
285
+
286
+ k2 *= c2; k2 = ROTL64(k2,33); k2 *= c1; h2 ^= k2;
287
+
288
+ h2 = ROTL64(h2,31); h2 += h1; h2 = h2*5+0x38495ab5;
289
+ }
290
+
291
+ //----------
292
+ // tail
293
+
294
+ const uint8_t * tail = (const uint8_t*)(data + nblocks*16);
295
+
296
+ uint64_t k1 = 0;
297
+ uint64_t k2 = 0;
298
+
299
+ switch(len & 15)
300
+ {
301
+ case 15: k2 ^= uint64_t(tail[14]) << 48;
302
+ case 14: k2 ^= uint64_t(tail[13]) << 40;
303
+ case 13: k2 ^= uint64_t(tail[12]) << 32;
304
+ case 12: k2 ^= uint64_t(tail[11]) << 24;
305
+ case 11: k2 ^= uint64_t(tail[10]) << 16;
306
+ case 10: k2 ^= uint64_t(tail[ 9]) << 8;
307
+ case 9: k2 ^= uint64_t(tail[ 8]) << 0;
308
+ k2 *= c2; k2 = ROTL64(k2,33); k2 *= c1; h2 ^= k2;
309
+
310
+ case 8: k1 ^= uint64_t(tail[ 7]) << 56;
311
+ case 7: k1 ^= uint64_t(tail[ 6]) << 48;
312
+ case 6: k1 ^= uint64_t(tail[ 5]) << 40;
313
+ case 5: k1 ^= uint64_t(tail[ 4]) << 32;
314
+ case 4: k1 ^= uint64_t(tail[ 3]) << 24;
315
+ case 3: k1 ^= uint64_t(tail[ 2]) << 16;
316
+ case 2: k1 ^= uint64_t(tail[ 1]) << 8;
317
+ case 1: k1 ^= uint64_t(tail[ 0]) << 0;
318
+ k1 *= c1; k1 = ROTL64(k1,31); k1 *= c2; h1 ^= k1;
319
+ };
320
+
321
+ //----------
322
+ // finalization
323
+
324
+ h1 ^= len; h2 ^= len;
325
+
326
+ h1 += h2;
327
+ h2 += h1;
328
+
329
+ h1 = fmix(h1);
330
+ h2 = fmix(h2);
331
+
332
+ h1 += h2;
333
+ h2 += h1;
334
+
335
+ ((uint64_t*)out)[0] = h1;
336
+ ((uint64_t*)out)[1] = h2;
337
+ }
338
+
339
+ //-----------------------------------------------------------------------------
@@ -0,0 +1,43 @@
1
+ //-----------------------------------------------------------------------------
2
+ // MurmurHash3 was written by Austin Appleby, and is placed in the public
3
+ // domain. The author hereby disclaims copyright to this source code.
4
+
5
+ #ifndef _MURMURHASH3_H_
6
+ #define _MURMURHASH3_H_
7
+
8
+
9
+ // To handle 64-bit data; see https://docs.python.org/2.7/c-api/arg.html
10
+ #ifndef PY_SSIZE_T_CLEAN
11
+ #define PY_SSIZE_T_CLEAN
12
+ #endif
13
+ #include <Python.h>
14
+
15
+ //-----------------------------------------------------------------------------
16
+ // Platform-specific functions and macros
17
+
18
+ // Microsoft Visual Studio
19
+
20
+ #if defined(_MSC_VER)
21
+ typedef unsigned __int8 uint8_t;
22
+ typedef unsigned __int32 uint32_t;
23
+ typedef unsigned __int64 uint64_t;
24
+
25
+ // Other compilers
26
+
27
+ #else // defined(_MSC_VER)
28
+
29
+ #include <stdint.h>
30
+
31
+ #endif // !defined(_MSC_VER)
32
+
33
+ //-----------------------------------------------------------------------------
34
+
35
+ void MurmurHash3_x86_32 ( const void * key, Py_ssize_t len, uint32_t seed, void * out );
36
+
37
+ void MurmurHash3_x86_128 ( const void * key, Py_ssize_t len, uint32_t seed, void * out );
38
+
39
+ void MurmurHash3_x64_128 ( const void * key, Py_ssize_t len, uint32_t seed, void * out );
40
+
41
+ //-----------------------------------------------------------------------------
42
+
43
+ #endif // _MURMURHASH3_H_