maxframe 1.1.1__cp39-cp39-macosx_10_9_universal2.whl → 1.2.1__cp39-cp39-macosx_10_9_universal2.whl

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

Potentially problematic release.


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

Files changed (690) hide show
  1. maxframe/__init__.py +1 -1
  2. maxframe/_utils.cpython-39-darwin.so +0 -0
  3. maxframe/_utils.pxd +1 -1
  4. maxframe/_utils.pyx +1 -1
  5. maxframe/codegen.py +14 -7
  6. maxframe/config/__init__.py +1 -1
  7. maxframe/config/config.py +10 -1
  8. maxframe/config/tests/__init__.py +1 -1
  9. maxframe/config/tests/test_config.py +1 -1
  10. maxframe/config/tests/test_validators.py +1 -1
  11. maxframe/config/validators.py +1 -1
  12. maxframe/conftest.py +1 -1
  13. maxframe/core/__init__.py +2 -1
  14. maxframe/core/accessor.py +44 -0
  15. maxframe/core/base.py +1 -1
  16. maxframe/core/entity/__init__.py +1 -1
  17. maxframe/core/entity/core.py +1 -1
  18. maxframe/core/entity/executable.py +1 -1
  19. maxframe/core/entity/objects.py +1 -1
  20. maxframe/core/entity/output_types.py +1 -1
  21. maxframe/core/entity/tests/__init__.py +1 -1
  22. maxframe/core/entity/tests/test_objects.py +1 -1
  23. maxframe/core/entity/tileables.py +1 -1
  24. maxframe/core/entity/utils.py +1 -1
  25. maxframe/core/graph/__init__.py +1 -1
  26. maxframe/core/graph/builder/__init__.py +1 -1
  27. maxframe/core/graph/builder/base.py +1 -1
  28. maxframe/core/graph/builder/tileable.py +1 -1
  29. maxframe/core/graph/builder/utils.py +1 -1
  30. maxframe/core/graph/core.cpython-39-darwin.so +0 -0
  31. maxframe/core/graph/core.pyx +1 -1
  32. maxframe/core/graph/entity.py +1 -1
  33. maxframe/core/graph/tests/__init__.py +1 -1
  34. maxframe/core/graph/tests/test_graph.py +1 -1
  35. maxframe/core/mode.py +1 -1
  36. maxframe/core/operator/__init__.py +1 -1
  37. maxframe/core/operator/base.py +1 -1
  38. maxframe/core/operator/core.py +1 -1
  39. maxframe/core/operator/fetch.py +1 -1
  40. maxframe/core/operator/objects.py +1 -1
  41. maxframe/core/operator/shuffle.py +1 -1
  42. maxframe/core/operator/tests/__init__.py +1 -1
  43. maxframe/core/operator/tests/test_core.py +1 -1
  44. maxframe/core/operator/utils.py +1 -1
  45. maxframe/core/tests/__init__.py +1 -1
  46. maxframe/core/tests/test_mode.py +1 -1
  47. maxframe/dataframe/__init__.py +3 -3
  48. maxframe/dataframe/accessors/__init__.py +15 -0
  49. maxframe/dataframe/accessors/datetime_/__init__.py +32 -0
  50. maxframe/dataframe/accessors/datetime_/accessor.py +67 -0
  51. maxframe/dataframe/{misc/datetimes.py → accessors/datetime_/core.py} +9 -9
  52. maxframe/dataframe/{plotting → accessors/datetime_}/tests/__init__.py +1 -1
  53. maxframe/dataframe/accessors/datetime_/tests/test_datetime_accessor.py +41 -0
  54. maxframe/dataframe/accessors/dict_/__init__.py +43 -0
  55. maxframe/dataframe/accessors/dict_/accessor.py +38 -0
  56. maxframe/dataframe/accessors/dict_/contains.py +81 -0
  57. maxframe/dataframe/accessors/dict_/getitem.py +144 -0
  58. maxframe/dataframe/accessors/dict_/length.py +72 -0
  59. maxframe/dataframe/accessors/dict_/remove.py +87 -0
  60. maxframe/dataframe/accessors/dict_/setitem.py +88 -0
  61. maxframe/dataframe/accessors/dict_/tests/__init__.py +13 -0
  62. maxframe/dataframe/accessors/dict_/tests/test_dict_accessor.py +130 -0
  63. maxframe/dataframe/{plotting → accessors/plotting}/__init__.py +4 -6
  64. maxframe/dataframe/{plotting → accessors/plotting}/core.py +3 -3
  65. maxframe/dataframe/accessors/plotting/tests/__init__.py +13 -0
  66. maxframe/dataframe/{plotting/tests/test_plotting.py → accessors/plotting/tests/test_plotting_accessor.py} +6 -6
  67. maxframe/dataframe/accessors/string_/__init__.py +32 -0
  68. maxframe/dataframe/{misc → accessors/string_}/accessor.py +4 -65
  69. maxframe/dataframe/{misc/string_.py → accessors/string_/core.py} +20 -20
  70. maxframe/dataframe/accessors/string_/tests/__init__.py +13 -0
  71. maxframe/dataframe/accessors/string_/tests/test_string_accessor.py +73 -0
  72. maxframe/dataframe/arithmetic/__init__.py +1 -1
  73. maxframe/dataframe/arithmetic/abs.py +1 -1
  74. maxframe/dataframe/arithmetic/add.py +1 -1
  75. maxframe/dataframe/arithmetic/arccos.py +1 -1
  76. maxframe/dataframe/arithmetic/arccosh.py +1 -1
  77. maxframe/dataframe/arithmetic/arcsin.py +1 -1
  78. maxframe/dataframe/arithmetic/arcsinh.py +1 -1
  79. maxframe/dataframe/arithmetic/arctan.py +1 -1
  80. maxframe/dataframe/arithmetic/arctanh.py +1 -1
  81. maxframe/dataframe/arithmetic/around.py +1 -1
  82. maxframe/dataframe/arithmetic/bitwise_and.py +1 -1
  83. maxframe/dataframe/arithmetic/bitwise_or.py +1 -1
  84. maxframe/dataframe/arithmetic/bitwise_xor.py +1 -1
  85. maxframe/dataframe/arithmetic/ceil.py +1 -1
  86. maxframe/dataframe/arithmetic/core.py +1 -1
  87. maxframe/dataframe/arithmetic/cos.py +1 -1
  88. maxframe/dataframe/arithmetic/cosh.py +1 -1
  89. maxframe/dataframe/arithmetic/degrees.py +1 -1
  90. maxframe/dataframe/arithmetic/docstring.py +1 -1
  91. maxframe/dataframe/arithmetic/equal.py +1 -1
  92. maxframe/dataframe/arithmetic/exp.py +1 -1
  93. maxframe/dataframe/arithmetic/exp2.py +1 -1
  94. maxframe/dataframe/arithmetic/expm1.py +1 -1
  95. maxframe/dataframe/arithmetic/floor.py +1 -1
  96. maxframe/dataframe/arithmetic/floordiv.py +1 -1
  97. maxframe/dataframe/arithmetic/greater.py +1 -1
  98. maxframe/dataframe/arithmetic/greater_equal.py +1 -1
  99. maxframe/dataframe/arithmetic/invert.py +1 -1
  100. maxframe/dataframe/arithmetic/is_ufuncs.py +1 -1
  101. maxframe/dataframe/arithmetic/less.py +1 -1
  102. maxframe/dataframe/arithmetic/less_equal.py +1 -1
  103. maxframe/dataframe/arithmetic/log.py +1 -1
  104. maxframe/dataframe/arithmetic/log10.py +1 -1
  105. maxframe/dataframe/arithmetic/log2.py +1 -1
  106. maxframe/dataframe/arithmetic/mod.py +1 -1
  107. maxframe/dataframe/arithmetic/multiply.py +1 -1
  108. maxframe/dataframe/arithmetic/negative.py +1 -1
  109. maxframe/dataframe/arithmetic/not_equal.py +1 -1
  110. maxframe/dataframe/arithmetic/power.py +1 -1
  111. maxframe/dataframe/arithmetic/radians.py +1 -1
  112. maxframe/dataframe/arithmetic/sin.py +1 -1
  113. maxframe/dataframe/arithmetic/sinh.py +1 -1
  114. maxframe/dataframe/arithmetic/sqrt.py +1 -1
  115. maxframe/dataframe/arithmetic/subtract.py +1 -1
  116. maxframe/dataframe/arithmetic/tan.py +1 -1
  117. maxframe/dataframe/arithmetic/tanh.py +1 -1
  118. maxframe/dataframe/arithmetic/tests/__init__.py +1 -1
  119. maxframe/dataframe/arithmetic/tests/test_arithmetic.py +1 -1
  120. maxframe/dataframe/arithmetic/truediv.py +1 -1
  121. maxframe/dataframe/arithmetic/trunc.py +1 -1
  122. maxframe/dataframe/arrays.py +1 -1
  123. maxframe/dataframe/core.py +1 -1
  124. maxframe/dataframe/datasource/__init__.py +1 -1
  125. maxframe/dataframe/datasource/core.py +1 -1
  126. maxframe/dataframe/datasource/dataframe.py +1 -1
  127. maxframe/dataframe/datasource/date_range.py +1 -1
  128. maxframe/dataframe/datasource/from_index.py +1 -1
  129. maxframe/dataframe/datasource/from_records.py +1 -1
  130. maxframe/dataframe/datasource/from_tensor.py +1 -1
  131. maxframe/dataframe/datasource/index.py +1 -1
  132. maxframe/dataframe/datasource/read_csv.py +1 -1
  133. maxframe/dataframe/datasource/read_odps_query.py +46 -17
  134. maxframe/dataframe/datasource/read_odps_table.py +1 -1
  135. maxframe/dataframe/datasource/read_parquet.py +1 -1
  136. maxframe/dataframe/datasource/series.py +1 -1
  137. maxframe/dataframe/datasource/tests/__init__.py +1 -1
  138. maxframe/dataframe/datasource/tests/test_datasource.py +59 -8
  139. maxframe/dataframe/datastore/__init__.py +1 -1
  140. maxframe/dataframe/datastore/core.py +1 -1
  141. maxframe/dataframe/datastore/tests/__init__.py +1 -1
  142. maxframe/dataframe/datastore/tests/test_to_odps.py +1 -1
  143. maxframe/dataframe/datastore/to_csv.py +1 -1
  144. maxframe/dataframe/datastore/to_odps.py +1 -1
  145. maxframe/dataframe/extensions/__init__.py +2 -2
  146. maxframe/dataframe/extensions/accessor.py +6 -22
  147. maxframe/dataframe/extensions/apply_chunk.py +86 -1
  148. maxframe/dataframe/extensions/flatjson.py +1 -1
  149. maxframe/dataframe/extensions/flatmap.py +1 -1
  150. maxframe/dataframe/extensions/reshuffle.py +1 -1
  151. maxframe/dataframe/extensions/tests/__init__.py +1 -1
  152. maxframe/dataframe/extensions/tests/test_apply_chunk.py +1 -1
  153. maxframe/dataframe/extensions/tests/test_extensions.py +1 -1
  154. maxframe/dataframe/fetch/__init__.py +1 -1
  155. maxframe/dataframe/fetch/core.py +1 -1
  156. maxframe/dataframe/groupby/__init__.py +1 -1
  157. maxframe/dataframe/groupby/aggregation.py +1 -1
  158. maxframe/dataframe/groupby/apply.py +1 -1
  159. maxframe/dataframe/groupby/core.py +1 -1
  160. maxframe/dataframe/groupby/cum.py +1 -1
  161. maxframe/dataframe/groupby/fill.py +1 -1
  162. maxframe/dataframe/groupby/getitem.py +1 -1
  163. maxframe/dataframe/groupby/head.py +1 -1
  164. maxframe/dataframe/groupby/sample.py +1 -1
  165. maxframe/dataframe/groupby/tests/__init__.py +1 -1
  166. maxframe/dataframe/groupby/tests/test_groupby.py +1 -1
  167. maxframe/dataframe/groupby/transform.py +1 -1
  168. maxframe/dataframe/indexing/__init__.py +1 -1
  169. maxframe/dataframe/indexing/add_prefix_suffix.py +1 -1
  170. maxframe/dataframe/indexing/align.py +1 -1
  171. maxframe/dataframe/indexing/at.py +1 -1
  172. maxframe/dataframe/indexing/getitem.py +1 -1
  173. maxframe/dataframe/indexing/iat.py +1 -1
  174. maxframe/dataframe/indexing/iloc.py +1 -1
  175. maxframe/dataframe/indexing/insert.py +1 -1
  176. maxframe/dataframe/indexing/loc.py +1 -1
  177. maxframe/dataframe/indexing/reindex.py +1 -1
  178. maxframe/dataframe/indexing/rename.py +1 -1
  179. maxframe/dataframe/indexing/rename_axis.py +1 -1
  180. maxframe/dataframe/indexing/reset_index.py +1 -1
  181. maxframe/dataframe/indexing/sample.py +1 -1
  182. maxframe/dataframe/indexing/set_axis.py +1 -1
  183. maxframe/dataframe/indexing/set_index.py +1 -1
  184. maxframe/dataframe/indexing/setitem.py +1 -1
  185. maxframe/dataframe/indexing/tests/__init__.py +1 -1
  186. maxframe/dataframe/indexing/tests/test_indexing.py +1 -1
  187. maxframe/dataframe/indexing/where.py +1 -1
  188. maxframe/dataframe/initializer.py +1 -1
  189. maxframe/dataframe/merge/__init__.py +1 -1
  190. maxframe/dataframe/merge/append.py +1 -1
  191. maxframe/dataframe/merge/concat.py +1 -1
  192. maxframe/dataframe/merge/merge.py +1 -1
  193. maxframe/dataframe/merge/tests/__init__.py +1 -1
  194. maxframe/dataframe/merge/tests/test_merge.py +1 -1
  195. maxframe/dataframe/misc/__init__.py +1 -16
  196. maxframe/dataframe/misc/_duplicate.py +1 -1
  197. maxframe/dataframe/misc/apply.py +74 -1
  198. maxframe/dataframe/misc/astype.py +1 -1
  199. maxframe/dataframe/misc/case_when.py +1 -1
  200. maxframe/dataframe/misc/check_monotonic.py +1 -1
  201. maxframe/dataframe/misc/cut.py +6 -4
  202. maxframe/dataframe/misc/describe.py +1 -1
  203. maxframe/dataframe/misc/diff.py +1 -1
  204. maxframe/dataframe/misc/drop.py +1 -1
  205. maxframe/dataframe/misc/drop_duplicates.py +7 -4
  206. maxframe/dataframe/misc/duplicated.py +1 -1
  207. maxframe/dataframe/misc/eval.py +1 -1
  208. maxframe/dataframe/misc/explode.py +1 -1
  209. maxframe/dataframe/misc/get_dummies.py +1 -1
  210. maxframe/dataframe/misc/isin.py +1 -1
  211. maxframe/dataframe/misc/map.py +1 -1
  212. maxframe/dataframe/misc/melt.py +1 -1
  213. maxframe/dataframe/misc/memory_usage.py +1 -1
  214. maxframe/dataframe/misc/pct_change.py +1 -1
  215. maxframe/dataframe/misc/pivot_table.py +1 -1
  216. maxframe/dataframe/misc/qcut.py +1 -1
  217. maxframe/dataframe/misc/select_dtypes.py +1 -1
  218. maxframe/dataframe/misc/shift.py +1 -1
  219. maxframe/dataframe/misc/stack.py +1 -1
  220. maxframe/dataframe/misc/tests/__init__.py +1 -1
  221. maxframe/dataframe/misc/tests/test_misc.py +1 -76
  222. maxframe/dataframe/misc/to_numeric.py +1 -1
  223. maxframe/dataframe/misc/transform.py +1 -1
  224. maxframe/dataframe/misc/transpose.py +1 -1
  225. maxframe/dataframe/misc/value_counts.py +1 -1
  226. maxframe/dataframe/missing/__init__.py +1 -1
  227. maxframe/dataframe/missing/checkna.py +1 -1
  228. maxframe/dataframe/missing/dropna.py +1 -1
  229. maxframe/dataframe/missing/fillna.py +1 -1
  230. maxframe/dataframe/missing/replace.py +1 -1
  231. maxframe/dataframe/missing/tests/__init__.py +1 -1
  232. maxframe/dataframe/missing/tests/test_missing.py +1 -1
  233. maxframe/dataframe/operators.py +1 -1
  234. maxframe/dataframe/reduction/__init__.py +1 -1
  235. maxframe/dataframe/reduction/aggregation.py +1 -1
  236. maxframe/dataframe/reduction/all.py +1 -1
  237. maxframe/dataframe/reduction/any.py +1 -1
  238. maxframe/dataframe/reduction/core.py +1 -1
  239. maxframe/dataframe/reduction/count.py +1 -1
  240. maxframe/dataframe/reduction/cummax.py +1 -1
  241. maxframe/dataframe/reduction/cummin.py +1 -1
  242. maxframe/dataframe/reduction/cumprod.py +1 -1
  243. maxframe/dataframe/reduction/cumsum.py +1 -1
  244. maxframe/dataframe/reduction/custom_reduction.py +1 -1
  245. maxframe/dataframe/reduction/kurtosis.py +1 -1
  246. maxframe/dataframe/reduction/max.py +1 -1
  247. maxframe/dataframe/reduction/mean.py +1 -1
  248. maxframe/dataframe/reduction/median.py +1 -1
  249. maxframe/dataframe/reduction/min.py +1 -1
  250. maxframe/dataframe/reduction/nunique.py +1 -1
  251. maxframe/dataframe/reduction/prod.py +1 -1
  252. maxframe/dataframe/reduction/reduction_size.py +1 -1
  253. maxframe/dataframe/reduction/sem.py +1 -1
  254. maxframe/dataframe/reduction/skew.py +1 -1
  255. maxframe/dataframe/reduction/std.py +1 -1
  256. maxframe/dataframe/reduction/str_concat.py +1 -1
  257. maxframe/dataframe/reduction/sum.py +1 -1
  258. maxframe/dataframe/reduction/tests/__init__.py +1 -1
  259. maxframe/dataframe/reduction/tests/test_reduction.py +1 -1
  260. maxframe/dataframe/reduction/unique.py +1 -1
  261. maxframe/dataframe/reduction/var.py +1 -1
  262. maxframe/dataframe/sort/__init__.py +1 -1
  263. maxframe/dataframe/sort/core.py +1 -1
  264. maxframe/dataframe/sort/sort_index.py +1 -1
  265. maxframe/dataframe/sort/sort_values.py +1 -1
  266. maxframe/dataframe/sort/tests/__init__.py +1 -1
  267. maxframe/dataframe/sort/tests/test_sort.py +1 -1
  268. maxframe/dataframe/statistics/__init__.py +1 -1
  269. maxframe/dataframe/statistics/corr.py +1 -1
  270. maxframe/dataframe/statistics/quantile.py +1 -1
  271. maxframe/dataframe/statistics/tests/__init__.py +1 -1
  272. maxframe/dataframe/statistics/tests/test_statistics.py +1 -1
  273. maxframe/dataframe/tests/__init__.py +1 -1
  274. maxframe/dataframe/tests/test_initializer.py +1 -1
  275. maxframe/dataframe/tests/test_utils.py +36 -2
  276. maxframe/dataframe/tseries/__init__.py +1 -1
  277. maxframe/dataframe/tseries/tests/__init__.py +1 -1
  278. maxframe/dataframe/tseries/tests/test_tseries.py +1 -1
  279. maxframe/dataframe/tseries/to_datetime.py +1 -1
  280. maxframe/dataframe/ufunc/__init__.py +1 -1
  281. maxframe/dataframe/ufunc/tensor.py +1 -1
  282. maxframe/dataframe/ufunc/ufunc.py +1 -1
  283. maxframe/dataframe/utils.py +22 -2
  284. maxframe/dataframe/window/__init__.py +1 -1
  285. maxframe/dataframe/window/aggregation.py +1 -1
  286. maxframe/dataframe/window/core.py +1 -1
  287. maxframe/dataframe/window/ewm.py +1 -1
  288. maxframe/dataframe/window/expanding.py +1 -1
  289. maxframe/dataframe/window/rolling.py +1 -1
  290. maxframe/dataframe/window/tests/__init__.py +1 -1
  291. maxframe/dataframe/window/tests/test_ewm.py +1 -1
  292. maxframe/dataframe/window/tests/test_expanding.py +1 -1
  293. maxframe/dataframe/window/tests/test_rolling.py +1 -1
  294. maxframe/env.py +1 -1
  295. maxframe/errors.py +5 -1
  296. maxframe/extension.py +5 -2
  297. maxframe/io/__init__.py +1 -1
  298. maxframe/io/objects/__init__.py +1 -1
  299. maxframe/io/objects/core.py +1 -1
  300. maxframe/io/objects/tensor.py +1 -1
  301. maxframe/io/objects/tests/__init__.py +1 -1
  302. maxframe/io/objects/tests/test_object_io.py +1 -1
  303. maxframe/io/odpsio/__init__.py +1 -1
  304. maxframe/io/odpsio/arrow.py +8 -4
  305. maxframe/io/odpsio/schema.py +75 -3
  306. maxframe/io/odpsio/tableio.py +10 -4
  307. maxframe/io/odpsio/tests/__init__.py +1 -1
  308. maxframe/io/odpsio/tests/test_arrow.py +46 -1
  309. maxframe/io/odpsio/tests/test_schema.py +19 -1
  310. maxframe/io/odpsio/tests/test_tableio.py +1 -1
  311. maxframe/io/odpsio/tests/test_volumeio.py +1 -1
  312. maxframe/io/odpsio/volumeio.py +1 -1
  313. maxframe/learn/__init__.py +1 -1
  314. maxframe/learn/contrib/__init__.py +1 -1
  315. maxframe/learn/contrib/graph/__init__.py +1 -1
  316. maxframe/learn/contrib/graph/connected_components.py +1 -1
  317. maxframe/learn/contrib/graph/tests/__init__.py +1 -1
  318. maxframe/learn/contrib/graph/tests/test_connected_components.py +1 -1
  319. maxframe/learn/contrib/llm/__init__.py +1 -1
  320. maxframe/learn/contrib/llm/core.py +1 -1
  321. maxframe/learn/contrib/llm/models/__init__.py +1 -1
  322. maxframe/learn/contrib/llm/models/dashscope.py +1 -1
  323. maxframe/learn/contrib/llm/multi_modal.py +1 -1
  324. maxframe/learn/contrib/llm/text.py +1 -1
  325. maxframe/learn/contrib/pytorch/__init__.py +1 -1
  326. maxframe/learn/contrib/pytorch/run_function.py +1 -1
  327. maxframe/learn/contrib/pytorch/run_script.py +1 -1
  328. maxframe/learn/contrib/pytorch/tests/__init__.py +1 -1
  329. maxframe/learn/contrib/pytorch/tests/test_pytorch.py +1 -1
  330. maxframe/learn/contrib/utils.py +1 -1
  331. maxframe/learn/contrib/xgboost/__init__.py +1 -1
  332. maxframe/learn/contrib/xgboost/classifier.py +1 -1
  333. maxframe/learn/contrib/xgboost/core.py +1 -1
  334. maxframe/learn/contrib/xgboost/dmatrix.py +5 -2
  335. maxframe/learn/contrib/xgboost/predict.py +1 -1
  336. maxframe/learn/contrib/xgboost/regressor.py +1 -1
  337. maxframe/learn/contrib/xgboost/tests/__init__.py +1 -1
  338. maxframe/learn/contrib/xgboost/tests/test_core.py +1 -1
  339. maxframe/learn/contrib/xgboost/train.py +1 -1
  340. maxframe/learn/core.py +1 -1
  341. maxframe/learn/utils/__init__.py +1 -1
  342. maxframe/learn/utils/core.py +1 -1
  343. maxframe/lib/__init__.py +1 -1
  344. maxframe/lib/aio/__init__.py +1 -1
  345. maxframe/lib/aio/_runners.py +1 -1
  346. maxframe/lib/aio/_threads.py +1 -1
  347. maxframe/lib/aio/base.py +1 -1
  348. maxframe/lib/aio/file.py +1 -1
  349. maxframe/lib/aio/isolation.py +1 -1
  350. maxframe/lib/aio/lru.py +1 -1
  351. maxframe/lib/aio/parallelism.py +1 -1
  352. maxframe/lib/aio/tests/__init__.py +1 -1
  353. maxframe/lib/aio/tests/test_aio_file.py +1 -1
  354. maxframe/lib/compression.py +1 -1
  355. maxframe/lib/cython/__init__.py +1 -1
  356. maxframe/lib/cython/libcpp.pxd +1 -1
  357. maxframe/lib/dtypes_extension/__init__.py +14 -0
  358. maxframe/lib/dtypes_extension/dtypes.py +45 -0
  359. maxframe/lib/dtypes_extension/tests/__init__.py +13 -0
  360. maxframe/lib/dtypes_extension/tests/test_dtypes.py +38 -0
  361. maxframe/lib/filesystem/__init__.py +1 -1
  362. maxframe/lib/filesystem/_glob.py +1 -1
  363. maxframe/lib/filesystem/_oss_lib/__init__.py +1 -1
  364. maxframe/lib/filesystem/_oss_lib/common.py +1 -1
  365. maxframe/lib/filesystem/_oss_lib/glob.py +1 -1
  366. maxframe/lib/filesystem/_oss_lib/handle.py +1 -1
  367. maxframe/lib/filesystem/arrow.py +1 -1
  368. maxframe/lib/filesystem/base.py +1 -1
  369. maxframe/lib/filesystem/core.py +1 -1
  370. maxframe/lib/filesystem/fsmap.py +1 -1
  371. maxframe/lib/filesystem/hdfs.py +1 -1
  372. maxframe/lib/filesystem/local.py +1 -1
  373. maxframe/lib/filesystem/oss.py +1 -1
  374. maxframe/lib/filesystem/tests/__init__.py +1 -1
  375. maxframe/lib/filesystem/tests/test_filesystem.py +6 -4
  376. maxframe/lib/filesystem/tests/test_oss.py +1 -1
  377. maxframe/lib/functools_compat.py +1 -1
  378. maxframe/lib/mmh3.cpython-39-darwin.so +0 -0
  379. maxframe/lib/mmh3.pyi +1 -1
  380. maxframe/lib/sparse/__init__.py +1 -1
  381. maxframe/lib/sparse/array.py +1 -1
  382. maxframe/lib/sparse/core.py +1 -1
  383. maxframe/lib/sparse/matrix.py +1 -1
  384. maxframe/lib/sparse/tests/__init__.py +1 -1
  385. maxframe/lib/sparse/tests/test_sparse.py +1 -1
  386. maxframe/lib/sparse/vector.py +1 -1
  387. maxframe/lib/tests/__init__.py +1 -1
  388. maxframe/lib/tests/test_wrapped_pickle.py +1 -1
  389. maxframe/lib/version.py +1 -1
  390. maxframe/lib/wrapped_pickle.py +1 -1
  391. maxframe/mixin.py +1 -1
  392. maxframe/opcodes.py +6 -1
  393. maxframe/protocol.py +1 -1
  394. maxframe/remote/__init__.py +1 -1
  395. maxframe/remote/core.py +1 -1
  396. maxframe/remote/run_script.py +1 -1
  397. maxframe/serialization/__init__.py +1 -1
  398. maxframe/serialization/arrow.py +1 -1
  399. maxframe/serialization/core.cpython-39-darwin.so +0 -0
  400. maxframe/serialization/core.pxd +1 -1
  401. maxframe/serialization/core.pyi +1 -1
  402. maxframe/serialization/core.pyx +9 -6
  403. maxframe/serialization/exception.py +1 -1
  404. maxframe/serialization/maxframe_objects.py +1 -1
  405. maxframe/serialization/numpy.py +1 -1
  406. maxframe/serialization/pandas.py +1 -1
  407. maxframe/serialization/scipy.py +1 -1
  408. maxframe/serialization/serializables/__init__.py +1 -1
  409. maxframe/serialization/serializables/core.py +95 -90
  410. maxframe/serialization/serializables/field.py +1 -1
  411. maxframe/serialization/serializables/field_type.py +1 -1
  412. maxframe/serialization/serializables/tests/__init__.py +1 -1
  413. maxframe/serialization/serializables/tests/test_field_type.py +1 -1
  414. maxframe/serialization/serializables/tests/test_serializable.py +1 -1
  415. maxframe/serialization/tests/__init__.py +1 -1
  416. maxframe/serialization/tests/test_serial.py +21 -3
  417. maxframe/session.py +1 -1
  418. maxframe/tensor/__init__.py +1 -1
  419. maxframe/tensor/arithmetic/__init__.py +1 -1
  420. maxframe/tensor/arithmetic/abs.py +1 -1
  421. maxframe/tensor/arithmetic/absolute.py +1 -1
  422. maxframe/tensor/arithmetic/add.py +1 -1
  423. maxframe/tensor/arithmetic/angle.py +1 -1
  424. maxframe/tensor/arithmetic/arccos.py +1 -1
  425. maxframe/tensor/arithmetic/arccosh.py +1 -1
  426. maxframe/tensor/arithmetic/arcsin.py +1 -1
  427. maxframe/tensor/arithmetic/arcsinh.py +1 -1
  428. maxframe/tensor/arithmetic/arctan.py +1 -1
  429. maxframe/tensor/arithmetic/arctan2.py +1 -1
  430. maxframe/tensor/arithmetic/arctanh.py +1 -1
  431. maxframe/tensor/arithmetic/around.py +1 -1
  432. maxframe/tensor/arithmetic/bitand.py +1 -1
  433. maxframe/tensor/arithmetic/bitor.py +1 -1
  434. maxframe/tensor/arithmetic/bitxor.py +1 -1
  435. maxframe/tensor/arithmetic/cbrt.py +1 -1
  436. maxframe/tensor/arithmetic/ceil.py +1 -1
  437. maxframe/tensor/arithmetic/clip.py +1 -1
  438. maxframe/tensor/arithmetic/conj.py +1 -1
  439. maxframe/tensor/arithmetic/copysign.py +1 -1
  440. maxframe/tensor/arithmetic/core.py +1 -1
  441. maxframe/tensor/arithmetic/cos.py +1 -1
  442. maxframe/tensor/arithmetic/cosh.py +1 -1
  443. maxframe/tensor/arithmetic/deg2rad.py +1 -1
  444. maxframe/tensor/arithmetic/degrees.py +1 -1
  445. maxframe/tensor/arithmetic/divide.py +1 -1
  446. maxframe/tensor/arithmetic/equal.py +1 -1
  447. maxframe/tensor/arithmetic/exp.py +1 -1
  448. maxframe/tensor/arithmetic/exp2.py +1 -1
  449. maxframe/tensor/arithmetic/expm1.py +1 -1
  450. maxframe/tensor/arithmetic/fabs.py +1 -1
  451. maxframe/tensor/arithmetic/fix.py +1 -1
  452. maxframe/tensor/arithmetic/float_power.py +1 -1
  453. maxframe/tensor/arithmetic/floor.py +1 -1
  454. maxframe/tensor/arithmetic/floordiv.py +1 -1
  455. maxframe/tensor/arithmetic/fmax.py +1 -1
  456. maxframe/tensor/arithmetic/fmin.py +1 -1
  457. maxframe/tensor/arithmetic/fmod.py +1 -1
  458. maxframe/tensor/arithmetic/frexp.py +1 -1
  459. maxframe/tensor/arithmetic/greater.py +1 -1
  460. maxframe/tensor/arithmetic/greater_equal.py +1 -1
  461. maxframe/tensor/arithmetic/hypot.py +1 -1
  462. maxframe/tensor/arithmetic/i0.py +1 -1
  463. maxframe/tensor/arithmetic/imag.py +1 -1
  464. maxframe/tensor/arithmetic/invert.py +1 -1
  465. maxframe/tensor/arithmetic/isclose.py +1 -1
  466. maxframe/tensor/arithmetic/iscomplex.py +1 -1
  467. maxframe/tensor/arithmetic/isfinite.py +1 -1
  468. maxframe/tensor/arithmetic/isinf.py +1 -1
  469. maxframe/tensor/arithmetic/isnan.py +1 -1
  470. maxframe/tensor/arithmetic/isreal.py +1 -1
  471. maxframe/tensor/arithmetic/ldexp.py +1 -1
  472. maxframe/tensor/arithmetic/less.py +1 -1
  473. maxframe/tensor/arithmetic/less_equal.py +1 -1
  474. maxframe/tensor/arithmetic/log.py +1 -1
  475. maxframe/tensor/arithmetic/log10.py +1 -1
  476. maxframe/tensor/arithmetic/log1p.py +1 -1
  477. maxframe/tensor/arithmetic/log2.py +1 -1
  478. maxframe/tensor/arithmetic/logaddexp.py +1 -1
  479. maxframe/tensor/arithmetic/logaddexp2.py +1 -1
  480. maxframe/tensor/arithmetic/logical_and.py +1 -1
  481. maxframe/tensor/arithmetic/logical_not.py +1 -1
  482. maxframe/tensor/arithmetic/logical_or.py +1 -1
  483. maxframe/tensor/arithmetic/logical_xor.py +1 -1
  484. maxframe/tensor/arithmetic/lshift.py +1 -1
  485. maxframe/tensor/arithmetic/maximum.py +1 -1
  486. maxframe/tensor/arithmetic/minimum.py +1 -1
  487. maxframe/tensor/arithmetic/mod.py +1 -1
  488. maxframe/tensor/arithmetic/modf.py +1 -1
  489. maxframe/tensor/arithmetic/multiply.py +1 -1
  490. maxframe/tensor/arithmetic/nan_to_num.py +1 -1
  491. maxframe/tensor/arithmetic/negative.py +1 -1
  492. maxframe/tensor/arithmetic/nextafter.py +1 -1
  493. maxframe/tensor/arithmetic/not_equal.py +1 -1
  494. maxframe/tensor/arithmetic/positive.py +1 -1
  495. maxframe/tensor/arithmetic/power.py +1 -1
  496. maxframe/tensor/arithmetic/rad2deg.py +1 -1
  497. maxframe/tensor/arithmetic/radians.py +1 -1
  498. maxframe/tensor/arithmetic/real.py +1 -1
  499. maxframe/tensor/arithmetic/reciprocal.py +1 -1
  500. maxframe/tensor/arithmetic/rint.py +1 -1
  501. maxframe/tensor/arithmetic/rshift.py +1 -1
  502. maxframe/tensor/arithmetic/setimag.py +1 -1
  503. maxframe/tensor/arithmetic/setreal.py +1 -1
  504. maxframe/tensor/arithmetic/sign.py +1 -1
  505. maxframe/tensor/arithmetic/signbit.py +1 -1
  506. maxframe/tensor/arithmetic/sin.py +1 -1
  507. maxframe/tensor/arithmetic/sinc.py +1 -1
  508. maxframe/tensor/arithmetic/sinh.py +1 -1
  509. maxframe/tensor/arithmetic/spacing.py +1 -1
  510. maxframe/tensor/arithmetic/sqrt.py +1 -1
  511. maxframe/tensor/arithmetic/square.py +1 -1
  512. maxframe/tensor/arithmetic/subtract.py +1 -1
  513. maxframe/tensor/arithmetic/tan.py +1 -1
  514. maxframe/tensor/arithmetic/tanh.py +1 -1
  515. maxframe/tensor/arithmetic/tests/__init__.py +1 -1
  516. maxframe/tensor/arithmetic/tests/test_arithmetic.py +1 -1
  517. maxframe/tensor/arithmetic/truediv.py +1 -1
  518. maxframe/tensor/arithmetic/trunc.py +1 -1
  519. maxframe/tensor/arithmetic/utils.py +1 -1
  520. maxframe/tensor/array_utils.py +1 -1
  521. maxframe/tensor/core.py +1 -1
  522. maxframe/tensor/datasource/__init__.py +1 -1
  523. maxframe/tensor/datasource/arange.py +1 -1
  524. maxframe/tensor/datasource/array.py +1 -1
  525. maxframe/tensor/datasource/core.py +1 -1
  526. maxframe/tensor/datasource/empty.py +1 -1
  527. maxframe/tensor/datasource/from_dataframe.py +1 -1
  528. maxframe/tensor/datasource/from_dense.py +1 -1
  529. maxframe/tensor/datasource/from_sparse.py +1 -1
  530. maxframe/tensor/datasource/full.py +1 -1
  531. maxframe/tensor/datasource/ones.py +1 -1
  532. maxframe/tensor/datasource/scalar.py +1 -1
  533. maxframe/tensor/datasource/tests/__init__.py +1 -1
  534. maxframe/tensor/datasource/tests/test_datasource.py +1 -1
  535. maxframe/tensor/datasource/zeros.py +1 -1
  536. maxframe/tensor/fetch/__init__.py +1 -1
  537. maxframe/tensor/fetch/core.py +1 -1
  538. maxframe/tensor/indexing/__init__.py +1 -1
  539. maxframe/tensor/indexing/choose.py +1 -1
  540. maxframe/tensor/indexing/compress.py +1 -1
  541. maxframe/tensor/indexing/core.py +1 -1
  542. maxframe/tensor/indexing/extract.py +1 -1
  543. maxframe/tensor/indexing/fill_diagonal.py +1 -1
  544. maxframe/tensor/indexing/flatnonzero.py +1 -1
  545. maxframe/tensor/indexing/getitem.py +1 -1
  546. maxframe/tensor/indexing/nonzero.py +1 -1
  547. maxframe/tensor/indexing/setitem.py +1 -1
  548. maxframe/tensor/indexing/slice.py +1 -1
  549. maxframe/tensor/indexing/take.py +1 -1
  550. maxframe/tensor/indexing/tests/__init__.py +1 -1
  551. maxframe/tensor/indexing/tests/test_indexing.py +1 -1
  552. maxframe/tensor/indexing/unravel_index.py +1 -1
  553. maxframe/tensor/merge/__init__.py +1 -1
  554. maxframe/tensor/merge/concatenate.py +1 -1
  555. maxframe/tensor/merge/stack.py +1 -1
  556. maxframe/tensor/merge/tests/__init__.py +1 -1
  557. maxframe/tensor/merge/tests/test_merge.py +1 -1
  558. maxframe/tensor/merge/vstack.py +1 -1
  559. maxframe/tensor/misc/__init__.py +1 -1
  560. maxframe/tensor/misc/astype.py +1 -1
  561. maxframe/tensor/misc/atleast_1d.py +1 -1
  562. maxframe/tensor/misc/atleast_2d.py +1 -1
  563. maxframe/tensor/misc/atleast_3d.py +1 -1
  564. maxframe/tensor/misc/broadcast_to.py +1 -1
  565. maxframe/tensor/misc/ravel.py +1 -1
  566. maxframe/tensor/misc/tests/__init__.py +1 -1
  567. maxframe/tensor/misc/tests/test_misc.py +1 -1
  568. maxframe/tensor/misc/transpose.py +1 -1
  569. maxframe/tensor/misc/unique.py +1 -1
  570. maxframe/tensor/misc/where.py +1 -1
  571. maxframe/tensor/operators.py +1 -1
  572. maxframe/tensor/random/__init__.py +1 -1
  573. maxframe/tensor/random/beta.py +1 -1
  574. maxframe/tensor/random/binomial.py +1 -1
  575. maxframe/tensor/random/bytes.py +1 -1
  576. maxframe/tensor/random/chisquare.py +1 -1
  577. maxframe/tensor/random/choice.py +1 -1
  578. maxframe/tensor/random/core.py +1 -1
  579. maxframe/tensor/random/dirichlet.py +1 -1
  580. maxframe/tensor/random/exponential.py +1 -1
  581. maxframe/tensor/random/f.py +1 -1
  582. maxframe/tensor/random/gamma.py +1 -1
  583. maxframe/tensor/random/geometric.py +1 -1
  584. maxframe/tensor/random/gumbel.py +1 -1
  585. maxframe/tensor/random/hypergeometric.py +1 -1
  586. maxframe/tensor/random/laplace.py +1 -1
  587. maxframe/tensor/random/logistic.py +1 -1
  588. maxframe/tensor/random/lognormal.py +1 -1
  589. maxframe/tensor/random/logseries.py +1 -1
  590. maxframe/tensor/random/multinomial.py +1 -1
  591. maxframe/tensor/random/multivariate_normal.py +1 -1
  592. maxframe/tensor/random/negative_binomial.py +1 -1
  593. maxframe/tensor/random/noncentral_chisquare.py +1 -1
  594. maxframe/tensor/random/noncentral_f.py +1 -1
  595. maxframe/tensor/random/normal.py +1 -1
  596. maxframe/tensor/random/pareto.py +1 -1
  597. maxframe/tensor/random/permutation.py +1 -1
  598. maxframe/tensor/random/poisson.py +1 -1
  599. maxframe/tensor/random/power.py +1 -1
  600. maxframe/tensor/random/rand.py +1 -1
  601. maxframe/tensor/random/randint.py +1 -1
  602. maxframe/tensor/random/randn.py +1 -1
  603. maxframe/tensor/random/random_integers.py +1 -1
  604. maxframe/tensor/random/random_sample.py +1 -1
  605. maxframe/tensor/random/rayleigh.py +1 -1
  606. maxframe/tensor/random/shuffle.py +1 -1
  607. maxframe/tensor/random/standard_cauchy.py +1 -1
  608. maxframe/tensor/random/standard_exponential.py +1 -1
  609. maxframe/tensor/random/standard_gamma.py +1 -1
  610. maxframe/tensor/random/standard_normal.py +1 -1
  611. maxframe/tensor/random/standard_t.py +1 -1
  612. maxframe/tensor/random/tests/__init__.py +1 -1
  613. maxframe/tensor/random/tests/test_random.py +1 -1
  614. maxframe/tensor/random/triangular.py +1 -1
  615. maxframe/tensor/random/uniform.py +1 -1
  616. maxframe/tensor/random/vonmises.py +1 -1
  617. maxframe/tensor/random/wald.py +1 -1
  618. maxframe/tensor/random/weibull.py +1 -1
  619. maxframe/tensor/random/zipf.py +1 -1
  620. maxframe/tensor/rechunk/__init__.py +1 -1
  621. maxframe/tensor/rechunk/rechunk.py +1 -1
  622. maxframe/tensor/reduction/__init__.py +1 -1
  623. maxframe/tensor/reduction/all.py +1 -1
  624. maxframe/tensor/reduction/allclose.py +1 -1
  625. maxframe/tensor/reduction/any.py +1 -1
  626. maxframe/tensor/reduction/argmax.py +1 -1
  627. maxframe/tensor/reduction/argmin.py +1 -1
  628. maxframe/tensor/reduction/array_equal.py +1 -1
  629. maxframe/tensor/reduction/core.py +1 -1
  630. maxframe/tensor/reduction/count_nonzero.py +1 -1
  631. maxframe/tensor/reduction/cumprod.py +1 -1
  632. maxframe/tensor/reduction/cumsum.py +1 -1
  633. maxframe/tensor/reduction/max.py +1 -1
  634. maxframe/tensor/reduction/mean.py +1 -1
  635. maxframe/tensor/reduction/min.py +1 -1
  636. maxframe/tensor/reduction/nanargmax.py +1 -1
  637. maxframe/tensor/reduction/nanargmin.py +1 -1
  638. maxframe/tensor/reduction/nancumprod.py +1 -1
  639. maxframe/tensor/reduction/nancumsum.py +1 -1
  640. maxframe/tensor/reduction/nanmax.py +1 -1
  641. maxframe/tensor/reduction/nanmean.py +1 -1
  642. maxframe/tensor/reduction/nanmin.py +1 -1
  643. maxframe/tensor/reduction/nanprod.py +1 -1
  644. maxframe/tensor/reduction/nanstd.py +1 -1
  645. maxframe/tensor/reduction/nansum.py +1 -1
  646. maxframe/tensor/reduction/nanvar.py +1 -1
  647. maxframe/tensor/reduction/prod.py +1 -1
  648. maxframe/tensor/reduction/std.py +1 -1
  649. maxframe/tensor/reduction/sum.py +1 -1
  650. maxframe/tensor/reduction/tests/__init__.py +1 -1
  651. maxframe/tensor/reduction/tests/test_reduction.py +1 -1
  652. maxframe/tensor/reduction/var.py +1 -1
  653. maxframe/tensor/reshape/__init__.py +1 -1
  654. maxframe/tensor/reshape/reshape.py +1 -1
  655. maxframe/tensor/reshape/tests/__init__.py +1 -1
  656. maxframe/tensor/reshape/tests/test_reshape.py +1 -1
  657. maxframe/tensor/statistics/__init__.py +1 -1
  658. maxframe/tensor/statistics/percentile.py +1 -1
  659. maxframe/tensor/statistics/quantile.py +1 -1
  660. maxframe/tensor/ufunc/__init__.py +1 -1
  661. maxframe/tensor/ufunc/ufunc.py +1 -1
  662. maxframe/tensor/utils.py +1 -1
  663. maxframe/tests/__init__.py +1 -1
  664. maxframe/tests/test_codegen.py +1 -1
  665. maxframe/tests/test_protocol.py +1 -1
  666. maxframe/tests/test_utils.py +1 -1
  667. maxframe/tests/utils.py +1 -1
  668. maxframe/typing_.py +1 -1
  669. maxframe/udf.py +6 -1
  670. maxframe/utils.py +8 -1
  671. {maxframe-1.1.1.dist-info → maxframe-1.2.1.dist-info}/METADATA +3 -2
  672. maxframe-1.2.1.dist-info/RECORD +697 -0
  673. {maxframe-1.1.1.dist-info → maxframe-1.2.1.dist-info}/WHEEL +1 -1
  674. maxframe_client/__init__.py +1 -1
  675. maxframe_client/clients/__init__.py +1 -1
  676. maxframe_client/clients/framedriver.py +1 -1
  677. maxframe_client/conftest.py +1 -1
  678. maxframe_client/fetcher.py +1 -1
  679. maxframe_client/session/__init__.py +1 -1
  680. maxframe_client/session/consts.py +1 -1
  681. maxframe_client/session/graph.py +1 -1
  682. maxframe_client/session/odps.py +2 -1
  683. maxframe_client/session/task.py +1 -1
  684. maxframe_client/session/tests/__init__.py +1 -1
  685. maxframe_client/session/tests/test_task.py +1 -1
  686. maxframe_client/tests/__init__.py +1 -1
  687. maxframe_client/tests/test_fetcher.py +1 -1
  688. maxframe_client/tests/test_session.py +1 -1
  689. maxframe-1.1.1.dist-info/RECORD +0 -675
  690. {maxframe-1.1.1.dist-info → maxframe-1.2.1.dist-info}/top_level.txt +0 -0
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -428,6 +428,9 @@ def df_apply(
428
428
  specified.
429
429
  * For Series output, you need to specify ``dtype`` and ``name`` of
430
430
  output Series.
431
+ * For any input with data type ``pandas.ArrowDtype(pyarrow.MapType)``, it will always
432
+ be converted to a Python dict. And for any output with this data type, it must be
433
+ returned as a Python dict as well.
431
434
 
432
435
  Examples
433
436
  --------
@@ -483,6 +486,45 @@ def df_apply(
483
486
  0 1 2
484
487
  1 1 2
485
488
  2 1 2
489
+
490
+ Create a dataframe with a map type.
491
+
492
+ >>> import pyarrow as pa
493
+ >>> import pandas as pd
494
+ >>> from maxframe.lib.dtypes_extension import dict_
495
+ >>> col_a = pd.Series(
496
+ ... data=[[("k1", 1), ("k2", 2)], [("k1", 3)], None],
497
+ ... index=[1, 2, 3],
498
+ ... dtype=dict_(pa.string(), pa.int64()),
499
+ ... )
500
+ >>> col_b = pd.Series(
501
+ ... data=["A", "B", "C"],
502
+ ... index=[1, 2, 3],
503
+ ... )
504
+ >>> df = md.DataFrame({"A": col_a, "B": col_b})
505
+ >>> df.execute()
506
+ A B
507
+ 1 [('k1', 1), ('k2', 2)] A
508
+ 2 [('k1', 3)] B
509
+ 3 <NA> C
510
+
511
+ Define a function that updates the map type with a new key-value pair.
512
+
513
+ >>> def custom_set_item(x):
514
+ ... if x["A"] is not None:
515
+ ... x["A"]["k2"] = 10
516
+ ... return x
517
+
518
+ >>> df.apply(
519
+ ... custom_set_item,
520
+ ... axis=1,
521
+ ... output_type="dataframe",
522
+ ... dtypes=df.dtypes.copy(),
523
+ ... ).execute()
524
+ A B
525
+ 1 [('k1', 1), ('k2', 10)] A
526
+ 2 [('k1', 3), ('k2', 10)] B
527
+ 3 <NA> C
486
528
  """
487
529
  if isinstance(func, (list, dict)):
488
530
  return df.aggregate(func, axis)
@@ -592,6 +634,9 @@ def series_apply(
592
634
  specified.
593
635
  * For Series output, you need to specify ``dtype`` and ``name`` of
594
636
  output Series.
637
+ * For any input with data type ``pandas.ArrowDtype(pyarrow.MapType)``, it will always
638
+ be converted to a Python dict. And for any output with this data type, it must be
639
+ returned as a Python dict as well.
595
640
 
596
641
  Examples
597
642
  --------
@@ -653,6 +698,34 @@ def series_apply(
653
698
  New York 96
654
699
  Helsinki 87
655
700
  dtype: int64
701
+
702
+ Create a series with a map type.
703
+
704
+ >>> import pyarrow as pa
705
+ >>> from maxframe.lib.dtypes_extension import dict_
706
+ >>> s = md.Series(
707
+ ... data=[[("k1", 1), ("k2", 2)], [("k1", 3)], None],
708
+ ... index=[1, 2, 3],
709
+ ... dtype=dict_(pa.string(), pa.int64()),
710
+ ... )
711
+ >>> s.execute()
712
+ 1 [('k1', 1), ('k2', 2)]
713
+ 2 [('k1', 3)]
714
+ 3 <NA>
715
+ dtype: map<string, int64>[pyarrow]
716
+
717
+ Define a function that updates the map type with a new key-value pair.
718
+
719
+ >>> def custom_set_item(x):
720
+ ... if x is not None:
721
+ ... x["k2"] = 10
722
+ ... return x
723
+
724
+ >>> s.apply(custom_set_item, output_type="series", dtype=dict_(pa.string(), pa.int64())).execute()
725
+ 1 [('k1', 1), ('k2', 10)]
726
+ 2 [('k1', 3), ('k2', 10)]
727
+ 3 <NA>
728
+ dtype: map<string, int64>[pyarrow]
656
729
  """
657
730
  if isinstance(func, (list, dict)):
658
731
  return series.aggregate(func)
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -156,9 +156,11 @@ class DataFrameCut(DataFrameOperator, DataFrameOperatorMixin):
156
156
  {
157
157
  "dtype": self.bins.dtype,
158
158
  "shape": self.bins.shape,
159
- "index_value": self.bins.index_value
160
- if isinstance(self.bins, INDEX_TYPE)
161
- else parse_index(self.bins, store_data=False),
159
+ "index_value": (
160
+ self.bins.index_value
161
+ if isinstance(self.bins, INDEX_TYPE)
162
+ else parse_index(self.bins, store_data=False)
163
+ ),
162
164
  "name": self.bins.name,
163
165
  }
164
166
  )
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -80,6 +80,7 @@ def df_drop_duplicates(
80
80
  Determines which duplicates (if any) to keep.
81
81
  - ``first`` : Drop duplicates except for the first occurrence.
82
82
  - ``last`` : Drop duplicates except for the last occurrence.
83
+ - ``any`` : Drop duplicates except for a random occurrence.
83
84
  - False : Drop all duplicates.
84
85
  inplace : bool, default False
85
86
  Whether to drop duplicates in place or to return a copy.
@@ -91,7 +92,7 @@ def df_drop_duplicates(
91
92
  DataFrame
92
93
  DataFrame with duplicates removed or None if ``inplace=True``.
93
94
  """
94
- if keep not in ("first", "last", False):
95
+ if keep not in ("first", "last", "any", False):
95
96
  raise ValueError("keep could only be one of 'first', 'last' or False")
96
97
  if method not in ("auto", "tree", "subset_tree", "shuffle", None):
97
98
  raise ValueError(
@@ -118,6 +119,7 @@ def series_drop_duplicates(
118
119
 
119
120
  - 'first' : Drop duplicates except for the first occurrence.
120
121
  - 'last' : Drop duplicates except for the last occurrence.
122
+ - 'any' : Drop duplicates except for a random occurrence.
121
123
  - ``False`` : Drop all duplicates.
122
124
 
123
125
  inplace : bool, default ``False``
@@ -180,7 +182,7 @@ def series_drop_duplicates(
180
182
  5 hippo
181
183
  Name: animal, dtype: object
182
184
  """
183
- if keep not in ("first", "last", False):
185
+ if keep not in ("first", "last", "any", False):
184
186
  raise ValueError("keep could only be one of 'first', 'last' or False")
185
187
  if method not in ("auto", "tree", "shuffle", None):
186
188
  raise ValueError(
@@ -199,6 +201,7 @@ def index_drop_duplicates(index, keep="first", method="auto"):
199
201
  keep : {'first', 'last', ``False``}, default 'first'
200
202
  - 'first' : Drop duplicates except for the first occurrence.
201
203
  - 'last' : Drop duplicates except for the last occurrence.
204
+ - 'any' : Drop duplicates except for a random occurrence.
202
205
  - ``False`` : Drop all duplicates.
203
206
 
204
207
  Returns
@@ -238,7 +241,7 @@ def index_drop_duplicates(index, keep="first", method="auto"):
238
241
  >>> idx.drop_duplicates(keep=False).execute()
239
242
  Index(['cow', 'beetle', 'hippo'], dtype='object')
240
243
  """
241
- if keep not in ("first", "last", False):
244
+ if keep not in ("first", "last", "any", False):
242
245
  raise ValueError("keep could only be one of 'first', 'last' or False")
243
246
  if method not in ("auto", "tree", "shuffle", None):
244
247
  raise ValueError(
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding: utf-8 -*-
3
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
3
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
6
6
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -147,81 +147,6 @@ def test_transform():
147
147
  assert r.op.output_types[0] == OutputType.series
148
148
 
149
149
 
150
- def test_string_method():
151
- s = pd.Series(["a", "b", "c"], name="s")
152
- series = from_pandas_series(s, chunk_size=2)
153
-
154
- with pytest.raises(AttributeError):
155
- _ = series.str.non_exist
156
-
157
- r = series.str.contains("c")
158
- assert r.dtype == np.bool_
159
- assert r.name == s.name
160
- pd.testing.assert_index_equal(r.index_value.to_pandas(), s.index)
161
- assert r.shape == s.shape
162
-
163
- r = series.str.split(",", expand=True, n=1)
164
- assert r.op.output_types[0] == OutputType.dataframe
165
- assert r.shape == (3, 2)
166
- pd.testing.assert_index_equal(r.index_value.to_pandas(), s.index)
167
- pd.testing.assert_index_equal(r.columns_value.to_pandas(), pd.RangeIndex(2))
168
-
169
- with pytest.raises(TypeError):
170
- _ = series.str.cat([["1", "2"]])
171
-
172
- with pytest.raises(ValueError):
173
- _ = series.str.cat(["1", "2"])
174
-
175
- with pytest.raises(ValueError):
176
- _ = series.str.cat(",")
177
-
178
- with pytest.raises(TypeError):
179
- _ = series.str.cat({"1", "2", "3"})
180
-
181
- r = series.str.cat(sep=",")
182
- assert r.op.output_types[0] == OutputType.scalar
183
- assert r.dtype == s.dtype
184
-
185
- r = series.str.extract(r"[ab](\d)", expand=False)
186
- assert r.op.output_types[0] == OutputType.series
187
- assert r.dtype == s.dtype
188
-
189
- r = series.str.extract(r"[ab](\d)", expand=True)
190
- assert r.op.output_types[0] == OutputType.dataframe
191
- assert r.shape == (3, 1)
192
- pd.testing.assert_index_equal(r.index_value.to_pandas(), s.index)
193
- pd.testing.assert_index_equal(r.columns_value.to_pandas(), pd.RangeIndex(1))
194
-
195
- assert "lstrip" in dir(series.str)
196
-
197
- r = series.str[1:10:2]
198
- assert r.op.method == "slice"
199
- assert r.op.method_args == ()
200
- assert r.op.method_kwargs == {"start": 1, "stop": 10, "step": 2}
201
-
202
-
203
- def test_datetime_method():
204
- s = pd.Series(
205
- [pd.Timestamp("2020-1-1"), pd.Timestamp("2020-2-1"), pd.Timestamp("2020-3-1")],
206
- name="ss",
207
- )
208
- series = from_pandas_series(s, chunk_size=2)
209
-
210
- r = series.dt.year
211
- assert r.dtype == s.dt.year.dtype
212
- pd.testing.assert_index_equal(r.index_value.to_pandas(), s.index)
213
- assert r.shape == s.shape
214
- assert r.op.output_types[0] == OutputType.series
215
- assert r.name == s.dt.year.name
216
-
217
- with pytest.raises(AttributeError):
218
- _ = from_pandas_series(pd.Series([1])).dt
219
- with pytest.raises(AttributeError):
220
- _ = series.dt.non_exist
221
-
222
- assert "ceil" in dir(series.dt)
223
-
224
-
225
150
  def test_series_isin():
226
151
  # one chunk in multiple chunks
227
152
  a = from_pandas_series(pd.Series([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]), chunk_size=10)
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # Copyright 1999-2024 Alibaba Group Holding Ltd.
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.