dagster-snowflake 0.27.3__tar.gz → 0.27.4__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.
- {dagster_snowflake-0.27.3/dagster_snowflake.egg-info → dagster_snowflake-0.27.4}/PKG-INFO +2 -2
- {dagster_snowflake-0.27.3 → dagster_snowflake-0.27.4}/dagster_snowflake/__init__.py +3 -1
- dagster_snowflake-0.27.4/dagster_snowflake/components/__init__.py +5 -0
- dagster_snowflake-0.27.4/dagster_snowflake/components/sql_component/component.py +59 -0
- {dagster_snowflake-0.27.3 → dagster_snowflake-0.27.4}/dagster_snowflake/resources.py +6 -1
- dagster_snowflake-0.27.4/dagster_snowflake/version.py +1 -0
- {dagster_snowflake-0.27.3 → dagster_snowflake-0.27.4/dagster_snowflake.egg-info}/PKG-INFO +2 -2
- {dagster_snowflake-0.27.3 → dagster_snowflake-0.27.4}/dagster_snowflake.egg-info/requires.txt +1 -1
- {dagster_snowflake-0.27.3 → dagster_snowflake-0.27.4}/setup.py +1 -1
- dagster_snowflake-0.27.3/dagster_snowflake/components/__init__.py +0 -3
- dagster_snowflake-0.27.3/dagster_snowflake/components/sql_component/component.py +0 -24
- dagster_snowflake-0.27.3/dagster_snowflake/version.py +0 -1
- {dagster_snowflake-0.27.3 → dagster_snowflake-0.27.4}/LICENSE +0 -0
- {dagster_snowflake-0.27.3 → dagster_snowflake-0.27.4}/MANIFEST.in +0 -0
- {dagster_snowflake-0.27.3 → dagster_snowflake-0.27.4}/README.md +0 -0
- {dagster_snowflake-0.27.3 → dagster_snowflake-0.27.4}/dagster_snowflake/components/sql_component/__init__.py +0 -0
- {dagster_snowflake-0.27.3 → dagster_snowflake-0.27.4}/dagster_snowflake/constants.py +0 -0
- {dagster_snowflake-0.27.3 → dagster_snowflake-0.27.4}/dagster_snowflake/ops.py +0 -0
- {dagster_snowflake-0.27.3 → dagster_snowflake-0.27.4}/dagster_snowflake/py.typed +0 -0
- {dagster_snowflake-0.27.3 → dagster_snowflake-0.27.4}/dagster_snowflake/snowflake_io_manager.py +0 -0
- {dagster_snowflake-0.27.3 → dagster_snowflake-0.27.4}/dagster_snowflake.egg-info/SOURCES.txt +0 -0
- {dagster_snowflake-0.27.3 → dagster_snowflake-0.27.4}/dagster_snowflake.egg-info/dependency_links.txt +0 -0
- {dagster_snowflake-0.27.3 → dagster_snowflake-0.27.4}/dagster_snowflake.egg-info/entry_points.txt +0 -0
- {dagster_snowflake-0.27.3 → dagster_snowflake-0.27.4}/dagster_snowflake.egg-info/not-zip-safe +0 -0
- {dagster_snowflake-0.27.3 → dagster_snowflake-0.27.4}/dagster_snowflake.egg-info/top_level.txt +0 -0
- {dagster_snowflake-0.27.3 → dagster_snowflake-0.27.4}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dagster-snowflake
|
|
3
|
-
Version: 0.27.
|
|
3
|
+
Version: 0.27.4
|
|
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.
|
|
18
|
+
Requires-Dist: dagster==1.11.4
|
|
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
|
|
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,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.4"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dagster-snowflake
|
|
3
|
-
Version: 0.27.
|
|
3
|
+
Version: 0.27.4
|
|
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.
|
|
18
|
+
Requires-Dist: dagster==1.11.4
|
|
19
19
|
Requires-Dist: snowflake-connector-python>=3.4.0
|
|
20
20
|
Requires-Dist: pyOpenSSL>=22.1.0
|
|
21
21
|
Provides-Extra: snowflake-sqlalchemy
|
|
@@ -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.
|
|
38
|
+
"dagster==1.11.4",
|
|
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,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"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dagster_snowflake-0.27.3 → dagster_snowflake-0.27.4}/dagster_snowflake/snowflake_io_manager.py
RENAMED
|
File without changes
|
{dagster_snowflake-0.27.3 → dagster_snowflake-0.27.4}/dagster_snowflake.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{dagster_snowflake-0.27.3 → dagster_snowflake-0.27.4}/dagster_snowflake.egg-info/entry_points.txt
RENAMED
|
File without changes
|
{dagster_snowflake-0.27.3 → dagster_snowflake-0.27.4}/dagster_snowflake.egg-info/not-zip-safe
RENAMED
|
File without changes
|
{dagster_snowflake-0.27.3 → dagster_snowflake-0.27.4}/dagster_snowflake.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|