InvokeAI 4.2.9.dev11__tar.gz → 4.2.9.dev12__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 (482) hide show
  1. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/InvokeAI.egg-info/PKG-INFO +1 -1
  2. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/InvokeAI.egg-info/SOURCES.txt +10 -5
  3. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/PKG-INFO +1 -1
  4. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/api/routers/model_manager.py +91 -0
  5. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/denoise_latents.py +1 -1
  6. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/fields.py +1 -1
  7. InvokeAI-4.2.9.dev12/invokeai/app/invocations/flux_denoise.py +249 -0
  8. InvokeAI-4.2.9.dev12/invokeai/app/invocations/flux_vae_decode.py +60 -0
  9. InvokeAI-4.2.9.dev12/invokeai/app/invocations/flux_vae_encode.py +67 -0
  10. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/mask.py +6 -1
  11. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/model_install/model_install_common.py +1 -1
  12. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/invocation_context.py +19 -1
  13. InvokeAI-4.2.9.dev12/invokeai/app/services/workflow_records/default_workflows/FLUX Image to Image.json +407 -0
  14. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/workflow_records/default_workflows/Flux Text to Image.json +171 -105
  15. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/util/step_callback.py +48 -0
  16. InvokeAI-4.2.9.dev12/invokeai/backend/flux/denoise.py +56 -0
  17. InvokeAI-4.2.9.dev12/invokeai/backend/flux/inpaint_extension.py +35 -0
  18. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/flux/modules/autoencoder.py +21 -7
  19. InvokeAI-4.2.9.dev12/invokeai/backend/flux/sampling_utils.py +135 -0
  20. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/load/load_default.py +3 -2
  21. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/load/model_cache/model_cache_base.py +18 -1
  22. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/load/model_cache/model_cache_default.py +14 -1
  23. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/load/model_loaders/flux.py +5 -0
  24. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/probe.py +57 -9
  25. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/util/model_util.py +26 -0
  26. InvokeAI-4.2.9.dev12/invokeai/frontend/web/dist/assets/App-D1Y-WRqk.js +66 -0
  27. InvokeAI-4.2.9.dev11/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-pqPKAJUu.js → InvokeAI-4.2.9.dev12/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-CmO3BZJ7.js +1 -1
  28. InvokeAI-4.2.9.dev12/invokeai/frontend/web/dist/assets/index-Ax6e2dHX.js +563 -0
  29. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/index.html +1 -1
  30. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/en.json +2 -0
  31. InvokeAI-4.2.9.dev12/invokeai/version/invokeai_version.py +1 -0
  32. InvokeAI-4.2.9.dev11/invokeai/app/invocations/flux_text_to_image.py +0 -169
  33. InvokeAI-4.2.9.dev11/invokeai/backend/flux/sampling.py +0 -167
  34. InvokeAI-4.2.9.dev11/invokeai/frontend/web/dist/assets/App-BeqKOIea.js +0 -66
  35. InvokeAI-4.2.9.dev11/invokeai/frontend/web/dist/assets/index-BGgOiIGq.js +0 -563
  36. InvokeAI-4.2.9.dev11/invokeai/version/invokeai_version.py +0 -1
  37. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/InvokeAI.egg-info/dependency_links.txt +0 -0
  38. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/InvokeAI.egg-info/entry_points.txt +0 -0
  39. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/InvokeAI.egg-info/requires.txt +0 -0
  40. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/InvokeAI.egg-info/top_level.txt +0 -0
  41. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/LICENSE +0 -0
  42. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/LICENSE-SD1+SD2.txt +0 -0
  43. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/LICENSE-SDXL.txt +0 -0
  44. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/README.md +0 -0
  45. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/__init__.py +0 -0
  46. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/api/dependencies.py +0 -0
  47. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/api/no_cache_staticfiles.py +0 -0
  48. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/api/routers/app_info.py +0 -0
  49. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/api/routers/board_images.py +0 -0
  50. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/api/routers/boards.py +0 -0
  51. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/api/routers/download_queue.py +0 -0
  52. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/api/routers/images.py +0 -0
  53. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/api/routers/session_queue.py +0 -0
  54. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/api/routers/style_presets.py +0 -0
  55. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/api/routers/utilities.py +0 -0
  56. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/api/routers/workflows.py +0 -0
  57. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/api/sockets.py +0 -0
  58. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/api_app.py +0 -0
  59. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/assets/images/caution.png +0 -0
  60. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/__init__.py +0 -0
  61. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/baseinvocation.py +0 -0
  62. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/blend_latents.py +0 -0
  63. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/collections.py +0 -0
  64. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/compel.py +0 -0
  65. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/constants.py +0 -0
  66. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/controlnet_image_processors.py +0 -0
  67. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/create_denoise_mask.py +0 -0
  68. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/create_gradient_mask.py +0 -0
  69. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/crop_latents.py +0 -0
  70. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/custom_nodes/README.md +0 -0
  71. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/custom_nodes/init.py +0 -0
  72. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/cv.py +0 -0
  73. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/facetools.py +0 -0
  74. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/flux_text_encoder.py +0 -0
  75. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/grounding_dino.py +0 -0
  76. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/ideal_size.py +0 -0
  77. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/image.py +0 -0
  78. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/image_to_latents.py +0 -0
  79. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/infill.py +0 -0
  80. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/ip_adapter.py +0 -0
  81. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/latents_to_image.py +0 -0
  82. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/math.py +0 -0
  83. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/metadata.py +0 -0
  84. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/model.py +0 -0
  85. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/noise.py +0 -0
  86. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/param_easing.py +0 -0
  87. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/primitives.py +0 -0
  88. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/prompt.py +0 -0
  89. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/resize_latents.py +0 -0
  90. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/scheduler.py +0 -0
  91. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/sdxl.py +0 -0
  92. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/segment_anything.py +0 -0
  93. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/spandrel_image_to_image.py +0 -0
  94. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/strings.py +0 -0
  95. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/t2i_adapter.py +0 -0
  96. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/tiled_multi_diffusion_denoise_latents.py +0 -0
  97. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/tiles.py +0 -0
  98. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/upscale.py +0 -0
  99. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/invocations/util.py +0 -0
  100. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/run_app.py +0 -0
  101. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/__init__.py +0 -0
  102. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/board_image_records/__init__.py +0 -0
  103. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/board_image_records/board_image_records_base.py +0 -0
  104. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/board_image_records/board_image_records_sqlite.py +0 -0
  105. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/board_images/__init__.py +0 -0
  106. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/board_images/board_images_base.py +0 -0
  107. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/board_images/board_images_common.py +0 -0
  108. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/board_images/board_images_default.py +0 -0
  109. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/board_records/board_records_base.py +0 -0
  110. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/board_records/board_records_common.py +0 -0
  111. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/board_records/board_records_sqlite.py +0 -0
  112. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/boards/__init__.py +0 -0
  113. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/boards/boards_base.py +0 -0
  114. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/boards/boards_common.py +0 -0
  115. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/boards/boards_default.py +0 -0
  116. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/bulk_download/__init__.py +0 -0
  117. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/bulk_download/bulk_download_base.py +0 -0
  118. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/bulk_download/bulk_download_common.py +0 -0
  119. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/bulk_download/bulk_download_default.py +0 -0
  120. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/config/__init__.py +0 -0
  121. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/config/config_common.py +0 -0
  122. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/config/config_default.py +0 -0
  123. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/download/__init__.py +0 -0
  124. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/download/download_base.py +0 -0
  125. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/download/download_default.py +0 -0
  126. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/events/__init__.py +0 -0
  127. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/events/events_base.py +0 -0
  128. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/events/events_common.py +0 -0
  129. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/events/events_fastapievents.py +0 -0
  130. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/image_files/__init__.py +0 -0
  131. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/image_files/image_files_base.py +0 -0
  132. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/image_files/image_files_common.py +0 -0
  133. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/image_files/image_files_disk.py +0 -0
  134. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/image_records/__init__.py +0 -0
  135. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/image_records/image_records_base.py +0 -0
  136. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/image_records/image_records_common.py +0 -0
  137. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/image_records/image_records_sqlite.py +0 -0
  138. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/images/__init__.py +0 -0
  139. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/images/images_base.py +0 -0
  140. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/images/images_common.py +0 -0
  141. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/images/images_default.py +0 -0
  142. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/invocation_cache/__init__.py +0 -0
  143. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/invocation_cache/invocation_cache_base.py +0 -0
  144. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/invocation_cache/invocation_cache_common.py +0 -0
  145. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/invocation_cache/invocation_cache_memory.py +0 -0
  146. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/invocation_services.py +0 -0
  147. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/invocation_stats/__init__.py +0 -0
  148. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/invocation_stats/invocation_stats_base.py +0 -0
  149. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/invocation_stats/invocation_stats_common.py +0 -0
  150. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/invocation_stats/invocation_stats_default.py +0 -0
  151. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/invoker.py +0 -0
  152. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/item_storage/__init__.py +0 -0
  153. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/item_storage/item_storage_base.py +0 -0
  154. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/item_storage/item_storage_common.py +0 -0
  155. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/item_storage/item_storage_memory.py +0 -0
  156. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/model_images/model_images_base.py +0 -0
  157. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/model_images/model_images_common.py +0 -0
  158. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/model_images/model_images_default.py +0 -0
  159. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/model_install/__init__.py +0 -0
  160. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/model_install/model_install_base.py +0 -0
  161. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/model_install/model_install_default.py +0 -0
  162. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/model_load/__init__.py +0 -0
  163. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/model_load/model_load_base.py +0 -0
  164. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/model_load/model_load_default.py +0 -0
  165. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/model_manager/__init__.py +0 -0
  166. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/model_manager/model_manager_base.py +0 -0
  167. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/model_manager/model_manager_common.py +0 -0
  168. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/model_manager/model_manager_default.py +0 -0
  169. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/model_records/__init__.py +0 -0
  170. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/model_records/model_records_base.py +0 -0
  171. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/model_records/model_records_sql.py +0 -0
  172. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/names/__init__.py +0 -0
  173. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/names/names_base.py +0 -0
  174. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/names/names_common.py +0 -0
  175. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/names/names_default.py +0 -0
  176. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/object_serializer/object_serializer_base.py +0 -0
  177. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/object_serializer/object_serializer_common.py +0 -0
  178. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/object_serializer/object_serializer_disk.py +0 -0
  179. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/object_serializer/object_serializer_forward_cache.py +0 -0
  180. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/session_processor/__init__.py +0 -0
  181. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/session_processor/session_processor_base.py +0 -0
  182. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/session_processor/session_processor_common.py +0 -0
  183. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/session_processor/session_processor_default.py +0 -0
  184. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/session_queue/__init__.py +0 -0
  185. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/session_queue/session_queue_base.py +0 -0
  186. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/session_queue/session_queue_common.py +0 -0
  187. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/session_queue/session_queue_sqlite.py +0 -0
  188. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/__init__.py +0 -0
  189. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/graph.py +0 -0
  190. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/pagination.py +0 -0
  191. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/sqlite/__init__.py +0 -0
  192. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/sqlite/sqlite_common.py +0 -0
  193. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/sqlite/sqlite_database.py +0 -0
  194. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/sqlite/sqlite_util.py +0 -0
  195. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/sqlite_migrator/__init__.py +0 -0
  196. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/sqlite_migrator/migrations/__init__.py +0 -0
  197. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_1.py +0 -0
  198. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_10.py +0 -0
  199. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_11.py +0 -0
  200. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_12.py +0 -0
  201. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_13.py +0 -0
  202. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_14.py +0 -0
  203. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_15.py +0 -0
  204. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_2.py +0 -0
  205. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_3.py +0 -0
  206. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_4.py +0 -0
  207. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_5.py +0 -0
  208. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_6.py +0 -0
  209. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_7.py +0 -0
  210. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_8.py +0 -0
  211. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_9.py +0 -0
  212. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/sqlite_migrator/sqlite_migrator_common.py +0 -0
  213. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/shared/sqlite_migrator/sqlite_migrator_impl.py +0 -0
  214. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_images/default_style_preset_images/Anime.png +0 -0
  215. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_images/default_style_preset_images/Architectural Visualization.png +0 -0
  216. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Character).png +0 -0
  217. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Fantasy).png +0 -0
  218. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Painterly).png +0 -0
  219. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Sci-Fi).png +0 -0
  220. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_images/default_style_preset_images/Environment Art.png +0 -0
  221. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_images/default_style_preset_images/Illustration.png +0 -0
  222. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_images/default_style_preset_images/Interior Design (Visualization).png +0 -0
  223. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_images/default_style_preset_images/Line Art.png +0 -0
  224. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (Black and White).png +0 -0
  225. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (General).png +0 -0
  226. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (Landscape).png +0 -0
  227. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (Portrait).png +0 -0
  228. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (Studio Lighting).png +0 -0
  229. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_images/default_style_preset_images/Product Rendering.png +0 -0
  230. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_images/default_style_preset_images/Sketch.png +0 -0
  231. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_images/default_style_preset_images/Vehicles.png +0 -0
  232. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_images/default_style_preset_images/__init__.py +0 -0
  233. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_images/style_preset_images_base.py +0 -0
  234. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_images/style_preset_images_common.py +0 -0
  235. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_images/style_preset_images_disk.py +0 -0
  236. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_records/__init__.py +0 -0
  237. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_records/default_style_presets.json +0 -0
  238. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_records/style_preset_records_base.py +0 -0
  239. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_records/style_preset_records_common.py +0 -0
  240. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/style_preset_records/style_preset_records_sqlite.py +0 -0
  241. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/urls/__init__.py +0 -0
  242. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/urls/urls_base.py +0 -0
  243. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/urls/urls_default.py +0 -0
  244. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/workflow_records/__init__.py +0 -0
  245. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/workflow_records/default_workflows/ESRGAN Upscaling with Canny ControlNet.json +0 -0
  246. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/workflow_records/default_workflows/Face Detailer with IP-Adapter & Canny (See Note in Details).json +0 -0
  247. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/workflow_records/default_workflows/Multi ControlNet (Canny & Depth).json +0 -0
  248. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/workflow_records/default_workflows/MultiDiffusion SD1.5.json +0 -0
  249. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/workflow_records/default_workflows/MultiDiffusion SDXL.json +0 -0
  250. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/workflow_records/default_workflows/Prompt from File.json +0 -0
  251. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/workflow_records/default_workflows/Text to Image - SD1.5.json +0 -0
  252. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/workflow_records/default_workflows/Text to Image - SDXL.json +0 -0
  253. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/workflow_records/default_workflows/Text to Image with LoRA.json +0 -0
  254. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/workflow_records/default_workflows/Tiled Upscaling (Beta).json +0 -0
  255. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/workflow_records/workflow_records_base.py +0 -0
  256. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/workflow_records/workflow_records_common.py +0 -0
  257. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/services/workflow_records/workflow_records_sqlite.py +0 -0
  258. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/shared/__init__.py +0 -0
  259. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/shared/models.py +0 -0
  260. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/util/__init__.py +0 -0
  261. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/util/controlnet_utils.py +0 -0
  262. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/util/custom_openapi.py +0 -0
  263. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/util/metaenum.py +0 -0
  264. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/util/misc.py +0 -0
  265. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/util/model_exclude_null.py +0 -0
  266. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/util/profiler.py +0 -0
  267. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/util/suppress_output.py +0 -0
  268. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/util/thumbnails.py +0 -0
  269. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/app/util/ti_utils.py +0 -0
  270. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/assets/fonts/inter/Inter-Regular.ttf +0 -0
  271. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/__init__.py +0 -0
  272. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/flux/math.py +0 -0
  273. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/flux/model.py +0 -0
  274. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/flux/modules/conditioner.py +0 -0
  275. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/flux/modules/layers.py +0 -0
  276. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/flux/util.py +0 -0
  277. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/__init__.py +0 -0
  278. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/basicsr/__init__.py +0 -0
  279. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/basicsr/arch_util.py +0 -0
  280. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/basicsr/rrdbnet_arch.py +0 -0
  281. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/canny.py +0 -0
  282. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/depth_anything/depth_anything_pipeline.py +0 -0
  283. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/dw_openpose/__init__.py +0 -0
  284. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/dw_openpose/onnxdet.py +0 -0
  285. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/dw_openpose/onnxpose.py +0 -0
  286. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/dw_openpose/utils.py +0 -0
  287. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/dw_openpose/wholebody.py +0 -0
  288. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/grounding_dino/__init__.py +0 -0
  289. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/grounding_dino/detection_result.py +0 -0
  290. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/grounding_dino/grounding_dino_pipeline.py +0 -0
  291. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/hed.py +0 -0
  292. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/infill_methods/cv2_inpaint.py +0 -0
  293. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/infill_methods/lama.py +0 -0
  294. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/infill_methods/mosaic.py +0 -0
  295. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/infill_methods/patchmatch.py +0 -0
  296. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/infill_methods/tile.py +0 -0
  297. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/invisible_watermark.py +0 -0
  298. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/lineart.py +0 -0
  299. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/lineart_anime.py +0 -0
  300. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/pngwriter.py +0 -0
  301. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/realesrgan/__init__.py +0 -0
  302. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/realesrgan/realesrgan.py +0 -0
  303. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/safety_checker.py +0 -0
  304. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/segment_anything/__init__.py +0 -0
  305. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/segment_anything/mask_refinement.py +0 -0
  306. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/segment_anything/segment_anything_pipeline.py +0 -0
  307. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/image_util/util.py +0 -0
  308. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/ip_adapter/__init__.py +0 -0
  309. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/ip_adapter/ip_adapter.py +0 -0
  310. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/ip_adapter/ip_attention_weights.py +0 -0
  311. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/ip_adapter/resampler.py +0 -0
  312. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/lora.py +0 -0
  313. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_hash/hash_validator.py +0 -0
  314. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_hash/model_hash.py +0 -0
  315. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/__init__.py +0 -0
  316. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/config.py +0 -0
  317. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/load/__init__.py +0 -0
  318. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/load/load_base.py +0 -0
  319. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/load/memory_snapshot.py +0 -0
  320. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/load/model_cache/__init__.py +0 -0
  321. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/load/model_cache/model_locker.py +0 -0
  322. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/load/model_loader_registry.py +0 -0
  323. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/load/model_loaders/__init__.py +0 -0
  324. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/load/model_loaders/controlnet.py +0 -0
  325. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/load/model_loaders/generic_diffusers.py +0 -0
  326. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/load/model_loaders/ip_adapter.py +0 -0
  327. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/load/model_loaders/lora.py +0 -0
  328. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/load/model_loaders/onnx.py +0 -0
  329. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/load/model_loaders/spandrel_image_to_image.py +0 -0
  330. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/load/model_loaders/stable_diffusion.py +0 -0
  331. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/load/model_loaders/textual_inversion.py +0 -0
  332. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/load/model_loaders/vae.py +0 -0
  333. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/load/model_util.py +0 -0
  334. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/load/optimizations.py +0 -0
  335. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/merge.py +0 -0
  336. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/metadata/__init__.py +0 -0
  337. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/metadata/fetch/__init__.py +0 -0
  338. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/metadata/fetch/fetch_base.py +0 -0
  339. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/metadata/fetch/huggingface.py +0 -0
  340. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/metadata/metadata_base.py +0 -0
  341. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/search.py +0 -0
  342. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/starter_models.py +0 -0
  343. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/util/libc_util.py +0 -0
  344. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_manager/util/select_hf_files.py +0 -0
  345. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/model_patcher.py +0 -0
  346. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/onnx/onnx_runtime.py +0 -0
  347. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/quantization/__init__.py +0 -0
  348. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/quantization/bnb_llm_int8.py +0 -0
  349. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/quantization/bnb_nf4.py +0 -0
  350. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/quantization/scripts/load_flux_model_bnb_llm_int8.py +0 -0
  351. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/quantization/scripts/load_flux_model_bnb_nf4.py +0 -0
  352. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/quantization/scripts/quantize_t5_xxl_bnb_llm_int8.py +0 -0
  353. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/raw_model.py +0 -0
  354. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/spandrel_image_to_image_model.py +0 -0
  355. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/__init__.py +0 -0
  356. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/denoise_context.py +0 -0
  357. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/diffusers_pipeline.py +0 -0
  358. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/diffusion/__init__.py +0 -0
  359. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/diffusion/conditioning_data.py +0 -0
  360. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/diffusion/custom_atttention.py +0 -0
  361. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/diffusion/regional_ip_data.py +0 -0
  362. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/diffusion/regional_prompt_data.py +0 -0
  363. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/diffusion/shared_invokeai_diffusion.py +0 -0
  364. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/diffusion/unet_attention_patcher.py +0 -0
  365. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/diffusion_backend.py +0 -0
  366. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/extension_callback_type.py +0 -0
  367. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/extensions/base.py +0 -0
  368. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/extensions/controlnet.py +0 -0
  369. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/extensions/freeu.py +0 -0
  370. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/extensions/inpaint.py +0 -0
  371. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/extensions/inpaint_model.py +0 -0
  372. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/extensions/lora.py +0 -0
  373. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/extensions/preview.py +0 -0
  374. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/extensions/rescale_cfg.py +0 -0
  375. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/extensions/seamless.py +0 -0
  376. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/extensions/t2i_adapter.py +0 -0
  377. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/extensions_manager.py +0 -0
  378. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/multi_diffusion_pipeline.py +0 -0
  379. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/schedulers/__init__.py +0 -0
  380. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/schedulers/schedulers.py +0 -0
  381. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/stable_diffusion/vae_tiling.py +0 -0
  382. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/textual_inversion.py +0 -0
  383. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/tiles/__init__.py +0 -0
  384. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/tiles/tiles.py +0 -0
  385. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/tiles/utils.py +0 -0
  386. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/util/__init__.py +0 -0
  387. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/util/attention.py +0 -0
  388. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/util/catch_sigint.py +0 -0
  389. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/util/db_maintenance.py +0 -0
  390. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/util/devices.py +0 -0
  391. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/util/hotfixes.py +0 -0
  392. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/util/logging.py +0 -0
  393. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/util/mask.py +0 -0
  394. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/util/mps_fixes.py +0 -0
  395. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/util/original_weights_storage.py +0 -0
  396. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/util/silence_warnings.py +0 -0
  397. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/util/test_utils.py +0 -0
  398. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/backend/util/util.py +0 -0
  399. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/configs/controlnet/cldm_v15.yaml +0 -0
  400. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/configs/controlnet/cldm_v21.yaml +0 -0
  401. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/configs/stable-diffusion/sd_xl_base.yaml +0 -0
  402. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/configs/stable-diffusion/sd_xl_inpaint.yaml +0 -0
  403. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/configs/stable-diffusion/sd_xl_refiner.yaml +0 -0
  404. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/configs/stable-diffusion/v1-finetune.yaml +0 -0
  405. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/configs/stable-diffusion/v1-finetune_style.yaml +0 -0
  406. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/configs/stable-diffusion/v1-inference-v.yaml +0 -0
  407. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/configs/stable-diffusion/v1-inference.yaml +0 -0
  408. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/configs/stable-diffusion/v1-inpainting-inference.yaml +0 -0
  409. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/configs/stable-diffusion/v1-m1-finetune.yaml +0 -0
  410. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/configs/stable-diffusion/v2-inference-v.yaml +0 -0
  411. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/configs/stable-diffusion/v2-inference.yaml +0 -0
  412. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/configs/stable-diffusion/v2-inpainting-inference-v.yaml +0 -0
  413. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/configs/stable-diffusion/v2-inpainting-inference.yaml +0 -0
  414. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/configs/stable-diffusion/v2-midas-inference.yaml +0 -0
  415. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/__init__.py +0 -0
  416. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/cli/__init__.py +0 -0
  417. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/cli/arg_parser.py +0 -0
  418. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/install/__init__.py +0 -0
  419. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/install/import_images.py +0 -0
  420. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/__init__.py +0 -0
  421. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/App-DEu4J2pT.css +0 -0
  422. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-B2NxUfIp.css +0 -0
  423. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/images/invoke-alert-favicon.svg +0 -0
  424. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/images/invoke-avatar-circle.svg +0 -0
  425. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/images/invoke-avatar-square.svg +0 -0
  426. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/images/invoke-favicon.png +0 -0
  427. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/images/invoke-favicon.svg +0 -0
  428. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/images/invoke-key-char-lrg.svg +0 -0
  429. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/images/invoke-key-char-sml.svg +0 -0
  430. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/images/invoke-key-wht-lrg.svg +0 -0
  431. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/images/invoke-key-wht-sml.svg +0 -0
  432. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/images/invoke-symbol-char-lrg.svg +0 -0
  433. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/images/invoke-symbol-char-sml.svg +0 -0
  434. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/images/invoke-symbol-wht-lrg.svg +0 -0
  435. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/images/invoke-symbol-wht-sml.svg +0 -0
  436. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/images/invoke-symbol-ylw-lrg.svg +0 -0
  437. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/images/invoke-tag-char-lrg.svg +0 -0
  438. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/images/invoke-tag-char-sml.svg +0 -0
  439. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/images/invoke-tag-lrg.svg +0 -0
  440. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/images/invoke-tag-sml.svg +0 -0
  441. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/images/invoke-wordmark-charcoal.svg +0 -0
  442. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/images/invoke-wordmark-white.svg +0 -0
  443. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/images/mask.svg +0 -0
  444. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/inter-cyrillic-ext-wght-normal-B2xhLi22.woff2 +0 -0
  445. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/inter-cyrillic-wght-normal-CMZtQduZ.woff2 +0 -0
  446. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/inter-greek-ext-wght-normal-CGAr0uHJ.woff2 +0 -0
  447. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/inter-greek-wght-normal-CaVNZxsx.woff2 +0 -0
  448. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/inter-latin-ext-wght-normal-CFHvXkgd.woff2 +0 -0
  449. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/inter-latin-wght-normal-C2S99t-D.woff2 +0 -0
  450. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
  451. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/assets/worker-Dywf1EVc.js +0 -0
  452. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/ar.json +0 -0
  453. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/az.json +0 -0
  454. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/bg.json +0 -0
  455. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/de.json +0 -0
  456. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/es.json +0 -0
  457. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/fi.json +0 -0
  458. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/fr.json +0 -0
  459. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/he.json +0 -0
  460. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/hu.json +0 -0
  461. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/it.json +0 -0
  462. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/ja.json +0 -0
  463. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/ko.json +0 -0
  464. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/mn.json +0 -0
  465. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/nl.json +0 -0
  466. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/pl.json +0 -0
  467. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/pt.json +0 -0
  468. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/pt_BR.json +0 -0
  469. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/ro.json +0 -0
  470. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/ru.json +0 -0
  471. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/sv.json +0 -0
  472. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/tr.json +0 -0
  473. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/uk.json +0 -0
  474. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/vi.json +0 -0
  475. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/zh_CN.json +0 -0
  476. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/dist/locales/zh_Hant.json +0 -0
  477. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/scripts/clean_translations.py +0 -0
  478. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/frontend/web/static/docs/invoke-favicon-docs.svg +0 -0
  479. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/invocation_api/__init__.py +0 -0
  480. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/invokeai/version/__init__.py +0 -0
  481. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/pyproject.toml +0 -0
  482. {InvokeAI-4.2.9.dev11 → InvokeAI-4.2.9.dev12}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: InvokeAI
