maxframe 1.3.0__cp39-cp39-win_amd64.whl → 1.3.1__cp39-cp39-win_amd64.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
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,5 +1,5 @@
1
1
  maxframe/__init__.py,sha256=6Y3yW67GtpKOGqMC1prt4yxqUTc0twHA3yjMEH-5WTw,1036
2
- maxframe/_utils.cp39-win_amd64.pyd,sha256=h-fVb0XEg5wiBgFmrDSNy_u_oxEqogGMycQB5JzyCj8,305664
2
+ maxframe/_utils.cp39-win_amd64.pyd,sha256=QKcsUlx-Az3fwk_1IrZcLHVKZz4a0cecp1u4eLfAhlE,305664
3
3
  maxframe/_utils.pxd,sha256=ckEN1J8rXAtNYW7CictnSVYamH-sQx-uIuWrQts_OT4,1187
4
4
  maxframe/_utils.pyx,sha256=oOBAUIaOM0mkKY_dzymY75Vit8bW64vbFrtwzqQpUA8,17564
5
5
  maxframe/codegen.py,sha256=ua7cT4RntpGndSqgY_kIActdk3bqkcayFUWl1T4sBTs,20560
@@ -34,7 +34,7 @@ maxframe/core/entity/utils.py,sha256=Cx7bfNQTbYZjAxNP-1AXjBozZ1mGqJ1KCz7rwDlxn6w
34
34
  maxframe/core/entity/tests/__init__.py,sha256=4LpNXO11JAdLjSut3p036oEEXlDEB-6AURW9oci5W5Y,609
35
35
  maxframe/core/entity/tests/test_objects.py,sha256=UwJTYFSUr61E255tPrGwnJlhHDGlkpSugFk0kRsJG8Q,1392
36
36
  maxframe/core/graph/__init__.py,sha256=h7zLVFfnmRPrzaiO7zbuOTMZ0iSNZN5TaD5fB7vuxxA,782
37
- maxframe/core/graph/core.cp39-win_amd64.pyd,sha256=TJBSTtRTNhpVS3orUnKw4Kr6eP5CI1_JL6XSEpqt7e8,251904
37
+ maxframe/core/graph/core.cp39-win_amd64.pyd,sha256=6UAsrraHEu7IpJQF2Ow-SW2uQiETqdUIxf08I1xOGC4,251904
38
38
  maxframe/core/graph/core.pyx,sha256=DJ3RV_5W1lNDRj113ewpSLosiiHCqXYQNuPVR5mBaVU,16390
39
39
  maxframe/core/graph/entity.py,sha256=zfijVHeCTOJynagcPSEBEIi194mjMwXcW9p4jopwoZ8,5010
40
40
  maxframe/core/graph/builder/__init__.py,sha256=NjIcWQ1ZtEbRJalz8XH1UKaQLpsvOqouRPeRBaul5cA,655
@@ -173,7 +173,7 @@ maxframe/dataframe/extensions/tests/test_extensions.py,sha256=0A8zL_uyZ805eVe3Ba
173
173
  maxframe/dataframe/fetch/__init__.py,sha256=q9Eu7odmT29Xp2iPsNdOp46T-w2_4LxT4pb26sXhTKc,668
174
174
  maxframe/dataframe/fetch/core.py,sha256=pLAVnbE8mZsiBL21CVlxww55qsDG-OBYwWHKgw9j4c0,3424
175
175
  maxframe/dataframe/groupby/__init__.py,sha256=vmW6do5w7lY2wnYYSGJzn90-rOcae3dSuYFQXZv-iis,3527
176
- maxframe/dataframe/groupby/aggregation.py,sha256=cyhuRbf3qZCv8z4k6TYHAJ2TLUMmQdx6efnTlCaMOgw,12340
176
+ maxframe/dataframe/groupby/aggregation.py,sha256=x-vSHCse9b_9REkNbIvF6BzY5a3dwJ4UL9bt956z8XY,13745
177
177
  maxframe/dataframe/groupby/apply.py,sha256=el9fKRMTiaI3wCpGp8C7GFYBCXE_0hW7qE8JoTBC368,9886
