InvokeAI 4.2.7rc1__tar.gz → 4.2.8__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (471) hide show
  1. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/InvokeAI.egg-info/PKG-INFO +1 -1
  2. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/InvokeAI.egg-info/SOURCES.txt +57 -17
  3. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/InvokeAI.egg-info/requires.txt +1 -2
  4. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/PKG-INFO +1 -1
  5. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/api/dependencies.py +15 -2
  6. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/api/routers/images.py +14 -2
  7. InvokeAI-4.2.8/invokeai/app/api/routers/style_presets.py +274 -0
  8. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/api_app.py +5 -3
  9. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/compel.py +4 -4
  10. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/controlnet_image_processors.py +27 -14
  11. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/create_gradient_mask.py +2 -1
  12. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/denoise_latents.py +87 -25
  13. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/fields.py +26 -1
  14. InvokeAI-4.2.8/invokeai/app/invocations/grounding_dino.py +100 -0
  15. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/latents_to_image.py +2 -2
  16. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/mask.py +27 -2
  17. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/primitives.py +40 -0
  18. InvokeAI-4.2.8/invokeai/app/invocations/segment_anything.py +161 -0
  19. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/config/config_default.py +7 -0
  20. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/events/events_fastapievents.py +14 -16
  21. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/image_files/image_files_disk.py +6 -13
  22. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/invocation_services.py +6 -0
  23. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/model_images/model_images_default.py +1 -2
  24. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/shared/sqlite/sqlite_util.py +2 -0
  25. InvokeAI-4.2.8/invokeai/app/services/shared/sqlite_migrator/migrations/migration_14.py +61 -0
  26. InvokeAI-4.2.8/invokeai/app/services/style_preset_images/default_style_preset_images/Anime.png +0 -0
  27. InvokeAI-4.2.8/invokeai/app/services/style_preset_images/default_style_preset_images/Architectural Visualization.png +0 -0
  28. InvokeAI-4.2.8/invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Character).png +0 -0
  29. InvokeAI-4.2.8/invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Fantasy).png +0 -0
  30. InvokeAI-4.2.8/invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Painterly).png +0 -0
  31. InvokeAI-4.2.8/invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Sci-Fi).png +0 -0
  32. InvokeAI-4.2.8/invokeai/app/services/style_preset_images/default_style_preset_images/Environment Art.png +0 -0
  33. InvokeAI-4.2.8/invokeai/app/services/style_preset_images/default_style_preset_images/Illustration.png +0 -0
  34. InvokeAI-4.2.8/invokeai/app/services/style_preset_images/default_style_preset_images/Interior Design (Visualization).png +0 -0
  35. InvokeAI-4.2.8/invokeai/app/services/style_preset_images/default_style_preset_images/Line Art.png +0 -0
  36. White).png +0 -0
  37. InvokeAI-4.2.8/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (General).png +0 -0
  38. InvokeAI-4.2.8/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (Landscape).png +0 -0
  39. InvokeAI-4.2.8/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (Portrait).png +0 -0
  40. InvokeAI-4.2.8/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (Studio Lighting).png +0 -0
  41. InvokeAI-4.2.8/invokeai/app/services/style_preset_images/default_style_preset_images/Product Rendering.png +0 -0
  42. InvokeAI-4.2.8/invokeai/app/services/style_preset_images/default_style_preset_images/Sketch.png +0 -0
  43. InvokeAI-4.2.8/invokeai/app/services/style_preset_images/default_style_preset_images/Vehicles.png +0 -0
  44. InvokeAI-4.2.8/invokeai/app/services/style_preset_images/style_preset_images_base.py +33 -0
  45. InvokeAI-4.2.8/invokeai/app/services/style_preset_images/style_preset_images_common.py +19 -0
  46. InvokeAI-4.2.8/invokeai/app/services/style_preset_images/style_preset_images_disk.py +88 -0
  47. InvokeAI-4.2.8/invokeai/app/services/style_preset_records/default_style_presets.json +146 -0
  48. InvokeAI-4.2.8/invokeai/app/services/style_preset_records/style_preset_records_base.py +42 -0
  49. InvokeAI-4.2.8/invokeai/app/services/style_preset_records/style_preset_records_common.py +139 -0
  50. InvokeAI-4.2.8/invokeai/app/services/style_preset_records/style_preset_records_sqlite.py +215 -0
  51. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/urls/urls_base.py +5 -0
  52. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/urls/urls_default.py +3 -0
  53. InvokeAI-4.2.8/invokeai/app/services/workflow_records/default_workflows/MultiDiffusion SD1.5.json +1430 -0
  54. InvokeAI-4.2.7rc1/invokeai/app/services/workflow_records/default_workflows/MultiDiffusion SDXL (Beta).json → InvokeAI-4.2.8/invokeai/app/services/workflow_records/default_workflows/MultiDiffusion SDXL.json +471 -1007
  55. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/util/custom_openapi.py +1 -1
  56. InvokeAI-4.2.8/invokeai/backend/image_util/depth_anything/depth_anything_pipeline.py +31 -0
  57. InvokeAI-4.2.8/invokeai/backend/image_util/grounding_dino/detection_result.py +22 -0
  58. InvokeAI-4.2.8/invokeai/backend/image_util/grounding_dino/grounding_dino_pipeline.py +37 -0
  59. InvokeAI-4.2.8/invokeai/backend/image_util/segment_anything/__init__.py +0 -0
  60. InvokeAI-4.2.8/invokeai/backend/image_util/segment_anything/mask_refinement.py +50 -0
  61. InvokeAI-4.2.8/invokeai/backend/image_util/segment_anything/segment_anything_pipeline.py +53 -0
  62. InvokeAI-4.2.8/invokeai/backend/ip_adapter/__init__.py +0 -0
  63. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/lora.py +128 -51
  64. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/load/model_loaders/stable_diffusion.py +3 -0
  65. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/load/model_util.py +15 -1
  66. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/starter_models.py +40 -33
  67. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_patcher.py +22 -61
  68. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/stable_diffusion/__init__.py +0 -2
  69. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/stable_diffusion/extensions/base.py +16 -4
  70. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/stable_diffusion/extensions/freeu.py +3 -3
  71. InvokeAI-4.2.8/invokeai/backend/stable_diffusion/extensions/inpaint.py +120 -0
  72. InvokeAI-4.2.8/invokeai/backend/stable_diffusion/extensions/inpaint_model.py +88 -0
  73. InvokeAI-4.2.8/invokeai/backend/stable_diffusion/extensions/lora.py +137 -0
  74. InvokeAI-4.2.8/invokeai/backend/stable_diffusion/extensions/seamless.py +71 -0
  75. InvokeAI-4.2.8/invokeai/backend/stable_diffusion/extensions/t2i_adapter.py +120 -0
  76. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/stable_diffusion/extensions_manager.py +12 -5
  77. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/stable_diffusion/schedulers/schedulers.py +31 -10
  78. InvokeAI-4.2.8/invokeai/backend/tiles/__init__.py +0 -0
  79. InvokeAI-4.2.8/invokeai/backend/util/original_weights_storage.py +39 -0
  80. InvokeAI-4.2.8/invokeai/frontend/cli/__init__.py +0 -0
  81. InvokeAI-4.2.8/invokeai/frontend/web/dist/assets/App-CWIiEcee.js +137 -0
  82. InvokeAI-4.2.8/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-B2NxUfIp.css +9 -0
  83. InvokeAI-4.2.8/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-BA4F4U51.js +1 -0
  84. InvokeAI-4.2.8/invokeai/frontend/web/dist/assets/index-CnfsQw4G.js +510 -0
  85. InvokeAI-4.2.8/invokeai/frontend/web/dist/assets/inter-cyrillic-ext-wght-normal-B2xhLi22.woff2 +0 -0
  86. InvokeAI-4.2.8/invokeai/frontend/web/dist/assets/inter-cyrillic-wght-normal-CMZtQduZ.woff2 +0 -0
  87. InvokeAI-4.2.8/invokeai/frontend/web/dist/assets/inter-greek-ext-wght-normal-CGAr0uHJ.woff2 +0 -0
  88. InvokeAI-4.2.8/invokeai/frontend/web/dist/assets/inter-greek-wght-normal-CaVNZxsx.woff2 +0 -0
  89. InvokeAI-4.2.8/invokeai/frontend/web/dist/assets/inter-latin-ext-wght-normal-CFHvXkgd.woff2 +0 -0
  90. InvokeAI-4.2.8/invokeai/frontend/web/dist/assets/inter-latin-wght-normal-C2S99t-D.woff2 +0 -0
  91. InvokeAI-4.2.8/invokeai/frontend/web/dist/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
  92. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/index.html +1 -1
  93. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/de.json +21 -3
  94. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/en.json +85 -7
  95. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/es.json +0 -1
  96. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/it.json +86 -13
  97. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/ja.json +0 -1
  98. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/ko.json +0 -1
  99. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/nl.json +0 -5
  100. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/ru.json +125 -14
  101. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/tr.json +0 -5
  102. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/zh_CN.json +477 -52
  103. InvokeAI-4.2.8/invokeai/version/invokeai_version.py +1 -0
  104. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/pyproject.toml +7 -2
  105. InvokeAI-4.2.7rc1/invokeai/backend/image_util/depth_anything/__init__.py +0 -90
  106. InvokeAI-4.2.7rc1/invokeai/backend/image_util/depth_anything/model/blocks.py +0 -145
  107. InvokeAI-4.2.7rc1/invokeai/backend/image_util/depth_anything/model/dpt.py +0 -183
  108. InvokeAI-4.2.7rc1/invokeai/backend/image_util/depth_anything/utilities/util.py +0 -227
  109. InvokeAI-4.2.7rc1/invokeai/backend/stable_diffusion/seamless.py +0 -51
  110. InvokeAI-4.2.7rc1/invokeai/frontend/web/dist/assets/App-eRckIUzO.js +0 -137
  111. InvokeAI-4.2.7rc1/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-DzjsLZSc.css +0 -9
  112. InvokeAI-4.2.7rc1/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-KWOypeWr.js +0 -1
  113. InvokeAI-4.2.7rc1/invokeai/frontend/web/dist/assets/index-Cg0nXI8H.js +0 -510
  114. InvokeAI-4.2.7rc1/invokeai/frontend/web/dist/assets/inter-cyrillic-ext-wght-normal-DIEz8p5i.woff2 +0 -0
  115. InvokeAI-4.2.7rc1/invokeai/frontend/web/dist/assets/inter-cyrillic-wght-normal-BmJJXa8e.woff2 +0 -0
  116. InvokeAI-4.2.7rc1/invokeai/frontend/web/dist/assets/inter-greek-ext-wght-normal-D5AYLNiq.woff2 +0 -0
  117. InvokeAI-4.2.7rc1/invokeai/frontend/web/dist/assets/inter-greek-wght-normal-DyIDNIyN.woff2 +0 -0
  118. InvokeAI-4.2.7rc1/invokeai/frontend/web/dist/assets/inter-latin-ext-wght-normal-CN1pIXkb.woff2 +0 -0
  119. InvokeAI-4.2.7rc1/invokeai/frontend/web/dist/assets/inter-latin-wght-normal-BgVq2Tq4.woff2 +0 -0
  120. InvokeAI-4.2.7rc1/invokeai/frontend/web/dist/assets/inter-vietnamese-wght-normal-_GQuwPVU.woff2 +0 -0
  121. InvokeAI-4.2.7rc1/invokeai/version/invokeai_version.py +0 -1
  122. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/InvokeAI.egg-info/dependency_links.txt +0 -0
  123. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/InvokeAI.egg-info/entry_points.txt +0 -0
  124. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/InvokeAI.egg-info/top_level.txt +0 -0
  125. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/LICENSE +0 -0
  126. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/LICENSE-SD1+SD2.txt +0 -0
  127. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/LICENSE-SDXL.txt +0 -0
  128. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/README.md +0 -0
  129. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/__init__.py +0 -0
  130. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/api/no_cache_staticfiles.py +0 -0
  131. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/api/routers/app_info.py +0 -0
  132. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/api/routers/board_images.py +0 -0
  133. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/api/routers/boards.py +0 -0
  134. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/api/routers/download_queue.py +0 -0
  135. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/api/routers/model_manager.py +0 -0
  136. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/api/routers/session_queue.py +0 -0
  137. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/api/routers/utilities.py +0 -0
  138. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/api/routers/workflows.py +0 -0
  139. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/api/sockets.py +0 -0
  140. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/assets/images/caution.png +0 -0
  141. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/__init__.py +0 -0
  142. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/baseinvocation.py +0 -0
  143. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/blend_latents.py +0 -0
  144. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/collections.py +0 -0
  145. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/constants.py +0 -0
  146. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/create_denoise_mask.py +0 -0
  147. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/crop_latents.py +0 -0
  148. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/custom_nodes/README.md +0 -0
  149. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/custom_nodes/init.py +0 -0
  150. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/cv.py +0 -0
  151. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/facetools.py +0 -0
  152. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/ideal_size.py +0 -0
  153. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/image.py +0 -0
  154. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/image_to_latents.py +0 -0
  155. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/infill.py +0 -0
  156. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/ip_adapter.py +0 -0
  157. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/math.py +0 -0
  158. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/metadata.py +0 -0
  159. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/model.py +0 -0
  160. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/noise.py +0 -0
  161. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/param_easing.py +0 -0
  162. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/prompt.py +0 -0
  163. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/resize_latents.py +0 -0
  164. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/scheduler.py +0 -0
  165. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/sdxl.py +0 -0
  166. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/spandrel_image_to_image.py +0 -0
  167. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/strings.py +0 -0
  168. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/t2i_adapter.py +0 -0
  169. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/tiled_multi_diffusion_denoise_latents.py +0 -0
  170. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/tiles.py +0 -0
  171. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/upscale.py +0 -0
  172. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/util.py +0 -0
  173. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/run_app.py +0 -0
  174. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/__init__.py +0 -0
  175. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/board_image_records/__init__.py +0 -0
  176. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/board_image_records/board_image_records_base.py +0 -0
  177. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/board_image_records/board_image_records_sqlite.py +0 -0
  178. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/board_images/__init__.py +0 -0
  179. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/board_images/board_images_base.py +0 -0
  180. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/board_images/board_images_common.py +0 -0
  181. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/board_images/board_images_default.py +0 -0
  182. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/board_records/board_records_base.py +0 -0
  183. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/board_records/board_records_common.py +0 -0
  184. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/board_records/board_records_sqlite.py +0 -0
  185. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/boards/__init__.py +0 -0
  186. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/boards/boards_base.py +0 -0
  187. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/boards/boards_common.py +0 -0
  188. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/boards/boards_default.py +0 -0
  189. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/bulk_download/__init__.py +0 -0
  190. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/bulk_download/bulk_download_base.py +0 -0
  191. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/bulk_download/bulk_download_common.py +0 -0
  192. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/bulk_download/bulk_download_default.py +0 -0
  193. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/config/__init__.py +0 -0
  194. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/config/config_common.py +0 -0
  195. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/download/__init__.py +0 -0
  196. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/download/download_base.py +0 -0
  197. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/download/download_default.py +0 -0
  198. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/events/__init__.py +0 -0
  199. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/events/events_base.py +0 -0
  200. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/events/events_common.py +0 -0
  201. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/image_files/__init__.py +0 -0
  202. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/image_files/image_files_base.py +0 -0
  203. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/image_files/image_files_common.py +0 -0
  204. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/image_records/__init__.py +0 -0
  205. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/image_records/image_records_base.py +0 -0
  206. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/image_records/image_records_common.py +0 -0
  207. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/image_records/image_records_sqlite.py +0 -0
  208. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/images/__init__.py +0 -0
  209. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/images/images_base.py +0 -0
  210. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/images/images_common.py +0 -0
  211. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/images/images_default.py +0 -0
  212. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/invocation_cache/__init__.py +0 -0
  213. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/invocation_cache/invocation_cache_base.py +0 -0
  214. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/invocation_cache/invocation_cache_common.py +0 -0
  215. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/invocation_cache/invocation_cache_memory.py +0 -0
  216. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/invocation_stats/__init__.py +0 -0
  217. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/invocation_stats/invocation_stats_base.py +0 -0
  218. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/invocation_stats/invocation_stats_common.py +0 -0
  219. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/invocation_stats/invocation_stats_default.py +0 -0
  220. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/invoker.py +0 -0
  221. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/item_storage/__init__.py +0 -0
  222. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/item_storage/item_storage_base.py +0 -0
  223. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/item_storage/item_storage_common.py +0 -0
  224. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/item_storage/item_storage_memory.py +0 -0
  225. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/model_images/model_images_base.py +0 -0
  226. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/model_images/model_images_common.py +0 -0
  227. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/model_install/__init__.py +0 -0
  228. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/model_install/model_install_base.py +0 -0
  229. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/model_install/model_install_common.py +0 -0
  230. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/model_install/model_install_default.py +0 -0
  231. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/model_load/__init__.py +0 -0
  232. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/model_load/model_load_base.py +0 -0
  233. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/model_load/model_load_default.py +0 -0
  234. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/model_manager/__init__.py +0 -0
  235. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/model_manager/model_manager_base.py +0 -0
  236. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/model_manager/model_manager_common.py +0 -0
  237. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/model_manager/model_manager_default.py +0 -0
  238. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/model_records/__init__.py +0 -0
  239. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/model_records/model_records_base.py +0 -0
  240. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/model_records/model_records_sql.py +0 -0
  241. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/names/__init__.py +0 -0
  242. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/names/names_base.py +0 -0
  243. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/names/names_common.py +0 -0
  244. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/names/names_default.py +0 -0
  245. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/object_serializer/object_serializer_base.py +0 -0
  246. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/object_serializer/object_serializer_common.py +0 -0
  247. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/object_serializer/object_serializer_disk.py +0 -0
  248. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/object_serializer/object_serializer_forward_cache.py +0 -0
  249. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/session_processor/__init__.py +0 -0
  250. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/session_processor/session_processor_base.py +0 -0
  251. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/session_processor/session_processor_common.py +0 -0
  252. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/session_processor/session_processor_default.py +0 -0
  253. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/session_queue/__init__.py +0 -0
  254. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/session_queue/session_queue_base.py +0 -0
  255. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/session_queue/session_queue_common.py +0 -0
  256. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/session_queue/session_queue_sqlite.py +0 -0
  257. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/shared/__init__.py +0 -0
  258. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/shared/graph.py +0 -0
  259. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/shared/invocation_context.py +0 -0
  260. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/shared/pagination.py +0 -0
  261. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/shared/sqlite/__init__.py +0 -0
  262. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/shared/sqlite/sqlite_common.py +0 -0
  263. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/shared/sqlite/sqlite_database.py +0 -0
  264. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/shared/sqlite_migrator/__init__.py +0 -0
  265. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/shared/sqlite_migrator/migrations/__init__.py +0 -0
  266. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_1.py +0 -0
  267. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_10.py +0 -0
  268. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_11.py +0 -0
  269. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_12.py +0 -0
  270. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_13.py +0 -0
  271. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_2.py +0 -0
  272. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_3.py +0 -0
  273. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_4.py +0 -0
  274. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_5.py +0 -0
  275. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_6.py +0 -0
  276. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_7.py +0 -0
  277. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_8.py +0 -0
  278. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_9.py +0 -0
  279. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/shared/sqlite_migrator/sqlite_migrator_common.py +0 -0
  280. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/shared/sqlite_migrator/sqlite_migrator_impl.py +0 -0
  281. {InvokeAI-4.2.7rc1/invokeai/app/services/urls → InvokeAI-4.2.8/invokeai/app/services/style_preset_images/default_style_preset_images}/__init__.py +0 -0
  282. {InvokeAI-4.2.7rc1/invokeai/app/services/workflow_records → InvokeAI-4.2.8/invokeai/app/services/style_preset_records}/__init__.py +0 -0
  283. {InvokeAI-4.2.7rc1/invokeai/app/util → InvokeAI-4.2.8/invokeai/app/services/urls}/__init__.py +0 -0
  284. {InvokeAI-4.2.7rc1/invokeai/backend/image_util/realesrgan → InvokeAI-4.2.8/invokeai/app/services/workflow_records}/__init__.py +0 -0
  285. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/workflow_records/default_workflows/ESRGAN Upscaling with Canny ControlNet.json +0 -0
  286. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/workflow_records/default_workflows/Face Detailer with IP-Adapter & Canny (See Note in Details).json +0 -0
  287. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/workflow_records/default_workflows/Multi ControlNet (Canny & Depth).json +0 -0
  288. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/workflow_records/default_workflows/Prompt from File.json +0 -0
  289. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/workflow_records/default_workflows/Text to Image - SD1.5.json +0 -0
  290. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/workflow_records/default_workflows/Text to Image - SDXL.json +0 -0
  291. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/workflow_records/default_workflows/Text to Image with LoRA.json +0 -0
  292. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/workflow_records/default_workflows/Tiled Upscaling (Beta).json +0 -0
  293. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/workflow_records/workflow_records_base.py +0 -0
  294. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/workflow_records/workflow_records_common.py +0 -0
  295. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/workflow_records/workflow_records_sqlite.py +0 -0
  296. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/shared/__init__.py +0 -0
  297. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/shared/models.py +0 -0
  298. {InvokeAI-4.2.7rc1/invokeai/backend/ip_adapter → InvokeAI-4.2.8/invokeai/app/util}/__init__.py +0 -0
  299. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/util/controlnet_utils.py +0 -0
  300. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/util/metaenum.py +0 -0
  301. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/util/misc.py +0 -0
  302. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/util/model_exclude_null.py +0 -0
  303. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/util/profiler.py +0 -0
  304. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/util/step_callback.py +0 -0
  305. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/util/suppress_output.py +0 -0
  306. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/util/thumbnails.py +0 -0
  307. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/util/ti_utils.py +0 -0
  308. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/assets/fonts/inter/Inter-Regular.ttf +0 -0
  309. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/__init__.py +0 -0
  310. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/image_util/__init__.py +0 -0
  311. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/image_util/basicsr/__init__.py +0 -0
  312. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/image_util/basicsr/arch_util.py +0 -0
  313. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/image_util/basicsr/rrdbnet_arch.py +0 -0
  314. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/image_util/canny.py +0 -0
  315. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/image_util/dw_openpose/__init__.py +0 -0
  316. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/image_util/dw_openpose/onnxdet.py +0 -0
  317. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/image_util/dw_openpose/onnxpose.py +0 -0
  318. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/image_util/dw_openpose/utils.py +0 -0
  319. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/image_util/dw_openpose/wholebody.py +0 -0
  320. {InvokeAI-4.2.7rc1/invokeai/backend/tiles → InvokeAI-4.2.8/invokeai/backend/image_util/grounding_dino}/__init__.py +0 -0
  321. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/image_util/hed.py +0 -0
  322. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/image_util/infill_methods/cv2_inpaint.py +0 -0
  323. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/image_util/infill_methods/lama.py +0 -0
  324. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/image_util/infill_methods/mosaic.py +0 -0
  325. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/image_util/infill_methods/patchmatch.py +0 -0
  326. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/image_util/infill_methods/tile.py +0 -0
  327. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/image_util/invisible_watermark.py +0 -0
  328. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/image_util/lineart.py +0 -0
  329. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/image_util/lineart_anime.py +0 -0
  330. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/image_util/pngwriter.py +0 -0
  331. {InvokeAI-4.2.7rc1/invokeai/frontend/cli → InvokeAI-4.2.8/invokeai/backend/image_util/realesrgan}/__init__.py +0 -0
  332. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/image_util/realesrgan/realesrgan.py +0 -0
  333. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/image_util/safety_checker.py +0 -0
  334. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/image_util/util.py +0 -0
  335. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/ip_adapter/ip_adapter.py +0 -0
  336. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/ip_adapter/ip_attention_weights.py +0 -0
  337. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/ip_adapter/resampler.py +0 -0
  338. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_hash/hash_validator.py +0 -0
  339. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_hash/model_hash.py +0 -0
  340. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/__init__.py +0 -0
  341. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/config.py +0 -0
  342. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/load/__init__.py +0 -0
  343. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/load/load_base.py +0 -0
  344. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/load/load_default.py +0 -0
  345. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/load/memory_snapshot.py +0 -0
  346. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/load/model_cache/__init__.py +0 -0
  347. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/load/model_cache/model_cache_base.py +0 -0
  348. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/load/model_cache/model_cache_default.py +0 -0
  349. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/load/model_cache/model_locker.py +0 -0
  350. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/load/model_loader_registry.py +0 -0
  351. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/load/model_loaders/__init__.py +0 -0
  352. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/load/model_loaders/controlnet.py +0 -0
  353. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/load/model_loaders/generic_diffusers.py +0 -0
  354. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/load/model_loaders/ip_adapter.py +0 -0
  355. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/load/model_loaders/lora.py +0 -0
  356. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/load/model_loaders/onnx.py +0 -0
  357. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/load/model_loaders/spandrel_image_to_image.py +0 -0
  358. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/load/model_loaders/textual_inversion.py +0 -0
  359. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/load/model_loaders/vae.py +0 -0
  360. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/load/optimizations.py +0 -0
  361. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/merge.py +0 -0
  362. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/metadata/__init__.py +0 -0
  363. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/metadata/fetch/__init__.py +0 -0
  364. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/metadata/fetch/fetch_base.py +0 -0
  365. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/metadata/fetch/huggingface.py +0 -0
  366. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/metadata/metadata_base.py +0 -0
  367. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/probe.py +0 -0
  368. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/search.py +0 -0
  369. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/util/libc_util.py +0 -0
  370. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/util/model_util.py +0 -0
  371. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/util/select_hf_files.py +0 -0
  372. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/onnx/onnx_runtime.py +0 -0
  373. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/raw_model.py +0 -0
  374. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/spandrel_image_to_image_model.py +0 -0
  375. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/stable_diffusion/denoise_context.py +0 -0
  376. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/stable_diffusion/diffusers_pipeline.py +0 -0
  377. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/stable_diffusion/diffusion/__init__.py +0 -0
  378. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/stable_diffusion/diffusion/conditioning_data.py +0 -0
  379. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/stable_diffusion/diffusion/custom_atttention.py +0 -0
  380. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/stable_diffusion/diffusion/regional_ip_data.py +0 -0
  381. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/stable_diffusion/diffusion/regional_prompt_data.py +0 -0
  382. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/stable_diffusion/diffusion/shared_invokeai_diffusion.py +0 -0
  383. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/stable_diffusion/diffusion/unet_attention_patcher.py +0 -0
  384. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/stable_diffusion/diffusion_backend.py +0 -0
  385. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/stable_diffusion/extension_callback_type.py +0 -0
  386. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/stable_diffusion/extensions/controlnet.py +0 -0
  387. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/stable_diffusion/extensions/preview.py +0 -0
  388. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/stable_diffusion/extensions/rescale_cfg.py +0 -0
  389. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/stable_diffusion/multi_diffusion_pipeline.py +0 -0
  390. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/stable_diffusion/schedulers/__init__.py +0 -0
  391. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/stable_diffusion/vae_tiling.py +0 -0
  392. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/textual_inversion.py +0 -0
  393. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/tiles/tiles.py +0 -0
  394. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/tiles/utils.py +0 -0
  395. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/util/__init__.py +0 -0
  396. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/util/attention.py +0 -0
  397. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/util/catch_sigint.py +0 -0
  398. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/util/db_maintenance.py +0 -0
  399. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/util/devices.py +0 -0
  400. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/util/hotfixes.py +0 -0
  401. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/util/logging.py +0 -0
  402. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/util/mask.py +0 -0
  403. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/util/mps_fixes.py +0 -0
  404. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/util/silence_warnings.py +0 -0
  405. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/util/test_utils.py +0 -0
  406. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/util/util.py +0 -0
  407. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/configs/controlnet/cldm_v15.yaml +0 -0
  408. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/configs/controlnet/cldm_v21.yaml +0 -0
  409. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/configs/stable-diffusion/sd_xl_base.yaml +0 -0
  410. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/configs/stable-diffusion/sd_xl_inpaint.yaml +0 -0
  411. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/configs/stable-diffusion/sd_xl_refiner.yaml +0 -0
  412. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/configs/stable-diffusion/v1-finetune.yaml +0 -0
  413. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/configs/stable-diffusion/v1-finetune_style.yaml +0 -0
  414. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/configs/stable-diffusion/v1-inference-v.yaml +0 -0
  415. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/configs/stable-diffusion/v1-inference.yaml +0 -0
  416. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/configs/stable-diffusion/v1-inpainting-inference.yaml +0 -0
  417. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/configs/stable-diffusion/v1-m1-finetune.yaml +0 -0
  418. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/configs/stable-diffusion/v2-inference-v.yaml +0 -0
  419. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/configs/stable-diffusion/v2-inference.yaml +0 -0
  420. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/configs/stable-diffusion/v2-inpainting-inference-v.yaml +0 -0
  421. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/configs/stable-diffusion/v2-inpainting-inference.yaml +0 -0
  422. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/configs/stable-diffusion/v2-midas-inference.yaml +0 -0
  423. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/__init__.py +0 -0
  424. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/cli/arg_parser.py +0 -0
  425. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/install/__init__.py +0 -0
  426. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/install/import_images.py +0 -0
  427. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/__init__.py +0 -0
  428. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/assets/App-DEu4J2pT.css +0 -0
  429. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/assets/images/invoke-alert-favicon.svg +0 -0
  430. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/assets/images/invoke-avatar-circle.svg +0 -0
  431. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/assets/images/invoke-avatar-square.svg +0 -0
  432. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/assets/images/invoke-favicon.png +0 -0
  433. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/assets/images/invoke-favicon.svg +0 -0
  434. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/assets/images/invoke-key-char-lrg.svg +0 -0
  435. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/assets/images/invoke-key-char-sml.svg +0 -0
  436. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/assets/images/invoke-key-wht-lrg.svg +0 -0
  437. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/assets/images/invoke-key-wht-sml.svg +0 -0
  438. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/assets/images/invoke-symbol-char-lrg.svg +0 -0
  439. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/assets/images/invoke-symbol-char-sml.svg +0 -0
  440. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/assets/images/invoke-symbol-wht-lrg.svg +0 -0
  441. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/assets/images/invoke-symbol-wht-sml.svg +0 -0
  442. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/assets/images/invoke-symbol-ylw-lrg.svg +0 -0
  443. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/assets/images/invoke-tag-char-lrg.svg +0 -0
  444. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/assets/images/invoke-tag-char-sml.svg +0 -0
  445. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/assets/images/invoke-tag-lrg.svg +0 -0
  446. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/assets/images/invoke-tag-sml.svg +0 -0
  447. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/assets/images/invoke-wordmark-charcoal.svg +0 -0
  448. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/assets/images/invoke-wordmark-white.svg +0 -0
  449. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/assets/images/mask.svg +0 -0
  450. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/assets/images/transparent_bg.png +0 -0
  451. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/ar.json +0 -0
  452. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/az.json +0 -0
  453. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/bg.json +0 -0
  454. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/fi.json +0 -0
  455. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/fr.json +0 -0
  456. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/he.json +0 -0
  457. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/hu.json +0 -0
  458. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/mn.json +0 -0
  459. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/pl.json +0 -0
  460. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/pt.json +0 -0
  461. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/pt_BR.json +0 -0
  462. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/ro.json +0 -0
  463. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/sv.json +0 -0
  464. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/uk.json +0 -0
  465. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/vi.json +0 -0
  466. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/zh_Hant.json +0 -0
  467. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/scripts/clean_translations.py +0 -0
  468. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/static/docs/invoke-favicon-docs.svg +0 -0
  469. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/invocation_api/__init__.py +0 -0
  470. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/version/__init__.py +0 -0
  471. {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: InvokeAI
3
- Version: 4.2.7rc1
3
+ Version: 4.2.8
4
4
  Summary: An implementation of Stable Diffusion which provides various new features and options to aid the image generation process
5
5
  Author-email: The InvokeAI Project <lincoln.stein@gmail.com>
6
6
  License: Apache License
@@ -22,6 +22,7 @@ invokeai/app/api/routers/download_queue.py
22
22
  invokeai/app/api/routers/images.py
23
23
  invokeai/app/api/routers/model_manager.py
24
24
  invokeai/app/api/routers/session_queue.py
25
+ invokeai/app/api/routers/style_presets.py
25
26
  invokeai/app/api/routers/utilities.py
26
27
  invokeai/app/api/routers/workflows.py
27
28
  invokeai/app/assets/images/caution.png
@@ -39,6 +40,7 @@ invokeai/app/invocations/cv.py
39
40
  invokeai/app/invocations/denoise_latents.py
40
41
  invokeai/app/invocations/facetools.py
41
42
  invokeai/app/invocations/fields.py
43
+ invokeai/app/invocations/grounding_dino.py
42
44
  invokeai/app/invocations/ideal_size.py
43
45
  invokeai/app/invocations/image.py
44
46
  invokeai/app/invocations/image_to_latents.py
@@ -56,6 +58,7 @@ invokeai/app/invocations/prompt.py
56
58
  invokeai/app/invocations/resize_latents.py
57
59
  invokeai/app/invocations/scheduler.py
58
60
  invokeai/app/invocations/sdxl.py
61
+ invokeai/app/invocations/segment_anything.py
59
62
  invokeai/app/invocations/spandrel_image_to_image.py
60
63
  invokeai/app/invocations/strings.py
61
64
  invokeai/app/invocations/t2i_adapter.py
@@ -170,6 +173,7 @@ invokeai/app/services/shared/sqlite_migrator/migrations/migration_10.py
170
173
  invokeai/app/services/shared/sqlite_migrator/migrations/migration_11.py
171
174
  invokeai/app/services/shared/sqlite_migrator/migrations/migration_12.py
172
175
  invokeai/app/services/shared/sqlite_migrator/migrations/migration_13.py
176
+ invokeai/app/services/shared/sqlite_migrator/migrations/migration_14.py
173
177
  invokeai/app/services/shared/sqlite_migrator/migrations/migration_2.py
174
178
  invokeai/app/services/shared/sqlite_migrator/migrations/migration_3.py
175
179
  invokeai/app/services/shared/sqlite_migrator/migrations/migration_4.py
@@ -178,6 +182,33 @@ invokeai/app/services/shared/sqlite_migrator/migrations/migration_6.py
178
182
  invokeai/app/services/shared/sqlite_migrator/migrations/migration_7.py
179
183
  invokeai/app/services/shared/sqlite_migrator/migrations/migration_8.py
180
184
  invokeai/app/services/shared/sqlite_migrator/migrations/migration_9.py
185
+ invokeai/app/services/style_preset_images/style_preset_images_base.py
186
+ invokeai/app/services/style_preset_images/style_preset_images_common.py
187
+ invokeai/app/services/style_preset_images/style_preset_images_disk.py
188
+ invokeai/app/services/style_preset_images/default_style_preset_images/Anime.png
189
+ invokeai/app/services/style_preset_images/default_style_preset_images/Architectural Visualization.png
190
+ invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Character).png
191
+ invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Fantasy).png
192
+ invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Painterly).png
193
+ invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Sci-Fi).png
194
+ invokeai/app/services/style_preset_images/default_style_preset_images/Environment Art.png
195
+ invokeai/app/services/style_preset_images/default_style_preset_images/Illustration.png
196
+ invokeai/app/services/style_preset_images/default_style_preset_images/Interior Design (Visualization).png
197
+ invokeai/app/services/style_preset_images/default_style_preset_images/Line Art.png
198
+ invokeai/app/services/style_preset_images/default_style_preset_images/Photography (Black and White).png
199
+ invokeai/app/services/style_preset_images/default_style_preset_images/Photography (General).png
200
+ invokeai/app/services/style_preset_images/default_style_preset_images/Photography (Landscape).png
201
+ invokeai/app/services/style_preset_images/default_style_preset_images/Photography (Portrait).png
202
+ invokeai/app/services/style_preset_images/default_style_preset_images/Photography (Studio Lighting).png
203
+ invokeai/app/services/style_preset_images/default_style_preset_images/Product Rendering.png
204
+ invokeai/app/services/style_preset_images/default_style_preset_images/Sketch.png
205
+ invokeai/app/services/style_preset_images/default_style_preset_images/Vehicles.png
206
+ invokeai/app/services/style_preset_images/default_style_preset_images/__init__.py
207
+ invokeai/app/services/style_preset_records/__init__.py
208
+ invokeai/app/services/style_preset_records/default_style_presets.json
209
+ invokeai/app/services/style_preset_records/style_preset_records_base.py
210
+ invokeai/app/services/style_preset_records/style_preset_records_common.py
211
+ invokeai/app/services/style_preset_records/style_preset_records_sqlite.py
181
212
  invokeai/app/services/urls/__init__.py
