omnata-plugin-devkit 0.13.7a199__tar.gz → 0.13.8a200__tar.gz

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 (89) hide show
  1. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/PKG-INFO +2 -2
  2. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/pyproject.toml +2 -5
  3. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/jinja_templates/API_LIMITS.sql.jinja +2 -1
  4. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/jinja_templates/CONFIGURATION_FORM.sql.jinja +2 -1
  5. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/jinja_templates/CONNECTION_FORM.sql.jinja +2 -1
  6. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/jinja_templates/CONNECTION_TEST.sql.jinja +2 -1
  7. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/jinja_templates/CONSTRUCT_FORM_OPTION.sql.jinja +2 -1
  8. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/jinja_templates/CREATE_BILLING_EVENTS.sql.jinja +2 -1
  9. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/jinja_templates/CREATE_GENERIC_SECRET_OBJECT.sql.jinja +2 -1
  10. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/jinja_templates/GET_MISSING_APP_PRIVILEGES.sql.jinja +1 -1
  11. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/jinja_templates/INBOUND_LIST_STREAMS.sql.jinja +2 -1
  12. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/jinja_templates/LIST_STAGES.sql.jinja +2 -1
  13. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/jinja_templates/NETWORK_ADDRESSES.sql.jinja +2 -1
  14. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/jinja_templates/NGROK_POST_TUNNEL_FIELDS.sql.jinja +2 -1
  15. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/jinja_templates/OUTBOUND_RECORD_VALIDATOR.sql.jinja +2 -1
  16. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/jinja_templates/RETRIEVE_SECRETS.sql.jinja +2 -1
  17. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/jinja_templates/RETRIEVE_SECRETS_UDF.sql.jinja +1 -1
  18. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/jinja_templates/SET_CONNECTION_OBJECTS.sql.jinja +2 -1
  19. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/jinja_templates/SYNC.sql.jinja +2 -1
  20. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/jinja_templates/TUNNEL_TEST.sql.jinja +2 -1
  21. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/jinja_templates/UPDATE_GENERIC_SECRET_OBJECT.sql.jinja +2 -1
  22. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/plugin_uploader.py +42 -89
  23. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/LICENSE +0 -0
  24. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/README.md +0 -0
  25. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/__init__.py +0 -0
  26. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/airbyte_wrapper.py +0 -0
  27. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/cli/__init__.py +0 -0
  28. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/development.ipynb +0 -0
  29. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/development_session.py +0 -0
  30. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/initialiser.py +0 -0
  31. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/jinja_templates/ASSIGN_OUTBOUND_TARGET_TYPE.sql.jinja +0 -0
  32. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/jinja_templates/CHECK_CONNECTION_PROGRESS.sql.jinja +0 -0
  33. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/jinja_templates/CONFIGURE_APIS.sql.jinja +0 -0
  34. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/jinja_templates/CREATE_GENERIC_SECRET_OBJECT_FROM_EXISTING.sql.jinja +0 -0
  35. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/jinja_templates/CREATE_NETWORK_RULE_OBJECT.sql.jinja +0 -0
  36. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/jinja_templates/CREATE_NETWORK_RULE_OBJECT_FROM_EXISTING.sql.jinja +0 -0
  37. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/jinja_templates/CREATE_OAUTH_SECRET_OBJECT.sql.jinja +0 -0
  38. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/jinja_templates/DROP_CONFIGURATION_DEFINITION.sql.jinja +0 -0
  39. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/jinja_templates/DROP_INTEGRATION.sql.jinja +0 -0
  40. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/jinja_templates/DROP_NETWORK_RULES.sql.jinja +0 -0
  41. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/jinja_templates/DROP_SECRETS.sql.jinja +0 -0
  42. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/jinja_templates/DROP_SPECIFICATION.sql.jinja +0 -0
  43. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/jinja_templates/FETCH_CONNECTIONS.sql.jinja +0 -0
  44. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/jinja_templates/FETCH_SYNCS.sql.jinja +0 -0
  45. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/jinja_templates/FETCH_SYNC_BRANCHES.sql.jinja +0 -0
  46. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/jinja_templates/LIST_APP_SPECIFICATIONS.sql.jinja +0 -0
  47. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/jinja_templates/PENDING_API_CONFIGURATION.sql.jinja +0 -0
  48. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/jinja_templates/POST_INSTALL_ACTIONS.sql.jinja +0 -0
  49. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/jinja_templates/RENAME_CONNECTION_METHODS.sql.jinja +0 -0
  50. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/jinja_templates/RETRIEVE_NETWORK_RULE_OBJECT.sql.jinja +0 -0
  51. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/jinja_templates/SET_EAI_ACTIVE.sql.jinja +0 -0
  52. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/jinja_templates/SET_EAI_SPECIFICATION.sql.jinja +0 -0
  53. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/jinja_templates/SET_SI_SPECIFICATION.sql.jinja +0 -0
  54. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/jinja_templates/TEST_CALLBACK.sql.jinja +0 -0
  55. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/jinja_templates/TEST_OAUTH_TOKEN_EXISTS.sql.jinja +0 -0
  56. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/jinja_templates/UPDATE_API_CONFIGURATION.sql.jinja +0 -0
  57. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/jinja_templates/UPDATE_GENERIC_SECRET_OBJECT_OLD.sql.jinja +0 -0
  58. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/jinja_templates/UPDATE_NETWORK_RULE_OBJECT.sql.jinja +0 -0
  59. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/jinja_templates/manifest.yml.jinja +0 -0
  60. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/native_app_packaging.py +0 -0
  61. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/plugin_registration.py +0 -0
  62. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/plugin_template/icon.svg +0 -0
  63. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/plugin_template/plugin.py +0 -0
  64. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/plugin_template/plugin_development.ipynb +0 -0
  65. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/plugin_template/requirements.txt +0 -0
  66. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/snowcli/__init__.py +0 -0
  67. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/snowcli/cli/__init__.py +0 -0
  68. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/snowcli/cli/api/__init__.py +0 -0
  69. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/snowcli/cli/api/config.py +0 -0
  70. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/snowcli/cli/api/constants.py +0 -0
  71. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/snowcli/cli/api/exceptions.py +0 -0
  72. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/snowcli/cli/api/secure_path.py +0 -0
  73. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/snowcli/cli/api/secure_utils.py +0 -0
  74. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/snowcli/cli/api/utils/__init__.py +0 -0
  75. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/snowcli/cli/api/utils/types.py +0 -0
  76. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/snowcli/cli/app/__init__.py +0 -0
  77. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/snowcli/cli/app/snow_connector.py +0 -0
  78. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/snowcli/cli/plugins/__init__.py +0 -0
  79. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/snowcli/cli/plugins/snowpark/__init__.py +0 -0
  80. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/snowcli/cli/plugins/snowpark/models.py +0 -0
  81. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/snowcli/cli/plugins/snowpark/package/__init__.py +0 -0
  82. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/snowcli/cli/plugins/snowpark/package_utils.py +0 -0
  83. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/snowcli/cli/plugins/snowpark/snowpark_shared.py +0 -0
  84. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/snowcli/cli/plugins/snowpark/venv.py +0 -0
  85. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/snowcli/cli/plugins/snowpark/zipper.py +0 -0
  86. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/snowcli/cli/templates/environment.yml.jinja +0 -0
  87. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/streamlit/plugin_configuration.py +0 -0
  88. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/test_step_definitions.py +0 -0
  89. {omnata_plugin_devkit-0.13.7a199 → omnata_plugin_devkit-0.13.8a200}/src/omnata_plugin_devkit/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: omnata-plugin-devkit
