maxframe 1.3.0__cp310-cp310-macosx_10_9_universal2.whl → 1.3.1__cp310-cp310-macosx_10_9_universal2.whl

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

Potentially problematic release.


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

Binary file
@@ -303,11 +303,63 @@ def agg(groupby, func=None, method="auto", *args, **kwargs):
303
303
  if aggregated result is very large, 'auto' will use 'shuffle' method
304
304
  in distributed mode and use 'tree' in local mode.
305
305
 
306
-
307
306
  Returns
308
307
  -------
309
308
  Series or DataFrame
310
309
  Aggregated result.
310
+
311
+ Examples
312
+ --------
313
+ >>> import maxframe.dataframe as md
314
+ >>> df = md.DataFrame(
315
+ ... {
316
+ ... "A": [1, 1, 2, 2],
317
+ ... "B": [1, 2, 3, 4],
318
+ ... "C": [0.362838, 0.227877, 1.267767, -0.562860],
319
+ ... }
320
+ ... ).execute()
321
+ A B C
322
+ 0 1 1 0.362838
323
+ 1 1 2 0.227877
324
+ 2 2 3 1.267767
325
+ 3 2 4 -0.562860
326
+
327
+ The aggregation is for each column.
328
+
329
+ >>> df.groupby('A').agg('min').execute()
330
+ B C
331
+ A
332
+ 1 1 0.227877
333
+ 2 3 -0.562860
334
+
335
+ Multiple aggregations.
336
+
337
+ >>> df.groupby('A').agg(['min', 'max']).execute()
338
+ B C
339
+ min max min max
340
+ A
341
+ 1 1 2 0.227877 0.362838
342
+ 2 3 4 -0.562860 1.267767
343
+
344
+ Different aggregations per column
345
+
346
+ >>> df.groupby('A').agg({'B': ['min', 'max'], 'C': 'sum'}).execute()
347
+ B C
348
+ min max sum
349
+ A
350
+ 1 1 2 0.590715
351
+ 2 3 4 0.704907
352
+
353
+ To control the output names with different aggregations per column, pandas supports “named aggregation”
354
+
355
+ >>> from maxframe.dataframe.groupby import NamedAgg
356
+ >>> df.groupby("A").agg(
357
+ ... b_min=NamedAgg(column="B", aggfunc="min"),
358
+ ... c_sum=NamedAgg(column="C", aggfunc="sum")).execute()
359
+ b_min c_sum
360
+ A
361
+ 1 1 0.590715
362
+ 2 3 0.704907
311
363
  """
312
364
 
313
365
  # When perform a computation on the grouped data, we won't shuffle
@@ -315,6 +315,69 @@ def compile_reduction_funcs(op: DataFrameAggregate, input: TileableType):
315
315
 
316
316
 
317
317
  def aggregate(df, func=None, axis=0, **kw):
318
+ """
319
+ Aggregate using one or more operations over the specified axis.
320
+
321
+ Parameters
322
+ ----------
323
+ df : DataFrame, Series
324
+ Object to aggregate.
325
+ func : list or dict
326
+ Function to use for aggregating the data.
327
+ axis : {0 or ‘index’, 1 or ‘columns’}, default 0
328
+ If 0 or ‘index’: apply function to each column. If 1 or ‘columns’: apply function to each row.
329
+ kw
330
+ Keyword arguments to pass to func.
331
+
332
+ Returns
333
+ -------
334
+ scalar, Series or DataFrame
335
+ The return can be:
336
+
337
+ * scalar : when Series.agg is called with single function
338
+ * Series : when DataFrame.agg is called with a single function
339
+ * DataFrame : when DataFrame.agg is called with several functions
340
+
341
+ Examples
342
+ --------
343
+ >>> import maxframe.dataframe as md
344
+ >>> df = md.DataFrame([[1, 2, 3],
345
+ ... [4, 5, 6],
346
+ ... [7, 8, 9],
347
+ ... [np.nan, np.nan, np.nan]],
348
+ ... columns=['A', 'B', 'C']).execute()
349
+
350
+ Aggregate these functions over the rows.
351
+
352
+ >>> df.agg(['sum', 'min']).execute()
353
+ A B C
354
+ min 1.0 2.0 3.0
355
+ sum 12.0 15.0 18.0
356
+
357
+ Different aggregations per column.
358
+
359
+ >>> df.agg({'A' : ['sum', 'min'], 'B' : ['min', 'max']}).execute()
360
+ A B
361
+ max NaN 8.0
362
+ min 1.0 2.0
363
+ sum 12.0 NaN
364
+
365
+ Aggregate different functions over the columns and rename the index of the resulting DataFrame.
366
+
367
+ >>> df.agg(x=('A', 'max'), y=('B', 'min'), z=('C', 'mean')).execute()
368
+ A B C
369
+ x 7.0 NaN NaN
370
+ y NaN 2.0 NaN
371
+ z NaN NaN 6.0
372
+
373
+ >>> s = md.Series([1, 2, 3, 4])
374
+ >>> s.agg('min').execute()
375
+ 1
376
+
377
+ >>> s.agg(['min', 'max']).execute()
378
+ max 4
379
+ min 1
380
+ """
318
381
  axis = validate_axis(axis, df)
319
382
  if (
320
383
  df.ndim == 2
@@ -404,6 +404,7 @@ class ReductionPostStep(NamedTuple):
404
404
  func_name: str
405
405
  columns: Optional[List[str]]
406
406
  func_idl: bytes
407
+ post_func_aliases: Optional[List[str]] = None
407
408
 
408
409
 
409
410
  class ReductionSteps(NamedTuple):
@@ -462,6 +463,7 @@ class ReductionCompiler:
462
463
  self._output_key_to_agg_steps = dict()
463
464
  self._output_key_to_post_steps = dict()
464
465
  self._output_key_to_post_cols = dict()
466
+ self._output_key_to_col_func_mapping = dict()
465
467
 
466
468
  @classmethod
467
469
  def _check_function_valid(cls, func):
@@ -531,6 +533,14 @@ class ReductionCompiler:
531
533
  self._output_key_to_post_steps[step.output_key] = step
532
534
  self._update_col_dict(self._output_key_to_post_cols, step.output_key, cols)
533
535
 
536
+ if cols is not None:
537
+ col_name_map = (
538
+ self._output_key_to_col_func_mapping.get(step.output_key) or {}
539
+ )
540
+ for col in cols:
541
+ col_name_map[col] = func_name
542
+ self._output_key_to_col_func_mapping[step.output_key] = col_name_map
543
+
534
544
  @staticmethod
535
545
  def _build_mock_return_object(func, input_dtype, ndim):
536
546
  from ..initializer import DataFrame as MaxDataFrame
@@ -812,11 +822,12 @@ class ReductionCompiler:
812
822
  agg_funcs.append(step)
813
823
 
814
824
  for key, step in self._output_key_to_post_steps.items():
815
- cols = self._output_key_to_post_cols[key]
816
- if cols and set(cols) == set(referred_cols):
817
- post_cols = None
818
- else:
819
- post_cols = cols
825
+ post_cols = self._output_key_to_post_cols[key]
826
+ func_renames = None
827
+ if post_cols:
828
+ col_map = self._output_key_to_col_func_mapping.get(key)
829
+ if col_map:
830
+ func_renames = [col_map[c] for c in post_cols]
820
831
 
821
832
  func_name = step.func_name
822
833
  if self._lambda_counter == 1 and step.func_name == "<lambda_0>":
@@ -831,6 +842,7 @@ class ReductionCompiler:
831
842
  func_name,
832
843
  post_cols,
833
844
  step.func_idl,
845
+ func_renames,
834
846
  )
835
847
  )
836
848
 
@@ -34,8 +34,25 @@ class DashScopeLLMMixin(Serializable):
34
34
 
35
35
 
36
36
  class DashScopeTextLLM(TextLLM, DashScopeLLMMixin):
37
+ """
38
+ DashScope text LLM.
39
+ """
40
+
37
41
  api_key_resource = StringField("api_key_resource", default=None)
38
42
 
43
+ def __init__(self, name: str, api_key_resource: str):
44
+ """
45
+ Initialize a DashScope text LLM.
46
+
47
+ Parameters
48
+ ----------
49
+ name : str
50
+ The LLM name to use, check DashScope for `available models <https://help.aliyun.com/zh/model-studio/getting-started/models>`_.
51
+ api_key_resource : str
52
+ The MaxCompute resource file name containing the DashScope API key.
53
+ """
54
+ super().__init__(name=name, api_key_resource=api_key_resource)
55
+
39
56
  def generate(
40
57
  self,
41
58
  data,
@@ -50,8 +67,25 @@ class DashScopeTextLLM(TextLLM, DashScopeLLMMixin):
50
67
 
51
68
 
52
69
  class DashScopeMultiModalLLM(MultiModalLLM, DashScopeLLMMixin):
70
+ """
71
+ DashScope multi-modal LLM.
72
+ """
73
+
53
74
  api_key_resource = StringField("api_key_resource", default=None)
54
75
 
76
+ def __init__(self, name: str, api_key_resource: str):
77
+ """
78
+ Initialize a DashScope multi-modal LLM.
79
+
80
+ Parameters
81
+ ----------
82
+ name : str
83
+ The LLM name to use, check DashScope for `available models <https://help.aliyun.com/zh/model-studio/getting-started/models>`_.
84
+ api_key_resource : str
85
+ The MaxCompute resource file name containing the DashScope API key.
86
+ """
87
+ super().__init__(name=name, api_key_resource=api_key_resource)
88
+
55
89
  def generate(
56
90
  self,
57
91
  data,
@@ -27,6 +27,21 @@ class ManagedLLMTextGenOperator(LLMTextGenOperator):
27
27
 
28
28
 
29
29
  class ManagedTextLLM(TextLLM):
30
+ """
31
+ Managed text LLM by MaxFrame.
32
+ """
33
+
34
+ def __init__(self, name: str):
35
+ """
36
+ Initialize a managed text LLM.
37
+
38
+ Parameters
39
+ ----------
40
+ name : str
41
+ The managed text LLM name to use.
42
+ """
43
+ super().__init__(name=name)
44
+
30
45
  def generate(
31
46
  self,
32
47
  data,
@@ -34,6 +34,98 @@ def generate(
34
34
  prompt_template: Dict[str, Any],
35
35
  params: Dict[str, Any] = None,
36
36
  ):
37
+ """
38
+ Generate text with multi model llm based on given data and prompt template.
39
+
40
+ Parameters
41
+ ----------
42
+ data : DataFrame or Series
43
+ Input data used for generation. Can be maxframe DataFrame, Series that contain text to be processed.
44
+ model : MultiModalLLM
45
+ Language model instance support **MultiModal** inputs used for text generation.
46
+ prompt_template : List[Dict[str, List[Dict[str, str]]]]
47
+ List of message with column names as placeholders. Each message contains a role and content. Content is a list of dict, each dict contains a text or image, the value can reference column data from input.
48
+
49
+ Here is an example of prompt template.
50
+
51
+ .. code-block:: python
52
+
53
+ [
54
+ {
55
+ "role": "<role>", # e.g. "user" or "assistant"
56
+ "content": [
57
+ {
58
+ # At least one of these fields is required
59
+ "image": "<image_data_url>", # optional
60
+ "text": "<prompt_text_template>" # optional
61
+ },
62
+ ...
63
+ ]
64
+ }
65
+ ]
66
+
67
+ Where:
68
+
69
+ - ``text`` can be a Python format string using column names from input data as parameters (e.g. ``"{column_name}"``)
70
+ - ``image`` should be a DataURL string following `RFC2397 <https://en.wikipedia.org/wiki/Data_URI_scheme>`_ standard with format.
71
+
72
+ .. code-block:: none
73
+
74
+ data:<mime_type>[;base64],<column_name>
75
+
76
+
77
+ params : Dict[str, Any], optional
78
+ Additional parameters for generation configuration, by default None.
79
+ Can include settings like temperature, max_tokens, etc.
80
+
81
+ Returns
82
+ -------
83
+ DataFrame
84
+ Generated text raw response and success status. If the success is False, the generated text will return the
85
+ error message.
86
+
87
+ Notes
88
+ -----
89
+ - The ``api_key_resource`` parameter should reference a text file resource in MaxCompute that contains only your DashScope API key.
90
+
91
+ - Using DashScope services requires enabling public network access for your MaxCompute project. This can be configured through the MaxCompute console by `enabling the Internet access feature <https://help.aliyun.com/zh/maxcompute/user-guide/network-connection-process>`_ for your project. Without this configuration, the API calls to DashScope will fail due to network connectivity issues.
92
+
93
+ Examples
94
+ --------
95
+ You can initialize a DashScope multi-modal model (such as qwen-vl-max) by providing a model name and an ``api_key_resource``.
96
+ The ``api_key_resource`` is a MaxCompute resource name that points to a text file containing a `DashScope <https://dashscope.aliyun.com/>`_ API key.
97
+
98
+ >>> from maxframe.learn.contrib.llm.models.dashscope import DashScopeMultiModalLLM
99
+ >>> import maxframe.dataframe as md
100
+ >>>
101
+ >>> model = DashScopeMultiModalLLM(
102
+ ... name="qwen-vl-max",
103
+ ... api_key_resource="<api-key-resource-name>"
104
+ ... )
105
+
106
+ We use Data Url Schema to provide multi modal input in prompt template, here is an example to fill in the image from table.
107
+
108
+ Assuming you have a MaxCompute table with two columns: ``image_id`` (as the index) and ``encoded_image_data_base64`` (containing Base64 encoded image data),
109
+ you can construct a prompt message template as follows:
110
+
111
+ >>> df = md.read_odps_table("image_content", index_col="image_id")
112
+
113
+ >>> prompt_template = [
114
+ ... {
115
+ ... "role": "user",
116
+ ... "content": [
117
+ ... {
118
+ ... "image": "data:image/png;base64,encoded_image_data_base64",
119
+ ... },
120
+ ... {
121
+ ... "text": "Analyze this image in detail",
122
+ ... },
123
+ ... ],
124
+ ... },
125
+ ... ]
126
+ >>> result = model.generate(df, prompt_template)
127
+ >>> result.execute()
128
+ """
37
129
  if not isinstance(data, DATAFRAME_TYPE) and not isinstance(data, SERIES_TYPE):
38
130
  raise ValueError("data must be a maxframe dataframe or series object")
39
131
  if not isinstance(model, MultiModalLLM):
@@ -145,16 +145,16 @@ def generate(
145
145
  >>> import maxframe.dataframe as md
146
146
  >>>
147
147
  >>> # Initialize the model
148
- >>> llm = ManagedTextLLM(name="Qwen2.5-1.5B")
148
+ >>> llm = ManagedTextLLM(name="Qwen2.5-0.5B-instruct")
149
149
  >>>
150
150
  >>> # Prepare prompt template
151
151
  >>> messages = [
152
152
  ... {
153
153
  ... "role": "user",
154
- ... "content": "{query}",
154
+ ... "content": "Help answer following question: {query}",
155
155
  ... },
156
156
  ... ]
157
- >>>
157
+
158
158
  >>> # Create sample data
159
159
  >>> df = md.DataFrame({"query": ["What is machine learning?"]})
160
160
  >>>
@@ -177,7 +177,7 @@ def summary(series, model: TextLLM, index=None):
177
177
 
178
178
  Parameters
179
179
  ----------
180
- series : pandas.Series
180
+ series : Series
181
181
  A maxframe Series containing text data to be summarized.
182
182
  Each element should be a text string.
183
183
  model : TextLLM
@@ -189,6 +189,11 @@ def summary(series, model: TextLLM, index=None):
189
189
  -------
190
190
  maxframe.Series
191
191
  A pandas Series containing the generated summaries and success status.
192
+
193
+ Notes
194
+ -----
195
+ **Preview:** This API is in preview state and may be unstable.
196
+ The interface may change in future releases.
192
197
  """