182
213
  invokeai/app/services/urls/urls_base.py
183
214
  invokeai/app/services/urls/urls_default.py
@@ -188,7 +219,8 @@ invokeai/app/services/workflow_records/workflow_records_sqlite.py
188
219
  invokeai/app/services/workflow_records/default_workflows/ESRGAN Upscaling with Canny ControlNet.json
189
220
  invokeai/app/services/workflow_records/default_workflows/Face Detailer with IP-Adapter & Canny (See Note in Details).json
190
221
  invokeai/app/services/workflow_records/default_workflows/Multi ControlNet (Canny & Depth).json
191
- invokeai/app/services/workflow_records/default_workflows/MultiDiffusion SDXL (Beta).json
222
+ invokeai/app/services/workflow_records/default_workflows/MultiDiffusion SD1.5.json
223
+ invokeai/app/services/workflow_records/default_workflows/MultiDiffusion SDXL.json
192
224
  invokeai/app/services/workflow_records/default_workflows/Prompt from File.json
193
225
  invokeai/app/services/workflow_records/default_workflows/Text to Image - SD1.5.json
194
226
  invokeai/app/services/workflow_records/default_workflows/Text to Image - SDXL.json
@@ -226,15 +258,15 @@ invokeai/backend/image_util/util.py
226
258
  invokeai/backend/image_util/basicsr/__init__.py
