diff options
author | AUTOMATIC1111 <16777216c@gmail.com> | 2023-08-30 05:54:31 +0000 |
---|---|---|
committer | AUTOMATIC1111 <16777216c@gmail.com> | 2023-08-30 05:54:31 +0000 |
commit | f874b1bcad05d7ea4c3cc28df82904ac7c12e64f (patch) | |
tree | 2c38f4ab4940765abb692b2c4aa808b881d81163 /modules/sd_models.py | |
parent | d156d5bffd0af0808a6c908aa6c3ac66481e5adb (diff) | |
download | stable-diffusion-webui-gfx803-f874b1bcad05d7ea4c3cc28df82904ac7c12e64f.tar.gz stable-diffusion-webui-gfx803-f874b1bcad05d7ea4c3cc28df82904ac7c12e64f.tar.bz2 stable-diffusion-webui-gfx803-f874b1bcad05d7ea4c3cc28df82904ac7c12e64f.zip |
keep order in list of checkpoints when loading model that doesn't have a checksum
Diffstat (limited to 'modules/sd_models.py')
-rw-r--r-- | modules/sd_models.py | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/modules/sd_models.py b/modules/sd_models.py index 547e93c4..930d0bee 100644 --- a/modules/sd_models.py +++ b/modules/sd_models.py @@ -27,6 +27,24 @@ checkpoint_alisases = checkpoint_aliases # for compatibility with old name checkpoints_loaded = collections.OrderedDict()
+def replace_key(d, key, new_key, value):
+ keys = list(d.keys())
+
+ d[new_key] = value
+
+ if key not in keys:
+ return d
+
+ index = keys.index(key)
+ keys[index] = new_key
+
+ new_d = {k: d[k] for k in keys}
+
+ d.clear()
+ d.update(new_d)
+ return d
+
+
class CheckpointInfo:
def __init__(self, filename):
self.filename = filename
@@ -91,9 +109,11 @@ class CheckpointInfo: if self.shorthash not in self.ids:
self.ids += [self.shorthash, self.sha256, f'{self.name} [{self.shorthash}]', f'{self.name_for_extra} [{self.shorthash}]']
- checkpoints_list.pop(self.title, None)
+ old_title = self.title
self.title = f'{self.name} [{self.shorthash}]'
self.short_title = f'{self.name_for_extra} [{self.shorthash}]'
+
+ replace_key(checkpoints_list, old_title, self.title, self)
self.register()
return self.shorthash
|