dagster-snowflake 0.27.3__tar.gz → 0.27.5__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.

Potentially problematic release.


This version of dagster-snowflake might be problematic. Click here for more details.

Files changed (26) hide show
  1. {dagster_snowflake-0.27.3/dagster_snowflake.egg-info → dagster_snowflake-0.27.5}/PKG-INFO +2 -2
  2. {dagster_snowflake-0.27.3 → dagster_snowflake-0.27.5}/dagster_snowflake/__init__.py +3 -1
  3. dagster_snowflake-0.27.5/dagster_snowflake/components/__init__.py +5 -0
  4. dagster_snowflake-0.27.5/dagster_snowflake/components/sql_component/component.py +59 -0
  5. {dagster_snowflake-0.27.3 → dagster_snowflake-0.27.5}/dagster_snowflake/resources.py +6 -1
  6. dagster_snowflake-0.27.5/dagster_snowflake/version.py +1 -0
  7. {dagster_snowflake-0.27.3 → dagster_snowflake-0.27.5/dagster_snowflake.egg-info}/PKG-INFO +2 -2
  8. {dagster_snowflake-0.27.3 → dagster_snowflake-0.27.5}/dagster_snowflake.egg-info/requires.txt +1 -1
  9. {dagster_snowflake-0.27.3 → dagster_snowflake-0.27.5}/setup.py +1 -1
  10. dagster_snowflake-0.27.3/dagster_snowflake/components/__init__.py +0 -3
  11. dagster_snowflake-0.27.3/dagster_snowflake/components/sql_component/component.py +0 -24
  12. dagster_snowflake-0.27.3/dagster_snowflake/version.py +0 -1
  13. {dagster_snowflake-0.27.3 → dagster_snowflake-0.27.5}/LICENSE +0 -0
  14. {dagster_snowflake-0.27.3 → dagster_snowflake-0.27.5}/MANIFEST.in +0 -0
  15. {dagster_snowflake-0.27.3 → dagster_snowflake-0.27.5}/README.md +0 -0
  16. {dagster_snowflake-0.27.3 → dagster_snowflake-0.27.5}/dagster_snowflake/components/sql_component/__init__.py +0 -0
  17. {dagster_snowflake-0.27.3 → dagster_snowflake-0.27.5}/dagster_snowflake/constants.py +0 -0
  18. {dagster_snowflake-0.27.3 → dagster_snowflake-0.27.5}/dagster_snowflake/ops.py +0 -0
  19. {dagster_snowflake-0.27.3 → dagster_snowflake-0.27.5}/dagster_snowflake/py.typed +0 -0
  20. {dagster_snowflake-0.27.3 → dagster_snowflake-0.27.5}/dagster_snowflake/snowflake_io_manager.py +0 -0
  21. {dagster_snowflake-0.27.3 → dagster_snowflake-0.27.5}/dagster_snowflake.egg-info/SOURCES.txt +0 -0
  22. {dagster_snowflake-0.27.3 → dagster_snowflake-0.27.5}/dagster_snowflake.egg-info/dependency_links.txt +0 -0
  23. {dagster_snowflake-0.27.3 → dagster_snowflake-0.27.5}/dagster_snowflake.egg-info/entry_points.txt +0 -0
  24. {dagster_snowflake-0.27.3 → dagster_snowflake-0.27.5}/dagster_snowflake.egg-info/not-zip-safe +0 -0
  25. {dagster_snowflake-0.27.3 → dagster_snowflake-0.27.5}/dagster_snowflake.egg-info/top_level.txt +0 -0
  26. {dagster_snowflake-0.27.3 → dagster_snowflake-0.27.5}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dagster-snowflake
3
- Version: 0.27.3
3
+ Version: 0.27.5
4
4
  Summary: Package for Snowflake Dagster framework components.
5
5
  Home-page: https://github.com/dagster-io/dagster/tree/master/python_modules/libraries/dagster-snowflake
6
6
  Author: Dagster Labs
@@ -15,7 +15,7 @@ Classifier: License :: OSI Approved :: Apache Software License
15
15
  Classifier: Operating System :: OS Independent
