maxframe 1.0.0rc1__cp310-cp310-win32.whl → 1.0.0rc2__cp310-cp310-win32.whl

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

Potentially problematic release.


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

Files changed (64) hide show
  1. maxframe/_utils.cp310-win32.pyd +0 -0
  2. maxframe/codegen.py +0 -4
  3. maxframe/config/config.py +34 -2
  4. maxframe/config/validators.py +1 -0
  5. maxframe/conftest.py +2 -0
  6. maxframe/core/entity/objects.py +1 -1
  7. maxframe/core/graph/core.cp310-win32.pyd +0 -0
  8. maxframe/dataframe/__init__.py +1 -1
  9. maxframe/dataframe/arithmetic/around.py +5 -17
  10. maxframe/dataframe/arithmetic/core.py +15 -7
  11. maxframe/dataframe/arithmetic/docstring.py +5 -55
  12. maxframe/dataframe/arithmetic/tests/test_arithmetic.py +22 -0
  13. maxframe/dataframe/core.py +5 -5
  14. maxframe/dataframe/datasource/date_range.py +2 -2
  15. maxframe/dataframe/datasource/read_odps_query.py +6 -0
  16. maxframe/dataframe/datasource/read_odps_table.py +2 -1
  17. maxframe/dataframe/datasource/tests/test_datasource.py +14 -0
  18. maxframe/dataframe/groupby/cum.py +0 -1
  19. maxframe/dataframe/groupby/tests/test_groupby.py +4 -0
  20. maxframe/dataframe/indexing/add_prefix_suffix.py +1 -1
  21. maxframe/dataframe/indexing/rename.py +3 -37
  22. maxframe/dataframe/indexing/sample.py +0 -1
  23. maxframe/dataframe/indexing/set_index.py +68 -1
  24. maxframe/dataframe/merge/merge.py +236 -2
  25. maxframe/dataframe/merge/tests/test_merge.py +123 -0
  26. maxframe/dataframe/misc/apply.py +3 -10
  27. maxframe/dataframe/misc/case_when.py +1 -1
  28. maxframe/dataframe/misc/describe.py +2 -2
  29. maxframe/dataframe/misc/drop_duplicates.py +4 -25
  30. maxframe/dataframe/misc/eval.py +4 -0
  31. maxframe/dataframe/misc/pct_change.py +1 -83
  32. maxframe/dataframe/misc/transform.py +1 -30
  33. maxframe/dataframe/misc/value_counts.py +4 -17
  34. maxframe/dataframe/missing/dropna.py +1 -1
  35. maxframe/dataframe/missing/fillna.py +5 -5
  36. maxframe/dataframe/sort/sort_values.py +1 -11
  37. maxframe/dataframe/statistics/quantile.py +5 -17
  38. maxframe/dataframe/utils.py +4 -7
  39. maxframe/learn/contrib/xgboost/dmatrix.py +2 -2
  40. maxframe/learn/contrib/xgboost/predict.py +2 -2
  41. maxframe/learn/contrib/xgboost/train.py +2 -2
  42. maxframe/lib/mmh3.cp310-win32.pyd +0 -0
  43. maxframe/odpsio/__init__.py +1 -1
  44. maxframe/odpsio/arrow.py +8 -4
  45. maxframe/odpsio/schema.py +10 -7
  46. maxframe/odpsio/tableio.py +388 -14
  47. maxframe/odpsio/tests/test_schema.py +16 -15
  48. maxframe/odpsio/tests/test_tableio.py +48 -21
  49. maxframe/protocol.py +40 -2
  50. maxframe/serialization/core.cp310-win32.pyd +0 -0
  51. maxframe/serialization/serializables/core.py +48 -9
  52. maxframe/tensor/__init__.py +59 -0
  53. maxframe/tensor/base/unique.py +2 -2
  54. maxframe/tensor/statistics/quantile.py +2 -2
  55. maxframe/tests/utils.py +11 -2
  56. maxframe/utils.py +17 -9
  57. {maxframe-1.0.0rc1.dist-info → maxframe-1.0.0rc2.dist-info}/METADATA +74 -1
  58. {maxframe-1.0.0rc1.dist-info → maxframe-1.0.0rc2.dist-info}/RECORD +64 -64
  59. {maxframe-1.0.0rc1.dist-info → maxframe-1.0.0rc2.dist-info}/WHEEL +1 -1
  60. maxframe_client/fetcher.py +38 -27
  61. maxframe_client/session/odps.py +5 -5
  62. maxframe_client/tests/test_fetcher.py +21 -3
  63. maxframe_client/tests/test_session.py +13 -2
  64. {maxframe-1.0.0rc1.dist-info → maxframe-1.0.0rc2.dist-info}/top_level.txt +0 -0
@@ -1,22 +1,22 @@
1
1
  maxframe/__init__.py,sha256=RujkARDvD6mhFpR330UQ0UfogvIdae5EjR1euFpTiYA,1036
2
- maxframe/_utils.cp310-win32.pyd,sha256=sTpAJC7PASVcaIJXKZQ5k-TIHu2hiTQWKQgzEHmMXA8,268800
2
+ maxframe/_utils.cp310-win32.pyd,sha256=TGXgyxULHuhcp1K_a3dCaioxBX-GbBwFycm5YLXrIbU,268800
3
3
  maxframe/_utils.pxd,sha256=_qHN-lCY1FQgDFIrrqA79Ys0SBdonp9kXRMS93xKSYk,1187
4
4
  maxframe/_utils.pyx,sha256=_3p6aJEJ6WZYLcNZ6o4DxoxsxqadTlJXFlgDeFPxqUQ,17564
5
- maxframe/codegen.py,sha256=t56uoJpfbyLvrctodXn-q3VoLzbwPgNSaXUsL4Ig4Ao,18345
6
- maxframe/conftest.py,sha256=JE9I-5mP4u-vgUqYL22mNY3tqpGofM8VMe8c8VUYkzk,4403
5
+ maxframe/codegen.py,sha256=4CpUo4qKAP9vPSOl1RaVo0kZ17DyhRqSW76fKz_Xu5o,18131
6
+ maxframe/conftest.py,sha256=lmXHAQEA6b2k8s2HHOsZdBeGT2a0XEm44rZLU8OpWyg,4497
7
7
  maxframe/env.py,sha256=xY4wjMWIJ4qLsFAQ5F-X5CrVR7dDSWiryPXni0YSK5c,1435
8
8
  maxframe/errors.py,sha256=nhQVjRbH5EsyLZhyAufvHpMhfDN6eR8vcrv4sjaI7p8,1000
9
9
  maxframe/extension.py,sha256=XKgK2b42i-jfnLc0lBPiBMsGA6HMQ4a12mJc09tMAFc,2752
10
10
  maxframe/mixin.py,sha256=QfX0KqVIWDlVDSFs0lwdzLexw7lS7W_IUuK7aY1Ib8c,3624
11
11
  maxframe/opcodes.py,sha256=4Gj2svgrNNxylfUbQYs8WbDqTpoCoLtlNCtAYdHr-BU,10781
12
- maxframe/protocol.py,sha256=3SvkrIxd-NoDpUdJnYPUhzIkX5G53krG_DkynO96ivQ,18330
12
+ maxframe/protocol.py,sha256=qutT0HUB2-7Wq36621aPbwZe1OcG-a4lxfVBvrgvW2g,19919
13
13
  maxframe/session.py,sha256=CfDT2iwjl5NAisPrZ6LF0xG_hr75Wr0cfHd6rvtHajw,37515
14
14
  maxframe/typing_.py,sha256=pAgOhHHSM376N7PJLtNXvS5LHNYywz5dIjnA_hHRWSM,1133
15
15
  maxframe/udf.py,sha256=GJre7snHQxkoyUWX0rpDkrGGU8-qA-SmSe2H9nSMEfo,4422
16
- maxframe/utils.py,sha256=ame3LYmU3ByXNk9YLDi5aEru0SpIdMcEb7XCXh08qts,35489
16
+ maxframe/utils.py,sha256=_qJJs67UqY7L_a_pI5yLg_N1fUvPE_JLJChzLdBaawY,35624
17
17
  maxframe/config/__init__.py,sha256=AHo3deaCm1JnbbRX_udboJEDYrYytdvivp9RFxJcumI,671
18
- maxframe/config/config.py,sha256=Z5a2FIBAXD_r9qWv_V6i_ei9zk4h4qOAUsZJxlVtWCM,14181
19
- maxframe/config/validators.py,sha256=pKnloh2kEOBRSsT8ks-zL8XVSaMMVIEvHvwNJlideeo,1672
18
+ maxframe/config/config.py,sha256=crVQq7UY_HyPC7ljteYTyl4sCgUvPKVTM85rQdA7U7w,15148
19
+ maxframe/config/validators.py,sha256=hLW19kJ0TLc-W8SHf2cTenzOHfx86x90Vd4szxW3xcA,1734
20
20
  maxframe/config/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
21
21
  maxframe/config/tests/test_config.py,sha256=FWQZ6KBUG_jY1-KaR-GKXl7khhlTbuLlk3uaEV8koM8,2839
22
22
  maxframe/config/tests/test_validators.py,sha256=kz9Yxiqvl_BJq2CT61JTzfpRyrjm6lFrjqIfqeld_yo,1274
@@ -28,12 +28,12 @@ maxframe/core/entity/chunks.py,sha256=zKk8Iyc3IkakIDW1bMYq_zZNLrR4ZMdXH-mBuOiFer
28
28
  maxframe/core/entity/core.py,sha256=aFwjNMhTJ4ybr1WzmMVSTG211fzutzaATs14QoNh-JM,4170
29
29
  maxframe/core/entity/executable.py,sha256=CKxFGvFPfY_8JBprhpyndhTSLgVLtUG4G5n7Dw0dHnw,11275
30
30
  maxframe/core/entity/fuse.py,sha256=X1lI0WXj5t0flgGI5-qlVl5LoYkAdLJHk2Vv767C9G4,2350
31
- maxframe/core/entity/objects.py,sha256=-cnPtk7LBIcFk4d7CY6MwDhlkoW42Xv3qdI2CD03puA,1898
31
+ maxframe/core/entity/objects.py,sha256=DmsR_XsbUVALF5jae6ANNBn_WtIZ3nh9Ukqofhp61Bw,1899
32
32
  maxframe/core/entity/output_types.py,sha256=NnNeDBVAEhD8dtPBWzpM7n6s8neVFrahjd0zMGWroCc,2735
33
33
  maxframe/core/entity/tileables.py,sha256=6jJyFscvb8sH5K_k2VaNGeUm8YrpevCtou3WSUl4Dw8,13973
34
34
  maxframe/core/entity/utils.py,sha256=454RYVbTMVW_8KnfDqUPec4kz1p98izVTC2OrzhOkao,966
35
35
  maxframe/core/graph/__init__.py,sha256=n1WiszgVu0VdXsk12oiAyggduNwu-1-9YKnfZqvmmXk,838
36
- maxframe/core/graph/core.cp310-win32.pyd,sha256=w5B7mwar_UDVL7ct3Kn8V2GCL8mXYo4-BJDilbAnj1A,218112
36
+ maxframe/core/graph/core.cp310-win32.pyd,sha256=1_x2CuOqXgvv547x6aq1ArEkQdTJ5LaGVjc0vtehALo,218112
37
37
  maxframe/core/graph/core.pyx,sha256=J619C6xfVCF8NQ8oeinhICYSg-w5ecX-dnBI7NB-6n0,16390
38
38
  maxframe/core/graph/entity.py,sha256=RT_xbP5niUN5D6gqZ5Pg1vUegHn8bqPk8G8A30quOVA,5730
39
39
  maxframe/core/graph/builder/__init__.py,sha256=vTRY5xRPOMHUsK0jAtNIb1BjSPGqi_6lv86AroiiiL4,718
@@ -54,12 +54,12 @@ maxframe/core/operator/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH
54
54
  maxframe/core/operator/tests/test_core.py,sha256=iqZk4AWubFLO24V_VeV6SEy5xrzBFLP9qKK6tKO0SGs,1755
55
55
  maxframe/core/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
56
56
  maxframe/core/tests/test_mode.py,sha256=fyRH-ksa6MogEs6kNhtXhCZyvhYqflgaXJYI3nSo-ps,2507
57
- maxframe/dataframe/__init__.py,sha256=6wzq6JcohLtvR9kkE2Pc476ExNGslCFRijKFE_R6PB8,2318
57
+ maxframe/dataframe/__init__.py,sha256=FqEhQAdEx5W8-P8mG3Wwzx-gJcScVpcqkaDAp6ejWgU,2323
58
58
  maxframe/dataframe/arrays.py,sha256=rOvhxMQars9E3SOYSu0ygBuuRVY0QV6xzengnMqKs4s,29616
59
- maxframe/dataframe/core.py,sha256=fOrn9ehPmZnymO-r586jpWW9DTMGt7HWvFMwv-JOrjM,76830
59
+ maxframe/dataframe/core.py,sha256=TYdl7KJwaJStivYErdT-57OhFn6S-OzP9SaCIacq7fA,76791
60
60
  maxframe/dataframe/initializer.py,sha256=WW96yQjquofNFt6RPZvgWW4SBmH0OEDj8-BxpuyKThY,10552
61
61
  maxframe/dataframe/operators.py,sha256=jl611oPN5TGpf6UDuIwcLUsjmTcbVBNLLd6cvq8TvKo,8144
62
- maxframe/dataframe/utils.py,sha256=nYpTY5TmpJGs2_1VQBNxR_6miPTcdpIbqgw0aqh1Axo,45539
62
+ maxframe/dataframe/utils.py,sha256=sonPqTu6vwXg5lxYFsZg3ZjUsQhTokpdngH_R0-3Kjg,45477
63
63
  maxframe/dataframe/arithmetic/__init__.py,sha256=MPnITPuO7DDjAMTBawpennv6D0V9AnT6oF0nz2KUIqc,12837
64
64
  maxframe/dataframe/arithmetic/abs.py,sha256=EgyzciSwjE_I3ZBuzeVJFVzBHsxn9MWzCtvHgyEl6ek,1016
65
65
  maxframe/dataframe/arithmetic/add.py,sha256=wbmfAZgxjuP02ZUV4-VEsNhJlyo9tytXwkEx65ahuxI,1766
@@ -69,16 +69,16 @@ maxframe/dataframe/arithmetic/arcsin.py,sha256=z1s2UUosWOjKxp3qkC2XKJ4MeK3l3txQ2
69
69
  maxframe/dataframe/arithmetic/arcsinh.py,sha256=EbGXb8IrpHjBrGLDJxFpVgSUpJ3oiFgbzoVHKH4SzHo,963
70
70
  maxframe/dataframe/arithmetic/arctan.py,sha256=bYEkgWV7Etqq8DjnSaXWdTn736NHW-R7Va4wy83DcL0,958
71
71
  maxframe/dataframe/arithmetic/arctanh.py,sha256=USWdXHQU99W4PCsLpaen5kN3QlqaxMp-e9LIGnbIa4Y,963
72
- maxframe/dataframe/arithmetic/around.py,sha256=7x5GprO-pivegVZwJJxP6BEYRKHqVNOLVxVFUMau9Fg,4290
72
+ maxframe/dataframe/arithmetic/around.py,sha256=L5Akz-F4F-6zNSp9VamH-VZ0OkmbVBDjtAIO9m2kP6Y,3963
73
73
  maxframe/dataframe/arithmetic/bitwise_and.py,sha256=NWbfauXqEUW9N0mjy9SfdTMYpP6-Qjb1rFMM63OwSEw,1473
74
74
  maxframe/dataframe/arithmetic/bitwise_or.py,sha256=a3HW12Wz_XTGJQU0yuhFm_USY4A4ex4aSNNKh6yMFxM,1596
75
75
  maxframe/dataframe/arithmetic/bitwise_xor.py,sha256=jQmUMreUiOTlYraPEDhcdrYrtZisTRTX68Lll3uk818,1472
76
76
  maxframe/dataframe/arithmetic/ceil.py,sha256=YnNA0N6GRd3GfJfmq3Yc5nu95vqIteKzf7pRQ_sQ9Wk,948
77
- maxframe/dataframe/arithmetic/core.py,sha256=R5TklGPxLmbasTJLdHe7XTC0RsGJIErMon0nTpu-7eQ,14101
77
+ maxframe/dataframe/arithmetic/core.py,sha256=GJWdYOXmKhvessF1c7AiKl_-uHE6SQR-FzNfkgBnYNk,14409
78
78
  maxframe/dataframe/arithmetic/cos.py,sha256=7eWAEOvO8RePY6Bs3FDoSFtL57fBJdvLJRslx8Or63o,943
79
79
  maxframe/dataframe/arithmetic/cosh.py,sha256=X15rxbk0RymYTTG0ISUvtZCl2T3YIQvx-w3aTtMVjyc,948
80
80
  maxframe/dataframe/arithmetic/degrees.py,sha256=AdkR27ECvXJxNtie2pdiTcSu_mlX5zuhnljO_DL9OzQ,963
81
- maxframe/dataframe/arithmetic/docstring.py,sha256=K_l-akPUZ_XgDscehXWzk_QRKYH4rvszBWmXi_z1KO0,12961
81
+ maxframe/dataframe/arithmetic/docstring.py,sha256=bgj6BB3g_mRH1WqG2MMD4fRnG8LOxEu4krVVWmZhhRM,11466
82
82
  maxframe/dataframe/arithmetic/equal.py,sha256=PUlH2Hxmg2PJxSLCFPzec_EDgTX5x4iuxqSaJzziYnk,1519
83
83
  maxframe/dataframe/arithmetic/exp.py,sha256=22_EHcKx3d0x880QqPQYY_x8rUqaRhgTqAgvPrSt0PM,943
84
84
  maxframe/dataframe/arithmetic/exp2.py,sha256=3dRamSqFmgnRFVbjP3-8K4MX46uryNuZZwoif4zHsRI,948
@@ -109,22 +109,22 @@ maxframe/dataframe/arithmetic/tanh.py,sha256=mbGIJLCLPypcwbZhGdqfboFKVQ7RSy-B0lA
109
109
  maxframe/dataframe/arithmetic/truediv.py,sha256=MpvDwQ4SZ6ugXF04oFv0kheMcx-EcgkXeIBiPjh6MQQ,1872
