9
9
from dataclasses import dataclass
10
10
from enum import Enum
11
11
from pathlib import Path
12
- from typing import (
13
- AbstractSet ,
14
- Any ,
15
- Callable ,
16
- Dict ,
17
- Iterator ,
18
- List ,
19
- Mapping ,
20
- Optional ,
21
- Sequence ,
22
- Type ,
23
- Union ,
24
- )
12
+ from typing import AbstractSet , Any , Dict , Iterator , List , Mapping , Optional , Sequence , Type , Union
25
13
26
14
import aiohttp
27
15
import dagster ._check as check
38
26
from dagster ._serdes .serdes import deserialize_value
39
27
from dagster ._utils .cached_method import cached_method
40
28
from dagster ._utils .log import get_dagster_logger
29
+ from dagster ._utils .warnings import deprecation_warning
41
30
from pydantic import Field , PrivateAttr
42
31
from sqlglot import exp , parse_one
43
32
@@ -721,7 +710,9 @@ def build_defs(
721
710
@experimental
722
711
def load_sigma_asset_specs (
723
712
organization : SigmaOrganization ,
724
- dagster_sigma_translator : Type [DagsterSigmaTranslator ] = DagsterSigmaTranslator ,
713
+ dagster_sigma_translator : Optional [
714
+ Union [DagsterSigmaTranslator , Type [DagsterSigmaTranslator ]]
715
+ ] = None ,
725
716
sigma_filter : Optional [SigmaFilter ] = None ,
726
717
fetch_column_data : bool = True ,
727
718
fetch_lineage_data : bool = True ,
@@ -731,8 +722,9 @@ def load_sigma_asset_specs(
731
722
732
723
Args:
733
724
organization (SigmaOrganization): The Sigma organization to fetch assets from.
734
- dagster_sigma_translator (Type[DagsterSigmaTranslator]): The translator to use
735
- to convert Sigma content into AssetSpecs. Defaults to DagsterSigmaTranslator.
725
+ dagster_sigma_translator (Optional[Union[DagsterSigmaTranslator, Type[DagsterSigmaTranslatorr]]]):
726
+ The translator to use to convert Sigma content into :py:class:`dagster.AssetSpec`.
727
+ Defaults to :py:class:`DagsterSigmaTranslator`.
736
728
sigma_filter (Optional[SigmaFilter]): Filters the set of Sigma objects to fetch.
737
729
fetch_column_data (bool): Whether to fetch column data for datasets, which can be slow.
738
730
fetch_lineage_data (bool): Whether to fetch any lineage data for workbooks and datasets.
@@ -742,6 +734,16 @@ def load_sigma_asset_specs(
742
734
Returns:
743
735
List[AssetSpec]: The set of assets representing the Sigma content in the organization.
744
736
"""
737
+ if isinstance (dagster_sigma_translator , type ):
738
+ deprecation_warning (
739
+ subject = "Support of `dagster_sigma_translator` as a Type[DagsterSigmaTranslator]" ,
740
+ breaking_version = "1.10" ,
741
+ additional_warn_text = (
742
+ "Pass an instance of DagsterSigmaTranslator or subclass to `dagster_sigma_translator` instead."
743
+ ),
744
+ )
745
+ dagster_sigma_translator = dagster_sigma_translator ()
746
+
745
747
snapshot = None
746
748
if snapshot_path and not os .getenv (SNAPSHOT_ENV_VAR_NAME ):
747
749
snapshot = deserialize_value (Path (snapshot_path ).read_text (), RepositoryLoadData )
@@ -750,7 +752,7 @@ def load_sigma_asset_specs(
750
752
return check .is_list (
751
753
SigmaOrganizationDefsLoader (
752
754
organization = initialized_organization ,
753
- translator_cls = dagster_sigma_translator ,
755
+ translator = dagster_sigma_translator or DagsterSigmaTranslator () ,
754
756
sigma_filter = sigma_filter ,
755
757
fetch_column_data = fetch_column_data ,
756
758
fetch_lineage_data = fetch_lineage_data ,
@@ -779,7 +781,7 @@ def _get_translator_spec_assert_keys_match(
779
781
@dataclass
780
782
class SigmaOrganizationDefsLoader (StateBackedDefinitionsLoader [SigmaOrganizationData ]):
781
783
organization : SigmaOrganization
782
- translator_cls : Type [ DagsterSigmaTranslator ]
784
+ translator : DagsterSigmaTranslator
783
785
snapshot : Optional [RepositoryLoadData ]
784
786
sigma_filter : Optional [SigmaFilter ] = None
785
787
fetch_column_data : bool = True
@@ -802,7 +804,6 @@ def fetch_state(self) -> SigmaOrganizationData:
802
804
)
803
805
804
806
def defs_from_state (self , state : SigmaOrganizationData ) -> Definitions :
805
- translator = self .translator_cls ()
806
807
translator_data_workbooks = [
807
808
SigmaWorkbookTranslatorData (workbook = workbook , organization_data = state )
808
809
for workbook in state .workbooks
@@ -812,7 +813,7 @@ def defs_from_state(self, state: SigmaOrganizationData) -> Definitions:
812
813
for dataset in state .datasets
813
814
]
814
815
asset_specs = [
815
- _get_translator_spec_assert_keys_match (translator , obj )
816
+ _get_translator_spec_assert_keys_match (self . translator , obj )
816
817
for obj in [* translator_data_workbooks , * translator_data_datasets ]
817
818
]
818
819
return Definitions (assets = asset_specs )
0 commit comments