193
198
  if not isinstance(series, Series):
194
199
  raise ValueError("series must be a maxframe series object")
@@ -208,7 +213,7 @@ def translate(
208
213
  Parameters
209
214
  ----------
210
215
  series : pandas.Series
211
- A maxframe Series containing text data to be translate.
216
+ A maxframe Series containing text data to translate.
212
217
  Each element should be a text string.
213
218
  model : TextLLM
214
219
  Language model instance used for text summarization.
@@ -223,6 +228,12 @@ def translate(
223
228
  -------
224
229
  maxframe.Series
225
230
  A pandas Series containing the generated translation and success status.
231
+
232
+ Notes
233
+ -----
234
+ **Preview:** This API is in preview state and may be unstable.
235
+ The interface may change in future releases.
236
+
226
237
  """
227
238
  if not isinstance(series, Series):
228
239
  raise ValueError("series must be a maxframe series object")
@@ -268,6 +279,11 @@ def classify(
268
279
  -------
269
280
  maxframe.Series
270
281
  A pandas Series containing the generated classification results and success status.
282
+
283
+ Notes
284
+ -----
285
+ **Preview:** This API is in preview state and may be unstable.
286
+ The interface may change in future releases.
271
287
  """
272
288
  if not isinstance(series, Series):
273
289
  raise ValueError("series must be a maxframe series object")
@@ -100,9 +100,7 @@ def predict(
100
100
  import xgboost
101
101
 
102
102
  data = check_data(data)
103
- if not isinstance(model, (Booster, BoosterData, xgboost.Booster)):
104
- raise TypeError(f"model has to be a xgboost.Booster, got {type(model)} instead")
105
- elif isinstance(model, xgboost.Booster):
103
+ if isinstance(model, xgboost.Booster):
106
104
  model = to_remote_model(model, model_cls=Booster)
107
105
 
108
106
  output_types = [OutputType.tensor]
Binary file
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: maxframe
3
- Version: 1.3.0
3
+ Version: 1.3.1
4
4
  Summary: MaxFrame operator-based data analyze framework
5
5
  Requires-Dist: numpy<2.0.0,>=1.19.0
6
6
  Requires-Dist: pandas>=1.0.0
@@ -28,6 +28,7 @@ Requires-Dist: pytest-cov>=4.1.0; extra == "test"
28
28
  Requires-Dist: pytest-asyncio>=0.21.0; extra == "test"
29
29
  Requires-Dist: pytest-timeout>=2.1.0; extra == "test"
30
30
  Requires-Dist: matplotlib>=2.0.0; extra == "test"
31
+ Requires-Dist: xgboost<3.0.0,>=1.4.0; extra == "test"
31
32
  Dynamic: description
32
33
 
33
34
  MaxCompute MaxFrame Client
@@ -1,7 +1,7 @@
1
- maxframe-1.3.0.dist-info/RECORD,,
2
- maxframe-1.3.0.dist-info/WHEEL,sha256=qnIvK8L8kOW9FTrzifubcmNsZckgNfGDNKzGG7FMEdE,114
3
- maxframe-1.3.0.dist-info/top_level.txt,sha256=64x-fc2q59c_vXwNUkehyjF1vb8JWqFSdYmUqIFqoTM,31
4
- maxframe-1.3.0.dist-info/METADATA,sha256=w6yx4uavQy9DVhUJiY0o1cGHX4qnRMZp0qkG5Lez28M,3043
1
+ maxframe-1.3.1.dist-info/RECORD,,
2
+ maxframe-1.3.1.dist-info/WHEEL,sha256=qnIvK8L8kOW9FTrzifubcmNsZckgNfGDNKzGG7FMEdE,114
3
+ maxframe-1.3.1.dist-info/top_level.txt,sha256=64x-fc2q59c_vXwNUkehyjF1vb8JWqFSdYmUqIFqoTM,31
4
+ maxframe-1.3.1.dist-info/METADATA,sha256=qpNsY2M97jXwdy0BSqP97wYuc5QOZ8rlrHs9IesBpKA,3097
5
5
  maxframe_client/conftest.py,sha256=JkQKlLZqd9uJekiO8HvMvEegidF-6KlCVFcg-KmQLLY,643
6
6
  maxframe_client/__init__.py,sha256=z4QT02esANpxtSVZPO_96693bqSvhG82e4suaD6Ll1E,689
7
7
  maxframe_client/fetcher.py,sha256=9zIq_mNGlk8DcTVH0f1-dgNmH72X0edRM9a8muwko6Y,9172
@@ -23,7 +23,7 @@ maxframe/opcodes.py,sha256=gqtlPSUJltfLVFsBsmfUT0rqLoIxXVGvOoA-gcDdwvM,10979
23
23
  maxframe/env.py,sha256=9sJWTeOWuP6KRRYEejJgYa4FoZyAeSuXFd_A8_xl6YM,1402
24
24
  maxframe/mixin.py,sha256=FnjS9bFlcg6LV8L62pyTVF29qgSJupFn9DZv8cv6MiI,3524
25
25
  maxframe/protocol.py,sha256=QUUMSsonhGFdrUWD1DbBjQqhTHN-LzzxPvYYMAhYVOI,18984
26
- maxframe/_utils.cpython-310-darwin.so,sha256=RubLGDswZ474Ikcvxsu20Zf82G4ajbDszWP2U8Milm4,846464
26
+ maxframe/_utils.cpython-310-darwin.so,sha256=ubEtypXRub0cu_miOk9E71j5SdDPlCMdOPvJ6aQY5Js,846464
27
27
  maxframe/session.py,sha256=_R_4r3k5TqGK4FUitljlHSfthrQ7T8prSawvMYpdQrc,36393
28
28
  maxframe/__init__.py,sha256=Gws_d9VblPR6Ld36_hSueVzs5mdN1ns4fMpgvbcEsxo,1004
29
29
  maxframe/utils.py,sha256=7OE0L_K5J-Y_3-06UEutHcJRNpYIxpD2F39qV35njTI,34932
@@ -158,7 +158,7 @@ maxframe/dataframe/extensions/flatmap.py,sha256=2sA-ZOaZmv72U3l13poWbsYRz-Vr-Dmu
158
158
  maxframe/dataframe/extensions/tests/test_apply_chunk.py,sha256=_NF_2sKBbbKyce2G7_HIQs7EsLRaQeYVg-PXxrV4pkM,5848
159
159
  maxframe/dataframe/extensions/tests/test_extensions.py,sha256=zEt9CfM9se4kkgLHIgnXSPZ43VmU2ZbA59iTL86boZc,4779
160
160
  maxframe/dataframe/extensions/tests/__init__.py,sha256=YsJxv7HbG4YYJmqAJZPYb8iHFRQX5JGpGn2PInDXvY8,596
161
- maxframe/dataframe/groupby/aggregation.py,sha256=ueAqwNXCBneAm2YlVzmKRhpeCxuQxdDvEdgCRBTH9Ms,11989
161
+ maxframe/dataframe/groupby/aggregation.py,sha256=Md8E0alS2OXEX9IDN_Qg2XicfsPfNPqubzPCjs59mAQ,13342
162
162
  maxframe/dataframe/groupby/fill.py,sha256=qCu2X6FT0VSP1fecbB1uQWTv82jzjZ5Wzs9wYc22n-Y,4808
163
163
  maxframe/dataframe/groupby/cum.py,sha256=ITaWHRngx_QtiWY--agEHUdyjY-IdYaQLkF7tOolUEc,3683
164
164
  maxframe/dataframe/groupby/__init__.py,sha256=guCWkfOiKC_3IPeiUIO6u_ghbrF39JvmrZTdAtVFyw0,3444
@@ -181,14 +181,14 @@ maxframe/dataframe/fetch/core.py,sha256=VjYAtY0NAnleui28xCL8y_bLbVBRsktIvzViSmpH
181
181
  maxframe/dataframe/reduction/max.py,sha256=M6y3jKLd8ecJTc3LNb49tr74LaGPs6MCpuPWQJ-qWgU,1660
182
182
  maxframe/dataframe/reduction/nunique.py,sha256=qaovc5DAxZFfGXdEaJy0uNHX69p2RnlmaUi7gmQbd54,3467
183
183
  maxframe/dataframe/reduction/cummax.py,sha256=Odo-Ahex2Ey4cwO6_uJEuafbOovnkzZOw9pmyXs4i9A,1013
184
- maxframe/dataframe/reduction/aggregation.py,sha256=w-M3EMOTb-31cEo9IWIBFhD8azb8PwyGkO2cVOPJgNY,12666
184
+ maxframe/dataframe/reduction/aggregation.py,sha256=wTege8DtMDq7_Zs6fNrGoo9xqdTtrflnz7LzGLne7X8,14448
185
185
  maxframe/dataframe/reduction/skew.py,sha256=n4zYukXUYv1UFHGJFs1m2oToBKKnZ7ilhHBrRK1dHuQ,2538
186
186
  maxframe/dataframe/reduction/custom_reduction.py,sha256=QjPVQ_8hdXjyWmOgeVlxsH8oir2zC_fa5NWK5wPtkik,1435
187
187
  maxframe/dataframe/reduction/unique.py,sha256=IVb8lsLCfQ2tLJMLdAdxGO7BFpWD8LjJT3P-9XubBvI,2955
188
188
  maxframe/dataframe/reduction/std.py,sha256=GmIp-lXVxZGFO2jZVcTmWwHz7rZfhhm2ONKTqZfU8LA,1355
189
189
  maxframe/dataframe/reduction/str_concat.py,sha256=Wzuh57my-QOIqYMlnGn4i0mgH13dv4eWM53wEd11Iog,1657
190
190
  maxframe/dataframe/reduction/__init__.py,sha256=6Xh-aQQmrGsPnsm3f-7chhsbMKTV1kWV9Y42ZJ6BTic,4335
191
- maxframe/dataframe/reduction/core.py,sha256=jXV2sECByl2eE0ONdv-M9WOhzE6AQodH6-JS9tvvokc,30395
191
+ maxframe/dataframe/reduction/core.py,sha256=dqsuMJLOlgfQoP-BdIPLFj6RwsgUALAscgM5Ciyc_o8,30959
192
192
  maxframe/dataframe/reduction/all.py,sha256=Amnoyro0zLqtk5ytuq0ntAOu7UqGHfhc8n3EONXmyUo,1966
193
193
  maxframe/dataframe/reduction/cummin.py,sha256=dysmKMEMF_BiABSE8DNYzdWfzPNsHYPl_U8WMBbztow,1013
194
194
  maxframe/dataframe/reduction/min.py,sha256=79EW7-KqVut9QULQ4l5UXzbCeYlrXtvYdlDzM328eFc,1660
@@ -293,16 +293,16 @@ maxframe/learn/utils/core.py,sha256=MohN0NI9Dc6a5GKJm6auK7Kd8R718tFz7BezjIBgC9s,
293
293
  maxframe/learn/contrib/models.py,sha256=hB96eta2s31DEFFMuIXwxHnwJ9kYFJ5Ebwl3-RVEXu0,2553
294
294
  maxframe/learn/contrib/__init__.py,sha256=sI7zXHdINJC0HKRv-PS78_sSRYIrGxa6j3G4xW9P5lc,672
295
295
  maxframe/learn/contrib/utils.py,sha256=tTcz2JNumMZow6rmok-RE6rUIaJw7SO1YP1sruqMG_s,1663
296
- maxframe/learn/contrib/llm/multi_modal.py,sha256=5o736DqUV4AOvFp4z3Dk5F8qoBFicfXY9KKPVrwyHB0,1447
296
+ maxframe/learn/contrib/llm/multi_modal.py,sha256=C6Vq-U8JRUSZMUDsrWt9m1GBPyp9f9V8ZaTzBNhsA9U,5406
297
297
  maxframe/learn/contrib/llm/__init__.py,sha256=MBEWoYEQtBpZL070GOh721OYMvH3D2Y5BzyB4_DXZjY,649
298
298
  maxframe/learn/contrib/llm/core.py,sha256=Z4s1ZssXCf5ebl-uDxGGlJ3KmXsbAm2wVZvikJZd6BM,2723
299
- maxframe/learn/contrib/llm/text.py,sha256=HBj2t6ZkeZkOZj1aWenDIFXmQdaA2UZJ7cPEcn2ffK4,8896
299
+ maxframe/learn/contrib/llm/text.py,sha256=Imsg_7cw0XOis4dmTuZTSw1iP0RIRta7rKVjx6TW35Y,9344
300
300
  maxframe/learn/contrib/llm/models/__init__.py,sha256=I_l0NIpKILLkpPj_3xOv176QvHTeGstPq4xi688Z40c,661
301
- maxframe/learn/contrib/llm/models/dashscope.py,sha256=WIXyVd4Zb5BT-u0eWRe4AvfTiOVat0Blaf9I9Tl4dBc,2320
302
- maxframe/learn/contrib/llm/models/managed.py,sha256=Y8IQ3O8kTLRbYKV5L2Tr50--FsBjXQ8fnV-jnQTzfwc,1291
301
+ maxframe/learn/contrib/llm/models/dashscope.py,sha256=X8FLgZ73U9UW_35wgFfk_2p11sCsDU41rLcy8eo6B2Q,3422
302
+ maxframe/learn/contrib/llm/models/managed.py,sha256=QeJ3J65TepG4CKllvV2kEBSiVJPBm30yhnfp_7QuM0o,1581
303
303
  maxframe/learn/contrib/xgboost/classifier.py,sha256=-nQcAiUqoWe7QQK1t3qBiPj7i6D6dH_mQv0C6DdIpHw,4189
304
304
  maxframe/learn/contrib/xgboost/dmatrix.py,sha256=ETl35ZzzcCbazn6q5ZFTH2St66ZEYTIErCtIHzpAsQg,4900
305
- maxframe/learn/contrib/xgboost/predict.py,sha256=mfanzJ65TrruTCfB0ef0LD7IAoSCUp7AJrp-GMEo0rk,4051
305
+ maxframe/learn/contrib/xgboost/predict.py,sha256=8v1r7JD0B2Hv_eMy2D1HxrloyRd_nw21EhTs_hoDbnE,3889
306
306
  maxframe/learn/contrib/xgboost/__init__.py,sha256=HsVMBBNXBQs2GaHMjuJrMdJRhpTDxQ37Amjc1GH7ESw,1051
307
307
  maxframe/learn/contrib/xgboost/core.py,sha256=zoJ3AMxARDSj5ZzS6Td9eU505WPn5Bv6Tm4yAERi4HU,12114
308
308
  maxframe/learn/contrib/xgboost/train.py,sha256=zIYGdVtjDufsMr_0_Z5PjFZyK6RKyi6MSXyJJSRIkyI,4547
@@ -334,7 +334,7 @@ maxframe/core/entity/tests/test_objects.py,sha256=o0_ntvlp1u3eObNwf-WpomK-AeZcIb
334
334
  maxframe/core/graph/__init__.py,sha256=qlKFvg4JNTmNOOvidxwOQOZofw5WePSWphkYpZ7hVoc,765
335
335
  maxframe/core/graph/entity.py,sha256=feXajqZBbPTsZID8FcRzhDCll3LW-S5Lf3UGObSA_fw,4863
336
336
  maxframe/core/graph/core.pyx,sha256=trOWJOlAn1bwMuErZwugqGXO1loCuhLBupYBxxmlHaI,15923
337
- maxframe/core/graph/core.cpython-310-darwin.so,sha256=4_053_WIBL7yfE8lx7f7lvey1NFV94ezhc_n0LUrMHg,685616
337
+ maxframe/core/graph/core.cpython-310-darwin.so,sha256=unRbIHCDsC1Go69vftgVwfZWkkIFrbbXc9WScyFQGFQ,685616
338
338
  maxframe/core/graph/tests/__init__.py,sha256=YsJxv7HbG4YYJmqAJZPYb8iHFRQX5JGpGn2PInDXvY8,596
339
339
  maxframe/core/graph/tests/test_graph.py,sha256=bLHOAiPQ_eMfnlpRgY1VRQnSvjoiCe1NamILiQcneFc,7462
340
340
  maxframe/core/graph/builder/__init__.py,sha256=dKs7S7e1GH-fy4LKfR6yAJHKLDkOhewCn9a1jZ7wTkY,640
@@ -368,7 +368,7 @@ maxframe/serialization/maxframe_objects.py,sha256=Ha2pFpBivutH_YES1EQN-zpWu3TbKt
368
368
  maxframe/serialization/numpy.py,sha256=IbNaCDceyG7Bl3d_rT2NRnB0OaaWo82h1tycjiF2YZ8,3540
369
369
  maxframe/serialization/scipy.py,sha256=W4P_r-4tAGGfVAFhwqcaHBxdW-dpZ6rIMLuppQzMXjo,2427
370
370
  maxframe/serialization/core.pyx,sha256=eIAmTRpEj-byCyZsgNQFFOk2h_yb1hvfCKxt63j54YA,36238
371
- maxframe/serialization/core.cpython-310-darwin.so,sha256=i6LLXmr_oHQ2QRsTAaqG6aC4Scu1JGpgI8FBXN_MEM8,1179104
371
+ maxframe/serialization/core.cpython-310-darwin.so,sha256=gvHJZiouzSO-QsBA-GTYudHAzGM_Fxnvjxg-1pKyQ98,1179104
372
372
  maxframe/serialization/tests/test_serial.py,sha256=kMXTQsGiZJlTOY0j3CtsH4YVv2s6aHGVVZki_3wdYd8,13227
373
373
  maxframe/serialization/tests/__init__.py,sha256=YsJxv7HbG4YYJmqAJZPYb8iHFRQX5JGpGn2PInDXvY8,596
374
374
  maxframe/serialization/serializables/field.py,sha256=nOcugOd-x7Nq3qT0l66BhG4MfHYLlqXt5DZFRQs1YhM,16015
@@ -405,7 +405,7 @@ maxframe/lib/compression.py,sha256=QPxWRp0Q2q33EQzY-Jfx_iz7SELax6fu3GTmyIVyjGY,1
405
405
  maxframe/lib/__init__.py,sha256=spk1N3D3EL-0RyJDNlnwqHfQEW47lXL-rNDukcF6qlk,642
406
406
  maxframe/lib/mmh3.pyi,sha256=R_MzTIyUSTn8TF4Gs2hRP7NSWfWi0SeuUauh4eZJc-g,1494
407
407
  maxframe/lib/functools_compat.py,sha256=c3gOw--FLvQNbamt0V8oqsTNRhPlASPEOzhMrzA2was,2616
408
- maxframe/lib/mmh3.cpython-310-darwin.so,sha256=2lNerf-_MPYVuy6HFtitFm3Bc_h9az0uC9WvrJy1Y7w,119784
408
+ maxframe/lib/mmh3.cpython-310-darwin.so,sha256=la1oLC0XLpqtnniz24n68AIin8-w0fXHKnnj-g0GSss,119784
409
409
  maxframe/lib/mmh3_src/mmh3module.cpp,sha256=9J9eA42eKWTl546fvfQPNuIM3B2jpWSADpgIw3tr2jg,11604
410
410
  maxframe/lib/mmh3_src/MurmurHash3.h,sha256=lg5uXUFyMBge2BWRn0FgrqaCFCMfDWoTXD4PQtjHrMA,1263
411
411
  maxframe/lib/mmh3_src/MurmurHash3.cpp,sha256=kgrteG44VSftwp5hhD7pyTENDRU9wI_DqLD1493-bP0,8096