227
259
  invokeai/backend/image_util/basicsr/arch_util.py
228
260
  invokeai/backend/image_util/basicsr/rrdbnet_arch.py
229
- invokeai/backend/image_util/depth_anything/__init__.py
230
- invokeai/backend/image_util/depth_anything/model/blocks.py
231
- invokeai/backend/image_util/depth_anything/model/dpt.py
232
- invokeai/backend/image_util/depth_anything/utilities/util.py
261
+ invokeai/backend/image_util/depth_anything/depth_anything_pipeline.py
233
262
  invokeai/backend/image_util/dw_openpose/__init__.py
234
263
  invokeai/backend/image_util/dw_openpose/onnxdet.py
235
264
  invokeai/backend/image_util/dw_openpose/onnxpose.py
236
265
  invokeai/backend/image_util/dw_openpose/utils.py
237
266
  invokeai/backend/image_util/dw_openpose/wholebody.py
267
+ invokeai/backend/image_util/grounding_dino/__init__.py
268
+ invokeai/backend/image_util/grounding_dino/detection_result.py
269
+ invokeai/backend/image_util/grounding_dino/grounding_dino_pipeline.py
238
270
  invokeai/backend/image_util/infill_methods/cv2_inpaint.py
239
271
  invokeai/backend/image_util/infill_methods/lama.py
