dagster-airbyte 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.

Potentially problematic release.


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

Files changed (36) hide show
  1. {dagster_airbyte-0.27.13/dagster_airbyte.egg-info → dagster_airbyte-0.27.14}/PKG-INFO +3 -3
  2. {dagster_airbyte-0.27.13 → dagster_airbyte-0.27.14}/dagster_airbyte/components/workspace_component/component.py +66 -31
  3. dagster_airbyte-0.27.14/dagster_airbyte/version.py +1 -0
  4. {dagster_airbyte-0.27.13 → dagster_airbyte-0.27.14/dagster_airbyte.egg-info}/PKG-INFO +3 -3
  5. dagster_airbyte-0.27.14/dagster_airbyte.egg-info/requires.txt +9 -0
  6. {dagster_airbyte-0.27.13 → dagster_airbyte-0.27.14}/setup.py +2 -2
  7. dagster_airbyte-0.27.13/dagster_airbyte/version.py +0 -1
  8. dagster_airbyte-0.27.13/dagster_airbyte.egg-info/requires.txt +0 -9
  9. {dagster_airbyte-0.27.13 → dagster_airbyte-0.27.14}/LICENSE +0 -0
  10. {dagster_airbyte-0.27.13 → dagster_airbyte-0.27.14}/MANIFEST.in +0 -0
  11. {dagster_airbyte-0.27.13 → dagster_airbyte-0.27.14}/README.md +0 -0
  12. {dagster_airbyte-0.27.13 → dagster_airbyte-0.27.14}/dagster_airbyte/__init__.py +0 -0
  13. {dagster_airbyte-0.27.13 → dagster_airbyte-0.27.14}/dagster_airbyte/asset_decorator.py +0 -0
  14. {dagster_airbyte-0.27.13 → dagster_airbyte-0.27.14}/dagster_airbyte/asset_defs.py +0 -0
  15. {dagster_airbyte-0.27.13 → dagster_airbyte-0.27.14}/dagster_airbyte/cli.py +0 -0
  16. {dagster_airbyte-0.27.13 → dagster_airbyte-0.27.14}/dagster_airbyte/components/__init__.py +0 -0
  17. {dagster_airbyte-0.27.13 → dagster_airbyte-0.27.14}/dagster_airbyte/components/workspace_component/__init__.py +0 -0
  18. {dagster_airbyte-0.27.13 → dagster_airbyte-0.27.14}/dagster_airbyte/components/workspace_component/scaffolder.py +0 -0
  19. {dagster_airbyte-0.27.13 → dagster_airbyte-0.27.14}/dagster_airbyte/managed/__init__.py +0 -0
  20. {dagster_airbyte-0.27.13 → dagster_airbyte-0.27.14}/dagster_airbyte/managed/generated/__init__.py +0 -0
  21. {dagster_airbyte-0.27.13 → dagster_airbyte-0.27.14}/dagster_airbyte/managed/generated/destinations.py +0 -0
  22. {dagster_airbyte-0.27.13 → dagster_airbyte-0.27.14}/dagster_airbyte/managed/generated/sources.py +0 -0
  23. {dagster_airbyte-0.27.13 → dagster_airbyte-0.27.14}/dagster_airbyte/managed/reconciliation.py +0 -0
  24. {dagster_airbyte-0.27.13 → dagster_airbyte-0.27.14}/dagster_airbyte/managed/types.py +0 -0
  25. {dagster_airbyte-0.27.13 → dagster_airbyte-0.27.14}/dagster_airbyte/ops.py +0 -0
  26. {dagster_airbyte-0.27.13 → dagster_airbyte-0.27.14}/dagster_airbyte/py.typed +0 -0
  27. {dagster_airbyte-0.27.13 → dagster_airbyte-0.27.14}/dagster_airbyte/resources.py +0 -0
  28. {dagster_airbyte-0.27.13 → dagster_airbyte-0.27.14}/dagster_airbyte/translator.py +0 -0
  29. {dagster_airbyte-0.27.13 → dagster_airbyte-0.27.14}/dagster_airbyte/types.py +0 -0
  30. {dagster_airbyte-0.27.13 → dagster_airbyte-0.27.14}/dagster_airbyte/utils.py +0 -0
  31. {dagster_airbyte-0.27.13 → dagster_airbyte-0.27.14}/dagster_airbyte.egg-info/SOURCES.txt +0 -0
  32. {dagster_airbyte-0.27.13 → dagster_airbyte-0.27.14}/dagster_airbyte.egg-info/dependency_links.txt +0 -0
  33. {dagster_airbyte-0.27.13 → dagster_airbyte-0.27.14}/dagster_airbyte.egg-info/entry_points.txt +0 -0
  34. {dagster_airbyte-0.27.13 → dagster_airbyte-0.27.14}/dagster_airbyte.egg-info/not-zip-safe +0 -0
  35. {dagster_airbyte-0.27.13 → dagster_airbyte-0.27.14}/dagster_airbyte.egg-info/top_level.txt +0 -0
  36. {dagster_airbyte-0.27.13 → dagster_airbyte-0.27.14}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dagster-airbyte
3
- Version: 0.27.13
3
+ Version: 0.27.14
4
4
  Summary: Package for integrating Airbyte with Dagster.
5
5
  Home-page: https://github.com/dagster-io/dagster/tree/master/python_modules/libraries/dagster-airbyte
6
6
  Author: Dagster Labs
@@ -15,13 +15,13 @@ 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.13
18
+ Requires-Dist: dagster==1.11.14
19
19
  Requires-Dist: requests
20
20
  Provides-Extra: test
21
21
  Requires-Dist: requests-mock; extra == "test"
22
22
  Requires-Dist: flaky; extra == "test"
23
23
  Provides-Extra: managed
24
- Requires-Dist: dagster-managed-elements==0.27.13; extra == "managed"
24
+ Requires-Dist: dagster-managed-elements==0.27.14; extra == "managed"
25
25
  Dynamic: author
26
26
  Dynamic: author-email
27
27
  Dynamic: classifier
@@ -1,38 +1,33 @@
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 superseded
8
- from dagster._core.definitions.job_definition import default_job_io_manager
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 TranslationFn, TranslationFnResolver
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_airbyte.asset_defs import build_airbyte_assets_definitions
18
+ from dagster_airbyte.asset_decorator import airbyte_assets
14
19
  from dagster_airbyte.components.workspace_component.scaffolder import (
15
20
  AirbyteWorkspaceComponentScaffolder,
16
21
  )
17
- from dagster_airbyte.resources import AirbyteCloudWorkspace, AirbyteWorkspace
22
+ from dagster_airbyte.resources import AirbyteCloudWorkspace, AirbyteWorkspace, BaseAirbyteWorkspace
18
23
  from dagster_airbyte.translator import (
19
24
  AirbyteConnection,
20
25
  AirbyteConnectionTableProps,
26
+ AirbyteMetadataSet,
21
27
  DagsterAirbyteTranslator,
22
28
  )
23
29
 
24
30
 
25
- class ProxyDagsterAirbyteTranslator(DagsterAirbyteTranslator):
26
- def __init__(self, fn: TranslationFn[AirbyteConnectionTableProps]):
27
- self.fn = fn
28
-
29
- def get_asset_spec(self, props: AirbyteConnectionTableProps) -> 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 BaseAirbyteWorkspaceModel(dg.Model, dg.Resolvable):
37
32
  request_max_retries: Annotated[
38
33
  int,
@@ -197,34 +192,74 @@ class AirbyteWorkspaceComponent(dg.Component, dg.Model, dg.Resolvable):
197
192
  TranslationFnResolver(template_vars_for_translation_fn=lambda data: {"props": data}),
198
193
  ]
199
194
  ] = pydantic.Field(
200
- None,
195
+ default=None,
201
196
  description="Function used to translate Airbyte connection table properties into Dagster asset specs.",
202
197
  )
203
198
 
204
199
  @cached_property
205
200
  def translator(self) -> DagsterAirbyteTranslator:
206
- if self.translation:
207
- return ProxyDagsterAirbyteTranslator(self.translation)
201
+ return AirbyteComponentTranslator(self)
202
+
203
+ @cached_property
204
+ def _base_translator(self) -> DagsterAirbyteTranslator:
208
205
  return DagsterAirbyteTranslator()
209
206
 
207
+ def get_asset_spec(self, props: AirbyteConnectionTableProps) -> dg.AssetSpec:
208
+ return self._base_translator.get_asset_spec(props)
209
+
210
+ def execute(
211
+ self, context: dg.AssetExecutionContext, airbyte: BaseAirbyteWorkspace
212
+ ) -> Iterable[Union[dg.AssetMaterialization, dg.MaterializeResult]]:
213
+ yield from airbyte.sync_and_poll(context=context)
214
+
210
215
  def build_defs(self, context: dg.ComponentLoadContext) -> dg.Definitions:
211
- airbyte_assets = build_airbyte_assets_definitions(
212
- workspace=self.workspace,
216
+ connection_selector_fn = self.connection_selector or (lambda connection: True)
217
+
218
+ all_asset_specs = self.workspace.load_asset_specs(
213
219
  dagster_airbyte_translator=self.translator,
214
- connection_selector_fn=self.connection_selector,
220
+ connection_selector_fn=connection_selector_fn,
215
221
  )
216
- assets_with_resource = [
217
- airbyte_asset.with_resources(
218
- {
219
- "airbyte": self.workspace.get_resource_definition(),
220
- "io_manager": default_job_io_manager,
221
- }
222
+
223
+ connections = {
224
+ (
225
+ check.not_none(AirbyteMetadataSet.extract(spec.metadata).connection_id),
226
+ check.not_none(AirbyteMetadataSet.extract(spec.metadata).connection_name),
222
227
  )
223
- for airbyte_asset in airbyte_assets
224
- ]
225
- return dg.Definitions(assets=assets_with_resource)
228
+ for spec in all_asset_specs
229
+ }
230
+
231
+ assets = []
232
+ for connection_id, connection_name in connections:
233
+
234
+ @airbyte_assets(
235
+ connection_id=connection_id,
236
+ workspace=self.workspace,
237
+ name=f"airbyte_{clean_name(connection_name)}",
238
+ dagster_airbyte_translator=self.translator,
239
+ )
240
+ def _asset_fn(context: dg.AssetExecutionContext):
241
+ yield from self.execute(context=context, airbyte=self.workspace)
242
+
243
+ assets.append(_asset_fn)
244
+
245
+ return dg.Definitions(assets=assets)
226
246
 
227
247
 
228
248
  # Subclassing to create the alias to be able to use the superseded decorator.
229
249
  @superseded(additional_warn_text="Superseded. Use AirbyteWorkspaceComponent instead.")
230
250
  class AirbyteCloudWorkspaceComponent(AirbyteWorkspaceComponent): ...
251
+
252
+
253
+ class AirbyteComponentTranslator(
254
+ create_component_translator_cls(AirbyteWorkspaceComponent, DagsterAirbyteTranslator),
255
+ ComponentTranslator[AirbyteWorkspaceComponent],
256
+ ):
257
+ def __init__(self, component: AirbyteWorkspaceComponent):
258
+ self._component = component
259
+
260
+ def get_asset_spec(self, props: AirbyteConnectionTableProps) -> dg.AssetSpec:
261
+ base_asset_spec = super().get_asset_spec(props)
262
+ if self.component.translation is None:
263
+ return base_asset_spec
264
+ else:
265
+ 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-airbyte
3
- Version: 0.27.13
3
+ Version: 0.27.14
4
4
  Summary: Package for integrating Airbyte with Dagster.
5
5
  Home-page: https://github.com/dagster-io/dagster/tree/master/python_modules/libraries/dagster-airbyte
6
6
  Author: Dagster Labs
@@ -15,13 +15,13 @@ 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.13
18
+ Requires-Dist: dagster==1.11.14
19
19
  Requires-Dist: requests
20
20
  Provides-Extra: test
21
21
  Requires-Dist: requests-mock; extra == "test"
22
22
  Requires-Dist: flaky; extra == "test"
23
23
  Provides-Extra: managed
24
- Requires-Dist: dagster-managed-elements==0.27.13; extra == "managed"
24
+ Requires-Dist: dagster-managed-elements==0.27.14; extra == "managed"
25
25
  Dynamic: author
26
26
  Dynamic: author-email
27
27
  Dynamic: classifier
@@ -0,0 +1,9 @@
1
+ dagster==1.11.14
2
+ requests
3
+
4
+ [managed]
5
+ dagster-managed-elements==0.27.14
6
+
7
+ [test]
8
+ requests-mock
9
+ flaky
@@ -37,7 +37,7 @@ setup(
37
37
  include_package_data=True,
38
38
  python_requires=">=3.9,<3.14",
39
39
  install_requires=[
40
- "dagster==1.11.13",
40
+ "dagster==1.11.14",
41
41
  "requests",
42
42
  ],
43
43
  zip_safe=False,
@@ -55,7 +55,7 @@ setup(
55
55
  "flaky",
56
56
  ],
57
57
  "managed": [
58
- "dagster-managed-elements==0.27.13",
58
+ "dagster-managed-elements==0.27.14",
59
59
  ],
60
60
  },
61
61
  )
@@ -1 +0,0 @@
1
- __version__ = "0.27.13"
@@ -1,9 +0,0 @@
1
- dagster==1.11.13
2
- requests
3
-
4
- [managed]
5
- dagster-managed-elements==0.27.13
6
-
7
- [test]
8
- requests-mock
9
- flaky