|
|
"""Python 2/3 compatibility""" |
|
|
import io |
|
|
import json |
|
|
import sys |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if sys.version_info[0] >= 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: |
|
|
|
|
|
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) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try: |
|
|
FileNotFoundError = FileNotFoundError |
|
|
except NameError: |
|
|
FileNotFoundError = IOError |
|
|
|
|
|
|
|
|
if sys.version_info < (3, 6): |
|
|
from toml import load as _toml_load |
|
|
|
|
|
def toml_load(f): |
|
|
w = io.TextIOWrapper(f, encoding="utf8", newline="") |
|
|
try: |
|
|
return _toml_load(w) |
|
|
finally: |
|
|
w.detach() |
|
|
|
|
|
from toml import TomlDecodeError as TOMLDecodeError |
|
|
else: |
|
|
from pip._vendor.tomli import load as toml_load |
|
|
from pip._vendor.tomli import TOMLDecodeError |
|
|
|