240
272
  invokeai/backend/image_util/infill_methods/mosaic.py
@@ -242,6 +274,9 @@ invokeai/backend/image_util/infill_methods/patchmatch.py
242
274
  invokeai/backend/image_util/infill_methods/tile.py
243
275
  invokeai/backend/image_util/realesrgan/__init__.py
244
276
  invokeai/backend/image_util/realesrgan/realesrgan.py
277
+ invokeai/backend/image_util/segment_anything/__init__.py
278
+ invokeai/backend/image_util/segment_anything/mask_refinement.py
279
+ invokeai/backend/image_util/segment_anything/segment_anything_pipeline.py
245
280
  invokeai/backend/ip_adapter/__init__.py
246
281
  invokeai/backend/ip_adapter/ip_adapter.py
247
282
  invokeai/backend/ip_adapter/ip_attention_weights.py
@@ -291,7 +326,6 @@ invokeai/backend/stable_diffusion/diffusion_backend.py
291
326
  invokeai/backend/stable_diffusion/extension_callback_type.py
292
327
  invokeai/backend/stable_diffusion/extensions_manager.py
293
328
  invokeai/backend/stable_diffusion/multi_diffusion_pipeline.py
294
- invokeai/backend/stable_diffusion/seamless.py
295
329
  invokeai/backend/stable_diffusion/vae_tiling.py
