InvokeAI 4.0.3__tar.gz → 4.1.0__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 (392) hide show
  1. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/InvokeAI.egg-info/PKG-INFO +1 -1
  2. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/InvokeAI.egg-info/SOURCES.txt +10 -6
  3. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/InvokeAI.egg-info/requires.txt +6 -6
  4. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/PKG-INFO +1 -1
  5. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/api_app.py +2 -2
  6. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/invocations/compel.py +44 -53
  7. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/invocations/fields.py +11 -1
  8. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/invocations/ip_adapter.py +38 -5
  9. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/invocations/latent.py +213 -64
  10. InvokeAI-4.1.0/invokeai/app/invocations/mask.py +36 -0
  11. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/invocations/metadata.py +1 -0
  12. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/invocations/noise.py +4 -4
  13. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/invocations/primitives.py +11 -0
  14. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/invocations/upscale.py +2 -8
  15. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/config/config_default.py +43 -14
  16. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/model_install/model_install_default.py +8 -5
  17. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/model_manager/model_manager_default.py +5 -3
  18. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/session_processor/session_processor_default.py +6 -0
  19. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/shared/invocation_context.py +12 -0
  20. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/image_util/depth_anything/__init__.py +4 -4
  21. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/image_util/dw_openpose/wholebody.py +3 -3
  22. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/image_util/infill_methods/lama.py +2 -2
  23. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/image_util/realesrgan/realesrgan.py +2 -2
  24. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/image_util/safety_checker.py +2 -2
  25. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/model_manager/load/load_default.py +2 -2
  26. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/model_manager/load/model_cache/model_cache_base.py +1 -1
  27. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/model_manager/load/model_cache/model_cache_default.py +16 -40
  28. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/model_manager/merge.py +4 -3
  29. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/stable_diffusion/diffusers_pipeline.py +39 -68
  30. InvokeAI-4.1.0/invokeai/backend/stable_diffusion/diffusion/conditioning_data.py +123 -0
  31. InvokeAI-4.1.0/invokeai/backend/stable_diffusion/diffusion/custom_atttention.py +214 -0
  32. InvokeAI-4.1.0/invokeai/backend/stable_diffusion/diffusion/regional_ip_data.py +72 -0
  33. InvokeAI-4.1.0/invokeai/backend/stable_diffusion/diffusion/regional_prompt_data.py +105 -0
  34. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/stable_diffusion/diffusion/shared_invokeai_diffusion.py +132 -130
  35. InvokeAI-4.1.0/invokeai/backend/stable_diffusion/diffusion/unet_attention_patcher.py +68 -0
  36. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/util/__init__.py +0 -3
  37. InvokeAI-4.1.0/invokeai/backend/util/devices.py +110 -0
  38. InvokeAI-4.1.0/invokeai/backend/util/mask.py +53 -0
  39. InvokeAI-4.1.0/invokeai/frontend/web/dist/assets/App-nR2gvd20.js +128 -0
  40. InvokeAI-4.0.3/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-DKJ1LbAm.js → InvokeAI-4.1.0/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-KzMt_S5B.js +1 -1
  41. InvokeAI-4.1.0/invokeai/frontend/web/dist/assets/images/invoke-alert-favicon.svg +5 -0
  42. InvokeAI-4.0.3/invokeai/frontend/web/dist/assets/index-MDF-DOT9.js → InvokeAI-4.1.0/invokeai/frontend/web/dist/assets/index-CB6ZmbOE.js +51 -51
  43. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/index.html +3 -3
  44. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/locales/ar.json +0 -1
  45. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/locales/de.json +2 -2
  46. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/locales/en.json +18 -3
  47. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/locales/es.json +3 -2
  48. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/locales/fr.json +0 -1
  49. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/locales/he.json +0 -1
  50. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/locales/it.json +26 -10
  51. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/locales/ja.json +1 -1
  52. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/locales/ko.json +1 -1
  53. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/locales/nl.json +2 -2
  54. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/locales/pl.json +0 -1
  55. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/locales/pt.json +0 -1
  56. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/locales/pt_BR.json +0 -1
  57. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/locales/ru.json +18 -7
  58. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/locales/tr.json +2 -1
  59. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/locales/uk.json +0 -1
  60. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/locales/zh_CN.json +21 -6
  61. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/invocation_api/__init__.py +2 -2
  62. InvokeAI-4.1.0/invokeai/version/invokeai_version.py +1 -0
  63. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/pyproject.toml +6 -7
  64. InvokeAI-4.0.3/invokeai/backend/ip_adapter/attention_processor.py +0 -182
  65. InvokeAI-4.0.3/invokeai/backend/ip_adapter/unet_patcher.py +0 -53
  66. InvokeAI-4.0.3/invokeai/backend/stable_diffusion/diffusion/conditioning_data.py +0 -93
  67. InvokeAI-4.0.3/invokeai/backend/stable_diffusion/diffusion/cross_attention_control.py +0 -218
  68. InvokeAI-4.0.3/invokeai/backend/util/devices.py +0 -91
  69. InvokeAI-4.0.3/invokeai/frontend/web/dist/assets/App-BLcNMYZP.js +0 -128
  70. InvokeAI-4.0.3/invokeai/version/invokeai_version.py +0 -1
  71. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/InvokeAI.egg-info/dependency_links.txt +0 -0
  72. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/InvokeAI.egg-info/entry_points.txt +0 -0
  73. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/InvokeAI.egg-info/top_level.txt +0 -0
  74. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/LICENSE +0 -0
  75. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/LICENSE-SD1+SD2.txt +0 -0
  76. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/LICENSE-SDXL.txt +0 -0
  77. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/README.md +0 -0
  78. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/__init__.py +0 -0
  79. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/api/dependencies.py +0 -0
  80. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/api/events.py +0 -0
  81. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/api/no_cache_staticfiles.py +0 -0
  82. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/api/routers/app_info.py +0 -0
  83. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/api/routers/board_images.py +0 -0
  84. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/api/routers/boards.py +0 -0
  85. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/api/routers/download_queue.py +0 -0
  86. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/api/routers/images.py +0 -0
  87. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/api/routers/model_manager.py +0 -0
  88. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/api/routers/session_queue.py +0 -0
  89. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/api/routers/utilities.py +0 -0
  90. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/api/routers/workflows.py +0 -0
  91. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/api/sockets.py +0 -0
  92. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/assets/images/caution.png +0 -0
  93. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/invocations/__init__.py +0 -0
  94. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/invocations/baseinvocation.py +0 -0
  95. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/invocations/collections.py +0 -0
  96. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/invocations/constants.py +0 -0
  97. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/invocations/controlnet_image_processors.py +0 -0
  98. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/invocations/custom_nodes/README.md +0 -0
  99. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/invocations/custom_nodes/init.py +0 -0
  100. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/invocations/cv.py +0 -0
  101. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/invocations/facetools.py +0 -0
  102. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/invocations/image.py +0 -0
  103. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/invocations/infill.py +0 -0
  104. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/invocations/math.py +0 -0
  105. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/invocations/model.py +0 -0
  106. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/invocations/param_easing.py +0 -0
  107. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/invocations/prompt.py +0 -0
  108. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/invocations/sdxl.py +0 -0
  109. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/invocations/strings.py +0 -0
  110. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/invocations/t2i_adapter.py +0 -0
  111. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/invocations/tiles.py +0 -0
  112. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/invocations/util.py +0 -0
  113. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/run_app.py +0 -0
  114. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/__init__.py +0 -0
  115. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/board_image_records/__init__.py +0 -0
  116. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/board_image_records/board_image_records_base.py +0 -0
  117. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/board_image_records/board_image_records_sqlite.py +0 -0
  118. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/board_images/__init__.py +0 -0
  119. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/board_images/board_images_base.py +0 -0
  120. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/board_images/board_images_common.py +0 -0
  121. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/board_images/board_images_default.py +0 -0
  122. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/board_records/board_records_base.py +0 -0
  123. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/board_records/board_records_common.py +0 -0
  124. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/board_records/board_records_sqlite.py +0 -0
  125. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/boards/__init__.py +0 -0
  126. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/boards/boards_base.py +0 -0
  127. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/boards/boards_common.py +0 -0
  128. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/boards/boards_default.py +0 -0
  129. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/bulk_download/__init__.py +0 -0
  130. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/bulk_download/bulk_download_base.py +0 -0
  131. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/bulk_download/bulk_download_common.py +0 -0
  132. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/bulk_download/bulk_download_default.py +0 -0
  133. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/config/__init__.py +0 -0
  134. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/config/config_common.py +0 -0
  135. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/download/__init__.py +0 -0
  136. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/download/download_base.py +0 -0
  137. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/download/download_default.py +0 -0
  138. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/events/__init__.py +0 -0
  139. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/events/events_base.py +0 -0
  140. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/image_files/__init__.py +0 -0
  141. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/image_files/image_files_base.py +0 -0
  142. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/image_files/image_files_common.py +0 -0
  143. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/image_files/image_files_disk.py +0 -0
  144. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/image_records/__init__.py +0 -0
  145. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/image_records/image_records_base.py +0 -0
  146. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/image_records/image_records_common.py +0 -0
  147. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/image_records/image_records_sqlite.py +0 -0
  148. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/images/__init__.py +0 -0
  149. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/images/images_base.py +0 -0
  150. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/images/images_common.py +0 -0
  151. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/images/images_default.py +0 -0
  152. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/invocation_cache/__init__.py +0 -0
  153. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/invocation_cache/invocation_cache_base.py +0 -0
  154. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/invocation_cache/invocation_cache_common.py +0 -0
  155. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/invocation_cache/invocation_cache_memory.py +0 -0
  156. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/invocation_services.py +0 -0
  157. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/invocation_stats/__init__.py +0 -0
  158. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/invocation_stats/invocation_stats_base.py +0 -0
  159. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/invocation_stats/invocation_stats_common.py +0 -0
  160. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/invocation_stats/invocation_stats_default.py +0 -0
  161. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/invoker.py +0 -0
  162. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/item_storage/__init__.py +0 -0
  163. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/item_storage/item_storage_base.py +0 -0
  164. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/item_storage/item_storage_common.py +0 -0
  165. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/item_storage/item_storage_memory.py +0 -0
  166. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/model_images/model_images_base.py +0 -0
  167. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/model_images/model_images_common.py +0 -0
  168. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/model_images/model_images_default.py +0 -0
  169. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/model_install/__init__.py +0 -0
  170. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/model_install/model_install_base.py +0 -0
  171. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/model_load/__init__.py +0 -0
  172. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/model_load/model_load_base.py +0 -0
  173. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/model_load/model_load_default.py +0 -0
  174. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/model_manager/__init__.py +0 -0
  175. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/model_manager/model_manager_base.py +0 -0
  176. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/model_manager/model_manager_common.py +0 -0
  177. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/model_records/__init__.py +0 -0
  178. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/model_records/model_records_base.py +0 -0
  179. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/model_records/model_records_sql.py +0 -0
  180. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/names/__init__.py +0 -0
  181. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/names/names_base.py +0 -0
  182. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/names/names_common.py +0 -0
  183. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/names/names_default.py +0 -0
  184. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/object_serializer/object_serializer_base.py +0 -0
  185. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/object_serializer/object_serializer_common.py +0 -0
  186. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/object_serializer/object_serializer_disk.py +0 -0
  187. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/object_serializer/object_serializer_forward_cache.py +0 -0
  188. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/session_processor/__init__.py +0 -0
  189. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/session_processor/session_processor_base.py +0 -0
  190. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/session_processor/session_processor_common.py +0 -0
  191. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/session_queue/__init__.py +0 -0
  192. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/session_queue/session_queue_base.py +0 -0
  193. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/session_queue/session_queue_common.py +0 -0
  194. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/session_queue/session_queue_sqlite.py +0 -0
  195. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/shared/__init__.py +0 -0
  196. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/shared/graph.py +0 -0
  197. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/shared/pagination.py +0 -0
  198. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/shared/sqlite/__init__.py +0 -0
  199. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/shared/sqlite/sqlite_common.py +0 -0
  200. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/shared/sqlite/sqlite_database.py +0 -0
  201. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/shared/sqlite/sqlite_util.py +0 -0
  202. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/shared/sqlite_migrator/__init__.py +0 -0
  203. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/shared/sqlite_migrator/migrations/__init__.py +0 -0
  204. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_1.py +0 -0
  205. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_2.py +0 -0
  206. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_3.py +0 -0
  207. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_4.py +0 -0
  208. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_5.py +0 -0
  209. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_6.py +0 -0
  210. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_7.py +0 -0
  211. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_8.py +0 -0
  212. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_9.py +0 -0
  213. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/shared/sqlite_migrator/sqlite_migrator_common.py +0 -0
  214. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/shared/sqlite_migrator/sqlite_migrator_impl.py +0 -0
  215. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/urls/__init__.py +0 -0
  216. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/urls/urls_base.py +0 -0
  217. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/urls/urls_default.py +0 -0
  218. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/workflow_records/__init__.py +0 -0
  219. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/workflow_records/default_workflows/ESRGAN Upscaling with Canny ControlNet.json +0 -0
  220. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/workflow_records/default_workflows/Face Detailer with IP-Adapter & Canny (See Note in Details).json +0 -0
  221. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/workflow_records/default_workflows/Multi ControlNet (Canny & Depth).json +0 -0
  222. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/workflow_records/default_workflows/Prompt from File.json +0 -0
  223. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/workflow_records/default_workflows/Text to Image - SD1.5.json +0 -0
  224. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/workflow_records/default_workflows/Text to Image - SDXL.json +0 -0
  225. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/workflow_records/default_workflows/Text to Image with LoRA.json +0 -0
  226. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/workflow_records/default_workflows/Tiled Upscaling (Beta).json +0 -0
  227. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/workflow_records/workflow_records_base.py +0 -0
  228. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/workflow_records/workflow_records_common.py +0 -0
  229. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/services/workflow_records/workflow_records_sqlite.py +0 -0
  230. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/shared/__init__.py +0 -0
  231. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/shared/models.py +0 -0
  232. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/util/__init__.py +0 -0
  233. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/util/controlnet_utils.py +0 -0
  234. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/util/download_with_progress.py +0 -0
  235. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/util/metaenum.py +0 -0
  236. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/util/misc.py +0 -0
  237. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/util/model_exclude_null.py +0 -0
  238. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/util/profiler.py +0 -0
  239. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/util/step_callback.py +0 -0
  240. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/util/suppress_output.py +0 -0
  241. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/util/thumbnails.py +0 -0
  242. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/app/util/ti_utils.py +0 -0
  243. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/assets/fonts/inter/Inter-Regular.ttf +0 -0
  244. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/__init__.py +0 -0
  245. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/image_util/__init__.py +0 -0
  246. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/image_util/basicsr/__init__.py +0 -0
  247. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/image_util/basicsr/arch_util.py +0 -0
  248. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/image_util/basicsr/rrdbnet_arch.py +0 -0
  249. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/image_util/canny.py +0 -0
  250. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/image_util/depth_anything/model/blocks.py +0 -0
  251. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/image_util/depth_anything/model/dpt.py +0 -0
  252. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/image_util/depth_anything/utilities/util.py +0 -0
  253. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/image_util/dw_openpose/__init__.py +0 -0
  254. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/image_util/dw_openpose/onnxdet.py +0 -0
  255. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/image_util/dw_openpose/onnxpose.py +0 -0
  256. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/image_util/dw_openpose/utils.py +0 -0
  257. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/image_util/hed.py +0 -0
  258. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/image_util/infill_methods/cv2_inpaint.py +0 -0
  259. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/image_util/infill_methods/mosaic.py +0 -0
  260. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/image_util/infill_methods/patchmatch.py +0 -0
  261. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/image_util/infill_methods/tile.py +0 -0
  262. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/image_util/invisible_watermark.py +0 -0
  263. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/image_util/lineart.py +0 -0
  264. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/image_util/lineart_anime.py +0 -0
  265. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/image_util/pngwriter.py +0 -0
  266. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/image_util/realesrgan/__init__.py +0 -0
  267. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/image_util/seamless.py +0 -0
  268. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/image_util/util.py +0 -0
  269. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/ip_adapter/__init__.py +0 -0
  270. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/ip_adapter/ip_adapter.py +0 -0
  271. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/ip_adapter/ip_attention_weights.py +0 -0
  272. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/ip_adapter/resampler.py +0 -0
  273. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/lora.py +0 -0
  274. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/model_hash/model_hash.py +0 -0
  275. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/model_manager/__init__.py +0 -0
  276. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/model_manager/config.py +0 -0
  277. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/model_manager/convert_ckpt_to_diffusers.py +0 -0
  278. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/model_manager/libc_util.py +0 -0
  279. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/model_manager/load/__init__.py +0 -0
  280. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/model_manager/load/convert_cache/__init__.py +0 -0
  281. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/model_manager/load/convert_cache/convert_cache_base.py +0 -0
  282. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/model_manager/load/convert_cache/convert_cache_default.py +0 -0
  283. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/model_manager/load/load_base.py +0 -0
  284. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/model_manager/load/memory_snapshot.py +0 -0
  285. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/model_manager/load/model_cache/__init__.py +0 -0
  286. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/model_manager/load/model_cache/model_locker.py +0 -0
  287. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/model_manager/load/model_loader_registry.py +0 -0
  288. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/model_manager/load/model_loaders/__init__.py +0 -0
  289. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/model_manager/load/model_loaders/controlnet.py +0 -0
  290. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/model_manager/load/model_loaders/generic_diffusers.py +0 -0
  291. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/model_manager/load/model_loaders/ip_adapter.py +0 -0
  292. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/model_manager/load/model_loaders/lora.py +0 -0
  293. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/model_manager/load/model_loaders/onnx.py +0 -0
  294. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/model_manager/load/model_loaders/stable_diffusion.py +0 -0
  295. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/model_manager/load/model_loaders/textual_inversion.py +0 -0
  296. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/model_manager/load/model_loaders/vae.py +0 -0
  297. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/model_manager/load/model_util.py +0 -0
  298. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/model_manager/load/optimizations.py +0 -0
  299. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/model_manager/metadata/__init__.py +0 -0
  300. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/model_manager/metadata/fetch/__init__.py +0 -0
  301. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/model_manager/metadata/fetch/fetch_base.py +0 -0
  302. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/model_manager/metadata/fetch/huggingface.py +0 -0
  303. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/model_manager/metadata/metadata_base.py +0 -0
  304. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/model_manager/probe.py +0 -0
  305. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/model_manager/search.py +0 -0
  306. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/model_manager/starter_models.py +0 -0
  307. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/model_manager/util/libc_util.py +0 -0
  308. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/model_manager/util/model_util.py +0 -0
  309. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/model_manager/util/select_hf_files.py +0 -0
  310. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/model_patcher.py +0 -0
  311. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/onnx/onnx_runtime.py +0 -0
  312. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/raw_model.py +0 -0
  313. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/stable_diffusion/__init__.py +0 -0
  314. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/stable_diffusion/diffusion/__init__.py +0 -0
  315. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/stable_diffusion/schedulers/__init__.py +0 -0
  316. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/stable_diffusion/schedulers/schedulers.py +0 -0
  317. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/stable_diffusion/seamless.py +0 -0
  318. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/textual_inversion.py +0 -0
  319. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/tiles/__init__.py +0 -0
  320. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/tiles/tiles.py +0 -0
  321. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/tiles/utils.py +0 -0
  322. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/util/attention.py +0 -0
  323. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/util/db_maintenance.py +0 -0
  324. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/util/hotfixes.py +0 -0
  325. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/util/logging.py +0 -0
  326. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/util/mps_fixes.py +0 -0
  327. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/util/silence_warnings.py +0 -0
  328. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/util/test_utils.py +0 -0
  329. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/backend/util/util.py +0 -0
  330. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/configs/controlnet/cldm_v15.yaml +0 -0
  331. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/configs/controlnet/cldm_v21.yaml +0 -0
  332. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/configs/stable-diffusion/sd_xl_base.yaml +0 -0
  333. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/configs/stable-diffusion/sd_xl_refiner.yaml +0 -0
  334. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/configs/stable-diffusion/v1-finetune.yaml +0 -0
  335. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/configs/stable-diffusion/v1-finetune_style.yaml +0 -0
  336. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/configs/stable-diffusion/v1-inference-v.yaml +0 -0
  337. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/configs/stable-diffusion/v1-inference.yaml +0 -0
  338. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/configs/stable-diffusion/v1-inpainting-inference.yaml +0 -0
  339. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/configs/stable-diffusion/v1-m1-finetune.yaml +0 -0
  340. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/configs/stable-diffusion/v2-inference-v.yaml +0 -0
  341. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/configs/stable-diffusion/v2-inference.yaml +0 -0
  342. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/configs/stable-diffusion/v2-inpainting-inference-v.yaml +0 -0
  343. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/configs/stable-diffusion/v2-inpainting-inference.yaml +0 -0
  344. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/configs/stable-diffusion/v2-midas-inference.yaml +0 -0
  345. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/__init__.py +0 -0
  346. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/cli/__init__.py +0 -0
  347. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/cli/arg_parser.py +0 -0
  348. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/install/__init__.py +0 -0
  349. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/install/import_images.py +0 -0
  350. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/__init__.py +0 -0
  351. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/assets/App-DI6oCUg0.css +0 -0
  352. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-Bsx7ESc2.css +0 -0
  353. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/assets/images/invoke-avatar-circle.svg +0 -0
  354. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/assets/images/invoke-avatar-square.svg +0 -0
  355. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/assets/images/invoke-favicon.png +0 -0
  356. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/assets/images/invoke-favicon.svg +0 -0
  357. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/assets/images/invoke-key-char-lrg.svg +0 -0
  358. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/assets/images/invoke-key-char-sml.svg +0 -0
  359. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/assets/images/invoke-key-wht-lrg.svg +0 -0
  360. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/assets/images/invoke-key-wht-sml.svg +0 -0
  361. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/assets/images/invoke-symbol-char-lrg.svg +0 -0
  362. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/assets/images/invoke-symbol-char-sml.svg +0 -0
  363. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/assets/images/invoke-symbol-wht-lrg.svg +0 -0
  364. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/assets/images/invoke-symbol-wht-sml.svg +0 -0
  365. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/assets/images/invoke-symbol-ylw-lrg.svg +0 -0
  366. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/assets/images/invoke-tag-char-lrg.svg +0 -0
  367. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/assets/images/invoke-tag-char-sml.svg +0 -0
  368. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/assets/images/invoke-tag-lrg.svg +0 -0
  369. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/assets/images/invoke-tag-sml.svg +0 -0
  370. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/assets/images/invoke-wordmark-charcoal.svg +0 -0
  371. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/assets/images/invoke-wordmark-white.svg +0 -0
  372. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/assets/images/mask.svg +0 -0
  373. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/assets/inter-cyrillic-ext-wght-normal-DIEz8p5i.woff2 +0 -0
  374. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/assets/inter-cyrillic-wght-normal-BmJJXa8e.woff2 +0 -0
  375. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/assets/inter-greek-ext-wght-normal-D5AYLNiq.woff2 +0 -0
  376. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/assets/inter-greek-wght-normal-DyIDNIyN.woff2 +0 -0
  377. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/assets/inter-latin-ext-wght-normal-CN1pIXkb.woff2 +0 -0
  378. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/assets/inter-latin-wght-normal-BgVq2Tq4.woff2 +0 -0
  379. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/assets/inter-vietnamese-wght-normal-_GQuwPVU.woff2 +0 -0
  380. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/locales/az.json +0 -0
  381. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/locales/bg.json +0 -0
  382. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/locales/fi.json +0 -0
  383. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/locales/hu.json +0 -0
  384. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/locales/mn.json +0 -0
  385. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/locales/ro.json +0 -0
  386. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/locales/sv.json +0 -0
  387. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/locales/vi.json +0 -0
  388. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/dist/locales/zh_Hant.json +0 -0
  389. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/scripts/clean_translations.py +0 -0
  390. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/frontend/web/static/docs/invoke-favicon-docs.svg +0 -0
  391. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/invokeai/version/__init__.py +0 -0
  392. {InvokeAI-4.0.3 → InvokeAI-4.1.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: InvokeAI
3
- Version: 4.0.3
3
+ Version: 4.1.0
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
@@ -39,6 +39,7 @@ invokeai/app/invocations/image.py
39
39
  invokeai/app/invocations/infill.py
40
40
  invokeai/app/invocations/ip_adapter.py
41
41
  invokeai/app/invocations/latent.py
42
+ invokeai/app/invocations/mask.py
42
43
  invokeai/app/invocations/math.py
43
44
  invokeai/app/invocations/metadata.py
44
45
  invokeai/app/invocations/model.py
@@ -224,11 +225,9 @@ invokeai/backend/image_util/infill_methods/tile.py
224
225
  invokeai/backend/image_util/realesrgan/__init__.py
225
226
  invokeai/backend/image_util/realesrgan/realesrgan.py
226
227
  invokeai/backend/ip_adapter/__init__.py
227
- invokeai/backend/ip_adapter/attention_processor.py
228
228
  invokeai/backend/ip_adapter/ip_adapter.py
229
229
  invokeai/backend/ip_adapter/ip_attention_weights.py
230
230
  invokeai/backend/ip_adapter/resampler.py
231
- invokeai/backend/ip_adapter/unet_patcher.py
232
231
  invokeai/backend/model_hash/model_hash.py
233
232
  invokeai/backend/model_manager/__init__.py
234
233
  invokeai/backend/model_manager/config.py
@@ -275,8 +274,11 @@ invokeai/backend/stable_diffusion/diffusers_pipeline.py
275
274
  invokeai/backend/stable_diffusion/seamless.py
276
275
  invokeai/backend/stable_diffusion/diffusion/__init__.py
277
276
  invokeai/backend/stable_diffusion/diffusion/conditioning_data.py
278
- invokeai/backend/stable_diffusion/diffusion/cross_attention_control.py
277
+ invokeai/backend/stable_diffusion/diffusion/custom_atttention.py
278
+ invokeai/backend/stable_diffusion/diffusion/regional_ip_data.py
279
+ invokeai/backend/stable_diffusion/diffusion/regional_prompt_data.py
279
280
  invokeai/backend/stable_diffusion/diffusion/shared_invokeai_diffusion.py
281
+ invokeai/backend/stable_diffusion/diffusion/unet_attention_patcher.py
280
282
  invokeai/backend/stable_diffusion/schedulers/__init__.py
281
283
  invokeai/backend/stable_diffusion/schedulers/schedulers.py
282
284
  invokeai/backend/tiles/__init__.py
@@ -288,6 +290,7 @@ invokeai/backend/util/db_maintenance.py
288
290
  invokeai/backend/util/devices.py
289
291
  invokeai/backend/util/hotfixes.py
290
292
  invokeai/backend/util/logging.py
293
+ invokeai/backend/util/mask.py
291
294
  invokeai/backend/util/mps_fixes.py
292
295
  invokeai/backend/util/silence_warnings.py
293
296
  invokeai/backend/util/test_utils.py
@@ -314,11 +317,11 @@ invokeai/frontend/install/__init__.py
314
317
  invokeai/frontend/install/import_images.py
315
318
  invokeai/frontend/web/__init__.py
316
319
  invokeai/frontend/web/dist/index.html
317
- invokeai/frontend/web/dist/assets/App-BLcNMYZP.js
318
320
  invokeai/frontend/web/dist/assets/App-DI6oCUg0.css
321
+ invokeai/frontend/web/dist/assets/App-nR2gvd20.js
319
322
  invokeai/frontend/web/dist/assets/ThemeLocaleProvider-Bsx7ESc2.css
320
- invokeai/frontend/web/dist/assets/ThemeLocaleProvider-DKJ1LbAm.js
321
- invokeai/frontend/web/dist/assets/index-MDF-DOT9.js
323
+ invokeai/frontend/web/dist/assets/ThemeLocaleProvider-KzMt_S5B.js
324
+ invokeai/frontend/web/dist/assets/index-CB6ZmbOE.js
322
325
  invokeai/frontend/web/dist/assets/inter-cyrillic-ext-wght-normal-DIEz8p5i.woff2
323
326
  invokeai/frontend/web/dist/assets/inter-cyrillic-wght-normal-BmJJXa8e.woff2
324
327
  invokeai/frontend/web/dist/assets/inter-greek-ext-wght-normal-D5AYLNiq.woff2
@@ -326,6 +329,7 @@ invokeai/frontend/web/dist/assets/inter-greek-wght-normal-DyIDNIyN.woff2
326
329
  invokeai/frontend/web/dist/assets/inter-latin-ext-wght-normal-CN1pIXkb.woff2
327
330
  invokeai/frontend/web/dist/assets/inter-latin-wght-normal-BgVq2Tq4.woff2
328
331
  invokeai/frontend/web/dist/assets/inter-vietnamese-wght-normal-_GQuwPVU.woff2
332
+ invokeai/frontend/web/dist/assets/images/invoke-alert-favicon.svg
329
333
  invokeai/frontend/web/dist/assets/images/invoke-avatar-circle.svg
330
334
  invokeai/frontend/web/dist/assets/images/invoke-avatar-square.svg
331
335
  invokeai/frontend/web/dist/assets/images/invoke-favicon.png
@@ -1,4 +1,4 @@
1
- accelerate==0.28.0
1
+ accelerate==0.29.2
2
2
  clip_anytorch==2.5.2
3
3
  compel==2.0.2
4
4
  controlnet-aux==0.0.7
@@ -12,14 +12,14 @@ opencv-python==4.9.0.80
12
12
  pytorch-lightning==2.1.3
13
13
  safetensors==0.4.2
14
14
  timm==0.6.13
15
- torch==2.2.1
15
+ torch==2.2.2
16
16
  torchmetrics==0.11.4
17
17
  torchsde==0.2.6
18
- torchvision==0.17.1
19
- transformers==4.39.1
18
+ torchvision==0.17.2
19
+ transformers==4.39.3
20
20
  fastapi-events==0.11.0
21
21
  fastapi==0.110.0
22
- huggingface-hub==0.21.4
22
+ huggingface-hub==0.22.2
23
23
  pydantic-settings==2.2.1
24
24
  pydantic==2.6.3
25
25
  python-socketio==5.11.1
@@ -96,7 +96,7 @@ httpx
96
96
  [xformers]
97
97
 
98
98
  [xformers:sys_platform != "darwin"]
99
- xformers==0.0.25
99
+ xformers==0.0.25post1
100
100
 
101
101
  [xformers:sys_platform == "linux"]
102
102
  triton
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: InvokeAI
3
- Version: 4.0.3
3
+ Version: 4.1.0
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
@@ -28,7 +28,7 @@ from invokeai.app.api.no_cache_staticfiles import NoCacheStaticFiles
28
28
  from invokeai.app.invocations.model import ModelIdentifierField
29
29
  from invokeai.app.services.config.config_default import get_config
30
30
  from invokeai.app.services.session_processor.session_processor_common import ProgressImage
31
- from invokeai.backend.util.devices import get_torch_device_name
31
+ from invokeai.backend.util.devices import TorchDevice
32
32
 
33
33
  from ..backend.util.logging import InvokeAILogger
34
34
  from .api.dependencies import ApiDependencies
@@ -63,7 +63,7 @@ logger = InvokeAILogger.get_logger(config=app_config)
63
63
  mimetypes.add_type("application/javascript", ".js")
64
64
  mimetypes.add_type("text/css", ".css")
65
65
 
66
- torch_device_name = get_torch_device_name()
66
+ torch_device_name = TorchDevice.get_torch_device_name()
67
67
  logger.info(f"Using torch device: {torch_device_name}")
68
68
 
69
69
 
@@ -5,7 +5,15 @@ from compel import Compel, ReturnedEmbeddingsType
5
5
  from compel.prompt_parser import Blend, Conjunction, CrossAttentionControlSubstitute, FlattenedPrompt, Fragment
6
6
  from transformers import CLIPTextModel, CLIPTextModelWithProjection, CLIPTokenizer
7
7
 
8
- from invokeai.app.invocations.fields import FieldDescriptions, Input, InputField, OutputField, UIComponent
8
+ from invokeai.app.invocations.fields import (
9
+ ConditioningField,
10
+ FieldDescriptions,
11
+ Input,
12
+ InputField,
13
+ OutputField,
14
+ TensorField,
15
+ UIComponent,
16
+ )
9
17
  from invokeai.app.invocations.primitives import ConditioningOutput
10
18
  from invokeai.app.services.shared.invocation_context import InvocationContext
11
19
  from invokeai.app.util.ti_utils import generate_ti_list
@@ -14,10 +22,9 @@ from invokeai.backend.model_patcher import ModelPatcher
14
22
  from invokeai.backend.stable_diffusion.diffusion.conditioning_data import (
15
23
  BasicConditioningInfo,
16
24
  ConditioningFieldData,
17
- ExtraConditioningInfo,
18
25
  SDXLConditioningInfo,
19
26
  )
20
- from invokeai.backend.util.devices import torch_dtype
27
+ from invokeai.backend.util.devices import TorchDevice
21
28
 
22
29
  from .baseinvocation import BaseInvocation, BaseInvocationOutput, invocation, invocation_output
23
30
  from .model import CLIPField
@@ -36,7 +43,7 @@ from .model import CLIPField
36
43
  title="Prompt",
37
44
  tags=["prompt", "compel"],
38
45
  category="conditioning",
39
- version="1.1.1",
46
+ version="1.2.0",
40
47
  )
