dagster-fivetran 0.27.13__tar.gz → 0.27.14__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.
- {dagster_fivetran-0.27.13/dagster_fivetran.egg-info → dagster_fivetran-0.27.14}/PKG-INFO +3 -3
- {dagster_fivetran-0.27.13 → dagster_fivetran-0.27.14}/dagster_fivetran/components/workspace_component/component.py +65 -30
- dagster_fivetran-0.27.14/dagster_fivetran/version.py +1 -0
- {dagster_fivetran-0.27.13 → dagster_fivetran-0.27.14/dagster_fivetran.egg-info}/PKG-INFO +3 -3
- dagster_fivetran-0.27.14/dagster_fivetran.egg-info/requires.txt +7 -0
- {dagster_fivetran-0.27.13 → dagster_fivetran-0.27.14}/setup.py +2 -2
- dagster_fivetran-0.27.13/dagster_fivetran/version.py +0 -1
- dagster_fivetran-0.27.13/dagster_fivetran.egg-info/requires.txt +0 -7
- {dagster_fivetran-0.27.13 → dagster_fivetran-0.27.14}/LICENSE +0 -0
- {dagster_fivetran-0.27.13 → dagster_fivetran-0.27.14}/MANIFEST.in +0 -0
- {dagster_fivetran-0.27.13 → dagster_fivetran-0.27.14}/README.md +0 -0
- {dagster_fivetran-0.27.13 → dagster_fivetran-0.27.14}/dagster_fivetran/__init__.py +0 -0
- {dagster_fivetran-0.27.13 → dagster_fivetran-0.27.14}/dagster_fivetran/asset_decorator.py +0 -0
- {dagster_fivetran-0.27.13 → dagster_fivetran-0.27.14}/dagster_fivetran/asset_defs.py +0 -0
- {dagster_fivetran-0.27.13 → dagster_fivetran-0.27.14}/dagster_fivetran/cli.py +0 -0
- {dagster_fivetran-0.27.13 → dagster_fivetran-0.27.14}/dagster_fivetran/components/__init__.py +0 -0
- {dagster_fivetran-0.27.13 → dagster_fivetran-0.27.14}/dagster_fivetran/components/workspace_component/__init__.py +0 -0
- {dagster_fivetran-0.27.13 → dagster_fivetran-0.27.14}/dagster_fivetran/components/workspace_component/scaffolder.py +0 -0
- {dagster_fivetran-0.27.13 → dagster_fivetran-0.27.14}/dagster_fivetran/constants.py +0 -0
- {dagster_fivetran-0.27.13 → dagster_fivetran-0.27.14}/dagster_fivetran/fivetran_event_iterator.py +0 -0
- {dagster_fivetran-0.27.13 → dagster_fivetran-0.27.14}/dagster_fivetran/managed/__init__.py +0 -0
- {dagster_fivetran-0.27.13 → dagster_fivetran-0.27.14}/dagster_fivetran/managed/reconciliation.py +0 -0
- {dagster_fivetran-0.27.13 → dagster_fivetran-0.27.14}/dagster_fivetran/managed/types.py +0 -0
- {dagster_fivetran-0.27.13 → dagster_fivetran-0.27.14}/dagster_fivetran/ops.py +0 -0
- {dagster_fivetran-0.27.13 → dagster_fivetran-0.27.14}/dagster_fivetran/py.typed +0 -0
- {dagster_fivetran-0.27.13 → dagster_fivetran-0.27.14}/dagster_fivetran/resources.py +0 -0
- {dagster_fivetran-0.27.13 → dagster_fivetran-0.27.14}/dagster_fivetran/translator.py +0 -0
- {dagster_fivetran-0.27.13 → dagster_fivetran-0.27.14}/dagster_fivetran/types.py +0 -0
- {dagster_fivetran-0.27.13 → dagster_fivetran-0.27.14}/dagster_fivetran/utils.py +0 -0
- {dagster_fivetran-0.27.13 → dagster_fivetran-0.27.14}/dagster_fivetran.egg-info/SOURCES.txt +0 -0
- {dagster_fivetran-0.27.13 → dagster_fivetran-0.27.14}/dagster_fivetran.egg-info/dependency_links.txt +0 -0
- {dagster_fivetran-0.27.13 → dagster_fivetran-0.27.14}/dagster_fivetran.egg-info/entry_points.txt +0 -0
- {dagster_fivetran-0.27.13 → dagster_fivetran-0.27.14}/dagster_fivetran.egg-info/not-zip-safe +0 -0
- {dagster_fivetran-0.27.13 → dagster_fivetran-0.27.14}/dagster_fivetran.egg-info/top_level.txt +0 -0
- {dagster_fivetran-0.27.13 → dagster_fivetran-0.27.14}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dagster-fivetran
|
|
3
|
-
Version: 0.27.
|
|
3
|
+
Version: 0.27.14
|
|
4
4
|
Summary: Package for integrating Fivetran with Dagster.
|
|
5
5
|
Home-page: https://github.com/dagster-io/dagster/tree/master/python_modules/libraries/dagster-fivetran
|
|
6
6
|
Author: Dagster Labs
|
|
@@ -15,9 +15,9 @@ 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.14
|
|
19
19
|
Provides-Extra: managed
|
|
20
|
-
Requires-Dist: dagster-managed-elements==0.27.
|
|
20
|
+
Requires-Dist: dagster-managed-elements==0.27.14; extra == "managed"
|
|
21
21
|
Provides-Extra: test
|
|
22
22
|
Requires-Dist: pytest-order; extra == "test"
|
|
23
23
|
Dynamic: author
|
|
@@ -1,16 +1,21 @@
|
|
|
1
|
-
from collections.abc import Sequence
|
|
1
|
+
from collections.abc import Iterable, Sequence
|
|
2
2
|
from functools import cached_property
|
|
3
3
|
from typing import Annotated, Callable, Optional, Union
|
|
4
4
|
|
|
5
5
|
import dagster as dg
|
|
6
6
|
import pydantic
|
|
7
7
|
from dagster._annotations import public
|
|
8
|
-
from dagster.
|
|
8
|
+
from dagster._utils.names import clean_name
|
|
9
9
|
from dagster.components.resolved.base import resolve_fields
|
|
10
|
-
from dagster.components.utils.translation import
|
|
10
|
+
from dagster.components.utils.translation import (
|
|
11
|
+
ComponentTranslator,
|
|
12
|
+
TranslationFn,
|
|
13
|
+
TranslationFnResolver,
|
|
14
|
+
create_component_translator_cls,
|
|
15
|
+
)
|
|
11
16
|
from dagster_shared import check
|
|
12
17
|
|
|
13
|
-
from dagster_fivetran.
|
|
18
|
+
from dagster_fivetran.asset_decorator import fivetran_assets
|
|
14
19
|
from dagster_fivetran.components.workspace_component.scaffolder import (
|
|
15
20
|
FivetranAccountComponentScaffolder,
|
|
16
21
|
)
|
|
@@ -19,20 +24,10 @@ from dagster_fivetran.translator import (
|
|
|
19
24
|
DagsterFivetranTranslator,
|
|
20
25
|
FivetranConnector,
|
|
21
26
|
FivetranConnectorTableProps,
|
|
27
|
+
FivetranMetadataSet,
|
|
22
28
|
)
|
|
23
29
|
|
|
24
30
|
|
|
25
|
-
class ProxyDagsterFivetranTranslator(DagsterFivetranTranslator):
|
|
26
|
-
def __init__(self, fn: TranslationFn[FivetranConnectorTableProps]):
|
|
27
|
-
self.fn = fn
|
|
28
|
-
|
|
29
|
-
def get_asset_spec(self, props: FivetranConnectorTableProps) -> dg.AssetSpec:
|
|
30
|
-
base_asset_spec = super().get_asset_spec(props)
|
|
31
|
-
spec = self.fn(base_asset_spec, props)
|
|
32
|
-
|
|
33
|
-
return spec
|
|
34
|
-
|
|
35
|
-
|
|
36
31
|
class FivetranWorkspaceModel(pydantic.BaseModel):
|
|
37
32
|
account_id: str = pydantic.Field(..., description="The Fivetran account ID.")
|
|
38
33
|
api_key: str = pydantic.Field(
|
|
@@ -102,7 +97,7 @@ class FivetranAccountComponent(dg.Component, dg.Model, dg.Resolvable):
|
|
|
102
97
|
TranslationFnResolver(template_vars_for_translation_fn=lambda data: {"props": data}),
|
|
103
98
|
]
|
|
104
99
|
] = pydantic.Field(
|
|
105
|
-
None,
|
|
100
|
+
default=None,
|
|
106
101
|
description="Function used to translate Fivetran connector table properties into Dagster asset specs.",
|
|
107
102
|
)
|
|
108
103
|
|
|
@@ -112,23 +107,63 @@ class FivetranAccountComponent(dg.Component, dg.Model, dg.Resolvable):
|
|
|
112
107
|
|
|
113
108
|
@cached_property
|
|
114
109
|
def translator(self) -> DagsterFivetranTranslator:
|
|
115
|
-
|
|
116
|
-
|
|
110
|
+
return FivetranComponentTranslator(self)
|
|
111
|
+
|
|
112
|
+
@cached_property
|
|
113
|
+
def _base_translator(self) -> DagsterFivetranTranslator:
|
|
117
114
|
return DagsterFivetranTranslator()
|
|
118
115
|
|
|
116
|
+
def get_asset_spec(self, props: FivetranConnectorTableProps) -> dg.AssetSpec:
|
|
117
|
+
return self._base_translator.get_asset_spec(props)
|
|
118
|
+
|
|
119
|
+
def execute(
|
|
120
|
+
self, context: dg.AssetExecutionContext, fivetran: FivetranWorkspace
|
|
121
|
+
) -> Iterable[Union[dg.AssetMaterialization, dg.MaterializeResult]]:
|
|
122
|
+
yield from fivetran.sync_and_poll(context=context)
|
|
123
|
+
|
|
119
124
|
def build_defs(self, context: dg.ComponentLoadContext) -> dg.Definitions:
|
|
120
|
-
|
|
121
|
-
|
|
125
|
+
connector_selector_fn = self.connector_selector or (lambda connector: bool(connector))
|
|
126
|
+
all_asset_specs = self.workspace_resource.load_asset_specs(
|
|
122
127
|
dagster_fivetran_translator=self.translator,
|
|
123
|
-
connector_selector_fn=
|
|
128
|
+
connector_selector_fn=connector_selector_fn,
|
|
124
129
|
)
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
}
|
|
130
|
+
|
|
131
|
+
connectors = {
|
|
132
|
+
(
|
|
133
|
+
check.not_none(FivetranMetadataSet.extract(spec.metadata).connector_id),
|
|
134
|
+
check.not_none(FivetranMetadataSet.extract(spec.metadata).connector_name),
|
|
131
135
|
)
|
|
132
|
-
for
|
|
133
|
-
|
|
134
|
-
|
|
136
|
+
for spec in all_asset_specs
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
assets = []
|
|
140
|
+
for connector_id, connector_name in connectors:
|
|
141
|
+
|
|
142
|
+
@fivetran_assets(
|
|
143
|
+
connector_id=connector_id,
|
|
144
|
+
workspace=self.workspace_resource,
|
|
145
|
+
name=f"fivetran_{clean_name(connector_name)}",
|
|
146
|
+
dagster_fivetran_translator=self.translator,
|
|
147
|
+
connector_selector_fn=connector_selector_fn,
|
|
148
|
+
)
|
|
149
|
+
def _asset(context: dg.AssetExecutionContext):
|
|
150
|
+
yield from self.execute(context=context, fivetran=self.workspace_resource)
|
|
151
|
+
|
|
152
|
+
assets.append(_asset)
|
|
153
|
+
|
|
154
|
+
return dg.Definitions(assets=assets)
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
class FivetranComponentTranslator(
|
|
158
|
+
create_component_translator_cls(FivetranAccountComponent, DagsterFivetranTranslator),
|
|
159
|
+
ComponentTranslator[FivetranAccountComponent],
|
|
160
|
+
):
|
|
161
|
+
def __init__(self, component: "FivetranAccountComponent"):
|
|
162
|
+
self._component = component
|
|
163
|
+
|
|
164
|
+
def get_asset_spec(self, props: FivetranConnectorTableProps) -> dg.AssetSpec:
|
|
165
|
+
base_asset_spec = super().get_asset_spec(props)
|
|
166
|
+
if self.component.translation is None:
|
|
167
|
+
return base_asset_spec
|
|
168
|
+
else:
|
|
169
|
+
return self.component.translation(base_asset_spec, props)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.27.14"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dagster-fivetran
|
|
3
|
-
Version: 0.27.
|
|
3
|
+
Version: 0.27.14
|
|
4
4
|
Summary: Package for integrating Fivetran with Dagster.
|
|
5
5
|
Home-page: https://github.com/dagster-io/dagster/tree/master/python_modules/libraries/dagster-fivetran
|
|
6
6
|
Author: Dagster Labs
|
|
@@ -15,9 +15,9 @@ 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.14
|
|
19
19
|
Provides-Extra: managed
|
|
20
|
-
Requires-Dist: dagster-managed-elements==0.27.
|
|
20
|
+
Requires-Dist: dagster-managed-elements==0.27.14; extra == "managed"
|
|
21
21
|
Provides-Extra: test
|
|
22
22
|
Requires-Dist: pytest-order; extra == "test"
|
|
23
23
|
Dynamic: author
|
|
@@ -34,7 +34,7 @@ setup(
|
|
|
34
34
|
packages=find_packages(exclude=["dagster_fivetran_tests*"]),
|
|
35
35
|
include_package_data=True,
|
|
36
36
|
python_requires=">=3.9,<3.14",
|
|
37
|
-
install_requires=["dagster==1.11.
|
|
37
|
+
install_requires=["dagster==1.11.14"],
|
|
38
38
|
zip_safe=False,
|
|
39
39
|
entry_points={
|
|
40
40
|
"console_scripts": [
|
|
@@ -46,7 +46,7 @@ setup(
|
|
|
46
46
|
},
|
|
47
47
|
extras_require={
|
|
48
48
|
"managed": [
|
|
49
|
-
"dagster-managed-elements==0.27.
|
|
49
|
+
"dagster-managed-elements==0.27.14",
|
|
50
50
|
],
|
|
51
51
|
"test": [
|
|
52
52
|
"pytest-order",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.27.13"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dagster_fivetran-0.27.13 → dagster_fivetran-0.27.14}/dagster_fivetran/components/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dagster_fivetran-0.27.13 → dagster_fivetran-0.27.14}/dagster_fivetran/fivetran_event_iterator.py
RENAMED
|
File without changes
|
|
File without changes
|
{dagster_fivetran-0.27.13 → dagster_fivetran-0.27.14}/dagster_fivetran/managed/reconciliation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dagster_fivetran-0.27.13 → dagster_fivetran-0.27.14}/dagster_fivetran.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{dagster_fivetran-0.27.13 → dagster_fivetran-0.27.14}/dagster_fivetran.egg-info/entry_points.txt
RENAMED
|
File without changes
|
{dagster_fivetran-0.27.13 → dagster_fivetran-0.27.14}/dagster_fivetran.egg-info/not-zip-safe
RENAMED
|
File without changes
|
{dagster_fivetran-0.27.13 → dagster_fivetran-0.27.14}/dagster_fivetran.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|