maxframe 0.1.0b4__cp38-cp38-win32.whl → 1.0.0rc1__cp38-cp38-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 (81) hide show
  1. maxframe/__init__.py +1 -0
  2. maxframe/_utils.cp38-win32.pyd +0 -0
  3. maxframe/codegen.py +56 -3
  4. maxframe/config/config.py +15 -1
  5. maxframe/core/__init__.py +0 -3
  6. maxframe/core/entity/__init__.py +1 -8
  7. maxframe/core/entity/objects.py +3 -45
  8. maxframe/core/graph/core.cp38-win32.pyd +0 -0
  9. maxframe/core/graph/core.pyx +4 -4
  10. maxframe/dataframe/__init__.py +1 -0
  11. maxframe/dataframe/core.py +30 -8
  12. maxframe/dataframe/datasource/read_odps_query.py +3 -1
  13. maxframe/dataframe/datasource/read_odps_table.py +3 -1
  14. maxframe/dataframe/datastore/tests/__init__.py +13 -0
  15. maxframe/dataframe/datastore/tests/test_to_odps.py +48 -0
  16. maxframe/dataframe/datastore/to_odps.py +21 -0
  17. maxframe/dataframe/indexing/align.py +1 -1
  18. maxframe/dataframe/misc/__init__.py +4 -0
  19. maxframe/dataframe/misc/apply.py +3 -1
  20. maxframe/dataframe/misc/case_when.py +141 -0
  21. maxframe/dataframe/misc/memory_usage.py +2 -2
  22. maxframe/dataframe/misc/pivot_table.py +262 -0
  23. maxframe/dataframe/misc/tests/test_misc.py +84 -0
  24. maxframe/dataframe/plotting/core.py +2 -2
  25. maxframe/dataframe/reduction/core.py +2 -1
  26. maxframe/dataframe/statistics/corr.py +3 -3
  27. maxframe/dataframe/utils.py +7 -0
  28. maxframe/errors.py +13 -0
  29. maxframe/extension.py +12 -0
  30. maxframe/learn/contrib/utils.py +52 -0
  31. maxframe/learn/contrib/xgboost/__init__.py +26 -0
  32. maxframe/learn/contrib/xgboost/classifier.py +86 -0
  33. maxframe/learn/contrib/xgboost/core.py +156 -0
  34. maxframe/learn/contrib/xgboost/dmatrix.py +150 -0
  35. maxframe/learn/contrib/xgboost/predict.py +138 -0
  36. maxframe/learn/contrib/xgboost/regressor.py +78 -0
  37. maxframe/learn/contrib/xgboost/tests/__init__.py +13 -0
  38. maxframe/learn/contrib/xgboost/tests/test_core.py +43 -0
  39. maxframe/learn/contrib/xgboost/train.py +121 -0
  40. maxframe/learn/utils/__init__.py +15 -0
  41. maxframe/learn/utils/core.py +29 -0
  42. maxframe/lib/mmh3.cp38-win32.pyd +0 -0
  43. maxframe/lib/mmh3.pyi +43 -0
  44. maxframe/lib/wrapped_pickle.py +2 -1
  45. maxframe/odpsio/arrow.py +2 -3
  46. maxframe/odpsio/tableio.py +22 -0
  47. maxframe/odpsio/tests/test_schema.py +16 -11
  48. maxframe/opcodes.py +3 -0
  49. maxframe/protocol.py +108 -10
  50. maxframe/serialization/core.cp38-win32.pyd +0 -0
  51. maxframe/serialization/core.pxd +3 -0
  52. maxframe/serialization/core.pyi +64 -0
  53. maxframe/serialization/core.pyx +54 -25
  54. maxframe/serialization/exception.py +1 -1
  55. maxframe/serialization/pandas.py +7 -2
  56. maxframe/serialization/serializables/core.py +119 -12
  57. maxframe/serialization/serializables/tests/test_serializable.py +46 -4
  58. maxframe/session.py +28 -0
  59. maxframe/tensor/__init__.py +1 -1
  60. maxframe/tensor/arithmetic/tests/test_arithmetic.py +1 -1
  61. maxframe/tensor/base/__init__.py +2 -0
  62. maxframe/tensor/base/atleast_1d.py +74 -0
  63. maxframe/tensor/base/unique.py +205 -0
  64. maxframe/tensor/datasource/array.py +4 -2
  65. maxframe/tensor/datasource/scalar.py +1 -1
  66. maxframe/tensor/reduction/count_nonzero.py +1 -1
  67. maxframe/tests/test_protocol.py +34 -0
  68. maxframe/tests/test_utils.py +0 -12
  69. maxframe/tests/utils.py +2 -2
  70. maxframe/udf.py +63 -3
  71. maxframe/utils.py +22 -13
  72. {maxframe-0.1.0b4.dist-info → maxframe-1.0.0rc1.dist-info}/METADATA +3 -3
  73. {maxframe-0.1.0b4.dist-info → maxframe-1.0.0rc1.dist-info}/RECORD +80 -61
  74. maxframe_client/__init__.py +0 -1
  75. maxframe_client/fetcher.py +65 -3
  76. maxframe_client/session/odps.py +74 -5
  77. maxframe_client/session/task.py +65 -71
  78. maxframe_client/tests/test_session.py +64 -1
  79. maxframe_client/clients/spe.py +0 -104
  80. {maxframe-0.1.0b4.dist-info → maxframe-1.0.0rc1.dist-info}/WHEEL +0 -0
  81. {maxframe-0.1.0b4.dist-info → maxframe-1.0.0rc1.dist-info}/top_level.txt +0 -0
@@ -1,40 +1,40 @@
1
- maxframe/__init__.py,sha256=MgltwhBvnUQDKKmHDg9Y69TJkRGmQQ9m8-D9FC2pcLU,1007
2
- maxframe/_utils.cp38-win32.pyd,sha256=DWWTa5zkbT6iJXisAzwbojWFHup4DqNuGfOL-aRS80g,272384
1
+ maxframe/__init__.py,sha256=RujkARDvD6mhFpR330UQ0UfogvIdae5EjR1euFpTiYA,1036
2
+ maxframe/_utils.cp38-win32.pyd,sha256=wS47pLPhVodN5Wp7p_GMKIUb-969QQy-O2UvyGVUdHk,272896
3
3
  maxframe/_utils.pxd,sha256=_qHN-lCY1FQgDFIrrqA79Ys0SBdonp9kXRMS93xKSYk,1187
4
4
  maxframe/_utils.pyx,sha256=_3p6aJEJ6WZYLcNZ6o4DxoxsxqadTlJXFlgDeFPxqUQ,17564
5
- maxframe/codegen.py,sha256=S23hTTu2fIJTv5PMIItE_NPUnadUyoiMmb-1YAqbaWw,16329
5
+ maxframe/codegen.py,sha256=t56uoJpfbyLvrctodXn-q3VoLzbwPgNSaXUsL4Ig4Ao,18345
6
6
  maxframe/conftest.py,sha256=JE9I-5mP4u-vgUqYL22mNY3tqpGofM8VMe8c8VUYkzk,4403
7
7
  maxframe/env.py,sha256=xY4wjMWIJ4qLsFAQ5F-X5CrVR7dDSWiryPXni0YSK5c,1435
8
- maxframe/errors.py,sha256=xBnvoJjjNcHVLhwj77Dux9ut8isGVmmJXFqefmmx8Ak,711
9
- maxframe/extension.py,sha256=o7yiS99LWTtLF7ZX6F78UUJAqUyd-LllOXA2l69np50,2455
8
+ maxframe/errors.py,sha256=nhQVjRbH5EsyLZhyAufvHpMhfDN6eR8vcrv4sjaI7p8,1000
9
+ maxframe/extension.py,sha256=XKgK2b42i-jfnLc0lBPiBMsGA6HMQ4a12mJc09tMAFc,2752
10
10
  maxframe/mixin.py,sha256=QfX0KqVIWDlVDSFs0lwdzLexw7lS7W_IUuK7aY1Ib8c,3624
11
- maxframe/opcodes.py,sha256=Gcqv1DIMPOXLHOt9yYSRisu2ihP1ez6QX0d5c_L06TA,10732
12
- maxframe/protocol.py,sha256=N4i0ggLY131gwnxOrCgKeZwzhLKSRB171cx1lWRvUcw,14605
13
- maxframe/session.py,sha256=ETR-n-DDyCYVh7I1juJfNBxcOrESJSjxW7JOHaSt9To,36700
11
+ maxframe/opcodes.py,sha256=4Gj2svgrNNxylfUbQYs8WbDqTpoCoLtlNCtAYdHr-BU,10781
12
+ maxframe/protocol.py,sha256=3SvkrIxd-NoDpUdJnYPUhzIkX5G53krG_DkynO96ivQ,18330
13
+ maxframe/session.py,sha256=CfDT2iwjl5NAisPrZ6LF0xG_hr75Wr0cfHd6rvtHajw,37515
14
14
  maxframe/typing_.py,sha256=pAgOhHHSM376N7PJLtNXvS5LHNYywz5dIjnA_hHRWSM,1133
15
- maxframe/udf.py,sha256=EFAAV2c8SpWKcF9_8Pocpjc4bXsEASf57Qy_Q30YH4Q,2315
16
- maxframe/utils.py,sha256=fzlh5MTJcX9ZBEnIZ4tVMzf846X9YsUmVGTKG5GtZr4,35212
15
+ maxframe/udf.py,sha256=GJre7snHQxkoyUWX0rpDkrGGU8-qA-SmSe2H9nSMEfo,4422
16
+ maxframe/utils.py,sha256=ame3LYmU3ByXNk9YLDi5aEru0SpIdMcEb7XCXh08qts,35489
17
17
  maxframe/config/__init__.py,sha256=AHo3deaCm1JnbbRX_udboJEDYrYytdvivp9RFxJcumI,671
18
- maxframe/config/config.py,sha256=Za9cgJfSJ4noNEcOaQ8tI1lhjT0Lvd3uCURqR7vlmbg,13578
18
+ maxframe/config/config.py,sha256=Z5a2FIBAXD_r9qWv_V6i_ei9zk4h4qOAUsZJxlVtWCM,14181
19
19
  maxframe/config/validators.py,sha256=pKnloh2kEOBRSsT8ks-zL8XVSaMMVIEvHvwNJlideeo,1672
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
23
- maxframe/core/__init__.py,sha256=GS0eia2Rh0sJOCODq59_yk1m8EGkFBHnuuU7PiZ1_ec,1742
23
+ maxframe/core/__init__.py,sha256=KxXGWHijQZqmI4yIpQO7N6kQ0ok1UiUnae7Jh0jSgBA,1678
24
24
  maxframe/core/base.py,sha256=43qZ_sJFgW857qhT1jqgsjdAsBy9tzCeqeX62CPm4vM,4691
25
25
  maxframe/core/mode.py,sha256=a-2AjLrIaqemN3pZPFhdfrPYXR7ryCLcsT1KJwWKPb0,3107
26
- maxframe/core/entity/__init__.py,sha256=tD4zo3KXpzLrQraHnIXeO1Q961lSsIqpbAGRK2WijVE,1336
26
+ maxframe/core/entity/__init__.py,sha256=pUaRpxYxgP1pQuAjGEl9DxAJEvz5Tp_Tpzh4dnxmII0,1251
27
27
  maxframe/core/entity/chunks.py,sha256=zKk8Iyc3IkakIDW1bMYq_zZNLrR4ZMdXH-mBuOiFerM,2202
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=Ys_l6cBp0HwgRmXuqYo4HsnjdbfUW4mgvek5W0IMmXY,3134
31
+ maxframe/core/entity/objects.py,sha256=-cnPtk7LBIcFk4d7CY6MwDhlkoW42Xv3qdI2CD03puA,1898
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.cp38-win32.pyd,sha256=iLYBYn9BL-6YUxKgL2pCk-YCZC_5azZ6nShdYEp9zSc,218112
37
- maxframe/core/graph/core.pyx,sha256=WYlYtXXSs72vfhf2ttJO-4u85exYzy2J9mlALHOMqoA,16354
36
+ maxframe/core/graph/core.cp38-win32.pyd,sha256=GbJqHscJPOSwE7UVJYA8qPWUUJIdMsBFUvPN9ewhFKg,220160
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
40
40
  maxframe/core/graph/builder/base.py,sha256=IzNYD4A2alnYaOvZnipDzC-ZIfNsYR80wLnFcx7bJzc,2635
@@ -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=BdHZ903J7SkZDOxHDxNZvDxxXjSW8Gj-fJiHG26p-kM,2275
57
+ maxframe/dataframe/__init__.py,sha256=6wzq6JcohLtvR9kkE2Pc476ExNGslCFRijKFE_R6PB8,2318
58
58
  maxframe/dataframe/arrays.py,sha256=rOvhxMQars9E3SOYSu0ygBuuRVY0QV6xzengnMqKs4s,29616
59
- maxframe/dataframe/core.py,sha256=mGlHzJqs9EZa0qLxxe-Qp0Kd5SnsVI3r6itDhLxVdGM,76126
59
+ maxframe/dataframe/core.py,sha256=fOrn9ehPmZnymO-r586jpWW9DTMGt7HWvFMwv-JOrjM,76830
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=5bk441fXa9dpeT98g8OY8TtMypuoB3XSc3rLA0gjPL4,45371
62
+ maxframe/dataframe/utils.py,sha256=nYpTY5TmpJGs2_1VQBNxR_6miPTcdpIbqgw0aqh1Axo,45539
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
@@ -119,8 +119,8 @@ maxframe/dataframe/datasource/from_records.py,sha256=ygpKOMXZnDdWzGxMxQ4KdGv-tJF
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=rvlFp35g0vYIRZszhMSjHt5tAR668ir1GVBb-T80TQk,10224
123
- maxframe/dataframe/datasource/read_odps_table.py,sha256=r_VbiWWgBpJArBBB-NJCMRUbCTfUrGEOMJmq9a2TIC8,9380
122
+ maxframe/dataframe/datasource/read_odps_query.py,sha256=6Z8yCSIG96PJFq8B3wk2D29xGedj7y3vV24vGbpoSUA,10269
123
+ maxframe/dataframe/datasource/read_odps_table.py,sha256=d_8jeOMuxyo69l2BYR_kSMI6Ixv25BtqF95YtY9r1Pk,9425
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
@@ -128,7 +128,9 @@ maxframe/dataframe/datasource/tests/test_datasource.py,sha256=UumRBjE-bIuCi7Z4_3
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
131
- maxframe/dataframe/datastore/to_odps.py,sha256=NVHLccpNYbF6YPk3PKziStonkKlR0JaOFF0AxWlMhBw,5724
131
+ maxframe/dataframe/datastore/to_odps.py,sha256=joTDca3-fF27ASoksjnuz6JT4ozn3x8t7nDpAG_OSaw,6596
132
+ maxframe/dataframe/datastore/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
133
+ maxframe/dataframe/datastore/tests/test_to_odps.py,sha256=385SCJK_XkddV9dJrRqSOuaXurpGjWd_QwRSeGTOTNU,1344
132
134
  maxframe/dataframe/extensions/__init__.py,sha256=x6QCVQIfpa8JP2Vu-nZwHJ1CzATnyPoKCBMqxjXwpO0,1439
133
135
  maxframe/dataframe/extensions/accessor.py,sha256=0OA8YPL3rofSvdU0z_1kMLImahrvow_vhxdQDYODki0,1497
134
136
  maxframe/dataframe/extensions/reshuffle.py,sha256=yOlJ-3R4v9CoiEKFA1zgCOvbocy00MxpFBbQuTn-uDw,2720
@@ -150,7 +152,7 @@ maxframe/dataframe/groupby/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym
150
152
  maxframe/dataframe/groupby/tests/test_groupby.py,sha256=GiFRklxfp9RAD7jwuvNRbhg9mROpKPFxfXGtNhFWFCI,12516
151
153
  maxframe/dataframe/indexing/__init__.py,sha256=AkjowbPJu6kM4fJF5baU6g6FA7n2ux5__f4_2budLSs,3297
152
154
  maxframe/dataframe/indexing/add_prefix_suffix.py,sha256=YMHFXnVcFsRJfVIOHlTWkOGCqzxWAJam3SXmIRjKGKk,3076
