def _UpdateSerialisableInfo( self, version, old_serialisable_info ): if version == 1: serialisable_tag_display_types_to_service_keys_to_tag_filters = old_serialisable_info tag_autocomplete_options_list = HydrusSerialisable.SerialisableList() new_serialisable_info = [ serialisable_tag_display_types_to_service_keys_to_tag_filters, tag_autocomplete_options_list.GetSerialisableTuple() ] return ( 2, new_serialisable_info ) if version == 2: [ serialisable_tag_display_types_to_service_keys_to_tag_filters, serialisable_tag_autocomplete_options ] = old_serialisable_info service_keys_to_ordered_sibling_service_keys = collections.defaultdict( list ) service_keys_to_ordered_parent_service_keys = collections.defaultdict( list ) serialisable_service_keys_to_ordered_sibling_service_keys = HydrusSerialisable.SerialisableBytesDictionary( service_keys_to_ordered_sibling_service_keys ).GetSerialisableTuple() serialisable_service_keys_to_ordered_parent_service_keys = HydrusSerialisable.SerialisableBytesDictionary( service_keys_to_ordered_parent_service_keys ).GetSerialisableTuple() new_serialisable_info = [ serialisable_tag_display_types_to_service_keys_to_tag_filters, serialisable_tag_autocomplete_options, serialisable_service_keys_to_ordered_sibling_service_keys, serialisable_service_keys_to_ordered_parent_service_keys ] return ( 3, new_serialisable_info ) if version == 3: # took it out again lmao, down to the db [ serialisable_tag_display_types_to_service_keys_to_tag_filters, serialisable_tag_autocomplete_options, serialisable_service_keys_to_ordered_sibling_service_keys, serialisable_service_keys_to_ordered_parent_service_keys ] = old_serialisable_info new_serialisable_info = [ serialisable_tag_display_types_to_service_keys_to_tag_filters, serialisable_tag_autocomplete_options ] return ( 4, new_serialisable_info )
def test_basics(self): def test(obj, dupe_obj): self.assertEqual(len(list(obj.items())), len(list(dupe_obj.items()))) for (key, value) in list(obj.items()): self.assertEqual(value, dupe_obj[key]) # d = HydrusSerialisable.SerialisableDictionary() d[1] = 2 d[3] = 'test1' d['test2'] = 4 d['test3'] = 5 d[6] = HydrusSerialisable.SerialisableDictionary( {i: 'test' + str(i) for i in range(20)}) d[ClientSearch.Predicate(ClientSearch.PREDICATE_TYPE_TAG, 'test pred 1')] = 56 d[ClientSearch.Predicate( ClientSearch.PREDICATE_TYPE_TAG, 'test pred 2')] = HydrusSerialisable.SerialisableList([ ClientSearch.Predicate(ClientSearch.PREDICATE_TYPE_TAG, 'test' + str(i)) for i in range(10) ]) self.assertEqual(len(list(d.keys())), 7) for (key, value) in list(d.items()): self.assertEqual(d[key], value) self._dump_and_load_and_test(d, test) # db = HydrusSerialisable.SerialisableBytesDictionary() db[HydrusData.GenerateKey()] = HydrusData.GenerateKey() db[HydrusData.GenerateKey()] = [ HydrusData.GenerateKey() for i in range(10) ] db[1] = HydrusData.GenerateKey() db[2] = [HydrusData.GenerateKey() for i in range(10)] self.assertEqual(len(list(db.keys())), 4) for (key, value) in list(db.items()): self.assertEqual(db[key], value) self._dump_and_load_and_test(db, test)