Commit e8f8e9e1 by Ned Batchelder

Enough is enough.

parent a5b1428b
...@@ -66,30 +66,32 @@ class CorrectMap(object): ...@@ -66,30 +66,32 @@ class CorrectMap(object):
def set_dict(self, correct_map): def set_dict(self, correct_map):
''' '''
Set internal dict of CorrectMap to provided correct_map dict Set internal dict of CorrectMap to provided correct_map dict.
correct_map is saved by LMS as a plaintext JSON dump of the correctmap dict. This correct_map is saved by LMS as a plaintext JSON dump of the correctmap
means that when the definition of CorrectMap (e.g. its properties) are altered, dict. This means that when the definition of CorrectMap (e.g. its
an existing correct_map dict will not coincide with the newest CorrectMap format as properties) are altered, an existing correct_map dict will not coincide
defined by self.set. with the newest CorrectMap format as defined by self.set.
For graceful migration, feed the contents of each correct map to self.set, rather than For graceful migration, feed the contents of each correct map to
making a direct copy of the given correct_map dict. This way, the common keys between self.set, rather than making a direct copy of the given correct_map
the incoming correct_map dict and the new CorrectMap instance will be written, while dict. This way, the common keys between the incoming correct_map dict
mismatched keys will be gracefully ignored. and the new CorrectMap instance will be written, while mismatched keys
will be gracefully ignored.
Special migration case: If correct_map is a one-level dict, then
convert it to the new dict of dicts format.
Special migration case:
If correct_map is a one-level dict, then convert it to the new dict of dicts format.
''' '''
if correct_map and not (type(correct_map[correct_map.keys()[0]]) == dict):
# empty current dict # empty current dict
self.__init__() self.__init__()
# create new dict entries # create new dict entries
if correct_map and not isinstance(correct_map.values()[0], dict):
# special migration
for k in correct_map: for k in correct_map:
self.set(k, correct_map[k]) self.set(k, correctness=correct_map[k])
else: else:
self.__init__()
for k in correct_map: for k in correct_map:
self.set(k, **correct_map[k]) self.set(k, **correct_map[k])
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment