# Path: clouddq/utils.py
# def assert_not_none_or_empty(value: typing.Any, error_msg: str) -> None:
#     """
# 
#     Args:
#       value: typing.Any:
#       error_msg: str:
# 
#     Returns:
# 
#     """
#     if not value:
#         raise ValueError(error_msg)
# 
# Path: clouddq/utils.py
# def get_from_dict_and_assert(
#     config_id: str,
#     kwargs: typing.Dict,
#     key: str,
#     assertion: typing.Callable[[typing.Any], bool] = None,
#     error_msg: str = None,
# ) -> typing.Any:
#     value = kwargs.get(key, None)
#     assert_not_none_or_empty(
#         value, f"Config ID: {config_id} must define non-empty value: '{key}'."
#     )
#     if assertion and not assertion(value):
#         raise ValueError(
#             f"Assertion failed on value {value}.\n"
#             f"Config ID: {config_id}, kwargs: {kwargs}.\n"
#             f"Error: {error_msg}"
#         )
#     return value


from dataclasses import dataclass
from enum import Enum
from enum import unique
from clouddq.utils import assert_not_none_or_empty
from clouddq.utils import get_from_dict_and_assert
    column_description: str | None
    entity_source_database: str

    def get_column_type_value(self: DqEntityColumn) -> str:
        return DatabaseType(self.entity_source_database).get_column_type(
            self.column_type
        )

    @classmethod
    def from_dict(
        cls: DqEntityColumn,
        entity_column_id: str,
        kwargs: dict,
        entity_source_database: str,
    ) -> DqEntityColumn:
        """

        Args:
          cls: DqEntityColumn:
          entity_column_id: str:
          kwargs: typing.Dict:
          entity_source_database: str

        Returns:

        """
        source_database: DatabaseType = DatabaseType(entity_source_database)
        column_name = get_from_dict_and_assert(
            config_id=entity_column_id, kwargs=kwargs, key="name"
        )

# Path: clouddq/utils.py
# def assert_not_none_or_empty(value: typing.Any, error_msg: str) -> None:
#     """
# 
#     Args:
#       value: typing.Any:
#       error_msg: str:
# 
#     Returns:
# 
#     """
#     if not value:
#         raise ValueError(error_msg)
# 
# Path: clouddq/utils.py
# def get_from_dict_and_assert(
#     config_id: str,
#     kwargs: typing.Dict,
#     key: str,
#     assertion: typing.Callable[[typing.Any], bool] = None,
#     error_msg: str = None,
# ) -> typing.Any:
#     value = kwargs.get(key, None)
#     assert_not_none_or_empty(
#         value, f"Config ID: {config_id} must define non-empty value: '{key}'."
#     )
#     if assertion and not assertion(value):
#         raise ValueError(
#             f"Assertion failed on value {value}.\n"
#             f"Config ID: {config_id}, kwargs: {kwargs}.\n"
#             f"Error: {error_msg}"
#         )
#     return value


# Path: clouddq/classes/dq_entity_column.py
from dataclasses import dataclass
from enum import Enum
from enum import unique
from clouddq.utils import assert_not_none_or_empty
from clouddq.utils import get_from_dict_and_assert

    column_description: str | None
    entity_source_database: str

    def get_column_type_value(self: DqEntityColumn) -> str:
        return DatabaseType(self.entity_source_database).get_column_type(
            self.column_type
        )

    @classmethod
    def from_dict(
        cls: DqEntityColumn,
        entity_column_id: str,
        kwargs: dict,
        entity_source_database: str,
    ) -> DqEntityColumn:
        """

        Args:
          cls: DqEntityColumn:
          entity_column_id: str:
          kwargs: typing.Dict:
          entity_source_database: str

        Returns:

        """
        source_database: DatabaseType = DatabaseType(entity_source_database)
        column_name = get_from_dict_and_assert(
            config_id=entity_column_id, kwargs=kwargs, key="name"
        )

        column_type = get_from_dict_and_assert(