InvokeAI 4.2.9.dev4__tar.gz → 4.2.9.dev6__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 (477) hide show
  1. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/InvokeAI.egg-info/PKG-INFO +1 -1
  2. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/InvokeAI.egg-info/SOURCES.txt +20 -3
  3. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/InvokeAI.egg-info/requires.txt +4 -0
  4. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/PKG-INFO +1 -1
  5. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/baseinvocation.py +23 -31
  6. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/fields.py +11 -0
  7. InvokeAI-4.2.9.dev6/invokeai/app/invocations/flux_text_encoder.py +86 -0
  8. InvokeAI-4.2.9.dev6/invokeai/app/invocations/flux_text_to_image.py +172 -0
  9. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/model.py +124 -2
  10. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/primitives.py +12 -0
  11. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/model_install/model_install_default.py +3 -2
  12. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/model_records/model_records_base.py +1 -0
  13. InvokeAI-4.2.9.dev6/invokeai/app/services/workflow_records/default_workflows/Flux Text to Image.json +266 -0
  14. InvokeAI-4.2.9.dev6/invokeai/backend/flux/math.py +32 -0
  15. InvokeAI-4.2.9.dev6/invokeai/backend/flux/model.py +117 -0
  16. InvokeAI-4.2.9.dev6/invokeai/backend/flux/modules/autoencoder.py +310 -0
  17. InvokeAI-4.2.9.dev6/invokeai/backend/flux/modules/conditioner.py +33 -0
  18. InvokeAI-4.2.9.dev6/invokeai/backend/flux/modules/layers.py +253 -0
  19. InvokeAI-4.2.9.dev6/invokeai/backend/flux/sampling.py +176 -0
  20. InvokeAI-4.2.9.dev6/invokeai/backend/flux/util.py +71 -0
  21. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/config.py +60 -3
  22. InvokeAI-4.2.9.dev6/invokeai/backend/model_manager/load/model_loaders/flux.py +234 -0
  23. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/load/model_loaders/generic_diffusers.py +6 -1
  24. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/load/model_loaders/stable_diffusion.py +12 -2
  25. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/load/model_util.py +12 -1
  26. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/probe.py +57 -12
  27. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/starter_models.py +74 -1
  28. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/util/select_hf_files.py +23 -3
  29. InvokeAI-4.2.9.dev6/invokeai/backend/quantization/bnb_llm_int8.py +125 -0
  30. InvokeAI-4.2.9.dev6/invokeai/backend/quantization/bnb_nf4.py +156 -0
  31. InvokeAI-4.2.9.dev6/invokeai/backend/quantization/scripts/load_flux_model_bnb_llm_int8.py +79 -0
  32. InvokeAI-4.2.9.dev6/invokeai/backend/quantization/scripts/load_flux_model_bnb_nf4.py +96 -0
  33. InvokeAI-4.2.9.dev6/invokeai/backend/quantization/scripts/quantize_t5_xxl_bnb_llm_int8.py +92 -0
  34. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/diffusion/conditioning_data.py +11 -5
  35. InvokeAI-4.2.9.dev6/invokeai/frontend/cli/__init__.py +0 -0
  36. InvokeAI-4.2.9.dev6/invokeai/frontend/web/dist/assets/App-vCM7oRzD.js +66 -0
  37. InvokeAI-4.2.9.dev6/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-C04frtGG.js +1 -0
  38. InvokeAI-4.2.9.dev6/invokeai/frontend/web/dist/assets/index-do3ah3Ti.js +563 -0
  39. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/index.html +1 -1
  40. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/en.json +9 -2
  41. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/invocation_api/__init__.py +4 -0
  42. InvokeAI-4.2.9.dev6/invokeai/version/invokeai_version.py +1 -0
  43. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/pyproject.toml +3 -0
  44. InvokeAI-4.2.9.dev4/invokeai/frontend/web/dist/assets/App-Dp3a5nk3.js +0 -26
  45. InvokeAI-4.2.9.dev4/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-oaIduhpQ.js +0 -1
  46. InvokeAI-4.2.9.dev4/invokeai/frontend/web/dist/assets/index-hqV6JEH_.js +0 -563
  47. InvokeAI-4.2.9.dev4/invokeai/version/invokeai_version.py +0 -1
  48. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/InvokeAI.egg-info/dependency_links.txt +0 -0
  49. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/InvokeAI.egg-info/entry_points.txt +0 -0
  50. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/InvokeAI.egg-info/top_level.txt +0 -0
  51. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/LICENSE +0 -0
  52. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/LICENSE-SD1+SD2.txt +0 -0
  53. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/LICENSE-SDXL.txt +0 -0
  54. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/README.md +0 -0
  55. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/__init__.py +0 -0
  56. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/api/dependencies.py +0 -0
  57. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/api/no_cache_staticfiles.py +0 -0
  58. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/api/routers/app_info.py +0 -0
  59. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/api/routers/board_images.py +0 -0
  60. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/api/routers/boards.py +0 -0
  61. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/api/routers/download_queue.py +0 -0
  62. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/api/routers/images.py +0 -0
  63. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/api/routers/model_manager.py +0 -0
  64. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/api/routers/session_queue.py +0 -0
  65. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/api/routers/style_presets.py +0 -0
  66. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/api/routers/utilities.py +0 -0
  67. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/api/routers/workflows.py +0 -0
  68. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/api/sockets.py +0 -0
  69. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/api_app.py +0 -0
  70. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/assets/images/caution.png +0 -0
  71. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/__init__.py +0 -0
  72. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/blend_latents.py +0 -0
  73. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/collections.py +0 -0
  74. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/compel.py +0 -0
  75. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/constants.py +0 -0
  76. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/controlnet_image_processors.py +0 -0
  77. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/create_denoise_mask.py +0 -0
  78. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/create_gradient_mask.py +0 -0
  79. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/crop_latents.py +0 -0
  80. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/custom_nodes/README.md +0 -0
  81. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/custom_nodes/init.py +0 -0
  82. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/cv.py +0 -0
  83. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/denoise_latents.py +0 -0
  84. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/facetools.py +0 -0
  85. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/grounding_dino.py +0 -0
  86. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/ideal_size.py +0 -0
  87. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/image.py +0 -0
  88. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/image_to_latents.py +0 -0
  89. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/infill.py +0 -0
  90. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/ip_adapter.py +0 -0
  91. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/latents_to_image.py +0 -0
  92. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/mask.py +0 -0
  93. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/math.py +0 -0
  94. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/metadata.py +0 -0
  95. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/noise.py +0 -0
  96. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/param_easing.py +0 -0
  97. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/prompt.py +0 -0
  98. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/resize_latents.py +0 -0
  99. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/scheduler.py +0 -0
  100. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/sdxl.py +0 -0
  101. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/segment_anything.py +0 -0
  102. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/spandrel_image_to_image.py +0 -0
  103. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/strings.py +0 -0
  104. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/t2i_adapter.py +0 -0
  105. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/tiled_multi_diffusion_denoise_latents.py +0 -0
  106. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/tiles.py +0 -0
  107. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/upscale.py +0 -0
  108. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/invocations/util.py +0 -0
  109. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/run_app.py +0 -0
  110. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/__init__.py +0 -0
  111. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/board_image_records/__init__.py +0 -0
  112. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/board_image_records/board_image_records_base.py +0 -0
  113. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/board_image_records/board_image_records_sqlite.py +0 -0
  114. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/board_images/__init__.py +0 -0
  115. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/board_images/board_images_base.py +0 -0
  116. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/board_images/board_images_common.py +0 -0
  117. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/board_images/board_images_default.py +0 -0
  118. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/board_records/board_records_base.py +0 -0
  119. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/board_records/board_records_common.py +0 -0
  120. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/board_records/board_records_sqlite.py +0 -0
  121. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/boards/__init__.py +0 -0
  122. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/boards/boards_base.py +0 -0
  123. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/boards/boards_common.py +0 -0
  124. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/boards/boards_default.py +0 -0
  125. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/bulk_download/__init__.py +0 -0
  126. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/bulk_download/bulk_download_base.py +0 -0
  127. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/bulk_download/bulk_download_common.py +0 -0
  128. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/bulk_download/bulk_download_default.py +0 -0
  129. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/config/__init__.py +0 -0
  130. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/config/config_common.py +0 -0
  131. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/config/config_default.py +0 -0
  132. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/download/__init__.py +0 -0
  133. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/download/download_base.py +0 -0
  134. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/download/download_default.py +0 -0
  135. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/events/__init__.py +0 -0
  136. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/events/events_base.py +0 -0
  137. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/events/events_common.py +0 -0
  138. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/events/events_fastapievents.py +0 -0
  139. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/image_files/__init__.py +0 -0
  140. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/image_files/image_files_base.py +0 -0
  141. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/image_files/image_files_common.py +0 -0
  142. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/image_files/image_files_disk.py +0 -0
  143. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/image_records/__init__.py +0 -0
  144. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/image_records/image_records_base.py +0 -0
  145. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/image_records/image_records_common.py +0 -0
  146. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/image_records/image_records_sqlite.py +0 -0
  147. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/images/__init__.py +0 -0
  148. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/images/images_base.py +0 -0
  149. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/images/images_common.py +0 -0
  150. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/images/images_default.py +0 -0
  151. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/invocation_cache/__init__.py +0 -0
  152. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/invocation_cache/invocation_cache_base.py +0 -0
  153. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/invocation_cache/invocation_cache_common.py +0 -0
  154. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/invocation_cache/invocation_cache_memory.py +0 -0
  155. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/invocation_services.py +0 -0
  156. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/invocation_stats/__init__.py +0 -0
  157. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/invocation_stats/invocation_stats_base.py +0 -0
  158. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/invocation_stats/invocation_stats_common.py +0 -0
  159. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/invocation_stats/invocation_stats_default.py +0 -0
  160. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/invoker.py +0 -0
  161. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/item_storage/__init__.py +0 -0
  162. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/item_storage/item_storage_base.py +0 -0
  163. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/item_storage/item_storage_common.py +0 -0
  164. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/item_storage/item_storage_memory.py +0 -0
  165. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/model_images/model_images_base.py +0 -0
  166. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/model_images/model_images_common.py +0 -0
  167. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/model_images/model_images_default.py +0 -0
  168. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/model_install/__init__.py +0 -0
  169. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/model_install/model_install_base.py +0 -0
  170. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/model_install/model_install_common.py +0 -0
  171. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/model_load/__init__.py +0 -0
  172. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/model_load/model_load_base.py +0 -0
  173. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/model_load/model_load_default.py +0 -0
  174. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/model_manager/__init__.py +0 -0
  175. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/model_manager/model_manager_base.py +0 -0
  176. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/model_manager/model_manager_common.py +0 -0
  177. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/model_manager/model_manager_default.py +0 -0
  178. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/model_records/__init__.py +0 -0
  179. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/model_records/model_records_sql.py +0 -0
  180. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/names/__init__.py +0 -0
  181. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/names/names_base.py +0 -0
  182. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/names/names_common.py +0 -0
  183. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/names/names_default.py +0 -0
  184. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/object_serializer/object_serializer_base.py +0 -0
  185. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/object_serializer/object_serializer_common.py +0 -0
  186. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/object_serializer/object_serializer_disk.py +0 -0
  187. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/object_serializer/object_serializer_forward_cache.py +0 -0
  188. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/session_processor/__init__.py +0 -0
  189. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/session_processor/session_processor_base.py +0 -0
  190. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/session_processor/session_processor_common.py +0 -0
  191. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/session_processor/session_processor_default.py +0 -0
  192. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/session_queue/__init__.py +0 -0
  193. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/session_queue/session_queue_base.py +0 -0
  194. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/session_queue/session_queue_common.py +0 -0
  195. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/session_queue/session_queue_sqlite.py +0 -0
  196. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/__init__.py +0 -0
  197. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/graph.py +0 -0
  198. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/invocation_context.py +0 -0
  199. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/pagination.py +0 -0
  200. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/sqlite/__init__.py +0 -0
  201. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/sqlite/sqlite_common.py +0 -0
  202. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/sqlite/sqlite_database.py +0 -0
  203. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/sqlite/sqlite_util.py +0 -0
  204. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/sqlite_migrator/__init__.py +0 -0
  205. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/sqlite_migrator/migrations/__init__.py +0 -0
  206. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_1.py +0 -0
  207. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_10.py +0 -0
  208. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_11.py +0 -0
  209. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_12.py +0 -0
  210. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_13.py +0 -0
  211. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_14.py +0 -0
  212. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_15.py +0 -0
  213. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_2.py +0 -0
  214. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_3.py +0 -0
  215. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_4.py +0 -0
  216. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_5.py +0 -0
  217. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_6.py +0 -0
  218. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_7.py +0 -0
  219. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_8.py +0 -0
  220. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_9.py +0 -0
  221. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/sqlite_migrator/sqlite_migrator_common.py +0 -0
  222. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/shared/sqlite_migrator/sqlite_migrator_impl.py +0 -0
  223. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_images/default_style_preset_images/Anime.png +0 -0
  224. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_images/default_style_preset_images/Architectural Visualization.png +0 -0
  225. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Character).png +0 -0
  226. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Fantasy).png +0 -0
  227. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Painterly).png +0 -0
  228. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Sci-Fi).png +0 -0
  229. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_images/default_style_preset_images/Environment Art.png +0 -0
  230. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_images/default_style_preset_images/Illustration.png +0 -0
  231. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_images/default_style_preset_images/Interior Design (Visualization).png +0 -0
  232. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_images/default_style_preset_images/Line Art.png +0 -0
  233. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (Black and White).png +0 -0
  234. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (General).png +0 -0
  235. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (Landscape).png +0 -0
  236. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (Portrait).png +0 -0
  237. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (Studio Lighting).png +0 -0
  238. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_images/default_style_preset_images/Product Rendering.png +0 -0
  239. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_images/default_style_preset_images/Sketch.png +0 -0
  240. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_images/default_style_preset_images/Vehicles.png +0 -0
  241. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_images/default_style_preset_images/__init__.py +0 -0
  242. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_images/style_preset_images_base.py +0 -0
  243. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_images/style_preset_images_common.py +0 -0
  244. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_images/style_preset_images_disk.py +0 -0
  245. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_records/__init__.py +0 -0
  246. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_records/default_style_presets.json +0 -0
  247. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_records/style_preset_records_base.py +0 -0
  248. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_records/style_preset_records_common.py +0 -0
  249. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/style_preset_records/style_preset_records_sqlite.py +0 -0
  250. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/urls/__init__.py +0 -0
  251. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/urls/urls_base.py +0 -0
  252. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/urls/urls_default.py +0 -0
  253. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/workflow_records/__init__.py +0 -0
  254. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/workflow_records/default_workflows/ESRGAN Upscaling with Canny ControlNet.json +0 -0
  255. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/workflow_records/default_workflows/Face Detailer with IP-Adapter & Canny (See Note in Details).json +0 -0
  256. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/workflow_records/default_workflows/Multi ControlNet (Canny & Depth).json +0 -0
  257. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/workflow_records/default_workflows/MultiDiffusion SD1.5.json +0 -0
  258. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/workflow_records/default_workflows/MultiDiffusion SDXL.json +0 -0
  259. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/workflow_records/default_workflows/Prompt from File.json +0 -0
  260. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/workflow_records/default_workflows/Text to Image - SD1.5.json +0 -0
  261. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/workflow_records/default_workflows/Text to Image - SDXL.json +0 -0
  262. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/workflow_records/default_workflows/Text to Image with LoRA.json +0 -0
  263. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/workflow_records/default_workflows/Tiled Upscaling (Beta).json +0 -0
  264. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/workflow_records/workflow_records_base.py +0 -0
  265. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/workflow_records/workflow_records_common.py +0 -0
  266. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/services/workflow_records/workflow_records_sqlite.py +0 -0
  267. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/shared/__init__.py +0 -0
  268. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/shared/models.py +0 -0
  269. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/util/__init__.py +0 -0
  270. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/util/controlnet_utils.py +0 -0
  271. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/util/custom_openapi.py +0 -0
  272. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/util/metaenum.py +0 -0
  273. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/util/misc.py +0 -0
  274. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/util/model_exclude_null.py +0 -0
  275. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/util/profiler.py +0 -0
  276. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/util/step_callback.py +0 -0
  277. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/util/suppress_output.py +0 -0
  278. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/util/thumbnails.py +0 -0
  279. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/app/util/ti_utils.py +0 -0
  280. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/assets/fonts/inter/Inter-Regular.ttf +0 -0
  281. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/__init__.py +0 -0
  282. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/__init__.py +0 -0
  283. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/basicsr/__init__.py +0 -0
  284. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/basicsr/arch_util.py +0 -0
  285. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/basicsr/rrdbnet_arch.py +0 -0
  286. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/canny.py +0 -0
  287. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/depth_anything/depth_anything_pipeline.py +0 -0
  288. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/dw_openpose/__init__.py +0 -0
  289. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/dw_openpose/onnxdet.py +0 -0
  290. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/dw_openpose/onnxpose.py +0 -0
  291. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/dw_openpose/utils.py +0 -0
  292. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/dw_openpose/wholebody.py +0 -0
  293. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/grounding_dino/__init__.py +0 -0
  294. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/grounding_dino/detection_result.py +0 -0
  295. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/grounding_dino/grounding_dino_pipeline.py +0 -0
  296. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/hed.py +0 -0
  297. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/infill_methods/cv2_inpaint.py +0 -0
  298. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/infill_methods/lama.py +0 -0
  299. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/infill_methods/mosaic.py +0 -0
  300. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/infill_methods/patchmatch.py +0 -0
  301. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/infill_methods/tile.py +0 -0
  302. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/invisible_watermark.py +0 -0
  303. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/lineart.py +0 -0
  304. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/lineart_anime.py +0 -0
  305. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/pngwriter.py +0 -0
  306. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/realesrgan/__init__.py +0 -0
  307. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/realesrgan/realesrgan.py +0 -0
  308. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/safety_checker.py +0 -0
  309. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/segment_anything/__init__.py +0 -0
  310. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/segment_anything/mask_refinement.py +0 -0
  311. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/segment_anything/segment_anything_pipeline.py +0 -0
  312. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/image_util/util.py +0 -0
  313. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/ip_adapter/__init__.py +0 -0
  314. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/ip_adapter/ip_adapter.py +0 -0
  315. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/ip_adapter/ip_attention_weights.py +0 -0
  316. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/ip_adapter/resampler.py +0 -0
  317. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/lora.py +0 -0
  318. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_hash/hash_validator.py +0 -0
  319. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_hash/model_hash.py +0 -0
  320. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/__init__.py +0 -0
  321. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/load/__init__.py +0 -0
  322. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/load/load_base.py +0 -0
  323. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/load/load_default.py +0 -0
  324. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/load/memory_snapshot.py +0 -0
  325. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/load/model_cache/__init__.py +0 -0
  326. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/load/model_cache/model_cache_base.py +0 -0
  327. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/load/model_cache/model_cache_default.py +0 -0
  328. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/load/model_cache/model_locker.py +0 -0
  329. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/load/model_loader_registry.py +0 -0
  330. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/load/model_loaders/__init__.py +0 -0
  331. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/load/model_loaders/controlnet.py +0 -0
  332. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/load/model_loaders/ip_adapter.py +0 -0
  333. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/load/model_loaders/lora.py +0 -0
  334. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/load/model_loaders/onnx.py +0 -0
  335. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/load/model_loaders/spandrel_image_to_image.py +0 -0
  336. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/load/model_loaders/textual_inversion.py +0 -0
  337. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/load/model_loaders/vae.py +0 -0
  338. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/load/optimizations.py +0 -0
  339. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/merge.py +0 -0
  340. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/metadata/__init__.py +0 -0
  341. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/metadata/fetch/__init__.py +0 -0
  342. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/metadata/fetch/fetch_base.py +0 -0
  343. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/metadata/fetch/huggingface.py +0 -0
  344. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/metadata/metadata_base.py +0 -0
  345. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/search.py +0 -0
  346. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/util/libc_util.py +0 -0
  347. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_manager/util/model_util.py +0 -0
  348. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/model_patcher.py +0 -0
  349. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/onnx/onnx_runtime.py +0 -0
  350. {InvokeAI-4.2.9.dev4/invokeai/backend/tiles → InvokeAI-4.2.9.dev6/invokeai/backend/quantization}/__init__.py +0 -0
  351. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/raw_model.py +0 -0
  352. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/spandrel_image_to_image_model.py +0 -0
  353. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/__init__.py +0 -0
  354. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/denoise_context.py +0 -0
  355. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/diffusers_pipeline.py +0 -0
  356. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/diffusion/__init__.py +0 -0
  357. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/diffusion/custom_atttention.py +0 -0
  358. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/diffusion/regional_ip_data.py +0 -0
  359. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/diffusion/regional_prompt_data.py +0 -0
  360. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/diffusion/shared_invokeai_diffusion.py +0 -0
  361. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/diffusion/unet_attention_patcher.py +0 -0
  362. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/diffusion_backend.py +0 -0
  363. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/extension_callback_type.py +0 -0
  364. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/extensions/base.py +0 -0
  365. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/extensions/controlnet.py +0 -0
  366. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/extensions/freeu.py +0 -0
  367. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/extensions/inpaint.py +0 -0
  368. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/extensions/inpaint_model.py +0 -0
  369. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/extensions/lora.py +0 -0
  370. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/extensions/preview.py +0 -0
  371. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/extensions/rescale_cfg.py +0 -0
  372. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/extensions/seamless.py +0 -0
  373. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/extensions/t2i_adapter.py +0 -0
  374. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/extensions_manager.py +0 -0
  375. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/multi_diffusion_pipeline.py +0 -0
  376. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/schedulers/__init__.py +0 -0
  377. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/schedulers/schedulers.py +0 -0
  378. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/stable_diffusion/vae_tiling.py +0 -0
  379. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/textual_inversion.py +0 -0
  380. {InvokeAI-4.2.9.dev4/invokeai/frontend/cli → InvokeAI-4.2.9.dev6/invokeai/backend/tiles}/__init__.py +0 -0
  381. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/tiles/tiles.py +0 -0
  382. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/tiles/utils.py +0 -0
  383. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/util/__init__.py +0 -0
  384. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/util/attention.py +0 -0
  385. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/util/catch_sigint.py +0 -0
  386. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/util/db_maintenance.py +0 -0
  387. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/util/devices.py +0 -0
  388. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/util/hotfixes.py +0 -0
  389. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/util/logging.py +0 -0
  390. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/util/mask.py +0 -0
  391. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/util/mps_fixes.py +0 -0
  392. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/util/original_weights_storage.py +0 -0
  393. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/util/silence_warnings.py +0 -0
  394. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/util/test_utils.py +0 -0
  395. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/backend/util/util.py +0 -0
  396. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/configs/controlnet/cldm_v15.yaml +0 -0
  397. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/configs/controlnet/cldm_v21.yaml +0 -0
  398. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/configs/stable-diffusion/sd_xl_base.yaml +0 -0
  399. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/configs/stable-diffusion/sd_xl_inpaint.yaml +0 -0
  400. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/configs/stable-diffusion/sd_xl_refiner.yaml +0 -0
  401. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/configs/stable-diffusion/v1-finetune.yaml +0 -0
  402. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/configs/stable-diffusion/v1-finetune_style.yaml +0 -0
  403. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/configs/stable-diffusion/v1-inference-v.yaml +0 -0
  404. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/configs/stable-diffusion/v1-inference.yaml +0 -0
  405. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/configs/stable-diffusion/v1-inpainting-inference.yaml +0 -0
  406. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/configs/stable-diffusion/v1-m1-finetune.yaml +0 -0
  407. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/configs/stable-diffusion/v2-inference-v.yaml +0 -0
  408. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/configs/stable-diffusion/v2-inference.yaml +0 -0
  409. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/configs/stable-diffusion/v2-inpainting-inference-v.yaml +0 -0
  410. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/configs/stable-diffusion/v2-inpainting-inference.yaml +0 -0
  411. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/configs/stable-diffusion/v2-midas-inference.yaml +0 -0
  412. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/__init__.py +0 -0
  413. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/cli/arg_parser.py +0 -0
  414. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/install/__init__.py +0 -0
  415. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/install/import_images.py +0 -0
  416. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/__init__.py +0 -0
  417. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/App-DEu4J2pT.css +0 -0
  418. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-B2NxUfIp.css +0 -0
  419. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/images/invoke-alert-favicon.svg +0 -0
  420. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/images/invoke-avatar-circle.svg +0 -0
  421. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/images/invoke-avatar-square.svg +0 -0
  422. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/images/invoke-favicon.png +0 -0
  423. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/images/invoke-favicon.svg +0 -0
  424. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/images/invoke-key-char-lrg.svg +0 -0
  425. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/images/invoke-key-char-sml.svg +0 -0
  426. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/images/invoke-key-wht-lrg.svg +0 -0
  427. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/images/invoke-key-wht-sml.svg +0 -0
  428. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/images/invoke-symbol-char-lrg.svg +0 -0
  429. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/images/invoke-symbol-char-sml.svg +0 -0
  430. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/images/invoke-symbol-wht-lrg.svg +0 -0
  431. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/images/invoke-symbol-wht-sml.svg +0 -0
  432. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/images/invoke-symbol-ylw-lrg.svg +0 -0
  433. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/images/invoke-tag-char-lrg.svg +0 -0
  434. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/images/invoke-tag-char-sml.svg +0 -0
  435. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/images/invoke-tag-lrg.svg +0 -0
  436. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/images/invoke-tag-sml.svg +0 -0
  437. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/images/invoke-wordmark-charcoal.svg +0 -0
  438. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/images/invoke-wordmark-white.svg +0 -0
  439. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/images/mask.svg +0 -0
  440. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/images/transparent_bg.png +0 -0
  441. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/inter-cyrillic-ext-wght-normal-B2xhLi22.woff2 +0 -0
  442. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/inter-cyrillic-wght-normal-CMZtQduZ.woff2 +0 -0
  443. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/inter-greek-ext-wght-normal-CGAr0uHJ.woff2 +0 -0
  444. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/inter-greek-wght-normal-CaVNZxsx.woff2 +0 -0
  445. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/inter-latin-ext-wght-normal-CFHvXkgd.woff2 +0 -0
  446. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/inter-latin-wght-normal-C2S99t-D.woff2 +0 -0
  447. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
  448. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/assets/worker-Dywf1EVc.js +0 -0
  449. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/ar.json +0 -0
  450. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/az.json +0 -0
  451. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/bg.json +0 -0
  452. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/de.json +0 -0
  453. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/es.json +0 -0
  454. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/fi.json +0 -0
  455. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/fr.json +0 -0
  456. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/he.json +0 -0
  457. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/hu.json +0 -0
  458. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/it.json +0 -0
  459. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/ja.json +0 -0
  460. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/ko.json +0 -0
  461. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/mn.json +0 -0
  462. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/nl.json +0 -0
  463. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/pl.json +0 -0
  464. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/pt.json +0 -0
  465. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/pt_BR.json +0 -0
  466. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/ro.json +0 -0
  467. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/ru.json +0 -0
  468. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/sv.json +0 -0
  469. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/tr.json +0 -0
  470. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/uk.json +0 -0
  471. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/vi.json +0 -0
  472. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/zh_CN.json +0 -0
  473. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/dist/locales/zh_Hant.json +0 -0
  474. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/scripts/clean_translations.py +0 -0
  475. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/frontend/web/static/docs/invoke-favicon-docs.svg +0 -0
  476. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/invokeai/version/__init__.py +0 -0
  477. {InvokeAI-4.2.9.dev4 → InvokeAI-4.2.9.dev6}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: InvokeAI
