comparison mercurial/templatekw.py @ 32972:26e710f0468f

py3: convert keys of kwargs in template keywords functions to bytes This patch converts the args argument keys' to bytes wherever necessary as there are some places where either args is not used or using r'' is better or args is again passed as keyword arguments.
author Pulkit Goyal <7895pulkit@gmail.com>
date Wed, 21 Jun 2017 02:10:25 +0530
parents 11c0bb4ccc76
children 20ca19e6c74e
comparison
equal deleted inserted replaced
32971:accfa165736b 32972:26e710f0468f
18 encoding, 18 encoding,
19 error, 19 error,
20 hbisect, 20 hbisect,
21 obsutil, 21 obsutil,
22 patch, 22 patch,
23 pycompat,
23 registrar, 24 registrar,
24 scmutil, 25 scmutil,
25 util, 26 util,
26 ) 27 )
27 28
291 def showbranches(**args): 292 def showbranches(**args):
292 """List of strings. The name of the branch on which the 293 """List of strings. The name of the branch on which the
293 changeset was committed. Will be empty if the branch name was 294 changeset was committed. Will be empty if the branch name was
294 default. (DEPRECATED) 295 default. (DEPRECATED)
295 """ 296 """
297 args = pycompat.byteskwargs(args)
296 branch = args['ctx'].branch() 298 branch = args['ctx'].branch()
297 if branch != 'default': 299 if branch != 'default':
298 return showlist('branch', [branch], args, plural='branches') 300 return showlist('branch', [branch], args, plural='branches')
299 return showlist('branch', [], args, plural='branches') 301 return showlist('branch', [], args, plural='branches')
300 302
301 @templatekeyword('bookmarks') 303 @templatekeyword('bookmarks')
302 def showbookmarks(**args): 304 def showbookmarks(**args):
303 """List of strings. Any bookmarks associated with the 305 """List of strings. Any bookmarks associated with the
304 changeset. Also sets 'active', the name of the active bookmark. 306 changeset. Also sets 'active', the name of the active bookmark.
305 """ 307 """
308 args = pycompat.byteskwargs(args)
306 repo = args['ctx']._repo 309 repo = args['ctx']._repo
307 bookmarks = args['ctx'].bookmarks() 310 bookmarks = args['ctx'].bookmarks()
308 active = repo._activebookmark 311 active = repo._activebookmark
309 makemap = lambda v: {'bookmark': v, 'active': active, 'current': active} 312 makemap = lambda v: {'bookmark': v, 'active': active, 'current': active}
310 f = _showlist('bookmark', bookmarks, args) 313 f = _showlist('bookmark', bookmarks, args)
311 return _hybrid(f, bookmarks, makemap, lambda x: x['bookmark']) 314 return _hybrid(f, bookmarks, makemap, lambda x: x['bookmark'])
312 315
313 @templatekeyword('children') 316 @templatekeyword('children')
314 def showchildren(**args): 317 def showchildren(**args):
315 """List of strings. The children of the changeset.""" 318 """List of strings. The children of the changeset."""
319 args = pycompat.byteskwargs(args)
316 ctx = args['ctx'] 320 ctx = args['ctx']
317 childrevs = ['%d:%s' % (cctx, cctx) for cctx in ctx.children()] 321 childrevs = ['%d:%s' % (cctx, cctx) for cctx in ctx.children()]
318 return showlist('children', childrevs, args, element='child') 322 return showlist('children', childrevs, args, element='child')
319 323
320 # Deprecated, but kept alive for help generation a purpose. 324 # Deprecated, but kept alive for help generation a purpose.
358 return '%s: +%s/-%s' % (len(stats), adds, removes) 362 return '%s: +%s/-%s' % (len(stats), adds, removes)
359 363
360 @templatekeyword('envvars') 364 @templatekeyword('envvars')
361 def showenvvars(repo, **args): 365 def showenvvars(repo, **args):
362 """A dictionary of environment variables. (EXPERIMENTAL)""" 366 """A dictionary of environment variables. (EXPERIMENTAL)"""
367 args = pycompat.byteskwargs(args)
363 env = repo.ui.exportableenviron() 368 env = repo.ui.exportableenviron()
364 env = util.sortdict((k, env[k]) for k in sorted(env)) 369 env = util.sortdict((k, env[k]) for k in sorted(env))
365 return showdict('envvar', env, args, plural='envvars') 370 return showdict('envvar', env, args, plural='envvars')
366 371
367 @templatekeyword('extras') 372 @templatekeyword('extras')
368 def showextras(**args): 373 def showextras(**args):
369 """List of dicts with key, value entries of the 'extras' 374 """List of dicts with key, value entries of the 'extras'
370 field of this changeset.""" 375 field of this changeset."""
376 args = pycompat.byteskwargs(args)
371 extras = args['ctx'].extra() 377 extras = args['ctx'].extra()
372 extras = util.sortdict((k, extras[k]) for k in sorted(extras)) 378 extras = util.sortdict((k, extras[k]) for k in sorted(extras))
373 makemap = lambda k: {'key': k, 'value': extras[k]} 379 makemap = lambda k: {'key': k, 'value': extras[k]}
374 c = [makemap(k) for k in extras] 380 c = [makemap(k) for k in extras]
375 f = _showlist('extra', c, args, plural='extras') 381 f = _showlist('extra', c, args, plural='extras')
377 lambda x: '%s=%s' % (x['key'], util.escapestr(x['value']))) 383 lambda x: '%s=%s' % (x['key'], util.escapestr(x['value'])))
378 384
379 @templatekeyword('file_adds') 385 @templatekeyword('file_adds')
380 def showfileadds(**args): 386 def showfileadds(**args):
381 """List of strings. Files added by this changeset.""" 387 """List of strings. Files added by this changeset."""
388 args = pycompat.byteskwargs(args)
382 repo, ctx, revcache = args['repo'], args['ctx'], args['revcache'] 389 repo, ctx, revcache = args['repo'], args['ctx'], args['revcache']
383 return showlist('file_add', getfiles(repo, ctx, revcache)[1], args, 390 return showlist('file_add', getfiles(repo, ctx, revcache)[1], args,
384 element='file') 391 element='file')
385 392
386 @templatekeyword('file_copies') 393 @templatekeyword('file_copies')
387 def showfilecopies(**args): 394 def showfilecopies(**args):
388 """List of strings. Files copied in this changeset with 395 """List of strings. Files copied in this changeset with
389 their sources. 396 their sources.
390 """ 397 """
398 args = pycompat.byteskwargs(args)
391 cache, ctx = args['cache'], args['ctx'] 399 cache, ctx = args['cache'], args['ctx']
392 copies = args['revcache'].get('copies') 400 copies = args['revcache'].get('copies')
393 if copies is None: 401 if copies is None:
394 if 'getrenamed' not in cache: 402 if 'getrenamed' not in cache:
395 cache['getrenamed'] = getrenamedfn(args['repo']) 403 cache['getrenamed'] = getrenamedfn(args['repo'])
410 @templatekeyword('file_copies_switch') 418 @templatekeyword('file_copies_switch')
411 def showfilecopiesswitch(**args): 419 def showfilecopiesswitch(**args):
412 """List of strings. Like "file_copies" but displayed 420 """List of strings. Like "file_copies" but displayed
413 only if the --copied switch is set. 421 only if the --copied switch is set.
414 """ 422 """
423 args = pycompat.byteskwargs(args)
415 copies = args['revcache'].get('copies') or [] 424 copies = args['revcache'].get('copies') or []
416 copies = util.sortdict(copies) 425 copies = util.sortdict(copies)
417 return showdict('file_copy', copies, args, plural='file_copies', 426 return showdict('file_copy', copies, args, plural='file_copies',
418 key='name', value='source', fmt='%s (%s)') 427 key='name', value='source', fmt='%s (%s)')
419 428
420 @templatekeyword('file_dels') 429 @templatekeyword('file_dels')
421 def showfiledels(**args): 430 def showfiledels(**args):
422 """List of strings. Files removed by this changeset.""" 431 """List of strings. Files removed by this changeset."""
432 args = pycompat.byteskwargs(args)
423 repo, ctx, revcache = args['repo'], args['ctx'], args['revcache'] 433 repo, ctx, revcache = args['repo'], args['ctx'], args['revcache']
424 return showlist('file_del', getfiles(repo, ctx, revcache)[2], args, 434 return showlist('file_del', getfiles(repo, ctx, revcache)[2], args,
425 element='file') 435 element='file')
426 436
427 @templatekeyword('file_mods') 437 @templatekeyword('file_mods')
428 def showfilemods(**args): 438 def showfilemods(**args):
429 """List of strings. Files modified by this changeset.""" 439 """List of strings. Files modified by this changeset."""
440 args = pycompat.byteskwargs(args)
430 repo, ctx, revcache = args['repo'], args['ctx'], args['revcache'] 441 repo, ctx, revcache = args['repo'], args['ctx'], args['revcache']
431 return showlist('file_mod', getfiles(repo, ctx, revcache)[0], args, 442 return showlist('file_mod', getfiles(repo, ctx, revcache)[0], args,
432 element='file') 443 element='file')
433 444
434 @templatekeyword('files') 445 @templatekeyword('files')
435 def showfiles(**args): 446 def showfiles(**args):
436 """List of strings. All files modified, added, or removed by this 447 """List of strings. All files modified, added, or removed by this
437 changeset. 448 changeset.
438 """ 449 """
450 args = pycompat.byteskwargs(args)
439 return showlist('file', args['ctx'].files(), args) 451 return showlist('file', args['ctx'].files(), args)
440 452
441 @templatekeyword('graphnode') 453 @templatekeyword('graphnode')
442 def showgraphnode(repo, ctx, **args): 454 def showgraphnode(repo, ctx, **args):
443 """String. The character representing the changeset node in 455 """String. The character representing the changeset node in
468 """ 480 """
469 return showlatesttags(None, **args) 481 return showlatesttags(None, **args)
470 482
471 def showlatesttags(pattern, **args): 483 def showlatesttags(pattern, **args):
472 """helper method for the latesttag keyword and function""" 484 """helper method for the latesttag keyword and function"""
485 args = pycompat.byteskwargs(args)
473 repo, ctx = args['repo'], args['ctx'] 486 repo, ctx = args['repo'], args['ctx']
474 cache = args['cache'] 487 cache = args['cache']
475 latesttags = getlatesttags(repo, ctx, cache, pattern) 488 latesttags = getlatesttags(repo, ctx, cache, pattern)
476 489
477 # latesttag[0] is an implementation detail for sorting csets on different 490 # latesttag[0] is an implementation detail for sorting csets on different
524 'node': hex(mnode)}) 537 'node': hex(mnode)})
525 return templ('manifest', **args) 538 return templ('manifest', **args)
526 539
527 def shownames(namespace, **args): 540 def shownames(namespace, **args):
528 """helper method to generate a template keyword for a namespace""" 541 """helper method to generate a template keyword for a namespace"""
542 args = pycompat.byteskwargs(args)
529 ctx = args['ctx'] 543 ctx = args['ctx']
530 repo = ctx.repo() 544 repo = ctx.repo()
531 ns = repo.names[namespace] 545 ns = repo.names[namespace]
532 names = ns.names(repo, ctx.node()) 546 names = ns.names(repo, ctx.node())
533 return showlist(ns.templatename, names, args, plural=namespace) 547 return showlist(ns.templatename, names, args, plural=namespace)
534 548
535 @templatekeyword('namespaces') 549 @templatekeyword('namespaces')
536 def shownamespaces(**args): 550 def shownamespaces(**args):
537 """Dict of lists. Names attached to this changeset per 551 """Dict of lists. Names attached to this changeset per
538 namespace.""" 552 namespace."""
553 args = pycompat.byteskwargs(args)
539 ctx = args['ctx'] 554 ctx = args['ctx']
540 repo = ctx.repo() 555 repo = ctx.repo()
541 namespaces = util.sortdict((k, showlist('name', ns.names(repo, ctx.node()), 556 namespaces = util.sortdict((k, showlist('name', ns.names(repo, ctx.node()),
542 args)) 557 args))
543 for k, ns in repo.names.iteritems()) 558 for k, ns in repo.names.iteritems())
601 @templatekeyword('parents') 616 @templatekeyword('parents')
602 def showparents(**args): 617 def showparents(**args):
603 """List of strings. The parents of the changeset in "rev:node" 618 """List of strings. The parents of the changeset in "rev:node"
604 format. If the changeset has only one "natural" parent (the predecessor 619 format. If the changeset has only one "natural" parent (the predecessor
605 revision) nothing is shown.""" 620 revision) nothing is shown."""
621 args = pycompat.byteskwargs(args)
606 repo = args['repo'] 622 repo = args['repo']
607 ctx = args['ctx'] 623 ctx = args['ctx']
608 pctxs = scmutil.meaningfulparents(repo, ctx) 624 pctxs = scmutil.meaningfulparents(repo, ctx)
609 prevs = [str(p.rev()) for p in pctxs] # ifcontains() needs a list of str 625 prevs = [str(p.rev()) for p in pctxs] # ifcontains() needs a list of str
610 parents = [[('rev', p.rev()), 626 parents = [[('rev', p.rev()),
631 return scmutil.intrev(ctx) 647 return scmutil.intrev(ctx)
632 648
633 def showrevslist(name, revs, **args): 649 def showrevslist(name, revs, **args):
634 """helper to generate a list of revisions in which a mapped template will 650 """helper to generate a list of revisions in which a mapped template will
635 be evaluated""" 651 be evaluated"""
652 args = pycompat.byteskwargs(args)
636 repo = args['ctx'].repo() 653 repo = args['ctx'].repo()
637 revs = [str(r) for r in revs] # ifcontains() needs a list of str 654 revs = [str(r) for r in revs] # ifcontains() needs a list of str
638 f = _showlist(name, revs, args) 655 f = _showlist(name, revs, args)
639 return _hybrid(f, revs, 656 return _hybrid(f, revs,
640 lambda x: {name: x, 'ctx': repo[int(x)], 'revcache': {}}, 657 lambda x: {name: x, 'ctx': repo[int(x)], 'revcache': {}},
641 lambda d: d[name]) 658 lambda d: d[name])
642 659
643 @templatekeyword('subrepos') 660 @templatekeyword('subrepos')
644 def showsubrepos(**args): 661 def showsubrepos(**args):
645 """List of strings. Updated subrepositories in the changeset.""" 662 """List of strings. Updated subrepositories in the changeset."""
663 args = pycompat.byteskwargs(args)
646 ctx = args['ctx'] 664 ctx = args['ctx']
647 substate = ctx.substate 665 substate = ctx.substate
648 if not substate: 666 if not substate:
649 return showlist('subrepo', [], args) 667 return showlist('subrepo', [], args)
650 psubstate = ctx.parents()[0].substate or {} 668 psubstate = ctx.parents()[0].substate or {}
680 def showtroubles(**args): 698 def showtroubles(**args):
681 """List of strings. Evolution troubles affecting the changeset. 699 """List of strings. Evolution troubles affecting the changeset.
682 700
683 (EXPERIMENTAL) 701 (EXPERIMENTAL)
684 """ 702 """
703 args = pycompat.byteskwargs(args)
685 return showlist('trouble', args['ctx'].troubles(), args) 704 return showlist('trouble', args['ctx'].troubles(), args)
686 705
687 # tell hggettext to extract docstrings from these functions: 706 # tell hggettext to extract docstrings from these functions:
688 i18nfunctions = keywords.values() 707 i18nfunctions = keywords.values()