Python3 Migrate

This commit is contained in:
MariuszC
2020-01-18 20:01:00 +01:00
parent ea05af2d15
commit 6cd7e0fe44
691 changed files with 201846 additions and 598 deletions

View File

@@ -0,0 +1,59 @@
import gzip
import json
import logging
import pathlib
import tempfile
from mopidy import models
logger = logging.getLogger(__name__)
def load(path):
"""
Deserialize data from file.
:param path: full path to import file
:type path: pathlib.Path
:return: deserialized data
:rtype: dict
"""
# TODO: raise an exception in case of error?
if not path.is_file():
logger.info("File does not exist: %s", path)
return {}
try:
with gzip.open(str(path), "rb") as fp:
return json.load(fp, object_hook=models.model_json_decoder)
except (OSError, ValueError) as exc:
logger.warning(f"Loading JSON failed: {exc}")
return {}
def dump(path, data):
"""
Serialize data to file.
:param path: full path to export file
:type path: pathlib.Path
:param data: dictionary containing data to save
:type data: dict
"""
# TODO: cleanup directory/basename.* files.
tmp = tempfile.NamedTemporaryFile(
prefix=path.name + ".", dir=str(path.parent), delete=False
)
tmp_path = pathlib.Path(tmp.name)
try:
data_string = json.dumps(
data, cls=models.ModelJSONEncoder, indent=2, separators=(",", ": ")
)
with gzip.GzipFile(fileobj=tmp, mode="wb") as fp:
fp.write(data_string.encode())
tmp_path.rename(path)
finally:
if tmp_path.exists():
tmp_path.unlink()