snowflake-cli 3.2.2__py3-none-any.whl → 3.4.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.
Files changed (97) hide show
  1. snowflake/cli/__about__.py +1 -1
  2. snowflake/cli/_app/__main__.py +2 -2
  3. snowflake/cli/_app/cli_app.py +224 -192
  4. snowflake/cli/_app/commands_registration/commands_registration_with_callbacks.py +1 -27
  5. snowflake/cli/_app/constants.py +4 -0
  6. snowflake/cli/_app/snow_connector.py +12 -0
  7. snowflake/cli/_app/telemetry.py +10 -3
  8. snowflake/cli/_plugins/connection/util.py +12 -19
  9. snowflake/cli/_plugins/cortex/commands.py +2 -4
  10. snowflake/cli/_plugins/git/manager.py +1 -1
  11. snowflake/cli/_plugins/helpers/commands.py +207 -1
  12. snowflake/cli/_plugins/nativeapp/artifacts.py +16 -628
  13. snowflake/cli/_plugins/nativeapp/bundle_context.py +1 -1
  14. snowflake/cli/_plugins/nativeapp/codegen/artifact_processor.py +1 -1
  15. snowflake/cli/_plugins/nativeapp/codegen/compiler.py +42 -20
  16. snowflake/cli/_plugins/nativeapp/codegen/setup/native_app_setup_processor.py +9 -2
  17. snowflake/cli/_plugins/nativeapp/codegen/snowpark/python_processor.py +6 -3
  18. snowflake/cli/_plugins/nativeapp/codegen/templates/templates_processor.py +44 -34
  19. snowflake/cli/_plugins/nativeapp/commands.py +113 -21
  20. snowflake/cli/_plugins/nativeapp/constants.py +5 -0
  21. snowflake/cli/_plugins/nativeapp/entities/application.py +226 -296
  22. snowflake/cli/_plugins/nativeapp/entities/application_package.py +911 -141
  23. snowflake/cli/_plugins/nativeapp/entities/application_package_child_interface.py +43 -0
  24. snowflake/cli/_plugins/nativeapp/feature_flags.py +5 -1
  25. snowflake/cli/_plugins/nativeapp/release_channel/__init__.py +13 -0
  26. snowflake/cli/_plugins/nativeapp/release_channel/commands.py +246 -0
  27. snowflake/cli/_plugins/nativeapp/release_directive/__init__.py +13 -0
  28. snowflake/cli/_plugins/nativeapp/release_directive/commands.py +243 -0
  29. snowflake/cli/_plugins/nativeapp/same_account_install_method.py +9 -17
  30. snowflake/cli/_plugins/nativeapp/sf_facade_exceptions.py +80 -0
  31. snowflake/cli/_plugins/nativeapp/sf_sql_facade.py +1184 -80
  32. snowflake/cli/_plugins/nativeapp/utils.py +11 -0
  33. snowflake/cli/_plugins/nativeapp/v2_conversions/compat.py +7 -3
  34. snowflake/cli/_plugins/nativeapp/version/commands.py +32 -5
  35. snowflake/cli/_plugins/notebook/commands.py +55 -2
  36. snowflake/cli/_plugins/notebook/exceptions.py +1 -1
  37. snowflake/cli/_plugins/notebook/manager.py +7 -5
  38. snowflake/cli/_plugins/notebook/notebook_entity.py +120 -0
  39. snowflake/cli/_plugins/notebook/notebook_entity_model.py +42 -0
  40. snowflake/cli/_plugins/notebook/notebook_project_paths.py +15 -0
  41. snowflake/cli/_plugins/notebook/types.py +3 -0
  42. snowflake/cli/_plugins/snowpark/commands.py +48 -30
  43. snowflake/cli/_plugins/snowpark/common.py +47 -2
  44. snowflake/cli/_plugins/snowpark/snowpark_entity.py +247 -4
  45. snowflake/cli/_plugins/snowpark/snowpark_entity_model.py +18 -30
  46. snowflake/cli/_plugins/snowpark/snowpark_project_paths.py +156 -23
  47. snowflake/cli/_plugins/snowpark/zipper.py +33 -1
  48. snowflake/cli/_plugins/spcs/common.py +129 -0
  49. snowflake/cli/_plugins/spcs/services/commands.py +131 -14
  50. snowflake/cli/_plugins/spcs/services/manager.py +169 -1
  51. snowflake/cli/_plugins/stage/commands.py +2 -1
  52. snowflake/cli/_plugins/stage/diff.py +60 -39
  53. snowflake/cli/_plugins/stage/manager.py +34 -13
  54. snowflake/cli/_plugins/stage/utils.py +1 -1
  55. snowflake/cli/_plugins/streamlit/commands.py +10 -1
  56. snowflake/cli/_plugins/streamlit/manager.py +70 -22
  57. snowflake/cli/_plugins/streamlit/streamlit_entity.py +131 -1
  58. snowflake/cli/_plugins/streamlit/streamlit_entity_model.py +14 -24
  59. snowflake/cli/_plugins/streamlit/streamlit_project_paths.py +30 -0
  60. snowflake/cli/_plugins/workspace/commands.py +6 -5
  61. snowflake/cli/_plugins/workspace/manager.py +9 -5
  62. snowflake/cli/api/artifacts/__init__.py +13 -0
  63. snowflake/cli/api/artifacts/bundle_map.py +500 -0
  64. snowflake/cli/api/artifacts/common.py +78 -0
  65. snowflake/cli/api/artifacts/utils.py +82 -0
  66. snowflake/cli/api/cli_global_context.py +36 -2
  67. snowflake/cli/api/commands/flags.py +10 -4
  68. snowflake/cli/api/commands/utils.py +28 -2
  69. snowflake/cli/api/config.py +6 -2
  70. snowflake/cli/api/connections.py +12 -1
  71. snowflake/cli/api/constants.py +10 -1
  72. snowflake/cli/api/entities/common.py +81 -14
  73. snowflake/cli/api/entities/resolver.py +160 -0
  74. snowflake/cli/api/entities/utils.py +65 -23
  75. snowflake/cli/api/errno.py +63 -3
  76. snowflake/cli/api/feature_flags.py +19 -4
  77. snowflake/cli/api/metrics.py +21 -27
  78. snowflake/cli/api/project/definition_conversion.py +4 -4
  79. snowflake/cli/api/project/project_paths.py +28 -0
  80. snowflake/cli/api/project/schemas/entities/common.py +130 -1
  81. snowflake/cli/api/project/schemas/entities/entities.py +4 -0
  82. snowflake/cli/api/project/schemas/project_definition.py +54 -6
  83. snowflake/cli/api/project/schemas/updatable_model.py +2 -2
  84. snowflake/cli/api/project/schemas/v1/native_app/native_app.py +5 -7
  85. snowflake/cli/api/project/schemas/v1/streamlit/streamlit.py +1 -1
  86. snowflake/cli/api/project/util.py +45 -0
  87. snowflake/cli/api/secure_path.py +6 -0
  88. snowflake/cli/api/sql_execution.py +5 -1
  89. snowflake/cli/api/stage_path.py +7 -2
  90. snowflake/cli/api/utils/graph.py +3 -0
  91. snowflake/cli/api/utils/path_utils.py +24 -0
  92. {snowflake_cli-3.2.2.dist-info → snowflake_cli-3.4.1.dist-info}/METADATA +14 -15
  93. {snowflake_cli-3.2.2.dist-info → snowflake_cli-3.4.1.dist-info}/RECORD +96 -82
  94. {snowflake_cli-3.2.2.dist-info → snowflake_cli-3.4.1.dist-info}/WHEEL +1 -1
  95. snowflake/cli/api/project/schemas/v1/native_app/path_mapping.py +0 -65
  96. {snowflake_cli-3.2.2.dist-info → snowflake_cli-3.4.1.dist-info}/entry_points.txt +0 -0
  97. {snowflake_cli-3.2.2.dist-info → snowflake_cli-3.4.1.dist-info}/licenses/LICENSE +0 -0