110
110
  maxframe/dataframe/arithmetic/trunc.py,sha256=ji9K9VRxvDPfODJmZ_yKBY885YKTWwdGK99kx4ZEZ5U,953
111
111
  maxframe/dataframe/arithmetic/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
112
- maxframe/dataframe/arithmetic/tests/test_arithmetic.py,sha256=O7hK1y2mYwV15CYF1Ce9h9BbXStaKO3lGyqVbwBgLgI,25067
112
+ maxframe/dataframe/arithmetic/tests/test_arithmetic.py,sha256=VGoBadh4ahFXR5TJEVE3BK-dRqYCf5jo1yus5ekyjBM,25974
113
113
  maxframe/dataframe/datasource/__init__.py,sha256=SX8ZXJsvQYntLZiEk-X1LmbF6v6k-Kaueh0R04N2eCQ,655
114
114
  maxframe/dataframe/datasource/core.py,sha256=1X32MxCU3Y5vxTVEIkNNXx29eIARyRCvnkVe7ThT0wI,2768
115
115
  maxframe/dataframe/datasource/dataframe.py,sha256=P3kvDS_Jh6EGgJRVfh_rHVkVfMaHeGQ2U7rZT5Gr2Tk,2082
116
- maxframe/dataframe/datasource/date_range.py,sha256=At-TQwqMiTEshSk4gQvxpq0wSEibC0FwpMDnwcjaI4o,17748
116
+ maxframe/dataframe/datasource/date_range.py,sha256=wmralVkR1F7vYKnOAQA34gXqHE6MwqUuKAgVodsk8f8,17731
117
117
  maxframe/dataframe/datasource/from_index.py,sha256=c6ecX7miuig3-uZB3-aj68TkpUypzpaogZsUZSbTtBs,1911
118
118
  maxframe/dataframe/datasource/from_records.py,sha256=ygpKOMXZnDdWzGxMxQ4KdGv-tJFT_yhpLGnDlS1rNLc,3549
119
119
  maxframe/dataframe/datasource/from_tensor.py,sha256=mShHYi0fZcG7ZShFVgIezaphh8tSFqR9-nQMm5YKIhw,15146
120
120
  maxframe/dataframe/datasource/index.py,sha256=X_NShW67nYJGxaWp3qOrvyInNkz9L-XHjbApU4fHoes,4518
121
121
  maxframe/dataframe/datasource/read_csv.py,sha256=IvQihmpcZIdzSD7ziX92aTAHNyP5WnTgd2cZz_h43sQ,24668
122
- maxframe/dataframe/datasource/read_odps_query.py,sha256=6Z8yCSIG96PJFq8B3wk2D29xGedj7y3vV24vGbpoSUA,10269
123
- maxframe/dataframe/datasource/read_odps_table.py,sha256=d_8jeOMuxyo69l2BYR_kSMI6Ixv25BtqF95YtY9r1Pk,9425
122
+ maxframe/dataframe/datasource/read_odps_query.py,sha256=3pZEucsj_sQRKEFOh6_JGcgQTDbwkb-_PGen5Kfz2w4,10522
123
+ maxframe/dataframe/datasource/read_odps_table.py,sha256=tAkztS5SxCWtpMHOSANR9-IB703Ub0vDMp1YJ8wT68I,9479
124
124
  maxframe/dataframe/datasource/read_parquet.py,sha256=SZPrWoax2mwMBNvRk_3lkS72pZLe-_X_GwQ1JROBMs4,14952
125
125
  maxframe/dataframe/datasource/series.py,sha256=elQVupKETh-hUHI2fTu8TRxBE729Vyrmpjx17XlRV-8,1964
126
126
  maxframe/dataframe/datasource/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
127
- maxframe/dataframe/datasource/tests/test_datasource.py,sha256=UumRBjE-bIuCi7Z4_3t8qb58ZcF8ePRZf3xF7DTvqIA,15041
127
+ maxframe/dataframe/datasource/tests/test_datasource.py,sha256=1RbSSg2WBs3d4E1m-kk70-begcdQuBcJ2RiZzBu3kn0,15488
128
128
  maxframe/dataframe/datastore/__init__.py,sha256=MmlHYvFacMReOHDQMXF-z2bCsLyrSHYBVwIlCsZGOK4,810
129
129
  maxframe/dataframe/datastore/core.py,sha256=HCqrZN47RP-IC6zDqLX_RErDUAWkcTB58FHNU70V2b4,762
130
130
  maxframe/dataframe/datastore/to_csv.py,sha256=sns4bBgNpq7Ihb-goNqaBRdiEtrG-V6jqhNkWGZ1YaE,7974
@@ -142,16 +142,16 @@ maxframe/dataframe/groupby/__init__.py,sha256=wMjmvk4ced1uCm7bw0oodIKvaep61Khupr
142
142
  maxframe/dataframe/groupby/aggregation.py,sha256=cUnu-Bj6YD1TVkaafwL2aGIIqixLEq7s9-7BQ_1T2DI,12303
143
143
  maxframe/dataframe/groupby/apply.py,sha256=DQHyEfqj-3tfK-CxwpdVgya0_YC9dImeWYPZJDw7ckk,9735
144
144
  maxframe/dataframe/groupby/core.py,sha256=NG6e3sqIu5dnBw9_DCQEDtsnxM5e4Yl1oD7Z_qjdtWA,6254
145
- maxframe/dataframe/groupby/cum.py,sha256=A7vIWLsb50VLu3yAngO-BfZecjWj0Fk6TZ5v4uQEAPM,3879
145
+ maxframe/dataframe/groupby/cum.py,sha256=T5fVdcy8XzLjrTE7NNqkwVgydg_aKM8xhlcWCsjsHwM,3806
146
146
  maxframe/dataframe/groupby/fill.py,sha256=AXRmA_j-m7ig0udLCJ02FwIce2GLQ2U8KlnuCe-NY3U,4862
147
147
  maxframe/dataframe/groupby/getitem.py,sha256=owNzoE8UEfM41dfuntKkRBjjYYbY8O8CMJchIhCEyds,3344
148
148
  maxframe/dataframe/groupby/head.py,sha256=idlO3MCVKgHYmLsBrPMsUpxt3Zbha07r_ZJXJZy5P3k,3371
149
149
  maxframe/dataframe/groupby/sample.py,sha256=bM7xrF4dzAM8lA0gtkglEfmys1og27dwCm9UiFayJTU,7149
150
150
  maxframe/dataframe/groupby/transform.py,sha256=1Gn4uOydtRMwFo-CUXrSTyOwlbuJyeWNIzcf6VAIN2w,8841
151
151
  maxframe/dataframe/groupby/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
152
- maxframe/dataframe/groupby/tests/test_groupby.py,sha256=GiFRklxfp9RAD7jwuvNRbhg9mROpKPFxfXGtNhFWFCI,12516
152
+ maxframe/dataframe/groupby/tests/test_groupby.py,sha256=oidpLtSA3fhZldVRQ5-3PnfXKnyclqR-ApiNgzh-yzk,12740
153
153
  maxframe/dataframe/indexing/__init__.py,sha256=AkjowbPJu6kM4fJF5baU6g6FA7n2ux5__f4_2budLSs,3297
154
- maxframe/dataframe/indexing/add_prefix_suffix.py,sha256=YMHFXnVcFsRJfVIOHlTWkOGCqzxWAJam3SXmIRjKGKk,3076
154
+ maxframe/dataframe/indexing/add_prefix_suffix.py,sha256=YT8sIKWWy_t0dkuzvTlWM4n9Ni9m2TeCvADrhS5xX6E,3080
155
155
  maxframe/dataframe/indexing/align.py,sha256=-kV91o_-pq7rFsv0zgnGZuEyn8HqyUK_Ejv4VWF5fps,12434
156
156
  maxframe/dataframe/indexing/at.py,sha256=7Igb4I9_9drZSCZITFRNL3Q-7EI_mtfklUrnNP0apHo,2300
157
157
  maxframe/dataframe/indexing/getitem.py,sha256=eS8dnlMEP2zaYvzYZFlBNfwjD89UqT0MRIlNuDcAJQc,7958
@@ -160,12 +160,12 @@ maxframe/dataframe/indexing/iloc.py,sha256=O4lCMV2Q0GtSM3_FbKY6rl_1WUGcae-H2wHvC
160
160
  maxframe/dataframe/indexing/insert.py,sha256=bvKdAswI688hOIaL9EvU7LnbjpELUdv5QS7rogSn_5U,2997
161
161
  maxframe/dataframe/indexing/loc.py,sha256=senwgO_ijLJtbzaeqS_CMefV8nlf3guEQXKdSQcwYy0,15256
162
162
  maxframe/dataframe/indexing/reindex.py,sha256=v4Rd85aNfh3onzcFqOhdUjiLrDv9QuNtGh-OaWpnG-4,19699
163
- maxframe/dataframe/indexing/rename.py,sha256=E7gI6lHGoBbMnldtErxv5StmS7jrGDdXGtpDusavihA,14009
163
+ maxframe/dataframe/indexing/rename.py,sha256=ZNmURKN4DjMc9jsH8l8uyTXuu4QRFIqMT3TH0bD0oQM,12891
164
164
  maxframe/dataframe/indexing/rename_axis.py,sha256=ugKcve4Kp8EuSmokQFUL-mVhGQ1cd6IDZ3UauHPiFeQ,6511
