--- contrib/python/PyYAML/py2/yaml/scanner.py (index) +++ contrib/python/PyYAML/py2/yaml/scanner.py (working tree) @@ -26,6 +26,8 @@ __all__ = ['Scanner', 'ScannerError'] +import sys + from error import MarkedYAMLError from tokens import * @@ -1220,7 +1222,10 @@ class Scanner(object): "expected escape sequence of %d hexdecimal numbers, but found %r" % (length, self.peek(k).encode('utf-8')), self.get_mark()) code = int(self.prefix(length), 16) - chunks.append(unichr(code)) + if code <= sys.maxunicode: + chunks.append(unichr(code)) + else: + chunks.append(('\\U%08x' % code).decode('unicode-escape')) self.forward(length) elif ch in u'\r\n\x85\u2028\u2029': self.scan_line_break()