infotext_versions.py 942 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. from modules import shared
  2. from packaging import version
  3. import re
  4. v160 = version.parse("1.6.0")
  5. v170_tsnr = version.parse("v1.7.0-225")
  6. def parse_version(text):
  7. if text is None:
  8. return None
  9. m = re.match(r'([^-]+-[^-]+)-.*', text)
  10. if m:
  11. text = m.group(1)
  12. try:
  13. return version.parse(text)
  14. except Exception:
  15. return None
  16. def backcompat(d):
  17. """Checks infotext Version field, and enables backwards compatibility options according to it."""
  18. if not shared.opts.auto_backcompat:
  19. return
  20. ver = parse_version(d.get("Version"))
  21. if ver is None:
  22. return
  23. if ver < v160 and '[' in d.get('Prompt', ''):
  24. d["Old prompt editing timelines"] = True
  25. if ver < v160 and d.get('Sampler', '') in ('DDIM', 'PLMS'):
  26. d["Pad conds v0"] = True
  27. if ver < v170_tsnr:
  28. d["Downcast alphas_cumprod"] = True