def _reduce(self, keys): try: metadata_for_keys = [ self._keymap[self._keys[key] if int in key.__class__.__mro__ else key] for key in keys ] except KeyError as ke: self._key_fallback(ke.args[0], ke, True) indexes, new_keys, extra = zip(*metadata_for_keys) if self._translated_indexes: indexes = [self._translated_indexes[idx] for idx in indexes] tup = tuplegetter(*indexes) new_metadata = SimpleResultMetaData( new_keys, extra=extra, _tuplefilter=tup, _translated_indexes=indexes, _processors=self._processors, _unique_filters=self._unique_filters, ) return new_metadata
def __setstate__(self, state): if state["_translated_indexes"]: _translated_indexes = state["_translated_indexes"] _tuplefilter = tuplegetter(*_translated_indexes) else: _translated_indexes = _tuplefilter = None self.__init__( state["_keys"], _translated_indexes=_translated_indexes, _tuplefilter=_tuplefilter, )