[Checkins] SVN: BTrees/branches/py3k/ Factor out check for missing MERGE_DEFAULT to saner spot.
Tres Seaver
cvs-admin at zope.org
Wed Dec 12 14:40:59 UTC 2012
Log message for revision 128614:
Factor out check for missing MERGE_DEFAULT to saner spot.
Changed:
_U BTrees/branches/py3k/
U BTrees/branches/py3k/BTrees/_base.py
U BTrees/branches/py3k/BTrees/tests/test__base.py
-=-
Modified: BTrees/branches/py3k/BTrees/_base.py
===================================================================
--- BTrees/branches/py3k/BTrees/_base.py 2012-12-12 14:40:58 UTC (rev 128613)
+++ BTrees/branches/py3k/BTrees/_base.py 2012-12-12 14:40:59 UTC (rev 128614)
@@ -1278,14 +1278,10 @@
def _prepMergeIterators(o1, o2):
MERGE_DEFAULT = getattr(o1, 'MERGE_DEFAULT', None)
+ if MERGE_DEFAULT is None:
+ raise TypeError("invalid set operation")
i1 = _SetIteration(o1, True, MERGE_DEFAULT)
i2 = _SetIteration(o2, True, MERGE_DEFAULT)
- if MERGE_DEFAULT is None:
- if i1.useValues:
- if (not i2.useValues):
- raise TypeError("invalid set operation")
- else:
- raise TypeError("invalid set operation")
return i1, i2
def weightedUnion(set_type, o1, o2, w1=1, w2=1):
Modified: BTrees/branches/py3k/BTrees/tests/test__base.py
===================================================================
--- BTrees/branches/py3k/BTrees/tests/test__base.py 2012-12-12 14:40:58 UTC (rev 128613)
+++ BTrees/branches/py3k/BTrees/tests/test__base.py 2012-12-12 14:40:59 UTC (rev 128614)
@@ -2645,6 +2645,17 @@
rhs = self._makeSet('a', 'b', 'c')
self.assertRaises(TypeError, self._callFUT, lhs.__class__, lhs, rhs)
+ def test_lhs_mapping_wo_MERGE_rhs_mapping(self):
+ class _MappingWoMerge(dict):
+ def MERGE_DEFAULT(self):
+ return 1
+ def MERGE_WEIGHT(self, v, w):
+ return v
+ lhs = _MappingWoMerge({'a': 13, 'b': 12, 'c': 11})
+ lhs._mapping_type = _MappingWoMerge
+ rhs = self._makeMapping({'a': 1, 'b': 2, 'c': 3})
+ self.assertRaises(TypeError, self._callFUT, lhs.__class__, lhs, rhs)
+
def test_lhs_set_wo_MERGE_DEFAULT_rhs_mapping(self):
lhs = self._makeSet('a', 'd')
lhs.MERGE = lambda v1, w1, v2, w2: (v1 * w1) + (v2 * w2)
@@ -2736,6 +2747,17 @@
rhs = {'b': 22, 'd': 14}
self.assertRaises(TypeError, self._callFUT, lhs.__class__, lhs, rhs)
+ def test_lhs_mapping_wo_MERGE_rhs_mapping(self):
+ class _MappingWoMerge(dict):
+ def MERGE_DEFAULT(self):
+ return 1
+ def MERGE_WEIGHT(self, v, w):
+ return v
+ lhs = _MappingWoMerge({'a': 13, 'b': 12, 'c': 11})
+ lhs._mapping_type = _MappingWoMerge
+ rhs = self._makeMapping({'a': 1, 'b': 2, 'c': 3})
+ self.assertRaises(TypeError, self._callFUT, lhs.__class__, lhs, rhs)
+
def test_lhs_set_wo_MERGE_DEFAULT_rhs_set(self):
lhs = self._makeSet('a', 'd')
lhs.MERGE = lambda v1, w1, v2, w2: (v1 * w1) + (v2 * w2)
More information about the checkins
mailing list