comparison piecrust/data/base.py @ 713:d446029c9478

data: Support both objects and dictionaries in `MergedMapping`.
author Ludovic Chabant <ludovic@chabant.com>
date Thu, 26 May 2016 20:44:18 -0700
parents 32c7c2d219d2
children 1d5f02778723
comparison
equal deleted inserted replaced
712:aed8a860c1d0 713:d446029c9478
17 17
18 def __getitem__(self, name): 18 def __getitem__(self, name):
19 values = [] 19 values = []
20 for d in self._dicts: 20 for d in self._dicts:
21 try: 21 try:
22 val = getattr(d, name)
23 values.append(val)
24 continue
25 except AttributeError:
26 pass
27
28 try:
22 val = d[name] 29 val = d[name]
30 values.append(val)
31 continue
23 except KeyError: 32 except KeyError:
24 continue 33 pass
25 values.append(val)
26 34
27 if len(values) == 0: 35 if len(values) == 0:
28 raise KeyError("No such item: %s" % self._subp(name)) 36 raise KeyError("No such item: %s" % self._subp(name))
29 if len(values) == 1: 37 if len(values) == 1:
30 return values[0] 38 return values[0]