153
- maxframe/dataframe/indexing/align.py,sha256=DLNY2Tc3o_GyeK7g9bTxd0KnEojcaQVprYNx2PhqZ98,12438
155
+ maxframe/dataframe/indexing/align.py,sha256=-kV91o_-pq7rFsv0zgnGZuEyn8HqyUK_Ejv4VWF5fps,12434
154
156
  maxframe/dataframe/indexing/at.py,sha256=7Igb4I9_9drZSCZITFRNL3Q-7EI_mtfklUrnNP0apHo,2300
155
157
  maxframe/dataframe/indexing/getitem.py,sha256=eS8dnlMEP2zaYvzYZFlBNfwjD89UqT0MRIlNuDcAJQc,7958
156
158
  maxframe/dataframe/indexing/iat.py,sha256=gc9V2Ps8fvBFIgJbYTY3ZJmH54rv-dunZzJsY3Lns1s,1164
@@ -174,11 +176,12 @@ maxframe/dataframe/merge/concat.py,sha256=cIlwVguZTWFx6GX5fTZ3YctKNkn9wP72TpbxKR
174
176
  maxframe/dataframe/merge/merge.py,sha256=2bqjWlpW_EAbeyYhzQo1nKJ3l7DZJoSuxFmTfHej1X4,22231
175
177
  maxframe/dataframe/merge/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
176
178
  maxframe/dataframe/merge/tests/test_merge.py,sha256=Mkk2f_NnxPqtG_2AyeG_Bt-CdY-JOcNuJ9ADCDA30H4,7480
177
- maxframe/dataframe/misc/__init__.py,sha256=h5O4v3tHqiXZVWaWUMSk1WhfrZWTlXhrslIWV5zpYQc,5237
179
+ maxframe/dataframe/misc/__init__.py,sha256=Lq82VMR4qWhYD1lYTbj8Wr7ndOh0CNATdOtlOikuZRQ,5401
178
180
  maxframe/dataframe/misc/_duplicate.py,sha256=EYNv1_sKm14d91Gm4_Buxo7b5Tuy93MOvaq1TTAUkis,1516
179
181
  maxframe/dataframe/misc/accessor.py,sha256=XtbMV6QrYb2m9oAd8swkFoKAq5mxj_QO0LVLVw5uJB4,10303
180
- maxframe/dataframe/misc/apply.py,sha256=8ZMj1HRCwqV12ixwegESbRlsQGUrha-N4mBR-bT1cdM,24052
182
+ maxframe/dataframe/misc/apply.py,sha256=hAuN5P9DrWVfHwXi1MZBQrAe0nRiTDHUc4nJvKC2XMk,24130
181
183
  maxframe/dataframe/misc/astype.py,sha256=9CO4BEW98Flqk7HHWScjxRK8EdeTRgQDYcyRwEnyIB0,8033
184
+ maxframe/dataframe/misc/case_when.py,sha256=txasRkyfwn2QCEVZ7W0lrI3_ia0PKwBRFBy6TLrQh1I,4992
182
185
  maxframe/dataframe/misc/check_monotonic.py,sha256=LDltdmPq90fZn8A0ucqpNy0uswKo2hJx59Y4EHSN9l4,2506
183
186
  maxframe/dataframe/misc/cut.py,sha256=dOKWwd1D2CYU9LVQvfonMrD8E2eGeBONZvWN1ArCfMM,14288
184
187
  maxframe/dataframe/misc/datetimes.py,sha256=zR99O-8EKKWt4UtNdPI22K8N9mP9XSs9lDQLBPEmFlo,2582
@@ -193,8 +196,9 @@ maxframe/dataframe/misc/get_dummies.py,sha256=fkoGya2HUVMlJviEfCy1toedfa_gOro_E0
193
196
  maxframe/dataframe/misc/isin.py,sha256=mqce_GgIkT390glXJ4jq4JEcRYhpbJNkN6tqP-8x078,7148
194
197
  maxframe/dataframe/misc/map.py,sha256=NSsQvOFrRvULVHPOfJk3B_tIh2IRU4IE0oOF2qkL4mE,8385
195
198
  maxframe/dataframe/misc/melt.py,sha256=LoqZ45-J8WvXixtFEbEF1UCtZy4-E6loFtVdFghgt0A,5282
196
- maxframe/dataframe/misc/memory_usage.py,sha256=B_UnQKJW62KQMv2VHlZSjlREFdD6t6qT24x4XTcTTMU,8145
199
+ maxframe/dataframe/misc/memory_usage.py,sha256=3d6g2lAW7R4BV_vpUpn2-BFs9cwbEW03UH-6AEhmue0,8137
197
200
  maxframe/dataframe/misc/pct_change.py,sha256=V4D2MH7b2EmtCHVKwYxX4wcGsuj1EBruwIXlJ5mAZ_c,4736
201
+ maxframe/dataframe/misc/pivot_table.py,sha256=5HmAdczDMJbznFq2omuBKjjib0WvTrohXGwCtHAMwOY,9782
198
202
  maxframe/dataframe/misc/qcut.py,sha256=kcYhSf6m47u5zIEPgG98nE3hv57e6uuCuJs_dxpcszE,3841
199
203
  maxframe/dataframe/misc/select_dtypes.py,sha256=qsrWW8BNBd-hAT1yIlrnbvBjfbzZyttzch7bxKgRkCg,3248
200
204
  maxframe/dataframe/misc/shift.py,sha256=HCGKBuToksgu5LZR_k5eaQrdyrXCeqRZYbZs0J5-N6s,9191
@@ -205,7 +209,7 @@ maxframe/dataframe/misc/transform.py,sha256=JotPUQzKGhCLRi53sk7USU9HscNjUKCzzus9
205
209
  maxframe/dataframe/misc/transpose.py,sha256=SsKRuN9Pj36D6kntnsLfzBsFHjSCiV1cZuPJuKHgbGU,3772
206
210
  maxframe/dataframe/misc/value_counts.py,sha256=7Yd3ZSrCRDMRX093IlzdsrTJ5UUx0n_lbD5AmXLUr_U,5674
207
211
  maxframe/dataframe/misc/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
208
- maxframe/dataframe/misc/tests/test_misc.py,sha256=PCPbsKahbggM62_b-nKctbDXFNI-gxiuep6Z46Rpe2c,13372
212
+ maxframe/dataframe/misc/tests/test_misc.py,sha256=7P3-dJwsMVhD6ft5HNXorUp-SnO8o9eTTAoFGXzhiNg,16121
209
213
  maxframe/dataframe/missing/__init__.py,sha256=DQDpYqjvXN6o6TF76wJIpf1fZICOEJskljzwDNjN80k,1866
210
214
  maxframe/dataframe/missing/checkna.py,sha256=_Rd-HRX7lTzMV3myu745tzoTB8WIqDIJu2TcT1SfdB0,7113
211
215
  maxframe/dataframe/missing/dropna.py,sha256=fJ7xUmhWnViyPnW6nKTF3u2dktqsuwGimSyO71mh0kk,8518
@@ -214,14 +218,14 @@ maxframe/dataframe/missing/replace.py,sha256=g9KqENIuuaFW33KIFXTClngWcVu2ttrGa28
214
218
  maxframe/dataframe/missing/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
215
219
  maxframe/dataframe/missing/tests/test_missing.py,sha256=zhsgn-yonyXYhlFZtH2OpXtvN0NLxFOZpU_vCumTCqA,3223
216
220
  maxframe/dataframe/plotting/__init__.py,sha256=FlSQds0Rdv7CXo_PJFWErMO5KccKrxdLJO58h1IL6uk,1433
217
- maxframe/dataframe/plotting/core.py,sha256=qrGSA_T2RchjqUiVcxawW1WNQBfOXaCzyHiAd5_GgKo,2271
221
+ maxframe/dataframe/plotting/core.py,sha256=fgMSAJldKXGjRzj_qfN9QK1kaThqnv8wybJHSu8Y4qg,2311
218
222
  maxframe/dataframe/plotting/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
219
223
  maxframe/dataframe/plotting/tests/test_plotting.py,sha256=AZ4-C_ASyt3mD29ytsYa0Ut6gA2028ugCKfP9aLK448,4254
220
224
  maxframe/dataframe/reduction/__init__.py,sha256=ejIK5G6ylU0q37XVs_2DkmsnHTtYbE44ffhExNl5Usk,4297
221
225
  maxframe/dataframe/reduction/aggregation.py,sha256=-v_jzKAiLGHOmv3MTDgqovfEYLgeJobU3CqaMWKqkRo,12948
222
226
  maxframe/dataframe/reduction/all.py,sha256=enpOWffBNXAEgFSaiZm0KPwU3izMvWd7M8smLwZjaeE,2044
223
227
  maxframe/dataframe/reduction/any.py,sha256=PensVOfgCcxu7u7-1OuMcD6gov2c2kN01B57O3eoHw8,2048
224
- maxframe/dataframe/reduction/core.py,sha256=1s_qb1XAsX2vRp7kgqoa4hyFP_OVbSR24UXoODYvNqg,31165
228
+ maxframe/dataframe/reduction/core.py,sha256=QrZ4R9Q96wk7oaIzRZ2-KrFZcFbsbamZ8uUuQKAWdio,31232
225
229
  maxframe/dataframe/reduction/count.py,sha256=YLx9bFb2IdnBIkTyApRad0x1yub6TmqncP6TzGcOL_Q,1800
226
230
  maxframe/dataframe/reduction/cummax.py,sha256=S2iUhfBL2lKwFKhFIYMQxlE26pYroEYKG3cqmG0gIAs,1043
227
231
  maxframe/dataframe/reduction/cummin.py,sha256=EWz1CUCQoTwxluvvQPtcNxWdIISr3bBaZPttB104Pdc,1043
@@ -251,7 +255,7 @@ maxframe/dataframe/sort/sort_values.py,sha256=kPTaKVZzqSkMKTPLXANoK_NKK4IwShqXev
251
255
  maxframe/dataframe/sort/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
252
256
  maxframe/dataframe/sort/tests/test_sort.py,sha256=2KwQP4eyAL7rflYrbei9ocU5oum3NjiGurWirR2GzHg,2685
253
257
  maxframe/dataframe/statistics/__init__.py,sha256=gC4z9SHj8mG1EECYiMNeGPNF3aie1AOw8UATmiLG-bo,1117
254
- maxframe/dataframe/statistics/corr.py,sha256=LzFsEf-lrRTGSuPV8f_QWGzKvFq_tWd70SgMr9nFyGA,9775
258
+ maxframe/dataframe/statistics/corr.py,sha256=ufSCKpITCR8HnKc7osxnxDwg8hvptrcKOjIeKsF4eB4,9763
255
259
  maxframe/dataframe/statistics/quantile.py,sha256=fISgDO8cMFKn1yjCV07BpowBYsS5HYwvBZkOCdglUJU,12054
256
260
  maxframe/dataframe/statistics/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
257
261
  maxframe/dataframe/statistics/tests/test_statistics.py,sha256=tvk_kTcOuzRLFspidSPVoZrBVtVsbHhGb16LU-Vr3lU,2812
@@ -276,17 +280,30 @@ maxframe/dataframe/window/tests/test_expanding.py,sha256=PsFYI6YXxNHYlsyaesy9yIA
276
280
  maxframe/dataframe/window/tests/test_rolling.py,sha256=eJYHh4MhKm_e9h4bCnK_d_aAYlKGQtFAbZTTEILe6gU,1771
277
281
  maxframe/learn/__init__.py,sha256=1QzrFCJmdZFy0Nh1Ng3V6yY_NVvoSUdTIqcU-HIa1wk,649
278
282
  maxframe/learn/contrib/__init__.py,sha256=2_AumQELt_0MMsSDS7nwk4Fy0TE807lasVuFvGEv1Lc,649
283
+ maxframe/learn/contrib/utils.py,sha256=e4E-QLr7SAhCBTUX246SBpi9DtRNQAE-xOUxvNnFzZY,1714
279
284
  maxframe/learn/contrib/pytorch/__init__.py,sha256=a60NZy-COXEFgyC0uXJRBZGi-Vd9HZcqX62bKAMPKaM,703
280
285
  maxframe/learn/contrib/pytorch/run_function.py,sha256=aQQhy2Bc6EEe-NVZb17hK4I9_TqIM1uI3fIMihY3TSQ,3354
281
286
  maxframe/learn/contrib/pytorch/run_script.py,sha256=FOBXdJ9Q5QOirGGXq8_XwpwrTpDEmWt45-9n4VR_ixI,3213
282
287
  maxframe/learn/contrib/pytorch/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
283
288
  maxframe/learn/contrib/pytorch/tests/test_pytorch.py,sha256=GHP-oD5uMU8LD90Jt2cHbYRDdM5efjzsjpeBkc3t_qE,1444
289
+ maxframe/learn/contrib/xgboost/__init__.py,sha256=vk9xZO_FUwyVCrcLP1dbEz6JCZQBEHsmhGr1uQ45FAI,925
290
+ maxframe/learn/contrib/xgboost/classifier.py,sha256=DWvQ9_GLg-ZeSFQp6NN5-7_BA9NxkpxEv5WtuodU31o,3022
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
294
+ maxframe/learn/contrib/xgboost/regressor.py,sha256=osuNG4N1SILgjL-CodYnM9ODwewaVi4-8tHdfWZWJpg,2610
295
+ maxframe/learn/contrib/xgboost/train.py,sha256=yn2_45hDvuAi4VKkFPR11i38o0mrFaNJ668qBnj2wDI,4079
296
+ maxframe/learn/contrib/xgboost/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
297
+ maxframe/learn/contrib/xgboost/tests/test_core.py,sha256=qNSXaB1t1vpoCD6RfpnFjJZHS8ShW9O_uz0ucXXlfpE,1449
298
+ maxframe/learn/utils/__init__.py,sha256=w2_QpDZ9J5BcSgbqu8P2RlkVRWC2gLowfgsaDPtz_Pg,661
299
+ maxframe/learn/utils/core.py,sha256=WNDISxPFsWmjkwHwEvjVGCkAOkIftqzEQFPA_KWr7FY,1058
284
300
  maxframe/lib/__init__.py,sha256=_PB28W40qku6YiT8fJYqdmEdRMQfelOwGeksCOZJfCc,657
285
301
  maxframe/lib/compression.py,sha256=QQpNK79iUC9zck74I0HKMhapSRnLBXtTRyS91taEVIc,1497
286
302
  maxframe/lib/functools_compat.py,sha256=2LTrkSw5i-z5E9XCtZzfg9-0vPrYxicKvDjnnNrAL1Q,2697
287
- maxframe/lib/mmh3.cp38-win32.pyd,sha256=hXvvayKkaUsh4-VtqP8G4JSzrzqRHcFO_xGJuXpNibE,14848
303
+ maxframe/lib/mmh3.cp38-win32.pyd,sha256=AWEbodc9PvK_RLUxKimSR5litvUjxieJwDmtfTFiYV8,15360
304
+ maxframe/lib/mmh3.pyi,sha256=pkzO6SUUukCty3X-WFsuokWBtIPWyxEa06ypF9liruI,1537
288
305
  maxframe/lib/version.py,sha256=VOVZu3KHS53YUsb_vQsT7AyHwcCWAgc-3bBqV5ANcbQ,18941
289
- maxframe/lib/wrapped_pickle.py,sha256=bzEaokhAZlkjXqw1xfeKO1KX2awhKIz_1RT81yPPoag,3949
306
+ maxframe/lib/wrapped_pickle.py,sha256=Akx-qhMMJJ6VVzQYrcVO_umFjx0IR-Yzb1XqyOS1Mio,3976
290
307
  maxframe/lib/aio/__init__.py,sha256=xzIYnV42_7CYuDTTv8svscIXQeJMF0nn8AXMbpv173M,963
291
308
  maxframe/lib/aio/_runners.py,sha256=zhDC92KxrYxLEufo5Hk8QU-mTVOxNL7IM9pZXas_nDg,5367
292
309
  maxframe/lib/aio/_threads.py,sha256=cDaEKg5STncq9QTPUUwehJ722vgueqBoB1C-NeoHN8E,1363
@@ -333,13 +350,13 @@ maxframe/lib/tblib/pickling_support.py,sha256=D9A0eX7gJeyqhXWxJJZ1GRwwcc5lj86wBR
333
350
  maxframe/lib/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
334
351
  maxframe/lib/tests/test_wrapped_pickle.py,sha256=WV0EJQ1hTSp8xjuosWWtEO7PeiBqdDUYgStxp72_c94,1575