165
165
  maxframe/dataframe/indexing/reset_index.py,sha256=_NFQZTjHzc_IgiqC-aqFJUfjneyJUN42-ujxGPfBVnQ,13524
166
- maxframe/dataframe/indexing/sample.py,sha256=cVpmTV4q0Lo5dK3RdIpP3G5Yo6A6rwCRcqQ-rBEKnPs,8393
166
+ maxframe/dataframe/indexing/sample.py,sha256=XrgzEugAL_WXJc_OkrWAugXUOIaqg3_OwWBp-hMee9U,8391
167
167
  maxframe/dataframe/indexing/set_axis.py,sha256=ECRV5rRfbsKAQ90nEZVWCtGyu_0hN8ZPTmWNRGIJ0zo,5724
168
- maxframe/dataframe/indexing/set_index.py,sha256=XHX9CA0nvPd0War2GTKgr_FKuir_Tiu1bfQ5qz3vBKo,2180
168
+ maxframe/dataframe/indexing/set_index.py,sha256=sJmXxBh-veIbf0LohLo69FSB2FTuYc0qOsyO7WQFX4k,4323
169
169
  maxframe/dataframe/indexing/setitem.py,sha256=N82AVPJ6iENXNJx7m662jPp2HH-Sb5QZvuOIoDlQJ7w,5134
170
170
  maxframe/dataframe/indexing/where.py,sha256=puKc4XR45KmJxCar8AwWbjJouEqYxW5-SdAWLuwCZ44,8875
171
171
  maxframe/dataframe/indexing/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
@@ -173,31 +173,31 @@ maxframe/dataframe/indexing/tests/test_indexing.py,sha256=F0tHjhVTZyGrE2khpxGIAv
173
173
  maxframe/dataframe/merge/__init__.py,sha256=QpaBvmmhCpnHqvJ35nX4FZ-MpPxkTrQod4UxnJWt_II,1069
174
174
  maxframe/dataframe/merge/append.py,sha256=9CgzHZEdnJjDwzuzdTMhodJAeOJJuUVjYT4RMFOW4nI,4973
175
175
  maxframe/dataframe/merge/concat.py,sha256=cIlwVguZTWFx6GX5fTZ3YctKNkn9wP72TpbxKR-F6ng,11807
176
- maxframe/dataframe/merge/merge.py,sha256=2bqjWlpW_EAbeyYhzQo1nKJ3l7DZJoSuxFmTfHej1X4,22231
176
+ maxframe/dataframe/merge/merge.py,sha256=_HZTybk_XKaSiBG_WLVYyQf1Z9FZVSpAyDK53h1giOI,31250
177
177
  maxframe/dataframe/merge/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
178
- maxframe/dataframe/merge/tests/test_merge.py,sha256=Mkk2f_NnxPqtG_2AyeG_Bt-CdY-JOcNuJ9ADCDA30H4,7480
178
+ maxframe/dataframe/merge/tests/test_merge.py,sha256=qRreRSpPIq3Yp1ARKhYgrNmwAIcWfF014imrlL3qJqk,11488
179
179
  maxframe/dataframe/misc/__init__.py,sha256=Lq82VMR4qWhYD1lYTbj8Wr7ndOh0CNATdOtlOikuZRQ,5401
180
180
  maxframe/dataframe/misc/_duplicate.py,sha256=EYNv1_sKm14d91Gm4_Buxo7b5Tuy93MOvaq1TTAUkis,1516
181
181
  maxframe/dataframe/misc/accessor.py,sha256=XtbMV6QrYb2m9oAd8swkFoKAq5mxj_QO0LVLVw5uJB4,10303
182
- maxframe/dataframe/misc/apply.py,sha256=hAuN5P9DrWVfHwXi1MZBQrAe0nRiTDHUc4nJvKC2XMk,24130
182
+ maxframe/dataframe/misc/apply.py,sha256=BIaBSjx-KxkdubPc_N_C_F5uuaV4aIdRdiPsZhN-7Qg,24057
183
183
  maxframe/dataframe/misc/astype.py,sha256=9CO4BEW98Flqk7HHWScjxRK8EdeTRgQDYcyRwEnyIB0,8033
184
- maxframe/dataframe/misc/case_when.py,sha256=txasRkyfwn2QCEVZ7W0lrI3_ia0PKwBRFBy6TLrQh1I,4992
184
+ maxframe/dataframe/misc/case_when.py,sha256=ApjsHykW53a61Rfe034S0wT1X6lzWk5zYJ7vIsaiQIc,5002
185
185
  maxframe/dataframe/misc/check_monotonic.py,sha256=LDltdmPq90fZn8A0ucqpNy0uswKo2hJx59Y4EHSN9l4,2506
186
186
  maxframe/dataframe/misc/cut.py,sha256=dOKWwd1D2CYU9LVQvfonMrD8E2eGeBONZvWN1ArCfMM,14288
187
187
  maxframe/dataframe/misc/datetimes.py,sha256=zR99O-8EKKWt4UtNdPI22K8N9mP9XSs9lDQLBPEmFlo,2582
188
- maxframe/dataframe/misc/describe.py,sha256=jPj3NZuWJ0T37kWFEs2kVWcKxJzoCXel5FuudGVJ0vU,4495
188
+ maxframe/dataframe/misc/describe.py,sha256=PaddhvhKVZDkG6WuWGWi3LL7Vg8uny_3WzlVbdKZseQ,4478
189
189
  maxframe/dataframe/misc/diff.py,sha256=j6C0PNb4eufB7ZU-mAXNNIC8y1wzHd6MHS-IWTz606E,5701
190
190
  maxframe/dataframe/misc/drop.py,sha256=UDP1EWpHPa0tkpjvNPIcstAiWoMainCMcvV7wefH7RA,13469
191
- maxframe/dataframe/misc/drop_duplicates.py,sha256=r-DMTWbDvEFGU4xKYFxgmMo64-dGV5WYzNwsrFtgou0,8595
191
+ maxframe/dataframe/misc/drop_duplicates.py,sha256=1Ax1QXghtk3bNZnvBaVDr4OMpR33WM_NU0dgZBYZMgc,8078
192
192
  maxframe/dataframe/misc/duplicated.py,sha256=w5aXwtDn5_ZbvnB0oCOoTE7EJQ6cdSnhTjL8SMci0Tw,8826
193
- maxframe/dataframe/misc/eval.py,sha256=1QdME2QuWOacxLxO2DjpeBYe8wJLx-SwBvH-GLDS0-0,24991
193
+ maxframe/dataframe/misc/eval.py,sha256=3UuqaMW0Pe6CRh82XtKiNNuWeJOyz_hzhzRZ2zqpBLQ,25091
194
194
  maxframe/dataframe/misc/explode.py,sha256=aWQObjpxgPCCm87Lc1cavqotETz6xVLm8HSsPhM3n5k,5182
195
195
  maxframe/dataframe/misc/get_dummies.py,sha256=fkoGya2HUVMlJviEfCy1toedfa_gOro_E0xrl-azGDg,7295
196
196
  maxframe/dataframe/misc/isin.py,sha256=mqce_GgIkT390glXJ4jq4JEcRYhpbJNkN6tqP-8x078,7148
197
197
  maxframe/dataframe/misc/map.py,sha256=NSsQvOFrRvULVHPOfJk3B_tIh2IRU4IE0oOF2qkL4mE,8385
198
198
  maxframe/dataframe/misc/melt.py,sha256=LoqZ45-J8WvXixtFEbEF1UCtZy4-E6loFtVdFghgt0A,5282
199
199
  maxframe/dataframe/misc/memory_usage.py,sha256=3d6g2lAW7R4BV_vpUpn2-BFs9cwbEW03UH-6AEhmue0,8137
200
- maxframe/dataframe/misc/pct_change.py,sha256=V4D2MH7b2EmtCHVKwYxX4wcGsuj1EBruwIXlJ5mAZ_c,4736
200
+ maxframe/dataframe/misc/pct_change.py,sha256=-T22ebhiTy7psZS9xE1087xKDuznasaNwoGXs5yYZPc,2584
201
201
  maxframe/dataframe/misc/pivot_table.py,sha256=5HmAdczDMJbznFq2omuBKjjib0WvTrohXGwCtHAMwOY,9782
202
202
  maxframe/dataframe/misc/qcut.py,sha256=kcYhSf6m47u5zIEPgG98nE3hv57e6uuCuJs_dxpcszE,3841
203
203
  maxframe/dataframe/misc/select_dtypes.py,sha256=qsrWW8BNBd-hAT1yIlrnbvBjfbzZyttzch7bxKgRkCg,3248
@@ -205,15 +205,15 @@ maxframe/dataframe/misc/shift.py,sha256=HCGKBuToksgu5LZR_k5eaQrdyrXCeqRZYbZs0J5-
205
205
  maxframe/dataframe/misc/stack.py,sha256=a3eWRUnFQ4okGUEirsdIq9taLfcRTCKnLfcXHg-sce8,8200
206
206
  maxframe/dataframe/misc/string_.py,sha256=AaEfHcPAJWZ8Ug-zbD0gjaBfuFXWfHDXbrHQ1Kaqes4,8322
207
207
  maxframe/dataframe/misc/to_numeric.py,sha256=VxYijzFTiUD9Jc62fE24tZ3iB8EVb9cBqZwvQFt2bHA,6440