3
- Version: 4.2.9.dev11
3
+ Version: 4.2.9.dev12
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
@@ -40,8 +40,10 @@ invokeai/app/invocations/cv.py
40
40
  invokeai/app/invocations/denoise_latents.py
41
41
  invokeai/app/invocations/facetools.py
42
42
  invokeai/app/invocations/fields.py
43
+ invokeai/app/invocations/flux_denoise.py
43
44
  invokeai/app/invocations/flux_text_encoder.py
44
- invokeai/app/invocations/flux_text_to_image.py
45
+ invokeai/app/invocations/flux_vae_decode.py
46
+ invokeai/app/invocations/flux_vae_encode.py
45
47
  invokeai/app/invocations/grounding_dino.py
46
48
  invokeai/app/invocations/ideal_size.py
47
49
  invokeai/app/invocations/image.py
@@ -220,6 +222,7 @@ invokeai/app/services/workflow_records/workflow_records_base.py
220
222
  invokeai/app/services/workflow_records/workflow_records_common.py
221
223
  invokeai/app/services/workflow_records/workflow_records_sqlite.py
222
224
  invokeai/app/services/workflow_records/default_workflows/ESRGAN Upscaling with Canny ControlNet.json
225
+ invokeai/app/services/workflow_records/default_workflows/FLUX Image to Image.json
223
226
  invokeai/app/services/workflow_records/default_workflows/Face Detailer with IP-Adapter & Canny (See Note in Details).json
