mercurial/templatefilters.py
changeset 34837 4fdc4adbc838
parent 34695 e178fcaa3933
child 35444 dad8a5071b0a
child 35539 d1aae6d4efc5
equal deleted inserted replaced
34836:537de0b14030 34837:4fdc4adbc838
    11 import re
    11 import re
    12 import time
    12 import time
    13 
    13 
    14 from . import (
    14 from . import (
    15     encoding,
    15     encoding,
       
    16     error,
    16     hbisect,
    17     hbisect,
    17     node,
    18     node,
    18     pycompat,
    19     pycompat,
    19     registrar,
    20     registrar,
    20     templatekw,
    21     templatekw,
   231         return 'true'
   232         return 'true'
   232     elif isinstance(obj, (int, long, float)):
   233     elif isinstance(obj, (int, long, float)):
   233         return pycompat.bytestr(obj)
   234         return pycompat.bytestr(obj)
   234     elif isinstance(obj, bytes):
   235     elif isinstance(obj, bytes):
   235         return '"%s"' % encoding.jsonescape(obj, paranoid=paranoid)
   236         return '"%s"' % encoding.jsonescape(obj, paranoid=paranoid)
       
   237     elif isinstance(obj, str):
       
   238         # This branch is unreachable on Python 2, because bytes == str
       
   239         # and we'll return in the next-earlier block in the elif
       
   240         # ladder. On Python 3, this helps us catch bugs before they
       
   241         # hurt someone.
       
   242         raise error.ProgrammingError(
       
   243             'Mercurial only does output with bytes on Python 3: %r' % obj)
   236     elif util.safehasattr(obj, 'keys'):
   244     elif util.safehasattr(obj, 'keys'):
   237         out = ['"%s": %s' % (encoding.jsonescape(k, paranoid=paranoid),
   245         out = ['"%s": %s' % (encoding.jsonescape(k, paranoid=paranoid),
   238                              json(v, paranoid))
   246                              json(v, paranoid))
   239                for k, v in sorted(obj.iteritems())]
   247                for k, v in sorted(obj.iteritems())]
   240         return '{' + ', '.join(out) + '}'
   248         return '{' + ', '.join(out) + '}'