3
- Version: 4.2.9.dev4
3
+ Version: 4.2.9.dev6
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,6 +40,8 @@ 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_text_encoder.py
44
+ invokeai/app/invocations/flux_text_to_image.py
43
45
  invokeai/app/invocations/grounding_dino.py
44
46
  invokeai/app/invocations/ideal_size.py
45
47
  invokeai/app/invocations/image.py
@@ -219,6 +221,7 @@ invokeai/app/services/workflow_records/workflow_records_common.py
219
221
  invokeai/app/services/workflow_records/workflow_records_sqlite.py
220
222
  invokeai/app/services/workflow_records/default_workflows/ESRGAN Upscaling with Canny ControlNet.json
221
223
  invokeai/app/services/workflow_records/default_workflows/Face Detailer with IP-Adapter & Canny (See Note in Details).json
224
+ invokeai/app/services/workflow_records/default_workflows/Flux Text to Image.json
222
225
  invokeai/app/services/workflow_records/default_workflows/Multi ControlNet (Canny & Depth).json
223
226
  invokeai/app/services/workflow_records/default_workflows/MultiDiffusion SD1.5.json
224
227
  invokeai/app/services/workflow_records/default_workflows/MultiDiffusion SDXL.json
@@ -247,6 +250,13 @@ invokeai/backend/model_patcher.py
247
250
  invokeai/backend/raw_model.py