224
227
  invokeai/app/services/workflow_records/default_workflows/Flux Text to Image.json
225
228
  invokeai/app/services/workflow_records/default_workflows/Multi ControlNet (Canny & Depth).json
@@ -250,9 +253,11 @@ invokeai/backend/model_patcher.py
250
253
  invokeai/backend/raw_model.py
251
254
  invokeai/backend/spandrel_image_to_image_model.py
252
255
  invokeai/backend/textual_inversion.py
256
+ invokeai/backend/flux/denoise.py
257
+ invokeai/backend/flux/inpaint_extension.py
253
258
  invokeai/backend/flux/math.py
254
259
  invokeai/backend/flux/model.py
255
- invokeai/backend/flux/sampling.py
260
+ invokeai/backend/flux/sampling_utils.py
256
261
  invokeai/backend/flux/util.py
257
262
  invokeai/backend/flux/modules/autoencoder.py
258
263
  invokeai/backend/flux/modules/conditioner.py
@@ -403,11 +408,11 @@ invokeai/frontend/install/__init__.py
403
408
  invokeai/frontend/install/import_images.py
404
409
  invokeai/frontend/web/__init__.py
405
410
  invokeai/frontend/web/dist/index.html
406
- invokeai/frontend/web/dist/assets/App-BeqKOIea.js
411
+ invokeai/frontend/web/dist/assets/App-D1Y-WRqk.js
407
412
  invokeai/frontend/web/dist/assets/App-DEu4J2pT.css