@@ -11,12 +11,83 @@
11
11
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
+ from __future__ import annotations
15
+
14
16
  from typing import NoReturn
15
17
 
16
18
  from click import ClickException
17
19
  from snowflake.cli._plugins.nativeapp.sf_facade_constants import UseObjectType
20
+ from snowflake.cli.api.errno import (
21
+ APPLICATION_FILE_NOT_FOUND_ON_STAGE,
22
+ APPLICATION_INSTANCE_EMPTY_SETUP_SCRIPT,
23
+ APPLICATION_INSTANCE_FAILED_TO_RUN_SETUP_SCRIPT,
24
+ APPLICATION_INSTANCE_NO_ACTIVE_WAREHOUSE_FOR_CREATE_OR_UPGRADE,
25
+ APPLICATION_NO_LONGER_AVAILABLE,
26
+ APPLICATION_PACKAGE_CANNOT_SET_EXTERNAL_DISTRIBUTION_WITH_SPCS,
27
+ APPLICATION_PACKAGE_MANIFEST_CONTAINER_IMAGE_URL_BAD_VALUE,
28
+ APPLICATION_PACKAGE_MANIFEST_SPECIFIED_FILE_NOT_FOUND,
29
+ APPLICATION_PACKAGE_PATCH_DOES_NOT_EXIST,
30
+ CANNOT_GRANT_NON_MANIFEST_PRIVILEGE,
31
+ CANNOT_GRANT_OBJECT_NOT_IN_APP_PACKAGE,
32
+ CANNOT_GRANT_RESTRICTED_PRIVILEGE_TO_APP_PACKAGE_SHARE,
33
+ CANNOT_UPGRADE_FROM_LOOSE_FILES_TO_VERSION,
34
+ CANNOT_UPGRADE_FROM_VERSION_TO_LOOSE_FILES,
35
+ NATIVE_APPLICATION_MANIFEST_GENERIC_JSON_ERROR,
36
+ NATIVE_APPLICATION_MANIFEST_INVALID_SYNTAX,
37
+ NATIVE_APPLICATION_MANIFEST_UNEXPECTED_VALUE_FOR_PROPERTY,
38
+ NATIVE_APPLICATION_MANIFEST_UNRECOGNIZED_FIELD,
39
+ NO_REFERENCE_SET_FOR_DEFINITION,
40
+ NO_VERSIONS_AVAILABLE_FOR_ACCOUNT,
41
+ NOT_SUPPORTED_ON_DEV_MODE_APPLICATIONS,
42
+ ONLY_SUPPORTED_ON_DEV_MODE_APPLICATIONS,
43
+ ROLE_NOT_ASSIGNED,
44
+ SNOWSERVICES_IMAGE_MANIFEST_NOT_FOUND,
45
+ SNOWSERVICES_IMAGE_REPOSITORY_FAILS_TO_RETRIEVE_IMAGE_HASH_NEW,
46
+ SNOWSERVICES_IMAGE_REPOSITORY_IMAGE_IMPORT_TO_NATIVE_APP_FAIL,
47
+ VIEW_EXPANSION_FAILED,
48
+ )
18
49
  from snowflake.connector import DatabaseError, Error, ProgrammingError