178
178
  maxframe/dataframe/groupby/core.py,sha256=ttr5YNAmr2mIY0Bj5RjUd75VmTOPEHQiz1BhL779w_I,6255
179
179
  maxframe/dataframe/groupby/cum.py,sha256=unzOfw0d1so-0cNf2e2iQ0cOOetARK2UH2N0xWGfuN8,3806
@@ -249,10 +249,10 @@ maxframe/dataframe/missing/replace.py,sha256=jDjFGsuU9jnX8X4HZO5rPBEpcIe-Nc5RSZ4
249
249
  maxframe/dataframe/missing/tests/__init__.py,sha256=4LpNXO11JAdLjSut3p036oEEXlDEB-6AURW9oci5W5Y,609
250
250
  maxframe/dataframe/missing/tests/test_missing.py,sha256=HdQAgc7pCG9jBve-91n2c_gapsCNerIVdrL7L--UQKM,3225
251
251
  maxframe/dataframe/reduction/__init__.py,sha256=vWzViXiIiaOx0Yu2kWYkelVwYGGsv4OfUPLrFHKmXKI,4445
252
- maxframe/dataframe/reduction/aggregation.py,sha256=lNyAomtRYTsemqbfq1d3gg3JMGbq8QZoDh5NMpRK0H4,13011
252
+ maxframe/dataframe/reduction/aggregation.py,sha256=U2Ctf1_v3Apju4gkqkgDe0EZfjI4DgJNJZ_ue12CodE,14856
253
253
  maxframe/dataframe/reduction/all.py,sha256=_g8SKDcjwjLOZJmlBXy6jAGexJvG-A-jNwg9G3fKJk4,2044
254
254
  maxframe/dataframe/reduction/any.py,sha256=eTAF8iEkcICIkRCiICB7LL5Tjf01L_QKAbcNscYJF3M,2048
255
- maxframe/dataframe/reduction/core.py,sha256=14z636tTqtThQXJpsl5SsF9Yd_HMz480H1bM_sSgJ44,31232
255
+ maxframe/dataframe/reduction/core.py,sha256=0DrJg0lv_ySWxj--7WA8ZTz9hPAtJOQ9dTYg66lLg4w,31808
256
256
  maxframe/dataframe/reduction/count.py,sha256=1L55Exc7cO8a55s7r3AZP85aHtbL1RCK3HQQvhD-l-A,1800
257
257
  maxframe/dataframe/reduction/cummax.py,sha256=d8b1RxCiadkHtX7E-2hIe8vKdo1wFp8TQvfVilaLTmg,1043
258
258
  maxframe/dataframe/reduction/cummin.py,sha256=4OXs4ZGXyONlV_94qt3qSq1z674-S-BI1lT7ituFTs8,1043
@@ -334,11 +334,11 @@ maxframe/learn/contrib/graph/tests/__init__.py,sha256=4LpNXO11JAdLjSut3p036oEEXl
334
334
  maxframe/learn/contrib/graph/tests/test_connected_components.py,sha256=6o157hNhSkn7zM0OD2PlhtJ9XFq39Mc7_XWSSEcPYpk,1662
335
335
  maxframe/learn/contrib/llm/__init__.py,sha256=Ikv8Bw62gQNCaVVu8VfaTmZQEvCCqNO2SBeJXXaEYpk,666
336
336
  maxframe/learn/contrib/llm/core.py,sha256=HdHJOTt5ONZIqOJd6o-269BGMjtRNCvMTgEbriBWCfc,2798
337
- maxframe/learn/contrib/llm/multi_modal.py,sha256=bUpX9-OkutAKjthlX5jpu8KRe6W0jBj1ip8n8jtvFjQ,1490
338
- maxframe/learn/contrib/llm/text.py,sha256=PdDfGK3ZV_zvp9LG2T9xqJED2qa5NSkycdULOJlz1_0,9182
337
+ maxframe/learn/contrib/llm/multi_modal.py,sha256=a6fy8K0j9luOMR0JnU6yjlzuzqDNv8mE7_1lezTNmGc,5541
338
+ maxframe/learn/contrib/llm/text.py,sha256=ZGhx6dyMNWZTy-wlpfQMs8Rm0JdALSTyP9NMR1ASRj4,9646
339
339
  maxframe/learn/contrib/llm/models/__init__.py,sha256=xdT-QE7V6VbAciHW7ubViTMTG0XCuIbCVY7SIIYzFlc,676