408
413
  invokeai/frontend/web/dist/assets/ThemeLocaleProvider-B2NxUfIp.css
409
- invokeai/frontend/web/dist/assets/ThemeLocaleProvider-pqPKAJUu.js
410
- invokeai/frontend/web/dist/assets/index-BGgOiIGq.js
414
+ invokeai/frontend/web/dist/assets/ThemeLocaleProvider-CmO3BZJ7.js
415
+ invokeai/frontend/web/dist/assets/index-Ax6e2dHX.js
411
416
  invokeai/frontend/web/dist/assets/inter-cyrillic-ext-wght-normal-B2xhLi22.woff2
412
417
  invokeai/frontend/web/dist/assets/inter-cyrillic-wght-normal-CMZtQduZ.woff2
413
418
  invokeai/frontend/web/dist/assets/inter-greek-ext-wght-normal-CGAr0uHJ.woff2
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: InvokeAI
3
- Version: 4.2.9.dev11
3
+ Version: 4.2.9.dev12
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
@@ -3,8 +3,10 @@
3
3
 
4
4
  import io
5
5
  import pathlib
6
+ import shutil
6
7
  import traceback
7
8
  from copy import deepcopy
9
+ from enum import Enum
8
10
  from tempfile import TemporaryDirectory
9
11
  from typing import List, Optional, Type
10
12
 
@@ -17,6 +19,7 @@ from starlette.exceptions import HTTPException
17
19
  from typing_extensions import Annotated
18
20
 
19
21
  from invokeai.app.api.dependencies import ApiDependencies
22
+ from invokeai.app.services.config import get_config
20
23
  from invokeai.app.services.model_images.model_images_common import ModelImageFileNotFoundException
21
24
  from invokeai.app.services.model_install.model_install_common import ModelInstallJob
22
25
  from invokeai.app.services.model_records import (
@@ -31,6 +34,7 @@ from invokeai.backend.model_manager.config import (
31
34
  ModelFormat,
32
35
  ModelType,
33
36
  )
37
+ from invokeai.backend.model_manager.load.model_cache.model_cache_base import CacheStats
34
38
  from invokeai.backend.model_manager.metadata.fetch.huggingface import HuggingFaceMetadataFetch
35
39
  from invokeai.backend.model_manager.metadata.metadata_base import ModelMetadataWithFiles, UnknownMetadataException
36
40
  from invokeai.backend.model_manager.search import ModelSearch
@@ -50,6 +54,13 @@ class ModelsList(BaseModel):
50
54
  model_config = ConfigDict(use_enum_values=True)
51
55
 
52
56
 
57
+ class CacheType(str, Enum):
58
+ """Cache type - one of vram or ram."""
59
+
60
+ RAM = "RAM"
61
+ VRAM = "VRAM"
62
+
63
+
53
64
  def add_cover_image_to_model_config(config: AnyModelConfig, dependencies: Type[ApiDependencies]) -> AnyModelConfig:
54
65
  """Add a cover image URL to a model configuration."""
55
66
  cover_image = dependencies.invoker.services.model_images.get_url(config.key)
@@ -797,3 +808,83 @@ async def get_starter_models() -> list[StarterModel]:
797
808
  model.dependencies = missing_deps
798
809
 
799
810
  return starter_models
811
+
812
+
813
+ @model_manager_router.get(
814
+ "/model_cache",
815
+ operation_id="get_cache_size",
816
+ response_model=float,
817
+ summary="Get maximum size of model manager RAM or VRAM cache.",
818
+ )
819
+ async def get_cache_size(cache_type: CacheType = Query(description="The cache type", default=CacheType.RAM)) -> float:
820
+ """Return the current RAM or VRAM cache size setting (in GB)."""
821
+ cache = ApiDependencies.invoker.services.model_manager.load.ram_cache
822
+ value = 0.0
823
+ if cache_type == CacheType.RAM:
824
+ value = cache.max_cache_size
825
+ elif cache_type == CacheType.VRAM:
826
+ value = cache.max_vram_cache_size
827
+ return value
828
+
829
+
830
+ @model_manager_router.put(
831
+ "/model_cache",
832
+ operation_id="set_cache_size",
833
+ response_model=float,
834
+ summary="Set maximum size of model manager RAM or VRAM cache, optionally writing new value out to invokeai.yaml config file.",
835
+ )
836
+ async def set_cache_size(
837
+ value: float = Query(description="The new value for the maximum cache size"),
838
+ cache_type: CacheType = Query(description="The cache type", default=CacheType.RAM),
839
+ persist: bool = Query(description="Write new value out to invokeai.yaml", default=False),
840
+ ) -> float:
841
+ """Set the current RAM or VRAM cache size setting (in GB). ."""
842
+ cache = ApiDependencies.invoker.services.model_manager.load.ram_cache
843
+ app_config = get_config()
844
+ # Record initial state.
845
+ vram_old = app_config.vram
846
+ ram_old = app_config.ram
847
+
848
+ # Prepare target state.
849
+ vram_new = vram_old
850
+ ram_new = ram_old
851
+ if cache_type == CacheType.RAM:
852
+ ram_new = value
853
+ elif cache_type == CacheType.VRAM:
854
+ vram_new = value
855
+ else:
856
+ raise ValueError(f"Unexpected {cache_type=}.")
857
+
858
+ config_path = app_config.config_file_path
859
+ new_config_path = config_path.with_suffix(".yaml.new")
860
+
861
+ try:
862
+ # Try to apply the target state.
863
+ cache.max_vram_cache_size = vram_new
864
+ cache.max_cache_size = ram_new
865
+ app_config.ram = ram_new
866
+ app_config.vram = vram_new
867
+ if persist:
868
+ app_config.write_file(new_config_path)
869
+ shutil.move(new_config_path, config_path)
870
+ except Exception as e:
871
+ # If there was a failure, restore the initial state.
872
+ cache.max_cache_size = ram_old
873
+ cache.max_vram_cache_size = vram_old
874
+ app_config.ram = ram_old
875
+ app_config.vram = vram_old
876
+
877
+ raise RuntimeError("Failed to update cache size") from e
878
+ return value
879
+
880
+
881
+ @model_manager_router.get(
882
+ "/stats",
883
+ operation_id="get_stats",
884
+ response_model=Optional[CacheStats],
885
+ summary="Get model manager RAM cache performance statistics.",
886
+ )
887
+ async def get_stats() -> Optional[CacheStats]:
888
+ """Return performance statistics on the model manager's RAM cache. Will return null if no models have been loaded."""
889
+
890
+ return ApiDependencies.invoker.services.model_manager.load.ram_cache.stats
@@ -185,7 +185,7 @@ class DenoiseLatentsInvocation(BaseInvocation):
185
185
  )