41
48
  class CompelInvocation(BaseInvocation):
42
49
  """Parse prompt using compel package to conditioning."""
@@ -51,6 +58,9 @@ class CompelInvocation(BaseInvocation):
51
58
  description=FieldDescriptions.clip,
52
59
  input=Input.Connection,
53
60
  )
61
+ mask: Optional[TensorField] = InputField(
62
+ default=None, description="A mask defining the region that this conditioning prompt applies to."
63
+ )
54
64
 
55
65
  @torch.no_grad()
56
66
  def invoke(self, context: InvocationContext) -> ConditioningOutput:
@@ -89,7 +99,7 @@ class CompelInvocation(BaseInvocation):
89
99
  tokenizer=tokenizer,
90
100
  text_encoder=text_encoder,
91
101
  textual_inversion_manager=ti_manager,
92
- dtype_for_device_getter=torch_dtype,
102
+ dtype_for_device_getter=TorchDevice.choose_torch_dtype,
93
103
  truncate_long_prompts=False,
94
104
  )
95
105
 
@@ -98,27 +108,19 @@ class CompelInvocation(BaseInvocation):
98
108
  if context.config.get().log_tokenization:
99
109
  log_tokenization_for_conjunction(conjunction, tokenizer)
100
110
 
101
- c, options = compel.build_conditioning_tensor_for_conjunction(conjunction)
102
-
103
- ec = ExtraConditioningInfo(
104
- tokens_count_including_eos_bos=get_max_token_count(tokenizer, conjunction),
105
- cross_attention_control_args=options.get("cross_attention_control", None),
106
- )
111
+ c, _options = compel.build_conditioning_tensor_for_conjunction(conjunction)
107
112
 
