@classmethod
def _get_and_info(cls, query):
    """
            Get the "and_" information for query
            - Attaches new "and_" information if not present
            The "and_" information contains depth information for and_ clauses.
            This ensures we can uniquely join tables for "and_" clauses, but
            prevent redundant joins for "or_" clauses.
        :return: "and_" information for query
        """
    if not hasattr(query, 'and_info'):
        setattr(query, 'and_info', {'depth': -1, 'counts': []})
    return getattr(query, 'and_info')
