shared_items.py 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. import sys
  2. from modules.shared_cmd_options import cmd_opts
  3. def realesrgan_models_names():
  4. import modules.realesrgan_model
  5. return [x.name for x in modules.realesrgan_model.get_realesrgan_models(None)]
  6. def dat_models_names():
  7. import modules.dat_model
  8. return [x.name for x in modules.dat_model.get_dat_models(None)]
  9. def postprocessing_scripts():
  10. import modules.scripts
  11. return modules.scripts.scripts_postproc.scripts
  12. def sd_vae_items():
  13. import modules.sd_vae
  14. return ["Automatic", "None"] + list(modules.sd_vae.vae_dict)
  15. def refresh_vae_list():
  16. import modules.sd_vae
  17. modules.sd_vae.refresh_vae_list()
  18. def cross_attention_optimizations():
  19. import modules.sd_hijack
  20. return ["Automatic"] + [x.title() for x in modules.sd_hijack.optimizers] + ["None"]
  21. def sd_unet_items():
  22. import modules.sd_unet
  23. return ["Automatic"] + [x.label for x in modules.sd_unet.unet_options] + ["None"]
  24. def refresh_unet_list():
  25. import modules.sd_unet
  26. modules.sd_unet.list_unets()
  27. def list_checkpoint_tiles(use_short=False):
  28. import modules.sd_models
  29. return modules.sd_models.checkpoint_tiles(use_short)
  30. def refresh_checkpoints():
  31. import modules.sd_models
  32. return modules.sd_models.list_models()
  33. def list_samplers():
  34. import modules.sd_samplers
  35. return modules.sd_samplers.all_samplers
  36. def reload_hypernetworks():
  37. from modules.hypernetworks import hypernetwork
  38. from modules import shared
  39. shared.hypernetworks = hypernetwork.list_hypernetworks(cmd_opts.hypernetwork_dir)
  40. def get_infotext_names():
  41. from modules import infotext_utils, shared
  42. res = {}
  43. for info in shared.opts.data_labels.values():
  44. if info.infotext:
  45. res[info.infotext] = 1
  46. for tab_data in infotext_utils.paste_fields.values():
  47. for _, name in tab_data.get("fields") or []:
  48. if isinstance(name, str):
  49. res[name] = 1
  50. return list(res)
  51. ui_reorder_categories_builtin_items = [
  52. "prompt",
  53. "image",
  54. "inpaint",
  55. "sampler",
  56. "accordions",
  57. "checkboxes",
  58. "dimensions",
  59. "cfg",
  60. "denoising",
  61. "seed",
  62. "batch",
  63. "override_settings",
  64. ]
  65. def ui_reorder_categories():
  66. from modules import scripts
  67. yield from ui_reorder_categories_builtin_items
  68. sections = {}
  69. for script in scripts.scripts_txt2img.scripts + scripts.scripts_img2img.scripts:
  70. if isinstance(script.section, str) and script.section not in ui_reorder_categories_builtin_items:
  71. sections[script.section] = 1
  72. yield from sections
  73. yield "scripts"
  74. class Shared(sys.modules[__name__].__class__):
  75. """
  76. this class is here to provide sd_model field as a property, so that it can be created and loaded on demand rather than
  77. at program startup.
  78. """
  79. sd_model_val = None
  80. @property
  81. def sd_model(self):
  82. import modules.sd_models
  83. return modules.sd_models.model_data.get_sd_model()
  84. @sd_model.setter
  85. def sd_model(self, value):
  86. import modules.sd_models
  87. modules.sd_models.model_data.set_sd_model(value)
  88. sys.modules['modules.shared'].__class__ = Shared