from dataclasses import dataclass, field
from typing import Optional, Iterable, Union


@dataclass
class MetabaseConfig:
    # Metabase Client
    database: str
    host: str
    user: str
    password: str
    # Metabase additional connection opts
    use_http: bool = False
    verify: Union[str, bool] = True
    # Metabase Sync
    sync_skip: bool = False
    sync_timeout: Optional[int] = None


@dataclass
class DbtConfig:
    # dbt Reader
    database: str
    manifest_path: Optional[str] = None
    path: Optional[str] = None
    # dbt Target Models
    schema: Optional[str] = None
    schema_excludes: Iterable = field(default_factory=list)
    includes: Iterable = field(default_factory=list)
    excludes: Iterable = field(default_factory=list)

[((28, 32, 28, 59), 'dataclasses.field', 'field', (), '', False, 'from dataclasses import dataclass, field\n'), ((29, 25, 29, 52), 'dataclasses.field', 'field', (), '', False, 'from dataclasses import dataclass, field\n'), ((30, 25, 30, 52), 'dataclasses.field', 'field', (), '', False, 'from dataclasses import dataclass, field\n')]