296
330
  invokeai/backend/stable_diffusion/diffusion/__init__.py
297
331
  invokeai/backend/stable_diffusion/diffusion/conditioning_data.py
@@ -303,8 +337,13 @@ invokeai/backend/stable_diffusion/diffusion/unet_attention_patcher.py
303
337
  invokeai/backend/stable_diffusion/extensions/base.py
304
338
  invokeai/backend/stable_diffusion/extensions/controlnet.py
305
339
  invokeai/backend/stable_diffusion/extensions/freeu.py
340
+ invokeai/backend/stable_diffusion/extensions/inpaint.py
341
+ invokeai/backend/stable_diffusion/extensions/inpaint_model.py
342
+ invokeai/backend/stable_diffusion/extensions/lora.py
306
343
  invokeai/backend/stable_diffusion/extensions/preview.py
307
344
  invokeai/backend/stable_diffusion/extensions/rescale_cfg.py
345
+ invokeai/backend/stable_diffusion/extensions/seamless.py
346
+ invokeai/backend/stable_diffusion/extensions/t2i_adapter.py
308
347
  invokeai/backend/stable_diffusion/schedulers/__init__.py
309
348
  invokeai/backend/stable_diffusion/schedulers/schedulers.py
310
349
  invokeai/backend/tiles/__init__.py