340
- maxframe/learn/contrib/llm/models/dashscope.py,sha256=0G2cWB60h8pEonTBJSzVhZjUhoAjKzXIgvd4au0POOE,2394
341
- maxframe/learn/contrib/llm/models/managed.py,sha256=bhz0u_goefV-_-TjXsmGHFG_9iZ0NFCDbjg6GN5o8wg,1330
340
+ maxframe/learn/contrib/llm/models/dashscope.py,sha256=jFw3KmO-ioWg7VwlJwt8TrdTrSMDhc3GwR1TU7Rx9qo,3530
341
+ maxframe/learn/contrib/llm/models/managed.py,sha256=OcD3ug3alfq1ayg0qVuRE4zWJkTRped7GNj_WK0cu2o,1635
342
342
  maxframe/learn/contrib/pytorch/__init__.py,sha256=OFSs9YoYbKxEmyP8OLxqMPHvaDlgesD02QtOvjpHrv4,703
343
343
  maxframe/learn/contrib/pytorch/run_function.py,sha256=c_S2U3VTZ7vFmDlqVDBBiM-r5EFLb-d1JU64t8UZ0Fk,3354
344
344
  maxframe/learn/contrib/pytorch/run_script.py,sha256=XBed8ypahK9KIOs-mQ-SsQZCtsUkV6RdXiyagSPySmE,3213
@@ -348,7 +348,7 @@ maxframe/learn/contrib/xgboost/__init__.py,sha256=ChqbAiGx91jbI4H0MQloiXx2hWGmSt
348
348
  maxframe/learn/contrib/xgboost/classifier.py,sha256=iOsaWrLyIo9Lh-a14lsCyFX6hHykrIcIOZEuXIJK4Zs,4310
349
349
  maxframe/learn/contrib/xgboost/core.py,sha256=u8Lqy2H8Yg6khuRc_53dSrQL66uzKGgH-Cku3nyo3Gs,12462
350
350
  maxframe/learn/contrib/xgboost/dmatrix.py,sha256=t2b8my2azo29y6Fvek-hVJoiNjfAcyZ_wYEnzE6-zRE,5050
351
- maxframe/learn/contrib/xgboost/predict.py,sha256=4REyIKqOwnCSNkV-bqn4fdlM0UmH5Lygpja__mITW8I,4177
351
+ maxframe/learn/contrib/xgboost/predict.py,sha256=R0Z6hF0eoaEAuRpIEqflybNUzhL-9dxKht5gwINL4M8,4013
352
352
  maxframe/learn/contrib/xgboost/regressor.py,sha256=K1IhxEVoss5GqI9RKzgbCy9jcI7ArmBnFSf8ZH45Wm8,2766
353
353
  maxframe/learn/contrib/xgboost/train.py,sha256=nAWNGGGqd6n4HT1Qs-Rb3wLdAlbaKjgcTaJhnFlYxdo,4680
354
354
  maxframe/learn/contrib/xgboost/tests/__init__.py,sha256=4LpNXO11JAdLjSut3p036oEEXlDEB-6AURW9oci5W5Y,609
@@ -358,7 +358,7 @@ maxframe/learn/utils/core.py,sha256=JmuEV8O_tEXI-nBwRK2j1CPYSFlJJyrFhYh83df29L4,
358
358
  maxframe/lib/__init__.py,sha256=ZxIRETECrnrJcfRmGQTTNwrCxwqTVLNaM9nCzBNPo1k,657
359
359
  maxframe/lib/compression.py,sha256=8F0QEOlrgrFz8Yzeyap4ud3PYe1I5LUWUHWvQg1YKq0,1497
360
360
  maxframe/lib/functools_compat.py,sha256=1a-R_fcKQo7gUZnyk6L-qt_Ozhm3Gb0y86Fd3ROeTcw,2697