335
352
  maxframe/odpsio/__init__.py,sha256=0SesD04XxFli4Gp23ipMkefFQ2ZTB0PItwZoSHpDC-k,820
336
- maxframe/odpsio/arrow.py,sha256=vvi9g5IZ8Wn224obv3vOO8U1X6UlNNTxSOfDA4Dvx0M,3875
353
+ maxframe/odpsio/arrow.py,sha256=pFw7aP7u8maEnXXF63VpMbI2qrOvWl78dYWGqHkXuJA,3884
337
354
  maxframe/odpsio/schema.py,sha256=Hba-eCXnBUS6NxHRsshaohzO1eThm4HeVzzvAF7E3Vg,12479
338
- maxframe/odpsio/tableio.py,sha256=r_Y47V5NhvLHsK7kypdswSDmOWag1Zoh9-FEjKe5MG0,9660
355
+ maxframe/odpsio/tableio.py,sha256=ugLy15g2JoCD3GHhCRrH9PT9g9hyKfwrC71qXEVqvB0,10470
339
356
  maxframe/odpsio/volumeio.py,sha256=IT_OO-RG2rJZOEx8C8xRr0oNR358RSAJQAp6WGxeXzI,3838
340
357
  maxframe/odpsio/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
341
358
  maxframe/odpsio/tests/test_arrow.py,sha256=yeDWFzsm2IMS-k6jimlQ7uim5T6WW1Anuy8didaf4cs,3194
342
- maxframe/odpsio/tests/test_schema.py,sha256=BI2Eq_DkyCimJEjSylAm_z3SLVNdEzKto7nqu7uyiW0,12088
359
+ maxframe/odpsio/tests/test_schema.py,sha256=QekMLBWu98IUN6mCloOxEQU0-7RL5OKzV8EE3A17wfU,12255
343
360
  maxframe/odpsio/tests/test_tableio.py,sha256=ZyQxBAVA5GG3j_NOPTTFs5vCQqQywhRKC9OAJx9LJxM,4789
344
361
  maxframe/odpsio/tests/test_volumeio.py,sha256=xvnrPZueZ76OAWK2zW_tHHI_cDxo7gJXTHiEe0lkmjk,3112
345
362
  maxframe/remote/__init__.py,sha256=Yu1ZDLICbehNfd1ur7_2bnIn2VFIsTxH_cILCbHAeZY,747
@@ -347,24 +364,25 @@ maxframe/remote/core.py,sha256=w_eTDEs0O7iIzLn1YrMGh2gcNAzzbqV0mx2bRT7su_U,7001
347
364
  maxframe/remote/run_script.py,sha256=k93-vaFLUanWoBRai4-78DX_SLeZ8_rbbxcCtOIXZO8,3677
348
365
  maxframe/serialization/__init__.py,sha256=nxxU7CI6MRcL3sjA1KmLkpTGKA3KG30FKl-MJJ0MCdI,947
349
366
  maxframe/serialization/arrow.py,sha256=OMeDjLcPgagqzokG7g3Vhwm6Xw1j-Kph1V2QsIwi6dw,3513
350
- maxframe/serialization/core.cp38-win32.pyd,sha256=pFmDzLiVjokpDE8ebNO8tSV1h0TIum7vAE9ubLF4X0E,352768
351
- maxframe/serialization/core.pxd,sha256=Fymih3Wo-CrOY27_o_DRINdbRGR7mgiT-XCaXCXafxM,1347
352
- maxframe/serialization/core.pyx,sha256=Qmipu3LiJGIBVy_7d4tSJqcYWnG5xj2I7IaPv2PSq5E,35078
353
- maxframe/serialization/exception.py,sha256=e7bZyPlZ8XhSCdeOwlYreq0HazPXKOgOA6r9Q4Ecn2Y,3113
367
+ maxframe/serialization/core.cp38-win32.pyd,sha256=3g8ScC0OM8MD2vVbWQBWs9lwf8hNk_ir-OKzGPOdF5Y,362496
368
+ maxframe/serialization/core.pxd,sha256=KioRiFhr5DTuqXnS2imJ3djWfSv2IAmhnz-kAFPgU6A,1548
369
+ maxframe/serialization/core.pyi,sha256=ELDG44v8O7A7RfURExMfVEJENuaEYHTwgJ-vzlH2Vh4,2206
370
+ maxframe/serialization/core.pyx,sha256=4iyUotIVV8CkVhHo3RyotDP1E7M2C1KMb0_40Ex_h1c,36321
371
+ maxframe/serialization/exception.py,sha256=noFTo9iwQje8Q0XnJV21J6bkbYahyoFLQSdl-OXNRIs,3079
354
372
  maxframe/serialization/maxframe_objects.py,sha256=ZHyvxIALoPuB_y3CRc70hZXyfdj4IhaKMXUEYLXHQag,1404
355
373
  maxframe/serialization/numpy.py,sha256=ENrFKl24mtYyO1vZRLwHvMD0r4z_UI7J2-yNlmfWSdk,3304
356
- maxframe/serialization/pandas.py,sha256=3aPzDOg9UYSI9GFpWm2aJc8EAi-d-timM8vQ8kTL3Cg,7349
374
+ maxframe/serialization/pandas.py,sha256=wqRcZhUd5tMi__7kmvhW1_-DdhBLnW00kz0hDrUvmEY,7522
357
375
  maxframe/serialization/scipy.py,sha256=fGwQ5ZreymrMT8g7TneATfFdKFF7YPNZQqgWgMa3J8M,2498
358
376
  maxframe/serialization/serializables/__init__.py,sha256=rlQhIaSAVzz4KYkc5shEHFZDPd6WDMPkxalU76yjJ3M,1406
359
- maxframe/serialization/serializables/core.py,sha256=QUjHQPG_Qd5yh_bW-mCdapY5uKUl-s1axrM2N3eomyQ,9227
377
+ maxframe/serialization/serializables/core.py,sha256=9XPxeVY33xrT77JVpO5uBc-olKn3bu8mdj58U1L4R0k,14165
360
378
  maxframe/serialization/serializables/field.py,sha256=DVott3HAbne4UvN-heSFS9gSl0wCxV5RssS738FCjzk,16639
361
379
  maxframe/serialization/serializables/field_type.py,sha256=hkxrXT2SL_tATuobtJDfL4DzzVP2hJjDlC3PrJg6ZKo,15454
362
380
  maxframe/serialization/serializables/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
363
381
  maxframe/serialization/serializables/tests/test_field_type.py,sha256=uG87-bdG8xGmjrubEHCww1ZKmRupSvnNKnZoV2SnwYM,4502
364
- maxframe/serialization/serializables/tests/test_serializable.py,sha256=jnXDfBSNomsEKUKPGd9rCQe8dbOJo7bcFZWvSbEpVsk,8493
382
+ maxframe/serialization/serializables/tests/test_serializable.py,sha256=w5r-WC-8Zi1xAO1AfxdkjGcbGHZ8G5B-z_-d47Fje-A,10159
365
383
  maxframe/serialization/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
366
384
  maxframe/serialization/tests/test_serial.py,sha256=9G2CbPBHINwcZ038pRwZON_OtH-JVXZ8w66BLYWP578,12923
367
- maxframe/tensor/__init__.py,sha256=aomZCK-bt5OYyRLGcbACxtFLrWIp14F4R3P79zwbN5E,3694
385
+ maxframe/tensor/__init__.py,sha256=lY_GZBClz2MIGwaMerP2DvbsUbC5crCel_kwkeuiyX4,3702
368
386
  maxframe/tensor/array_utils.py,sha256=xr_Ng-4dETJFjsMfWi5gbTPM9mRmPvRWj8QY2WKjmCg,5129
369
387
  maxframe/tensor/core.py,sha256=-G-UzY81GTKj2SD9FQLqBg-UDod5LjjrEA-uF16ofms,22638
370
388
  maxframe/tensor/operators.py,sha256=8VsSZ8OcImGkSRQvrYlV05KMHGsroAYmW1o9RM2yV1U,3584
@@ -469,18 +487,20 @@ maxframe/tensor/arithmetic/truediv.py,sha256=xrsN8Z-q6msst9S8-469XQFgrs7T4RTkaym
469
487
  maxframe/tensor/arithmetic/trunc.py,sha256=3z8jme9ZpPU8TqNo2ioViqJa7ThNK9KOVX1wl-R0a7M,2375