248
251
  invokeai/backend/spandrel_image_to_image_model.py
249
252
  invokeai/backend/textual_inversion.py
253
+ invokeai/backend/flux/math.py
254
+ invokeai/backend/flux/model.py
255
+ invokeai/backend/flux/sampling.py
256
+ invokeai/backend/flux/util.py
257
+ invokeai/backend/flux/modules/autoencoder.py
258
+ invokeai/backend/flux/modules/conditioner.py
259
+ invokeai/backend/flux/modules/layers.py
250
260
  invokeai/backend/image_util/__init__.py
251
261
  invokeai/backend/image_util/canny.py
252
262
  invokeai/backend/image_util/hed.py
@@ -303,6 +313,7 @@ invokeai/backend/model_manager/load/model_cache/model_cache_default.py
303
313
  invokeai/backend/model_manager/load/model_cache/model_locker.py
304
314
  invokeai/backend/model_manager/load/model_loaders/__init__.py
305
315
  invokeai/backend/model_manager/load/model_loaders/controlnet.py
316
+ invokeai/backend/model_manager/load/model_loaders/flux.py
306
317
  invokeai/backend/model_manager/load/model_loaders/generic_diffusers.py
307
318
  invokeai/backend/model_manager/load/model_loaders/ip_adapter.py