208
- maxframe/dataframe/misc/transform.py,sha256=JotPUQzKGhCLRi53sk7USU9HscNjUKCzzus9PgTyhHU,12000
208
+ maxframe/dataframe/misc/transform.py,sha256=NabM88Ix5fFaH_waStAdjylj3BGT_Uel0c0pH1t8o90,11252
209
209
  maxframe/dataframe/misc/transpose.py,sha256=SsKRuN9Pj36D6kntnsLfzBsFHjSCiV1cZuPJuKHgbGU,3772
210
- maxframe/dataframe/misc/value_counts.py,sha256=7Yd3ZSrCRDMRX093IlzdsrTJ5UUx0n_lbD5AmXLUr_U,5674
210
+ maxframe/dataframe/misc/value_counts.py,sha256=EpgfnbPbndrTKgTE_xgZGW-uHZDw1MIWQUF40oGGWUI,5384
211
211
  maxframe/dataframe/misc/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
212
212
  maxframe/dataframe/misc/tests/test_misc.py,sha256=7P3-dJwsMVhD6ft5HNXorUp-SnO8o9eTTAoFGXzhiNg,16121
213
213
  maxframe/dataframe/missing/__init__.py,sha256=DQDpYqjvXN6o6TF76wJIpf1fZICOEJskljzwDNjN80k,1866
214
214
  maxframe/dataframe/missing/checkna.py,sha256=_Rd-HRX7lTzMV3myu745tzoTB8WIqDIJu2TcT1SfdB0,7113
215
- maxframe/dataframe/missing/dropna.py,sha256=fJ7xUmhWnViyPnW6nKTF3u2dktqsuwGimSyO71mh0kk,8518
216
- maxframe/dataframe/missing/fillna.py,sha256=U7pMLOk4aTXa9R5Ysqa_H8bkUWNVgyO3rjo_QII50hQ,9180
215
+ maxframe/dataframe/missing/dropna.py,sha256=at89SeMZxHZdmSFOInwtz7ap4g9Vy_4W4OK_Bj6DWpc,8520
216
+ maxframe/dataframe/missing/fillna.py,sha256=GIOayBXUBSQf6Enf8IR2UuVOvru3lR2SlXhiTLonM_w,9180
217
217
  maxframe/dataframe/missing/replace.py,sha256=g9KqENIuuaFW33KIFXTClngWcVu2ttrGa28UwbtQJ8o,13779
218
218
  maxframe/dataframe/missing/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
219
219
  maxframe/dataframe/missing/tests/test_missing.py,sha256=zhsgn-yonyXYhlFZtH2OpXtvN0NLxFOZpU_vCumTCqA,3223
@@ -251,12 +251,12 @@ maxframe/dataframe/reduction/tests/test_reduction.py,sha256=yXQNP838jNuDjev3JuLj
251
251
  maxframe/dataframe/sort/__init__.py,sha256=57j5S4NVcmcgI5pKlEWEio3qbtxdUCFA3B9sP1QJafU,1194
252
252
  maxframe/dataframe/sort/core.py,sha256=FxwuboZE5yuAtCCj7EWntuk_ueaMdM25JZKrArHY_yQ,1260
253
253
  maxframe/dataframe/sort/sort_index.py,sha256=R7PiCuI7kmoWX4EsmyJyqciettWi4CJl6_RMKZdxrmI,5565
254
- maxframe/dataframe/sort/sort_values.py,sha256=kPTaKVZzqSkMKTPLXANoK_NKK4IwShqXev6Kyo9kKEo,9179
254
+ maxframe/dataframe/sort/sort_values.py,sha256=Zw_JEA3VOukd9HSpxqBeIcMgU4qtjrbCQ3vC-7jwGng,9003
255
255
  maxframe/dataframe/sort/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
256
256
  maxframe/dataframe/sort/tests/test_sort.py,sha256=2KwQP4eyAL7rflYrbei9ocU5oum3NjiGurWirR2GzHg,2685
257
257
  maxframe/dataframe/statistics/__init__.py,sha256=gC4z9SHj8mG1EECYiMNeGPNF3aie1AOw8UATmiLG-bo,1117
258
258
  maxframe/dataframe/statistics/corr.py,sha256=ufSCKpITCR8HnKc7osxnxDwg8hvptrcKOjIeKsF4eB4,9763
259
- maxframe/dataframe/statistics/quantile.py,sha256=fISgDO8cMFKn1yjCV07BpowBYsS5HYwvBZkOCdglUJU,12054
259
+ maxframe/dataframe/statistics/quantile.py,sha256=v_Ff05C8eE9Suq3k_G_KWMHcfGvduS0Oap0PyOfknUY,11632
260
260
  maxframe/dataframe/statistics/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
261
261
  maxframe/dataframe/statistics/tests/test_statistics.py,sha256=tvk_kTcOuzRLFspidSPVoZrBVtVsbHhGb16LU-Vr3lU,2812
262
262
  maxframe/dataframe/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
@@ -289,10 +289,10 @@ maxframe/learn/contrib/pytorch/tests/test_pytorch.py,sha256=GHP-oD5uMU8LD90Jt2cH
289
289
  maxframe/learn/contrib/xgboost/__init__.py,sha256=vk9xZO_FUwyVCrcLP1dbEz6JCZQBEHsmhGr1uQ45FAI,925
290
290
  maxframe/learn/contrib/xgboost/classifier.py,sha256=DWvQ9_GLg-ZeSFQp6NN5-7_BA9NxkpxEv5WtuodU31o,3022
291
291
  maxframe/learn/contrib/xgboost/core.py,sha256=RzGTONv1WgDb0ZXUxzDDkbqepvznAPRyjSgD2N4MdPc,5350
292
- maxframe/learn/contrib/xgboost/dmatrix.py,sha256=8bCcfJGG84s7sKBNcw4urvwPWqX6mMvEN_KyaL52JxM,5006
293
- maxframe/learn/contrib/xgboost/predict.py,sha256=FOrLkzjoYjxJZdrisy_bXoRBA8itdGuaP3QDV1hzDl0,4802
292
+ maxframe/learn/contrib/xgboost/dmatrix.py,sha256=LsmCpda7_g6UjY3803ltDQN3uJDhN8j226ky8tb2Tzg,4989
293
+ maxframe/learn/contrib/xgboost/predict.py,sha256=CvjOunt8Ir3spP4baMq9Gcq0uCV_mCSli7K7g1qTLDU,4785
294
294
  maxframe/learn/contrib/xgboost/regressor.py,sha256=osuNG4N1SILgjL-CodYnM9ODwewaVi4-8tHdfWZWJpg,2610
295
- maxframe/learn/contrib/xgboost/train.py,sha256=yn2_45hDvuAi4VKkFPR11i38o0mrFaNJ668qBnj2wDI,4079
295
+ maxframe/learn/contrib/xgboost/train.py,sha256=IlVYmf-KYb0uSqdIVSwEsx4jwTJHr9d-44hiqY1jNSM,4062
296
296
  maxframe/learn/contrib/xgboost/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
297
297
  maxframe/learn/contrib/xgboost/tests/test_core.py,sha256=qNSXaB1t1vpoCD6RfpnFjJZHS8ShW9O_uz0ucXXlfpE,1449
298
298
  maxframe/learn/utils/__init__.py,sha256=w2_QpDZ9J5BcSgbqu8P2RlkVRWC2gLowfgsaDPtz_Pg,661
@@ -300,7 +300,7 @@ maxframe/learn/utils/core.py,sha256=WNDISxPFsWmjkwHwEvjVGCkAOkIftqzEQFPA_KWr7FY,
300
300
  maxframe/lib/__init__.py,sha256=_PB28W40qku6YiT8fJYqdmEdRMQfelOwGeksCOZJfCc,657
301
301
  maxframe/lib/compression.py,sha256=QQpNK79iUC9zck74I0HKMhapSRnLBXtTRyS91taEVIc,1497
302
302
  maxframe/lib/functools_compat.py,sha256=2LTrkSw5i-z5E9XCtZzfg9-0vPrYxicKvDjnnNrAL1Q,2697
303
- maxframe/lib/mmh3.cp310-win32.pyd,sha256=0F-3_OYn6_WVBuChrILkC4prw34m7IdFa9wAWFca-W0,15360
303
+ maxframe/lib/mmh3.cp310-win32.pyd,sha256=P6cs2d2Otc1YT9pd7NcHy0h8ElEL-xGeBexPmKR_SGY,15360
304
304
  maxframe/lib/mmh3.pyi,sha256=pkzO6SUUukCty3X-WFsuokWBtIPWyxEa06ypF9liruI,1537
305
305
  maxframe/lib/version.py,sha256=VOVZu3KHS53YUsb_vQsT7AyHwcCWAgc-3bBqV5ANcbQ,18941
306
306
  maxframe/lib/wrapped_pickle.py,sha256=Akx-qhMMJJ6VVzQYrcVO_umFjx0IR-Yzb1XqyOS1Mio,3976
@@ -349,22 +349,22 @@ maxframe/lib/tblib/decorators.py,sha256=377HT3gnD9B2dcxw75pHM17--ABkcgi_GQGmdA_M
349
349
  maxframe/lib/tblib/pickling_support.py,sha256=D9A0eX7gJeyqhXWxJJZ1GRwwcc5lj86wBRh0tmo6GHk,3025
