Skip to content

Commit

Permalink
fix typing and formatting
Browse files Browse the repository at this point in the history
  • Loading branch information
colin-rogers-dbt committed Feb 10, 2025
1 parent bf3a95f commit 34a9582
Show file tree
Hide file tree
Showing 5 changed files with 12 additions and 5 deletions.
7 changes: 4 additions & 3 deletions dbt-adapters/src/dbt/adapters/base/catalog.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
import abc
from dataclasses import dataclass
from enum import Enum
from typing import Optional, Dict

from dbt.adapters.contracts.relation import RelationConfig
from dbt.adapters.relation_configs.formats import TableFormat
from dbt.adapters.protocol import CatalogIntegrationProtocol
from dbt_common.dataclass_schema import StrEnum

class CatalogIntegrationType(Enum):

class CatalogIntegrationType(StrEnum):
managed = "managed"
iceberg_rest = "iceberg_rest"
glue = "glue"
Expand All @@ -30,7 +31,7 @@ class CatalogIntegration(abc.ABC, CatalogIntegrationProtocol):
Implements the CatalogIntegrationProtocol as an abstract class should be subclassed by
specific integrations in the adapters.
A catalog integration is a platform's way of interacting with an external catalog.
A catalog integration is a platform's way of interacting with an external catalog.
"""

catalog_name: str
Expand Down
4 changes: 3 additions & 1 deletion dbt-adapters/src/dbt/adapters/base/impl.py
Original file line number Diff line number Diff line change
Expand Up @@ -318,7 +318,9 @@ def add_catalog_integrations(
catalogs_client.add_catalog(integration, integration_config.catalog_name)

@available
def get_catalog_integration(self, integration_name: str) -> CatalogIntegrationProtocol:
def get_catalog_integration(
self, integration_name: str
) -> Optional[CatalogIntegrationProtocol]:
return catalogs_client.get_catalog(integration_name)

###
Expand Down
3 changes: 3 additions & 0 deletions dbt-adapters/src/dbt/adapters/clients/catalogs.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

from typing import Optional


class CatalogIntegrations:
def __init__(self):
self._integrations = {}
Expand All @@ -21,11 +22,13 @@ def add_integration(self, integration: CatalogIntegrationProtocol, catalog_name:
raise DbtCatalogIntegrationAlreadyExistsError(catalog_name)
self._integrations[catalog_name] = integration


_CATALOG_CLIENT = CatalogIntegrations()


def get_catalog(integration_name: str) -> Optional[CatalogIntegrationProtocol]:
return _CATALOG_CLIENT.get(integration_name)


def add_catalog(integration: CatalogIntegrationProtocol, catalog_name: str):
_CATALOG_CLIENT.add_integration(integration, catalog_name)
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@

from dbt_common.exceptions import DbtRuntimeError


Expand Down
2 changes: 2 additions & 0 deletions dbt-adapters/tests/unit/clients/test_catalogs.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,14 @@ def test_adding_and_getting_catalog_integration(fake_catalog_integration):
add_catalog(catalog, catalog_name="fake_catalog")
assert get_catalog("fake_catalog").catalog_name == catalog.catalog_name


def test_adding_catalog_integration_that_already_exists(fake_catalog_integration):
catalog = fake_catalog_integration
catalog_name = "fake_catalog_2"
add_catalog(catalog, catalog_name=catalog_name)
with pytest.raises(DbtCatalogIntegrationAlreadyExistsError):
add_catalog(catalog, catalog_name=catalog_name)


def test_getting_catalog_integration_that_does_not_exist():
assert get_catalog("non_existent_catalog") is None

0 comments on commit 34a9582

Please sign in to comment.