Migrate .pickle config files to JSON format on first read

This commit is contained in:
Kovid Goyal 2019-03-17 18:37:12 +05:30
parent d0b99d7e68
commit 86c1d17474
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -238,6 +238,7 @@ class DynamicConfig(dict):
def refresh(self, clear_current=True): def refresh(self, clear_current=True):
d = {} d = {}
migrate = False
if clear_current: if clear_current:
self.clear() self.clear()
if os.path.exists(self.file_path): if os.path.exists(self.file_path):
@ -251,8 +252,16 @@ class DynamicConfig(dict):
self.name, err)) self.name, err))
else: else:
d = self.read_old_serialized_representation() d = self.read_old_serialized_representation()
migrate = bool(d)
else: else:
d = self.read_old_serialized_representation() d = self.read_old_serialized_representation()
migrate = bool(d)
if migrate and d:
raw = json_dumps(d)
with ExclusiveFile(self.file_path) as f:
f.seek(0), f.truncate()
f.write(raw)
self.update(d) self.update(d)
def __getitem__(self, key): def __getitem__(self, key):