You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
1.0 KiB
Python
43 lines
1.0 KiB
Python
2 years ago
|
"""Python 2/3 compatibility"""
|
||
|
import json
|
||
|
import sys
|
||
|
|
||
|
|
||
|
# Handle reading and writing JSON in UTF-8, on Python 3 and 2.
|
||
|
|
||
|
if sys.version_info[0] >= 3:
|
||
|
# Python 3
|
||
|
def write_json(obj, path, **kwargs):
|
||
|
with open(path, 'w', encoding='utf-8') as f:
|
||
|
json.dump(obj, f, **kwargs)
|
||
|
|
||
|
def read_json(path):
|
||
|
with open(path, 'r', encoding='utf-8') as f:
|
||
|
return json.load(f)
|
||
|
|
||
|
else:
|
||
|
# Python 2
|
||
|
def write_json(obj, path, **kwargs):
|
||
|
with open(path, 'wb') as f:
|
||
|
json.dump(obj, f, encoding='utf-8', **kwargs)
|
||
|
|
||
|
def read_json(path):
|
||
|
with open(path, 'rb') as f:
|
||
|
return json.load(f)
|
||
|
|
||
|
|
||
|
# FileNotFoundError
|
||
|
|
||
|
try:
|
||
|
FileNotFoundError = FileNotFoundError
|
||
|
except NameError:
|
||
|
FileNotFoundError = IOError
|
||
|
|
||
|
|
||
|
if sys.version_info < (3, 6):
|
||
|
from toml import load as toml_load # noqa: F401
|
||
|
from toml import TomlDecodeError as TOMLDecodeError # noqa: F401
|
||
|
else:
|
||
|
from pip._vendor.tomli import load as toml_load # noqa: F401
|
||
|
from pip._vendor.tomli import TOMLDecodeError # noqa: F401
|