186
186
  denoise_mask: Optional[DenoiseMaskField] = InputField(
187
187
  default=None,
188
- description=FieldDescriptions.mask,
188
+ description=FieldDescriptions.denoise_mask,
189
189
  input=Input.Connection,
190
190
  ui_order=8,
191
191
  )
@@ -181,7 +181,7 @@ class FieldDescriptions:
181
181
  )
182
182
  num_1 = "The first number"
183
183
  num_2 = "The second number"
184
- mask = "The mask to use for the operation"
184
+ denoise_mask = "A mask of the region to apply the denoising process to."
185
185
  board = "The board to save the image to"
186
186
  image = "The image to process"
187
187
  tile_size = "Tile size"
@@ -0,0 +1,249 @@
1
+ from typing import Callable, Optional
2
+
3
+ import torch
4
+ import torchvision.transforms as tv_transforms
5
+ from torchvision.transforms.functional import resize as tv_resize
6
+
7
+ from invokeai.app.invocations.baseinvocation import BaseInvocation, Classification, invocation
8
+ from invokeai.app.invocations.fields import (
9
+ DenoiseMaskField,
10
+ FieldDescriptions,
11
+ FluxConditioningField,
12
+ Input,
13
+ InputField,
14
+ LatentsField,
15
+ WithBoard,
16
+ WithMetadata,
17
+ )
18
+ from invokeai.app.invocations.model import TransformerField
19
+ from invokeai.app.invocations.primitives import LatentsOutput
20
+ from invokeai.app.services.shared.invocation_context import InvocationContext
21
+ from invokeai.backend.flux.denoise import denoise
22
+ from invokeai.backend.flux.inpaint_extension import InpaintExtension
23
+ from invokeai.backend.flux.model import Flux
24
+ from invokeai.backend.flux.sampling_utils import (
25
+ clip_timestep_schedule,
26
+ generate_img_ids,
27
+ get_noise,
28
+ get_schedule,
29
+ pack,
30
+ unpack,
31
+ )
32
+ from invokeai.backend.stable_diffusion.diffusers_pipeline import PipelineIntermediateState
33
+ from invokeai.backend.stable_diffusion.diffusion.conditioning_data import FLUXConditioningInfo
34
+ from invokeai.backend.util.devices import TorchDevice
35
+
36
+
37
+ @invocation(
38
+ "flux_denoise",
39
+ title="FLUX Denoise",
40
+ tags=["image", "flux"],
41
+ category="image",
42
+ version="1.0.0",
43
+ classification=Classification.Prototype,
44
+ )
45
+ class FluxDenoiseInvocation(BaseInvocation, WithMetadata, WithBoard):
46
+ """Run denoising process with a FLUX transformer model."""
47
+
48
+ # If latents is provided, this means we are doing image-to-image.
49
+ latents: Optional[LatentsField] = InputField(
50
+ default=None,
51
+ description=FieldDescriptions.latents,
52
+ input=Input.Connection,
53
+ )
54
+ # denoise_mask is used for image-to-image inpainting. Only the masked region is modified.
55
+ denoise_mask: Optional[DenoiseMaskField] = InputField(
56
+ default=None,
57
+ description=FieldDescriptions.denoise_mask,
58
+ input=Input.Connection,
59
+ )
60
+ denoising_start: float = InputField(
61
+ default=0.0,
62
+ ge=0,
63
+ le=1,
64
+ description=FieldDescriptions.denoising_start,
65
+ )
66
+ denoising_end: float = InputField(default=1.0, ge=0, le=1, description=FieldDescriptions.denoising_end)
67
+ transformer: TransformerField = InputField(
68
+ description=FieldDescriptions.flux_model,
69
+ input=Input.Connection,
70
+ title="Transformer",
71
+ )
72
+ positive_text_conditioning: FluxConditioningField = InputField(
73
+ description=FieldDescriptions.positive_cond, input=Input.Connection
74
+ )
75
+ width: int = InputField(default=1024, multiple_of=16, description="Width of the generated image.")
76
+ height: int = InputField(default=1024, multiple_of=16, description="Height of the generated image.")
77
+ num_steps: int = InputField(
78
+ default=4, description="Number of diffusion steps. Recommended values are schnell: 4, dev: 50."
79
+ )
80
+ guidance: float = InputField(
81
+ default=4.0,
82
+ description="The guidance strength. Higher values adhere more strictly to the prompt, and will produce less diverse images. FLUX dev only, ignored for schnell.",
83
+ )
84
+ seed: int = InputField(default=0, description="Randomness seed for reproducibility.")
85
+
86
+ @torch.no_grad()
87
+ def invoke(self, context: InvocationContext) -> LatentsOutput:
88
+ latents = self._run_diffusion(context)
89
+ latents = latents.detach().to("cpu")
90
+
91
+ name = context.tensors.save(tensor=latents)
92
+ return LatentsOutput.build(latents_name=name, latents=latents, seed=None)
93
+
94
+ def _run_diffusion(
95
+ self,
96
+ context: InvocationContext,
97
+ ):
98
+ inference_dtype = torch.bfloat16
99
+
100
+ # Load the conditioning data.
101
+ cond_data = context.conditioning.load(self.positive_text_conditioning.conditioning_name)
102
+ assert len(cond_data.conditionings) == 1
103
+ flux_conditioning = cond_data.conditionings[0]
104
+ assert isinstance(flux_conditioning, FLUXConditioningInfo)
105
+ flux_conditioning = flux_conditioning.to(dtype=inference_dtype)
106
+ t5_embeddings = flux_conditioning.t5_embeds
107
+ clip_embeddings = flux_conditioning.clip_embeds
108
+
109
+ # Load the input latents, if provided.
110
+ init_latents = context.tensors.load(self.latents.latents_name) if self.latents else None
111
+ if init_latents is not None:
112
+ init_latents = init_latents.to(device=TorchDevice.choose_torch_device(), dtype=inference_dtype)
113
+
114
+ # Prepare input noise.
115
+ noise = get_noise(
116
+ num_samples=1,
117
+ height=self.height,
118
+ width=self.width,
119
+ device=TorchDevice.choose_torch_device(),
120
+ dtype=inference_dtype,
121
+ seed=self.seed,
122
+ )
123
+
124
+ transformer_info = context.models.load(self.transformer.transformer)
125
+ is_schnell = "schnell" in transformer_info.config.config_path
126
+
127
+ # Calculate the timestep schedule.
128
+ image_seq_len = noise.shape[-1] * noise.shape[-2] // 4
129
+ timesteps = get_schedule(
130
+ num_steps=self.num_steps,
131
+ image_seq_len=image_seq_len,
132
+ shift=not is_schnell,
133
+ )
134
+
135
+ # Clip the timesteps schedule based on denoising_start and denoising_end.
136
+ timesteps = clip_timestep_schedule(timesteps, self.denoising_start, self.denoising_end)
137
+
138
+ # Prepare input latent image.
139
+ if init_latents is not None:
140
+ # If init_latents is provided, we are doing image-to-image.
141
+
142
+ if is_schnell:
143
+ context.logger.warning(
144
+ "Running image-to-image with a FLUX schnell model. This is not recommended. The results are likely "
145
+ "to be poor. Consider using a FLUX dev model instead."
146
+ )
147
+
148
+ # Noise the orig_latents by the appropriate amount for the first timestep.
149
+ t_0 = timesteps[0]
150
+ x = t_0 * noise + (1.0 - t_0) * init_latents
151
+ else:
152
+ # init_latents are not provided, so we are not doing image-to-image (i.e. we are starting from pure noise).
153
+ if self.denoising_start > 1e-5:
154
+ raise ValueError("denoising_start should be 0 when initial latents are not provided.")
155
+
156
+ x = noise
157
+
158
+ # If len(timesteps) == 1, then short-circuit. We are just noising the input latents, but not taking any
159
+ # denoising steps.
160
+ if len(timesteps) <= 1:
161
+ return x
162
+
163
+ inpaint_mask = self._prep_inpaint_mask(context, x)
164
+
165
+ b, _c, h, w = x.shape
166
+ img_ids = generate_img_ids(h=h, w=w, batch_size=b, device=x.device, dtype=x.dtype)
167
+
168
+ bs, t5_seq_len, _ = t5_embeddings.shape
169
+ txt_ids = torch.zeros(bs, t5_seq_len, 3, dtype=inference_dtype, device=TorchDevice.choose_torch_device())
170
+
171
+ # Pack all latent tensors.
172
+ init_latents = pack(init_latents) if init_latents is not None else None
173
+ inpaint_mask = pack(inpaint_mask) if inpaint_mask is not None else None
174
+ noise = pack(noise)
175
+ x = pack(x)
176
+
177
+ # Now that we have 'packed' the latent tensors, verify that we calculated the image_seq_len correctly.
178
+ assert image_seq_len == x.shape[1]
179
+
180
+ # Prepare inpaint extension.
181
+ inpaint_extension: InpaintExtension | None = None
182
+ if inpaint_mask is not None:
183
+ assert init_latents is not None
184
+ inpaint_extension = InpaintExtension(
185
+ init_latents=init_latents,
186
+ inpaint_mask=inpaint_mask,
187
+ noise=noise,
188
+ )
189
+
190
+ with transformer_info as transformer:
191
+ assert isinstance(transformer, Flux)
192
+
193
+ x = denoise(
194
+ model=transformer,
195
+ img=x,
196
+ img_ids=img_ids,
197
+ txt=t5_embeddings,
198
+ txt_ids=txt_ids,
199
+ vec=clip_embeddings,
200
+ timesteps=timesteps,
201
+ step_callback=self._build_step_callback(context),
202
+ guidance=self.guidance,
203
+ inpaint_extension=inpaint_extension,
204
+ )
205
+
206
+ x = unpack(x.float(), self.height, self.width)
207
+ return x
208
+
209
+ def _prep_inpaint_mask(self, context: InvocationContext, latents: torch.Tensor) -> torch.Tensor | None:
210
+ """Prepare the inpaint mask.
211
+
212
+ - Loads the mask
213
+ - Resizes if necessary
214
+ - Casts to same device/dtype as latents
215
+ - Expands mask to the same shape as latents so that they line up after 'packing'
216
+
217
+ Args:
218
+ context (InvocationContext): The invocation context, for loading the inpaint mask.
219
+ latents (torch.Tensor): A latent image tensor. In 'unpacked' format. Used to determine the target shape,
220
+ device, and dtype for the inpaint mask.
221
+
222
+ Returns:
223
+ torch.Tensor | None: Inpaint mask.
224
+ """
225
+ if self.denoise_mask is None:
226
+ return None
227
+
228
+ mask = context.tensors.load(self.denoise_mask.mask_name)
229
+
230
+ _, _, latent_height, latent_width = latents.shape
231
+ mask = tv_resize(
232
+ img=mask,
233
+ size=[latent_height, latent_width],
234
+ interpolation=tv_transforms.InterpolationMode.BILINEAR,
235
+ antialias=False,
236
+ )
237
+
238
+ mask = mask.to(device=latents.device, dtype=latents.dtype)
239
+
240
+ # Expand the inpaint mask to the same shape as `latents` so that when we 'pack' `mask` it lines up with
241
+ # `latents`.
242
+ return mask.expand_as(latents)
243
+
244
+ def _build_step_callback(self, context: InvocationContext) -> Callable[[PipelineIntermediateState], None]:
245
+ def step_callback(state: PipelineIntermediateState) -> None:
246
+ state.latents = unpack(state.latents.float(), self.height, self.width).squeeze()
247
+ context.util.flux_step_callback(state)
248
+
249
+ return step_callback
@@ -0,0 +1,60 @@
1
+ import torch
2
+ from einops import rearrange
3
+ from PIL import Image
4
+
5
+ from invokeai.app.invocations.baseinvocation import BaseInvocation, invocation
6
+ from invokeai.app.invocations.fields import (
7
+ FieldDescriptions,
8
+ Input,
9
+ InputField,
10
+ LatentsField,
11
+ WithBoard,
12
+ WithMetadata,
13
+ )
14
+ from invokeai.app.invocations.model import VAEField
15
+ from invokeai.app.invocations.primitives import ImageOutput
16
+ from invokeai.app.services.shared.invocation_context import InvocationContext
17
+ from invokeai.backend.flux.modules.autoencoder import AutoEncoder
18
+ from invokeai.backend.model_manager.load.load_base import LoadedModel
19
+ from invokeai.backend.util.devices import TorchDevice
20
+
21
+
22
+ @invocation(
23
+ "flux_vae_decode",
24
+ title="FLUX Latents to Image",
25
+ tags=["latents", "image", "vae", "l2i", "flux"],
26
+ category="latents",
27
+ version="1.0.0",
28
+ )
29
+ class FluxVaeDecodeInvocation(BaseInvocation, WithMetadata, WithBoard):
30
+ """Generates an image from latents."""
31
+
32
+ latents: LatentsField = InputField(
33
+ description=FieldDescriptions.latents,
34
+ input=Input.Connection,
35
+ )
36
+ vae: VAEField = InputField(
37
+ description=FieldDescriptions.vae,
38
+ input=Input.Connection,
39
+ )
40
+
41
+ def _vae_decode(self, vae_info: LoadedModel, latents: torch.Tensor) -> Image.Image:
42
+ with vae_info as vae:
43
+ assert isinstance(vae, AutoEncoder)
44
+ latents = latents.to(device=TorchDevice.choose_torch_device(), dtype=TorchDevice.choose_torch_dtype())
45
+ img = vae.decode(latents)
46
+
47
+ img = img.clamp(-1, 1)
48
+ img = rearrange(img[0], "c h w -> h w c") # noqa: F821
49
+ img_pil = Image.fromarray((127.5 * (img + 1.0)).byte().cpu().numpy())
50
+ return img_pil
51
+
52
+ @torch.no_grad()
53
+ def invoke(self, context: InvocationContext) -> ImageOutput:
54
+ latents = context.tensors.load(self.latents.latents_name)
55
+ vae_info = context.models.load(self.vae.vae)
56
+ image = self._vae_decode(vae_info=vae_info, latents=latents)
57
+
58
+ TorchDevice.empty_cache()
59
+ image_dto = context.images.save(image=image)
60
+ return ImageOutput.build(image_dto)
@@ -0,0 +1,67 @@
1
+ import einops
2
+ import torch
3
+
4
+ from invokeai.app.invocations.baseinvocation import BaseInvocation, invocation
5
+ from invokeai.app.invocations.fields import (
6
+ FieldDescriptions,
7
+ ImageField,
8
+ Input,
9
+ InputField,
10
+ )
11
+ from invokeai.app.invocations.model import VAEField
12
+ from invokeai.app.invocations.primitives import LatentsOutput
13
+ from invokeai.app.services.shared.invocation_context import InvocationContext
14
+ from invokeai.backend.flux.modules.autoencoder import AutoEncoder
15
+ from invokeai.backend.model_manager import LoadedModel
16
+ from invokeai.backend.stable_diffusion.diffusers_pipeline import image_resized_to_grid_as_tensor
17
+ from invokeai.backend.util.devices import TorchDevice
18
+
19
+
20
+ @invocation(
21
+ "flux_vae_encode",
22
+ title="FLUX Image to Latents",
23
+ tags=["latents", "image", "vae", "i2l", "flux"],
24
+ category="latents",
25
+ version="1.0.0",
26
+ )
27
+ class FluxVaeEncodeInvocation(BaseInvocation):
28
+ """Encodes an image into latents."""
29
+
30
+ image: ImageField = InputField(
31
+ description="The image to encode.",
32
+ )
33
+ vae: VAEField = InputField(
34
+ description=FieldDescriptions.vae,
35
+ input=Input.Connection,
36
+ )
37
+
38
+ @staticmethod
39
+ def vae_encode(vae_info: LoadedModel, image_tensor: torch.Tensor) -> torch.Tensor:
40
+ # TODO(ryand): Expose seed parameter at the invocation level.
41
+ # TODO(ryand): Write a util function for generating random tensors that is consistent across devices / dtypes.
42
+ # There's a starting point in get_noise(...), but it needs to be extracted and generalized. This function
43
+ # should be used for VAE encode sampling.
44
+ generator = torch.Generator(device=TorchDevice.choose_torch_device()).manual_seed(0)
45
+ with vae_info as vae:
46
+ assert isinstance(vae, AutoEncoder)
47
+ image_tensor = image_tensor.to(
48
+ device=TorchDevice.choose_torch_device(), dtype=TorchDevice.choose_torch_dtype()
49
+ )
50
+ latents = vae.encode(image_tensor, sample=True, generator=generator)
51
+ return latents
52
+
53
+ @torch.no_grad()
54
+ def invoke(self, context: InvocationContext) -> LatentsOutput:
55
+ image = context.images.get_pil(self.image.image_name)
56
+
57
+ vae_info = context.models.load(self.vae.vae)
58
+
59
+ image_tensor = image_resized_to_grid_as_tensor(image.convert("RGB"))
60
+ if image_tensor.dim() == 3:
61
+ image_tensor = einops.rearrange(image_tensor, "c h w -> 1 c h w")
62
+
63
+ latents = self.vae_encode(vae_info=vae_info, image_tensor=image_tensor)
64
+
65
+ latents = latents.to("cpu")
66
+ name = context.tensors.save(tensor=latents)
67
+ return LatentsOutput.build(latents_name=name, latents=latents, seed=None)
@@ -126,7 +126,7 @@ class ImageMaskToTensorInvocation(BaseInvocation, WithMetadata):
126
126
  title="Tensor Mask to Image",