470
488
  maxframe/tensor/arithmetic/utils.py,sha256=Kc3xqbIK9uRhHhDKFwAj-mW7SRljajfK9UOMyXyCHCY,2304
471
489
  maxframe/tensor/arithmetic/tests/__init__.py,sha256=_PB28W40qku6YiT8fJYqdmEdRMQfelOwGeksCOZJfCc,657
472
- maxframe/tensor/arithmetic/tests/test_arithmetic.py,sha256=e8sc6uYI09to_vzci5Vl8BuTM_oDBi4rQ5sQnQkjer4,11403
473
- maxframe/tensor/base/__init__.py,sha256=XaM7fzYdPu1CLzGuWlXhp39EpNTD0PQXR1xotcFLZgA,1049
490
+ maxframe/tensor/arithmetic/tests/test_arithmetic.py,sha256=fAkVgixF-WfRZHGujGmB_s5llwiL1DDdvxcAsWPYfEY,11409
491
+ maxframe/tensor/base/__init__.py,sha256=qVf97u2J74RSjCmkF-7N-ylxWUc6mbiPPWpDe45vRmQ,1113
474
492
  maxframe/tensor/base/astype.py,sha256=fzj0o3pJMVaSEEKMR-JBsd2FktlSa9ABtpt-fcWKio0,4513
493
+ maxframe/tensor/base/atleast_1d.py,sha256=_d7xamputAAHFY8v0Ayc8ILMdqS6fLZYhWQLOh_LFmc,1992
475
494
  maxframe/tensor/base/broadcast_to.py,sha256=V-OB8YSbMfkMP2JpbiIQ0A9PrC-OHfaWzrntf5AOEwo,2775
476
495
  maxframe/tensor/base/ravel.py,sha256=P9SCDU-UUHzd1HqZbodBSgKjtjiOFkyfLV_G9LFnz_U,3265
477
496
  maxframe/tensor/base/transpose.py,sha256=yMK1KzxguKZOWxT3oMo5GchjB-1Yakilp2rEX3QlxFM,3539
497
+ maxframe/tensor/base/unique.py,sha256=GYLorbwtjCKCTzkbFWk-zaUORU2mQJ2nbXDi2Wr-IP8,6943
478
498
  maxframe/tensor/base/where.py,sha256=cSg1mDhiOBB4F0Soh_uVw3yeSve9pfEhPSIDadc-wto,4127
479
499
  maxframe/tensor/base/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
480
500
  maxframe/tensor/base/tests/test_base.py,sha256=i9TneozyHCHDhO438U285KS6tdh0Zks8mgkRm3fsHxk,2957
481
501
  maxframe/tensor/datasource/__init__.py,sha256=xtrdcuP6yTc_T19ITPsJTknoqTT-XudlhSlffrScjsY,1178
482
502
  maxframe/tensor/datasource/arange.py,sha256=tjNF_huiWTtqtN6YBBtn0tvP9Pnebf6LNXRmAsYqRQk,5632
483
- maxframe/tensor/datasource/array.py,sha256=UdTF-mEDzHQWiiRh8c5GFVYujA06OlKvKmCVMYFOHdE,13325
503
+ maxframe/tensor/datasource/array.py,sha256=pC1eeo4C1EkdHklStr6aOCBfRx1SqyeHHwRglKI2W1A,13419
484
504
  maxframe/tensor/datasource/core.py,sha256=LzuHtRWCNny1y-IzGylelWZ6rejS31LdT4E7qs_uIQs,3520
485
505
  maxframe/tensor/datasource/empty.py,sha256=GpK-DHUfJp9M46wUrGt5lf-YbDDveubwntDjTVYnmMw,6019
486
506
  maxframe/tensor/datasource/from_dataframe.py,sha256=iJY2cw2yA6YKnqRLyB0XdvpdemHHzpU7q2SA1sYo6mo,2573
@@ -488,7 +508,7 @@ maxframe/tensor/datasource/from_dense.py,sha256=txyxNBD0oXr3Ama9me2ay1_ASuDu1QK3
488
508
  maxframe/tensor/datasource/from_sparse.py,sha256=le-Wfno7Z8XY71TLwEOhO80fkvKXwKXbDgsrOfmDM8s,1593
489
509
  maxframe/tensor/datasource/full.py,sha256=-54C2YwqIEP3rPGsY0rnbgMBp15_NqgDJ7lxOJJuXGU,6462
490
510
  maxframe/tensor/datasource/ones.py,sha256=0UuYAwMLGfjF-O_90vkwsMqQlAAfJ98TdxbfgC1y6Fk,5182
491
- maxframe/tensor/datasource/scalar.py,sha256=vxEo-QQCkKj0mP2qvs8LE1LXGsTe3BYtITitASTgGAI,1191
511
+ maxframe/tensor/datasource/scalar.py,sha256=g2dsnmOEzV30I0UK3ytMtkiosdfH3NJ6wacZuxBpmbk,1196
492
512
  maxframe/tensor/datasource/zeros.py,sha256=DJZK_kraSn820O17GSHLFHV43x1JL3Gt_HdlN0p5o7k,5860
493
513
  maxframe/tensor/datasource/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
494
514
  maxframe/tensor/datasource/tests/test_datasource.py,sha256=C9sOu8rpDNpu3yMhgln4UzkqW5SklL63IJXRwrwOCYc,7931
@@ -571,7 +591,7 @@ maxframe/tensor/reduction/argmax.py,sha256=UqPBCgnyLFpIjaNPWxcyLGynpOzYnaVj23PQy
571
591
  maxframe/tensor/reduction/argmin.py,sha256=Gy_O7kEcJosGQImqkR5S7N5ygs-bXnYcpljj3TSe5Ho,3202
572
592
  maxframe/tensor/reduction/array_equal.py,sha256=1otUnsacNdSgkdP1hHs3NcAdqtJNyY3F1oOVItrmv70,1859
573
593
  maxframe/tensor/reduction/core.py,sha256=NwASayI1P1uCCFCyNltH-cVezefW3Th2qS6viSuSKMQ,5257
574
- maxframe/tensor/reduction/count_nonzero.py,sha256=eFqYCXGbzl7DG_crwcN64MgYXgR1CTNO5XSgPiy1ses,2806
594
+ maxframe/tensor/reduction/count_nonzero.py,sha256=82Q6vm4_2eFcdFsPSUw6PD1eUV_4geKVckvs7GnRsfE,2802
575
595
  maxframe/tensor/reduction/cumprod.py,sha256=zitvIvh2Sb4iL7yL2Spenoe7NQndV9LJ4qrejd_ul48,3369
576
596
  maxframe/tensor/reduction/cumsum.py,sha256=IUOvbrVEgjDOdd3nsxnDy3Fx0eJC0EfOGt0PIfik_PM,3592
577
597
  maxframe/tensor/reduction/max.py,sha256=8B5k9n89orftEYLI_Lwl10O0zbN6vq5SxUpX0W9L7Bo,4099
@@ -605,26 +625,25 @@ maxframe/tensor/ufunc/__init__.py,sha256=8QUi-cPvvbsD7i7LOeZ9sc0v1XXd7lt-XV5pQKb
605
625
  maxframe/tensor/ufunc/ufunc.py,sha256=XRtGlhdrW7H--mrc8fTBOlUP0mzKpd9tdRtCuLDymtc,7383
606
626
  maxframe/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
607
627
  maxframe/tests/test_codegen.py,sha256=h3TKqP4zghxTn1twH7gR9jOe6NKXdCC1B4u0chlUrpY,2277
