https://github.com/apache/airflow/blob/fdd9b6f65b608c516b8a062b058972d9a45ec9e3/airflow/sensors/sql_sensor.py#L97


airflow/sensors/sql_sensor.py
:type sql: str
    :param parameters: The parameters to render the SQL query with (optional).
    :type parameters: dict or iterable
    :param success: Success criteria for the sensor is a Callable that takes first_cell
        as the only argument, and returns a boolean (optional).
    :type: success: Optional<Callable[[Any], bool]>
    :param failure: Failure criteria for the sensor is a Callable that takes first_cell
        as the only argument and return a boolean (optional).
    :type: failure: Optional<Callable[[Any], bool]>
    :param fail_on_empty: Explicitly fail on no rows returned.
    :type: fail_on_empty: bool
    """
    template_fields: Iterable[str] = ('sql',)
    template_ext: Iterable[str] = (
        '.hql',
        '.sql',
    )
    ui_color = '#7c7287'
    @apply_defaults
    def __init__(
        self, *, conn_id, sql, parameters=None, success=None, failure=None, fail_on_empty=False, **kwargs
    ):
        self.conn_id = conn_id
        self.sql = sql
        self.parameters = parameters
        self.success = success
        self.failure = failure
        self.fail_on_empty = fail_on_empty
        super().__init__(**kwargs)
    def _get_hook(self):