Creates a new compound query using the
        QueryCompound.Op.Or type.

        :param      other   <Query> || <QueryCompound>

        :return     <QueryCompound>

        :sa         or_

        :usage      |>>> from orb import Query as Q
                    |>>> query = (Q('test') != 1).or_(Q('name') == 'Eric')
                    |>>> print query
                    |(test isNot 1 or name is Eric)

def or_(self, other):
        """
        Creates a new compound query using the
        QueryCompound.Op.Or type.

        :param      other   <Query> || <QueryCompound>

        :return     <QueryCompound>

        :sa         or_

        :usage      |>>> from orb import Query as Q
                    |>>> query = (Q('test') != 1).or_(Q('name') == 'Eric')
                    |>>> print query
                    |(test isNot 1 or name is Eric)
        """
        if not isinstance(other, (Query, QueryCompound)) or other.isNull():
            return self.copy()
        elif self.isNull():
            return other.copy()
        else:
            # grow this if the operators are the same
            if self.__op == QueryCompound.Op.And:
                queries = list(self.__queries) + [other]
                return QueryCompound(*queries, op=QueryCompound.Op.Or)
            else:
                return QueryCompound(self, other, op=QueryCompound.Op.Or)