comparison MySQLdb/__init__.py @ 32:4a5668deee4a MySQLdb

Merge back r554 for deprecated sets module
author kylev
date Wed, 11 Feb 2009 23:45:57 +0000
parents d55bfb1a4701
children df4d804244ec
comparison
equal deleted inserted replaced
31:10038670b963 32:4a5668deee4a
28 28
29 from MySQLdb.constants import FIELD_TYPE 29 from MySQLdb.constants import FIELD_TYPE
30 from MySQLdb.times import Date, Time, Timestamp, \ 30 from MySQLdb.times import Date, Time, Timestamp, \
31 DateFromTicks, TimeFromTicks, TimestampFromTicks 31 DateFromTicks, TimeFromTicks, TimestampFromTicks
32 32
33 from sets import ImmutableSet 33 try:
34 frozenset
35 except NameError:
36 from sets import ImmutableSet as frozenset
34 37
35 class DBAPISet(ImmutableSet): 38 class DBAPISet(frozenset):
36
37 """A special type of set for which A == x is True if A is a 39 """A special type of set for which A == x is True if A is a
38 DBAPISet and x is a member of that set. 40 DBAPISet and x is a member of that set.
39
40 >>> from MySQLdb.constants import FIELD_TYPE
41 >>> FIELD_TYPE.VAR_STRING == STRING
42 True
43 >>> FIELD_TYPE.DATE == NUMBER
44 False
45 >>> FIELD_TYPE.DATE != DATE
46 False
47
48 """ 41 """
49
50 def __ne__(self, other):
51 from sets import BaseSet
52 if isinstance(other, BaseSet):
53 return super(DBAPISet, self).__ne__(self, other)
54 else:
55 return other not in self
56
57 def __eq__(self, other): 42 def __eq__(self, other):
58 from sets import BaseSet 43 if isinstance(other, DBAPISet):
59 if isinstance(other, BaseSet): 44 return not self.difference(other)
60 return super(DBAPISet, self).__eq__(self, other) 45 return other in self
61 else:
62 return other in self
63 46
64 47
65 STRING = DBAPISet([FIELD_TYPE.ENUM, FIELD_TYPE.STRING, 48 STRING = DBAPISet([FIELD_TYPE.ENUM, FIELD_TYPE.STRING,
66 FIELD_TYPE.VAR_STRING]) 49 FIELD_TYPE.VAR_STRING])
67 BINARY = DBAPISet([FIELD_TYPE.BLOB, FIELD_TYPE.LONG_BLOB, 50 BINARY = DBAPISet([FIELD_TYPE.BLOB, FIELD_TYPE.LONG_BLOB,
72 DATE = DBAPISet([FIELD_TYPE.DATE, FIELD_TYPE.NEWDATE]) 55 DATE = DBAPISet([FIELD_TYPE.DATE, FIELD_TYPE.NEWDATE])
73 TIME = DBAPISet([FIELD_TYPE.TIME]) 56 TIME = DBAPISet([FIELD_TYPE.TIME])
74 TIMESTAMP = DBAPISet([FIELD_TYPE.TIMESTAMP, FIELD_TYPE.DATETIME]) 57 TIMESTAMP = DBAPISet([FIELD_TYPE.TIMESTAMP, FIELD_TYPE.DATETIME])
75 DATETIME = TIMESTAMP 58 DATETIME = TIMESTAMP
76 ROWID = DBAPISet() 59 ROWID = DBAPISet()
60
61 def test_DBAPISet_set_equality():
62 assert STRING == STRING
63
64 def test_DBAPISet_set_inequality():
65 assert STRING != NUMBER
66
67 def test_DBAPISet_set_equality_membership():
68 assert FIELD_TYPE.VAR_STRING == STRING
69
70 def test_DBAPISet_set_inequality_membership():
71 assert FIELD_TYPE.DATE != STRING
77 72
78 def Binary(x): 73 def Binary(x):
79 """Return x as a binary type.""" 74 """Return x as a binary type."""
80 return str(x) 75 return str(x)
81 76
95 'ROWID', 'STRING', 'TIME', 'TIMESTAMP', 'Warning', 'apilevel', 'connect', 90 'ROWID', 'STRING', 'TIME', 'TIMESTAMP', 'Warning', 'apilevel', 'connect',
96 'connections', 'constants', 'converters', 'cursors', 'debug', 'escape', 91 'connections', 'constants', 'converters', 'cursors', 'debug', 'escape',
97 'escape_dict', 'escape_sequence', 'escape_string', 'get_client_info', 92 'escape_dict', 'escape_sequence', 'escape_string', 'get_client_info',
98 'paramstyle', 'string_literal', 'threadsafety', 'version_info', 93 'paramstyle', 'string_literal', 'threadsafety', 'version_info',
99 ] 94 ]
100
101
102 if __name__ == "__main__":
103 import doctest
104 doctest.testmod()
105