3
- Version: 0.13.7a199
3
+ Version: 0.13.8a200
4
4
  Summary:
5
5
  License-File: LICENSE
6
6
  Author: James Weakley
@@ -13,7 +13,7 @@ Classifier: Programming Language :: Python :: 3.12
13
13
  Classifier: Programming Language :: Python :: 3.13
14
14
  Requires-Dist: behave (>=1.2,<2.0)
15
15
  Requires-Dist: behave_pandas (>=0.5.0,<0.6.0)
16
- Requires-Dist: omnata-plugin-runtime (>=0.12.5)
16
+ Requires-Dist: omnata-plugin-runtime (==0.12.10a374)
17
17
  Requires-Dist: omnata_cli (>=0.2.3,<0.3.0)
18
18
  Requires-Dist: pyparsing (>=3.0)
19
19
  Requires-Dist: python-slugify (>=8,<9)
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "omnata-plugin-devkit"
3
- version = "0.13.7a199"
3
+ version = "0.13.8a200"
4
4
  description = ""
5
5
  authors = ["James Weakley <james.weakley@omnata.com>"]
6
6
  readme = "README.md"
@@ -10,10 +10,7 @@ packages = [{ include = "omnata_plugin_devkit", from = "src" }]
10
10
  # support 3.10 - 3.13
11
11
  python = ">=3.10, <=3.13"
12
12
  omnata_cli = "^0.2.3"
13
- omnata-plugin-runtime = ">=0.12.5"
14
- #pandas = "^2,<=2.3.3"
15
- #numpy = "<=2.3.5"
16
- #jinja2 = "^3,<=3.1.6"
13
+ omnata-plugin-runtime = "==0.12.10a374"
17
14
  python-slugify = "^8"
18
15
  vcrpy = "^4"
19
16
  tabulate = "^0.9"
@@ -6,7 +6,8 @@ create or replace procedure PLUGIN.API_LIMITS(
6
6
  OTHER_SECRETS_NAME VARCHAR)
7
7
  returns object
8
8
  language python
9
- RUNTIME_VERSION = '3.10'
9
+ RUNTIME_VERSION = '3.12'
10
+ ARTIFACT_REPOSITORY = snowflake.snowpark.pypi_shared_repository
10
11
  PACKAGES = ({{packages}})
11
12
  IMPORTS = ('/app.zip')
12
13
  HANDLER = 'run'
@@ -2,7 +2,8 @@ create or replace procedure PLUGIN.CONFIGURATION_FORM(
2
2
  CONNECTION_FORM_REQUEST OBJECT)
3
3
  returns object
4
4
  language python
5
- RUNTIME_VERSION = '3.10'
5
+ RUNTIME_VERSION = '3.12'
6
+ ARTIFACT_REPOSITORY = snowflake.snowpark.pypi_shared_repository
6
7
  PACKAGES = ({{packages}})
7
8
  IMPORTS = ('/app.zip')
8
9
  HANDLER = 'run'
@@ -1,7 +1,8 @@
1
1
  create or replace procedure PLUGIN.CONNECTION_FORM(CONNECTIVITY_OPTION VARCHAR)
2
2
  returns object
3
3
  language python
4
- RUNTIME_VERSION = '3.10'
4
+ RUNTIME_VERSION = '3.12'
5
+ ARTIFACT_REPOSITORY = snowflake.snowpark.pypi_shared_repository
5
6
  PACKAGES = ({{packages}})
6
7
  IMPORTS = ('/app.zip')
7
8
  HANDLER = 'run'
@@ -7,7 +7,8 @@ create or replace procedure PLUGIN.CONNECTION_TEST(
7
7
  OTHER_SECRETS_NAME VARCHAR)
8
8
  returns object
9
9
  language python
10
- RUNTIME_VERSION = '3.10'
10
+ RUNTIME_VERSION = '3.12'
11
+ ARTIFACT_REPOSITORY = snowflake.snowpark.pypi_shared_repository
11
12
  PACKAGES = ({{packages}})
12
13
  IMPORTS = ('/app.zip')
13
14
  HANDLER = 'run'
@@ -1,7 +1,8 @@
1
1
  create or replace procedure PLUGIN.CONSTRUCT_FORM_OPTION(FUNCTION_NAME VARCHAR,STORED_VALUES ARRAY)
2
2
  returns object
3
3
  language python
4
- RUNTIME_VERSION = '3.10'
4
+ RUNTIME_VERSION = '3.12'
5
+ ARTIFACT_REPOSITORY = snowflake.snowpark.pypi_shared_repository
5
6
  PACKAGES = ({{packages}})
6
7
  IMPORTS = ('/app.zip')
7
8
  HANDLER = 'run'
@@ -1,7 +1,8 @@
1
1
  create or replace procedure PLUGIN.CREATE_BILLING_EVENTS(BILLING_EVENT_REQUEST OBJECT)
2
2
  returns object
3
3
  language python
