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)