Fetch mapper for attrs decorated classes.
| 425 | |
| 426 | |
| 427 | class _AttrsFetchMapper(_FetchMapper): |
| 428 | """Fetch mapper for attrs decorated classes.""" |
| 429 | |
| 430 | def __init__(self, fetches): |
| 431 | """Creates a _AttrsFetchMapper. |
| 432 | |
| 433 | Args: |
| 434 | fetches: An instance of an attrs decorated class. |
| 435 | """ |
| 436 | values = _get_attrs_values(fetches) |
| 437 | self._fetch_type = type(fetches) |
| 438 | self._mappers = [_FetchMapper.for_fetch(fetch) for fetch in values] |
| 439 | self._unique_fetches, self._value_indices = _uniquify_fetches(self._mappers) |
| 440 | |
| 441 | def unique_fetches(self): |
| 442 | return self._unique_fetches |
| 443 | |
| 444 | def build_results(self, values): |
| 445 | results = [] |
| 446 | for m, vi in zip(self._mappers, self._value_indices): |
| 447 | results.append(m.build_results([values[j] for j in vi])) |
| 448 | return self._fetch_type(*results) |
| 449 | |
| 450 | |
| 451 | class _FetchHandler(object): |