4
- RUNTIME_VERSION = '3.10'
4
+ RUNTIME_VERSION = '3.12'
5
+ ARTIFACT_REPOSITORY = snowflake.snowpark.pypi_shared_repository
5
6
  PACKAGES = ({{packages}})
6
7
  IMPORTS = ('/app.zip')
7
8
  HANDLER = 'run'
@@ -1,7 +1,8 @@
1
1
  create or replace procedure PLUGIN.CREATE_GENERIC_SECRET_OBJECT(SECRET_NAME VARCHAR, SECRET_CONTENTS VARCHAR)
2
2
  returns object
3
3
  language python
4
- RUNTIME_VERSION = '3.10'
4
+ RUNTIME_VERSION = '3.12'
5
+ ARTIFACT_REPOSITORY = snowflake.snowpark.pypi_shared_repository
5
6
  PACKAGES = ({{packages}})
6
7
  HANDLER = 'run'
7
8
  COMMENT = $$
@@ -1,7 +1,7 @@
1
1
  create or replace procedure PLUGIN.GET_MISSING_APP_PRIVILEGES()
2
2
  returns object
3
3
  language python
4
- RUNTIME_VERSION = '3.10'
4
+ RUNTIME_VERSION = '3.12'
5
5
  PACKAGES = ('snowflake-snowpark-python','snowflake-native-apps-permission')
6
6
  HANDLER = 'run'
7
7
  COMMENT = $$
@@ -8,7 +8,8 @@ create or replace procedure PLUGIN.INBOUND_LIST_STREAMS(
8
8
  SELECTED_STREAMS ARRAY)
9
9
  returns table(RESULT object)
10
10
  language python
11
- RUNTIME_VERSION = '3.10'
11
+ RUNTIME_VERSION = '3.12'
12
+ ARTIFACT_REPOSITORY = snowflake.snowpark.pypi_shared_repository
12
13
  PACKAGES = ({{packages}})
13
14
  IMPORTS = ('/app.zip')
14
15
  HANDLER = 'run'
@@ -1,7 +1,8 @@
1
1
  create or replace procedure PLUGIN.LIST_STAGES()
2
2
  returns object
3
3
  language python
4
- RUNTIME_VERSION = '3.10'
4
+ RUNTIME_VERSION = '3.12'
5
+ ARTIFACT_REPOSITORY = snowflake.snowpark.pypi_shared_repository
5
6
  PACKAGES = ({{packages}})
6
7
  IMPORTS = ('/app.zip')
7
8
  HANDLER = 'run'
@@ -5,7 +5,8 @@ create or replace procedure PLUGIN.NETWORK_ADDRESSES(
5
5
  )
6
6
  returns object
7
7
  language python
8
- RUNTIME_VERSION = '3.10'
8
+ RUNTIME_VERSION = '3.12'
9
+ ARTIFACT_REPOSITORY = snowflake.snowpark.pypi_shared_repository
9
10
  PACKAGES = ({{packages}})
10
11
  IMPORTS = ('/app.zip')
11
12
  HANDLER = 'run'
@@ -6,7 +6,8 @@ create or replace procedure PLUGIN.NGROK_POST_TUNNEL_FIELDS(
6
6
  FUNCTION_NAME VARCHAR)
7
7
  returns object
8
8
  language python
9
- RUNTIME_VERSION = '3.10'
9
+ RUNTIME_VERSION = '3.12'
10
+ ARTIFACT_REPOSITORY = snowflake.snowpark.pypi_shared_repository
10
11
  PACKAGES = ({{packages}})
11
12
  IMPORTS = ('/app.zip')
12
13
  HANDLER = 'run'
@@ -1,7 +1,8 @@
1
1
  create or replace function PLUGIN.OUTBOUND_RECORD_VALIDATOR(SYNC_PARAMETERS OBJECT,FIELD_MAPPINGS OBJECT,TRANSFORM_RECORD OBJECT,SOURCE_TYPES OBJECT)
2
2
  returns object
3
3
  language python
4
- RUNTIME_VERSION = '3.10'
4
+ RUNTIME_VERSION = '3.12'
5
+ ARTIFACT_REPOSITORY = snowflake.snowpark.pypi_shared_repository
5
6
  PACKAGES = ({{packages}})
6
7
  IMPORTS = ('/app.zip')
7
8
  HANDLER = 'run'
@@ -1,7 +1,8 @@
1
1
  create or replace procedure PLUGIN.RETRIEVE_SECRETS(OAUTH_SECRET_NAME VARCHAR,OTHER_SECRETS_NAME VARCHAR)
2
2
  returns object
3
3
  language python
4
- RUNTIME_VERSION = '3.10'
4
+ RUNTIME_VERSION = '3.12'
5
+ ARTIFACT_REPOSITORY = snowflake.snowpark.pypi_shared_repository
5
6
  PACKAGES = ({{packages}})
6
7
  IMPORTS = ('/app.zip')
7
8
  HANDLER = 'run'
@@ -1,7 +1,7 @@
1
1
  create or replace function PLUGIN.RETRIEVE_SECRETS_UDF(OAUTH_SECRET_NAME VARCHAR,OTHER_SECRETS_NAME VARCHAR)
2
2
  returns object
3
3
  language python
4
- RUNTIME_VERSION = '3.10'
4
+ RUNTIME_VERSION = '3.12'
5
5
  HANDLER = 'run'
6
6
  COMMENT = $$
7
7
  Allows this plugin to retrieve its own secrets during CONFIGURE_API calls.
@@ -1,7 +1,8 @@
1
1
  create or replace procedure PLUGIN.SET_CONNECTION_OBJECTS(PARAMETERS OBJECT)
2
2
  returns object
3
3
  language python
4
- RUNTIME_VERSION = '3.10'
4
+ RUNTIME_VERSION = '3.12'
5
+ ARTIFACT_REPOSITORY = snowflake.snowpark.pypi_shared_repository
5
6
  PACKAGES = ({{packages}})
6
7
  IMPORTS = ('/app.zip')
7
8
  HANDLER = 'run'
@@ -1,7 +1,8 @@
1
1
  create or replace procedure PLUGIN.SYNC(SYNC_REQUEST OBJECT)
2
2
  returns object
3
3
  language python
4
- RUNTIME_VERSION = '3.10'
4
+ RUNTIME_VERSION = '3.12'
5
+ ARTIFACT_REPOSITORY = snowflake.snowpark.pypi_shared_repository
5
6
  PACKAGES = ({{packages}})
6
7
  IMPORTS = ('/app.zip')
7
8
  HANDLER = 'run'
@@ -2,7 +2,8 @@ create or replace procedure PLUGIN.TUNNEL_TEST(TUNNEL_TYPE VARCHAR,
2
2
  OTHER_SECRETS_NAME VARCHAR)
3
3
  returns object
4
4
  language python
5
- RUNTIME_VERSION = '3.10'
5
+ RUNTIME_VERSION = '3.12'
6
+ ARTIFACT_REPOSITORY = snowflake.snowpark.pypi_shared_repository
6
7
  PACKAGES = ({{packages}})
7
8
  IMPORTS = ('/app.zip')
8
9
  HANDLER = 'run'
@@ -1,7 +1,8 @@
1
1
  create or replace procedure PLUGIN.UPDATE_GENERIC_SECRET_OBJECT(SECRET_NAME VARCHAR,SECRET_CONTENTS VARCHAR,MERGE_WITH_OTHER_SECRET VARCHAR)
2
2
  returns object
3
3
  language python
4
- RUNTIME_VERSION = '3.10'
4
+ RUNTIME_VERSION = '3.12'
5
+ ARTIFACT_REPOSITORY = snowflake.snowpark.pypi_shared_repository
5
6
  PACKAGES = ({{packages}})
6
7
  IMPORTS = ('/app.zip')
7
8
  HANDLER = 'run'
@@ -14,7 +14,6 @@ import distutils.core
14
14
  import inspect
15
15
  import json
16
16
  import os
17
- import re
18
17
  import shutil
19
18
  import sys
20
19
  import typing
@@ -22,7 +21,7 @@ import zipfile
22
21
  import copy
23
22
  import uuid
24
23
  from pathlib import Path
25
- from typing import Any, Dict, List, Literal, Optional
24
+ from typing import Any, Dict, List, Literal, Optional, cast
26
25
 
27
26
  from pathlib import Path
28
27
 
