snowflake-cli 3.10.0__py3-none-any.whl → 3.10.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/cli/__about__.py +1 -1
- snowflake/cli/_app/commands_registration/builtin_plugins.py +2 -2
- snowflake/cli/_plugins/dbt/manager.py +9 -7
- snowflake/cli/_plugins/{project → dcm}/commands.py +52 -52
- snowflake/cli/_plugins/{project/project_entity_model.py → dcm/dcm_project_entity_model.py} +5 -5
- snowflake/cli/_plugins/{project → dcm}/manager.py +17 -15
- snowflake/cli/_plugins/{project → dcm}/plugin_spec.py +1 -1
- snowflake/cli/api/constants.py +2 -2
- snowflake/cli/api/project/schemas/entities/entities.py +6 -6
- snowflake/cli/api/rest_api.py +1 -0
- snowflake/cli/api/stage_path.py +4 -0
- {snowflake_cli-3.10.0.dist-info → snowflake_cli-3.10.1.dist-info}/METADATA +12 -12
- {snowflake_cli-3.10.0.dist-info → snowflake_cli-3.10.1.dist-info}/RECORD +17 -17
- /snowflake/cli/_plugins/{project → dcm}/__init__.py +0 -0
- {snowflake_cli-3.10.0.dist-info → snowflake_cli-3.10.1.dist-info}/WHEEL +0 -0
- {snowflake_cli-3.10.0.dist-info → snowflake_cli-3.10.1.dist-info}/entry_points.txt +0 -0
- {snowflake_cli-3.10.0.dist-info → snowflake_cli-3.10.1.dist-info}/licenses/LICENSE +0 -0
snowflake/cli/__about__.py
CHANGED
|
@@ -16,6 +16,7 @@ from snowflake.cli._plugins.auth.keypair import plugin_spec as auth_plugin_spec
|
|
|
16
16
|
from snowflake.cli._plugins.connection import plugin_spec as connection_plugin_spec
|
|
17
17
|
from snowflake.cli._plugins.cortex import plugin_spec as cortex_plugin_spec
|
|
18
18
|
from snowflake.cli._plugins.dbt import plugin_spec as dbt_plugin_spec
|
|
19
|
+
from snowflake.cli._plugins.dcm import plugin_spec as dcm_project_plugin_spec
|
|
19
20
|
from snowflake.cli._plugins.git import plugin_spec as git_plugin_spec
|
|
20
21
|
from snowflake.cli._plugins.helpers import plugin_spec as migrate_plugin_spec
|
|
21
22
|
from snowflake.cli._plugins.init import plugin_spec as init_plugin_spec
|
|
@@ -24,7 +25,6 @@ from snowflake.cli._plugins.nativeapp import plugin_spec as nativeapp_plugin_spe
|
|
|
24
25
|
from snowflake.cli._plugins.notebook import plugin_spec as notebook_plugin_spec
|
|
25
26
|
from snowflake.cli._plugins.object import plugin_spec as object_plugin_spec
|
|
26
27
|
from snowflake.cli._plugins.plugin import plugin_spec as plugin_plugin_spec
|
|
27
|
-
from snowflake.cli._plugins.project import plugin_spec as project_plugin_spec
|
|
28
28
|
from snowflake.cli._plugins.snowpark import plugin_spec as snowpark_plugin_spec
|
|
29
29
|
from snowflake.cli._plugins.spcs import plugin_spec as spcs_plugin_spec
|
|
30
30
|
from snowflake.cli._plugins.sql import plugin_spec as sql_plugin_spec
|
|
@@ -42,7 +42,7 @@ def get_builtin_plugin_name_to_plugin_spec():
|
|
|
42
42
|
"spcs": spcs_plugin_spec,
|
|
43
43
|
"app": nativeapp_plugin_spec,
|
|
44
44
|
"object": object_plugin_spec,
|
|
45
|
-
"
|
|
45
|
+
"dcm": dcm_project_plugin_spec,
|
|
46
46
|
"snowpark": snowpark_plugin_spec,
|
|
47
47
|
"stage": stage_plugin_spec,
|
|
48
48
|
"sql": sql_plugin_spec,
|
|
@@ -26,6 +26,7 @@ from snowflake.cli.api.console import cli_console
|
|
|
26
26
|
from snowflake.cli.api.constants import DEFAULT_SIZE_LIMIT_MB, ObjectType
|
|
27
27
|
from snowflake.cli.api.exceptions import CliError
|
|
28
28
|
from snowflake.cli.api.identifiers import FQN
|
|
29
|
+
from snowflake.cli.api.project.util import unquote_identifier
|
|
29
30
|
from snowflake.cli.api.secure_path import SecurePath
|
|
30
31
|
from snowflake.cli.api.sql_execution import SqlExecutionMixin
|
|
31
32
|
from snowflake.connector.cursor import SnowflakeCursor
|
|
@@ -44,7 +45,7 @@ class DBTManager(SqlExecutionMixin):
|
|
|
44
45
|
|
|
45
46
|
def deploy(
|
|
46
47
|
self,
|
|
47
|
-
|
|
48
|
+
fqn: FQN,
|
|
48
49
|
path: SecurePath,
|
|
49
50
|
profiles_path: SecurePath,
|
|
50
51
|
force: bool,
|
|
@@ -66,7 +67,8 @@ class DBTManager(SqlExecutionMixin):
|
|
|
66
67
|
|
|
67
68
|
with cli_console.phase("Creating temporary stage"):
|
|
68
69
|
stage_manager = StageManager()
|
|
69
|
-
|
|
70
|
+
unquoted_name = unquote_identifier(fqn.name)
|
|
71
|
+
stage_fqn = FQN.from_string(f"DBT_{unquoted_name}_STAGE").using_context()
|
|
70
72
|
stage_name = stage_manager.get_standard_stage_prefix(stage_fqn)
|
|
71
73
|
stage_manager.create(stage_fqn, temporary=True)
|
|
72
74
|
|
|
@@ -86,11 +88,11 @@ class DBTManager(SqlExecutionMixin):
|
|
|
86
88
|
|
|
87
89
|
with cli_console.phase("Creating DBT project"):
|
|
88
90
|
if force is True:
|
|
89
|
-
query = f"CREATE OR REPLACE DBT PROJECT {
|
|
90
|
-
elif self.exists(name=
|
|
91
|
-
query = f"ALTER DBT PROJECT {
|
|
91
|
+
query = f"CREATE OR REPLACE DBT PROJECT {fqn}"
|
|
92
|
+
elif self.exists(name=fqn):
|
|
93
|
+
query = f"ALTER DBT PROJECT {fqn} ADD VERSION"
|
|
92
94
|
else:
|
|
93
|
-
query = f"CREATE DBT PROJECT {
|
|
95
|
+
query = f"CREATE DBT PROJECT {fqn}"
|
|
94
96
|
query += f"\nFROM {stage_name}"
|
|
95
97
|
return self.execute_query(query)
|
|
96
98
|
|
|
@@ -174,7 +176,7 @@ class DBTManager(SqlExecutionMixin):
|
|
|
174
176
|
yaml.safe_dump(yaml.safe_load(sfd), tfd)
|
|
175
177
|
|
|
176
178
|
def execute(
|
|
177
|
-
self, dbt_command: str, name:
|
|
179
|
+
self, dbt_command: str, name: FQN, run_async: bool, *dbt_cli_args
|
|
178
180
|
) -> SnowflakeCursor:
|
|
179
181
|
if dbt_cli_args:
|
|
180
182
|
dbt_command = " ".join([dbt_command, *dbt_cli_args]).strip()
|
|
@@ -15,13 +15,13 @@
|
|
|
15
15
|
from typing import List, Optional
|
|
16
16
|
|
|
17
17
|
import typer
|
|
18
|
+
from snowflake.cli._plugins.dcm.dcm_project_entity_model import (
|
|
19
|
+
DCMProjectEntityModel,
|
|
20
|
+
)
|
|
21
|
+
from snowflake.cli._plugins.dcm.manager import DCMProjectManager
|
|
18
22
|
from snowflake.cli._plugins.object.command_aliases import add_object_command_aliases
|
|
19
23
|
from snowflake.cli._plugins.object.commands import scope_option
|
|
20
24
|
from snowflake.cli._plugins.object.manager import ObjectManager
|
|
21
|
-
from snowflake.cli._plugins.project.manager import ProjectManager
|
|
22
|
-
from snowflake.cli._plugins.project.project_entity_model import (
|
|
23
|
-
ProjectEntityModel,
|
|
24
|
-
)
|
|
25
25
|
from snowflake.cli.api.cli_global_context import get_cli_context
|
|
26
26
|
from snowflake.cli.api.commands.decorators import with_project_definition
|
|
27
27
|
from snowflake.cli.api.commands.flags import (
|
|
@@ -48,16 +48,16 @@ from snowflake.cli.api.output.types import (
|
|
|
48
48
|
)
|
|
49
49
|
|
|
50
50
|
app = SnowTyperFactory(
|
|
51
|
-
name="
|
|
52
|
-
help="Manages
|
|
51
|
+
name="dcm",
|
|
52
|
+
help="Manages DCM Projects in Snowflake.",
|
|
53
53
|
is_hidden=FeatureFlag.ENABLE_SNOWFLAKE_PROJECTS.is_disabled,
|
|
54
54
|
)
|
|
55
55
|
|
|
56
|
-
|
|
56
|
+
dcm_identifier = identifier_argument(sf_object="DCM Project", example="MY_PROJECT")
|
|
57
57
|
version_flag = typer.Option(
|
|
58
58
|
None,
|
|
59
59
|
"--version",
|
|
60
|
-
help="Version of the
|
|
60
|
+
help="Version of the DCM Project to use. If not specified default version is used. For names containing '$', use single quotes to prevent shell expansion (e.g., 'VERSION$1').",
|
|
61
61
|
show_default=False,
|
|
62
62
|
)
|
|
63
63
|
variables_flag = variables_option(
|
|
@@ -66,7 +66,7 @@ variables_flag = variables_option(
|
|
|
66
66
|
configuration_flag = typer.Option(
|
|
67
67
|
None,
|
|
68
68
|
"--configuration",
|
|
69
|
-
help="Configuration of the
|
|
69
|
+
help="Configuration of the DCM Project to use. If not specified default configuration is used.",
|
|
70
70
|
show_default=False,
|
|
71
71
|
)
|
|
72
72
|
from_option = OverrideableOption(
|
|
@@ -78,34 +78,34 @@ from_option = OverrideableOption(
|
|
|
78
78
|
|
|
79
79
|
add_object_command_aliases(
|
|
80
80
|
app=app,
|
|
81
|
-
object_type=ObjectType.
|
|
82
|
-
name_argument=
|
|
81
|
+
object_type=ObjectType.DCM_PROJECT,
|
|
82
|
+
name_argument=dcm_identifier,
|
|
83
83
|
like_option=like_option(
|
|
84
|
-
help_example='`list --like "my%"` lists all
|
|
84
|
+
help_example='`list --like "my%"` lists all DCM Projects that begin with "my"'
|
|
85
85
|
),
|
|
86
86
|
scope_option=scope_option(help_example="`list --in database my_db`"),
|
|
87
|
-
ommit_commands=["create"
|
|
87
|
+
ommit_commands=["create"],
|
|
88
88
|
)
|
|
89
89
|
|
|
90
90
|
|
|
91
91
|
@app.command(requires_connection=True)
|
|
92
|
-
def
|
|
93
|
-
identifier: FQN =
|
|
92
|
+
def deploy(
|
|
93
|
+
identifier: FQN = dcm_identifier,
|
|
94
94
|
version: Optional[str] = version_flag,
|
|
95
95
|
from_stage: Optional[str] = from_option(
|
|
96
|
-
help="
|
|
96
|
+
help="Apply changes defined in given stage instead of using a specific project version."
|
|
97
97
|
),
|
|
98
98
|
variables: Optional[List[str]] = variables_flag,
|
|
99
99
|
configuration: Optional[str] = configuration_flag,
|
|
100
100
|
**options,
|
|
101
101
|
):
|
|
102
102
|
"""
|
|
103
|
-
|
|
103
|
+
Applies changes defined in DCM Project to Snowflake.
|
|
104
104
|
"""
|
|
105
105
|
if version and from_stage:
|
|
106
106
|
raise CliError("--version and --from are mutually exclusive.")
|
|
107
107
|
|
|
108
|
-
result =
|
|
108
|
+
result = DCMProjectManager().execute(
|
|
109
109
|
project_name=identifier,
|
|
110
110
|
configuration=configuration,
|
|
111
111
|
version=version,
|
|
@@ -116,23 +116,23 @@ def execute(
|
|
|
116
116
|
|
|
117
117
|
|
|
118
118
|
@app.command(requires_connection=True)
|
|
119
|
-
def
|
|
120
|
-
identifier: FQN =
|
|
119
|
+
def plan(
|
|
120
|
+
identifier: FQN = dcm_identifier,
|
|
121
121
|
version: Optional[str] = version_flag,
|
|
122
122
|
from_stage: Optional[str] = from_option(
|
|
123
|
-
help="
|
|
123
|
+
help="Plan DCM Project deployment from given stage instead of using a specific version."
|
|
124
124
|
),
|
|
125
125
|
variables: Optional[List[str]] = variables_flag,
|
|
126
126
|
configuration: Optional[str] = configuration_flag,
|
|
127
127
|
**options,
|
|
128
128
|
):
|
|
129
129
|
"""
|
|
130
|
-
|
|
130
|
+
Plans a DCM Project deployment (validates without executing).
|
|
131
131
|
"""
|
|
132
132
|
if version and from_stage:
|
|
133
133
|
raise CliError("--version and --from are mutually exclusive.")
|
|
134
134
|
|
|
135
|
-
result =
|
|
135
|
+
result = DCMProjectManager().execute(
|
|
136
136
|
project_name=identifier,
|
|
137
137
|
configuration=configuration,
|
|
138
138
|
version=version,
|
|
@@ -146,11 +146,11 @@ def dry_run(
|
|
|
146
146
|
@app.command(requires_connection=True)
|
|
147
147
|
@with_project_definition()
|
|
148
148
|
def create(
|
|
149
|
-
entity_id: str = entity_argument("
|
|
149
|
+
entity_id: str = entity_argument("dcm"),
|
|
150
150
|
no_version: bool = typer.Option(
|
|
151
151
|
False,
|
|
152
152
|
"--no-version",
|
|
153
|
-
help="Do not initialize
|
|
153
|
+
help="Do not initialize DCM Project with a new version, only create the snowflake object.",
|
|
154
154
|
),
|
|
155
155
|
if_not_exists: bool = IfNotExistsOption(
|
|
156
156
|
help="Do nothing if the project already exists."
|
|
@@ -158,19 +158,19 @@ def create(
|
|
|
158
158
|
**options,
|
|
159
159
|
):
|
|
160
160
|
"""
|
|
161
|
-
Creates a
|
|
162
|
-
By default, the
|
|
161
|
+
Creates a DCM Project in Snowflake.
|
|
162
|
+
By default, the DCM Project is initialized with a new version created from local files.
|
|
163
163
|
"""
|
|
164
164
|
cli_context = get_cli_context()
|
|
165
|
-
project:
|
|
165
|
+
project: DCMProjectEntityModel = get_entity_for_operation(
|
|
166
166
|
cli_context=cli_context,
|
|
167
167
|
entity_id=entity_id,
|
|
168
168
|
project_definition=cli_context.project_definition,
|
|
169
|
-
entity_type="
|
|
169
|
+
entity_type="dcm",
|
|
170
170
|
)
|
|
171
171
|
om = ObjectManager()
|
|
172
|
-
if om.object_exists(object_type="
|
|
173
|
-
message = f"Project '{project.fqn}' already exists."
|
|
172
|
+
if om.object_exists(object_type="dcm", fqn=project.fqn):
|
|
173
|
+
message = f"DCM Project '{project.fqn}' already exists."
|
|
174
174
|
if if_not_exists:
|
|
175
175
|
return MessageResult(message)
|
|
176
176
|
raise CliError(message)
|
|
@@ -180,21 +180,21 @@ def create(
|
|
|
180
180
|
):
|
|
181
181
|
raise CliError(f"Stage '{project.stage}' already exists.")
|
|
182
182
|
|
|
183
|
-
|
|
184
|
-
with cli_console.phase(f"Creating
|
|
185
|
-
|
|
183
|
+
dpm = DCMProjectManager()
|
|
184
|
+
with cli_console.phase(f"Creating DCM Project '{project.fqn}'"):
|
|
185
|
+
dpm.create(project=project, initialize_version_from_local_files=not no_version)
|
|
186
186
|
|
|
187
187
|
if no_version:
|
|
188
|
-
return MessageResult(f"Project '{project.fqn}' successfully created.")
|
|
188
|
+
return MessageResult(f"DCM Project '{project.fqn}' successfully created.")
|
|
189
189
|
return MessageResult(
|
|
190
|
-
f"Project '{project.fqn}' successfully created and initial version is added."
|
|
190
|
+
f"DCM Project '{project.fqn}' successfully created and initial version is added."
|
|
191
191
|
)
|
|
192
192
|
|
|
193
193
|
|
|
194
194
|
@app.command(requires_connection=True)
|
|
195
195
|
@with_project_definition()
|
|
196
196
|
def add_version(
|
|
197
|
-
entity_id: str = entity_argument("
|
|
197
|
+
entity_id: str = entity_argument("dcm"),
|
|
198
198
|
_from: Optional[str] = from_option(
|
|
199
199
|
help="Create a new version using given stage instead of uploading local files."
|
|
200
200
|
),
|
|
@@ -207,25 +207,25 @@ def add_version(
|
|
|
207
207
|
prune: bool = PruneOption(default=True),
|
|
208
208
|
**options,
|
|
209
209
|
):
|
|
210
|
-
"""Uploads local files to Snowflake and cerates a new
|
|
210
|
+
"""Uploads local files to Snowflake and cerates a new DCM Project version."""
|
|
211
211
|
if _from is not None and prune:
|
|
212
212
|
cli_console.warning(
|
|
213
213
|
"When `--from` option is used, `--prune` option will be ignored and files from stage will be used as they are."
|
|
214
214
|
)
|
|
215
215
|
prune = False
|
|
216
216
|
cli_context = get_cli_context()
|
|
217
|
-
project:
|
|
217
|
+
project: DCMProjectEntityModel = get_entity_for_operation(
|
|
218
218
|
cli_context=cli_context,
|
|
219
219
|
entity_id=entity_id,
|
|
220
220
|
project_definition=cli_context.project_definition,
|
|
221
|
-
entity_type="
|
|
221
|
+
entity_type="dcm",
|
|
222
222
|
)
|
|
223
223
|
om = ObjectManager()
|
|
224
|
-
if not om.object_exists(object_type="
|
|
224
|
+
if not om.object_exists(object_type="dcm", fqn=project.fqn):
|
|
225
225
|
raise CliError(
|
|
226
|
-
f"Project '{project.fqn}' does not exist. Use `
|
|
226
|
+
f"DCM Project '{project.fqn}' does not exist. Use `dcm create` command first."
|
|
227
227
|
)
|
|
228
|
-
|
|
228
|
+
DCMProjectManager().add_version(
|
|
229
229
|
project=project,
|
|
230
230
|
prune=prune,
|
|
231
231
|
from_stage=_from,
|
|
@@ -234,26 +234,26 @@ def add_version(
|
|
|
234
234
|
)
|
|
235
235
|
alias_str = "" if _alias is None else f"'{_alias}' "
|
|
236
236
|
return MessageResult(
|
|
237
|
-
f"New
|
|
237
|
+
f"New version {alias_str}added to DCM Project '{project.fqn}'."
|
|
238
238
|
)
|
|
239
239
|
|
|
240
240
|
|
|
241
241
|
@app.command(requires_connection=True)
|
|
242
242
|
def list_versions(
|
|
243
|
-
identifier: FQN =
|
|
243
|
+
identifier: FQN = dcm_identifier,
|
|
244
244
|
**options,
|
|
245
245
|
):
|
|
246
246
|
"""
|
|
247
|
-
Lists versions of given
|
|
247
|
+
Lists versions of given DCM Project.
|
|
248
248
|
"""
|
|
249
|
-
pm =
|
|
249
|
+
pm = DCMProjectManager()
|
|
250
250
|
results = pm.list_versions(project_name=identifier)
|
|
251
251
|
return QueryResult(results)
|
|
252
252
|
|
|
253
253
|
|
|
254
254
|
@app.command(requires_connection=True)
|
|
255
255
|
def drop_version(
|
|
256
|
-
identifier: FQN =
|
|
256
|
+
identifier: FQN = dcm_identifier,
|
|
257
257
|
version_name: str = typer.Argument(
|
|
258
258
|
help="Name or alias of the version to drop. For names containing '$', use single quotes to prevent shell expansion (e.g., 'VERSION$1').",
|
|
259
259
|
show_default=False,
|
|
@@ -262,7 +262,7 @@ def drop_version(
|
|
|
262
262
|
**options,
|
|
263
263
|
):
|
|
264
264
|
"""
|
|
265
|
-
Drops a version from the
|
|
265
|
+
Drops a version from the DCM Project.
|
|
266
266
|
"""
|
|
267
267
|
# Detect potential shell expansion issues
|
|
268
268
|
if version_name and version_name.upper() == "VERSION":
|
|
@@ -271,12 +271,12 @@ def drop_version(
|
|
|
271
271
|
f"If you meant to use a version like 'VERSION$1', try using single quotes: 'VERSION$1'."
|
|
272
272
|
)
|
|
273
273
|
|
|
274
|
-
|
|
275
|
-
|
|
274
|
+
dpm = DCMProjectManager()
|
|
275
|
+
dpm.drop_version(
|
|
276
276
|
project_name=identifier,
|
|
277
277
|
version_name=version_name,
|
|
278
278
|
if_exists=if_exists,
|
|
279
279
|
)
|
|
280
280
|
return MessageResult(
|
|
281
|
-
f"Version '{version_name}' dropped from
|
|
281
|
+
f"Version '{version_name}' dropped from DCM Project '{identifier}'."
|
|
282
282
|
)
|
|
@@ -35,10 +35,10 @@ T = TypeVar("T")
|
|
|
35
35
|
MANIFEST_FILE_NAME = "manifest.yml"
|
|
36
36
|
|
|
37
37
|
|
|
38
|
-
class
|
|
39
|
-
type: Literal["
|
|
38
|
+
class DCMProjectEntityModel(EntityModelBaseWithArtifacts):
|
|
39
|
+
type: Literal["dcm"] = DiscriminatorField() # noqa: A003
|
|
40
40
|
stage: Optional[str] = Field(
|
|
41
|
-
title="Stage in which the
|
|
41
|
+
title="Stage in which the DCM Project artifacts will be stored", default=None
|
|
42
42
|
)
|
|
43
43
|
|
|
44
44
|
@field_validator("artifacts")
|
|
@@ -54,6 +54,6 @@ class ProjectEntityModel(EntityModelBaseWithArtifacts):
|
|
|
54
54
|
return super().transform_artifacts(orig_artifacts)
|
|
55
55
|
|
|
56
56
|
|
|
57
|
-
@attach_spans_to_entity_actions(entity_name="
|
|
58
|
-
class
|
|
57
|
+
@attach_spans_to_entity_actions(entity_name="dcm")
|
|
58
|
+
class DCMProjectEntity(EntityBase[DCMProjectEntityModel]):
|
|
59
59
|
"""Placeholder for project entity"""
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
from textwrap import dedent
|
|
15
15
|
from typing import List, Optional
|
|
16
16
|
|
|
17
|
-
from snowflake.cli._plugins.
|
|
17
|
+
from snowflake.cli._plugins.dcm.dcm_project_entity_model import DCMProjectEntityModel
|
|
18
18
|
from snowflake.cli._plugins.stage.manager import StageManager
|
|
19
19
|
from snowflake.cli.api.artifacts.upload import sync_artifacts_with_stage
|
|
20
20
|
from snowflake.cli.api.cli_global_context import get_cli_context
|
|
@@ -27,7 +27,7 @@ from snowflake.cli.api.stage_path import StagePath
|
|
|
27
27
|
from snowflake.connector.cursor import SnowflakeCursor
|
|
28
28
|
|
|
29
29
|
|
|
30
|
-
class
|
|
30
|
+
class DCMProjectManager(SqlExecutionMixin):
|
|
31
31
|
def execute(
|
|
32
32
|
self,
|
|
33
33
|
project_name: FQN,
|
|
@@ -37,7 +37,11 @@ class ProjectManager(SqlExecutionMixin):
|
|
|
37
37
|
variables: List[str] | None = None,
|
|
38
38
|
dry_run: bool = False,
|
|
39
39
|
):
|
|
40
|
-
query = f"EXECUTE PROJECT {project_name.sql_identifier}"
|
|
40
|
+
query = f"EXECUTE DCM PROJECT {project_name.sql_identifier}"
|
|
41
|
+
if dry_run:
|
|
42
|
+
query += " PLAN"
|
|
43
|
+
else:
|
|
44
|
+
query += " DEPLOY"
|
|
41
45
|
if configuration or variables:
|
|
42
46
|
query += f" USING"
|
|
43
47
|
if configuration:
|
|
@@ -51,16 +55,14 @@ class ProjectManager(SqlExecutionMixin):
|
|
|
51
55
|
elif from_stage:
|
|
52
56
|
stage_path = StagePath.from_stage_str(from_stage)
|
|
53
57
|
query += f" FROM {stage_path.absolute_path()}"
|
|
54
|
-
if dry_run:
|
|
55
|
-
query += " DRY_RUN=TRUE"
|
|
56
58
|
return self.execute_query(query=query)
|
|
57
59
|
|
|
58
60
|
def _create_object(self, project_name: FQN) -> SnowflakeCursor:
|
|
59
|
-
query = dedent(f"CREATE PROJECT {project_name.sql_identifier}")
|
|
61
|
+
query = dedent(f"CREATE DCM PROJECT {project_name.sql_identifier}")
|
|
60
62
|
return self.execute_query(query)
|
|
61
63
|
|
|
62
64
|
def create(
|
|
63
|
-
self, project:
|
|
65
|
+
self, project: DCMProjectEntityModel, initialize_version_from_local_files: bool
|
|
64
66
|
) -> None:
|
|
65
67
|
self._create_object(project.fqn)
|
|
66
68
|
if initialize_version_from_local_files:
|
|
@@ -74,7 +76,7 @@ class ProjectManager(SqlExecutionMixin):
|
|
|
74
76
|
comment: str | None = None,
|
|
75
77
|
):
|
|
76
78
|
stage_path = StagePath.from_stage_str(from_stage)
|
|
77
|
-
query = f"ALTER PROJECT {project_name.identifier} ADD VERSION"
|
|
79
|
+
query = f"ALTER DCM PROJECT {project_name.identifier} ADD VERSION"
|
|
78
80
|
if alias:
|
|
79
81
|
query += f" IF NOT EXISTS {alias}"
|
|
80
82
|
query += f" FROM {stage_path.absolute_path(at_prefix=True)}"
|
|
@@ -84,15 +86,15 @@ class ProjectManager(SqlExecutionMixin):
|
|
|
84
86
|
|
|
85
87
|
def add_version(
|
|
86
88
|
self,
|
|
87
|
-
project:
|
|
89
|
+
project: DCMProjectEntityModel,
|
|
88
90
|
prune: bool = False,
|
|
89
91
|
from_stage: Optional[str] = None,
|
|
90
92
|
alias: Optional[str] = None,
|
|
91
93
|
comment: Optional[str] = None,
|
|
92
94
|
):
|
|
93
95
|
"""
|
|
94
|
-
Adds a version to
|
|
95
|
-
uploads local files to the stage defined in
|
|
96
|
+
Adds a version to DCM Project. If [from_stage] is not defined,
|
|
97
|
+
uploads local files to the stage defined in DCM Project definition.
|
|
96
98
|
"""
|
|
97
99
|
|
|
98
100
|
if not from_stage:
|
|
@@ -106,7 +108,7 @@ class ProjectManager(SqlExecutionMixin):
|
|
|
106
108
|
prune=prune,
|
|
107
109
|
)
|
|
108
110
|
|
|
109
|
-
with cli_console.phase(f"Creating
|
|
111
|
+
with cli_console.phase(f"Creating DCM Project version from stage {from_stage}"):
|
|
110
112
|
return self._create_version(
|
|
111
113
|
project_name=project.fqn,
|
|
112
114
|
from_stage=from_stage, # type:ignore
|
|
@@ -115,7 +117,7 @@ class ProjectManager(SqlExecutionMixin):
|
|
|
115
117
|
)
|
|
116
118
|
|
|
117
119
|
def list_versions(self, project_name: FQN):
|
|
118
|
-
query = f"SHOW VERSIONS IN PROJECT {project_name.identifier}"
|
|
120
|
+
query = f"SHOW VERSIONS IN DCM PROJECT {project_name.identifier}"
|
|
119
121
|
return self.execute_query(query=query)
|
|
120
122
|
|
|
121
123
|
def drop_version(
|
|
@@ -125,9 +127,9 @@ class ProjectManager(SqlExecutionMixin):
|
|
|
125
127
|
if_exists: bool = False,
|
|
126
128
|
):
|
|
127
129
|
"""
|
|
128
|
-
Drops a version from the
|
|
130
|
+
Drops a version from the DCM Project.
|
|
129
131
|
"""
|
|
130
|
-
query = f"ALTER PROJECT {project_name.identifier} DROP VERSION"
|
|
132
|
+
query = f"ALTER DCM PROJECT {project_name.identifier} DROP VERSION"
|
|
131
133
|
if if_exists:
|
|
132
134
|
query += " IF EXISTS"
|
|
133
135
|
query += f" {version_name}"
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
-
from snowflake.cli._plugins.
|
|
15
|
+
from snowflake.cli._plugins.dcm import commands
|
|
16
16
|
from snowflake.cli.api.plugins.command import (
|
|
17
17
|
SNOWCLI_ROOT_COMMAND_PATH,
|
|
18
18
|
CommandSpec,
|
snowflake/cli/api/constants.py
CHANGED
|
@@ -36,6 +36,7 @@ class ObjectNames:
|
|
|
36
36
|
class ObjectType(Enum):
|
|
37
37
|
COMPUTE_POOL = ObjectNames("compute-pool", "compute pool", "compute pools")
|
|
38
38
|
DBT_PROJECT = ObjectNames("dbt-project", "dbt project", "dbt projects")
|
|
39
|
+
DCM_PROJECT = ObjectNames("dcm", "DCM Project", "DCM Projects")
|
|
39
40
|
DATABASE = ObjectNames("database", "database", "databases")
|
|
40
41
|
FUNCTION = ObjectNames("function", "function", "functions")
|
|
41
42
|
INTEGRATION = ObjectNames("integration", "integration", "integrations")
|
|
@@ -48,7 +49,6 @@ class ObjectType(Enum):
|
|
|
48
49
|
NETWORK_RULE = ObjectNames("network-rule", "network rule", "network rules")
|
|
49
50
|
NOTEBOOK = ObjectNames("notebook", "notebook", "notebooks")
|
|
50
51
|
PROCEDURE = ObjectNames("procedure", "procedure", "procedures")
|
|
51
|
-
PROJECT = ObjectNames("project", "project", "projects")
|
|
52
52
|
ROLE = ObjectNames("role", "role", "roles")
|
|
53
53
|
SCHEMA = ObjectNames("schema", "schema", "schemas")
|
|
54
54
|
SERVICE = ObjectNames("service", "service", "services")
|
|
@@ -79,7 +79,7 @@ OBJECT_TO_NAMES = {o.value.cli_name: o.value for o in ObjectType}
|
|
|
79
79
|
UNSUPPORTED_OBJECTS = {
|
|
80
80
|
ObjectType.APPLICATION.value.cli_name,
|
|
81
81
|
ObjectType.APPLICATION_PACKAGE.value.cli_name,
|
|
82
|
-
ObjectType.
|
|
82
|
+
ObjectType.DCM_PROJECT.value.cli_name,
|
|
83
83
|
ObjectType.DBT_PROJECT.value.cli_name,
|
|
84
84
|
}
|
|
85
85
|
SUPPORTED_OBJECTS = sorted(OBJECT_TO_NAMES.keys() - UNSUPPORTED_OBJECTS)
|
|
@@ -16,6 +16,10 @@ from __future__ import annotations
|
|
|
16
16
|
|
|
17
17
|
from typing import Dict, List, Union, get_args
|
|
18
18
|
|
|
19
|
+
from snowflake.cli._plugins.dcm.dcm_project_entity_model import (
|
|
20
|
+
DCMProjectEntity,
|
|
21
|
+
DCMProjectEntityModel,
|
|
22
|
+
)
|
|
19
23
|
from snowflake.cli._plugins.nativeapp.entities.application import (
|
|
20
24
|
ApplicationEntity,
|
|
21
25
|
ApplicationEntityModel,
|
|
@@ -26,10 +30,6 @@ from snowflake.cli._plugins.nativeapp.entities.application_package import (
|
|
|
26
30
|
)
|
|
27
31
|
from snowflake.cli._plugins.notebook.notebook_entity import NotebookEntity
|
|
28
32
|
from snowflake.cli._plugins.notebook.notebook_entity_model import NotebookEntityModel
|
|
29
|
-
from snowflake.cli._plugins.project.project_entity_model import (
|
|
30
|
-
ProjectEntity,
|
|
31
|
-
ProjectEntityModel,
|
|
32
|
-
)
|
|
33
33
|
from snowflake.cli._plugins.snowpark.snowpark_entity import (
|
|
34
34
|
FunctionEntity,
|
|
35
35
|
ProcedureEntity,
|
|
@@ -62,7 +62,7 @@ Entity = Union[
|
|
|
62
62
|
ApplicationPackageEntity,
|
|
63
63
|
StreamlitEntity,
|
|
64
64
|
ProcedureEntity,
|
|
65
|
-
|
|
65
|
+
DCMProjectEntity,
|
|
66
66
|
FunctionEntity,
|
|
67
67
|
ComputePoolEntity,
|
|
68
68
|
ImageRepositoryEntity,
|
|
@@ -79,7 +79,7 @@ EntityModel = Union[
|
|
|
79
79
|
ImageRepositoryEntityModel,
|
|
80
80
|
ServiceEntityModel,
|
|
81
81
|
NotebookEntityModel,
|
|
82
|
-
|
|
82
|
+
DCMProjectEntityModel,
|
|
83
83
|
]
|
|
84
84
|
|
|
85
85
|
ALL_ENTITIES: List[Entity] = [*get_args(Entity)]
|
snowflake/cli/api/rest_api.py
CHANGED
|
@@ -98,6 +98,7 @@ class RestApi:
|
|
|
98
98
|
data=json.dumps(data if data else {}),
|
|
99
99
|
no_retry=True,
|
|
100
100
|
raise_raw_http_failure=True,
|
|
101
|
+
external_session_id=None, # workaround for connector 3.16 bug, to be removed SNOW-2226816
|
|
101
102
|
)
|
|
102
103
|
|
|
103
104
|
def _database_exists(self, db_name: str) -> bool:
|
snowflake/cli/api/stage_path.py
CHANGED
|
@@ -220,9 +220,13 @@ class StagePath:
|
|
|
220
220
|
return self._path.name
|
|
221
221
|
|
|
222
222
|
def is_dir(self) -> bool:
|
|
223
|
+
if Path(self.path).exists():
|
|
224
|
+
return Path(self.path).is_dir()
|
|
223
225
|
return "." not in self.name
|
|
224
226
|
|
|
225
227
|
def is_file(self) -> bool:
|
|
228
|
+
if Path(self.path).exists():
|
|
229
|
+
return Path(self.path).is_file()
|
|
226
230
|
return not self.is_dir()
|
|
227
231
|
|
|
228
232
|
@property
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: snowflake-cli
|
|
3
|
-
Version: 3.10.
|
|
3
|
+
Version: 3.10.1
|
|
4
4
|
Summary: Snowflake CLI
|
|
5
5
|
Project-URL: Source code, https://github.com/snowflakedb/snowflake-cli
|
|
6
6
|
Project-URL: Bug Tracker, https://github.com/snowflakedb/snowflake-cli/issues
|
|
@@ -219,24 +219,24 @@ Classifier: Topic :: Database
|
|
|
219
219
|
Requires-Python: >=3.10
|
|
220
220
|
Requires-Dist: annotated-types==0.7.0
|
|
221
221
|
Requires-Dist: asn1crypto==1.5.1
|
|
222
|
-
Requires-Dist: boto3==1.
|
|
223
|
-
Requires-Dist: botocore==1.
|
|
224
|
-
Requires-Dist: certifi==2025.
|
|
222
|
+
Requires-Dist: boto3==1.40.9
|
|
223
|
+
Requires-Dist: botocore==1.40.9
|
|
224
|
+
Requires-Dist: certifi==2025.8.3
|
|
225
225
|
Requires-Dist: cffi==1.17.1
|
|
226
226
|
Requires-Dist: cfgv==3.4.0
|
|
227
|
-
Requires-Dist: charset-normalizer==3.4.
|
|
227
|
+
Requires-Dist: charset-normalizer==3.4.3
|
|
228
228
|
Requires-Dist: click==8.1.8
|
|
229
|
-
Requires-Dist: cryptography==45.0.
|
|
229
|
+
Requires-Dist: cryptography==45.0.6
|
|
230
230
|
Requires-Dist: faker==37.4.0
|
|
231
231
|
Requires-Dist: filelock==3.18.0
|
|
232
232
|
Requires-Dist: gitdb==4.0.12
|
|
233
233
|
Requires-Dist: gitpython==3.1.44
|
|
234
|
-
Requires-Dist: identify==2.6.
|
|
234
|
+
Requires-Dist: identify==2.6.13
|
|
235
235
|
Requires-Dist: idna==3.10
|
|
236
236
|
Requires-Dist: iniconfig==2.1.0
|
|
237
237
|
Requires-Dist: jinja2==3.1.6
|
|
238
238
|
Requires-Dist: keyring==25.6.0
|
|
239
|
-
Requires-Dist: markdown-it-py==
|
|
239
|
+
Requires-Dist: markdown-it-py==4.0.0
|
|
240
240
|
Requires-Dist: markupsafe==3.0.2
|
|
241
241
|
Requires-Dist: nodeenv==1.9.1
|
|
242
242
|
Requires-Dist: packaging
|
|
@@ -257,16 +257,16 @@ Requires-Dist: requirements-parser==0.13.0
|
|
|
257
257
|
Requires-Dist: rich==14.0.0
|
|
258
258
|
Requires-Dist: setuptools==80.8.0
|
|
259
259
|
Requires-Dist: shellingham==1.5.4
|
|
260
|
-
Requires-Dist: snowflake-connector-python[secure-local-storage]==3.
|
|
261
|
-
Requires-Dist: snowflake-core==1.
|
|
260
|
+
Requires-Dist: snowflake-connector-python[secure-local-storage]==3.16.0
|
|
261
|
+
Requires-Dist: snowflake-core==1.6.0
|
|
262
262
|
Requires-Dist: snowflake-snowpark-python==1.33.0; python_version < '3.12'
|
|
263
263
|
Requires-Dist: sortedcontainers==2.4.0
|
|
264
264
|
Requires-Dist: tomlkit==0.13.3
|
|
265
265
|
Requires-Dist: typer==0.16.0
|
|
266
|
-
Requires-Dist: typing-extensions==4.14.
|
|
266
|
+
Requires-Dist: typing-extensions==4.14.1
|
|
267
267
|
Requires-Dist: typing-inspection==0.4.1
|
|
268
268
|
Requires-Dist: urllib3<2.6,>=1.24.3
|
|
269
|
-
Requires-Dist: virtualenv==20.
|
|
269
|
+
Requires-Dist: virtualenv==20.34.0
|
|
270
270
|
Requires-Dist: wcwidth==0.2.13
|
|
271
271
|
Requires-Dist: werkzeug==3.1.3
|
|
272
272
|
Provides-Extra: development
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
snowflake/cli/__about__.py,sha256=
|
|
1
|
+
snowflake/cli/__about__.py,sha256=tl711AQi2bmJkVhLoxzuvvrBCL38AhxjPaScTnhS2_s,853
|
|
2
2
|
snowflake/cli/__init__.py,sha256=uGA_QRGW3iGwaegpFsLgOhup0zBliBSXh9ou8J439uU,578
|
|
3
3
|
snowflake/cli/_app/__init__.py,sha256=CR_uTgoqHnU1XdyRhm5iQsS86yWXGVx5Ht7aGSDNFmc,765
|
|
4
4
|
snowflake/cli/_app/__main__.py,sha256=ZmcFdFqAtk2mFMz-cqCFdGd0iYzc7UsLH1oT1U40S0k,858
|
|
@@ -11,7 +11,7 @@ snowflake/cli/_app/snow_connector.py,sha256=7aveOySLPqPwrbD9RYLAZLC0fzF7aX0hFkk-
|
|
|
11
11
|
snowflake/cli/_app/telemetry.py,sha256=Rcl9sSTYEujrLMUvd2SsvmJMbVGE_ErOnnOLdBnpI60,9846
|
|
12
12
|
snowflake/cli/_app/version_check.py,sha256=tM3j8FmqcONz3nfiv9WZIU01wy4ZWbKgiWH_8GYzCfM,5585
|
|
13
13
|
snowflake/cli/_app/commands_registration/__init__.py,sha256=HhP1c8GDRqUtZMeYVNuYwc1_524q9jH18bxJJk1JKWU,918
|
|
14
|
-
snowflake/cli/_app/commands_registration/builtin_plugins.py,sha256=
|
|
14
|
+
snowflake/cli/_app/commands_registration/builtin_plugins.py,sha256=xVHqz5urWhm6yKpQhj2KUnBOKKKcg0k9l7_r5ywRIKU,2880
|
|
15
15
|
snowflake/cli/_app/commands_registration/command_plugins_loader.py,sha256=4pRKUYBmIVsBxDvaztgFbIBZKSaGseAMJMEHSkg0Nag,6297
|
|
16
16
|
snowflake/cli/_app/commands_registration/commands_registration_with_callbacks.py,sha256=VvGFd_q0-xe8HU_BP5l1OkVld4PYfNJ45YAWjuIydPE,3038
|
|
17
17
|
snowflake/cli/_app/commands_registration/exception_logging.py,sha256=4B_OuXo6BJXhchs1c4zlmhnN3fN-LV6jdv6LZ227Lr8,985
|
|
@@ -48,8 +48,13 @@ snowflake/cli/_plugins/cortex/types.py,sha256=9KQPlQRkoR67ty8VoqsifJfaoeLJPXZzCJ
|
|
|
48
48
|
snowflake/cli/_plugins/dbt/__init__.py,sha256=JhO1yb1LCYqYx-Ya-MlhubtiqD82CuvWF09dDMafxRM,578
|
|
49
49
|
snowflake/cli/_plugins/dbt/commands.py,sha256=foQbTCHeJxtT2nkTRyey8YEfaXUoBwdKO3F8LxsRZeA,6802
|
|
50
50
|
snowflake/cli/_plugins/dbt/constants.py,sha256=mAwkVchQikcfegHqs-PmziZJRd9-DEAienWxpoHhnPc,962
|
|
51
|
-
snowflake/cli/_plugins/dbt/manager.py,sha256=
|
|
51
|
+
snowflake/cli/_plugins/dbt/manager.py,sha256=jn-RSPj-tmdzi9kSFYBNB9PtVUHMgaz_3XgyaHQ9n2s,7588
|
|
52
52
|
snowflake/cli/_plugins/dbt/plugin_spec.py,sha256=7yEc3tLgvw3iUhALpmaVpS-iePdSMjFdFSZVybf5KTc,992
|
|
53
|
+
snowflake/cli/_plugins/dcm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
54
|
+
snowflake/cli/_plugins/dcm/commands.py,sha256=NpCsfmJrZ7CBn0dSdh0Q2mts1XJwZ0-Z0pg8wFen0YY,9513
|
|
55
|
+
snowflake/cli/_plugins/dcm/dcm_project_entity_model.py,sha256=YpdLnnbopzMgzIcJaLIiVxGxSDt0u-zisXd39JwrXiU,2143
|
|
56
|
+
snowflake/cli/_plugins/dcm/manager.py,sha256=XS4M90ZJqkeOBbsnbtKPHU5mbbb7DTgfyFuugC0McAw,5108
|
|
57
|
+
snowflake/cli/_plugins/dcm/plugin_spec.py,sha256=U-p1UrjS2QTkk6j5-XfMsehc6gzcFHXVDjI4qnm5aPs,992
|
|
53
58
|
snowflake/cli/_plugins/git/__init__.py,sha256=uGA_QRGW3iGwaegpFsLgOhup0zBliBSXh9ou8J439uU,578
|
|
54
59
|
snowflake/cli/_plugins/git/commands.py,sha256=87R8Fs_f6BUdfLv85QGlfTTH6K-Y_oDlqJyZ3jUpBVg,11320
|
|
55
60
|
snowflake/cli/_plugins/git/manager.py,sha256=QSW6ydw4Invl3cWKx8rM_NtzA1cXaiUR0QMCqki76bc,5237
|
|
@@ -123,11 +128,6 @@ snowflake/cli/_plugins/plugin/__init__.py,sha256=uGA_QRGW3iGwaegpFsLgOhup0zBliBS
|
|
|
123
128
|
snowflake/cli/_plugins/plugin/commands.py,sha256=JoDeE-ggxYE6FKulNGJQrfl7nao7lg8FCsEw2s-WdF8,2433
|
|
124
129
|
snowflake/cli/_plugins/plugin/manager.py,sha256=eeW5b0zAvvsZREgIVH7afAQbKHI2YqqdIjqo0hqFfHs,2641
|
|
125
130
|
snowflake/cli/_plugins/plugin/plugin_spec.py,sha256=5XZJPT42ZIEARYvthic3jLEB4CvDUdMeWTM6YfDkD9k,995
|
|
126
|
-
snowflake/cli/_plugins/project/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
127
|
-
snowflake/cli/_plugins/project/commands.py,sha256=kZMY1w2ZfgTmKBARvqkFFDMtdrZrYhfkp4ahTboNv8k,9389
|
|
128
|
-
snowflake/cli/_plugins/project/manager.py,sha256=K1pghvqiJpzm6K5-QMSpDEvefGDjRI3N34eG5vvHFVI,5023
|
|
129
|
-
snowflake/cli/_plugins/project/plugin_spec.py,sha256=wlRaaVR5pSq2qzty_E__LuRmgWoz5QKsVoijT3pbeTE,996
|
|
130
|
-
snowflake/cli/_plugins/project/project_entity_model.py,sha256=ibXeeFwB4o4-76q6eJ64pD1_wxyMhccUksRtVkw7Eg8,2138
|
|
131
131
|
snowflake/cli/_plugins/snowpark/__init__.py,sha256=uGA_QRGW3iGwaegpFsLgOhup0zBliBSXh9ou8J439uU,578
|
|
132
132
|
snowflake/cli/_plugins/snowpark/commands.py,sha256=eLVvUwL64wfSYkmRFHtbwBZG7lXMcvZB5o-0Dx6ZVK0,17744
|
|
133
133
|
snowflake/cli/_plugins/snowpark/common.py,sha256=85CQ0fpw4W2FibmuSMa3vG8hbZY_1XzCnA1pn45kTgU,13720
|
|
@@ -202,19 +202,19 @@ snowflake/cli/_plugins/workspace/plugin_spec.py,sha256=DvjilAunPuBuSIgKHOPcAVfk8
|
|
|
202
202
|
snowflake/cli/api/cli_global_context.py,sha256=6qI-jBa_7lyiBQFOYxr4Oap2zgAfQI_C-DDyAOBvkcs,9514
|
|
203
203
|
snowflake/cli/api/config.py,sha256=kEG5PQcUtQqUgTNesQ5_GBKntD7nJIu1gS94XCo-rKg,14149
|
|
204
204
|
snowflake/cli/api/connections.py,sha256=w102ap8ANtgvzLhUO-09WeRDZtAX-NcKuOAFZRNDabs,9417
|
|
205
|
-
snowflake/cli/api/constants.py,sha256=
|
|
205
|
+
snowflake/cli/api/constants.py,sha256=zTDCip-AsSGQIkPq5jZDldnDgva6lMtL0vUJv9mkf6E,3867
|
|
206
206
|
snowflake/cli/api/errno.py,sha256=nVQ2kO9nPaA1uGB4yZiKTwtE2LiQmINHTutziA37c6s,3871
|
|
207
207
|
snowflake/cli/api/exceptions.py,sha256=3Esa8gL0D_dsbpjWpBFWt1fQW8u4BgU59kx1B5Vgw9A,9228
|
|
208
208
|
snowflake/cli/api/feature_flags.py,sha256=31J3qMtt_XOTPxv9R1uHAJO2ckLA1eMWqE7y1oPhetI,2543
|
|
209
209
|
snowflake/cli/api/identifiers.py,sha256=ro7nCNU5GAgi29-RGzkULWQkLP0VSQRCCG-WoyCa2pM,6861
|
|
210
210
|
snowflake/cli/api/metrics.py,sha256=l-khpKWvRF8OB86OhJ2H61jrcTdMDGZe_QM1_-yqWT8,10694
|
|
211
|
-
snowflake/cli/api/rest_api.py,sha256=
|
|
211
|
+
snowflake/cli/api/rest_api.py,sha256=RUo4prPAGmi2iQt1o96co3pWfo2t5PLCVBB2m1jlrNA,7404
|
|
212
212
|
snowflake/cli/api/sanitizers.py,sha256=7EKqVQ3KOob0IFFoc_GmXPYpRhgnmIqhnJSvHPgxM5I,1211
|
|
213
213
|
snowflake/cli/api/secret.py,sha256=9Jg30dAVcV95tCxTY6RPdaKYTsiG39sld_bwUXXxF2A,263
|
|
214
214
|
snowflake/cli/api/secure_path.py,sha256=jNev299e6Zrw_Z1lonN0ReAYXwKQVvD7GAaGyaqvJKk,13750
|
|
215
215
|
snowflake/cli/api/secure_utils.py,sha256=w3f1JU2ntOXGQ2STeqU0QiAVx_sLLEfgPwIvpprqevY,4000
|
|
216
216
|
snowflake/cli/api/sql_execution.py,sha256=gfF8ebBCAruqvRX0ftXKr4QOHB6P7djnWOWa-ChcCjo,12155
|
|
217
|
-
snowflake/cli/api/stage_path.py,sha256=
|
|
217
|
+
snowflake/cli/api/stage_path.py,sha256=N-2tNdUGNl8NxORDrBfVJyRo9CupMWtGD0XqLUX6GhE,8728
|
|
218
218
|
snowflake/cli/api/artifacts/__init__.py,sha256=uGA_QRGW3iGwaegpFsLgOhup0zBliBSXh9ou8J439uU,578
|
|
219
219
|
snowflake/cli/api/artifacts/bundle_map.py,sha256=df1wos2OgThV65gSuT-7wbF4oiDBOpU7Qqs5qs7FuVg,21808
|
|
220
220
|
snowflake/cli/api/artifacts/common.py,sha256=YTL_CSdAWEB0HMQZ5063nRrdQuFQbLAc5U5ZjNAU7jY,2058
|
|
@@ -259,7 +259,7 @@ snowflake/cli/api/project/schemas/template.py,sha256=VJSwVfkWoNJ_OB850n4vLu7WD7y
|
|
|
259
259
|
snowflake/cli/api/project/schemas/updatable_model.py,sha256=y_JQSy4E67vdzKbuHmm4fmcSTHjTUgI3ulcHV1_O57M,7621
|
|
260
260
|
snowflake/cli/api/project/schemas/entities/__init__.py,sha256=uGA_QRGW3iGwaegpFsLgOhup0zBliBSXh9ou8J439uU,578
|
|
261
261
|
snowflake/cli/api/project/schemas/entities/common.py,sha256=clFYkFVUoeG0K4wRe4qSvNb95BQXefax16wtmO3zyjA,10385
|
|
262
|
-
snowflake/cli/api/project/schemas/entities/entities.py,sha256=
|
|
262
|
+
snowflake/cli/api/project/schemas/entities/entities.py,sha256=4ne1lRR1NXxqzKB25FWXofD5kB0cJvCfRhTtGN7vK-U,3070
|
|
263
263
|
snowflake/cli/api/project/schemas/v1/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
264
264
|
snowflake/cli/api/project/schemas/v1/identifier_model.py,sha256=Te0CraVdflIrvNXYljReofBCNfkGDdZ0G_aUY19GFqE,1868
|
|
265
265
|
snowflake/cli/api/project/schemas/v1/native_app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -289,8 +289,8 @@ snowflake/cli/api/utils/path_utils.py,sha256=OgR7cwbHXqP875RgPJGrAvDC1RRTU-2-Yss
|
|
|
289
289
|
snowflake/cli/api/utils/python_api_utils.py,sha256=wTNxXrma78wPvBz-Jo-ixNtP8ZjDCDh4TvciEnhYIAM,300
|
|
290
290
|
snowflake/cli/api/utils/templating_functions.py,sha256=zu2oK1BEC9yyWtDx17Hr-VAYHvCtagaOdxIrm70JQys,4955
|
|
291
291
|
snowflake/cli/api/utils/types.py,sha256=fVKuls8axKSsBzPqWwrkwkwoXXmedqxNJKqfXrrGyBM,1190
|
|
292
|
-
snowflake_cli-3.10.
|
|
293
|
-
snowflake_cli-3.10.
|
|
294
|
-
snowflake_cli-3.10.
|
|
295
|
-
snowflake_cli-3.10.
|
|
296
|
-
snowflake_cli-3.10.
|
|
292
|
+
snowflake_cli-3.10.1.dist-info/METADATA,sha256=hBSbbzDq_Z0rLdz2jx2tMo4t4ftdjfPKRh4RRbbYX80,19406
|
|
293
|
+
snowflake_cli-3.10.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
294
|
+
snowflake_cli-3.10.1.dist-info/entry_points.txt,sha256=6QmSI0wUX6p7f-dGvrPdswlQyVAVGi1AtOUbE8X6bho,58
|
|
295
|
+
snowflake_cli-3.10.1.dist-info/licenses/LICENSE,sha256=mJMA3Uz2AbjU_kVggo1CAx01XhBsI7BSi2H7ggUg_-c,11344
|
|
296
|
+
snowflake_cli-3.10.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|