diff options
Diffstat (limited to 'Tools/parser/unparse.py')
| -rw-r--r-- | Tools/parser/unparse.py | 15 | 
1 files changed, 12 insertions, 3 deletions
| diff --git a/Tools/parser/unparse.py b/Tools/parser/unparse.py index c82857710b..285030e792 100644 --- a/Tools/parser/unparse.py +++ b/Tools/parser/unparse.py @@ -393,12 +393,21 @@ class Unparser:      def _Dict(self, t):          self.write("{") -        def write_pair(pair): -            (k, v) = pair +        def write_key_value_pair(k, v):              self.dispatch(k)              self.write(": ")              self.dispatch(v) -        interleave(lambda: self.write(", "), write_pair, zip(t.keys, t.values)) + +        def write_item(item): +            k, v = item +            if k is None: +                # for dictionary unpacking operator in dicts {**{'y': 2}} +                # see PEP 448 for details +                self.write("**") +                self.dispatch(v) +            else: +                write_key_value_pair(k, v) +        interleave(lambda: self.write(", "), write_item, zip(t.keys, t.values))          self.write("}")      def _Tuple(self, t): | 