19
50
 
51
+ # Reasons why an `alter application ... upgrade` might fail
52
+ UPGRADE_RESTRICTION_CODES = {
53
+ CANNOT_UPGRADE_FROM_LOOSE_FILES_TO_VERSION,
54
+ CANNOT_UPGRADE_FROM_VERSION_TO_LOOSE_FILES,
55
+ ONLY_SUPPORTED_ON_DEV_MODE_APPLICATIONS,
56
+ NOT_SUPPORTED_ON_DEV_MODE_APPLICATIONS,
57
+ APPLICATION_NO_LONGER_AVAILABLE,
58
+ }
59
+
60
+ CREATE_OR_UPGRADE_APPLICATION_EXPECTED_USER_ERROR_CODES = {
61
+ APPLICATION_INSTANCE_FAILED_TO_RUN_SETUP_SCRIPT,
62
+ NATIVE_APPLICATION_MANIFEST_GENERIC_JSON_ERROR,
63
+ APPLICATION_INSTANCE_NO_ACTIVE_WAREHOUSE_FOR_CREATE_OR_UPGRADE,
64
+ # when setup script/manifest/readme isn't on the stage
65
+ APPLICATION_FILE_NOT_FOUND_ON_STAGE,
66
+ NATIVE_APPLICATION_MANIFEST_UNRECOGNIZED_FIELD,
67
+ SNOWSERVICES_IMAGE_MANIFEST_NOT_FOUND,
68
+ # user tried to clone tables and it failed
69
+ VIEW_EXPANSION_FAILED,
70
+ # user tried to do something with a role that wasn't assigned to them
71
+ ROLE_NOT_ASSIGNED,
72
+ APPLICATION_PACKAGE_MANIFEST_SPECIFIED_FILE_NOT_FOUND,
73
+ SNOWSERVICES_IMAGE_REPOSITORY_IMAGE_IMPORT_TO_NATIVE_APP_FAIL,
74
+ APPLICATION_PACKAGE_PATCH_DOES_NOT_EXIST,
75
+ APPLICATION_PACKAGE_MANIFEST_CONTAINER_IMAGE_URL_BAD_VALUE,
76
+ SNOWSERVICES_IMAGE_REPOSITORY_FAILS_TO_RETRIEVE_IMAGE_HASH_NEW,
77
+ NATIVE_APPLICATION_MANIFEST_UNEXPECTED_VALUE_FOR_PROPERTY,
78
+ CANNOT_GRANT_NON_MANIFEST_PRIVILEGE,
79
+ NO_REFERENCE_SET_FOR_DEFINITION,
80
+ NATIVE_APPLICATION_MANIFEST_INVALID_SYNTAX,
81
+ CANNOT_GRANT_OBJECT_NOT_IN_APP_PACKAGE,
82
+ APPLICATION_PACKAGE_MANIFEST_SPECIFIED_FILE_NOT_FOUND,
83
+ # user tried installing from release directive and there are none available
84
+ NO_VERSIONS_AVAILABLE_FOR_ACCOUNT,
85
+ APPLICATION_PACKAGE_MANIFEST_CONTAINER_IMAGE_URL_BAD_VALUE,
86
+ APPLICATION_INSTANCE_EMPTY_SETUP_SCRIPT,
87
+ APPLICATION_PACKAGE_CANNOT_SET_EXTERNAL_DISTRIBUTION_WITH_SPCS,
88
+ CANNOT_GRANT_RESTRICTED_PRIVILEGE_TO_APP_PACKAGE_SHARE,
89
+ }
90
+
20
91
 
21
92
  def handle_unclassified_error(err: Error | Exception, context: str) -> NoReturn:
22
93
  """
@@ -115,3 +186,12 @@ class InsufficientPrivilegesError(ClickException):
115
186
  if role:
116
187
  message += f" using role: {role}"
117
188
  super().__init__(message)
189
+
190
+
191
+ class UpgradeApplicationRestrictionError(UserInputError):
192
+ """
193
+ Raised when an alter application ... upgrade fails due to user error.
194
+ Must be caught and handled by the caller of an upgrade_application
195
+ """
196
+
197
+ pass