Mercurial > piecrust2
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] |