@@ -319,6 +358,7 @@ invokeai/backend/util/hotfixes.py
319
358
  invokeai/backend/util/logging.py
320
359
  invokeai/backend/util/mask.py
321
360
  invokeai/backend/util/mps_fixes.py
361
+ invokeai/backend/util/original_weights_storage.py
322
362
  invokeai/backend/util/silence_warnings.py
323
363
  invokeai/backend/util/test_utils.py
324
364
  invokeai/backend/util/util.py
@@ -345,18 +385,18 @@ invokeai/frontend/install/__init__.py
345
385
  invokeai/frontend/install/import_images.py
346
386
  invokeai/frontend/web/__init__.py
347
387
  invokeai/frontend/web/dist/index.html
388
+ invokeai/frontend/web/dist/assets/App-CWIiEcee.js
348
389
  invokeai/frontend/web/dist/assets/App-DEu4J2pT.css
349
- invokeai/frontend/web/dist/assets/App-eRckIUzO.js
350
- invokeai/frontend/web/dist/assets/ThemeLocaleProvider-DzjsLZSc.css
351
- invokeai/frontend/web/dist/assets/ThemeLocaleProvider-KWOypeWr.js
352
- invokeai/frontend/web/dist/assets/index-Cg0nXI8H.js
353
- invokeai/frontend/web/dist/assets/inter-cyrillic-ext-wght-normal-DIEz8p5i.woff2
354
- invokeai/frontend/web/dist/assets/inter-cyrillic-wght-normal-BmJJXa8e.woff2
355
- invokeai/frontend/web/dist/assets/inter-greek-ext-wght-normal-D5AYLNiq.woff2
356
- invokeai/frontend/web/dist/assets/inter-greek-wght-normal-DyIDNIyN.woff2
357
- invokeai/frontend/web/dist/assets/inter-latin-ext-wght-normal-CN1pIXkb.woff2
358
- invokeai/frontend/web/dist/assets/inter-latin-wght-normal-BgVq2Tq4.woff2
359
- invokeai/frontend/web/dist/assets/inter-vietnamese-wght-normal-_GQuwPVU.woff2
390
+ invokeai/frontend/web/dist/assets/ThemeLocaleProvider-B2NxUfIp.css
391
+ invokeai/frontend/web/dist/assets/ThemeLocaleProvider-BA4F4U51.js
392
+ invokeai/frontend/web/dist/assets/index-CnfsQw4G.js
393
+ invokeai/frontend/web/dist/assets/inter-cyrillic-ext-wght-normal-B2xhLi22.woff2
394
+ invokeai/frontend/web/dist/assets/inter-cyrillic-wght-normal-CMZtQduZ.woff2
395
+ invokeai/frontend/web/dist/assets/inter-greek-ext-wght-normal-CGAr0uHJ.woff2
396
+ invokeai/frontend/web/dist/assets/inter-greek-wght-normal-CaVNZxsx.woff2
397
+ invokeai/frontend/web/dist/assets/inter-latin-ext-wght-normal-CFHvXkgd.woff2
398
+ invokeai/frontend/web/dist/assets/inter-latin-wght-normal-C2S99t-D.woff2
399
+ invokeai/frontend/web/dist/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2
360
400
  invokeai/frontend/web/dist/assets/images/invoke-alert-favicon.svg
361
401
  invokeai/frontend/web/dist/assets/images/invoke-avatar-circle.svg
362
402
  invokeai/frontend/web/dist/assets/images/invoke-avatar-square.svg
@@ -35,7 +35,7 @@ dynamicprompts
35
35
  easing-functions
36
36
  einops
37
37
  facexlib
38
- matplotlib
38
+ matplotlib!=3.9.1
39
39
  npyscreen
40
40
  omegaconf
41
41
  picklescan
@@ -50,7 +50,6 @@ requests~=2.28.2
50
50
  rich~=13.3
51
51
  scikit-image~=0.21.0
52
52
  semver~=3.0.1
53
- send2trash
54
53
  test-tube~=0.7.5
55
54
 