361
- maxframe/lib/mmh3.cp39-win_amd64.pyd,sha256=BNeIuWNBTEawKF24_3MBkw1lUrSfkjfTOD7Gj1WgjHQ,17920
361
+ maxframe/lib/mmh3.cp39-win_amd64.pyd,sha256=bTZ9tiPdFEdCTOzBjei_1GRdUOAoWBNviWw_qiPequg,17920
362
362
  maxframe/lib/mmh3.pyi,sha256=ad6KZrDA7dznE5Qv0lnGB32rw1Zl2DBwNIH0BI_bFQU,1537
363
363
  maxframe/lib/version.py,sha256=NqxzCX2pLHIMTj-7HTA6xU3iyd_DVeqyyW1n-Rk8MCQ,18941
364
364
  maxframe/lib/wrapped_pickle.py,sha256=Yazeydh6vOAd4ibsv_tn_8LgAC7kVkoResQYFW8RXNw,3976
@@ -416,7 +416,7 @@ maxframe/remote/core.py,sha256=4K33fOPX6f1v_c1yZ7Z9MRICHtmwkqbiuujfwplZicw,6733
416
416
  maxframe/remote/run_script.py,sha256=mibruTktWFh62ye9AtjKG7UG7g3_ZLxmXWLWCWY0le8,3677
417
417
  maxframe/serialization/__init__.py,sha256=n3CYAvESmVbO9cg-KURNacOlGINSugbQ5Z2Ok8Ez_2k,986
418
418
  maxframe/serialization/arrow.py,sha256=DUq7e9V8kJrpj_Z67F767jo_wxgkkXygSPByzMqfB4M,3513
419
- maxframe/serialization/core.cp39-win_amd64.pyd,sha256=t9oEA4f4BB1-4t369j8JVbJ0QKXnk2SeJerdpQJ-A2c,415744
419
+ maxframe/serialization/core.cp39-win_amd64.pyd,sha256=VV40gNHo1wKymR1ewrXGCxbue97vxjYIk5UEFQwhMzM,415744
420
420
  maxframe/serialization/core.pxd,sha256=tFsBg4SxvMgaKHNr6Pqxcw4uRes1NmoITq2igPtozDM,1548
421
421
  maxframe/serialization/core.pyi,sha256=oYh_n-2-cV8BaacM9kFev1rSC_OfEgWOUHjwdXBeY78,2206
422
422
  maxframe/serialization/core.pyx,sha256=TLOPhutnELLuVOjA4MjfElHhHsAmtoWJJMAPUlxVHkU,37387
@@ -699,7 +699,7 @@ maxframe_client/session/tests/test_task.py,sha256=qtKtseHpc13xQCe4SsDaM7UToVOTkP
699
699
  maxframe_client/tests/__init__.py,sha256=4LpNXO11JAdLjSut3p036oEEXlDEB-6AURW9oci5W5Y,609
700
700
  maxframe_client/tests/test_fetcher.py,sha256=-KG_OshShJEa66Hg_RKuT745AxadH2LMWasHo5hhIow,4265
701
701
  maxframe_client/tests/test_session.py,sha256=7-oNldT5YAnzWxSixWJH3VuBMwzFO7C38fNODINMi-M,11542
702
- maxframe-1.3.0.dist-info/METADATA,sha256=5HYNOlaGNR_vBqt8nIgN0EVr3EBBJ5aj82_XI6pMDF0,3148
703
- maxframe-1.3.0.dist-info/WHEEL,sha256=3JRrBaG_r4GKEsQxd6dVT34joOu5By0wlyszd6u_ofs,99
704
- maxframe-1.3.0.dist-info/top_level.txt,sha256=64x-fc2q59c_vXwNUkehyjF1vb8JWqFSdYmUqIFqoTM,31
705
- maxframe-1.3.0.dist-info/RECORD,,
702
+ maxframe-1.3.1.dist-info/METADATA,sha256=gWjAaYq3LxlaHKYVnz_dezwosfZAEN-3XSQhcePcVM4,3203
703
+ maxframe-1.3.1.dist-info/WHEEL,sha256=3JRrBaG_r4GKEsQxd6dVT34joOu5By0wlyszd6u_ofs,99
704
+ maxframe-1.3.1.dist-info/top_level.txt,sha256=64x-fc2q59c_vXwNUkehyjF1vb8JWqFSdYmUqIFqoTM,31
705
+ maxframe-1.3.1.dist-info/RECORD,,