snowflake-ml-python 1.8.6__py3-none-any.whl → 1.9.0__py3-none-any.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.
Files changed (30) hide show
  1. snowflake/ml/_internal/utils/identifier.py +1 -1
  2. snowflake/ml/_internal/utils/mixins.py +61 -0
  3. snowflake/ml/jobs/_utils/constants.py +1 -1
  4. snowflake/ml/jobs/_utils/interop_utils.py +63 -4
  5. snowflake/ml/jobs/_utils/payload_utils.py +6 -5
  6. snowflake/ml/jobs/_utils/query_helper.py +9 -0
  7. snowflake/ml/jobs/_utils/spec_utils.py +6 -4
  8. snowflake/ml/jobs/decorators.py +18 -25
  9. snowflake/ml/jobs/job.py +179 -58
  10. snowflake/ml/jobs/manager.py +194 -145
  11. snowflake/ml/model/_client/ops/model_ops.py +12 -3
  12. snowflake/ml/model/_client/ops/service_ops.py +4 -2
  13. snowflake/ml/model/_client/service/model_deployment_spec_schema.py +2 -0
  14. snowflake/ml/model/_model_composer/model_manifest/model_manifest.py +38 -10
  15. snowflake/ml/model/_packager/model_env/model_env.py +35 -27
  16. snowflake/ml/model/_packager/model_handlers/pytorch.py +5 -1
  17. snowflake/ml/model/_packager/model_meta/model_meta.py +3 -1
  18. snowflake/ml/model/_signatures/snowpark_handler.py +55 -3
  19. snowflake/ml/model/target_platform.py +11 -0
  20. snowflake/ml/model/task.py +9 -0
  21. snowflake/ml/model/type_hints.py +5 -13
  22. snowflake/ml/modeling/metrics/metrics_utils.py +2 -0
  23. snowflake/ml/registry/_manager/model_manager.py +30 -15
  24. snowflake/ml/registry/registry.py +119 -42
  25. snowflake/ml/version.py +1 -1
  26. {snowflake_ml_python-1.8.6.dist-info → snowflake_ml_python-1.9.0.dist-info}/METADATA +52 -16
  27. {snowflake_ml_python-1.8.6.dist-info → snowflake_ml_python-1.9.0.dist-info}/RECORD +30 -26
  28. {snowflake_ml_python-1.8.6.dist-info → snowflake_ml_python-1.9.0.dist-info}/WHEEL +0 -0
  29. {snowflake_ml_python-1.8.6.dist-info → snowflake_ml_python-1.9.0.dist-info}/licenses/LICENSE.txt +0 -0
  30. {snowflake_ml_python-1.8.6.dist-info → snowflake_ml_python-1.9.0.dist-info}/top_level.txt +0 -0
@@ -1,3 +1,5 @@
1
+ import logging
2
+ import os
1
3
  import warnings
2
4
  from types import ModuleType
3
5
  from typing import Any, Optional, Union, overload
@@ -11,6 +13,7 @@ from snowflake.ml.model import (
11
13
  Model,
12
14
  ModelVersion,
13
15
  model_signature,
16
+ task,
14
17
  type_hints as model_types,
15
18
  )
16
19
  from snowflake.ml.model._client.model import model_version_impl
@@ -29,6 +32,52 @@ _MODEL_MONITORING_DISABLED_ERROR = (
29
32
  )
30
33
 
31
34
 
35
+ class _NullStatusContext:
36
+ """A fallback context manager that logs status updates."""
37
+
38
+ def __init__(self, label: str) -> None:
39
+ self._label = label
40
+
41
+ def __enter__(self) -> "_NullStatusContext":
42
+ logging.info(f"Starting: {self._label}")
43
+ return self
44
+
45
+ def __exit__(self, exc_type: Any, exc_val: Any, exc_tb: Any) -> None:
46
+ pass
47
+
48
+ def update(self, label: str, *, state: str = "running", expanded: bool = True) -> None:
49
+ """Update the status by logging the message."""
50
+ logging.info(f"Status update: {label} (state: {state})")
51
+
52
+
53
+ class RegistryEventHandler:
54
+ def __init__(self) -> None:
55
+ try:
56
+ import streamlit as st
57
+
58
+ if not st.runtime.exists():
59
+ self._streamlit = None
60
+ else:
61
+ self._streamlit = st
62
+ USE_STREAMLIT_WIDGETS = os.getenv("USE_STREAMLIT_WIDGETS", "1") == "1"
63
+ if not USE_STREAMLIT_WIDGETS:
64
+ self._streamlit = None
65
+ except ImportError:
66
+ self._streamlit = None
67
+
68
+ def update(self, message: str) -> None:
69
+ """Write a message using streamlit if available, otherwise do nothing."""
70
+ if self._streamlit is not None:
71
+ self._streamlit.write(message)
72
+
73
+ def status(self, label: str, *, state: str = "running", expanded: bool = True) -> Any:
74
+ """Context manager that provides status updates with optional enhanced display capabilities."""
75
+ if self._streamlit is None:
76
+ return _NullStatusContext(label)
77
+ else:
78
+ return self._streamlit.status(label, state=state, expanded=expanded)
79
+
80
+
32
81
  class Registry:
33
82
  @telemetry.send_api_usage_telemetry(project=_TELEMETRY_PROJECT, subproject=_MODEL_TELEMETRY_SUBPROJECT)
34
83
  def __init__(
@@ -136,7 +185,7 @@ class Registry:
136
185
  user_files: Optional[dict[str, list[str]]] = None,
137
186
  code_paths: Optional[list[str]] = None,
138
187
  ext_modules: Optional[list[ModuleType]] = None,
139
- task: model_types.Task = model_types.Task.UNKNOWN,
188
+ task: model_types.Task = task.Task.UNKNOWN,
140
189
  options: Optional[model_types.ModelSaveOption] = None,
141
190
  ) -> ModelVersion:
142
191
  """
@@ -159,12 +208,12 @@ class Registry:
159
208
  to specify a dependency. It is a recommended way to specify your dependencies using conda. When channel
160
209
  is not specified, Snowflake Anaconda Channel will be used. Defaults to None.
161
210
  pip_requirements: List of Pip package specifications. Defaults to None.
162
- Models with pip requirements are currently only runnable in Snowpark Container Services.
163
- See https://docs.snowflake.com/en/developer-guide/snowflake-ml/model-registry/container for more.
164
- Models with pip requirements specified will not be executable in Snowflake Warehouse where all
165
- dependencies must be retrieved from Snowflake Anaconda Channel.
211
+ Models running in a Snowflake Warehouse must also specify a pip artifact repository (see
212
+ `artifact_repository_map`). Otherwise, models with pip requirements are runnable only in Snowpark
213
+ Container Services. See
214
+ https://docs.snowflake.com/en/developer-guide/snowflake-ml/model-registry/container for more.
166
215
  artifact_repository_map: Specifies a mapping of package channels or platforms to custom artifact
167
- repositories. Defaults to None. Currently, the mapping applies only to warehouse execution.
216
+ repositories. Defaults to None. Currently, the mapping applies only to Warehouse execution.
168
217
  Note : This feature is currently in Public Preview.
169
218
  Format: {channel_name: artifact_repository_name}, where:
170
219
  - channel_name: Currently must be 'pip'.
@@ -172,10 +221,13 @@ class Registry:
172
221
  `snowflake.snowpark.pypi_shared_repository`.
173
222
  resource_constraint: Mapping of resource constraint keys and values, e.g. {"architecture": "x86"}.
174
223
  target_platforms: List of target platforms to run the model. The only acceptable inputs are a combination of
175
- "WAREHOUSE" and "SNOWPARK_CONTAINER_SERVICES":
176
- - ["WAREHOUSE"] (Warehouse only)
177
- - ["SNOWPARK_CONTAINER_SERVICES"] (Snowpark Container Services only)
178
- - ["WAREHOUSE", "SNOWPARK_CONTAINER_SERVICES"] (Both)
224
+ "WAREHOUSE" and "SNOWPARK_CONTAINER_SERVICES", or a target platform constant:
225
+ - ["WAREHOUSE"] or snowflake.ml.model.target_platform.WAREHOUSE_ONLY (Warehouse only)
226
+ - ["SNOWPARK_CONTAINER_SERVICES"] or
227
+ snowflake.ml.model.target_platform.SNOWPARK_CONTAINER_SERVICES_ONLY
228
+ (Snowpark Container Services only)
229
+ - ["WAREHOUSE", "SNOWPARK_CONTAINER_SERVICES"] or
230
+ snowflake.ml.model.target_platform.BOTH_WAREHOUSE_AND_SNOWPARK_CONTAINER_SERVICES (Both)
179
231
  Defaults to None. When None, the target platforms will be both.
180
232
  python_version: Python version in which the model is run. Defaults to None.
181
233
  signatures: Model data signatures for inputs and outputs for various target methods. If it is None,
@@ -280,7 +332,7 @@ class Registry:
280
332
  user_files: Optional[dict[str, list[str]]] = None,
281
333
  code_paths: Optional[list[str]] = None,
282
334
  ext_modules: Optional[list[ModuleType]] = None,
283
- task: model_types.Task = model_types.Task.UNKNOWN,
335
+ task: model_types.Task = task.Task.UNKNOWN,
284
336
  options: Optional[model_types.ModelSaveOption] = None,
285
337
  ) -> ModelVersion:
286
338
  """
@@ -303,12 +355,12 @@ class Registry:
303
355
  to specify a dependency. It is a recommended way to specify your dependencies using conda. When channel
304
356
  is not specified, Snowflake Anaconda Channel will be used. Defaults to None.
305
357
  pip_requirements: List of Pip package specifications. Defaults to None.
306
- Models with pip requirements are currently only runnable in Snowpark Container Services.
307
- See https://docs.snowflake.com/en/developer-guide/snowflake-ml/model-registry/container for more.
308
- Models with pip requirements specified will not be executable in Snowflake Warehouse where all
309
- dependencies must be retrieved from Snowflake Anaconda Channel.
358
+ Models running in a Snowflake Warehouse must also specify a pip artifact repository (see
359
+ `artifact_repository_map`). Otherwise, models with pip requirements are runnable only in Snowpark
360
+ Container Services. See
361
+ https://docs.snowflake.com/en/developer-guide/snowflake-ml/model-registry/container for more.
310
362
  artifact_repository_map: Specifies a mapping of package channels or platforms to custom artifact
311
- repositories. Defaults to None. Currently, the mapping applies only to warehouse execution.
363
+ repositories. Defaults to None. Currently, the mapping applies only to Warehouse execution.
312
364
  Note : This feature is currently in Public Preview.
313
365
  Format: {channel_name: artifact_repository_name}, where:
314
366
  - channel_name: Currently must be 'pip'.
@@ -316,10 +368,13 @@ class Registry:
316
368
  `snowflake.snowpark.pypi_shared_repository`.
317
369
  resource_constraint: Mapping of resource constraint keys and values, e.g. {"architecture": "x86"}.
318
370
  target_platforms: List of target platforms to run the model. The only acceptable inputs are a combination of
319
- "WAREHOUSE" and "SNOWPARK_CONTAINER_SERVICES":
320
- - ["WAREHOUSE"] (Warehouse only)
321
- - ["SNOWPARK_CONTAINER_SERVICES"] (Snowpark Container Services only)
322
- - ["WAREHOUSE", "SNOWPARK_CONTAINER_SERVICES"] (Both)
371
+ "WAREHOUSE" and "SNOWPARK_CONTAINER_SERVICES", or a target platform constant:
372
+ - ["WAREHOUSE"] or snowflake.ml.model.target_platform.WAREHOUSE_ONLY (Warehouse only)
373
+ - ["SNOWPARK_CONTAINER_SERVICES"] or
374
+ snowflake.ml.model.target_platform.SNOWPARK_CONTAINER_SERVICES_ONLY
375
+ (Snowpark Container Services only)
376
+ - ["WAREHOUSE", "SNOWPARK_CONTAINER_SERVICES"] or
377
+ snowflake.ml.model.target_platform.BOTH_WAREHOUSE_AND_SNOWPARK_CONTAINER_SERVICES (Both)
323
378
  Defaults to None. When None, the target platforms will be both.
324
379
  python_version: Python version in which the model is run. Defaults to None.
325
380
  signatures: Model data signatures for inputs and outputs for various target methods. If it is None,
@@ -366,6 +421,7 @@ class Registry:
366
421
 
367
422
  Raises:
368
423
  ValueError: If extra arguments are specified ModelVersion is provided.