308
319
  invokeai/backend/model_manager/load/model_loaders/lora.py
@@ -320,6 +331,12 @@ invokeai/backend/model_manager/util/libc_util.py
320
331
  invokeai/backend/model_manager/util/model_util.py
321
332
  invokeai/backend/model_manager/util/select_hf_files.py
322
333
  invokeai/backend/onnx/onnx_runtime.py
334
+ invokeai/backend/quantization/__init__.py
335
+ invokeai/backend/quantization/bnb_llm_int8.py
336
+ invokeai/backend/quantization/bnb_nf4.py
337
+ invokeai/backend/quantization/scripts/load_flux_model_bnb_llm_int8.py
338
+ invokeai/backend/quantization/scripts/load_flux_model_bnb_nf4.py
339
+ invokeai/backend/quantization/scripts/quantize_t5_xxl_bnb_llm_int8.py
323
340
  invokeai/backend/stable_diffusion/__init__.py
324
341
  invokeai/backend/stable_diffusion/denoise_context.py
325
342
  invokeai/backend/stable_diffusion/diffusers_pipeline.py
@@ -387,10 +404,10 @@ invokeai/frontend/install/import_images.py
387
404
  invokeai/frontend/web/__init__.py
388
405
  invokeai/frontend/web/dist/index.html