608
- maxframe/tests/test_protocol.py,sha256=IgZT2CBH1dv6V1DwSq-PjvrUhvtOf8Mab6dnWhAT3No,5331
609
- maxframe/tests/test_utils.py,sha256=0Iey3O6zrGI1yQU2OSpWavJNvhUjrmdkct4-27tkGUM,12353
610
- maxframe/tests/utils.py,sha256=gCre-8BApU4-AEun9WShm4Ff5a9a_oKxvLNneESXBjU,4732
611
- maxframe_client/__init__.py,sha256=xqlN69LjvAp2bNCaT9d82U9AF5WKi_c4UOheEW1wV9E,741
628
+ maxframe/tests/test_protocol.py,sha256=JkvsgGnbVSLu3VsUd_XT_qstcHPnKLzmoDBEXetaWT8,6281
629
+ maxframe/tests/test_utils.py,sha256=5Z2cym1tlpnF73f4I3WC1eBocsbNEDGzDErJL_fKWx8,11868
630
+ maxframe/tests/utils.py,sha256=nZeSDh0jLWo1hKPkuq8Y2uwQhLwjaKok4wcnq9vhyn8,4740
631
+ maxframe_client/__init__.py,sha256=hIVOnxj6AoN2zIMxQCzRb10k0LSoYS_DrQevXO9KPBg,705
612
632
  maxframe_client/conftest.py,sha256=UWWMYjmohHL13hLl4adb0gZPLRdBVOYVvsFo6VZruI0,658
613
- maxframe_client/fetcher.py,sha256=ajt14PYVEXKShXSx-qTL_8adMCXBEsZoOhHr3yx95-M,7015
633
+ maxframe_client/fetcher.py,sha256=yFP6Hgz01-qPqBwmTX5-5ECU-G6q-TX5SUktplcJgcU,9213
614
634
  maxframe_client/clients/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
615
635
  maxframe_client/clients/framedriver.py,sha256=upN6C1eZrCpLTsS6fihWOMy392psWfo0bw2XgSLI_Yg,4581
616
- maxframe_client/clients/spe.py,sha256=uizNBejhU_FrMhsgsFgDnq7gL7Cxk803LeLYmr3nmxs,3697
617
636
  maxframe_client/session/__init__.py,sha256=9zFCd3zkSADESAFc4SPoQ2nkvRwsIhhpNNO2TtSaWbU,854
618
637
  maxframe_client/session/consts.py,sha256=nD-D0zHXumbQI8w3aUyltJS59K5ftipf3xCtHNLmtc8,1380
619
638
  maxframe_client/session/graph.py,sha256=GSZaJ-PV4DK8bTcNtoSoY5kDTyyIRAKleh4tOCSUbsI,4470
620
- maxframe_client/session/odps.py,sha256=AZKFz1_Pl8-zJ_RwxBoN00uUDKf4MbzhvVZ5cTywURM,16781
621
- maxframe_client/session/task.py,sha256=R8x8OERIb673vTq-o0ig6Zy2NT4_jvi8AbLhyMaljo8,11409
639
+ maxframe_client/session/odps.py,sha256=rOQJokPpA_hczjWsXyvYnl9m9o1DlZLMnoDIsQtmbnc,19885
640
+ maxframe_client/session/task.py,sha256=8_ZN2xbMdkRy2XdgJpEmB35vhGxfL0Qluzd0NVTjPwE,11402
622
641
  maxframe_client/session/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
623
642
  maxframe_client/session/tests/test_task.py,sha256=861usEURVXeTUzfJYZmBfwsHfZFexG23mMtT5IJOOm4,3364
624
643
  maxframe_client/tests/__init__.py,sha256=29eM5D4knhYwe3TF42naTuC5b4Ym3VeH4rK8KpdLWNY,609
625
644
  maxframe_client/tests/test_fetcher.py,sha256=7iYXLMIoCJLfgUkjB2HBkV-sqQ-xGlhtzfp9hRJz_kM,3605
626
- maxframe_client/tests/test_session.py,sha256=_i6ICUTg6LMs-KD3w3pYNSt5_k9gCOkMx4gTfE20CF8,7130
627
- maxframe-0.1.0b4.dist-info/METADATA,sha256=uH-sH39DV-QlQoIEKtD3W7Os0Z99jZgTs7uyKf-t30Q,3147
628
- maxframe-0.1.0b4.dist-info/WHEEL,sha256=57hb2VMKfzdcZEFKIri3BxIFhvran9ahu4uVnDJqFIU,96
629
- maxframe-0.1.0b4.dist-info/top_level.txt,sha256=64x-fc2q59c_vXwNUkehyjF1vb8JWqFSdYmUqIFqoTM,31
630
- maxframe-0.1.0b4.dist-info/RECORD,,
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=57hb2VMKfzdcZEFKIri3BxIFhvran9ahu4uVnDJqFIU,96
648
+ maxframe-1.0.0rc1.dist-info/top_level.txt,sha256=64x-fc2q59c_vXwNUkehyjF1vb8JWqFSdYmUqIFqoTM,31
649
+ maxframe-1.0.0rc1.dist-info/RECORD,,
@@ -13,5 +13,4 @@
13
13
  # limitations under the License.
14
14
 
15
15
  from .clients.framedriver import FrameDriverClient
16
- from .clients.spe import SPEClient
17
16
  from .session import MaxFrameRestSession
@@ -12,16 +12,21 @@
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
15
17
  from abc import ABC, abstractmethod
16
18
  from numbers import Integral
17
- from typing import Any, Dict, List, Type, Union
19
+ from typing import Any, Dict, List, Optional, Type, Union
18
20
 
21
+ import pandas as pd
19
22
  import pyarrow as pa
20
23
  from odps import ODPS
21
24
  from odps.models import ExternalVolume, PartedVolume
25
+ from odps.tunnel import TableTunnel
22
26
  from tornado import httpclient
23
27
 
24
28
  from maxframe.core import OBJECT_TYPE
29
+ from maxframe.dataframe.core import DATAFRAME_TYPE
25
30
  from maxframe.lib import wrapped_pickle as pickle
26
31
  from maxframe.odpsio import HaloTableIO, arrow_to_pandas, build_dataframe_table_meta
