# 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)


from dataclasses import dataclass
from clouddq.utils import assert_not_none_or_empty
from __future__ import annotations




@dataclass
class DqRowFilter:
    """ """

    row_filter_id: str
    filter_sql_expr: str

    @classmethod
    def from_dict(
        cls: DqRowFilter,
        row_filter_id: str,
        kwargs: dict,
    ) -> DqRowFilter:
        """

        Args:
          cls: DqRowFilter:
          row_filter_id: str:
          kwargs: typing.Dict:

        Returns:

        """

        filter_sql_expr: str = kwargs.get("filter_sql_expr", "")

# 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/classes/dq_row_filter.py
from dataclasses import dataclass
from clouddq.utils import assert_not_none_or_empty

from __future__ import annotations




@dataclass
class DqRowFilter:
    """ """

    row_filter_id: str
    filter_sql_expr: str

    @classmethod
    def from_dict(
        cls: DqRowFilter,
        row_filter_id: str,
        kwargs: dict,
    ) -> DqRowFilter:
        """

        Args:
          cls: DqRowFilter:
          row_filter_id: str:
          kwargs: typing.Dict:

        Returns:

        """

        filter_sql_expr: str = kwargs.get("filter_sql_expr", "")

        assert_not_none_or_empty(