350
350
  maxframe/lib/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
351
351
  maxframe/lib/tests/test_wrapped_pickle.py,sha256=WV0EJQ1hTSp8xjuosWWtEO7PeiBqdDUYgStxp72_c94,1575
352
- maxframe/odpsio/__init__.py,sha256=0SesD04XxFli4Gp23ipMkefFQ2ZTB0PItwZoSHpDC-k,820
353
- maxframe/odpsio/arrow.py,sha256=pFw7aP7u8maEnXXF63VpMbI2qrOvWl78dYWGqHkXuJA,3884
354
- maxframe/odpsio/schema.py,sha256=Hba-eCXnBUS6NxHRsshaohzO1eThm4HeVzzvAF7E3Vg,12479
355
- maxframe/odpsio/tableio.py,sha256=ugLy15g2JoCD3GHhCRrH9PT9g9hyKfwrC71qXEVqvB0,10470
352
+ maxframe/odpsio/__init__.py,sha256=NjyhtdmOuFrEBB5nfVtS_lngdjNKL26yZwYy4HTc40s,833
353
+ maxframe/odpsio/arrow.py,sha256=3GTTaA-VpsFAU_8wurmr4QRGkW7yB3KKTdXrtFrqrTs,4017
354
+ maxframe/odpsio/schema.py,sha256=ipHxt3FWPdxNHpeEV9FcY-dJjm07znM1wI5xtIIGLLc,12680
355
+ maxframe/odpsio/tableio.py,sha256=3iUrmInpC_4CAbFWNPvxPNyUPy5mq456NfpEAKRNLKk,24531
356
356
  maxframe/odpsio/volumeio.py,sha256=IT_OO-RG2rJZOEx8C8xRr0oNR358RSAJQAp6WGxeXzI,3838
357
357
  maxframe/odpsio/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
358
358
  maxframe/odpsio/tests/test_arrow.py,sha256=yeDWFzsm2IMS-k6jimlQ7uim5T6WW1Anuy8didaf4cs,3194
359
- maxframe/odpsio/tests/test_schema.py,sha256=QekMLBWu98IUN6mCloOxEQU0-7RL5OKzV8EE3A17wfU,12255
360
- maxframe/odpsio/tests/test_tableio.py,sha256=ZyQxBAVA5GG3j_NOPTTFs5vCQqQywhRKC9OAJx9LJxM,4789
359
+ maxframe/odpsio/tests/test_schema.py,sha256=_qXr_EqhG2tLsetxiSkuZitoZ55bQkqguK2eWBxWF68,12263
360
+ maxframe/odpsio/tests/test_tableio.py,sha256=Z6eR-DDNwlatyKQ0AEpemhjiLLSW2KqvxgQ7csRwIxY,5766
361
361
  maxframe/odpsio/tests/test_volumeio.py,sha256=xvnrPZueZ76OAWK2zW_tHHI_cDxo7gJXTHiEe0lkmjk,3112
362
362
  maxframe/remote/__init__.py,sha256=Yu1ZDLICbehNfd1ur7_2bnIn2VFIsTxH_cILCbHAeZY,747
363
363
  maxframe/remote/core.py,sha256=w_eTDEs0O7iIzLn1YrMGh2gcNAzzbqV0mx2bRT7su_U,7001
364
364
  maxframe/remote/run_script.py,sha256=k93-vaFLUanWoBRai4-78DX_SLeZ8_rbbxcCtOIXZO8,3677
365
365
  maxframe/serialization/__init__.py,sha256=nxxU7CI6MRcL3sjA1KmLkpTGKA3KG30FKl-MJJ0MCdI,947
366
366
  maxframe/serialization/arrow.py,sha256=OMeDjLcPgagqzokG7g3Vhwm6Xw1j-Kph1V2QsIwi6dw,3513
367
- maxframe/serialization/core.cp310-win32.pyd,sha256=cYpfjKq3dhpnE3OLjxJzexOlnobagxl08OD20hnISOs,357888
367
+ maxframe/serialization/core.cp310-win32.pyd,sha256=lfj9fM9TjnlQfEp5YXNKYIkU7PAbunOvPv_xFAXxj_Q,357888
368
368
  maxframe/serialization/core.pxd,sha256=KioRiFhr5DTuqXnS2imJ3djWfSv2IAmhnz-kAFPgU6A,1548
369
369
  maxframe/serialization/core.pyi,sha256=ELDG44v8O7A7RfURExMfVEJENuaEYHTwgJ-vzlH2Vh4,2206
370
370
  maxframe/serialization/core.pyx,sha256=4iyUotIVV8CkVhHo3RyotDP1E7M2C1KMb0_40Ex_h1c,36321
@@ -374,7 +374,7 @@ maxframe/serialization/numpy.py,sha256=ENrFKl24mtYyO1vZRLwHvMD0r4z_UI7J2-yNlmfWS
374
374
  maxframe/serialization/pandas.py,sha256=wqRcZhUd5tMi__7kmvhW1_-DdhBLnW00kz0hDrUvmEY,7522
375
375
  maxframe/serialization/scipy.py,sha256=fGwQ5ZreymrMT8g7TneATfFdKFF7YPNZQqgWgMa3J8M,2498
376
376
  maxframe/serialization/serializables/__init__.py,sha256=rlQhIaSAVzz4KYkc5shEHFZDPd6WDMPkxalU76yjJ3M,1406
377
- maxframe/serialization/serializables/core.py,sha256=9XPxeVY33xrT77JVpO5uBc-olKn3bu8mdj58U1L4R0k,14165
377
+ maxframe/serialization/serializables/core.py,sha256=PY3Uvq6aHl0V5a9ZVNoN8rxoKGNYuVATvKUj1VMq9rE,16010
378
378
  maxframe/serialization/serializables/field.py,sha256=DVott3HAbne4UvN-heSFS9gSl0wCxV5RssS738FCjzk,16639
379
379
  maxframe/serialization/serializables/field_type.py,sha256=hkxrXT2SL_tATuobtJDfL4DzzVP2hJjDlC3PrJg6ZKo,15454
380
380
  maxframe/serialization/serializables/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
@@ -382,7 +382,7 @@ maxframe/serialization/serializables/tests/test_field_type.py,sha256=uG87-bdG8xG
382
382
  maxframe/serialization/serializables/tests/test_serializable.py,sha256=w5r-WC-8Zi1xAO1AfxdkjGcbGHZ8G5B-z_-d47Fje-A,10159
383
383
  maxframe/serialization/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
384
384
  maxframe/serialization/tests/test_serial.py,sha256=9G2CbPBHINwcZ038pRwZON_OtH-JVXZ8w66BLYWP578,12923
385
- maxframe/tensor/__init__.py,sha256=lY_GZBClz2MIGwaMerP2DvbsUbC5crCel_kwkeuiyX4,3702
385
+ maxframe/tensor/__init__.py,sha256=6Ro7re_MYOIzF7A664GMXZAq0zHfVcReDzYobIfuKuc,4544
386
386
  maxframe/tensor/array_utils.py,sha256=xr_Ng-4dETJFjsMfWi5gbTPM9mRmPvRWj8QY2WKjmCg,5129
387
387
  maxframe/tensor/core.py,sha256=-G-UzY81GTKj2SD9FQLqBg-UDod5LjjrEA-uF16ofms,22638
388
388
  maxframe/tensor/operators.py,sha256=8VsSZ8OcImGkSRQvrYlV05KMHGsroAYmW1o9RM2yV1U,3584
@@ -494,7 +494,7 @@ maxframe/tensor/base/atleast_1d.py,sha256=_d7xamputAAHFY8v0Ayc8ILMdqS6fLZYhWQLOh
494
494
  maxframe/tensor/base/broadcast_to.py,sha256=V-OB8YSbMfkMP2JpbiIQ0A9PrC-OHfaWzrntf5AOEwo,2775
495
495
  maxframe/tensor/base/ravel.py,sha256=P9SCDU-UUHzd1HqZbodBSgKjtjiOFkyfLV_G9LFnz_U,3265
496
496
  maxframe/tensor/base/transpose.py,sha256=yMK1KzxguKZOWxT3oMo5GchjB-1Yakilp2rEX3QlxFM,3539
497
- maxframe/tensor/base/unique.py,sha256=GYLorbwtjCKCTzkbFWk-zaUORU2mQJ2nbXDi2Wr-IP8,6943
497
+ maxframe/tensor/base/unique.py,sha256=wweWA7Qg-MwRsJwXQc_-4BuDAYBQkRgVw-B38z6hNTQ,6926
498
498
  maxframe/tensor/base/where.py,sha256=cSg1mDhiOBB4F0Soh_uVw3yeSve9pfEhPSIDadc-wto,4127
499
499
  maxframe/tensor/base/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
500
500
  maxframe/tensor/base/tests/test_base.py,sha256=i9TneozyHCHDhO438U285KS6tdh0Zks8mgkRm3fsHxk,2957
@@ -620,30 +620,30 @@ maxframe/tensor/reshape/tests/__init__.py,sha256=_PB28W40qku6YiT8fJYqdmEdRMQfelO
620
620
  maxframe/tensor/reshape/tests/test_reshape.py,sha256=hkYCagnIg85vV8moLIHVA-WAya7r9ga16Y8WJoCmK28,1140