424
+ Exception: If the model logging fails.
369
425
 
370
426
  Returns:
371
427
  ModelVersion: ModelVersion object corresponding to the model just logged.
@@ -421,7 +477,7 @@ class Registry:
421
477
  if task is not model_types.Task.UNKNOWN:
422
478
  raise ValueError("`task` cannot be specified when calling log_model with a ModelVersion.")
423
479
 
424
- if pip_requirements and not artifact_repository_map:
480
+ if pip_requirements and not artifact_repository_map and self._targets_warehouse(target_platforms):
425
481
  warnings.warn(
426
482
  "Models logged specifying `pip_requirements` cannot be executed in a Snowflake Warehouse "
427
483
  "without specifying `artifact_repository_map`. This model can be run in Snowpark Container "
@@ -429,27 +485,39 @@ class Registry:
429
485
  category=UserWarning,
430
486
  stacklevel=1,
431
487
  )
432
- return self._model_manager.log_model(
433
- model=model,
434
- model_name=model_name,
435
- version_name=version_name,
436
- comment=comment,
437
- metrics=metrics,
438
- conda_dependencies=conda_dependencies,
439
- pip_requirements=pip_requirements,
440
- artifact_repository_map=artifact_repository_map,
441
- resource_constraint=resource_constraint,
442
- target_platforms=target_platforms,
443
- python_version=python_version,
444
- signatures=signatures,
445
- sample_input_data=sample_input_data,
446
- user_files=user_files,
447
- code_paths=code_paths,
448
- ext_modules=ext_modules,
449
- task=task,
450
- options=options,
451
- statement_params=statement_params,
452
- )
488
+
489
+ event_handler = RegistryEventHandler()
490
+ with event_handler.status("Logging model to registry...") as status:
491
+ # Perform the actual model logging
492
+ try:
493
+ result = self._model_manager.log_model(
494
+ model=model,
495
+ model_name=model_name,
496
+ version_name=version_name,
497
+ comment=comment,
498
+ metrics=metrics,
499
+ conda_dependencies=conda_dependencies,
500
+ pip_requirements=pip_requirements,
501
+ artifact_repository_map=artifact_repository_map,
502
+ resource_constraint=resource_constraint,
503
+ target_platforms=target_platforms,
504
+ python_version=python_version,
505
+ signatures=signatures,
506
+ sample_input_data=sample_input_data,
507
+ user_files=user_files,
508
+ code_paths=code_paths,
509
+ ext_modules=ext_modules,
510
+ task=task,
511
+ options=options,
512
+ statement_params=statement_params,
513
+ event_handler=event_handler,
514
+ )
515
+ status.update(label="Model logged successfully!", state="complete", expanded=False)
516
+ return result
517
+ except Exception as e:
518
+ event_handler.update("❌ Model logging failed!")
519
+ status.update(label="Model logging failed!", state="error", expanded=False)
520
+ raise e
453
521
 