108
113
  c = c.detach().to("cpu")
109
114
 
110
- conditioning_data = ConditioningFieldData(
111
- conditionings=[
112
- BasicConditioningInfo(
113
- embeds=c,
114
- extra_conditioning=ec,
115
- )
116
- ]
117
- )
115
+ conditioning_data = ConditioningFieldData(conditionings=[BasicConditioningInfo(embeds=c)])
118
116
 
119
117
  conditioning_name = context.conditioning.save(conditioning_data)
120
-
121
- return ConditioningOutput.build(conditioning_name)
118
+ return ConditioningOutput(
119
+ conditioning=ConditioningField(
120
+ conditioning_name=conditioning_name,
121
+ mask=self.mask,
122
+ )
123
+ )
122
124
 
123
125
 
124
126
  class SDXLPromptInvocationBase:
@@ -132,7 +134,7 @@ class SDXLPromptInvocationBase:
132
134
  get_pooled: bool,
133
135
  lora_prefix: str,
134
136
  zero_on_empty: bool,
135
- ) -> Tuple[torch.Tensor, Optional[torch.Tensor], Optional[ExtraConditioningInfo]]:
137
+ ) -> Tuple[torch.Tensor, Optional[torch.Tensor]]:
136
138
  tokenizer_info = context.models.load(clip_field.tokenizer)