127
127
  tags=["mask"],
128
128
  category="mask",
129
- version="1.0.0",
129
+ version="1.1.0",
130
130
  )
131
131
  class MaskTensorToImageInvocation(BaseInvocation, WithMetadata, WithBoard):
132
132
  """Convert a mask tensor to an image."""
@@ -135,6 +135,11 @@ class MaskTensorToImageInvocation(BaseInvocation, WithMetadata, WithBoard):
135
135
 
136
136
  def invoke(self, context: InvocationContext) -> ImageOutput:
137
137
  mask = context.tensors.load(self.mask.tensor_name)
138
+
139
+ # Squeeze the channel dimension if it exists.
140
+ if mask.dim() == 3:
141
+ mask = mask.squeeze(0)
142
+
138
143
  # Ensure that the mask is binary.
139
144
  if mask.dtype != torch.bool:
140
145
  mask = mask > 0.5
@@ -103,7 +103,7 @@ class HFModelSource(StringLikeSource):
103
103
  if self.variant:
104
104
  base += f":{self.variant or ''}"
105
105
  if self.subfolder:
106
- base += f":{self.subfolder}"
106
+ base += f"::{self.subfolder.as_posix()}"
107
107
  return base
108
108
 
109
109
 
@@ -14,7 +14,7 @@ from invokeai.app.services.image_records.image_records_common import ImageCatego
14
14
  from invokeai.app.services.images.images_common import ImageDTO
