Mercurial > hg
comparison mercurial/templatekw.py @ 33017:c31d45623304
py3: convert kwargs' keys' to str using pycompat.strkwargs()
On Python 3, we must have keys of keyword arguments as str.
author | Pulkit Goyal <7895pulkit@gmail.com> |
---|---|
date | Thu, 22 Jun 2017 03:16:16 +0530 |
parents | f66be4caeaab |
children | de8e3681c402 |
comparison
equal
deleted
inserted
replaced
33016:4e6dc34b5d7a | 33017:c31d45623304 |
---|---|
117 map, expand it instead of 'foo' for last key. | 117 map, expand it instead of 'foo' for last key. |
118 | 118 |
119 expand 'end_foos'. | 119 expand 'end_foos'. |
120 ''' | 120 ''' |
121 templ = mapping['templ'] | 121 templ = mapping['templ'] |
122 strmapping = pycompat.strkwargs(mapping) | |
122 if not plural: | 123 if not plural: |
123 plural = name + 's' | 124 plural = name + 's' |
124 if not values: | 125 if not values: |
125 noname = 'no_' + plural | 126 noname = 'no_' + plural |
126 if noname in templ: | 127 if noname in templ: |
127 yield templ(noname, **mapping) | 128 yield templ(noname, **strmapping) |
128 return | 129 return |
129 if name not in templ: | 130 if name not in templ: |
130 if isinstance(values[0], bytes): | 131 if isinstance(values[0], bytes): |
131 yield separator.join(values) | 132 yield separator.join(values) |
132 else: | 133 else: |
133 for v in values: | 134 for v in values: |
134 yield dict(v, **mapping) | 135 yield dict(v, **strmapping) |
135 return | 136 return |
136 startname = 'start_' + plural | 137 startname = 'start_' + plural |
137 if startname in templ: | 138 if startname in templ: |
138 yield templ(startname, **mapping) | 139 yield templ(startname, **strmapping) |
139 vmapping = mapping.copy() | 140 vmapping = mapping.copy() |
140 def one(v, tag=name): | 141 def one(v, tag=name): |
141 try: | 142 try: |
142 vmapping.update(v) | 143 vmapping.update(v) |
143 except (AttributeError, ValueError): | 144 except (AttributeError, ValueError): |
144 try: | 145 try: |
145 for a, b in v: | 146 for a, b in v: |
146 vmapping[a] = b | 147 vmapping[a] = b |
147 except ValueError: | 148 except ValueError: |
148 vmapping[name] = v | 149 vmapping[name] = v |
149 return templ(tag, **vmapping) | 150 return templ(tag, **pycompat.strkwargs(vmapping)) |
150 lastname = 'last_' + name | 151 lastname = 'last_' + name |
151 if lastname in templ: | 152 if lastname in templ: |
152 last = values.pop() | 153 last = values.pop() |
153 else: | 154 else: |
154 last = None | 155 last = None |
156 yield one(v) | 157 yield one(v) |
157 if last is not None: | 158 if last is not None: |
158 yield one(last, tag=lastname) | 159 yield one(last, tag=lastname) |
159 endname = 'end_' + plural | 160 endname = 'end_' + plural |
160 if endname in templ: | 161 if endname in templ: |
161 yield templ(endname, **mapping) | 162 yield templ(endname, **strmapping) |
162 | 163 |
163 def _formatrevnode(ctx): | 164 def _formatrevnode(ctx): |
164 """Format changeset as '{rev}:{node|formatnode}', which is the default | 165 """Format changeset as '{rev}:{node|formatnode}', which is the default |
165 template provided by cmdutil.changeset_templater""" | 166 template provided by cmdutil.changeset_templater""" |
166 repo = ctx.repo() | 167 repo = ctx.repo() |