# Path: axiom/attributes.py
# class AND(AggregateComparison):
#     """
#     Combine 2 L{IComparison}s such that this is true when both are true.
#     """
#     operator = 'AND'
# 
# class OR(AggregateComparison):
#     """
#     Combine 2 L{IComparison}s such that this is true when either is true.
#     """
#     operator = 'OR'


import operator
from axiom.attributes import AND, OR
from six.moves import zip
        (c)                      (b)
         |------------------------|

        (c)  (a)
         |----|
                                 (b)       (l)
                                  |---------|

    The query::

        myStore.query(
            O,
            findOverlapping(O.X, O.Y,
                            a, b))

    Will return a generator of Items of class O which represent segments a-b,
    c-d, e-f, k-l, a-l, c-b, c-a and b-l, but NOT segments g-h or i-j.

    (NOTE: If you want to pass attributes of different classes for
    startAttribute and endAttribute, read the implementation of this method to
    discover the additional join clauses required.  This may be eliminated some
    day so for now, consider this method undefined over multiple classes.)

    In the database where this query is run, for an item N, all values of
    N.startAttribute must be less than N.endAttribute.

    startValue must be less than endValue.
    """
    assert startValue <= endValue


# Path: axiom/attributes.py
# class AND(AggregateComparison):
#     """
#     Combine 2 L{IComparison}s such that this is true when both are true.
#     """
#     operator = 'AND'
# 
# class OR(AggregateComparison):
#     """
#     Combine 2 L{IComparison}s such that this is true when either is true.
#     """
#     operator = 'OR'


# Path: axiom/queryutil.py
import operator
from axiom.attributes import AND, OR
from six.moves import zip

        (c)                      (b)
         |------------------------|

        (c)  (a)
         |----|
                                 (b)       (l)
                                  |---------|

    The query::

        myStore.query(
            O,
            findOverlapping(O.X, O.Y,
                            a, b))

    Will return a generator of Items of class O which represent segments a-b,
    c-d, e-f, k-l, a-l, c-b, c-a and b-l, but NOT segments g-h or i-j.

    (NOTE: If you want to pass attributes of different classes for
    startAttribute and endAttribute, read the implementation of this method to
    discover the additional join clauses required.  This may be eliminated some
    day so for now, consider this method undefined over multiple classes.)

    In the database where this query is run, for an item N, all values of
    N.startAttribute must be less than N.endAttribute.

    startValue must be less than endValue.
    """
    assert startValue <= endValue


    return OR(