I didn't check it, but what about using generator expression?
```
kv_pairs = ((cond, self[cond]) for cond in self.conditions())
return (self.__class__, (), None, None, kv_pairs)
```

This way we could avoid building an intermediate list, and iter() won't be necessary.