27
32
  from maxframe.protocol import (
@@ -31,8 +36,9 @@ from maxframe.protocol import (
31
36
  ResultInfo,
32
37
  ResultType,
33
38
  )
39
+ from maxframe.tensor.core import TENSOR_TYPE
34
40
  from maxframe.typing_ import PandasObjectTypes, TileableType
35
- from maxframe.utils import ToThreadMixin
41
+ from maxframe.utils import ToThreadMixin, deserialize_serializable
36
42
 
37
43
  _result_fetchers: Dict[ResultType, Type["ResultFetcher"]] = dict()
38
44
 
@@ -52,6 +58,14 @@ class ResultFetcher(ABC):
52
58
  def __init__(self, odps_entry: ODPS):
53
59
  self._odps_entry = odps_entry
54
60
 
61
+ @abstractmethod
62
+ async def update_tileable_meta(
63
+ self,
64
+ tileable: TileableType,
65
+ info: ResultInfo,
66
+ ) -> None:
67
+ raise NotImplementedError
68
+
55
69
  @abstractmethod
56
70
  async def fetch(
57
71
  self,
@@ -66,6 +80,13 @@ class ResultFetcher(ABC):
66
80
  class NullFetcher(ResultFetcher):
67
81
  result_type = ResultType.NULL
68
82
 
83
+ async def update_tileable_meta(
84
+ self,
85
+ tileable: TileableType,
86
+ info: ResultInfo,
87
+ ) -> None:
88
+ return
89
+
69
90
  async def fetch(
70
91
  self,
71
92
  tileable: TileableType,
@@ -79,6 +100,40 @@ class NullFetcher(ResultFetcher):
79
100
  class ODPSTableFetcher(ToThreadMixin, ResultFetcher):
80
101
  result_type = ResultType.ODPS_TABLE
81
102
 
103
+ def _get_table_comment(self, table_name: str) -> Optional[str]:
104
+ table = self._odps_entry.get_table(table_name)
105
+ return getattr(table, "comment", None)
106
+
107
+ async def update_tileable_meta(
108
+ self,
109
+ tileable: TileableType,
110
+ info: ODPSTableResultInfo,
111
+ ) -> 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)
123
+
124
+ if tileable.shape and any(pd.isna(x) for x in tileable.shape):
125
+ part_specs = [None] if not info.partition_specs else info.partition_specs
126
+ tunnel = TableTunnel(self._odps_entry)
127
+ total_records = 0
128
+ for part_spec in part_specs:
129
+ session = tunnel.create_download_session(
130
+ info.full_table_name, part_spec
131
+ )
132
+ total_records += session.count
133
+ new_shape_list = list(tileable.shape)
134
+ new_shape_list[-1] = total_records
135
+ tileable.params = {"shape": tuple(new_shape_list)}
136
+
82
137
  def _read_single_source(
83
138
  self,
84
139
  table_meta: DataFrameTableMeta,
@@ -149,6 +204,13 @@ class ODPSTableFetcher(ToThreadMixin, ResultFetcher):
149
204
  class ODPSVolumeFetcher(ToThreadMixin, ResultFetcher):
150
205
  result_type = ResultType.ODPS_VOLUME
151
206
 
207
+ async def update_tileable_meta(
208
+ self,
209
+ tileable: TileableType,
210
+ info: ODPSVolumeResultInfo,
211
+ ) -> None:
212
+ return
213
+
152
214
  async def _read_parted_volume_data(
153
215
  self, volume: PartedVolume, partition: str, file_name: str
154
216
  ) -> bytes:
@@ -197,6 +259,6 @@ class ODPSVolumeFetcher(ToThreadMixin, ResultFetcher):
197
259
  info: ODPSVolumeResultInfo,
198
260
  indexes: List[Union[Integral, slice]],
199
261
  ) -> Any:
200
- if isinstance(tileable, OBJECT_TYPE):
262
+ if isinstance(tileable, (OBJECT_TYPE, TENSOR_TYPE)):
201
263
  return await self._fetch_object(info)
202
264
  raise NotImplementedError(f"Fetching {type(tileable)} not implemented")
@@ -31,6 +31,11 @@ from maxframe.dataframe import read_odps_table
31
31
  from maxframe.dataframe.core import DATAFRAME_TYPE, SERIES_TYPE
32
32
  from maxframe.dataframe.datasource import PandasDataSourceOperator
33
33
  from maxframe.dataframe.datasource.read_odps_table import DataFrameReadODPSTable
34
+ from maxframe.errors import (
35
+ MaxFrameError,
36
+ NoTaskServerResponseError,
37
+ SessionAlreadyClosedError,
38
+ )
34
39
  from maxframe.odpsio import HaloTableIO, pandas_to_arrow, pandas_to_odps_schema
35
40
  from maxframe.protocol import (
36
41
  DagInfo,
@@ -84,6 +89,9 @@ class MaxFrameServiceCaller(metaclass=abc.ABCMeta):
84
89
  def decref(self, tileable_keys: List[str]) -> None:
85
90
  raise NotImplementedError
86
91
 
92
+ def get_logview_address(self, dag_id=None, hours=None) -> Optional[str]:
93
+ return None
94
+
87
95
 
88
96
  class MaxFrameSession(ToThreadMixin, IsolatedAsyncSession):
89
97
  _odps_entry: Optional[ODPS]
@@ -129,6 +137,7 @@ class MaxFrameSession(ToThreadMixin, IsolatedAsyncSession):
129
137
  async def _init(self, _address: str):
130
138
  session_info = await self.ensure_async_call(self._caller.create_session)
131
139
  self._session_id = session_info.session_id
140
+ await self._show_logview_address()
132
141
 
133
142
  def _upload_and_get_read_tileable(self, t: TileableType) -> Optional[TileableType]:
134
143
  if (
@@ -140,9 +149,16 @@ class MaxFrameSession(ToThreadMixin, IsolatedAsyncSession):
140
149
 
141
150
  schema, table_meta = pandas_to_odps_schema(t, unknown_as_string=True)
142
151
  if self._odps_entry.exist_table(table_meta.table_name):
143
- self._odps_entry.delete_table(table_meta.table_name)
152
+ self._odps_entry.delete_table(
153
+ table_meta.table_name, hints=options.sql.settings
154
+ )
144
155
  table_name = build_temp_table_name(self.session_id, t.key)
145
- table_obj = self._odps_entry.create_table(table_name, schema)
156
+ table_obj = self._odps_entry.create_table(
157
+ table_name,
158
+ schema,
159
+ lifecycle=options.session.temp_table_lifecycle,
160
+ hints=options.sql.settings,
161
+ )
146
162
 
147
163
  data = t.op.get_data()
148
164
  batch_size = options.session.upload_batch_size
@@ -239,6 +255,8 @@ class MaxFrameSession(ToThreadMixin, IsolatedAsyncSession):
239
255
  self._caller.submit_dag, tileable_graph, replaced_infos
240
256
  )
241
257
 
258
+ await self._show_logview_address(dag_info.dag_id)
259
+
242
260
  progress = Progress()
243
261
  profiling = Profiling()
244
262
  aio_task = asyncio.create_task(
@@ -256,8 +274,10 @@ class MaxFrameSession(ToThreadMixin, IsolatedAsyncSession):
256
274
  self, dag_info: DagInfo, tileables: List, progress: Progress
257
275
  ):
258
276
  start_time = time.time()
277
+ session_id = dag_info.session_id
259
278
  dag_id = dag_info.dag_id
260
279
  wait_timeout = 10
280
+ server_no_response_time = None
261
281
  with enter_mode(build=True, kernel=True):
262
282
  key_to_tileables = {t.key: t for t in tileables}
263
283
 
@@ -272,9 +292,37 @@ class MaxFrameSession(ToThreadMixin, IsolatedAsyncSession):
272
292
  if timeout_val <= 0:
273
293
  raise TimeoutError("Running DAG timed out")
274
294
 
275
- dag_info: DagInfo = await self.ensure_async_call(
276
- self._caller.get_dag_info, dag_id
277
- )
295
+ try:
296
+ dag_info: DagInfo = await self.ensure_async_call(
297
+ self._caller.get_dag_info, dag_id
298
+ )
299
+ server_no_response_time = None
300
+ except (NoTaskServerResponseError, SessionAlreadyClosedError) as ex:
301
+ # when we receive SessionAlreadyClosedError after NoTaskServerResponseError
302
+ # is received, it is possible that task server is restarted and
303
+ # SessionAlreadyClosedError might be flaky. Otherwise, the error
304
+ # should be raised.
305
+ if (
306
+ isinstance(ex, SessionAlreadyClosedError)
307
+ and not server_no_response_time
308
+ ):
309
+ raise
310
+ server_no_response_time = server_no_response_time or time.time()
311
+ if (
312
+ time.time() - server_no_response_time
313
+ > options.client.task_restart_timeout
314
+ ):
315
+ raise MaxFrameError(
316
+ "Failed to get valid response from service. "
317
+ f"Session {self._session_id}."
318
+ ) from None
319
+ await asyncio.sleep(timeout_val)
320
+ continue
321
+
322
+ if dag_info is None:
323
+ raise SystemError(
324
+ f"Cannot find DAG with ID {dag_id} in session {session_id}"
325
+ )
278
326
  progress.value = dag_info.progress
279
327
  if dag_info.status != DagStatus.RUNNING:
280
328
  break
@@ -294,6 +342,8 @@ class MaxFrameSession(ToThreadMixin, IsolatedAsyncSession):
294
342
 
295
343
  for key, result_info in dag_info.tileable_to_result_infos.items():
296
344
  t = key_to_tileables[key]
345
+ fetcher = get_fetcher_cls(result_info.result_type)(self._odps_entry)
346
+ await fetcher.update_tileable_meta(t, result_info)
297
347
  self._tileable_to_infos[t] = result_info
298
348
 
299
349
  def _get_data_tileable_and_indexes(
@@ -388,6 +438,25 @@ class MaxFrameSession(ToThreadMixin, IsolatedAsyncSession):
388
438
  async def get_mutable_tensor(self, name: str):
389
439
  raise NotImplementedError
390
440
 
441
+ async def get_logview_address(self, hours=None) -> Optional[str]:
442
+ return await self.get_dag_logview_address(None, hours)
443
+
444
+ async def get_dag_logview_address(self, dag_id=None, hours=None) -> Optional[str]:
445
+ return await self.ensure_async_call(
446
+ self._caller.get_logview_address, dag_id, hours
447
+ )
448
+
449
+ async def _show_logview_address(self, dag_id=None, hours=None):
450
+ identity = f"Session ID: {self._session_id}"
451
+ if dag_id:
452
+ identity += f", DAG ID: {dag_id}"
453
+
454
+ logview_addr = await self.get_dag_logview_address(dag_id, hours)
455
+ if logview_addr:
456
+ logger.info("%s, Logview: %s", identity, logview_addr)
457
+ else:
458
+ logger.info("%s, Logview address does not exist", identity)
459
+
391
460
 
392
461
  class MaxFrameRestCaller(MaxFrameServiceCaller):
393
462
  _client: FrameDriverClient