##// END OF EJS Templates
pycompat: move multiline comments above a function to function doc...
Pulkit Goyal -
r32864:f57f1f37 default
parent child Browse files
Show More
@@ -43,7 +43,6 b' if ispy3:'
43 43
44 44 fsencode = os.fsencode
45 45 fsdecode = os.fsdecode
46 # A bytes version of os.name.
47 46 oslinesep = os.linesep.encode('ascii')
48 47 osname = os.name.encode('ascii')
49 48 ospathsep = os.pathsep.encode('ascii')
@@ -210,10 +209,13 b' if ispy3:'
210 209 def open(name, mode='r', buffering=-1):
211 210 return builtins.open(name, sysstr(mode), buffering)
212 211
213 # getopt.getopt() on Python 3 deals with unicodes internally so we cannot
214 # pass bytes there. Passing unicodes will result in unicodes as return
215 # values which we need to convert again to bytes.
216 212 def getoptb(args, shortlist, namelist):
213 """
214 Takes bytes arguments, converts them to unicode, pass them to
215 getopt.getopt(), convert the returned values back to bytes and then
216 return them for Python 3 compatibility as getopt.getopt() don't accepts
217 bytes on Python 3.
218 """
217 219 args = [a.decode('latin-1') for a in args]
218 220 shortlist = shortlist.decode('latin-1')
219 221 namelist = [a.decode('latin-1') for a in namelist]
@@ -223,24 +225,30 b' if ispy3:'
223 225 args = [a.encode('latin-1') for a in args]
224 226 return opts, args
225 227
226 # keys of keyword arguments in Python need to be strings which are unicodes
227 # Python 3. This function takes keyword arguments, convert the keys to str.
228 228 def strkwargs(dic):
229 """
230 Converts the keys of a python dictonary to str i.e. unicodes so that
231 they can be passed as keyword arguments as dictonaries with bytes keys
232 can't be passed as keyword arguments to functions on Python 3.
233 """
229 234 dic = dict((k.decode('latin-1'), v) for k, v in dic.iteritems())
230 235 return dic
231 236
232 # keys of keyword arguments need to be unicode while passing into
233 # a function. This function helps us to convert those keys back to bytes
234 # again as we need to deal with bytes.
235 237 def byteskwargs(dic):
238 """
239 Converts keys of python dictonaries to bytes as they were converted to
240 str to pass that dictonary as a keyword argument on Python 3.
241 """
236 242 dic = dict((k.encode('latin-1'), v) for k, v in dic.iteritems())
237 243 return dic
238 244
239 # shlex.split() accepts unicodes on Python 3. This function takes bytes
240 # argument, convert it into unicodes, pass into shlex.split(), convert the
241 # returned value to bytes and return that.
242 245 # TODO: handle shlex.shlex().
243 246 def shlexsplit(s):
247 """
248 Takes bytes argument, convert it to str i.e. unicodes, pass that into
249 shlex.split(), convert the returned value to bytes and return that for
250 Python 3 compatibility as shelx.split() don't accept bytes on Python 3.
251 """
244 252 ret = shlex.split(s.decode('latin-1'))
245 253 return [a.encode('latin-1') for a in ret]
246 254
@@ -259,10 +267,12 b' else:'
259 267 exec('def raisewithtb(exc, tb):\n'
260 268 ' raise exc, None, tb\n')
261 269
262 # Partial backport from os.py in Python 3, which only accepts bytes.
263 # In Python 2, our paths should only ever be bytes, a unicode path
264 # indicates a bug.
265 270 def fsencode(filename):
271 """
272 Partial backport from os.py in Python 3, which only accepts bytes.
273 In Python 2, our paths should only ever be bytes, a unicode path
274 indicates a bug.
275 """
266 276 if isinstance(filename, str):
267 277 return filename
268 278 else:
General Comments 0
You need to be logged in to leave comments. Login now