@@ -34,8 +33,6 @@ from omnata_plugin_runtime.omnata_plugin import (
34
33
  UDFDefinition, UDTFDefinition
35
34
  )
36
35
  from omnata_plugin_devkit.snowcli.cli.plugins.snowpark import package_utils
37
- from omnata_plugin_devkit.snowcli.cli.plugins.snowpark import snowpark_shared
38
- from omnata_plugin_devkit.snowcli.cli.plugins.snowpark.models import PypiOption
39
36
  from snowflake.snowpark import Session
40
37
  import importlib.metadata
41
38
 
@@ -67,7 +64,7 @@ class PluginUploader:
67
64
  manifest: PluginManifest,
68
65
  anaconda_packages: List[str],
69
66
  bundled_packages: List[str],
70
- icon_source: str,
67
+ icon_source: Optional[str],
71
68
  plugin_class_name: str,
72
69
  has_custom_validator: bool,
73
70
  plugin_runtime_version: str,
@@ -124,7 +121,7 @@ class PluginUploader:
124
121
  version_comment: str = "",
125
122
  log_level: str = "INFO",
126
123
  udf_directory_override: Optional[str] = None,
127
- ) -> str:
124
+ ) -> Optional[str]:
128
125
  """
129
126
  Creates a stage and uploads the latest plugin artifacts, Omnata runtime etc.
130
127
  If the schema name is not provided, the plugin_id from the manifest will be used.
@@ -180,9 +177,10 @@ class PluginUploader:
180
177
  else:
181
178
  tier_file = Path(os.path.join(plugin_directory, "tier.txt"))
182
179
  if tier_file.exists():
183
- plugin_tier = tier_file.read_text(encoding="utf-8").strip()
184
- if plugin_tier not in ["standard","premium","byo","free"]:
185
- raise ValueError(f"Invalid tier {plugin_tier} in {tier_file}")
180
+ plugin_tier_raw = tier_file.read_text(encoding="utf-8").strip()
181
+ if plugin_tier_raw not in ["standard","premium","byo","free"]:
182
+ raise ValueError(f"Invalid tier {plugin_tier_raw} in {tier_file}")
183
+ plugin_tier = cast(Literal["byo","free","standard","premium"], plugin_tier_raw)
186
184
  print(f"Using plugin tier: {plugin_tier}")
187
185
  license_url_file = Path(os.path.join(plugin_directory, "license_url.txt"))
188
186
  license_url: Optional[str] = (
@@ -214,7 +212,7 @@ class PluginUploader:
214
212
  # do checks first
215
213
 
216
214
  icon_file_name = "icon.svg"
217
- icon_source = None
215
+ icon_source:Optional[str] = None
218
216
  if os.path.exists(os.path.join(plugin_directory, icon_file_name)):
219
217
  print("Using icon from icon.svg")
220
218
  with open(
@@ -246,60 +244,34 @@ class PluginUploader:
246
244
  if os.path.exists("build.zip"):
247
245
  os.remove("build.zip")
248
246
 
249
- print("Creating Snowpark package for Snowflake")
250
- # we allow native libraries to be included in the package, but then check ourselves
251
- snowpark_shared.snowpark_package(
252
- source=Path('.'),
253
- artifact_file=Path('build.zip'),
254
- pypi_download=PypiOption.YES,
255
- check_anaconda_for_pypi_deps=True,
256
- package_native_libraries=PypiOption.YES,
257
- )
258
- with zipfile.ZipFile('build.zip', 'r') as zip_read:
259
- with zipfile.ZipFile('app.zip', 'w') as zip_write:
260
- # Copy each file, skipping those in the specified folder
261
- # some packages are named inconsistently which makes them hard to remove from the artifact
262
- for item in zip_read.infolist():
263
- if not item.filename.startswith('.packages') and \
264
- not item.filename.startswith('udf_direct_imports') and \
265
- not item.filename.startswith('pydantic_core'):
266
- if item.filename.endswith('.so'):
267
- raise ValueError(f"Native library found in package: {item.filename}")
268
- data = zip_read.read(item.filename)
269
- zip_write.writestr(item, data)
247
+ print("Building app.zip from plugin source")
248
+ with zipfile.ZipFile('app.zip', 'w', zipfile.ZIP_DEFLATED) as zf:
249
+ for root, dirs, files in os.walk('.'):
250
+ dirs[:] = [d for d in dirs if not d.startswith('.') and d != '__pycache__' and d != 'udf_direct_imports']
251
+ for fname in files:
252
+ if fname.startswith('.'):
253
+ continue
254
+ if fname.endswith('.so'):
255
+ raise ValueError(f"Native library found in package: {os.path.join(root, fname)}")
256
+ full = os.path.join(root, fname)
257
+ zf.write(full, os.path.relpath(full, '.'))
270
258
  self.session.sql(
271
259
  f"put file://app.zip @{database_name}.{schema_name}.{stage_name} AUTO_COMPRESS=FALSE OVERWRITE=TRUE"
272
260
  ).collect()
273
261
 
274
- if not os.path.exists(".packages"):
275
- raise ValueError(".packages directory not found after packaging")
276
- subfolders = [
277
- f.path
278
- for f in os.scandir(".packages")
279
- if f.is_dir() and os.path.join(".packages","omnata_plugin_runtime-") in f.path
280
- ]
281
- if len(subfolders) != 1:
262
+ requirements_list = package_utils.parse_requirements("requirements.txt")
263
+ all_packages: List[str] = [r.line for r in requirements_list]
264
+
265
+ runtime_reqs = [r for r in requirements_list if r.name == "omnata-plugin-runtime"]
266
+ if len(runtime_reqs) != 1 or len(runtime_reqs[0].specs) == 0:
282
267
  raise ValueError(
283
- "Failed to find omnata-plugin-runtime in downloaded package metadata"
268
+ "requirements.txt must contain a pinned omnata-plugin-runtime entry (e.g. omnata-plugin-runtime==X.Y.Z)"
284
269
  )
285
- subfolder = subfolders[0]
286
- regex_matches = re.search(
287
- r"^\.packages.omnata_plugin_runtime-(.*)\.dist-info$", subfolder
288
- )
289
- if regex_matches is None:
270
+ op, omnata_plugin_runtime_version = runtime_reqs[0].specs[0]
271
+ if op != "==":
290
272
  raise ValueError(
291
- "Failed to parse version of omnata-plugin-runtime package from metadata"
273
+ f"omnata-plugin-runtime must be pinned with '==' (got '{op}{omnata_plugin_runtime_version}')"
292
274
  )
293
- omnata_plugin_runtime_version = regex_matches.group(1)
294
- anaconda_packages = package_utils.parse_requirements("requirements.snowflake.txt")
295
- anaconda_package_names: List[str] = [
296
- r.name
297
- for r in anaconda_packages
298
- ]
299
- other_packages = package_utils.parse_requirements("requirements.other.txt")
300
- other_package_names: List[str] = [
301
- r.name for r in other_packages
302
- ]
303
275
  os.chdir(original_wd)
304
276
  # icon_file_name_full = os.path.abspath(os.path.join(plugin_directory,icon_file_name))
305
277
  # print(f'Loading icon file {icon_file_name_full} into stage')
@@ -310,37 +282,10 @@ class PluginUploader:
310
282
  plugin_fqn: str = f"{manifest.developer_id}__{manifest.plugin_id}".upper()
311
283
 
312
284
  install_script = "setup_script.sql"
313
- default_packages = ["dictdiffer", "jinja2", "requests", "pydantic","snowflake-telemetry-python"]
314
- if len([w for w in anaconda_packages if "snowflake-snowpark-python" in w.name]) == 0:
315
- # if not present at all, pin it to a specific version
316
- anaconda_package_names = anaconda_package_names + ["snowflake-snowpark-python==1.22.1"]
317
- print("snowflake-snowpark-python not present, adding to default packages")
318
- else:
319
- snowpark_package = [w for w in anaconda_packages if "snowflake-snowpark-python" in w.name][0]
320
- if len(snowpark_package.specs) == 0:
321
- print("snowflake-snowpark-python found unpinned, replacing with pinned version")
322
- anaconda_package_names = [
323
- w if w != "snowflake-snowpark-python" else "snowflake-snowpark-python==1.22.1"
324
- for w in anaconda_package_names
325
- ]
326
- else:
327
- print(f"{snowpark_package.name} found already pinned ({snowpark_package.line}), leaving alone")
328
- anaconda_package_names = [
329
- w.name if w.name != "snowflake-snowpark-python" else w.line
330
- for w in anaconda_packages
331
- ]
332
- # remove snowflake-connector-python if it's found its way into the other packages or the anaconda packages
333
- other_package_names = [
334
- w for w in other_package_names if "snowflake-connector-python" not in w
335
- ]
336
- anaconda_package_names = [
337
- w for w in anaconda_package_names if "snowflake-connector-python" not in w
338
- ]
339
285
  has_custom_validator = (
340
286
  plugin_class_instance.outbound_record_validator.__module__ != 'omnata_plugin_runtime.omnata_plugin'
341
287
  )
342
288
  print(f"Has custom validator: {has_custom_validator} ({plugin_class_instance.outbound_record_validator.__module__})")
343
- all_packages = list(set(default_packages + anaconda_package_names))
344
289
  packages_to_include = [
345
290
  f"'{p}'" for p in all_packages
346
291
  ]
@@ -544,7 +489,7 @@ $${}$$;
544
489
  print(f"Found {udf.language} UDF: {udf.name}, consumer facing: {udf.expose_to_consumer}")
545
490
  if udf.language == "python":
546
491
  udf.packages = all_packages
547
- setup_script.write(str(udf))
492
+ setup_script.write(_inject_artifact_repository(str(udf)))
548
493
  if udf.expose_to_consumer is True:
549
494
  setup_script.write(
550
495
  f"grant usage on function UDFS.{function_signature(input=udf,include_name=True,include_params='data_types_only',connection_parameter='leave')} to application role CONSUMER_FUNCTION_CALLER;\n"
@@ -570,7 +515,7 @@ $${}$$;
570
515
  print(f"Found {udtf.language} UDTF: {udtf.name}, consumer facing: {udtf.expose_to_consumer}")
571
516
  if udtf.language == "python":
572
517
  udtf.packages = all_packages
573
- setup_script.write(str(udtf))
518
+ setup_script.write(_inject_artifact_repository(str(udtf)))
574
519
  if udtf.expose_to_consumer is True:
575
520
  setup_script.write(
576
521
  f"grant usage on function UDFS.{function_signature(input=udtf,include_name=True,include_params='data_types_only',connection_parameter='leave')} to application role CONSUMER_FUNCTION_CALLER;\n"
@@ -604,8 +549,8 @@ $${}$$;
604
549
  setup_script.write(
605
550
  self.plugin_info_udf_definition(
606
551
  manifest=manifest,
607
- anaconda_packages=anaconda_package_names,
608
- bundled_packages=other_package_names,
552
+ anaconda_packages=all_packages,
553
+ bundled_packages=[],
609
554
  icon_source=icon_source,
610
555
  plugin_class_name=plugin_class_name,
611
556
  has_custom_validator=has_custom_validator,
@@ -738,8 +683,8 @@ GRANT USAGE ON FUNCTION PLUGIN.TOKEN() TO application role OMNATA_MANAGEMENT;
738
683
  self.session.sql(
739
684
  self.plugin_info_udf_definition(
740
685
  manifest=manifest,
741
- anaconda_packages=anaconda_package_names,
742
- bundled_packages=other_package_names,
686
+ anaconda_packages=all_packages,
687
+ bundled_packages=[],
743
688
  icon_source=icon_source,
744
689
  plugin_class_name=plugin_class_name,
745
690
  has_custom_validator=has_custom_validator,
@@ -755,6 +700,14 @@ GRANT USAGE ON FUNCTION PLUGIN.TOKEN() TO application role OMNATA_MANAGEMENT;
755
700
  return schema_name
756
701
 
757
702
 
703
+ def _inject_artifact_repository(udf_sql: str) -> str:
704
+ return udf_sql.replace(
705
+ "PACKAGES = (",
706
+ "ARTIFACT_REPOSITORY = snowflake.snowpark.pypi_shared_repository\nPACKAGES = (",
707
+ 1,
708
+ )
709
+
710
+
758
711
  def prepare_version_comment(version_comment:str):
759
712
  """
760
713
  The manifest file takes a comment, but since it's in YAML you have to do a bunch of silly work to make it valid and multiline.