389
406
  invokeai/frontend/web/dist/assets/App-DEu4J2pT.css
390
- invokeai/frontend/web/dist/assets/App-Dp3a5nk3.js
407
+ invokeai/frontend/web/dist/assets/App-vCM7oRzD.js
391
408
  invokeai/frontend/web/dist/assets/ThemeLocaleProvider-B2NxUfIp.css
392
- invokeai/frontend/web/dist/assets/ThemeLocaleProvider-oaIduhpQ.js
393
- invokeai/frontend/web/dist/assets/index-hqV6JEH_.js
409
+ invokeai/frontend/web/dist/assets/ThemeLocaleProvider-C04frtGG.js
410
+ invokeai/frontend/web/dist/assets/index-do3ah3Ti.js
394
411
  invokeai/frontend/web/dist/assets/inter-cyrillic-ext-wght-normal-B2xhLi22.woff2
395
412
  invokeai/frontend/web/dist/assets/inter-cyrillic-wght-normal-CMZtQduZ.woff2
396
413
  invokeai/frontend/web/dist/assets/inter-greek-ext-wght-normal-CGAr0uHJ.woff2
@@ -11,6 +11,7 @@ onnxruntime==1.16.3
11
11
  opencv-python==4.9.0.80
12
12
  pytorch-lightning==2.1.3
13
13
  safetensors==0.4.3
14
+ sentencepiece==0.2.0
14
15
  spandrel==0.3.4
15
16
  timm==0.6.13
16
17
  torch==2.2.2
@@ -52,6 +53,9 @@ scikit-image~=0.21.0
52
53
  semver~=3.0.1
53
54
  test-tube~=0.7.5
54
55
 
56
+ [:sys_platform != "darwin"]
57
+ bitsandbytes==0.43.3
58
+
55
59
  [:sys_platform == "win32"]
56
60
  windows-curses
57
61
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: InvokeAI
3
- Version: 4.2.9.dev4
3
+ Version: 4.2.9.dev6
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
@@ -20,7 +20,6 @@ from typing import (
20
20
  Type,
21
21
  TypeVar,
22
22
  Union,
23
- cast,
24
23
  )
25
24
 
26
25
  import semver
@@ -80,7 +79,7 @@ class UIConfigBase(BaseModel):
80
79
  version: str = Field(
81
80
  description='The node\'s version. Should be a valid semver string e.g. "1.0.0" or "3.8.13".',
82
81
  )
83
- node_pack: Optional[str] = Field(default=None, description="Whether or not this is a custom node")
82
+ node_pack: str = Field(description="The node pack that this node belongs to, will be 'invokeai' for built-in nodes")
84
83
  classification: Classification = Field(default=Classification.Stable, description="The node's classification")
85
84
 
86
85
  model_config = ConfigDict(
@@ -230,18 +229,16 @@ class BaseInvocation(ABC, BaseModel):
230
229
  @staticmethod
231
230
  def json_schema_extra(schema: dict[str, Any], model_class: Type[BaseInvocation]) -> None:
232
231
  """Adds various UI-facing attributes to the invocation's OpenAPI schema."""
233
- uiconfig = cast(UIConfigBase | None, getattr(model_class, "UIConfig", None))
234
- if uiconfig is not None:
235
- if uiconfig.title is not None:
236
- schema["title"] = uiconfig.title
237
- if uiconfig.tags is not None:
238
- schema["tags"] = uiconfig.tags
239
- if uiconfig.category is not None:
240
- schema["category"] = uiconfig.category
241
- if uiconfig.node_pack is not None:
242
- schema["node_pack"] = uiconfig.node_pack
243
- schema["classification"] = uiconfig.classification
244
- schema["version"] = uiconfig.version
232
+ if title := model_class.UIConfig.title:
233
+ schema["title"] = title
234
+ if tags := model_class.UIConfig.tags:
235
+ schema["tags"] = tags
236
+ if category := model_class.UIConfig.category:
237
+ schema["category"] = category
238
+ if node_pack := model_class.UIConfig.node_pack:
239
+ schema["node_pack"] = node_pack
240
+ schema["classification"] = model_class.UIConfig.classification
241
+ schema["version"] = model_class.UIConfig.version
245
242
  if "required" not in schema or not isinstance(schema["required"], list):
246
243
  schema["required"] = []
247
244
  schema["class"] = "invocation"
@@ -312,7 +309,7 @@ class BaseInvocation(ABC, BaseModel):
312
309
  json_schema_extra={"field_kind": FieldKind.NodeAttribute},
313
310
  )
314
311
 
315
- UIConfig: ClassVar[Type[UIConfigBase]]
312
+ UIConfig: ClassVar[UIConfigBase]
316
313
 
