snowflake-ml-python 1.25.0__py3-none-any.whl → 1.25.1__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.
- snowflake/ml/_internal/utils/mixins.py +1 -26
- snowflake/ml/jobs/_interop/data_utils.py +8 -8
- snowflake/ml/jobs/_interop/dto_schema.py +7 -52
- snowflake/ml/jobs/_interop/protocols.py +7 -124
- snowflake/ml/jobs/_interop/utils.py +33 -92
- snowflake/ml/jobs/_utils/constants.py +0 -4
- snowflake/ml/jobs/_utils/function_payload_utils.py +43 -0
- snowflake/ml/jobs/_utils/payload_utils.py +40 -6
- snowflake/ml/jobs/_utils/runtime_env_utils.py +111 -12
- snowflake/ml/jobs/_utils/scripts/mljob_launcher.py +27 -204
- snowflake/ml/jobs/_utils/spec_utils.py +22 -0
- snowflake/ml/jobs/decorators.py +22 -17
- snowflake/ml/jobs/job.py +10 -25
- snowflake/ml/jobs/job_definition.py +4 -90
- snowflake/ml/version.py +1 -1
- {snowflake_ml_python-1.25.0.dist-info → snowflake_ml_python-1.25.1.dist-info}/METADATA +7 -1
- {snowflake_ml_python-1.25.0.dist-info → snowflake_ml_python-1.25.1.dist-info}/RECORD +20 -19
- snowflake/ml/jobs/_utils/arg_protocol.py +0 -7
- {snowflake_ml_python-1.25.0.dist-info → snowflake_ml_python-1.25.1.dist-info}/WHEEL +0 -0
- {snowflake_ml_python-1.25.0.dist-info → snowflake_ml_python-1.25.1.dist-info}/licenses/LICENSE.txt +0 -0
- {snowflake_ml_python-1.25.0.dist-info → snowflake_ml_python-1.25.1.dist-info}/top_level.txt +0 -0
snowflake/ml/jobs/job.py
CHANGED
|
@@ -123,41 +123,26 @@ class MLJob(Generic[T], SerializableSessionMixin):
|
|
|
123
123
|
|
|
124
124
|
return self._transform_path(result_path_str)
|
|
125
125
|
|
|
126
|
-
|
|
127
|
-
# the result path is like @payload_stage/{job_definition_name}/{job_name}/mljob_result
|
|
128
|
-
@property
|
|
129
|
-
def _result_stage_path(self) -> Optional[str]:
|
|
130
|
-
volumes = self._service_spec["spec"]["volumes"]
|
|
131
|
-
stage_volume = next((v for v in volumes if v["name"] == constants.RESULT_VOLUME_NAME), None)
|
|
132
|
-
if stage_volume is None:
|
|
133
|
-
return self._stage_path
|
|
134
|
-
elif "stageConfig" in stage_volume:
|
|
135
|
-
return cast(str, stage_volume["stageConfig"]["name"])
|
|
136
|
-
else:
|
|
137
|
-
return cast(str, stage_volume["source"])
|
|
138
|
-
|
|
139
|
-
def _transform_path(
|
|
140
|
-
self,
|
|
141
|
-
path_str: str,
|
|
142
|
-
) -> str:
|
|
126
|
+
def _transform_path(self, path_str: str) -> str:
|
|
143
127
|
"""Transform a local path within the container to a stage path."""
|
|
144
128
|
path = stage_utils.resolve_path(path_str)
|
|
145
129
|
if isinstance(path, stage_utils.StagePath):
|
|
130
|
+
# Stage paths need no transformation
|
|
146
131
|
return path.as_posix()
|
|
147
132
|
if not path.is_absolute():
|
|
148
|
-
|
|
133
|
+
# Assume relative paths are relative to stage mount path
|
|
134
|
+
return f"{self._stage_path}/{path.as_posix()}"
|
|
149
135
|
|
|
136
|
+
# If result path is absolute, rebase it onto the stage mount path
|
|
137
|
+
# TODO: Rather than matching by name, use the longest mount path which matches
|
|
150
138
|
volume_mounts = self._container_spec["volumeMounts"]
|
|
151
|
-
|
|
152
|
-
if stage_volume is None:
|
|
153
|
-
stage_volume = next(v for v in volume_mounts if v["name"] == constants.STAGE_VOLUME_NAME)
|
|
154
|
-
stage_mount_str = stage_volume["mountPath"]
|
|
139
|
+
stage_mount_str = next(v for v in volume_mounts if v.get("name") == constants.STAGE_VOLUME_NAME)["mountPath"]
|
|
155
140
|
stage_mount = Path(stage_mount_str)
|
|
156
141
|
try:
|
|
157
142
|
relative_path = path.relative_to(stage_mount)
|
|
158
|
-
return f"{self.
|
|
143
|
+
return f"{self._stage_path}/{relative_path.as_posix()}"
|
|
159
144
|
except ValueError:
|
|
160
|
-
raise ValueError(f"Result
|
|
145
|
+
raise ValueError(f"Result path {path} is absolute, but should be relative to stage mount {stage_mount}")
|
|
161
146
|
|
|
162
147
|
@overload
|
|
163
148
|
def get_logs(
|
|
@@ -294,7 +279,7 @@ class MLJob(Generic[T], SerializableSessionMixin):
|
|
|
294
279
|
if self._result is None:
|
|
295
280
|
self.wait(timeout)
|
|
296
281
|
try:
|
|
297
|
-
self._result = interop_utils.
|
|
282
|
+
self._result = interop_utils.load_result(
|
|
298
283
|
self._result_path, session=self._session, path_transform=self._transform_path
|
|
299
284
|
)
|
|
300
285
|
except Exception as e:
|
|
@@ -14,14 +14,11 @@ from snowflake.ml._internal import telemetry
|
|
|
14
14
|
from snowflake.ml._internal.utils import identifier
|
|
15
15
|
from snowflake.ml._internal.utils.mixins import SerializableSessionMixin
|
|
16
16
|
from snowflake.ml.jobs import job as jb
|
|
17
|
-
from snowflake.ml.jobs._interop import utils as interop_utils
|
|
18
17
|
from snowflake.ml.jobs._utils import (
|
|
19
|
-
arg_protocol,
|
|
20
18
|
constants,
|
|
21
19
|
feature_flags,
|
|
22
20
|
payload_utils,
|
|
23
21
|
query_helper,
|
|
24
|
-
runtime_env_utils,
|
|
25
22
|
types,
|
|
26
23
|
)
|
|
27
24
|
from snowflake.snowpark import context as sp_context
|
|
@@ -43,8 +40,6 @@ class MLJobDefinition(Generic[_Args, _ReturnValue], SerializableSessionMixin):
|
|
|
43
40
|
compute_pool: str,
|
|
44
41
|
name: str,
|
|
45
42
|
entrypoint_args: list[Any],
|
|
46
|
-
arg_protocol: Optional[arg_protocol.ArgProtocol] = arg_protocol.ArgProtocol.NONE,
|
|
47
|
-
default_args: Optional[list[Any]] = None,
|
|
48
43
|
database: Optional[str] = None,
|
|
49
44
|
schema: Optional[str] = None,
|
|
50
45
|
session: Optional[snowpark.Session] = None,
|
|
@@ -64,12 +59,8 @@ class MLJobDefinition(Generic[_Args, _ReturnValue], SerializableSessionMixin):
|
|
|
64
59
|
self.schema = identifier.resolve_identifier(resolved_schema)
|
|
65
60
|
self.job_definition_id = identifier.get_schema_level_object_identifier(self.database, self.schema, name)
|
|
66
61
|
self.entrypoint_args = entrypoint_args
|
|
67
|
-
self.arg_protocol = arg_protocol
|
|
68
|
-
self.default_args = default_args
|
|
69
62
|
|
|
70
63
|
def delete(self) -> None:
|
|
71
|
-
if self.session is None:
|
|
72
|
-
raise RuntimeError("Session is required to delete job definition")
|
|
73
64
|
if self.stage_name:
|
|
74
65
|
try:
|
|
75
66
|
self.session.sql(f"REMOVE {self.stage_name}/").collect()
|
|
@@ -77,27 +68,9 @@ class MLJobDefinition(Generic[_Args, _ReturnValue], SerializableSessionMixin):
|
|
|
77
68
|
except Exception as e:
|
|
78
69
|
logger.warning(f"Failed to clean up stage files for job definition {self.stage_name}: {e}")
|
|
79
70
|
|
|
80
|
-
def _prepare_arguments(self, *args: _Args.args, **kwargs: _Args.kwargs) ->
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
raise ValueError(f"Keyword arguments are not supported with {self.arg_protocol}")
|
|
84
|
-
return list(args)
|
|
85
|
-
elif self.arg_protocol == arg_protocol.ArgProtocol.CLI:
|
|
86
|
-
return _combine_runtime_arguments(self.default_args, *args, **kwargs)
|
|
87
|
-
elif self.arg_protocol == arg_protocol.ArgProtocol.PICKLE:
|
|
88
|
-
if not args and not kwargs:
|
|
89
|
-
return []
|
|
90
|
-
uid = uuid4().hex[:8]
|
|
91
|
-
rel_path = f"{uid}/function_args"
|
|
92
|
-
file_path = f"{self.stage_name}/{constants.APP_STAGE_SUBPATH}/{rel_path}"
|
|
93
|
-
payload = interop_utils.save_result(
|
|
94
|
-
(args, kwargs), file_path, session=self.session, max_inline_size=interop_utils._MAX_INLINE_SIZE
|
|
95
|
-
)
|
|
96
|
-
if payload is not None:
|
|
97
|
-
return [f"--function_args={payload.decode('utf-8')}"]
|
|
98
|
-
return [f"--function_args={rel_path}"]
|
|
99
|
-
else:
|
|
100
|
-
raise ValueError(f"Invalid arg_protocol: {self.arg_protocol}")
|
|
71
|
+
def _prepare_arguments(self, *args: _Args.args, **kwargs: _Args.kwargs) -> list[Any]:
|
|
72
|
+
# TODO: Add ArgProtocol and respective logics
|
|
73
|
+
return [arg for arg in args]
|
|
101
74
|
|
|
102
75
|
@telemetry.send_api_usage_telemetry(project=_PROJECT)
|
|
103
76
|
def __call__(self, *args: _Args.args, **kwargs: _Args.kwargs) -> jb.MLJob[_ReturnValue]:
|
|
@@ -131,7 +104,6 @@ class MLJobDefinition(Generic[_Args, _ReturnValue], SerializableSessionMixin):
|
|
|
131
104
|
json.dumps(job_options_dict),
|
|
132
105
|
]
|
|
133
106
|
query_template = "CALL SYSTEM$EXECUTE_ML_JOB(%s, %s, %s, %s)"
|
|
134
|
-
assert self.session is not None, "Session is required to generate MLJob SQL query"
|
|
135
107
|
sql = self.session._conn._cursor._preprocess_pyformat_query(query_template, params)
|
|
136
108
|
return sql
|
|
137
109
|
|
|
@@ -157,7 +129,6 @@ class MLJobDefinition(Generic[_Args, _ReturnValue], SerializableSessionMixin):
|
|
|
157
129
|
entrypoint: Optional[Union[str, list[str]]] = None,
|
|
158
130
|
target_instances: int = 1,
|
|
159
131
|
generate_suffix: bool = True,
|
|
160
|
-
arg_protocol: Optional[arg_protocol.ArgProtocol] = arg_protocol.ArgProtocol.NONE,
|
|
161
132
|
**kwargs: Any,
|
|
162
133
|
) -> "MLJobDefinition[_Args, _ReturnValue]":
|
|
163
134
|
# Use kwargs for less common optional parameters
|
|
@@ -177,7 +148,6 @@ class MLJobDefinition(Generic[_Args, _ReturnValue], SerializableSessionMixin):
|
|
|
177
148
|
)
|
|
178
149
|
overwrite = kwargs.pop("overwrite", False)
|
|
179
150
|
name = kwargs.pop("name", None)
|
|
180
|
-
default_args = kwargs.pop("default_args", None)
|
|
181
151
|
# Warn if there are unknown kwargs
|
|
182
152
|
if kwargs:
|
|
183
153
|
logger.warning(f"Ignoring unknown kwargs: {kwargs.keys()}")
|
|
@@ -185,11 +155,6 @@ class MLJobDefinition(Generic[_Args, _ReturnValue], SerializableSessionMixin):
|
|
|
185
155
|
# Validate parameters
|
|
186
156
|
if database and not schema:
|
|
187
157
|
raise ValueError("Schema must be specified if database is specified.")
|
|
188
|
-
|
|
189
|
-
compute_pool = identifier.resolve_identifier(compute_pool)
|
|
190
|
-
if query_warehouse is not None:
|
|
191
|
-
query_warehouse = identifier.resolve_identifier(query_warehouse)
|
|
192
|
-
|
|
193
158
|
if target_instances < 1:
|
|
194
159
|
raise ValueError("target_instances must be greater than 0.")
|
|
195
160
|
if not (0 < min_instances <= target_instances):
|
|
@@ -235,7 +200,6 @@ class MLJobDefinition(Generic[_Args, _ReturnValue], SerializableSessionMixin):
|
|
|
235
200
|
# Pass a JSON object for runtime versions so it serializes as nested JSON in options
|
|
236
201
|
runtime_environment = json.dumps({"pythonVersion": f"{sys.version_info.major}.{sys.version_info.minor}"})
|
|
237
202
|
|
|
238
|
-
runtime = runtime_env_utils.get_runtime_image(session, compute_pool, runtime_environment)
|
|
239
203
|
combined_env_vars = {**uploaded_payload.env_vars, **(env_vars or {})}
|
|
240
204
|
entrypoint_args = [v.as_posix() if isinstance(v, PurePath) else v for v in uploaded_payload.entrypoint]
|
|
241
205
|
spec_options = types.SpecOptions(
|
|
@@ -245,7 +209,7 @@ class MLJobDefinition(Generic[_Args, _ReturnValue], SerializableSessionMixin):
|
|
|
245
209
|
env_vars=combined_env_vars,
|
|
246
210
|
enable_metrics=enable_metrics,
|
|
247
211
|
spec_overrides=spec_overrides,
|
|
248
|
-
runtime=
|
|
212
|
+
runtime=runtime_environment if runtime_environment else None,
|
|
249
213
|
enable_stage_mount_v2=feature_flags.FeatureFlags.ENABLE_STAGE_MOUNT_V2.is_enabled(),
|
|
250
214
|
)
|
|
251
215
|
|
|
@@ -264,8 +228,6 @@ class MLJobDefinition(Generic[_Args, _ReturnValue], SerializableSessionMixin):
|
|
|
264
228
|
compute_pool=compute_pool,
|
|
265
229
|
entrypoint_args=entrypoint_args,
|
|
266
230
|
session=session,
|
|
267
|
-
arg_protocol=arg_protocol,
|
|
268
|
-
default_args=default_args,
|
|
269
231
|
database=database,
|
|
270
232
|
schema=schema,
|
|
271
233
|
name=name,
|
|
@@ -274,51 +236,3 @@ class MLJobDefinition(Generic[_Args, _ReturnValue], SerializableSessionMixin):
|
|
|
274
236
|
|
|
275
237
|
def _generate_suffix() -> str:
|
|
276
238
|
return str(uuid4().hex)[:8]
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
def _combine_runtime_arguments(
|
|
280
|
-
default_runtime_args: Optional[list[Any]] = None, *args: Any, **kwargs: Any
|
|
281
|
-
) -> list[Any]:
|
|
282
|
-
"""Merge default CLI arguments with runtime overrides into a flat argument list.
|
|
283
|
-
|
|
284
|
-
Parses `default_runtime_args` for flags (e.g., `--key value`) and merges them with
|
|
285
|
-
`kwargs`. Keyword arguments override defaults unless their value is None. Positional
|
|
286
|
-
arguments from both `default_args` and `*args` are preserved in order.
|
|
287
|
-
|
|
288
|
-
Args:
|
|
289
|
-
default_runtime_args: Optional list of default CLI arguments to parse for flags and positional args.
|
|
290
|
-
*args: Additional positional arguments to include in the output.
|
|
291
|
-
**kwargs: Keyword arguments that override default flags. Values of None are ignored.
|
|
292
|
-
|
|
293
|
-
Returns:
|
|
294
|
-
A list of CLI-style arguments: positional args followed by `--key value` pairs.
|
|
295
|
-
"""
|
|
296
|
-
cli_args = list(args)
|
|
297
|
-
flags: dict[str, Any] = {}
|
|
298
|
-
if default_runtime_args:
|
|
299
|
-
i = 0
|
|
300
|
-
while i < len(default_runtime_args):
|
|
301
|
-
arg = default_runtime_args[i]
|
|
302
|
-
if isinstance(arg, str) and arg.startswith("--"):
|
|
303
|
-
key = arg[2:]
|
|
304
|
-
# Check if next arg is a value (not a flag)
|
|
305
|
-
if i + 1 < len(default_runtime_args):
|
|
306
|
-
next_arg = default_runtime_args[i + 1]
|
|
307
|
-
if not (isinstance(next_arg, str) and next_arg.startswith("--")):
|
|
308
|
-
flags[key] = next_arg
|
|
309
|
-
i += 2
|
|
310
|
-
continue
|
|
311
|
-
|
|
312
|
-
flags[key] = None
|
|
313
|
-
else:
|
|
314
|
-
cli_args.append(arg)
|
|
315
|
-
i += 1
|
|
316
|
-
# Prioritize kwargs over default_args. Explicit None values in kwargs
|
|
317
|
-
# serve as overrides and are converted to the string "None" to match
|
|
318
|
-
# CLI flag conventions (--key=value)
|
|
319
|
-
# Downstream logic must handle the parsing of these string-based nulls.
|
|
320
|
-
for k, v in kwargs.items():
|
|
321
|
-
flags[k] = v
|
|
322
|
-
for k, v in flags.items():
|
|
323
|
-
cli_args.extend([f"--{k}", str(v)])
|
|
324
|
-
return cli_args
|
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.25.
|
|
2
|
+
VERSION = "1.25.1"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: snowflake-ml-python
|
|
3
|
-
Version: 1.25.
|
|
3
|
+
Version: 1.25.1
|
|
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:
|
|
@@ -417,6 +417,12 @@ NOTE: Version 1.7.0 is used as example here. Please choose the the latest versio
|
|
|
417
417
|
|
|
418
418
|
# Release History
|
|
419
419
|
|
|
420
|
+
## 1.25.1
|
|
421
|
+
|
|
422
|
+
### Bug Fixes
|
|
423
|
+
|
|
424
|
+
* ML Job: Reverted changes related to the introduction of ML Job Definitions.
|
|
425
|
+
|
|
420
426
|
## 1.25.0
|
|
421
427
|
|
|
422
428
|
### New Features
|
|
@@ -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=
|
|
13
|
+
snowflake/ml/version.py,sha256=oU0Z3v9Lg_mwDt9f5axBWDQv8y6QGuNh3xnDahFqq8w,99
|
|
14
14
|
snowflake/ml/_internal/env.py,sha256=EY_2KVe8oR3LgKWdaeRb5rRU-NDNXJppPDsFJmMZUUY,265
|
|
15
15
|
snowflake/ml/_internal/env_utils.py,sha256=Xx03pV_qEIVJJY--J3ZmnqK9Ugf0Os3O2vrF8xOyq_c,31500
|
|
16
16
|
snowflake/ml/_internal/file_utils.py,sha256=7sA6loOeSfmGP4yx16P4usT9ZtRqG3ycnXu7_Tk7dOs,14206
|
|
@@ -40,7 +40,7 @@ snowflake/ml/_internal/utils/formatting.py,sha256=PswZ6Xas7sx3Ok1MBLoH2o7nfXOxaJ
|
|
|
40
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=X8D_bjVRnpcSCuJFjrA71KBJDRFXD_73tVu4VL9agpE,5441
|
|
43
|
-
snowflake/ml/_internal/utils/mixins.py,sha256=
|
|
43
|
+
snowflake/ml/_internal/utils/mixins.py,sha256=0_jJN_-iNvLim0-GsJ4geqK4Ja91O-M527uWzj3vBtw,3511
|
|
44
44
|
snowflake/ml/_internal/utils/parallelize.py,sha256=l8Zjo-hp8zqoLgHxBlpz9Zmn2Z-MRQ0fS_NnrR4jWR8,4522
|
|
45
45
|
snowflake/ml/_internal/utils/pkg_version_utils.py,sha256=EaY_3IsVOZ9BCH28F5VLjp-0AiEqDlL7L715vkPsgrY,5149
|
|
46
46
|
snowflake/ml/_internal/utils/query_result_checker.py,sha256=1PR41Xn9BUIXvp-UmJ9FgEbj8WfgU7RUhz3PqvvVQ5E,10656
|
|
@@ -114,30 +114,31 @@ snowflake/ml/fileset/sfcfs.py,sha256=FJFc9-gc0KXaNyc10ZovN_87aUCShb0WztVwa02t0io
|
|
|
114
114
|
snowflake/ml/fileset/snowfs.py,sha256=uF5QluYtiJ-HezGIhF55dONi3t0E6N7ByaVAIAlM3nk,5133
|
|
115
115
|
snowflake/ml/fileset/stage_fs.py,sha256=SnkgCta6_5G6Ljl-Nzctr4yavhHUSlNKN3je0ojp54E,20685
|
|
116
116
|
snowflake/ml/jobs/__init__.py,sha256=JypKzxERpcn4yJ7FILA98Gl0sFDEGkAIQ35b1iSzaXg,741
|
|
117
|
-
snowflake/ml/jobs/decorators.py,sha256=
|
|
118
|
-
snowflake/ml/jobs/job.py,sha256=
|
|
119
|
-
snowflake/ml/jobs/job_definition.py,sha256=
|
|
117
|
+
snowflake/ml/jobs/decorators.py,sha256=mQgdWvvCwD7q79cSFKZHKegXGh2j1u8WM64UD3lCKr4,3428
|
|
118
|
+
snowflake/ml/jobs/job.py,sha256=wEeIk5RZhkaJ56Zb1cBxsTAUJIo4QyhpRWaZaiYBuGY,27697
|
|
119
|
+
snowflake/ml/jobs/job_definition.py,sha256=95qK57PyrT65VRVEXRSKaG_VUkHiI2mJ7cpWMkTP9B4,10791
|
|
120
120
|
snowflake/ml/jobs/manager.py,sha256=heuOXEn7Y5Gb5s2y55GEx6i9mr-Z2tTL-b0rPGYv3ao,20469
|
|
121
121
|
snowflake/ml/jobs/_interop/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
122
|
-
snowflake/ml/jobs/_interop/data_utils.py,sha256=
|
|
123
|
-
snowflake/ml/jobs/_interop/dto_schema.py,sha256=
|
|
122
|
+
snowflake/ml/jobs/_interop/data_utils.py,sha256=xUO5YlhUKFVCDtbjam5gP2lka3lfoknTLr7syNAVxK0,4074
|
|
123
|
+
snowflake/ml/jobs/_interop/dto_schema.py,sha256=NhoQ6WJa7uLO9VJojEENVVZhZMfL_G1VPPSSUYmmhO8,2750
|
|
124
124
|
snowflake/ml/jobs/_interop/exception_utils.py,sha256=ZCphBkaaNINFATXZmjPzzNLKZZxKvGPROZ2azU8w13g,16348
|
|
125
125
|
snowflake/ml/jobs/_interop/legacy.py,sha256=8BuC197e6nPmAzh4urYiuBuCNP-RlOlvWnWpSHTduqQ,9238
|
|
126
|
-
snowflake/ml/jobs/_interop/protocols.py,sha256=
|
|
126
|
+
snowflake/ml/jobs/_interop/protocols.py,sha256=I-RGWUDUc_FsKsq_mtczO7n93O_IzUvmEKXTznSJyK8,18413
|
|
127
127
|
snowflake/ml/jobs/_interop/results.py,sha256=nQ07XJ1BZEkPB4xa12pbGyaKqR8sWCoSzx0IKQlub4w,1714
|
|
128
|
-
snowflake/ml/jobs/_interop/utils.py,sha256=
|
|
128
|
+
snowflake/ml/jobs/_interop/utils.py,sha256=TWFkUcAYmb-fpTwEL8idkk3XxlZ8vLz4X_gyS78PSi4,5552
|
|
129
129
|
snowflake/ml/jobs/_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
130
|
-
snowflake/ml/jobs/_utils/
|
|
131
|
-
snowflake/ml/jobs/_utils/constants.py,sha256=rLT2gTT_iv2Cia0b_fERb5U0Lc7Zuuu67QP8csNeR8I,4785
|
|
130
|
+
snowflake/ml/jobs/_utils/constants.py,sha256=7KMhM-7KEursLjFBlj4xaQ4uGFJtjJ12rlx55hcBCQ0,4677
|
|
132
131
|
snowflake/ml/jobs/_utils/feature_flags.py,sha256=j1PvXFTc83ds6I1575X0xnfIz-qRlnUwna8ZhQN1pUw,4831
|
|
133
|
-
snowflake/ml/jobs/_utils/
|
|
132
|
+
snowflake/ml/jobs/_utils/function_payload_utils.py,sha256=4LBaStMdhRxcqwRkwFje-WwiEKRWnBfkaOYouF3N3Kg,1308
|
|
133
|
+
snowflake/ml/jobs/_utils/payload_utils.py,sha256=X9nG3kKlxr-2EfnLXhLwHdXoAhQS_MaTPfXPydlE_JU,33824
|
|
134
134
|
snowflake/ml/jobs/_utils/query_helper.py,sha256=DxezZzftVT7WZzf0uzEn0l6U7BFLNU4U4W_IRCzgbaI,1265
|
|
135
|
-
snowflake/ml/jobs/_utils/runtime_env_utils.py,sha256=
|
|
135
|
+
snowflake/ml/jobs/_utils/runtime_env_utils.py,sha256=EHESq95LhgKi1E68u9vlp8Brc4Ff8R0dFlIXAXoB1EA,4472
|
|
136
|
+
snowflake/ml/jobs/_utils/spec_utils.py,sha256=eC24LFiHtHQiswrZy7m94jixIInJFXNZ_-Km-xr9NJg,871
|
|
136
137
|
snowflake/ml/jobs/_utils/stage_utils.py,sha256=vUWBj5nAsdcYe5Gtv_JhHYMbE5sKGFW6w7qh6uPtBUI,5912
|
|
137
138
|
snowflake/ml/jobs/_utils/types.py,sha256=UJ_WjiHcMxR3DZb5LQm-bUs7i74tZi7DHXrWRyvqlpg,3154
|
|
138
139
|
snowflake/ml/jobs/_utils/scripts/constants.py,sha256=YyIWZqQPYOTtgCY6SfyJjk2A98I5RQVmrOuLtET5Pqg,173
|
|
139
140
|
snowflake/ml/jobs/_utils/scripts/get_instance_ip.py,sha256=N2wJYMPlwg-hidwgHhDhiBWOE6TskqCfWLMRRNnZBQs,5776
|
|
140
|
-
snowflake/ml/jobs/_utils/scripts/mljob_launcher.py,sha256=
|
|
141
|
+
snowflake/ml/jobs/_utils/scripts/mljob_launcher.py,sha256=D2yheAux0GrIcxzD7IPEuUaRb4JyDdDpxRXXNlxszWQ,19912
|
|
141
142
|
snowflake/ml/jobs/_utils/scripts/signal_workers.py,sha256=AR1Pylkm4-FGh10WXfrCtcxaV0rI7IQ2ZiO0Li7zZ3U,7433
|
|
142
143
|
snowflake/ml/jobs/_utils/scripts/start_mlruntime.sh,sha256=EIhhpEeu1Ph3J-QsAvugkhESkTMSZP3lWubmBCw5Z4w,3671
|
|
143
144
|
snowflake/ml/jobs/_utils/scripts/startup.sh,sha256=OwJjQczoNwqf6v2vq6MeChNoa79NHfLeZG8VngRQMvQ,4148
|
|
@@ -464,8 +465,8 @@ snowflake/ml/utils/connection_params.py,sha256=NSBUgcs-DXPRHs1BKpxdSubbJx1yrFRlM
|
|
|
464
465
|
snowflake/ml/utils/html_utils.py,sha256=4g1EPuD8EnOAK7BCYiY8Wp3ZrdDkNOcUDrDAbUYxLfs,9954
|
|
465
466
|
snowflake/ml/utils/sparse.py,sha256=zLBNh-ynhGpKH5TFtopk0YLkHGvv0yq1q-sV59YQKgg,3819
|
|
466
467
|
snowflake/ml/utils/sql_client.py,sha256=pSe2od6Pkh-8NwG3D-xqN76_uNf-ohOtVbT55HeQg1Y,668
|
|
467
|
-
snowflake_ml_python-1.25.
|
|
468
|
-
snowflake_ml_python-1.25.
|
|
469
|
-
snowflake_ml_python-1.25.
|
|
470
|
-
snowflake_ml_python-1.25.
|
|
471
|
-
snowflake_ml_python-1.25.
|
|
468
|
+
snowflake_ml_python-1.25.1.dist-info/licenses/LICENSE.txt,sha256=PdEp56Av5m3_kl21iFkVTX_EbHJKFGEdmYeIO1pL_Yk,11365
|
|
469
|
+
snowflake_ml_python-1.25.1.dist-info/METADATA,sha256=brYA-SAFfm2yssPWtVtE1sSId2v5q28m3OKgujz1JsY,107142
|
|
470
|
+
snowflake_ml_python-1.25.1.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
471
|
+
snowflake_ml_python-1.25.1.dist-info/top_level.txt,sha256=TY0gFSHKDdZy3THb0FGomyikWQasEGldIR1O0HGOHVw,10
|
|
472
|
+
snowflake_ml_python-1.25.1.dist-info/RECORD,,
|
|
File without changes
|
{snowflake_ml_python-1.25.0.dist-info → snowflake_ml_python-1.25.1.dist-info}/licenses/LICENSE.txt
RENAMED
|
File without changes
|
|
File without changes
|