621
621
  maxframe/tensor/statistics/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
622
622
  maxframe/tensor/statistics/percentile.py,sha256=VvMIKNSawT2WaoyJofoBEvmli2w-7TkG9V0Au9Bg3Eo,6222
623
- maxframe/tensor/statistics/quantile.py,sha256=HrPxQoRXTEGf-5m79osqhUoSTFpWmIwmhOIMOImldC8,9772
623
+ maxframe/tensor/statistics/quantile.py,sha256=2QshmOurJLJPHBhsyYz9brBWkcEzjzTjo2Wju_LD21o,9755
624
624
  maxframe/tensor/ufunc/__init__.py,sha256=8QUi-cPvvbsD7i7LOeZ9sc0v1XXd7lt-XV5pQKbVZJs,821
625
625
  maxframe/tensor/ufunc/ufunc.py,sha256=XRtGlhdrW7H--mrc8fTBOlUP0mzKpd9tdRtCuLDymtc,7383
626
626
  maxframe/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
627
627
  maxframe/tests/test_codegen.py,sha256=h3TKqP4zghxTn1twH7gR9jOe6NKXdCC1B4u0chlUrpY,2277
628
628
  maxframe/tests/test_protocol.py,sha256=JkvsgGnbVSLu3VsUd_XT_qstcHPnKLzmoDBEXetaWT8,6281
629
629
  maxframe/tests/test_utils.py,sha256=5Z2cym1tlpnF73f4I3WC1eBocsbNEDGzDErJL_fKWx8,11868
630
- maxframe/tests/utils.py,sha256=nZeSDh0jLWo1hKPkuq8Y2uwQhLwjaKok4wcnq9vhyn8,4740
630
+ maxframe/tests/utils.py,sha256=t99jsFXhHme886zvXO5sl20stB5WFJsDH6KeHc5I9N0,5057
631
631
  maxframe_client/__init__.py,sha256=hIVOnxj6AoN2zIMxQCzRb10k0LSoYS_DrQevXO9KPBg,705
632
632
  maxframe_client/conftest.py,sha256=UWWMYjmohHL13hLl4adb0gZPLRdBVOYVvsFo6VZruI0,658
633
- maxframe_client/fetcher.py,sha256=yFP6Hgz01-qPqBwmTX5-5ECU-G6q-TX5SUktplcJgcU,9213
633
+ maxframe_client/fetcher.py,sha256=i67AV-50WBXhQ49F_PO7Nc13y6ueZfsEluzLM8DThHI,9449
634
634
  maxframe_client/clients/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
635
635
  maxframe_client/clients/framedriver.py,sha256=upN6C1eZrCpLTsS6fihWOMy392psWfo0bw2XgSLI_Yg,4581
636
636
  maxframe_client/session/__init__.py,sha256=9zFCd3zkSADESAFc4SPoQ2nkvRwsIhhpNNO2TtSaWbU,854
637
637
  maxframe_client/session/consts.py,sha256=nD-D0zHXumbQI8w3aUyltJS59K5ftipf3xCtHNLmtc8,1380
638
638
  maxframe_client/session/graph.py,sha256=GSZaJ-PV4DK8bTcNtoSoY5kDTyyIRAKleh4tOCSUbsI,4470
639
- maxframe_client/session/odps.py,sha256=rOQJokPpA_hczjWsXyvYnl9m9o1DlZLMnoDIsQtmbnc,19885
639
+ maxframe_client/session/odps.py,sha256=1nhBT2DcGhd-kkQX72vOtdbBgFh3GV9buVk0TkwWRrE,19906
640
640
  maxframe_client/session/task.py,sha256=8_ZN2xbMdkRy2XdgJpEmB35vhGxfL0Qluzd0NVTjPwE,11402
641
641
  maxframe_client/session/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
642
642
  maxframe_client/session/tests/test_task.py,sha256=861usEURVXeTUzfJYZmBfwsHfZFexG23mMtT5IJOOm4,3364
643
643
  maxframe_client/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
644
- maxframe_client/tests/test_fetcher.py,sha256=7iYXLMIoCJLfgUkjB2HBkV-sqQ-xGlhtzfp9hRJz_kM,3605
645
- maxframe_client/tests/test_session.py,sha256=ZrZCYVbqtCOJZigGoyGube-EtLYE8SQxTSckbMQmgds,9616
646
- maxframe-1.0.0rc1.dist-info/METADATA,sha256=lbj0kDpDDcdf43LuG_y2tgyKSs38tbOE0YeufvQWk84,3157
647
- maxframe-1.0.0rc1.dist-info/WHEEL,sha256=RyLtD17TRXemRgS90DEnpEXWZB9e6GGH4dvD03N_Jp0,98
648
- maxframe-1.0.0rc1.dist-info/top_level.txt,sha256=64x-fc2q59c_vXwNUkehyjF1vb8JWqFSdYmUqIFqoTM,31
649
- maxframe-1.0.0rc1.dist-info/RECORD,,
644
+ maxframe_client/tests/test_fetcher.py,sha256=qcgRxdNvIEuBzoOaqZg_Wk2KeJzmc3pxHwkmgUoln8E,4262
645
+ maxframe_client/tests/test_session.py,sha256=rsdJA14dv_QDcklKgnNWMBKbqbymi2RwoLgjiqRUXk8,10028
646
+ maxframe-1.0.0rc2.dist-info/METADATA,sha256=YSoS0qN4SYlglqj1Nu54N7S6ngvfJ0QBIAQKukxtiyg,5169
647
+ maxframe-1.0.0rc2.dist-info/WHEEL,sha256=m8DfeuVVAy7_LcRdEfR79eVldkg3sSjqsbqOE0XRPEw,97
648
+ maxframe-1.0.0rc2.dist-info/top_level.txt,sha256=64x-fc2q59c_vXwNUkehyjF1vb8JWqFSdYmUqIFqoTM,31
649
+ maxframe-1.0.0rc2.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.43.0)
2
+ Generator: setuptools (71.1.0)
3
3
  Root-Is-Purelib: false
4
4
  Tag: cp310-cp310-win32
5
5
 
@@ -12,11 +12,9 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
- import base64
16
- import json
17
15
  from abc import ABC, abstractmethod
18
16
  from numbers import Integral
19
- from typing import Any, Dict, List, Optional, Type, Union
17
+ from typing import Any, Dict, List, Optional, Tuple, Type, Union
20
18
 
21
19
  import pandas as pd
22
20
  import pyarrow as pa
@@ -28,7 +26,7 @@ from tornado import httpclient
28
26
  from maxframe.core import OBJECT_TYPE
29
27
  from maxframe.dataframe.core import DATAFRAME_TYPE
30
28
  from maxframe.lib import wrapped_pickle as pickle
31
- from maxframe.odpsio import HaloTableIO, arrow_to_pandas, build_dataframe_table_meta
29
+ from maxframe.odpsio import ODPSTableIO, arrow_to_pandas, build_dataframe_table_meta
32
30
  from maxframe.protocol import (
33
31
  DataFrameTableMeta,
34
32
  ODPSTableResultInfo,
@@ -38,7 +36,7 @@ from maxframe.protocol import (
38
36
  )
39
37
  from maxframe.tensor.core import TENSOR_TYPE
40
38
  from maxframe.typing_ import PandasObjectTypes, TileableType
41
- from maxframe.utils import ToThreadMixin, deserialize_serializable
39
+ from maxframe.utils import ToThreadMixin
42
40
 
43
41
  _result_fetchers: Dict[ResultType, Type["ResultFetcher"]] = dict()
44
42
 
@@ -109,17 +107,12 @@ class ODPSTableFetcher(ToThreadMixin, ResultFetcher):
109
107
  tileable: TileableType,
110
108
  info: ODPSTableResultInfo,
111
109
  ) -> None:
112
- if isinstance(tileable, DATAFRAME_TYPE) and tileable.dtypes is None:
113
- tb_comment = await self.to_thread(
114
- self._get_table_comment, info.full_table_name
115
- )
116
- if tb_comment: # pragma: no branch
117
- comment_data = json.loads(tb_comment)
118
-
119
- table_meta: DataFrameTableMeta = deserialize_serializable(
120
- base64.b64decode(comment_data["table_meta"])
121
- )
122
- tileable.refresh_from_table_meta(table_meta)
110
+ if (
111
+ isinstance(tileable, DATAFRAME_TYPE)
112
+ and tileable.dtypes is None
113
+ and info.table_meta is not None
114
+ ):
115
+ tileable.refresh_from_table_meta(info.table_meta)
123
116
 
124
117
  if tileable.shape and any(pd.isna(x) for x in tileable.shape):
125
118
  part_specs = [None] if not info.partition_specs else info.partition_specs
@@ -131,16 +124,39 @@ class ODPSTableFetcher(ToThreadMixin, ResultFetcher):
131
124
  )
132
125
  total_records += session.count
133
126
  new_shape_list = list(tileable.shape)
134
- new_shape_list[-1] = total_records
127
+ new_shape_list[0] = total_records
135
128
  tileable.params = {"shape": tuple(new_shape_list)}
136
129
 