15
15
  from invokeai.app.services.invocation_services import InvocationServices
16
16
  from invokeai.app.services.model_records.model_records_base import UnknownModelException
17
- from invokeai.app.util.step_callback import stable_diffusion_step_callback
17
+ from invokeai.app.util.step_callback import flux_step_callback, stable_diffusion_step_callback
18
18
  from invokeai.backend.model_manager.config import (
19
19
  AnyModel,
20
20
  AnyModelConfig,
@@ -557,6 +557,24 @@ class UtilInterface(InvocationContextInterface):
557
557
  is_canceled=self.is_canceled,
558
558
  )
559
559
 
560
+ def flux_step_callback(self, intermediate_state: PipelineIntermediateState) -> None:
561
+ """
562
+ The step callback emits a progress event with the current step, the total number of
563
+ steps, a preview image, and some other internal metadata.
564
+
565
+ This should be called after each denoising step.
566
+
567
+ Args:
568
+ intermediate_state: The intermediate state of the diffusion pipeline.
569
+ """
570
+
571
+ flux_step_callback(
572
+ context_data=self._data,
573
+ intermediate_state=intermediate_state,
574
+ events=self._services.events,
575
+ is_canceled=self.is_canceled,
576
+ )
577
+
560
578
 
561
579
  class InvocationContext:
562
580
  """Provides access to various services and data for the current invocation.