317
314
  model_config = ConfigDict(
318
315
  protected_namespaces=(),
@@ -441,30 +438,25 @@ def invocation(
441
438
  validate_fields(cls.model_fields, invocation_type)
442
439
 
443
440
  # Add OpenAPI schema extras
444
- uiconfig_name = cls.__qualname__ + ".UIConfig"
445
- if not hasattr(cls, "UIConfig") or cls.UIConfig.__qualname__ != uiconfig_name:
446
- cls.UIConfig = type(uiconfig_name, (UIConfigBase,), {})
447
- cls.UIConfig.title = title
448
- cls.UIConfig.tags = tags
449
- cls.UIConfig.category = category
450
- cls.UIConfig.classification = classification
451
-
452
- # Grab the node pack's name from the module name, if it's a custom node
453
- is_custom_node = cls.__module__.rsplit(".", 1)[0] == "invokeai.app.invocations"
454
- if is_custom_node:
455
- cls.UIConfig.node_pack = cls.__module__.split(".")[0]
456
- else:
457
- cls.UIConfig.node_pack = None
441
+ uiconfig: dict[str, Any] = {}
442
+ uiconfig["title"] = title
443
+ uiconfig["tags"] = tags
444
+ uiconfig["category"] = category
445
+ uiconfig["classification"] = classification
446
+ # The node pack is the module name - will be "invokeai" for built-in nodes
447
+ uiconfig["node_pack"] = cls.__module__.split(".")[0]
458
448
 
459
449
  if version is not None:
460
450
  try:
461
451
  semver.Version.parse(version)
462
452
  except ValueError as e:
463
453
  raise InvalidVersionError(f'Invalid version string for node "{invocation_type}": "{version}"') from e
464
- cls.UIConfig.version = version
454
+ uiconfig["version"] = version
465
455
  else:
466
456
  logger.warn(f'No version specified for node "{invocation_type}", using "1.0.0"')
467
- cls.UIConfig.version = "1.0.0"
457
+ uiconfig["version"] = "1.0.0"
458
+
459
+ cls.UIConfig = UIConfigBase(**uiconfig)
468
460
 
469
461
  if use_cache is not None:
470
462
  cls.model_fields["use_cache"].default = use_cache
@@ -40,6 +40,7 @@ class UIType(str, Enum, metaclass=MetaEnum):
40
40
 
41
41
  # region Model Field Types
42
42
  MainModel = "MainModelField"
43
+ FluxMainModel = "FluxMainModelField"
43
44
  SDXLMainModel = "SDXLMainModelField"
44
45
  SDXLRefinerModel = "SDXLRefinerModelField"
45
46
  ONNXModel = "ONNXModelField"
@@ -48,6 +49,7 @@ class UIType(str, Enum, metaclass=MetaEnum):
48
49
  ControlNetModel = "ControlNetModelField"
49
50
  IPAdapterModel = "IPAdapterModelField"
50
51
  T2IAdapterModel = "T2IAdapterModelField"
52
+ T5EncoderModel = "T5EncoderModelField"
51
53
  SpandrelImageToImageModel = "SpandrelImageToImageModelField"
52
54
  # endregion
53
55
 
@@ -125,13 +127,16 @@ class FieldDescriptions:
125
127
  negative_cond = "Negative conditioning tensor"
126
128
  noise = "Noise tensor"
127
129
  clip = "CLIP (tokenizer, text encoder, LoRAs) and skipped layer count"
130
+ t5_encoder = "T5 tokenizer and text encoder"
128
131
  unet = "UNet (scheduler, LoRAs)"
132
+ transformer = "Transformer"
129
133
  vae = "VAE"
130
134
  cond = "Conditioning tensor"
131
135
  controlnet_model = "ControlNet model to load"
132
136
  vae_model = "VAE model to load"
133
137
  lora_model = "LoRA model to load"
134
138
  main_model = "Main model (UNet, VAE, CLIP) to load"
139
+ flux_model = "Flux model (Transformer) to load"
135
140
  sdxl_main_model = "SDXL Main model (UNet, VAE, CLIP1, CLIP2) to load"
136
141
  sdxl_refiner_model = "SDXL Refiner Main Modde (UNet, VAE, CLIP2) to load"
137
142
  onnx_main_model = "ONNX Main model (UNet, VAE, CLIP) to load"
@@ -231,6 +236,12 @@ class ColorField(BaseModel):
231
236
  return (self.r, self.g, self.b, self.a)
232
237
 
233
238
 
239
+ class FluxConditioningField(BaseModel):
240
+ """A conditioning tensor primitive value"""
241
+
242
+ conditioning_name: str = Field(description="The name of conditioning tensor")
243
+
244
+
234
245
  class ConditioningField(BaseModel):
235
246
  """A conditioning tensor primitive value"""
236
247
 
@@ -0,0 +1,86 @@
1
+ from typing import Literal
2
+
3
+ import torch
4
+ from transformers import CLIPTextModel, CLIPTokenizer, T5EncoderModel, T5Tokenizer
5
+
6
+ from invokeai.app.invocations.baseinvocation import BaseInvocation, Classification, invocation
7
+ from invokeai.app.invocations.fields import FieldDescriptions, Input, InputField
8
+ from invokeai.app.invocations.model import CLIPField, T5EncoderField
9
+ from invokeai.app.invocations.primitives import FluxConditioningOutput
10
+ from invokeai.app.services.shared.invocation_context import InvocationContext
11
+ from invokeai.backend.flux.modules.conditioner import HFEncoder
12
+ from invokeai.backend.stable_diffusion.diffusion.conditioning_data import ConditioningFieldData, FLUXConditioningInfo
13
+
14
+
15
+ @invocation(
16
+ "flux_text_encoder",
17
+ title="FLUX Text Encoding",
18
+ tags=["prompt", "conditioning", "flux"],
19
+ category="conditioning",
20
+ version="1.0.0",
21
+ classification=Classification.Prototype,
22
+ )
23
+ class FluxTextEncoderInvocation(BaseInvocation):
24
+ """Encodes and preps a prompt for a flux image."""
25
+
26
+ clip: CLIPField = InputField(
27
+ title="CLIP",
28
+ description=FieldDescriptions.clip,
29
+ input=Input.Connection,
30
+ )
31
+ t5_encoder: T5EncoderField = InputField(
32
+ title="T5Encoder",
33
+ description=FieldDescriptions.t5_encoder,
34
+ input=Input.Connection,
35
+ )
36
+ t5_max_seq_len: Literal[256, 512] = InputField(
37
+ description="Max sequence length for the T5 encoder. Expected to be 256 for FLUX schnell models and 512 for FLUX dev models."
38
+ )
39
+ prompt: str = InputField(description="Text prompt to encode.")
40
+
41
+ @torch.no_grad()
42
+ def invoke(self, context: InvocationContext) -> FluxConditioningOutput:
43
+ t5_embeddings, clip_embeddings = self._encode_prompt(context)
44
+ conditioning_data = ConditioningFieldData(
45
+ conditionings=[FLUXConditioningInfo(clip_embeds=clip_embeddings, t5_embeds=t5_embeddings)]
46
+ )
47
+
48
+ conditioning_name = context.conditioning.save(conditioning_data)
49
+ return FluxConditioningOutput.build(conditioning_name)
50
+
51
+ def _encode_prompt(self, context: InvocationContext) -> tuple[torch.Tensor, torch.Tensor]:
52
+ # Load CLIP.
53
+ clip_tokenizer_info = context.models.load(self.clip.tokenizer)
54
+ clip_text_encoder_info = context.models.load(self.clip.text_encoder)
55
+
56
+ # Load T5.
57
+ t5_tokenizer_info = context.models.load(self.t5_encoder.tokenizer)
58
+ t5_text_encoder_info = context.models.load(self.t5_encoder.text_encoder)
59
+
60
+ prompt = [self.prompt]
61
+
62
+ with (
63
+ t5_text_encoder_info as t5_text_encoder,
64
+ t5_tokenizer_info as t5_tokenizer,
65
+ ):
66
+ assert isinstance(t5_text_encoder, T5EncoderModel)
67
+ assert isinstance(t5_tokenizer, T5Tokenizer)
68
+
69
+ t5_encoder = HFEncoder(t5_text_encoder, t5_tokenizer, False, self.t5_max_seq_len)
70
+
71
+ prompt_embeds = t5_encoder(prompt)
72
+
73
+ with (
74
+ clip_text_encoder_info as clip_text_encoder,
75
+ clip_tokenizer_info as clip_tokenizer,
76
+ ):
77
+ assert isinstance(clip_text_encoder, CLIPTextModel)
78
+ assert isinstance(clip_tokenizer, CLIPTokenizer)
79
+
80
+ clip_encoder = HFEncoder(clip_text_encoder, clip_tokenizer, True, 77)
81
+
82
+ pooled_prompt_embeds = clip_encoder(prompt)
83
+
84
+ assert isinstance(prompt_embeds, torch.Tensor)
85
+ assert isinstance(pooled_prompt_embeds, torch.Tensor)
86
+ return prompt_embeds, pooled_prompt_embeds
@@ -0,0 +1,172 @@
1
+ import torch
2
+ from einops import rearrange
3
+ from PIL import Image
4
+
5
+ from invokeai.app.invocations.baseinvocation import BaseInvocation, Classification, invocation
6
+ from invokeai.app.invocations.fields import (
7
+ FieldDescriptions,
8
+ FluxConditioningField,
9
+ Input,
10
+ InputField,
11
+ WithBoard,
12
+ WithMetadata,
13
+ )
14
+ from invokeai.app.invocations.model import TransformerField, VAEField
15
+ from invokeai.app.invocations.primitives import ImageOutput
16
+ from invokeai.app.services.session_processor.session_processor_common import CanceledException
17
+ from invokeai.app.services.shared.invocation_context import InvocationContext
18
+ from invokeai.backend.flux.model import Flux
19
+ from invokeai.backend.flux.modules.autoencoder import AutoEncoder
20
+ from invokeai.backend.flux.sampling import denoise, get_noise, get_schedule, prepare_latent_img_patches, unpack
21
+ from invokeai.backend.stable_diffusion.diffusion.conditioning_data import FLUXConditioningInfo
22
+ from invokeai.backend.util.devices import TorchDevice
23
+
24
+
25
+ @invocation(
26
+ "flux_text_to_image",
27
+ title="FLUX Text to Image",
28
+ tags=["image", "flux"],
29
+ category="image",
30
+ version="1.0.0",
31
+ classification=Classification.Prototype,
32
+ )
33
+ class FluxTextToImageInvocation(BaseInvocation, WithMetadata, WithBoard):
34
+ """Text-to-image generation using a FLUX model."""
35
+
36
+ transformer: TransformerField = InputField(
37
+ description=FieldDescriptions.flux_model,
38
+ input=Input.Connection,
39
+ title="Transformer",
40
+ )
41
+ vae: VAEField = InputField(
42
+ description=FieldDescriptions.vae,
43
+ input=Input.Connection,
44
+ )
45
+ positive_text_conditioning: FluxConditioningField = InputField(
46
+ description=FieldDescriptions.positive_cond, input=Input.Connection
47
+ )
48
+ width: int = InputField(default=1024, multiple_of=16, description="Width of the generated image.")
49
+ height: int = InputField(default=1024, multiple_of=16, description="Height of the generated image.")
50
+ num_steps: int = InputField(
51
+ default=4, description="Number of diffusion steps. Recommend values are schnell: 4, dev: 50."
52
+ )
53
+ guidance: float = InputField(
54
+ default=4.0,
55
+ description="The guidance strength. Higher values adhere more strictly to the prompt, and will produce less diverse images. FLUX dev only, ignored for schnell.",
56
+ )
57
+ seed: int = InputField(default=0, description="Randomness seed for reproducibility.")
58
+
59
+ @torch.no_grad()
60
+ def invoke(self, context: InvocationContext) -> ImageOutput:
61
+ # Load the conditioning data.
62
+ cond_data = context.conditioning.load(self.positive_text_conditioning.conditioning_name)
63
+ assert len(cond_data.conditionings) == 1
64
+ flux_conditioning = cond_data.conditionings[0]
65
+ assert isinstance(flux_conditioning, FLUXConditioningInfo)
66
+
67
+ latents = self._run_diffusion(context, flux_conditioning.clip_embeds, flux_conditioning.t5_embeds)
68
+ image = self._run_vae_decoding(context, latents)
69
+ image_dto = context.images.save(image=image)
70
+ return ImageOutput.build(image_dto)
71
+
72
+ def _run_diffusion(
73
+ self,
74
+ context: InvocationContext,
75
+ clip_embeddings: torch.Tensor,
76
+ t5_embeddings: torch.Tensor,
77
+ ):
78
+ transformer_info = context.models.load(self.transformer.transformer)
79
+ inference_dtype = torch.bfloat16
80
+
81
+ # Prepare input noise.
82
+ x = get_noise(
83
+ num_samples=1,
84
+ height=self.height,
85
+ width=self.width,
86
+ device=TorchDevice.choose_torch_device(),
87
+ dtype=inference_dtype,
88
+ seed=self.seed,
89
+ )
90
+
91
+ img, img_ids = prepare_latent_img_patches(x)
92
+
93
+ is_schnell = "schnell" in transformer_info.config.config_path
94
+
95
+ timesteps = get_schedule(
96
+ num_steps=self.num_steps,
97
+ image_seq_len=img.shape[1],
98
+ shift=not is_schnell,
99
+ )
100
+
101
+ bs, t5_seq_len, _ = t5_embeddings.shape
102
+ txt_ids = torch.zeros(bs, t5_seq_len, 3, dtype=inference_dtype, device=TorchDevice.choose_torch_device())
103
+
104
+ # HACK(ryand): Manually empty the cache. Currently we don't check the size of the model before loading it from
105
+ # disk. Since the transformer model is large (24GB), there's a good chance that it will OOM on 32GB RAM systems
106
+ # if the cache is not empty.
107
+ context.models._services.model_manager.load.ram_cache.make_room(24 * 2**30)
108
+
109
+ with transformer_info as transformer:
110
+ assert isinstance(transformer, Flux)
111
+
112
+ def step_callback() -> None:
113
+ if context.util.is_canceled():
114
+ raise CanceledException
115
+
116
+ # TODO: Make this look like the image before re-enabling
117
+ # latent_image = unpack(img.float(), self.height, self.width)
118
+ # latent_image = latent_image.squeeze() # Remove unnecessary dimensions
119
+ # flattened_tensor = latent_image.reshape(-1) # Flatten to shape [48*128*128]
120
+
121
+ # # Create a new tensor of the required shape [255, 255, 3]
122
+ # latent_image = flattened_tensor[: 255 * 255 * 3].reshape(255, 255, 3) # Reshape to RGB format
123
+
124
+ # # Convert to a NumPy array and then to a PIL Image
125
+ # image = Image.fromarray(latent_image.cpu().numpy().astype(np.uint8))
126
+
127
+ # (width, height) = image.size
128
+ # width *= 8
129
+ # height *= 8
130
+
131
+ # dataURL = image_to_dataURL(image, image_format="JPEG")
132
+
133
+ # # TODO: move this whole function to invocation context to properly reference these variables
134
+ # context._services.events.emit_invocation_denoise_progress(
135
+ # context._data.queue_item,
136
+ # context._data.invocation,
137
+ # state,
138
+ # ProgressImage(dataURL=dataURL, width=width, height=height),
139
+ # )
140
+
141
+ x = denoise(
142
+ model=transformer,
143
+ img=img,
144
+ img_ids=img_ids,
145
+ txt=t5_embeddings,
146
+ txt_ids=txt_ids,
147
+ vec=clip_embeddings,
148
+ timesteps=timesteps,
149
+ step_callback=step_callback,
150
+ guidance=self.guidance,
151
+ )
152
+
153
+ x = unpack(x.float(), self.height, self.width)
154
+
155
+ return x
156
+
157
+ def _run_vae_decoding(
158
+ self,
159
+ context: InvocationContext,
160
+ latents: torch.Tensor,
161
+ ) -> Image.Image:
162
+ vae_info = context.models.load(self.vae.vae)
163
+ with vae_info as vae:
164
+ assert isinstance(vae, AutoEncoder)
165
+ latents = latents.to(dtype=TorchDevice.choose_torch_dtype())
166
+ img = vae.decode(latents)
167
+
168
+ img = img.clamp(-1, 1)
169
+ img = rearrange(img[0], "c h w -> h w c")
170
+ img_pil = Image.fromarray((127.5 * (img + 1.0)).byte().cpu().numpy())
171
+
172
+ return img_pil
@@ -1,5 +1,5 @@
1
1
  import copy
2
- from typing import List, Optional
2
+ from typing import List, Literal, Optional
3
3
 
4
4
  from pydantic import BaseModel, Field
5
5
 
@@ -13,7 +13,14 @@ from invokeai.app.invocations.baseinvocation import (
13
13
  from invokeai.app.invocations.fields import FieldDescriptions, Input, InputField, OutputField, UIType
14
14
  from invokeai.app.services.shared.invocation_context import InvocationContext
15
15
  from invokeai.app.shared.models import FreeUConfig
16
- from invokeai.backend.model_manager.config import AnyModelConfig, BaseModelType, ModelType, SubModelType
16
+ from invokeai.backend.flux.util import max_seq_lengths
17
+ from invokeai.backend.model_manager.config import (
18
+ AnyModelConfig,
19
+ BaseModelType,
20
+ CheckpointConfigBase,
21
+ ModelType,
22
+ SubModelType,
23
+ )
17
24
 
18
25
 
19
26
  class ModelIdentifierField(BaseModel):
@@ -60,6 +67,15 @@ class CLIPField(BaseModel):
60
67
  loras: List[LoRAField] = Field(description="LoRAs to apply on model loading")
61
68
 
62
69
 
70
+ class TransformerField(BaseModel):
71
+ transformer: ModelIdentifierField = Field(description="Info to load Transformer submodel")
72
+
73
+
74
+ class T5EncoderField(BaseModel):
75
+ tokenizer: ModelIdentifierField = Field(description="Info to load tokenizer submodel")
76
+ text_encoder: ModelIdentifierField = Field(description="Info to load text_encoder submodel")
77
+
78
+
63
79
  class VAEField(BaseModel):
64
80
  vae: ModelIdentifierField = Field(description="Info to load vae submodel")
65
81
  seamless_axes: List[str] = Field(default_factory=list, description='Axes("x" and "y") to which apply seamless')
@@ -122,6 +138,112 @@ class ModelIdentifierInvocation(BaseInvocation):
122
138
  return ModelIdentifierOutput(model=self.model)
123
139
 
124
140
 
141
+ @invocation_output("flux_model_loader_output")
142
+ class FluxModelLoaderOutput(BaseInvocationOutput):
143
+ """Flux base model loader output"""
144
+
145
+ transformer: TransformerField = OutputField(description=FieldDescriptions.transformer, title="Transformer")
146
+ clip: CLIPField = OutputField(description=FieldDescriptions.clip, title="CLIP")
147
+ t5_encoder: T5EncoderField = OutputField(description=FieldDescriptions.t5_encoder, title="T5 Encoder")
148
+ vae: VAEField = OutputField(description=FieldDescriptions.vae, title="VAE")
149
+ max_seq_len: Literal[256, 512] = OutputField(
150
+ description="The max sequence length to used for the T5 encoder. (256 for schnell transformer, 512 for dev transformer)",
151
+ title="Max Seq Length",
152
+ )
153
+
154
+
155
+ @invocation(
156
+ "flux_model_loader",
157
+ title="Flux Main Model",
158
+ tags=["model", "flux"],
159
+ category="model",
160
+ version="1.0.3",
161
+ classification=Classification.Prototype,
162
+ )
163
+ class FluxModelLoaderInvocation(BaseInvocation):
164
+ """Loads a flux base model, outputting its submodels."""
165
+
166
+ model: ModelIdentifierField = InputField(
167
+ description=FieldDescriptions.flux_model,
168
+ ui_type=UIType.FluxMainModel,
169
+ input=Input.Direct,
170
+ )
171
+
172
+ t5_encoder: ModelIdentifierField = InputField(
173
+ description=FieldDescriptions.t5_encoder,
174
+ ui_type=UIType.T5EncoderModel,
175
+ input=Input.Direct,
176
+ )
177
+
178
+ def invoke(self, context: InvocationContext) -> FluxModelLoaderOutput:
179
+ model_key = self.model.key
180
+
181
+ if not context.models.exists(model_key):
182
+ raise ValueError(f"Unknown model: {model_key}")
183
+ transformer = self._get_model(context, SubModelType.Transformer)
184
+ tokenizer = self._get_model(context, SubModelType.Tokenizer)
185
+ tokenizer2 = self._get_model(context, SubModelType.Tokenizer2)
186
+ clip_encoder = self._get_model(context, SubModelType.TextEncoder)
187
+ t5_encoder = self._get_model(context, SubModelType.TextEncoder2)
188
+ vae = self._get_model(context, SubModelType.VAE)
189
+ transformer_config = context.models.get_config(transformer)
190
+ assert isinstance(transformer_config, CheckpointConfigBase)
191
+
192
+ return FluxModelLoaderOutput(
193
+ transformer=TransformerField(transformer=transformer),
194
+ clip=CLIPField(tokenizer=tokenizer, text_encoder=clip_encoder, loras=[], skipped_layers=0),
195
+ t5_encoder=T5EncoderField(tokenizer=tokenizer2, text_encoder=t5_encoder),
196
+ vae=VAEField(vae=vae),
197
+ max_seq_len=max_seq_lengths[transformer_config.config_path],
198
+ )
199
+
200
+ def _get_model(self, context: InvocationContext, submodel: SubModelType) -> ModelIdentifierField:
201
+ match submodel:
202
+ case SubModelType.Transformer:
203
+ return self.model.model_copy(update={"submodel_type": SubModelType.Transformer})
204
+ case SubModelType.VAE:
205
+ return self._pull_model_from_mm(
206
+ context,
207
+ SubModelType.VAE,
208
+ "FLUX.1-schnell_ae",
209
+ ModelType.VAE,
210
+ BaseModelType.Flux,
211
+ )
212
+ case submodel if submodel in [SubModelType.Tokenizer, SubModelType.TextEncoder]:
213
+ return self._pull_model_from_mm(
214
+ context,
215
+ submodel,
216
+ "clip-vit-large-patch14",
217
+ ModelType.CLIPEmbed,
218
+ BaseModelType.Any,
219
+ )
220
+ case submodel if submodel in [SubModelType.Tokenizer2, SubModelType.TextEncoder2]:
221
+ return self._pull_model_from_mm(
222
+ context,
223
+ submodel,
224
+ self.t5_encoder.name,
225
+ ModelType.T5Encoder,
226
+ BaseModelType.Any,
227
+ )
228
+ case _:
229
+ raise Exception(f"{submodel.value} is not a supported submodule for a flux model")
230
+
231
+ def _pull_model_from_mm(
232
+ self,
233
+ context: InvocationContext,
234
+ submodel: SubModelType,
235
+ name: str,
236
+ type: ModelType,
237
+ base: BaseModelType,
238
+ ):
239
+ if models := context.models.search_by_attrs(name=name, base=base, type=type):
240
+ if len(models) != 1:
241
+ raise Exception(f"Multiple models detected for selected model with name {name}")
242
+ return ModelIdentifierField.from_config(models[0]).model_copy(update={"submodel_type": submodel})
243
+ else:
244
+ raise ValueError(f"Please install the {base}:{type} model named {name} via starter models")
245
+
246
+
125
247
  @invocation(
126
248
  "main_model_loader",
127
249
  title="Main Model",