137
139
  tokenizer_model = tokenizer_info.model
138
140
  assert isinstance(tokenizer_model, CLIPTokenizer)
@@ -159,7 +161,7 @@ class SDXLPromptInvocationBase:
159
161
  )
160
162
  else:
161
163
  c_pooled = None
162
- return c, c_pooled, None
164
+ return c, c_pooled
163
165
 
164
166
  def _lora_loader() -> Iterator[Tuple[LoRAModelRaw, float]]:
165
167
  for lora in clip_field.loras:
@@ -191,7 +193,7 @@ class SDXLPromptInvocationBase:
191
193
  tokenizer=tokenizer,
192
194
  text_encoder=text_encoder,
193
195
  textual_inversion_manager=ti_manager,
194
- dtype_for_device_getter=torch_dtype,
196
+ dtype_for_device_getter=TorchDevice.choose_torch_dtype,
195
197
  truncate_long_prompts=False, # TODO:
196
198
  returned_embeddings_type=ReturnedEmbeddingsType.PENULTIMATE_HIDDEN_STATES_NON_NORMALIZED, # TODO: clip skip
197
199
  requires_pooled=get_pooled,
@@ -204,17 +206,12 @@ class SDXLPromptInvocationBase:
204
206
  log_tokenization_for_conjunction(conjunction, tokenizer)