454
522
  @telemetry.send_api_usage_telemetry(
455
523
  project=_TELEMETRY_PROJECT,
@@ -626,3 +694,12 @@ class Registry:
626
694
  if not self.enable_monitoring:
627
695
  raise ValueError(_MODEL_MONITORING_DISABLED_ERROR)
628
696
  self._model_monitor_manager.delete_monitor(name)
697
+
698
+ @staticmethod
699
+ def _targets_warehouse(target_platforms: Optional[list[model_types.SupportedTargetPlatformType]]) -> bool:
700
+ """Returns True if warehouse is a target platform (None defaults to True)."""
701
+ return (
702
+ target_platforms is None
703
+ or model_types.TargetPlatform.WAREHOUSE in target_platforms
704
+ or "WAREHOUSE" in target_platforms
705
+ )
snowflake/ml/version.py CHANGED
@@ -1,2 +1,2 @@
1
1
  # This is parsed by regex in conda recipe meta file. Make sure not to break it.
2
- VERSION = "1.8.6"
2
+ VERSION = "1.9.0"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: snowflake-ml-python
3
- Version: 1.8.6
3
+ Version: 1.9.0
4
4
  Summary: The machine learning client library that is used for interacting with Snowflake to build machine learning solutions.
5
5
  Author-email: "Snowflake, Inc" <support@snowflake.com>
6
6
  License:
@@ -408,13 +408,48 @@ NOTE: Version 1.7.0 is used as example here. Please choose the the latest versio
408
408
 
409
409
  # Release History
410
410
 
411
+ ## 1.9.0
412
+
413
+ ### Bug Fixes
414
+
415
+ - Registry: Fixed bug causing snowpark to pandas dataframe conversion to fail when `QUOTED_IDENTIFIERS_IGNORE_CASE`
416
+ parameter is enabled
417
+ - Registry: Fixed duplicate UserWarning logs during model packaging
418
+
419
+ ### Behavior Changes
420
+
421
+ - ML Job: The `list_jobs()` API has been modified. The `scope` parameter has been removed,
422
+ optional `database` and `schema` parameters have been added, the return type has changed
423
+ from `snowpark.DataFrame` to `pandas.DataFrame`, and the returned columns have been updated
424
+ to `name`, `status`, `message`, `database_name`, `schema_name`, `owner`, `compute_pool`,
425
+ `target_instances`, `created_time`, and `completed_time`.
426
+ - Registry: Set `relax_version` to false when pip_requirements are specified while logging model
427
+ - Registry: UserWarning will now be raised based on specified target_platforms (addresses spurious warnings)
428
+
429
+ ### New Features
430
+
431
+ - Registry: `target_platforms` supports `TargetPlatformMode`: `WAREHOUSE_ONLY`, `SNOWPARK_CONTAINER_SERVICES_ONLY`,
432
+ or `BOTH_WAREHOUSE_AND_SNOWPARK_CONTAINER_SERVICES`.
433
+ - Registry: Introduce `snowflake.ml.model.target_platform.TargetPlatform`, target platform constants, and
434
+ `snowflake.ml.model.task.Task`.
435
+ - ML Job: Single-node ML Jobs are now in GA. Multi-node support is now in PuPr
436
+ - Moved less frequently used job submission parameters to `**kwargs`
437
+ - Platform metrics are now enabled by default
438
+ - `list_jobs()` behavior changed, see [Behavior Changes](#behavior-changes) for more info
439
+
411
440
  ## 1.8.6
412
441
 
413
442
  ### Bug Fixes
414
443
 
444
+ - Fixed fatal errors from internal telemetry wrappers.
445
+
415
446
  ### New Features
416
447
 
417
448
  - Registry: Add service container info to logs.
449
+ - ML Job (PuPr): Add new `submit_from_stage()` API for submitting a payload from an existing stage path.
450
+ - ML Job (PuPr): Add support for `snowpark.Session` objects in the argument list of
451
+ `@remote` decorated functions. `Session` object will be injected from context in
452
+ the job execution environment.
418
453
 
419
454
  ## 1.8.5
420
455
 
@@ -425,17 +460,17 @@ NOTE: Version 1.7.0 is used as example here. Please choose the the latest versio
425
460
  - Explainability: bump minimum streamlit version down to 1.30
426
461
  - Modeling: Make XGBoost a required dependency (xgboost is not a required dependency in snowflake-ml-python 1.8.4).
427
462
 
428
- ### Breaking change
463
+ ### Behavior Changes
429
464
 
430
- - ML Job: Rename argument `num_instances` to `target_instances` in job submission APIs and
465
+ - ML Job (Multi-node PrPr): Rename argument `num_instances` to `target_instances` in job submission APIs and
431
466
  change type from `Optional[int]` to `int`
432
467
 
433
468
  ### New Features
434
469
 
435
470
  - Registry: No longer checks if the snowflake-ml-python version is available in the Snowflake Conda channel when logging
436
471
  an SPCS-only model.
437
- - ML Job: Add `min_instances` argument to the job decorator to allow waiting for workers to be ready.
438
- - ML Job: Adjust polling behavior to reduce number of SQL calls.
472
+ - ML Job (PuPr): Add `min_instances` argument to the job decorator to allow waiting for workers to be ready.
473
+ - ML Job (PuPr): Adjust polling behavior to reduce number of SQL calls.
439
474
 
440
475
  ### Deprecations
441
476
 
@@ -450,18 +485,19 @@ NOTE: Version 1.7.0 is used as example here. Please choose the the latest versio
450
485
  - Registry: Fixed a bug when logging pytroch and tensorflow models that caused
451
486
  `UnboundLocalError: local variable 'multiple_inputs' referenced before assignment`.
452
487
 
453
- ### Breaking change
488
+ ### Behavior Changes
454
489
 
455
- - ML Job: Updated property `id` to be fully qualified name; Introduced new property `name` to represent the ML Job name
456
- - ML Job: Modified `list_jobs()` to return ML Job `name` instead of `id`
490
+ - ML Job (PuPr) Updated property `id` to be fully qualified name; Introduced new property `name`
491
+ to represent the ML Job name
492
+ - ML Job (PuPr) Modified `list_jobs()` to return ML Job `name` instead of `id`
457
493
  - Registry: Error in `log_model` if `enable_explainability` is True and model is only deployed to
458
494
  Snowpark Container Services, instead of just user warning.
459
495
 
460
496
  ### New Features
461
497
 
462
- - ML Job: Extend `@remote` function decorator, `submit_file()` and `submit_directory()` to accept `database` and
498
+ - ML Job (PuPr): Extend `@remote` function decorator, `submit_file()` and `submit_directory()` to accept `database` and
463
499
  `schema` parameters
464
- - ML Job: Support querying by fully qualified name in `get_job()`
500
+ - ML Job (PuPr): Support querying by fully qualified name in `get_job()`
465
501
  - Explainability: Added visualization functions to `snowflake.ml.monitoring` to plot explanations in notebooks.
466
502
  - Explainability: Support explain for categorical transforms for sklearn pipeline
467
503
  - Support categorical type for `xgboost.DMatrix` inputs.
@@ -471,7 +507,7 @@ NOTE: Version 1.7.0 is used as example here. Please choose the the latest versio
471
507
  ### New Features
472
508
 
473
509
  - Registry: Default to the runtime cuda version if available when logging a GPU model in Container Runtime.
474
- - ML Job: Added `as_list` argument to `MLJob.get_logs()` to enable retrieving logs
510
+ - ML Job (PuPr): Added `as_list` argument to `MLJob.get_logs()` to enable retrieving logs
475
511
  as a list of strings
476
512
  - Registry: Support `ModelVersion.run_job` to run inference with a single-node Snowpark Container Services job.
477
513
  - DataConnector: Removed PrPr decorators
@@ -482,11 +518,11 @@ NOTE: Version 1.7.0 is used as example here. Please choose the the latest versio
482
518
  ### New Features
483
519
 
484
520
  - ML Job now available as a PuPr feature
485
- - ML Job: Add ability to retrieve results for `@remote` decorated functions using
486
- new `MLJobWithResult.result()` API, which will return the unpickled result
487
- or raise an exception if the job execution failed.
488
- - ML Job: Pre-created Snowpark Session is now available inside job payloads using
489
- `snowflake.snowpark.context.get_active_session()`
521
+ - Add ability to retrieve results for `@remote` decorated functions using
522
+ new `MLJobWithResult.result()` API, which will return the unpickled result
523
+ or raise an exception if the job execution failed.
524
+ - Pre-created Snowpark Session is now available inside job payloads using
525
+ `snowflake.snowpark.context.get_active_session()`
490
526
  - Registry: Introducing `save_location` to `log_model` using the `options` argument.
491
527
  User's can provide the path to write the model version's files that get stored in Snowflake's stage.
492
528
 
@@ -10,7 +10,7 @@ snowflake/cortex/_sse_client.py,sha256=sLYgqAfTOPADCnaWH2RWAJi8KbU_7gSRsTUDcDD5T
10
10
  snowflake/cortex/_summarize.py,sha256=7GH8zqfIdOiHA5w4b6EvJEKEWhaTrL4YA6iDGbn7BNM,1307
11
11
  snowflake/cortex/_translate.py,sha256=9ZGjvAnJFisbzJ_bXnt4pyug5UzhHJRXW8AhGQEersM,1652
12
12
  snowflake/cortex/_util.py,sha256=krNTpbkFLXwdFqy1bd0xi7ZmOzOHRnIfHdQCPiLZJxk,3288
13
- snowflake/ml/version.py,sha256=RmOLx4RFta98Fs3ULvfN2-mFLyI7DdFGWRoNnWjn_IQ,98
13
+ snowflake/ml/version.py,sha256=UTrGrSYSFfbGixnYeTcCTHPZkoH52lAVaVnxGidBygY,98
14
14
  snowflake/ml/_internal/env.py,sha256=EY_2KVe8oR3LgKWdaeRb5rRU-NDNXJppPDsFJmMZUUY,265
15
15
  snowflake/ml/_internal/env_utils.py,sha256=tzz8BziiwJEnZwkzDEYCMO20Sb-mnXwDtSakGfgG--M,29364
16
16
  snowflake/ml/_internal/file_utils.py,sha256=7sA6loOeSfmGP4yx16P4usT9ZtRqG3ycnXu7_Tk7dOs,14206
@@ -37,9 +37,10 @@ snowflake/ml/_internal/lineage/lineage_utils.py,sha256=-_PKuznsL_w38rVj3wXgbPdm6
37
37
  snowflake/ml/_internal/utils/connection_params.py,sha256=ejtI-_vYt7tpxCZKjOBzuGyrOxh251xc-ekahQP9XZ4,8196
38
38
  snowflake/ml/_internal/utils/db_utils.py,sha256=HlxdMrgV8UpnxvfKDM-ZR5N566eWZLC-mE291ByrPEQ,1662
39
39
  snowflake/ml/_internal/utils/formatting.py,sha256=PswZ6Xas7sx3Ok1MBLoH2o7nfXOxaJqpUPg_UqXrQb8,3676
40
- snowflake/ml/_internal/utils/identifier.py,sha256=0Tn07XNxyUFYdFIYNvZ0iA7k9jiyOFAqrVx5ZLvoDwQ,12582
40
+ snowflake/ml/_internal/utils/identifier.py,sha256=HrcCBOyn93fRjMj4K1YJG37ONtw7e3EZnt29LzhEgLA,12586
41
41
  snowflake/ml/_internal/utils/import_utils.py,sha256=msvUDaCcJpAcNCS-5Ynz4F1CvUhXjRsuZyOv1rN6Yhk,3213
42
42
  snowflake/ml/_internal/utils/jwt_generator.py,sha256=bj7Ltnw68WjRcxtV9t5xrTRvV5ETnvovB-o3Y8QWNBg,5357
43
+ snowflake/ml/_internal/utils/mixins.py,sha256=ZE76Oc7EEbPtlwtm1oALozKdjQATE4n3WzhkNQeiUZg,2847
43
44
  snowflake/ml/_internal/utils/parallelize.py,sha256=l8Zjo-hp8zqoLgHxBlpz9Zmn2Z-MRQ0fS_NnrR4jWR8,4522
44
45
  snowflake/ml/_internal/utils/pkg_version_utils.py,sha256=EaY_3IsVOZ9BCH28F5VLjp-0AiEqDlL7L715vkPsgrY,5149
45
46
  snowflake/ml/_internal/utils/query_result_checker.py,sha256=1PR41Xn9BUIXvp-UmJ9FgEbj8WfgU7RUhz3PqvvVQ5E,10656
@@ -95,14 +96,15 @@ snowflake/ml/fileset/sfcfs.py,sha256=FJFc9-gc0KXaNyc10ZovN_87aUCShb0WztVwa02t0io
95
96
  snowflake/ml/fileset/snowfs.py,sha256=uF5QluYtiJ-HezGIhF55dONi3t0E6N7ByaVAIAlM3nk,5133
96
97
  snowflake/ml/fileset/stage_fs.py,sha256=V4pysouSKKDPLzuW3u_extxfvjkQa5OlwIRES9Srpzo,20151
97
98
  snowflake/ml/jobs/__init__.py,sha256=v-v9-SA1Vy-M98B31-NlqJgpI6uEg9jEEghJLub1RUY,468
98
- snowflake/ml/jobs/decorators.py,sha256=LlrRaAa7xJJu70QSqVjNP63-2uBg06RKfwwPi0_cbZo,3618
99
- snowflake/ml/jobs/job.py,sha256=47x8Sij6FeBuGYil0Jqy59BhkA0nP1ofoVl8XMKXchc,16416
100
- snowflake/ml/jobs/manager.py,sha256=NGVu8Ysd5MmZnykb41mqz7EPs8xEgjvdDjSMrPUHqPo,19627
101
- snowflake/ml/jobs/_utils/constants.py,sha256=3mKan6fj0kxoG8sHvWRiOMn5lvrfJYeHGFolVPmkMvE,3642
99
+ snowflake/ml/jobs/decorators.py,sha256=mQgdWvvCwD7q79cSFKZHKegXGh2j1u8WM64UD3lCKr4,3428
100
+ snowflake/ml/jobs/job.py,sha256=0DXIl8CM7Ld9_GQOo0r5cAChf48j8uiGX1ye9MdvYMw,21945
101
+ snowflake/ml/jobs/manager.py,sha256=XjKGQPVO1i1nzyAx3KPiQY37Mstz-O5Qr-UFZaSlqqc,21384
102
+ snowflake/ml/jobs/_utils/constants.py,sha256=tFZzFcWNA1okEjhjrfsDwa9ugb2qVdhk3csVOwk95E8,3642
102
103
  snowflake/ml/jobs/_utils/function_payload_utils.py,sha256=4LBaStMdhRxcqwRkwFje-WwiEKRWnBfkaOYouF3N3Kg,1308
103
- snowflake/ml/jobs/_utils/interop_utils.py,sha256=8_HzGyz1bl-We6_tBp1NKxlYZ2VqWT4svJzKTEh7Wx4,18844
104
- snowflake/ml/jobs/_utils/payload_utils.py,sha256=AkfWb7az0-W-478c_9fUQQim_MtpDKrjERiTAPzsE18,24313
105
- snowflake/ml/jobs/_utils/spec_utils.py,sha256=iubk_b_hA0T4mfE1WgqLp4CDpuQvvETeHFrlE1BJTIM,12991
104
+ snowflake/ml/jobs/_utils/interop_utils.py,sha256=7mODMTjKCLXkJloACG6_9b2wvmRgjXF0Jx3wpWYyJeA,21413
105
+ snowflake/ml/jobs/_utils/payload_utils.py,sha256=Fjf5mZpgsleZsPA9lFJELnb80mEB3Lkwb0sYiU2xmnM,24362
106
+ snowflake/ml/jobs/_utils/query_helper.py,sha256=vCRA3TqSo77L0xJcDjGhojxAD6SHDPLDVh4HGqOJx1Q,386
107
+ snowflake/ml/jobs/_utils/spec_utils.py,sha256=bwAvRiV4VUffWC1iFQO8kIv9q__11WFeXjnSPr9bB1Y,13254
106
108
  snowflake/ml/jobs/_utils/stage_utils.py,sha256=RrJPKHFBmEqOoRe3Lr9ypq0A-tuf8uqmfzxAy-yo9o4,4053
107
109
  snowflake/ml/jobs/_utils/types.py,sha256=l4onybhHhW1hhsbtXVhJ_RmzptClAPHY-fZRTIIcSLY,1087
108
110
  snowflake/ml/jobs/_utils/scripts/constants.py,sha256=PtqQp-KFUjsBBoQIs5TyphmauYJzd5R1m4L31FOWBr0,912
@@ -115,14 +117,16 @@ snowflake/ml/lineage/lineage_node.py,sha256=jCxCwQRvUkH-5nyF1PvdKAyRombOjWDYs5ZJ
115
117
  snowflake/ml/model/__init__.py,sha256=EvPtblqPN6_T6dyVfaYUxCfo_M7D2CQ1OR5giIH4TsQ,314
116
118
  snowflake/ml/model/custom_model.py,sha256=fDhMObqlyzD_qQG1Bq6HHkBN1w3Qzg9e81JWPiqRfc4,12249
117
119
  snowflake/ml/model/model_signature.py,sha256=bVRdMx4JEj31gLe2dr10y7aVy9fPDfPlcKYlE1NBOeQ,32265
118
- snowflake/ml/model/type_hints.py,sha256=oCyzLllloC_GZVddHSBQMg_fvWQfhLLXwJPxPKpwvtE,9574
120
+ snowflake/ml/model/target_platform.py,sha256=H5d-wtuKQyVlq9x33vPtYZAlR5ka0ytcKRYgwlKl0bQ,390
121
+ snowflake/ml/model/task.py,sha256=Zp5JaLB-YfX5p_HSaw81P3J7UnycQq5EMa87A35VOaQ,286
122
+ snowflake/ml/model/type_hints.py,sha256=F0EW6lbSpZyv5prXc7HBZkPga6LeeCdBpV59CfLdUI4,9309
119
123
  snowflake/ml/model/_client/model/model_impl.py,sha256=Yabrbir5vPMOnsVmQJ23YN7vqhi756Jcm6pfO8Aq92o,17469
120
124
  snowflake/ml/model/_client/model/model_version_impl.py,sha256=TGBSIr4JrdxSfFZyd9G0jW4CKW0aP-ReY4ZNb05CJyY,47033
121
125
  snowflake/ml/model/_client/ops/metadata_ops.py,sha256=qpK6PL3OyfuhyOmpvLCpHLy6vCxbZbp1HlEvakFGwv4,4884
122
- snowflake/ml/model/_client/ops/model_ops.py,sha256=-nhyXCt2wBwgKTO5yDaKArA5vwtb1n7SbXAjS4k4mbA,48121
123
- snowflake/ml/model/_client/ops/service_ops.py,sha256=GMFT_ArQmrMT49D717D3siBgnDyrge7hogncp99JuqM,29301
126
+ snowflake/ml/model/_client/ops/model_ops.py,sha256=z3T71w9ZNIU5eEA5G59Ous59WzEBs3YBcPO1_zeMI8M,48586
127
+ snowflake/ml/model/_client/ops/service_ops.py,sha256=LqwuIYwlT0RDinM9dUzPBF3v5ZoZZ5KcaJymEDboObQ,29401
124
128
  snowflake/ml/model/_client/service/model_deployment_spec.py,sha256=V1j1WJ-gYrXN9SBsbg-908MbsJejl86rmaXHg4-tZiw,17508
125
- snowflake/ml/model/_client/service/model_deployment_spec_schema.py,sha256=cr1yNVlbLzpHIDeyIIHb6m06-w3LfJc12DLQAqEHQqQ,1895
129
+ snowflake/ml/model/_client/service/model_deployment_spec_schema.py,sha256=sQ13qPYSe3Po-gZDT0ZCOa3-n6zdK1ggln5AcrCY1tw,1948
126
130
  snowflake/ml/model/_client/sql/_base.py,sha256=Qrm8M92g3MHb-QnSLUlbd8iVKCRxLhG_zr5M2qmXwJ8,1473
127
131
  snowflake/ml/model/_client/sql/model.py,sha256=nstZ8zR7MkXVEfhqLt7PWMik6dZr06nzq7VsF5NVNow,5840
128
132
  snowflake/ml/model/_client/sql/model_version.py,sha256=QwzFlDH5laTqK2qF7SJQSbt28DgspWj3R11l-yD1Da0,23496
@@ -130,7 +134,7 @@ snowflake/ml/model/_client/sql/service.py,sha256=i8BDpFs7AJQ8D8UXcE4rW_iNJbXGUYt
130
134
  snowflake/ml/model/_client/sql/stage.py,sha256=2gxYNtmEXricwxeACVUr63OUDCy_iQvCi-kRT4qQtBA,887
131
135
  snowflake/ml/model/_client/sql/tag.py,sha256=9sI0VoldKmsfToWSjMQddozPPGCxYUI6n0gPBiqd6x8,4333
132
136
  snowflake/ml/model/_model_composer/model_composer.py,sha256=SJyaw8Pcp-n_VYLEraIxrispRYMkIU90DuEisZj4z-U,11631
133
- snowflake/ml/model/_model_composer/model_manifest/model_manifest.py,sha256=0z0TKJ-qI1cGJ9gQOfmxAoWzo0-tBmMkl80bO-P0TKg,9157
137
+ snowflake/ml/model/_model_composer/model_manifest/model_manifest.py,sha256=Ux7YBWhnv_jsyzV0Z2bAab7kWRjt1Dz_fa2Nh1Vwh-8,10628
134
138
  snowflake/ml/model/_model_composer/model_manifest/model_manifest_schema.py,sha256=eqv-4-tvA9Lgrp7kQAQGS_CJVR9D6uOd8-SxADNOkeM,2887
135
139
  snowflake/ml/model/_model_composer/model_method/constants.py,sha256=hoJwIopSdZiYn0fGq15_NiirC0l02d5LEs2D-4J_tPk,35
136
140
  snowflake/ml/model/_model_composer/model_method/function_generator.py,sha256=nnUJki3bJVCTF3gZ-usZW3xQ6wwlJ08EfNsPAgsnI3s,2625
@@ -141,7 +145,7 @@ snowflake/ml/model/_model_composer/model_method/model_method.py,sha256=NhTAkjRlf
141
145
  snowflake/ml/model/_model_composer/model_user_file/model_user_file.py,sha256=dYNgg8P9p6nRH47-OLxZIbt_Ja3t1VPGNQ0qJtpGuAw,1018
142
146
  snowflake/ml/model/_packager/model_handler.py,sha256=qZB5FVRWZD5wDdm6vuuoXnDFar7i2nHarbe8iZRCLPo,2630
143
147
  snowflake/ml/model/_packager/model_packager.py,sha256=FBuepy_W8ZTd4gsQHLnCj-EhO0H2wvjL556YRKOKsO8,6061
144
- snowflake/ml/model/_packager/model_env/model_env.py,sha256=D9NBAPSVxPiDl82Dw07OPSLlwtAJqs4fUxm3VSDbYCs,18924
148
+ snowflake/ml/model/_packager/model_env/model_env.py,sha256=tWZVz0KOt5CixAk5P317XzdejNPbN3EG_oWlIg-9EC0,19571
145
149
  snowflake/ml/model/_packager/model_handlers/_base.py,sha256=OZhGv7nyej3PqaoBz021uGa40T06d9rv-kDcKUY3VnM,7152
146
150
  snowflake/ml/model/_packager/model_handlers/_utils.py,sha256=8y-LfiBfoj2txQD4Yh_GM0eEEOrm1S0R1149J5z31O0,12572
147
151
  snowflake/ml/model/_packager/model_handlers/catboost.py,sha256=dbI2QizGZS04l6ehgXb3oy5YSXrlwRHz8YENVefEbms,10676
@@ -150,7 +154,7 @@ snowflake/ml/model/_packager/model_handlers/huggingface_pipeline.py,sha256=dBxSq
150
154
  snowflake/ml/model/_packager/model_handlers/keras.py,sha256=JKBCiJEjc41zaoEhsen7rnlyPo2RBuEqG9Vq6JR_Cq0,8696
151
155
  snowflake/ml/model/_packager/model_handlers/lightgbm.py,sha256=DAFMiqpXEUmKqeq5rgn5j6rtuwScNnuiMUBwS4OyC7Q,11074
152
156
  snowflake/ml/model/_packager/model_handlers/mlflow.py,sha256=xSpoXO0UOfBUpzx2W1O8P2WF0Xi1vrZ_J-DdgzQG0o8,9177
153
- snowflake/ml/model/_packager/model_handlers/pytorch.py,sha256=jHYRjPUlCpSU2yvrJwuKAYLbG6CethxQx4brQ5ZmiVM,9784
157
+ snowflake/ml/model/_packager/model_handlers/pytorch.py,sha256=mF-pzH1kqL7egpYA3kP1NVwOLNPYdOViEkywdzRXYJc,9867
154
158
  snowflake/ml/model/_packager/model_handlers/sentence_transformers.py,sha256=sKp-bt-fAnruDMZJ5cN6F_m9dJRY0G2FjJ4-KjNLgcg,11380
155
159
  snowflake/ml/model/_packager/model_handlers/sklearn.py,sha256=dH6S7FhJBqVOWPPXyEhN9Kj9tzDdDrD0phaGacoXQ14,18094
156
160
  snowflake/ml/model/_packager/model_handlers/snowmlmodel.py,sha256=uvz-hosuNbtcQFprnS8GzjnM8fWULBDMRbXq8immW9Q,18352
@@ -163,7 +167,7 @@ snowflake/ml/model/_packager/model_handlers_migrator/tensorflow_migrator_2023_12
163
167
  snowflake/ml/model/_packager/model_handlers_migrator/tensorflow_migrator_2025_01_01.py,sha256=0DxwZtXFgXpxb5LQEAfTUfEFV7zgbG4j3F-oNHLkTgE,769
164
168
  snowflake/ml/model/_packager/model_handlers_migrator/torchscript_migrator_2023_12_01.py,sha256=MDOAGV6kML9sJh_hnYjnrPH4GtECP5DDCjaRT7NmYpU,768
165
169
  snowflake/ml/model/_packager/model_meta/model_blob_meta.py,sha256=CzY_MhiSshKi9dWzXc4lrC9PysU0FCdHG2oRlz1vCb8,1943
166
- snowflake/ml/model/_packager/model_meta/model_meta.py,sha256=hX-gZzNxPyWDPBfGPWjhvnEWaPdKyNZcUcywONMndHg,19912
170
+ snowflake/ml/model/_packager/model_meta/model_meta.py,sha256=CctjNVwdC7ghVIPqbhb62t43SOFsmk2j2FdoZMZ8KXs,20063
167
171
  snowflake/ml/model/_packager/model_meta/model_meta_schema.py,sha256=e4TUbWl998xQOZUzEWvb9CrUyHwGHBGb0TNbtezAeQ0,3707
168
172
  snowflake/ml/model/_packager/model_meta_migrator/base_migrator.py,sha256=8zTgq3n6TBXv7Vcwmf7b9wjK3m-9HHMsY0Qy1Rs-sZ4,1305
169
173
  snowflake/ml/model/_packager/model_meta_migrator/migrator_plans.py,sha256=5butM-lyaDRhCAO2BaCOIQufpAxAfSAinsNuGqbbjMU,1029
@@ -178,7 +182,7 @@ snowflake/ml/model/_signatures/dmatrix_handler.py,sha256=ldcWqadJ9fJp9cOaZ3Mn-hT
178
182
  snowflake/ml/model/_signatures/numpy_handler.py,sha256=xy7mBEAs9U5eM8F51NLabLbWXRmyQUffhVweO6jmLBA,5461
179
183
  snowflake/ml/model/_signatures/pandas_handler.py,sha256=rYgSaqdh8d-w22e_ZDt4kCFCkPWEhs-KwL9wyoLUacI,10704
180
184
  snowflake/ml/model/_signatures/pytorch_handler.py,sha256=Xy-ITCCX_EgHcyIIqeYSDUIvE2kiqECa8swy1hmohyc,5036
181
- snowflake/ml/model/_signatures/snowpark_handler.py,sha256=0SYtWnmJ_Nji52GZG1CDvfIGiLydTkPwpc0YUMs9aPQ,5396
185
+ snowflake/ml/model/_signatures/snowpark_handler.py,sha256=YOBC_Wx-H8bQ967A47nYgqcqLjEA15FbZK69TyAEgvU,7590
182
186
  snowflake/ml/model/_signatures/tensorflow_handler.py,sha256=_yrvMg-w_jJoYuyrGXKPX4Dv7Vt8z1e6xIKiWGuZcc4,5660
183
187
  snowflake/ml/model/_signatures/utils.py,sha256=WLaHpb-4BPB7IBFg2sOkH2N7AojXt2PQR7M8hmtNkXA,17164
184
188
  snowflake/ml/model/models/huggingface_pipeline.py,sha256=7tYyhcqLATtzidWBAnip0qSsUstqtLBaiCUO78qgMvY,10311
@@ -329,7 +333,7 @@ snowflake/ml/modeling/metrics/__init__.py,sha256=1lc1DCVNeo7D-gvvCjmpI5tFIIrOsEd
329
333
  snowflake/ml/modeling/metrics/classification.py,sha256=E-Dx3xSmZQrF_MXf2BHAjrDstbCXVyU5g6x6CeizosQ,66411
330
334
  snowflake/ml/modeling/metrics/correlation.py,sha256=Roi17Sx5F81VlJaLQTeBAe5qZ7sZYc31UkIuC6z4qkQ,4803
331
335
  snowflake/ml/modeling/metrics/covariance.py,sha256=HxJK1mwyt6lMSg8yonHFQ8IxAEa62MHeb1M3eHEtqlk,4672
332
- snowflake/ml/modeling/metrics/metrics_utils.py,sha256=MLqTN59F3NLkldhsUrJFAZsHmfo5CArmLeLGnui1RpI,13189
336
+ snowflake/ml/modeling/metrics/metrics_utils.py,sha256=XuAjYfL437LCeBY8RMElunk8jgVzemAgln573JzS3Qk,13315
333
337
  snowflake/ml/modeling/metrics/ranking.py,sha256=znjIIRkGqnGzid7BAGhBowGHbau7mTV5gc-RY_HVfoQ,17760
334
338
  snowflake/ml/modeling/metrics/regression.py,sha256=TcqnADqfL9_1XY47HQeul09t3DMPBkPSVtHP5Z9SyV4,26043
335
339
  snowflake/ml/modeling/mixture/__init__.py,sha256=rY5qSOkHj59bHiTV6LhBiEhUA0StoCb0ACNR2vkV4v0,297
@@ -408,15 +412,15 @@ snowflake/ml/monitoring/_client/queries/rmse.ssql,sha256=OEJiSStRz9-qKoZaFvmubtY
408
412
  snowflake/ml/monitoring/_manager/model_monitor_manager.py,sha256=0jpT1-aRU2tsxSM87I-C2kfJeLevCgM-a-OwU_-VUdI,10302
409
413
  snowflake/ml/monitoring/entities/model_monitor_config.py,sha256=1W6TFTPicC6YAbjD7A0w8WMhWireyUxyuEy0RQXmqyY,1787
410
414
  snowflake/ml/registry/__init__.py,sha256=XdPQK9ejYkSJVrSQ7HD3jKQO0hKq2mC4bPCB6qrtH3U,76
411
- snowflake/ml/registry/registry.py,sha256=JJ3mONTPxbslphvSExJzT7uqnQUBmWIbvzmTulITTpg,31519
412
- snowflake/ml/registry/_manager/model_manager.py,sha256=5HMLGSEJK8uYD4OVlxJqa83g9OPvdj-K7j_UaW-dde8,18271
415
+ snowflake/ml/registry/registry.py,sha256=D87X05zQG4HRkWX3SF0Zf_2Pn2PwDixx-9i4btuVkBU,34932
416
+ snowflake/ml/registry/_manager/model_manager.py,sha256=rqtpWL6epksv7k1syOoQUTFKApmSuzArGfsEbEx6tfE,18811
413
417
  snowflake/ml/utils/authentication.py,sha256=E1at4TIAQRDZDsMXSbrKvSJaT6_kSYJBkkr37vU9P2s,2606
414
418
  snowflake/ml/utils/connection_params.py,sha256=JuadbzKlgDZLZ5vJ9cnyAiSitvZT9jGSfSSNjIY9P1Q,8282
415
419
  snowflake/ml/utils/html_utils.py,sha256=L4pzpvFd20SIk4rie2kTAtcQjbxBHfjKmxonMAT2OoA,7665
416
420
  snowflake/ml/utils/sparse.py,sha256=zLBNh-ynhGpKH5TFtopk0YLkHGvv0yq1q-sV59YQKgg,3819
417
421
  snowflake/ml/utils/sql_client.py,sha256=pSe2od6Pkh-8NwG3D-xqN76_uNf-ohOtVbT55HeQg1Y,668
418
- snowflake_ml_python-1.8.6.dist-info/licenses/LICENSE.txt,sha256=PdEp56Av5m3_kl21iFkVTX_EbHJKFGEdmYeIO1pL_Yk,11365
419
- snowflake_ml_python-1.8.6.dist-info/METADATA,sha256=nQja0TiCef4FgucRD7wpZqgo5NIOngq8rKgPIRknhHg,85172
420
- snowflake_ml_python-1.8.6.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
421
- snowflake_ml_python-1.8.6.dist-info/top_level.txt,sha256=TY0gFSHKDdZy3THb0FGomyikWQasEGldIR1O0HGOHVw,10
422
- snowflake_ml_python-1.8.6.dist-info/RECORD,,
422
+ snowflake_ml_python-1.9.0.dist-info/licenses/LICENSE.txt,sha256=PdEp56Av5m3_kl21iFkVTX_EbHJKFGEdmYeIO1pL_Yk,11365
423
+ snowflake_ml_python-1.9.0.dist-info/METADATA,sha256=H98YP36JCenEz7IdiYeStZWdsP0ourCqqBFD2RZ1_sg,87105
424
+ snowflake_ml_python-1.9.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
425
+ snowflake_ml_python-1.9.0.dist-info/top_level.txt,sha256=TY0gFSHKDdZy3THb0FGomyikWQasEGldIR1O0HGOHVw,10
426
+ snowflake_ml_python-1.9.0.dist-info/RECORD,,