16
16
  Requires-Python: >=3.9,<3.14
17
17
  License-File: LICENSE
18
- Requires-Dist: dagster==1.11.3
18
+ Requires-Dist: dagster==1.11.5
19
19
  Requires-Dist: snowflake-connector-python>=3.4.0
20
20
  Requires-Dist: pyOpenSSL>=22.1.0
21
21
  Provides-Extra: snowflake-sqlalchemy
@@ -1,6 +1,8 @@
1
1
  from dagster_shared.libraries import DagsterLibraryRegistry
2
2
 
3
- from dagster_snowflake.components import SnowflakeSqlComponent as SnowflakeSqlComponent
3
+ from dagster_snowflake.components import (
4
+ SnowflakeConnectionComponent as SnowflakeConnectionComponent,
5
+ )
4
6
  from dagster_snowflake.ops import snowflake_op_for_query as snowflake_op_for_query
5
7
  from dagster_snowflake.resources import (
6
8
  SnowflakeConnection as SnowflakeConnection,
@@ -0,0 +1,5 @@
1
+ from dagster_snowflake.components.sql_component.component import SnowflakeConnectionComponent
2
+
3
+ __all__ = [
4
+ "SnowflakeConnectionComponent",
5
+ ]
@@ -0,0 +1,59 @@
1
+ from functools import cached_property
2
+ from typing import Any, cast
3
+
4
+ import dagster as dg
5
+ from dagster._annotations import preview, public
6
+ from dagster._core.definitions.definitions_class import Definitions
7
+ from dagster.components.core.context import ComponentLoadContext
8
+ from dagster.components.lib.sql_component.sql_client import SQLClient
9
+ from pydantic import BaseModel, create_model
10
+
11
+ from dagster_snowflake.resources import SnowflakeResource
12
+
13
+
14
+ @public
15
+ @preview
16
+ class SnowflakeConnectionComponentBase(dg.Component, dg.Resolvable, dg.Model, SQLClient):
17
+ """A component that represents a Snowflake connection."""
18
+
19
+ @cached_property
20
+ def _snowflake_resource(self) -> SnowflakeResource:
21
+ return SnowflakeResource(
22
+ **{
23
+ (field.alias or field_name): getattr(self, field_name)
24
+ for field_name, field in self.__class__.model_fields.items()
25
+ }
26
+ )
27
+
28
+ def connect_and_execute(self, sql: str) -> None:
29
+ """Connect to the SQL database and execute the SQL query."""
30
+ return self._snowflake_resource.connect_and_execute(sql)
31
+
32
+ def build_defs(self, context: ComponentLoadContext) -> Definitions:
33
+ return Definitions()
34
+
35
+
36
+ def _copy_fields_to_model(
37
+ copy_from: type[BaseModel], copy_to: type[BaseModel], new_model_cls_name: str
38
+ ) -> None:
39
+ """Given two models, creates a copy of the second model with the fields of the first model."""
40
+ field_definitions: dict[str, tuple[type, Any]] = {
41
+ field_name: (cast("type", field.annotation), field)
42
+ for field_name, field in copy_from.model_fields.items()
43
+ }
44
+
45
+ return create_model(
46
+ new_model_cls_name,
47
+ __base__=copy_to,
48
+ __doc__=copy_to.__doc__,
49
+ **field_definitions, # type: ignore
50
+ )
51
+
52
+
53
+ SnowflakeConnectionComponent = public(preview)(
54
+ _copy_fields_to_model(
55
+ copy_from=SnowflakeResource,
56
+ copy_to=SnowflakeConnectionComponentBase,
57
+ new_model_cls_name="SnowflakeConnectionComponent",
58
+ )
59
+ )
@@ -19,6 +19,7 @@ from dagster._annotations import public
19
19
  from dagster._core.definitions.resource_definition import dagster_maintained_resource
20
20
  from dagster._core.storage.event_log.sql_event_log import SqlDbConnection
21
21
  from dagster._utils.cached_method import cached_method
22
+ from dagster.components.lib.sql_component.sql_client import SQLClient
22
23
  from pydantic import Field, model_validator, validator
23
24
 
24
25
  from dagster_snowflake.constants import (
@@ -40,7 +41,7 @@ except ImportError:
40
41
  raise
41
42
 
42
43
 
43
- class SnowflakeResource(ConfigurableResource, IAttachDifferentObjectToOpContext):
44
+ class SnowflakeResource(ConfigurableResource, IAttachDifferentObjectToOpContext, SQLClient):
44
45
  """A resource for connecting to the Snowflake data warehouse.
45
46
 
46
47
  If connector configuration is not set, SnowflakeResource.get_connection() will return a
@@ -577,6 +578,10 @@ class SnowflakeResource(ConfigurableResource, IAttachDifferentObjectToOpContext)
577
578
  snowflake_connection_resource=self,
578
579
  )
579
580
 
581
+ def connect_and_execute(self, sql: str) -> None:
582
+ with self.get_connection() as conn:
583
+ conn.cursor().execute(sql)
584
+
580
585
 
581
586
  class SnowflakeConnection:
582
587
  """A connection to Snowflake that can execute queries. In general this class should not be
@@ -0,0 +1 @@
1
+ __version__ = "0.27.5"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dagster-snowflake
3
- Version: 0.27.3
3
+ Version: 0.27.5
4
4
  Summary: Package for Snowflake Dagster framework components.
5
5
  Home-page: https://github.com/dagster-io/dagster/tree/master/python_modules/libraries/dagster-snowflake
6
6
  Author: Dagster Labs
@@ -15,7 +15,7 @@ Classifier: License :: OSI Approved :: Apache Software License
15
15
  Classifier: Operating System :: OS Independent
16
16
  Requires-Python: >=3.9,<3.14
17
17
  License-File: LICENSE
18
- Requires-Dist: dagster==1.11.3
18
+ Requires-Dist: dagster==1.11.5
19
19
  Requires-Dist: snowflake-connector-python>=3.4.0
20
20
  Requires-Dist: pyOpenSSL>=22.1.0
21
21
  Provides-Extra: snowflake-sqlalchemy
@@ -1,4 +1,4 @@
1
- dagster==1.11.3
1
+ dagster==1.11.5
2
2
  snowflake-connector-python>=3.4.0
3
3
  pyOpenSSL>=22.1.0
4
4
 
@@ -35,7 +35,7 @@ setup(
35
35
  include_package_data=True,
36
36
  python_requires=">=3.9,<3.14",
37
37
  install_requires=[
38
- "dagster==1.11.3",
38
+ "dagster==1.11.5",
39
39
  "snowflake-connector-python>=3.4.0",
40
40
  # Workaround for incorrect pin in the snowflake-connector-python package
41
41
  # See https://github.com/snowflakedb/snowflake-connector-python/issues/2109
@@ -1,3 +0,0 @@
1
- from dagster_snowflake.components.sql_component.component import SnowflakeSqlComponent
2
-
3
- __all__ = ["SnowflakeSqlComponent"]
@@ -1,24 +0,0 @@
1
- from typing import Annotated
2
-
3
- from dagster._core.execution.context.asset_execution_context import AssetExecutionContext
4
- from dagster.components.base.sql_component import TemplatedSqlComponent
5
- from pydantic import Field
6
-
7
- from dagster_snowflake.resources import SnowflakeResource
8
-
9
-
10
- class SnowflakeSqlComponent(TemplatedSqlComponent[SnowflakeResource]):
11
- """A component that executes SQL from a file in Snowflake."""
12
-
13
- resource_key: Annotated[
14
- str, Field(description="The resource key to use for the Snowflake resource.")
15
- ] = "snowflake"
16
-
17
- def execute(self, context: AssetExecutionContext, resource: SnowflakeResource) -> None:
18
- """Execute the SQL content using the Snowflake resource."""
19
- with resource.get_connection() as conn:
20
- conn.cursor().execute(self.sql_content)
21
-
22
- @property
23
- def resource_keys(self) -> set[str]:
24
- return {self.resource_key}
@@ -1 +0,0 @@
1
- __version__ = "0.27.3"