Source code for ewokscore.persistence.json

from pathlib import Path
from typing import Any
from typing import Mapping
from typing import MutableMapping

from .._serialization import json
from . import atomic
from .file import FileProxy


[docs] def modify_dict(target: Mapping, source: MutableMapping): for name, value in source.items(): if isinstance(value, dict): new_target = target.setdefault(name, dict()) modify_dict(new_target, value) else: target[name] = value
[docs] class JsonProxy(FileProxy): SCHEME = "json" EXTENSIONS = [".json"] ALLOW_PATH_IN_FILE = False def _dump(self, path: Path, data: Any, **kwargs): with atomic.atomic_write(path, mode="w") as f: json.dump(data, f, **kwargs) def _load(self, path: Path): with open(path, mode="r") as f: return json.load(f)