# 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
# -*- test-case-name: axiom.test.test_queryutil -*-



def contains(startAttribute,
             endAttribute,
             value):
    """
    Return an L{axiom.iaxiom.IComparison} (an object that can be
    passed as the 'comparison' argument to Store.query/.sum/.count)
    which will constrain a query against 2 attributes for ranges which
    contain the given argument.  The range is half-open.
    """

# 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

# -*- test-case-name: axiom.test.test_queryutil -*-



def contains(startAttribute,
             endAttribute,
             value):
    """
    Return an L{axiom.iaxiom.IComparison} (an object that can be
    passed as the 'comparison' argument to Store.query/.sum/.count)
    which will constrain a query against 2 attributes for ranges which
    contain the given argument.  The range is half-open.
    """

    return AND(