comparison hgext/phabricator.py @ 41900:47125193bad0

py3: convert indexes into bytes when enumerating lists in urlencodenested Otherwise it'll try to insert them them into a %s slot in a b'' later and fail. Differential Revision: https://phab.mercurial-scm.org/D6105
author Ian Moody <moz-ian@perix.co.uk>
date Fri, 08 Mar 2019 23:45:12 +0000
parents 9a8c7c17d816
children a98dabdb5a7b
comparison
equal deleted inserted replaced
41899:9a8c7c17d816 41900:47125193bad0
159 """ 159 """
160 flatparams = util.sortdict() 160 flatparams = util.sortdict()
161 def process(prefix, obj): 161 def process(prefix, obj):
162 if isinstance(obj, bool): 162 if isinstance(obj, bool):
163 obj = {True: b'true', False: b'false'}[obj] # Python -> PHP form 163 obj = {True: b'true', False: b'false'}[obj] # Python -> PHP form
164 items = {list: enumerate, dict: lambda x: x.items()}.get(type(obj)) 164 lister = lambda l: [(b'%d' % k, v) for k, v in enumerate(l)]
165 items = {list: lister, dict: lambda x: x.items()}.get(type(obj))
165 if items is None: 166 if items is None:
166 flatparams[prefix] = obj 167 flatparams[prefix] = obj
167 else: 168 else:
168 for k, v in items(obj): 169 for k, v in items(obj):
169 if prefix: 170 if prefix: