use atomic writes inside to_json helper func

This commit is contained in:
Nick Sweeting 2019-04-16 23:21:49 -04:00
parent 717e390ef6
commit 22bea7a4f6
2 changed files with 4 additions and 3 deletions

View file

@ -20,7 +20,6 @@ from .config import (
)
from .util import (
scheme,
fuzzy_url,
ts_to_date,
urlencode,
htmlencode,

View file

@ -618,8 +618,10 @@ class ExtendedEncoder(JSONEncoder):
def to_json(obj: Any, file: IO=None, indent: Optional[int]=4, sort_keys: bool=True, cls=ExtendedEncoder) -> Optional[str]:
if file:
json.dump(obj, file, indent=indent, sort_keys=sort_keys, cls=ExtendedEncoder)
return None
path = os.path.realpath(file.name)
contents = json.dumps(obj, indent=indent, sort_keys=sort_keys, cls=ExtendedEncoder)
atomic_write(contents, path)
return contents
else:
return json.dumps(obj, indent=indent, sort_keys=sort_keys, cls=ExtendedEncoder)