~ubuntu-branches/ubuntu/trusty/python-boto/trusty

« back to all changes in this revision

Viewing changes to boto/dynamodb/condition.py

  • Committer: Package Import Robot
  • Author(s): Eric Evans
  • Date: 2013-05-10 23:38:14 UTC
  • mfrom: (1.1.10) (14.1.2 experimental)
  • Revision ID: package-import@ubuntu.com-20130510233814-701dvlop7xfh88i7
Tags: 2.9.2-1
New upstream release (Closes: #700743).

Show diffs side-by-side

added added

removed removed

Lines of Context:
15
15
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
16
16
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
17
17
# ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
18
 
# SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 
 
18
# SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
19
19
# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
20
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
21
21
# IN THE SOFTWARE.
22
22
#
23
23
 
24
 
from boto.dynamodb.types import get_dynamodb_type, dynamize_value, convert_num
 
24
from boto.dynamodb.types import dynamize_value
 
25
 
25
26
 
26
27
class Condition(object):
27
28
    """
29
30
    is to test if something is a Condition instance or not.
30
31
    """
31
32
 
32
 
    pass
 
33
    def __eq__(self, other):
 
34
        if isinstance(other, Condition):
 
35
            return self.to_dict() == other.to_dict()
33
36
 
34
37
class ConditionNoArgs(Condition):
35
38
    """
36
39
    Abstract class for Conditions that require no arguments, such
37
40
    as NULL or NOT_NULL.
38
41
    """
39
 
    
 
42
 
40
43
    def __repr__(self):
41
44
        return '%s' % self.__class__.__name__
42
45
 
43
46
    def to_dict(self):
44
47
        return {'ComparisonOperator': self.__class__.__name__}
45
48
 
 
49
 
46
50
class ConditionOneArg(Condition):
47
51
    """
48
52
    Abstract class for Conditions that require a single argument
49
53
    such as EQ or NE.
50
54
    """
51
 
    
 
55
 
52
56
    def __init__(self, v1):
53
57
        self.v1 = v1
54
 
    
 
58
 
55
59
    def __repr__(self):
56
60
        return '%s:%s' % (self.__class__.__name__, self.v1)
57
61
 
59
63
        return {'AttributeValueList': [dynamize_value(self.v1)],
60
64
                'ComparisonOperator': self.__class__.__name__}
61
65
 
 
66
 
62
67
class ConditionTwoArgs(Condition):
63
68
    """
64
69
    Abstract class for Conditions that require two arguments.
65
70
    The only example of this currently is BETWEEN.
66
71
    """
67
 
    
 
72
 
68
73
    def __init__(self, v1, v2):
69
74
        self.v1 = v1
70
75
        self.v2 = v2
76
81
        values = (self.v1, self.v2)
77
82
        return {'AttributeValueList': [dynamize_value(v) for v in values],
78
83
                'ComparisonOperator': self.__class__.__name__}
79
 
                
 
84
 
 
85
 
 
86
class ConditionSeveralArgs(Condition):
 
87
    """
 
88
    Abstract class for conditions that require several argument (ex: IN).
 
89
    """
 
90
 
 
91
    def __init__(self, values):
 
92
        self.values = values
 
93
 
 
94
    def __repr__(self):
 
95
        return '{0}({1})'.format(self.__class__.__name__,
 
96
                               ', '.join(self.values))
 
97
 
 
98
    def to_dict(self):
 
99
        return {'AttributeValueList': [dynamize_value(v) for v in self.values],
 
100
                'ComparisonOperator': self.__class__.__name__}
 
101
 
 
102
 
80
103
class EQ(ConditionOneArg):
81
 
    
 
104
 
82
105
    pass
83
 
    
 
106
 
 
107
 
84
108
class NE(ConditionOneArg):
85
 
    
 
109
 
86
110
    pass
87
 
    
 
111
 
 
112
 
88
113
class LE(ConditionOneArg):
89
 
    
 
114
 
90
115
    pass
91
 
    
 
116
 
 
117
 
92
118
class LT(ConditionOneArg):
93
 
    
 
119
 
94
120
    pass
95
 
    
 
121
 
 
122
 
96
123
class GE(ConditionOneArg):
97
 
    
 
124
 
98
125
    pass
99
 
    
 
126
 
 
127
 
100
128
class GT(ConditionOneArg):
101
 
    
 
129
 
102
130
    pass
103
 
    
 
131
 
 
132
 
104
133
class NULL(ConditionNoArgs):
105
 
    
 
134
 
106
135
    pass
107
 
    
 
136
 
 
137
 
108
138
class NOT_NULL(ConditionNoArgs):
109
 
    
 
139
 
110
140
    pass
111
 
    
 
141
 
 
142
 
112
143
class CONTAINS(ConditionOneArg):
113
 
    
 
144
 
114
145
    pass
115
 
    
 
146
 
 
147
 
116
148
class NOT_CONTAINS(ConditionOneArg):
117
 
    
118
 
    pass
119
 
    
120
 
class BEGINS_WITH(ConditionOneArg):
121
 
    
122
 
    pass
123
 
    
124
 
class IN(ConditionOneArg):
125
 
    
126
 
    pass
127
 
    
128
 
class BEGINS_WITH(ConditionOneArg):
129
 
    
130
 
    pass
131
 
    
 
149
 
 
150
    pass
 
151
 
 
152
 
 
153
class BEGINS_WITH(ConditionOneArg):
 
154
 
 
155
    pass
 
156
 
 
157
 
 
158
class IN(ConditionSeveralArgs):
 
159
 
 
160
    pass
 
161
 
 
162
 
 
163
class BEGINS_WITH(ConditionOneArg):
 
164
 
 
165
    pass
 
166
 
 
167
 
132
168
class BETWEEN(ConditionTwoArgs):
133
169
 
134
170
    pass
135
 
                
136
 
        
137
 
 
138
 
        
139