Mercurial > hg
changeset 48960:c3a48dd506da
pycompat: remove json.loads polyfill for Python 3.5
We no longer support Python 3.5 so this can be deleted.
Differential Revision: https://phab.mercurial-scm.org/D12364
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Tue, 08 Mar 2022 19:11:03 -0800 |
parents | 9ac1a4507bb3 |
children | 8dec9abf2669 |
files | mercurial/pycompat.py |
diffstat | 1 files changed, 1 insertions(+), 41 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/pycompat.py Tue Mar 08 19:10:19 2022 -0800 +++ b/mercurial/pycompat.py Tue Mar 08 19:11:03 2022 -0800 @@ -376,47 +376,7 @@ iteritems = lambda x: x.items() itervalues = lambda x: x.values() -# Python 3.5's json.load and json.loads require str. We polyfill its -# code for detecting encoding from bytes. -if sys.version_info[0:2] < (3, 6): - - def _detect_encoding(b): - bstartswith = b.startswith - if bstartswith((codecs.BOM_UTF32_BE, codecs.BOM_UTF32_LE)): - return 'utf-32' - if bstartswith((codecs.BOM_UTF16_BE, codecs.BOM_UTF16_LE)): - return 'utf-16' - if bstartswith(codecs.BOM_UTF8): - return 'utf-8-sig' - - if len(b) >= 4: - if not b[0]: - # 00 00 -- -- - utf-32-be - # 00 XX -- -- - utf-16-be - return 'utf-16-be' if b[1] else 'utf-32-be' - if not b[1]: - # XX 00 00 00 - utf-32-le - # XX 00 00 XX - utf-16-le - # XX 00 XX -- - utf-16-le - return 'utf-16-le' if b[2] or b[3] else 'utf-32-le' - elif len(b) == 2: - if not b[0]: - # 00 XX - utf-16-be - return 'utf-16-be' - if not b[1]: - # XX 00 - utf-16-le - return 'utf-16-le' - # default - return 'utf-8' - - def json_loads(s, *args, **kwargs): - if isinstance(s, (bytes, bytearray)): - s = s.decode(_detect_encoding(s), 'surrogatepass') - - return json.loads(s, *args, **kwargs) - -else: - json_loads = json.loads +json_loads = json.loads isjython = sysplatform.startswith(b'java')