205
207
 
206
208
  # TODO: ask for optimizations? to not run text_encoder twice
207
- c, options = compel.build_conditioning_tensor_for_conjunction(conjunction)
209
+ c, _options = compel.build_conditioning_tensor_for_conjunction(conjunction)
208
210
  if get_pooled:
209
211
  c_pooled = compel.conditioning_provider.get_pooled_embeddings([prompt])
210
212
  else:
211
213
  c_pooled = None
212
214
 
213
- ec = ExtraConditioningInfo(
214
- tokens_count_including_eos_bos=get_max_token_count(tokenizer, conjunction),
215
- cross_attention_control_args=options.get("cross_attention_control", None),
216
- )
217
-
218
215
  del tokenizer
219
216
  del text_encoder
220
217
  del tokenizer_info
@@ -224,7 +221,7 @@ class SDXLPromptInvocationBase:
224
221
  if c_pooled is not None:
225
222
  c_pooled = c_pooled.detach().to("cpu")
226
223
 
227
- return c, c_pooled, ec
224
+ return c, c_pooled
228
225
 
229
226
 
230
227
  @invocation(
@@ -232,7 +229,7 @@ class SDXLPromptInvocationBase:
232
229
  title="SDXL Prompt",
233
230
  tags=["sdxl", "compel", "prompt"],
234
231
  category="conditioning",
235
- version="1.1.1",
232
+ version="1.2.0",
236
233
  )
237
234
  class SDXLCompelPromptInvocation(BaseInvocation, SDXLPromptInvocationBase):
238
235
  """Parse prompt using compel package to conditioning."""
@@ -255,20 +252,19 @@ class SDXLCompelPromptInvocation(BaseInvocation, SDXLPromptInvocationBase):
255
252
  target_height: int = InputField(default=1024, description="")
256
253
  clip: CLIPField = InputField(description=FieldDescriptions.clip, input=Input.Connection, title="CLIP 1")
257
254
  clip2: CLIPField = InputField(description=FieldDescriptions.clip, input=Input.Connection, title="CLIP 2")
255
+ mask: Optional[TensorField] = InputField(
256
+ default=None, description="A mask defining the region that this conditioning prompt applies to."
257
+ )
258
258
 
259
259
  @torch.no_grad()
260
260
  def invoke(self, context: InvocationContext) -> ConditioningOutput:
261
- c1, c1_pooled, ec1 = self.run_clip_compel(
262
- context, self.clip, self.prompt, False, "lora_te1_", zero_on_empty=True
263
- )
261
+ c1, c1_pooled = self.run_clip_compel(context, self.clip, self.prompt, False, "lora_te1_", zero_on_empty=True)
264
262
  if self.style.strip() == "":
265
- c2, c2_pooled, ec2 = self.run_clip_compel(
263
+ c2, c2_pooled = self.run_clip_compel(
266
264
  context, self.clip2, self.prompt, True, "lora_te2_", zero_on_empty=True
267
265
  )
268
266
  else:
269
- c2, c2_pooled, ec2 = self.run_clip_compel(
270
- context, self.clip2, self.style, True, "lora_te2_", zero_on_empty=True
271
- )
267
+ c2, c2_pooled = self.run_clip_compel(context, self.clip2, self.style, True, "lora_te2_", zero_on_empty=True)
272
268
 
273
269
  original_size = (self.original_height, self.original_width)
274
270
  crop_coords = (self.crop_top, self.crop_left)
@@ -307,17 +303,19 @@ class SDXLCompelPromptInvocation(BaseInvocation, SDXLPromptInvocationBase):
307
303
  conditioning_data = ConditioningFieldData(
308
304
  conditionings=[
309
305
  SDXLConditioningInfo(
310
- embeds=torch.cat([c1, c2], dim=-1),
311
- pooled_embeds=c2_pooled,
312
- add_time_ids=add_time_ids,
313
- extra_conditioning=ec1,
306
+ embeds=torch.cat([c1, c2], dim=-1), pooled_embeds=c2_pooled, add_time_ids=add_time_ids
314
307
  )
315
308
  ]
316
309
  )
317
310
 
318
311
  conditioning_name = context.conditioning.save(conditioning_data)
319
312
 
320
- return ConditioningOutput.build(conditioning_name)
313
+ return ConditioningOutput(
314
+ conditioning=ConditioningField(
315
+ conditioning_name=conditioning_name,
316
+ mask=self.mask,
317
+ )
318
+ )
321
319
 
322
320
 
323
321
  @invocation(
@@ -345,7 +343,7 @@ class SDXLRefinerCompelPromptInvocation(BaseInvocation, SDXLPromptInvocationBase
345
343
  @torch.no_grad()
346
344
  def invoke(self, context: InvocationContext) -> ConditioningOutput:
347
345
  # TODO: if there will appear lora for refiner - write proper prefix
348
- c2, c2_pooled, ec2 = self.run_clip_compel(context, self.clip2, self.style, True, "<NONE>", zero_on_empty=False)
346
+ c2, c2_pooled = self.run_clip_compel(context, self.clip2, self.style, True, "<NONE>", zero_on_empty=False)
349
347
 
350
348
  original_size = (self.original_height, self.original_width)
351
349
  crop_coords = (self.crop_top, self.crop_left)
@@ -354,14 +352,7 @@ class SDXLRefinerCompelPromptInvocation(BaseInvocation, SDXLPromptInvocationBase
354
352
 
355
353
  assert c2_pooled is not None
356
354
  conditioning_data = ConditioningFieldData(
357
- conditionings=[
358
- SDXLConditioningInfo(
359
- embeds=c2,
360
- pooled_embeds=c2_pooled,
361
- add_time_ids=add_time_ids,
362
- extra_conditioning=ec2, # or None
363
- )
364
- ]
355
+ conditionings=[SDXLConditioningInfo(embeds=c2, pooled_embeds=c2_pooled, add_time_ids=add_time_ids)]
365
356
  )
366
357
 
367
358
  conditioning_name = context.conditioning.save(conditioning_data)
@@ -203,6 +203,12 @@ class DenoiseMaskField(BaseModel):
203
203
  gradient: bool = Field(default=False, description="Used for gradient inpainting")
204
204
 
205
205
 
206
+ class TensorField(BaseModel):
207
+ """A tensor primitive field."""
208
+
209
+ tensor_name: str = Field(description="The name of a tensor.")
210
+
211
+
206
212
  class LatentsField(BaseModel):
207
213
  """A latents tensor primitive field"""
208
214
 
@@ -226,7 +232,11 @@ class ConditioningField(BaseModel):
226
232
  """A conditioning tensor primitive value"""
227
233
 
228
234
  conditioning_name: str = Field(description="The name of conditioning tensor")
229
- # endregion
235
+ mask: Optional[TensorField] = Field(
236
+ default=None,
237
+ description="The mask associated with this conditioning tensor. Excluded regions should be set to False, "
238
+ "included regions should be set to True.",
239
+ )
230
240
 
231
241
 
232
242
  class MetadataField(RootModel[dict[str, Any]]):
@@ -1,11 +1,11 @@
1
1
  from builtins import float
2
- from typing import List, Literal, Union
2
+ from typing import List, Literal, Optional, Union
3
3
 
4
4
  from pydantic import BaseModel, Field, field_validator, model_validator
5
5
  from typing_extensions import Self
6
6
 
7
7
  from invokeai.app.invocations.baseinvocation import BaseInvocation, BaseInvocationOutput, invocation, invocation_output
8
- from invokeai.app.invocations.fields import FieldDescriptions, Input, InputField, OutputField, UIType
8
+ from invokeai.app.invocations.fields import FieldDescriptions, Input, InputField, OutputField, TensorField, UIType
9
9
  from invokeai.app.invocations.model import ModelIdentifierField
10
10
  from invokeai.app.invocations.primitives import ImageField
11
11
  from invokeai.app.invocations.util import validate_begin_end_step, validate_weights
@@ -23,13 +23,19 @@ class IPAdapterField(BaseModel):
23
23
  image: Union[ImageField, List[ImageField]] = Field(description="The IP-Adapter image prompt(s).")
24
24
  ip_adapter_model: ModelIdentifierField = Field(description="The IP-Adapter model to use.")
25
25
  image_encoder_model: ModelIdentifierField = Field(description="The name of the CLIP image encoder model.")
26
- weight: Union[float, List[float]] = Field(default=1, description="The weight given to the ControlNet")
26
+ weight: Union[float, List[float]] = Field(default=1, description="The weight given to the IP-Adapter.")
27
+ target_blocks: List[str] = Field(default=[], description="The IP Adapter blocks to apply")
27
28
  begin_step_percent: float = Field(
28
29
  default=0, ge=0, le=1, description="When the IP-Adapter is first applied (% of total steps)"
29
30
  )
30
31
  end_step_percent: float = Field(
31
32
  default=1, ge=0, le=1, description="When the IP-Adapter is last applied (% of total steps)"
32
33
  )
34
+ mask: Optional[TensorField] = Field(
35
+ default=None,
36
+ description="The bool mask associated with this IP-Adapter. Excluded regions should be set to False, included "
37
+ "regions should be set to True.",
38
+ )
33
39
 
34
40
  @field_validator("weight")
35
41
  @classmethod
@@ -52,7 +58,7 @@ class IPAdapterOutput(BaseInvocationOutput):
52
58
  CLIP_VISION_MODEL_MAP = {"ViT-H": "ip_adapter_sd_image_encoder", "ViT-G": "ip_adapter_sdxl_image_encoder"}
53
59
 
54
60
 
55
- @invocation("ip_adapter", title="IP-Adapter", tags=["ip_adapter", "control"], category="ip_adapter", version="1.2.2")
61
+ @invocation("ip_adapter", title="IP-Adapter", tags=["ip_adapter", "control"], category="ip_adapter", version="1.4.0")
56
62
  class IPAdapterInvocation(BaseInvocation):
57
63
  """Collects IP-Adapter info to pass to other nodes."""
58
64
 
@@ -67,18 +73,24 @@ class IPAdapterInvocation(BaseInvocation):
67
73
  )
68
74
  clip_vision_model: Literal["ViT-H", "ViT-G"] = InputField(
69
75
  description="CLIP Vision model to use. Overrides model settings. Mandatory for checkpoint models.",
70
- default="auto",
76
+ default="ViT-H",
71
77
  ui_order=2,
72
78
  )
73
79
  weight: Union[float, List[float]] = InputField(
74
80
  default=1, description="The weight given to the IP-Adapter", title="Weight"
75
81
  )
82
+ method: Literal["full", "style", "composition"] = InputField(
83
+ default="full", description="The method to apply the IP-Adapter"
84
+ )
76
85
  begin_step_percent: float = InputField(
77
86
  default=0, ge=0, le=1, description="When the IP-Adapter is first applied (% of total steps)"
78
87
  )
79
88
  end_step_percent: float = InputField(
80
89
  default=1, ge=0, le=1, description="When the IP-Adapter is last applied (% of total steps)"
81
90
  )
91
+ mask: Optional[TensorField] = InputField(
92
+ default=None, description="A mask defining the region that this IP-Adapter applies to."
93
+ )
82
94
 
83
95
  @field_validator("weight")
84
96
  @classmethod
@@ -104,14 +116,35 @@ class IPAdapterInvocation(BaseInvocation):
104
116
 
105
117
  image_encoder_model = self._get_image_encoder(context, image_encoder_model_name)
106
118
 
119
+ if self.method == "style":
120
+ if ip_adapter_info.base == "sd-1":
121
+ target_blocks = ["up_blocks.1"]
122
+ elif ip_adapter_info.base == "sdxl":
123
+ target_blocks = ["up_blocks.0.attentions.1"]
124
+ else:
125
+ raise ValueError(f"Unsupported IP-Adapter base type: '{ip_adapter_info.base}'.")
126
+ elif self.method == "composition":
127
+ if ip_adapter_info.base == "sd-1":
128
+ target_blocks = ["down_blocks.2", "mid_block"]
129
+ elif ip_adapter_info.base == "sdxl":
130
+ target_blocks = ["down_blocks.2.attentions.1"]
131
+ else:
132
+ raise ValueError(f"Unsupported IP-Adapter base type: '{ip_adapter_info.base}'.")
133
+ elif self.method == "full":
134
+ target_blocks = ["block"]
135
+ else:
136
+ raise ValueError(f"Unexpected IP-Adapter method: '{self.method}'.")
137
+
107
138
  return IPAdapterOutput(
108
139
  ip_adapter=IPAdapterField(
109
140
  image=self.image,
110
141
  ip_adapter_model=self.ip_adapter_model,
111
142
  image_encoder_model=ModelIdentifierField.from_config(image_encoder_model),
112
143
  weight=self.weight,
144
+ target_blocks=target_blocks,
113
145
  begin_step_percent=self.begin_step_percent,
114
146
  end_step_percent=self.end_step_percent,
147
+ mask=self.mask,
115
148
  ),
116
149
  )
117
150