56
55
  [:sys_platform == "win32"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: InvokeAI
3
- Version: 4.2.7rc1
3
+ Version: 4.2.8
4
4
  Summary: An implementation of Stable Diffusion which provides various new features and options to aid the image generation process
5
5
  Author-email: The InvokeAI Project <lincoln.stein@gmail.com>
6
6
  License: Apache License
@@ -1,5 +1,6 @@
1
1
  # Copyright (c) 2022 Kyle Schouviller (https://github.com/kyle0654)
2
2
 
3
+ import asyncio
3
4
  from logging import Logger
4
5
 
5
6
  import torch
@@ -31,6 +32,8 @@ from invokeai.app.services.session_processor.session_processor_default import (
31
32
  )
32
33
  from invokeai.app.services.session_queue.session_queue_sqlite import SqliteSessionQueue
33
34
  from invokeai.app.services.shared.sqlite.sqlite_util import init_db
35
+ from invokeai.app.services.style_preset_images.style_preset_images_disk import StylePresetImageFileStorageDisk
36
+ from invokeai.app.services.style_preset_records.style_preset_records_sqlite import SqliteStylePresetRecordsStorage
34
37
  from invokeai.app.services.urls.urls_default import LocalUrlService
35
38
  from invokeai.app.services.workflow_records.workflow_records_sqlite import SqliteWorkflowRecordsStorage
36
39
  from invokeai.backend.stable_diffusion.diffusion.conditioning_data import ConditioningFieldData
@@ -63,7 +66,12 @@ class ApiDependencies:
63
66
  invoker: Invoker
64
67
 
65
68
  @staticmethod
66
- def initialize(config: InvokeAIAppConfig, event_handler_id: int, logger: Logger = logger) -> None:
69
+ def initialize(
70
+ config: InvokeAIAppConfig,
71
+ event_handler_id: int,
72
+ loop: asyncio.AbstractEventLoop,
73
+ logger: Logger = logger,
74
+ ) -> None:
67
75
  logger.info(f"InvokeAI version {__version__}")
68
76
  logger.info(f"Root directory = {str(config.root_path)}")
69
77
 
@@ -74,6 +82,7 @@ class ApiDependencies:
74
82
  image_files = DiskImageFileStorage(f"{output_folder}/images")
75
83
 
76
84
  model_images_folder = config.models_path
85
+ style_presets_folder = config.style_presets_path
77
86
 
78
87
  db = init_db(config=config, logger=logger, image_files=image_files)
79
88
 
@@ -84,7 +93,7 @@ class ApiDependencies:
84
93
  board_images = BoardImagesService()
85
94
  board_records = SqliteBoardRecordStorage(db=db)
86
95
  boards = BoardService()
87
- events = FastAPIEventService(event_handler_id)
96
+ events = FastAPIEventService(event_handler_id, loop=loop)
88
97
  bulk_download = BulkDownloadService()
89
98
  image_records = SqliteImageRecordStorage(db=db)
90
99
  images = ImageService()
@@ -109,6 +118,8 @@ class ApiDependencies:
109
118
  session_queue = SqliteSessionQueue(db=db)
110
119
  urls = LocalUrlService()
111
120
  workflow_records = SqliteWorkflowRecordsStorage(db=db)
121
+ style_preset_records = SqliteStylePresetRecordsStorage(db=db)
122
+ style_preset_image_files = StylePresetImageFileStorageDisk(style_presets_folder / "images")
112
123
 
113
124
  services = InvocationServices(
114
125
  board_image_records=board_image_records,
@@ -134,6 +145,8 @@ class ApiDependencies:
134
145
  workflow_records=workflow_records,
135
146
  tensors=tensors,
136
147
  conditioning=conditioning,
148
+ style_preset_records=style_preset_records,
149
+ style_preset_image_files=style_preset_image_files,
137
150
  )
138
151
 
139
152
  ApiDependencies.invoker = Invoker(services)
@@ -218,9 +218,8 @@ async def get_image_workflow(
218
218
  raise HTTPException(status_code=404)
219
219
 
220
220
 
221
- @images_router.api_route(
221
+ @images_router.get(
222
222
  "/i/{image_name}/full",
223
- methods=["GET", "HEAD"],
224
223
  operation_id="get_image_full",
225
224
  response_class=Response,
226
225
  responses={
@@ -231,6 +230,18 @@ async def get_image_workflow(
231
230
  404: {"description": "Image not found"},
232
231
  },
233
232
  )
233
+ @images_router.head(
234
+ "/i/{image_name}/full",
235
+ operation_id="get_image_full_head",
236
+ response_class=Response,
237
+ responses={
238
+ 200: {
239
+ "description": "Return the full-resolution image",
240
+ "content": {"image/png": {}},
241
+ },
242
+ 404: {"description": "Image not found"},
243
+ },
244
+ )
234
245
  async def get_image_full(
235
246
  image_name: str = Path(description="The name of full-resolution image file to get"),
236
247
  ) -> Response:
@@ -242,6 +253,7 @@ async def get_image_full(
242
253
  content = f.read()
243
254
  response = Response(content, media_type="image/png")
244
255
  response.headers["Cache-Control"] = f"max-age={IMAGE_MAX_AGE}"
256
+ response.headers["Content-Disposition"] = f'inline; filename="{image_name}"'
245
257
  return response
246
258
  except Exception:
247
259
  raise HTTPException(status_code=404)
@@ -0,0 +1,274 @@
1
+ import csv
2
+ import io
3
+ import json
4
+ import traceback
5
+ from typing import Optional
6
+
7
+ import pydantic
8
+ from fastapi import APIRouter, File, Form, HTTPException, Path, Response, UploadFile
9
+ from fastapi.responses import FileResponse
10
+ from PIL import Image
11
+ from pydantic import BaseModel, Field
12
+
13
+ from invokeai.app.api.dependencies import ApiDependencies
14
+ from invokeai.app.api.routers.model_manager import IMAGE_MAX_AGE
15
+ from invokeai.app.services.style_preset_images.style_preset_images_common import StylePresetImageFileNotFoundException
16
+ from invokeai.app.services.style_preset_records.style_preset_records_common import (
17
+ InvalidPresetImportDataError,
18
+ PresetData,
19
+ PresetType,
20
+ StylePresetChanges,
21
+ StylePresetNotFoundError,
22
+ StylePresetRecordWithImage,
23
+ StylePresetWithoutId,
24
+ UnsupportedFileTypeError,
25
+ parse_presets_from_file,
26
+ )
27
+
28
+
29
+ class StylePresetFormData(BaseModel):
30
+ name: str = Field(description="Preset name")
31
+ positive_prompt: str = Field(description="Positive prompt")
32
+ negative_prompt: str = Field(description="Negative prompt")
33
+ type: PresetType = Field(description="Preset type")
34
+
35
+
36
+ style_presets_router = APIRouter(prefix="/v1/style_presets", tags=["style_presets"])
37
+
38
+
39
+ @style_presets_router.get(
40
+ "/i/{style_preset_id}",
41
+ operation_id="get_style_preset",
42
+ responses={
43
+ 200: {"model": StylePresetRecordWithImage},
44
+ },
45
+ )
46
+ async def get_style_preset(
47
+ style_preset_id: str = Path(description="The style preset to get"),
48
+ ) -> StylePresetRecordWithImage:
49
+ """Gets a style preset"""
50
+ try:
51
+ image = ApiDependencies.invoker.services.style_preset_image_files.get_url(style_preset_id)
52
+ style_preset = ApiDependencies.invoker.services.style_preset_records.get(style_preset_id)
53
+ return StylePresetRecordWithImage(image=image, **style_preset.model_dump())
54
+ except StylePresetNotFoundError:
55
+ raise HTTPException(status_code=404, detail="Style preset not found")
56
+
57
+
58
+ @style_presets_router.patch(
59
+ "/i/{style_preset_id}",
60
+ operation_id="update_style_preset",
61
+ responses={
62
+ 200: {"model": StylePresetRecordWithImage},
63
+ },
64
+ )
65
+ async def update_style_preset(
66
+ image: Optional[UploadFile] = File(description="The image file to upload", default=None),
67
+ style_preset_id: str = Path(description="The id of the style preset to update"),
68
+ data: str = Form(description="The data of the style preset to update"),
69
+ ) -> StylePresetRecordWithImage:
70
+ """Updates a style preset"""
71
+ if image is not None:
72
+ if not image.content_type or not image.content_type.startswith("image"):
73
+ raise HTTPException(status_code=415, detail="Not an image")
74
+
75
+ contents = await image.read()
76
+ try:
77
+ pil_image = Image.open(io.BytesIO(contents))
78
+
79
+ except Exception:
80
+ ApiDependencies.invoker.services.logger.error(traceback.format_exc())
81
+ raise HTTPException(status_code=415, detail="Failed to read image")
82
+
83
+ try:
84
+ ApiDependencies.invoker.services.style_preset_image_files.save(style_preset_id, pil_image)
85
+ except ValueError as e:
86
+ raise HTTPException(status_code=409, detail=str(e))
87
+ else:
88
+ try:
89
+ ApiDependencies.invoker.services.style_preset_image_files.delete(style_preset_id)
90
+ except StylePresetImageFileNotFoundException:
91
+ pass
92
+
93
+ try:
94
+ parsed_data = json.loads(data)
95
+ validated_data = StylePresetFormData(**parsed_data)
96
+
97
+ name = validated_data.name
98
+ type = validated_data.type
99
+ positive_prompt = validated_data.positive_prompt
100
+ negative_prompt = validated_data.negative_prompt
101
+
102
+ except pydantic.ValidationError:
103
+ raise HTTPException(status_code=400, detail="Invalid preset data")
104
+
105
+ preset_data = PresetData(positive_prompt=positive_prompt, negative_prompt=negative_prompt)
106
+ changes = StylePresetChanges(name=name, preset_data=preset_data, type=type)
107
+
108
+ style_preset_image = ApiDependencies.invoker.services.style_preset_image_files.get_url(style_preset_id)
109
+ style_preset = ApiDependencies.invoker.services.style_preset_records.update(
110
+ style_preset_id=style_preset_id, changes=changes
111
+ )
112
+ return StylePresetRecordWithImage(image=style_preset_image, **style_preset.model_dump())
113
+
114
+
115
+ @style_presets_router.delete(
116
+ "/i/{style_preset_id}",
117
+ operation_id="delete_style_preset",
118
+ )
119
+ async def delete_style_preset(
120
+ style_preset_id: str = Path(description="The style preset to delete"),
121
+ ) -> None:
122
+ """Deletes a style preset"""
123
+ try:
124
+ ApiDependencies.invoker.services.style_preset_image_files.delete(style_preset_id)
125
+ except StylePresetImageFileNotFoundException:
126
+ pass
127
+
128
+ ApiDependencies.invoker.services.style_preset_records.delete(style_preset_id)
129
+
130
+
131
+ @style_presets_router.post(
132
+ "/",
133
+ operation_id="create_style_preset",
134
+ responses={
135
+ 200: {"model": StylePresetRecordWithImage},
136
+ },
137
+ )
138
+ async def create_style_preset(
139
+ image: Optional[UploadFile] = File(description="The image file to upload", default=None),
140
+ data: str = Form(description="The data of the style preset to create"),
141
+ ) -> StylePresetRecordWithImage:
142
+ """Creates a style preset"""
143
+
144
+ try:
145
+ parsed_data = json.loads(data)
146
+ validated_data = StylePresetFormData(**parsed_data)
147
+
148
+ name = validated_data.name
149
+ type = validated_data.type
150
+ positive_prompt = validated_data.positive_prompt
151
+ negative_prompt = validated_data.negative_prompt
152
+
153
+ except pydantic.ValidationError:
154
+ raise HTTPException(status_code=400, detail="Invalid preset data")
155
+
156
+ preset_data = PresetData(positive_prompt=positive_prompt, negative_prompt=negative_prompt)
157
+ style_preset = StylePresetWithoutId(name=name, preset_data=preset_data, type=type)
158
+ new_style_preset = ApiDependencies.invoker.services.style_preset_records.create(style_preset=style_preset)
159
+
160
+ if image is not None:
161
+ if not image.content_type or not image.content_type.startswith("image"):
162
+ raise HTTPException(status_code=415, detail="Not an image")
163
+
164
+ contents = await image.read()
165
+ try:
166
+ pil_image = Image.open(io.BytesIO(contents))
167
+
168
+ except Exception:
169
+ ApiDependencies.invoker.services.logger.error(traceback.format_exc())
170
+ raise HTTPException(status_code=415, detail="Failed to read image")
171
+
172
+ try:
173
+ ApiDependencies.invoker.services.style_preset_image_files.save(new_style_preset.id, pil_image)
174
+ except ValueError as e:
175
+ raise HTTPException(status_code=409, detail=str(e))
176
+
177
+ preset_image = ApiDependencies.invoker.services.style_preset_image_files.get_url(new_style_preset.id)
178
+ return StylePresetRecordWithImage(image=preset_image, **new_style_preset.model_dump())
179
+
180
+
181
+ @style_presets_router.get(
182
+ "/",
183
+ operation_id="list_style_presets",
184
+ responses={
185
+ 200: {"model": list[StylePresetRecordWithImage]},
186
+ },
187
+ )
188
+ async def list_style_presets() -> list[StylePresetRecordWithImage]:
189
+ """Gets a page of style presets"""
190
+ style_presets_with_image: list[StylePresetRecordWithImage] = []
191
+ style_presets = ApiDependencies.invoker.services.style_preset_records.get_many()
192
+ for preset in style_presets:
193
+ image = ApiDependencies.invoker.services.style_preset_image_files.get_url(preset.id)
194
+ style_preset_with_image = StylePresetRecordWithImage(image=image, **preset.model_dump())
195
+ style_presets_with_image.append(style_preset_with_image)
196
+
197
+ return style_presets_with_image
198
+
199
+
200
+ @style_presets_router.get(
201
+ "/i/{style_preset_id}/image",
202
+ operation_id="get_style_preset_image",
203
+ responses={
204
+ 200: {
205
+ "description": "The style preset image was fetched successfully",
206
+ },
207
+ 400: {"description": "Bad request"},
208
+ 404: {"description": "The style preset image could not be found"},
209
+ },
210
+ status_code=200,
211
+ )
212
+ async def get_style_preset_image(
213
+ style_preset_id: str = Path(description="The id of the style preset image to get"),
214
+ ) -> FileResponse:
215
+ """Gets an image file that previews the model"""
216
+
217
+ try:
218
+ path = ApiDependencies.invoker.services.style_preset_image_files.get_path(style_preset_id)
219
+
220
+ response = FileResponse(
221
+ path,
222
+ media_type="image/png",
223
+ filename=style_preset_id + ".png",
224
+ content_disposition_type="inline",
225
+ )
226
+ response.headers["Cache-Control"] = f"max-age={IMAGE_MAX_AGE}"
227
+ return response
228
+ except Exception:
229
+ raise HTTPException(status_code=404)
230
+
231
+
232
+ @style_presets_router.get(
233
+ "/export",
234
+ operation_id="export_style_presets",
235
+ responses={200: {"content": {"text/csv": {}}, "description": "A CSV file with the requested data."}},
236
+ status_code=200,
237
+ )
238
+ async def export_style_presets():
239
+ # Create an in-memory stream to store the CSV data
240
+ output = io.StringIO()
241
+ writer = csv.writer(output)
242
+
243
+ # Write the header
244
+ writer.writerow(["name", "prompt", "negative_prompt"])
245
+
246
+ style_presets = ApiDependencies.invoker.services.style_preset_records.get_many(type=PresetType.User)
247
+
248
+ for preset in style_presets:
249
+ writer.writerow([preset.name, preset.preset_data.positive_prompt, preset.preset_data.negative_prompt])
250
+
251
+ csv_data = output.getvalue()
252
+ output.close()
253
+
254
+ return Response(
255
+ content=csv_data,
256
+ media_type="text/csv",
257
+ headers={"Content-Disposition": "attachment; filename=prompt_templates.csv"},
258
+ )
259
+
260
+
261
+ @style_presets_router.post(
262
+ "/import",
263
+ operation_id="import_style_presets",
264
+ )
265
+ async def import_style_presets(file: UploadFile = File(description="The file to import")):
266
+ try:
267
+ style_presets = await parse_presets_from_file(file)
268
+ ApiDependencies.invoker.services.style_preset_records.create_many(style_presets)
269
+ except InvalidPresetImportDataError as e:
270
+ ApiDependencies.invoker.services.logger.error(traceback.format_exc())
271
+ raise HTTPException(status_code=400, detail=str(e))
272
+ except UnsupportedFileTypeError as e:
273
+ ApiDependencies.invoker.services.logger.error(traceback.format_exc())
274
+ raise HTTPException(status_code=415, detail=str(e))
@@ -30,6 +30,7 @@ from invokeai.app.api.routers import (
30
30
  images,
31
31
  model_manager,
32
32
  session_queue,
33
+ style_presets,
33
34
  utilities,
34
35
  workflows,
35
36
  )
@@ -55,11 +56,13 @@ mimetypes.add_type("text/css", ".css")
55
56
  torch_device_name = TorchDevice.get_torch_device_name()
56
57
  logger.info(f"Using torch device: {torch_device_name}")
57
58
 
59
+ loop = asyncio.new_event_loop()
60
+
58
61
 
59
62
  @asynccontextmanager
60
63
  async def lifespan(app: FastAPI):
61
64
  # Add startup event to load dependencies
62
- ApiDependencies.initialize(config=app_config, event_handler_id=event_handler_id, logger=logger)
65
+ ApiDependencies.initialize(config=app_config, event_handler_id=event_handler_id, loop=loop, logger=logger)
63
66
  yield
64
67
  # Shut down threads
65
68
  ApiDependencies.shutdown()
@@ -106,6 +109,7 @@ app.include_router(board_images.board_images_router, prefix="/api")
106
109
  app.include_router(app_info.app_router, prefix="/api")
107
110
  app.include_router(session_queue.session_queue_router, prefix="/api")
108
111
  app.include_router(workflows.workflows_router, prefix="/api")
112
+ app.include_router(style_presets.style_presets_router, prefix="/api")
109
113
 
110
114
  app.openapi = get_openapi_func(app)
111
115
 
@@ -184,8 +188,6 @@ def invoke_api() -> None:
184
188
 
185
189
  check_cudnn(logger)
186
190
 
187
- # Start our own event loop for eventing usage
188
- loop = asyncio.new_event_loop()
189
191
  config = uvicorn.Config(
190
192
  app=app,
191
193
  host=app_config.host,
@@ -80,12 +80,12 @@ class CompelInvocation(BaseInvocation):
80
80
 
81
81
  with (
82
82
  # apply all patches while the model is on the target device
83
- text_encoder_info.model_on_device() as (model_state_dict, text_encoder),
83
+ text_encoder_info.model_on_device() as (cached_weights, text_encoder),
84
84
  tokenizer_info as tokenizer,
85
85
  ModelPatcher.apply_lora_text_encoder(
86
86
  text_encoder,
87
87
  loras=_lora_loader(),
88
- model_state_dict=model_state_dict,
88
+ cached_weights=cached_weights,
89
89
  ),
90
90
  # Apply CLIP Skip after LoRA to prevent LoRA application from failing on skipped layers.
91
91
  ModelPatcher.apply_clip_skip(text_encoder, self.clip.skipped_layers),
@@ -175,13 +175,13 @@ class SDXLPromptInvocationBase:
175
175
 
176
176
  with (
177
177
  # apply all patches while the model is on the target device
178
- text_encoder_info.model_on_device() as (state_dict, text_encoder),
178
+ text_encoder_info.model_on_device() as (cached_weights, text_encoder),
179
179
  tokenizer_info as tokenizer,
180
180
  ModelPatcher.apply_lora(
181
181
  text_encoder,
182
182
  loras=_lora_loader(),
183
183
  prefix=lora_prefix,
184
- model_state_dict=state_dict,
184
+ cached_weights=cached_weights,
185
185
  ),
186
186
  # Apply CLIP Skip after LoRA to prevent LoRA application from failing on skipped layers.
187
187
  ModelPatcher.apply_clip_skip(text_encoder, clip_field.skipped_layers),