Tells if the solver is able to resolve the given filter.

        Arguments
        ---------
        filter_ : subclass of dataql.resources.BaseFilter
            The subclass or ``BaseFilter`` to check if it is solvable by the current solver class.

        Returns
        -------
        boolean
            ``True`` if the current solver class can solve the given filter, ``False`` otherwise.

        Example
        -------

        >>> FilterSolver.solvable_filters
        (<class 'dataql.resources.Filter'>,)
        >>> FilterSolver.can_solve(Filter(name='foo'))
        True
        >>> SliceSolver.can_solve(Filter(name='foo'))
        False

def can_solve(cls, filter_):
        """Tells if the solver is able to resolve the given filter.

        Arguments
        ---------
        filter_ : subclass of dataql.resources.BaseFilter
            The subclass or ``BaseFilter`` to check if it is solvable by the current solver class.

        Returns
        -------
        boolean
            ``True`` if the current solver class can solve the given filter, ``False`` otherwise.

        Example
        -------

        >>> FilterSolver.solvable_filters
        (<class 'dataql.resources.Filter'>,)
        >>> FilterSolver.can_solve(Filter(name='foo'))
        True
        >>> SliceSolver.can_solve(Filter(name='foo'))
        False

        """

        for solvable_filter in cls.solvable_filters:
            if isinstance(filter_, solvable_filter):
                return True
        return False