130
+ @staticmethod
131
+ def _align_selection_with_shape(
132
+ row_sel: slice, shape: Tuple[Optional[int], ...]
133
+ ) -> dict:
134
+ size = shape[0]
135
+ if not row_sel.start and not row_sel.stop:
136
+ return {}
137
+ is_reversed = row_sel.step is not None and row_sel.step < 0
138
+ read_kw = {
139
+ "start": row_sel.start,
140
+ "stop": row_sel.stop,
141
+ "reverse_range": is_reversed,
142
+ }
143
+ if pd.isna(size):
144
+ return read_kw
145
+
146
+ if is_reversed and row_sel.start is not None:
147
+ read_kw["start"] = min(size - 1, row_sel.start)
148
+ if not is_reversed and row_sel.stop is not None:
149
+ read_kw["stop"] = min(size, row_sel.stop)
150
+ return read_kw
151
+
137
152
  def _read_single_source(
138
153
  self,
139
154
  table_meta: DataFrameTableMeta,
140
155
  info: ODPSTableResultInfo,
141
156
  indexes: List[Union[None, Integral, slice]],
157
+ shape: Tuple[Optional[int], ...],
142
158
  ):
143
- table_io = HaloTableIO(self._odps_entry)
159
+ table_io = ODPSTableIO(self._odps_entry)
144
160
  read_kw = {}
145
161
  row_step = None
146
162
  if indexes:
@@ -148,13 +164,8 @@ class ODPSTableFetcher(ToThreadMixin, ResultFetcher):
148
164
  indexes += [None]
149
165
  row_sel, col_sel = indexes
150
166
  if isinstance(row_sel, slice):
151
- if row_sel.start or row_sel.stop:
152
- read_kw["start"] = row_sel.start
153
- read_kw["stop"] = row_sel.stop
154
- read_kw["reverse_range"] = (
155
- row_sel.step is not None and row_sel.step < 0
156
- )
157
- row_step = row_sel.step
167
+ row_step = row_sel.step
168
+ read_kw = self._align_selection_with_shape(row_sel, shape)
158
169
  elif isinstance(row_sel, int):
159
170
  read_kw["start"] = row_sel
160
171
  read_kw["stop"] = row_sel + 1
@@ -173,8 +184,8 @@ class ODPSTableFetcher(ToThreadMixin, ResultFetcher):
173
184
  with table_io.open_reader(
174
185
  info.full_table_name, info.partition_specs, **read_kw
175
186
  ) as reader:
176
- reader_count = reader.count
177
187
  result = reader.read_all()
188
+ reader_count = result.num_rows
178
189
 
179
190
  if not row_step:
180
191
  return result
@@ -195,7 +206,7 @@ class ODPSTableFetcher(ToThreadMixin, ResultFetcher):
195
206
  ) -> PandasObjectTypes:
196
207
  table_meta = build_dataframe_table_meta(tileable)
197
208
  arrow_table: pa.Table = await self.to_thread(
198
- self._read_single_source, table_meta, info, indexes
209
+ self._read_single_source, table_meta, info, indexes, tileable.shape
199
210
  )
200
211
  return arrow_to_pandas(arrow_table, table_meta)
201
212
 
@@ -36,7 +36,7 @@ from maxframe.errors import (
36
36
  NoTaskServerResponseError,
37
37
  SessionAlreadyClosedError,
38
38
  )
39
- from maxframe.odpsio import HaloTableIO, pandas_to_arrow, pandas_to_odps_schema
39
+ from maxframe.odpsio import ODPSTableIO, pandas_to_arrow, pandas_to_odps_schema
40
40
  from maxframe.protocol import (
41
41
  DagInfo,
42
42
  DagStatus,
@@ -164,8 +164,8 @@ class MaxFrameSession(ToThreadMixin, IsolatedAsyncSession):
164
164
  batch_size = options.session.upload_batch_size
165
165
 
166
166
  if len(data):
167
- halo_client = HaloTableIO(self._odps_entry)
168
- with halo_client.open_writer(table_obj.full_table_name) as writer:
167
+ table_client = ODPSTableIO(self._odps_entry)
168
+ with table_client.open_writer(table_obj.full_table_name) as writer:
169
169
  for batch_start in range(0, len(data), batch_size):
170
170
  if isinstance(data, pd.Index):
171
171
  batch = data[batch_start : batch_start + batch_size]
@@ -188,7 +188,7 @@ class MaxFrameSession(ToThreadMixin, IsolatedAsyncSession):
188
188
  read_tileable.name = t.name
189
189
  else: # INDEX_TYPE
190
190
  if list(read_tileable.names) != list(t.names):
191
- read_tileable.names = t.names
191
+ read_tileable.rename(t.names, inplace=True)
192
192
  read_tileable._key = t.key
193
193
  read_tileable.params = t.params
194
194
  return read_tileable.data
@@ -384,7 +384,7 @@ class MaxFrameSession(ToThreadMixin, IsolatedAsyncSession):
384
384
  data_tileable, indexes = self._get_data_tileable_and_indexes(tileable)
385
385
  info = self._tileable_to_infos[data_tileable]
386
386
  fetcher = get_fetcher_cls(info.result_type)(self._odps_entry)
387
- results.append(await fetcher.fetch(tileable, info, indexes))
387
+ results.append(await fetcher.fetch(data_tileable, info, indexes))
388
388
  return results
389
389
 
390
390
  async def decref(self, *tileable_keys):
@@ -17,19 +17,32 @@ import uuid
17
17
  import numpy as np
18
18
  import pandas as pd
19
19
  import pyarrow as pa
20
+ import pytest
20
21
  from odps import ODPS
21
22
 
22
23
  import maxframe.dataframe as md
23
- from maxframe.odpsio import HaloTableIO
24
+ from maxframe.config import options
25
+ from maxframe.odpsio import ODPSTableIO
24
26
  from maxframe.protocol import ODPSTableResultInfo, ResultType
25
27
  from maxframe.tests.utils import tn
26
28
 
27
29
  from ..fetcher import ODPSTableFetcher
28
30
 
29
31
 
30
- async def test_table_fetcher():
32
+ @pytest.fixture
33
+ def switch_table_io(request):
34
+ old_use_common_table = options.use_common_table
35
+ try:
36
+ options.use_common_table = request.param
37
+ yield
38
+ finally:
39
+ options.use_common_table = old_use_common_table
40
+
41
+
42
+ @pytest.mark.parametrize("switch_table_io", [False, True], indirect=True)
43
+ async def test_table_fetcher(switch_table_io):
31
44
  odps_entry = ODPS.from_environments()
32
- halo_table_io = HaloTableIO(odps_entry)
45
+ halo_table_io = ODPSTableIO(odps_entry)
33
46
  fetcher = ODPSTableFetcher(odps_entry)
34
47
 
35
48
  data = pd.DataFrame(
@@ -58,6 +71,11 @@ async def test_table_fetcher():
58
71
  assert len(fetched) == 1000
59
72
  pd.testing.assert_frame_equal(raw_data, fetched)
60
73
 
74
+ result_info = ODPSTableResultInfo(ResultType.ODPS_TABLE, full_table_name=table_name)
75
+ fetched = await fetcher.fetch(tileable, result_info, [slice(None, 2000), None])
76
+ assert len(fetched) == 1000
77
+ pd.testing.assert_frame_equal(raw_data, fetched)
78
+
61
79
  result_info = ODPSTableResultInfo(ResultType.ODPS_TABLE, full_table_name=table_name)
62
80
  fetched = await fetcher.fetch(tileable, result_info, [2, None])
63
81
  assert len(fetched) == 1
@@ -195,7 +195,8 @@ def test_run_dataframe_from_to_odps_table(start_mock_session):
195
195
  assert len(result_df) == 10
196
196
  assert len(result_df.columns) == 6
197
197
 
198
- df = md.read_odps_table(table_obj, index_col="index").head(10).execute().fetch()
198
+ df = md.read_odps_table(table_obj, index_col="index").head(10).execute()
199
+ assert df.shape == (10, 5)
199
200
  assert len(df) == 10
200
201
  assert len(df.columns) == 5
201
202
  finally:
@@ -280,7 +281,7 @@ def test_pivot_dataframe(start_mock_session):
280
281
  df = md.DataFrame(pd_df)
281
282
  pivot = df.pivot_table(values="D", index=["A", "B"], columns=["C"], aggfunc="sum")
282
283
  executed = pivot.execute()
283
- assert pivot.shape == (2, 4)
284
+ assert pivot.shape == (4, 2)
284
285
  pd.testing.assert_index_equal(
285
286
  pivot.dtypes.index, pd.Index(["large", "small"], name="C")
286
287
  )
@@ -289,3 +290,13 @@ def test_pivot_dataframe(start_mock_session):
289
290
  values="D", index=["A", "B"], columns=["C"], aggfunc="sum"
290
291
  )
291
292
  pd.testing.assert_frame_equal(executed.to_pandas(), expected)
293
+
294
+
295
+ def test_index_drop_duplicates(start_mock_session):
296
+ pd_idx = pd.Index(["lame", "cow", "lame", "beetle", "lame", "hippo"])
297
+ idx = md.Index(pd_idx)
298
+ executed = idx.drop_duplicates(keep="first").execute()
299
+ expected = pd_idx.drop_duplicates(keep="first")
300
+ pd.testing.assert_index_equal(
301
+ executed.to_pandas().sort_values(), expected.sort_values()
302
+ )