InvokeAI 3.7.0__tar.gz → 4.0.0rc2__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 (458) hide show
  1. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/InvokeAI.egg-info/PKG-INFO +1 -1
  2. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/InvokeAI.egg-info/SOURCES.txt +73 -69
  3. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/InvokeAI.egg-info/entry_points.txt +1 -2
  4. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/InvokeAI.egg-info/requires.txt +15 -11
  5. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/PKG-INFO +1 -1
  6. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/api/dependencies.py +28 -26
  7. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/api/routers/download_queue.py +4 -4
  8. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/api/routers/images.py +59 -8
  9. InvokeAI-4.0.0rc2/invokeai/app/api/routers/model_manager.py +782 -0
  10. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/api/sockets.py +27 -2
  11. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/api_app.py +49 -43
  12. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/invocations/baseinvocation.py +49 -473
  13. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/invocations/collections.py +3 -1
  14. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/invocations/compel.py +100 -150
  15. InvokeAI-4.0.0rc2/invokeai/app/invocations/constants.py +17 -0
  16. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/invocations/controlnet_image_processors.py +47 -65
  17. InvokeAI-4.0.0rc2/invokeai/app/invocations/cv.py +41 -0
  18. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/invocations/facetools.py +33 -77
  19. InvokeAI-4.0.0rc2/invokeai/app/invocations/fields.py +567 -0
  20. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/invocations/image.py +163 -462
  21. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/invocations/infill.py +30 -93
  22. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/invocations/ip_adapter.py +26 -47
  23. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/invocations/latent.py +257 -253
  24. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/invocations/math.py +3 -2
  25. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/invocations/metadata.py +54 -27
  26. InvokeAI-4.0.0rc2/invokeai/app/invocations/model.py +370 -0
  27. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/invocations/noise.py +14 -17
  28. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/invocations/param_easing.py +22 -20
  29. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/invocations/primitives.py +53 -71
  30. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/invocations/prompt.py +3 -1
  31. InvokeAI-4.0.0rc2/invokeai/app/invocations/sdxl.py +97 -0
  32. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/invocations/strings.py +3 -4
  33. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/invocations/t2i_adapter.py +7 -17
  34. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/invocations/tiles.py +7 -24
  35. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/invocations/upscale.py +12 -23
  36. InvokeAI-4.0.0rc2/invokeai/app/services/bulk_download/bulk_download_base.py +44 -0
  37. InvokeAI-4.0.0rc2/invokeai/app/services/bulk_download/bulk_download_common.py +25 -0
  38. InvokeAI-4.0.0rc2/invokeai/app/services/bulk_download/bulk_download_default.py +157 -0
  39. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/config/config_base.py +25 -6
  40. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/config/config_common.py +1 -1
  41. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/config/config_default.py +204 -63
  42. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/download/__init__.py +1 -0
  43. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/download/download_base.py +13 -0
  44. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/download/download_default.py +19 -7
  45. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/events/events_base.py +70 -90
  46. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/image_files/image_files_base.py +1 -1
  47. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/image_files/image_files_disk.py +1 -1
  48. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/image_records/image_records_base.py +1 -1
  49. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/image_records/image_records_sqlite.py +1 -1
  50. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/images/images_base.py +1 -1
  51. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/images/images_default.py +1 -1
  52. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/invocation_cache/invocation_cache_base.py +2 -1
  53. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/invocation_cache/invocation_cache_memory.py +4 -5
  54. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/invocation_services.py +16 -46
  55. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/invocation_stats/invocation_stats_base.py +7 -12
  56. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/invocation_stats/invocation_stats_default.py +12 -44
  57. InvokeAI-4.0.0rc2/invokeai/app/services/invoker.py +37 -0
  58. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/item_storage/item_storage_base.py +1 -1
  59. InvokeAI-4.0.0rc2/invokeai/app/services/model_images/model_images_base.py +33 -0
  60. InvokeAI-4.0.0rc2/invokeai/app/services/model_images/model_images_common.py +20 -0
  61. InvokeAI-4.0.0rc2/invokeai/app/services/model_images/model_images_default.py +85 -0
  62. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/model_install/__init__.py +0 -2
  63. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/model_install/model_install_base.py +101 -27
  64. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/model_install/model_install_default.py +236 -102
  65. InvokeAI-4.0.0rc2/invokeai/app/services/model_load/__init__.py +6 -0
  66. InvokeAI-4.0.0rc2/invokeai/app/services/model_load/model_load_base.py +40 -0
  67. InvokeAI-4.0.0rc2/invokeai/app/services/model_load/model_load_default.py +118 -0
  68. InvokeAI-4.0.0rc2/invokeai/app/services/model_manager/__init__.py +17 -0
  69. InvokeAI-4.0.0rc2/invokeai/app/services/model_manager/model_manager_base.py +68 -0
  70. InvokeAI-4.0.0rc2/invokeai/app/services/model_manager/model_manager_default.py +101 -0
  71. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/model_records/__init__.py +1 -0
  72. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/model_records/model_records_base.py +46 -54
  73. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/model_records/model_records_sql.py +84 -106
  74. InvokeAI-4.0.0rc2/invokeai/app/services/object_serializer/object_serializer_base.py +44 -0
  75. InvokeAI-4.0.0rc2/invokeai/app/services/object_serializer/object_serializer_common.py +5 -0
  76. InvokeAI-4.0.0rc2/invokeai/app/services/object_serializer/object_serializer_disk.py +85 -0
  77. InvokeAI-4.0.0rc2/invokeai/app/services/object_serializer/object_serializer_forward_cache.py +65 -0
  78. InvokeAI-3.7.0/invokeai/app/services/invocation_processor/invocation_processor_common.py → InvokeAI-4.0.0rc2/invokeai/app/services/session_processor/session_processor_common.py +11 -6
  79. InvokeAI-4.0.0rc2/invokeai/app/services/session_processor/session_processor_default.py +277 -0
  80. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/session_queue/session_queue_sqlite.py +1 -4
  81. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/shared/graph.py +183 -308
  82. InvokeAI-4.0.0rc2/invokeai/app/services/shared/invocation_context.py +551 -0
  83. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/shared/sqlite/sqlite_util.py +4 -0
  84. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_3.py +0 -9
  85. InvokeAI-4.0.0rc2/invokeai/app/services/shared/sqlite_migrator/migrations/migration_6.py +62 -0
  86. InvokeAI-4.0.0rc2/invokeai/app/services/shared/sqlite_migrator/migrations/migration_7.py +88 -0
  87. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/shared/sqlite_migrator/sqlite_migrator_common.py +1 -2
  88. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/urls/urls_base.py +5 -0
  89. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/urls/urls_default.py +5 -1
  90. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/shared/models.py +1 -1
  91. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/util/misc.py +4 -4
  92. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/util/step_callback.py +20 -15
  93. InvokeAI-4.0.0rc2/invokeai/app/util/ti_utils.py +47 -0
  94. InvokeAI-4.0.0rc2/invokeai/backend/__init__.py +3 -0
  95. InvokeAI-4.0.0rc2/invokeai/backend/embeddings/__init__.py +4 -0
  96. InvokeAI-4.0.0rc2/invokeai/backend/embeddings/embedding_base.py +12 -0
  97. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/image_util/__init__.py +1 -0
  98. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/image_util/depth_anything/__init__.py +14 -16
  99. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/image_util/invisible_watermark.py +1 -0
  100. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/image_util/patchmatch.py +1 -0
  101. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/image_util/pngwriter.py +1 -0
  102. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/image_util/safety_checker.py +2 -1
  103. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/install/check_root.py +1 -1
  104. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/install/install_helper.py +21 -35
  105. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/install/invokeai_configure.py +130 -94
  106. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/ip_adapter/ip_adapter.py +5 -2
  107. {InvokeAI-3.7.0/invokeai/backend/model_management/models → InvokeAI-4.0.0rc2/invokeai/backend}/lora.py +62 -134
  108. InvokeAI-4.0.0rc2/invokeai/backend/model_hash/model_hash.py +219 -0
  109. InvokeAI-4.0.0rc2/invokeai/backend/model_manager/__init__.py +74 -0
  110. InvokeAI-4.0.0rc2/invokeai/backend/model_manager/config.py +433 -0
  111. {InvokeAI-3.7.0/invokeai/backend/model_management → InvokeAI-4.0.0rc2/invokeai/backend/model_manager}/convert_ckpt_to_diffusers.py +29 -3
  112. InvokeAI-4.0.0rc2/invokeai/backend/model_manager/load/__init__.py +28 -0
  113. InvokeAI-4.0.0rc2/invokeai/backend/model_manager/load/convert_cache/__init__.py +4 -0
  114. InvokeAI-4.0.0rc2/invokeai/backend/model_manager/load/convert_cache/convert_cache_base.py +28 -0
  115. InvokeAI-4.0.0rc2/invokeai/backend/model_manager/load/convert_cache/convert_cache_default.py +72 -0
  116. InvokeAI-4.0.0rc2/invokeai/backend/model_manager/load/load_base.py +85 -0
  117. InvokeAI-4.0.0rc2/invokeai/backend/model_manager/load/load_default.py +137 -0
  118. {InvokeAI-3.7.0/invokeai/backend/model_management → InvokeAI-4.0.0rc2/invokeai/backend/model_manager/load}/memory_snapshot.py +4 -3
  119. InvokeAI-4.0.0rc2/invokeai/backend/model_manager/load/model_cache/__init__.py +6 -0
  120. InvokeAI-4.0.0rc2/invokeai/backend/model_manager/load/model_cache/model_cache_base.py +188 -0
  121. InvokeAI-4.0.0rc2/invokeai/backend/model_manager/load/model_cache/model_cache_default.py +424 -0
  122. InvokeAI-4.0.0rc2/invokeai/backend/model_manager/load/model_cache/model_locker.py +64 -0
  123. InvokeAI-4.0.0rc2/invokeai/backend/model_manager/load/model_loader_registry.py +104 -0
  124. InvokeAI-4.0.0rc2/invokeai/backend/model_manager/load/model_loaders/__init__.py +3 -0
  125. InvokeAI-4.0.0rc2/invokeai/backend/model_manager/load/model_loaders/controlnet.py +63 -0
  126. InvokeAI-4.0.0rc2/invokeai/backend/model_manager/load/model_loaders/generic_diffusers.py +93 -0
  127. InvokeAI-4.0.0rc2/invokeai/backend/model_manager/load/model_loaders/ip_adapter.py +38 -0
  128. InvokeAI-4.0.0rc2/invokeai/backend/model_manager/load/model_loaders/lora.py +77 -0
  129. InvokeAI-4.0.0rc2/invokeai/backend/model_manager/load/model_loaders/onnx.py +42 -0
  130. InvokeAI-4.0.0rc2/invokeai/backend/model_manager/load/model_loaders/stable_diffusion.py +94 -0
  131. InvokeAI-4.0.0rc2/invokeai/backend/model_manager/load/model_loaders/textual_inversion.py +56 -0
  132. InvokeAI-4.0.0rc2/invokeai/backend/model_manager/load/model_loaders/vae.py +68 -0
  133. InvokeAI-4.0.0rc2/invokeai/backend/model_manager/load/model_util.py +113 -0
  134. InvokeAI-3.7.0/invokeai/backend/model_management/model_load_optimizations.py → InvokeAI-4.0.0rc2/invokeai/backend/model_manager/load/optimizations.py +7 -6
  135. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/model_manager/merge.py +11 -20
  136. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/model_manager/metadata/__init__.py +6 -16
  137. InvokeAI-4.0.0rc2/invokeai/backend/model_manager/metadata/fetch/__init__.py +16 -0
  138. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/model_manager/metadata/fetch/fetch_base.py +11 -7
  139. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/model_manager/metadata/fetch/huggingface.py +61 -19
  140. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/model_manager/metadata/metadata_base.py +9 -81
  141. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/model_manager/probe.py +139 -44
  142. InvokeAI-4.0.0rc2/invokeai/backend/model_manager/search.py +143 -0
  143. InvokeAI-4.0.0rc2/invokeai/backend/model_manager/util/libc_util.py +76 -0
  144. InvokeAI-3.7.0/invokeai/backend/model_management/util.py → InvokeAI-4.0.0rc2/invokeai/backend/model_manager/util/model_util.py +62 -6
  145. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/model_manager/util/select_hf_files.py +66 -34
  146. InvokeAI-3.7.0/invokeai/backend/model_management/lora.py → InvokeAI-4.0.0rc2/invokeai/backend/model_patcher.py +49 -129
  147. InvokeAI-4.0.0rc2/invokeai/backend/onnx/onnx_runtime.py +218 -0
  148. InvokeAI-4.0.0rc2/invokeai/backend/raw_model.py +15 -0
  149. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/stable_diffusion/__init__.py +9 -1
  150. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/stable_diffusion/diffusers_pipeline.py +25 -57
  151. InvokeAI-4.0.0rc2/invokeai/backend/stable_diffusion/diffusion/__init__.py +5 -0
  152. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/stable_diffusion/diffusion/conditioning_data.py +5 -17
  153. InvokeAI-4.0.0rc2/invokeai/backend/stable_diffusion/diffusion/cross_attention_control.py +218 -0
  154. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/stable_diffusion/diffusion/shared_invokeai_diffusion.py +80 -272
  155. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/stable_diffusion/schedulers/__init__.py +2 -0
  156. {InvokeAI-3.7.0/invokeai/backend/model_management → InvokeAI-4.0.0rc2/invokeai/backend/stable_diffusion}/seamless.py +2 -1
  157. InvokeAI-4.0.0rc2/invokeai/backend/textual_inversion.py +100 -0
  158. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/tiles/tiles.py +1 -1
  159. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/training/__init__.py +1 -0
  160. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/training/textual_inversion_training.py +4 -4
  161. InvokeAI-4.0.0rc2/invokeai/backend/util/__init__.py +34 -0
  162. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/util/attention.py +1 -0
  163. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/util/devices.py +19 -6
  164. InvokeAI-4.0.0rc2/invokeai/backend/util/silence_warnings.py +29 -0
  165. InvokeAI-4.0.0rc2/invokeai/backend/util/test_utils.py +63 -0
  166. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/util/util.py +27 -8
  167. InvokeAI-3.7.0/invokeai/configs/INITIAL_MODELS2.yaml → InvokeAI-4.0.0rc2/invokeai/configs/INITIAL_MODELS.yaml +1 -1
  168. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/CLI/__init__.py +1 -0
  169. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/install/invokeai_configure.py +1 -0
  170. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/install/invokeai_update.py +1 -0
  171. InvokeAI-3.7.0/invokeai/frontend/install/model_install2.py → InvokeAI-4.0.0rc2/invokeai/frontend/install/model_install.py +12 -9
  172. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/install/widgets.py +12 -0
  173. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/merge/__init__.py +1 -0
  174. InvokeAI-3.7.0/invokeai/frontend/merge/merge_diffusers2.py → InvokeAI-4.0.0rc2/invokeai/frontend/merge/merge_diffusers.py +56 -44
  175. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/training/__init__.py +1 -0
  176. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/training/textual_inversion.py +2 -3
  177. InvokeAI-4.0.0rc2/invokeai/frontend/web/dist/assets/App-DvDxXs2J.js +128 -0
  178. InvokeAI-4.0.0rc2/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-D652FVM6.css +9 -0
  179. InvokeAI-4.0.0rc2/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-DHi38vMA.js +1 -0
  180. InvokeAI-4.0.0rc2/invokeai/frontend/web/dist/assets/index-DALs_7tf.js +514 -0
  181. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/web/dist/index.html +1 -1
  182. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/web/dist/locales/de.json +123 -46
  183. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/web/dist/locales/en.json +235 -500
  184. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/web/dist/locales/es.json +0 -2
  185. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/web/dist/locales/it.json +250 -65
  186. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/web/dist/locales/ko.json +0 -2
  187. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/web/dist/locales/nl.json +2 -28
  188. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/web/dist/locales/ru.json +157 -66
  189. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/web/dist/locales/tr.json +0 -4
  190. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/web/dist/locales/zh_CN.json +2 -28
  191. InvokeAI-4.0.0rc2/invokeai/frontend/web/scripts/clean_translations.py +88 -0
  192. InvokeAI-4.0.0rc2/invokeai/invocation_api/__init__.py +179 -0
  193. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/version/__init__.py +1 -0
  194. InvokeAI-4.0.0rc2/invokeai/version/invokeai_version.py +1 -0
  195. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/pyproject.toml +54 -14
  196. InvokeAI-3.7.0/invokeai/app/api/routers/model_records.py +0 -472
  197. InvokeAI-3.7.0/invokeai/app/api/routers/models.py +0 -427
  198. InvokeAI-3.7.0/invokeai/app/api/routers/sessions.py +0 -276
  199. InvokeAI-3.7.0/invokeai/app/invocations/cv.py +0 -51
  200. InvokeAI-3.7.0/invokeai/app/invocations/model.py +0 -493
  201. InvokeAI-3.7.0/invokeai/app/invocations/onnx.py +0 -508
  202. InvokeAI-3.7.0/invokeai/app/invocations/sdxl.py +0 -188
  203. InvokeAI-3.7.0/invokeai/app/services/invocation_processor/invocation_processor_base.py +0 -5
  204. InvokeAI-3.7.0/invokeai/app/services/invocation_processor/invocation_processor_default.py +0 -237
  205. InvokeAI-3.7.0/invokeai/app/services/invocation_queue/invocation_queue_base.py +0 -26
  206. InvokeAI-3.7.0/invokeai/app/services/invocation_queue/invocation_queue_common.py +0 -23
  207. InvokeAI-3.7.0/invokeai/app/services/invocation_queue/invocation_queue_memory.py +0 -44
  208. InvokeAI-3.7.0/invokeai/app/services/invoker.py +0 -89
  209. InvokeAI-3.7.0/invokeai/app/services/latents_storage/latents_storage_base.py +0 -45
  210. InvokeAI-3.7.0/invokeai/app/services/latents_storage/latents_storage_disk.py +0 -58
  211. InvokeAI-3.7.0/invokeai/app/services/latents_storage/latents_storage_forward_cache.py +0 -68
  212. InvokeAI-3.7.0/invokeai/app/services/model_manager/__init__.py +0 -1
  213. InvokeAI-3.7.0/invokeai/app/services/model_manager/model_manager_base.py +0 -286
  214. InvokeAI-3.7.0/invokeai/app/services/model_manager/model_manager_default.py +0 -413
  215. InvokeAI-3.7.0/invokeai/app/services/session_processor/session_processor_common.py +0 -6
  216. InvokeAI-3.7.0/invokeai/app/services/session_processor/session_processor_default.py +0 -141
  217. InvokeAI-3.7.0/invokeai/app/services/shared/default_graphs.py +0 -92
  218. InvokeAI-3.7.0/invokeai/app/services/shared/sqlite_migrator/migrations/util/migrate_yaml_config_1.py +0 -151
  219. InvokeAI-3.7.0/invokeai/app/shared/fields.py +0 -67
  220. InvokeAI-3.7.0/invokeai/app/util/metadata.py +0 -55
  221. InvokeAI-3.7.0/invokeai/app/util/ti_utils.py +0 -8
  222. InvokeAI-3.7.0/invokeai/backend/__init__.py +0 -5
  223. InvokeAI-3.7.0/invokeai/backend/install/migrate_to_3.py +0 -591
  224. InvokeAI-3.7.0/invokeai/backend/install/model_install_backend.py +0 -637
  225. InvokeAI-3.7.0/invokeai/backend/model_management/__init__.py +0 -20
  226. InvokeAI-3.7.0/invokeai/backend/model_management/detect_baked_in_vae.py +0 -31
  227. InvokeAI-3.7.0/invokeai/backend/model_management/model_cache.py +0 -553
  228. InvokeAI-3.7.0/invokeai/backend/model_management/model_manager.py +0 -1121
  229. InvokeAI-3.7.0/invokeai/backend/model_management/model_merge.py +0 -140
  230. InvokeAI-3.7.0/invokeai/backend/model_management/model_probe.py +0 -664
  231. InvokeAI-3.7.0/invokeai/backend/model_management/model_search.py +0 -112
  232. InvokeAI-3.7.0/invokeai/backend/model_management/models/__init__.py +0 -167
  233. InvokeAI-3.7.0/invokeai/backend/model_management/models/base.py +0 -681
  234. InvokeAI-3.7.0/invokeai/backend/model_management/models/clip_vision.py +0 -82
  235. InvokeAI-3.7.0/invokeai/backend/model_management/models/controlnet.py +0 -163
  236. InvokeAI-3.7.0/invokeai/backend/model_management/models/ip_adapter.py +0 -98
  237. InvokeAI-3.7.0/invokeai/backend/model_management/models/sdxl.py +0 -148
  238. InvokeAI-3.7.0/invokeai/backend/model_management/models/stable_diffusion.py +0 -337
  239. InvokeAI-3.7.0/invokeai/backend/model_management/models/stable_diffusion_onnx.py +0 -150
  240. InvokeAI-3.7.0/invokeai/backend/model_management/models/t2i_adapter.py +0 -102
  241. InvokeAI-3.7.0/invokeai/backend/model_management/models/textual_inversion.py +0 -87
  242. InvokeAI-3.7.0/invokeai/backend/model_management/models/vae.py +0 -179
  243. InvokeAI-3.7.0/invokeai/backend/model_manager/__init__.py +0 -31
  244. InvokeAI-3.7.0/invokeai/backend/model_manager/config.py +0 -332
  245. InvokeAI-3.7.0/invokeai/backend/model_manager/hash.py +0 -66
  246. InvokeAI-3.7.0/invokeai/backend/model_manager/metadata/fetch/__init__.py +0 -21
  247. InvokeAI-3.7.0/invokeai/backend/model_manager/metadata/fetch/civitai.py +0 -189
  248. InvokeAI-3.7.0/invokeai/backend/model_manager/metadata/metadata_store.py +0 -221
  249. InvokeAI-3.7.0/invokeai/backend/model_manager/search.py +0 -190
  250. InvokeAI-3.7.0/invokeai/backend/stable_diffusion/diffusion/__init__.py +0 -6
  251. InvokeAI-3.7.0/invokeai/backend/stable_diffusion/diffusion/cross_attention_control.py +0 -669
  252. InvokeAI-3.7.0/invokeai/backend/stable_diffusion/diffusion/cross_attention_map_saving.py +0 -100
  253. InvokeAI-3.7.0/invokeai/backend/util/__init__.py +0 -17
  254. InvokeAI-3.7.0/invokeai/backend/util/test_utils.py +0 -67
  255. InvokeAI-3.7.0/invokeai/configs/INITIAL_MODELS.yaml +0 -153
  256. InvokeAI-3.7.0/invokeai/configs/models.yaml.example +0 -47
  257. InvokeAI-3.7.0/invokeai/frontend/install/model_install.py +0 -845
  258. InvokeAI-3.7.0/invokeai/frontend/merge/merge_diffusers.py +0 -401
  259. InvokeAI-3.7.0/invokeai/frontend/training/textual_inversion2.py +0 -454
  260. InvokeAI-3.7.0/invokeai/frontend/web/dist/assets/App-bX_N2fq4.js +0 -128
  261. InvokeAI-3.7.0/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-LDFeQ-Xr.css +0 -9
  262. InvokeAI-3.7.0/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-zQsWeS5D.js +0 -1
  263. InvokeAI-3.7.0/invokeai/frontend/web/dist/assets/index-5973AuZK.js +0 -502
  264. InvokeAI-3.7.0/invokeai/version/invokeai_version.py +0 -1
  265. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/InvokeAI.egg-info/dependency_links.txt +0 -0
  266. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/InvokeAI.egg-info/top_level.txt +0 -0
  267. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/LICENSE +0 -0
  268. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/LICENSE-SD1+SD2.txt +0 -0
  269. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/LICENSE-SDXL.txt +0 -0
  270. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/README.md +0 -0
  271. {InvokeAI-3.7.0/invokeai/app/services → InvokeAI-4.0.0rc2/invokeai/app}/__init__.py +0 -0
  272. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/api/events.py +0 -0
  273. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/api/no_cache_staticfiles.py +0 -0
  274. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/api/routers/app_info.py +0 -0
  275. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/api/routers/board_images.py +0 -0
  276. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/api/routers/boards.py +0 -0
  277. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/api/routers/session_queue.py +0 -0
  278. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/api/routers/utilities.py +0 -0
  279. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/api/routers/workflows.py +0 -0
  280. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/assets/images/caution.png +0 -0
  281. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/invocations/__init__.py +0 -0
  282. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/invocations/custom_nodes/README.md +0 -0
  283. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/invocations/custom_nodes/init.py +0 -0
  284. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/invocations/util.py +0 -0
  285. {InvokeAI-3.7.0/invokeai/app/services/board_image_records → InvokeAI-4.0.0rc2/invokeai/app/services}/__init__.py +0 -0
  286. {InvokeAI-3.7.0/invokeai/app/services/board_images → InvokeAI-4.0.0rc2/invokeai/app/services/board_image_records}/__init__.py +0 -0
  287. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/board_image_records/board_image_records_base.py +0 -0
  288. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/board_image_records/board_image_records_sqlite.py +0 -0
  289. {InvokeAI-3.7.0/invokeai/app/services/boards → InvokeAI-4.0.0rc2/invokeai/app/services/board_images}/__init__.py +0 -0
  290. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/board_images/board_images_base.py +0 -0
  291. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/board_images/board_images_common.py +0 -0
  292. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/board_images/board_images_default.py +0 -0
  293. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/board_records/board_records_base.py +0 -0
  294. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/board_records/board_records_common.py +0 -0
  295. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/board_records/board_records_sqlite.py +0 -0
  296. {InvokeAI-3.7.0/invokeai/app/services/image_files → InvokeAI-4.0.0rc2/invokeai/app/services/boards}/__init__.py +0 -0
  297. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/boards/boards_base.py +0 -0
  298. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/boards/boards_common.py +0 -0
  299. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/boards/boards_default.py +0 -0
  300. {InvokeAI-3.7.0/invokeai/app/services/image_records → InvokeAI-4.0.0rc2/invokeai/app/services/bulk_download}/__init__.py +0 -0
  301. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/config/__init__.py +0 -0
  302. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/events/__init__.py +0 -0
  303. {InvokeAI-3.7.0/invokeai/app/services/images → InvokeAI-4.0.0rc2/invokeai/app/services/image_files}/__init__.py +0 -0
  304. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/image_files/image_files_common.py +0 -0
  305. {InvokeAI-3.7.0/invokeai/app/services/invocation_cache → InvokeAI-4.0.0rc2/invokeai/app/services/image_records}/__init__.py +0 -0
  306. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/image_records/image_records_common.py +0 -0
  307. {InvokeAI-3.7.0/invokeai/app/services/invocation_processor → InvokeAI-4.0.0rc2/invokeai/app/services/images}/__init__.py +0 -0
  308. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/images/images_common.py +0 -0
  309. {InvokeAI-3.7.0/invokeai/app/services/invocation_queue → InvokeAI-4.0.0rc2/invokeai/app/services/invocation_cache}/__init__.py +0 -0
  310. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/invocation_cache/invocation_cache_common.py +0 -0
  311. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/invocation_stats/__init__.py +0 -0
  312. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/invocation_stats/invocation_stats_common.py +0 -0
  313. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/item_storage/__init__.py +0 -0
  314. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/item_storage/item_storage_common.py +0 -0
  315. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/item_storage/item_storage_memory.py +0 -0
  316. /InvokeAI-3.7.0/invokeai/app/services/latents_storage/__init__.py → /InvokeAI-4.0.0rc2/invokeai/app/services/model_manager/model_manager_common.py +0 -0
  317. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/names/__init__.py +0 -0
  318. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/names/names_base.py +0 -0
  319. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/names/names_common.py +0 -0
  320. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/names/names_default.py +0 -0
  321. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/session_processor/__init__.py +0 -0
  322. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/session_processor/session_processor_base.py +0 -0
  323. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/session_queue/__init__.py +0 -0
  324. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/session_queue/session_queue_base.py +0 -0
  325. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/session_queue/session_queue_common.py +0 -0
  326. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/shared/__init__.py +0 -0
  327. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/shared/pagination.py +0 -0
  328. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/shared/sqlite/__init__.py +0 -0
  329. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/shared/sqlite/sqlite_common.py +0 -0
  330. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/shared/sqlite/sqlite_database.py +0 -0
  331. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/shared/sqlite_migrator/__init__.py +0 -0
  332. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/shared/sqlite_migrator/migrations/__init__.py +0 -0
  333. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_1.py +0 -0
  334. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_2.py +0 -0
  335. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_4.py +0 -0
  336. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_5.py +0 -0
  337. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/shared/sqlite_migrator/sqlite_migrator_impl.py +0 -0
  338. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/urls/__init__.py +0 -0
  339. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/workflow_records/__init__.py +0 -0
  340. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/workflow_records/default_workflows/ESRGAN Upscaling with Canny ControlNet.json +0 -0
  341. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/workflow_records/default_workflows/Face Detailer with IP-Adapter & Canny (See Note in Details).json +0 -0
  342. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/workflow_records/default_workflows/Multi ControlNet (Canny & Depth).json +0 -0
  343. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/workflow_records/default_workflows/Prompt from File.json +0 -0
  344. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/workflow_records/default_workflows/SDXL Text to Image.json +0 -0
  345. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/workflow_records/default_workflows/Text to Image - SD1.5.json +0 -0
  346. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/workflow_records/default_workflows/Text to Image with LoRA.json +0 -0
  347. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/workflow_records/default_workflows/Tiled Upscaling (Beta).json +0 -0
  348. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/workflow_records/workflow_records_base.py +0 -0
  349. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/workflow_records/workflow_records_common.py +0 -0
  350. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/services/workflow_records/workflow_records_sqlite.py +0 -0
  351. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/shared/__init__.py +0 -0
  352. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/util/__init__.py +0 -0
  353. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/util/controlnet_utils.py +0 -0
  354. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/util/metaenum.py +0 -0
  355. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/util/model_exclude_null.py +0 -0
  356. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/util/profiler.py +0 -0
  357. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/app/util/thumbnails.py +0 -0
  358. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/assets/fonts/inter/Inter-Regular.ttf +0 -0
  359. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/image_util/basicsr/__init__.py +0 -0
  360. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/image_util/basicsr/arch_util.py +0 -0
  361. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/image_util/basicsr/rrdbnet_arch.py +0 -0
  362. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/image_util/cv2_inpaint.py +0 -0
  363. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/image_util/depth_anything/model/blocks.py +0 -0
  364. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/image_util/depth_anything/model/dpt.py +0 -0
  365. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/image_util/depth_anything/utilities/util.py +0 -0
  366. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/image_util/dw_openpose/__init__.py +0 -0
  367. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/image_util/dw_openpose/onnxdet.py +0 -0
  368. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/image_util/dw_openpose/onnxpose.py +0 -0
  369. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/image_util/dw_openpose/utils.py +0 -0
  370. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/image_util/dw_openpose/wholebody.py +0 -0
  371. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/image_util/invoke_metadata.py +0 -0
  372. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/image_util/lama.py +0 -0
  373. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/image_util/realesrgan/__init__.py +0 -0
  374. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/image_util/realesrgan/realesrgan.py +0 -0
  375. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/image_util/seamless.py +0 -0
  376. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/image_util/txt2mask.py +0 -0
  377. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/image_util/util.py +0 -0
  378. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/install/__init__.py +0 -0
  379. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/install/legacy_arg_parsing.py +0 -0
  380. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/ip_adapter/__init__.py +0 -0
  381. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/ip_adapter/attention_processor.py +0 -0
  382. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/ip_adapter/ip_attention_weights.py +0 -0
  383. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/ip_adapter/resampler.py +0 -0
  384. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/ip_adapter/unet_patcher.py +0 -0
  385. {InvokeAI-3.7.0/invokeai/backend/model_management → InvokeAI-4.0.0rc2/invokeai/backend/model_manager}/libc_util.py +0 -0
  386. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/stable_diffusion/schedulers/schedulers.py +0 -0
  387. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/tiles/__init__.py +0 -0
  388. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/tiles/utils.py +0 -0
  389. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/util/db_maintenance.py +0 -0
  390. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/util/hotfixes.py +0 -0
  391. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/util/log.py +0 -0
  392. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/util/logging.py +0 -0
  393. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/backend/util/mps_fixes.py +0 -0
  394. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/configs/controlnet/cldm_v15.yaml +0 -0
  395. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/configs/controlnet/cldm_v21.yaml +0 -0
  396. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/configs/stable-diffusion/sd_xl_base.yaml +0 -0
  397. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/configs/stable-diffusion/sd_xl_refiner.yaml +0 -0
  398. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/configs/stable-diffusion/v1-finetune.yaml +0 -0
  399. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/configs/stable-diffusion/v1-finetune_style.yaml +0 -0
  400. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/configs/stable-diffusion/v1-inference-v.yaml +0 -0
  401. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/configs/stable-diffusion/v1-inference.yaml +0 -0
  402. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/configs/stable-diffusion/v1-inpainting-inference.yaml +0 -0
  403. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/configs/stable-diffusion/v1-m1-finetune.yaml +0 -0
  404. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/configs/stable-diffusion/v2-inference-v.yaml +0 -0
  405. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/configs/stable-diffusion/v2-inference.yaml +0 -0
  406. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/configs/stable-diffusion/v2-inpainting-inference-v.yaml +0 -0
  407. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/configs/stable-diffusion/v2-inpainting-inference.yaml +0 -0
  408. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/__init__.py +0 -0
  409. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/install/__init__.py +0 -0
  410. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/install/import_images.py +0 -0
  411. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/legacy_launch_invokeai.py +0 -0
  412. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/web/__init__.py +0 -0
  413. /InvokeAI-3.7.0/invokeai/frontend/web/dist/assets/App-yOqAlINK.css → /InvokeAI-4.0.0rc2/invokeai/frontend/web/dist/assets/App-DI6oCUg0.css +0 -0
  414. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/web/dist/assets/images/invoke-avatar-circle.svg +0 -0
  415. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/web/dist/assets/images/invoke-avatar-square.svg +0 -0
  416. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/web/dist/assets/images/invoke-favicon.png +0 -0
  417. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/web/dist/assets/images/invoke-favicon.svg +0 -0
  418. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/web/dist/assets/images/invoke-key-char-lrg.svg +0 -0
  419. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/web/dist/assets/images/invoke-key-char-sml.svg +0 -0
  420. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/web/dist/assets/images/invoke-key-wht-lrg.svg +0 -0
  421. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/web/dist/assets/images/invoke-key-wht-sml.svg +0 -0
  422. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/web/dist/assets/images/invoke-symbol-char-lrg.svg +0 -0
  423. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/web/dist/assets/images/invoke-symbol-char-sml.svg +0 -0
  424. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/web/dist/assets/images/invoke-symbol-wht-lrg.svg +0 -0
  425. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/web/dist/assets/images/invoke-symbol-wht-sml.svg +0 -0
  426. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/web/dist/assets/images/invoke-symbol-ylw-lrg.svg +0 -0
  427. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/web/dist/assets/images/invoke-tag-char-lrg.svg +0 -0
  428. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/web/dist/assets/images/invoke-tag-char-sml.svg +0 -0
  429. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/web/dist/assets/images/invoke-tag-lrg.svg +0 -0
  430. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/web/dist/assets/images/invoke-tag-sml.svg +0 -0
  431. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/web/dist/assets/images/invoke-wordmark-charcoal.svg +0 -0
  432. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/web/dist/assets/images/invoke-wordmark-white.svg +0 -0
  433. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/web/dist/assets/images/mask.svg +0 -0
  434. /InvokeAI-3.7.0/invokeai/frontend/web/dist/assets/inter-cyrillic-ext-wght-normal-yBM_KeYt.woff2 → /InvokeAI-4.0.0rc2/invokeai/frontend/web/dist/assets/inter-cyrillic-ext-wght-normal-DIEz8p5i.woff2 +0 -0
  435. /InvokeAI-3.7.0/invokeai/frontend/web/dist/assets/inter-cyrillic-wght-normal-ZiSV2vHp.woff2 → /InvokeAI-4.0.0rc2/invokeai/frontend/web/dist/assets/inter-cyrillic-wght-normal-BmJJXa8e.woff2 +0 -0
  436. /InvokeAI-3.7.0/invokeai/frontend/web/dist/assets/inter-greek-ext-wght-normal--QGCzYqo.woff2 → /InvokeAI-4.0.0rc2/invokeai/frontend/web/dist/assets/inter-greek-ext-wght-normal-D5AYLNiq.woff2 +0 -0
  437. /InvokeAI-3.7.0/invokeai/frontend/web/dist/assets/inter-greek-wght-normal-8iAzSMjZ.woff2 → /InvokeAI-4.0.0rc2/invokeai/frontend/web/dist/assets/inter-greek-wght-normal-DyIDNIyN.woff2 +0 -0
  438. /InvokeAI-3.7.0/invokeai/frontend/web/dist/assets/inter-latin-ext-wght-normal-jdaSF5G5.woff2 → /InvokeAI-4.0.0rc2/invokeai/frontend/web/dist/assets/inter-latin-ext-wght-normal-CN1pIXkb.woff2 +0 -0
  439. /InvokeAI-3.7.0/invokeai/frontend/web/dist/assets/inter-latin-wght-normal-YFatk6uG.woff2 → /InvokeAI-4.0.0rc2/invokeai/frontend/web/dist/assets/inter-latin-wght-normal-BgVq2Tq4.woff2 +0 -0
  440. /InvokeAI-3.7.0/invokeai/frontend/web/dist/assets/inter-vietnamese-wght-normal-PxkLsD1V.woff2 → /InvokeAI-4.0.0rc2/invokeai/frontend/web/dist/assets/inter-vietnamese-wght-normal-_GQuwPVU.woff2 +0 -0
  441. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/web/dist/locales/ar.json +0 -0
  442. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/web/dist/locales/az.json +0 -0
  443. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/web/dist/locales/fi.json +0 -0
  444. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/web/dist/locales/fr.json +0 -0
  445. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/web/dist/locales/he.json +0 -0
  446. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/web/dist/locales/hu.json +0 -0
  447. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/web/dist/locales/ja.json +0 -0
  448. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/web/dist/locales/mn.json +0 -0
  449. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/web/dist/locales/pl.json +0 -0
  450. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/web/dist/locales/pt.json +0 -0
  451. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/web/dist/locales/pt_BR.json +0 -0
  452. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/web/dist/locales/ro.json +0 -0
  453. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/web/dist/locales/sv.json +0 -0
  454. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/web/dist/locales/uk.json +0 -0
  455. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/web/dist/locales/vi.json +0 -0
  456. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/web/dist/locales/zh_Hant.json +0 -0
  457. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/invokeai/frontend/web/static/docs/invoke-favicon-docs.svg +0 -0
  458. {InvokeAI-3.7.0 → InvokeAI-4.0.0rc2}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: InvokeAI
3
- Version: 3.7.0
3
+ Version: 4.0.0rc2
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
@@ -9,6 +9,7 @@ InvokeAI.egg-info/dependency_links.txt
9
9
  InvokeAI.egg-info/entry_points.txt
10
10
  InvokeAI.egg-info/requires.txt
11
11
  InvokeAI.egg-info/top_level.txt
12
+ invokeai/app/__init__.py
12
13
  invokeai/app/api_app.py
13
14
  invokeai/app/api/dependencies.py
14
15
  invokeai/app/api/events.py
@@ -19,10 +20,8 @@ invokeai/app/api/routers/board_images.py
19
20
  invokeai/app/api/routers/boards.py
20
21
  invokeai/app/api/routers/download_queue.py
21
22
  invokeai/app/api/routers/images.py
22
- invokeai/app/api/routers/model_records.py
23
- invokeai/app/api/routers/models.py
23
+ invokeai/app/api/routers/model_manager.py
24
24
  invokeai/app/api/routers/session_queue.py
25
- invokeai/app/api/routers/sessions.py
26
25
  invokeai/app/api/routers/utilities.py
27
26
  invokeai/app/api/routers/workflows.py
28
27
  invokeai/app/assets/images/caution.png
@@ -30,9 +29,11 @@ invokeai/app/invocations/__init__.py
30
29
  invokeai/app/invocations/baseinvocation.py
31
30
  invokeai/app/invocations/collections.py
32
31
  invokeai/app/invocations/compel.py
32
+ invokeai/app/invocations/constants.py
33
33
  invokeai/app/invocations/controlnet_image_processors.py
34
34
  invokeai/app/invocations/cv.py
35
35
  invokeai/app/invocations/facetools.py
36
+ invokeai/app/invocations/fields.py
36
37
  invokeai/app/invocations/image.py
37
38
  invokeai/app/invocations/infill.py
38
39
  invokeai/app/invocations/ip_adapter.py
@@ -41,7 +42,6 @@ invokeai/app/invocations/math.py
41
42
  invokeai/app/invocations/metadata.py
42
43
  invokeai/app/invocations/model.py
43
44
  invokeai/app/invocations/noise.py
44
- invokeai/app/invocations/onnx.py
45
45
  invokeai/app/invocations/param_easing.py
46
46
  invokeai/app/invocations/primitives.py
47
47
  invokeai/app/invocations/prompt.py
@@ -70,6 +70,10 @@ invokeai/app/services/boards/__init__.py
70
70
  invokeai/app/services/boards/boards_base.py
71
71
  invokeai/app/services/boards/boards_common.py
72
72
  invokeai/app/services/boards/boards_default.py
73
+ invokeai/app/services/bulk_download/__init__.py
74
+ invokeai/app/services/bulk_download/bulk_download_base.py
75
+ invokeai/app/services/bulk_download/bulk_download_common.py
76
+ invokeai/app/services/bulk_download/bulk_download_default.py
73
77
  invokeai/app/services/config/__init__.py
74
78
  invokeai/app/services/config/config_base.py
75
79
  invokeai/app/services/config/config_common.py
@@ -95,14 +99,6 @@ invokeai/app/services/invocation_cache/__init__.py
95
99
  invokeai/app/services/invocation_cache/invocation_cache_base.py
96
100
  invokeai/app/services/invocation_cache/invocation_cache_common.py
97
101
  invokeai/app/services/invocation_cache/invocation_cache_memory.py
98
- invokeai/app/services/invocation_processor/__init__.py
99
- invokeai/app/services/invocation_processor/invocation_processor_base.py
100
- invokeai/app/services/invocation_processor/invocation_processor_common.py
101
- invokeai/app/services/invocation_processor/invocation_processor_default.py
102
- invokeai/app/services/invocation_queue/__init__.py
103
- invokeai/app/services/invocation_queue/invocation_queue_base.py
104
- invokeai/app/services/invocation_queue/invocation_queue_common.py
105
- invokeai/app/services/invocation_queue/invocation_queue_memory.py
106
102
  invokeai/app/services/invocation_stats/__init__.py
107
103
  invokeai/app/services/invocation_stats/invocation_stats_base.py
108
104
  invokeai/app/services/invocation_stats/invocation_stats_common.py
@@ -111,15 +107,18 @@ invokeai/app/services/item_storage/__init__.py
111
107
  invokeai/app/services/item_storage/item_storage_base.py
112
108
  invokeai/app/services/item_storage/item_storage_common.py
113
109
  invokeai/app/services/item_storage/item_storage_memory.py
114
- invokeai/app/services/latents_storage/__init__.py
115
- invokeai/app/services/latents_storage/latents_storage_base.py
116
- invokeai/app/services/latents_storage/latents_storage_disk.py
117
- invokeai/app/services/latents_storage/latents_storage_forward_cache.py
110
+ invokeai/app/services/model_images/model_images_base.py
111
+ invokeai/app/services/model_images/model_images_common.py
112
+ invokeai/app/services/model_images/model_images_default.py
118
113
  invokeai/app/services/model_install/__init__.py
119
114
  invokeai/app/services/model_install/model_install_base.py
120
115
  invokeai/app/services/model_install/model_install_default.py
116
+ invokeai/app/services/model_load/__init__.py
117
+ invokeai/app/services/model_load/model_load_base.py
118
+ invokeai/app/services/model_load/model_load_default.py
121
119
  invokeai/app/services/model_manager/__init__.py
122
120
  invokeai/app/services/model_manager/model_manager_base.py
121
+ invokeai/app/services/model_manager/model_manager_common.py
123
122
  invokeai/app/services/model_manager/model_manager_default.py
124
123
  invokeai/app/services/model_records/__init__.py
125
124
  invokeai/app/services/model_records/model_records_base.py
@@ -128,6 +127,10 @@ invokeai/app/services/names/__init__.py
128
127
  invokeai/app/services/names/names_base.py
129
128
  invokeai/app/services/names/names_common.py
130
129
  invokeai/app/services/names/names_default.py
130
+ invokeai/app/services/object_serializer/object_serializer_base.py
131
+ invokeai/app/services/object_serializer/object_serializer_common.py
132
+ invokeai/app/services/object_serializer/object_serializer_disk.py
133
+ invokeai/app/services/object_serializer/object_serializer_forward_cache.py
131
134
  invokeai/app/services/session_processor/__init__.py
132
135
  invokeai/app/services/session_processor/session_processor_base.py
133
136
  invokeai/app/services/session_processor/session_processor_common.py
@@ -137,8 +140,8 @@ invokeai/app/services/session_queue/session_queue_base.py
137
140
  invokeai/app/services/session_queue/session_queue_common.py
138
141
  invokeai/app/services/session_queue/session_queue_sqlite.py
139
142
  invokeai/app/services/shared/__init__.py
140
- invokeai/app/services/shared/default_graphs.py
141
143
  invokeai/app/services/shared/graph.py
144
+ invokeai/app/services/shared/invocation_context.py
142
145
  invokeai/app/services/shared/pagination.py
143
146
  invokeai/app/services/shared/sqlite/__init__.py
144
147
  invokeai/app/services/shared/sqlite/sqlite_common.py
@@ -153,7 +156,8 @@ invokeai/app/services/shared/sqlite_migrator/migrations/migration_2.py
153
156
  invokeai/app/services/shared/sqlite_migrator/migrations/migration_3.py
154
157
  invokeai/app/services/shared/sqlite_migrator/migrations/migration_4.py
155
158
  invokeai/app/services/shared/sqlite_migrator/migrations/migration_5.py
156
- invokeai/app/services/shared/sqlite_migrator/migrations/util/migrate_yaml_config_1.py
159
+ invokeai/app/services/shared/sqlite_migrator/migrations/migration_6.py
160
+ invokeai/app/services/shared/sqlite_migrator/migrations/migration_7.py
157
161
  invokeai/app/services/urls/__init__.py
158
162
  invokeai/app/services/urls/urls_base.py
159
163
  invokeai/app/services/urls/urls_default.py
@@ -170,11 +174,9 @@ invokeai/app/services/workflow_records/default_workflows/Text to Image - SD1.5.j
170
174
  invokeai/app/services/workflow_records/default_workflows/Text to Image with LoRA.json
171
175
  invokeai/app/services/workflow_records/default_workflows/Tiled Upscaling (Beta).json
172
176
  invokeai/app/shared/__init__.py
173
- invokeai/app/shared/fields.py
174
177
  invokeai/app/shared/models.py
175
178
  invokeai/app/util/__init__.py
176
179
  invokeai/app/util/controlnet_utils.py
177
- invokeai/app/util/metadata.py
178
180
  invokeai/app/util/metaenum.py
179
181
  invokeai/app/util/misc.py
180
182
  invokeai/app/util/model_exclude_null.py
@@ -184,6 +186,12 @@ invokeai/app/util/thumbnails.py
184
186
  invokeai/app/util/ti_utils.py
185
187
  invokeai/assets/fonts/inter/Inter-Regular.ttf
186
188
  invokeai/backend/__init__.py
189
+ invokeai/backend/lora.py
190
+ invokeai/backend/model_patcher.py
191
+ invokeai/backend/raw_model.py
192
+ invokeai/backend/textual_inversion.py
193
+ invokeai/backend/embeddings/__init__.py
194
+ invokeai/backend/embeddings/embedding_base.py
187
195
  invokeai/backend/image_util/__init__.py
188
196
  invokeai/backend/image_util/cv2_inpaint.py
189
197
  invokeai/backend/image_util/invisible_watermark.py
@@ -214,60 +222,58 @@ invokeai/backend/install/check_root.py
214
222
  invokeai/backend/install/install_helper.py
215
223
  invokeai/backend/install/invokeai_configure.py
216
224
  invokeai/backend/install/legacy_arg_parsing.py
217
- invokeai/backend/install/migrate_to_3.py
218
- invokeai/backend/install/model_install_backend.py
219
225
  invokeai/backend/ip_adapter/__init__.py
220
226
  invokeai/backend/ip_adapter/attention_processor.py
221
227
  invokeai/backend/ip_adapter/ip_adapter.py
222
228
  invokeai/backend/ip_adapter/ip_attention_weights.py
223
229
  invokeai/backend/ip_adapter/resampler.py
224
230
  invokeai/backend/ip_adapter/unet_patcher.py
225
- invokeai/backend/model_management/__init__.py
226
- invokeai/backend/model_management/convert_ckpt_to_diffusers.py
227
- invokeai/backend/model_management/detect_baked_in_vae.py
228
- invokeai/backend/model_management/libc_util.py
229
- invokeai/backend/model_management/lora.py
230
- invokeai/backend/model_management/memory_snapshot.py
231
- invokeai/backend/model_management/model_cache.py
232
- invokeai/backend/model_management/model_load_optimizations.py
233
- invokeai/backend/model_management/model_manager.py
234
- invokeai/backend/model_management/model_merge.py
235
- invokeai/backend/model_management/model_probe.py
236
- invokeai/backend/model_management/model_search.py
237
- invokeai/backend/model_management/seamless.py
238
- invokeai/backend/model_management/util.py
239
- invokeai/backend/model_management/models/__init__.py
240
- invokeai/backend/model_management/models/base.py
241
- invokeai/backend/model_management/models/clip_vision.py
242
- invokeai/backend/model_management/models/controlnet.py
243
- invokeai/backend/model_management/models/ip_adapter.py
244
- invokeai/backend/model_management/models/lora.py
245
- invokeai/backend/model_management/models/sdxl.py
246
- invokeai/backend/model_management/models/stable_diffusion.py
247
- invokeai/backend/model_management/models/stable_diffusion_onnx.py
248
- invokeai/backend/model_management/models/t2i_adapter.py
249
- invokeai/backend/model_management/models/textual_inversion.py
250
- invokeai/backend/model_management/models/vae.py
231
+ invokeai/backend/model_hash/model_hash.py
251
232
  invokeai/backend/model_manager/__init__.py
252
233
  invokeai/backend/model_manager/config.py
253
- invokeai/backend/model_manager/hash.py
234
+ invokeai/backend/model_manager/convert_ckpt_to_diffusers.py
235
+ invokeai/backend/model_manager/libc_util.py
254
236
  invokeai/backend/model_manager/merge.py
255
237
  invokeai/backend/model_manager/probe.py
256
238
  invokeai/backend/model_manager/search.py
239
+ invokeai/backend/model_manager/load/__init__.py
240
+ invokeai/backend/model_manager/load/load_base.py
241
+ invokeai/backend/model_manager/load/load_default.py
242
+ invokeai/backend/model_manager/load/memory_snapshot.py
243
+ invokeai/backend/model_manager/load/model_loader_registry.py
244
+ invokeai/backend/model_manager/load/model_util.py
245
+ invokeai/backend/model_manager/load/optimizations.py
246
+ invokeai/backend/model_manager/load/convert_cache/__init__.py
247
+ invokeai/backend/model_manager/load/convert_cache/convert_cache_base.py
248
+ invokeai/backend/model_manager/load/convert_cache/convert_cache_default.py
249
+ invokeai/backend/model_manager/load/model_cache/__init__.py
250
+ invokeai/backend/model_manager/load/model_cache/model_cache_base.py
251
+ invokeai/backend/model_manager/load/model_cache/model_cache_default.py
252
+ invokeai/backend/model_manager/load/model_cache/model_locker.py
253
+ invokeai/backend/model_manager/load/model_loaders/__init__.py
254
+ invokeai/backend/model_manager/load/model_loaders/controlnet.py
255
+ invokeai/backend/model_manager/load/model_loaders/generic_diffusers.py
256
+ invokeai/backend/model_manager/load/model_loaders/ip_adapter.py
257
+ invokeai/backend/model_manager/load/model_loaders/lora.py
258
+ invokeai/backend/model_manager/load/model_loaders/onnx.py
259
+ invokeai/backend/model_manager/load/model_loaders/stable_diffusion.py
260
+ invokeai/backend/model_manager/load/model_loaders/textual_inversion.py
261
+ invokeai/backend/model_manager/load/model_loaders/vae.py
257
262
  invokeai/backend/model_manager/metadata/__init__.py
258
263
  invokeai/backend/model_manager/metadata/metadata_base.py
259
- invokeai/backend/model_manager/metadata/metadata_store.py
260
264
  invokeai/backend/model_manager/metadata/fetch/__init__.py
261
- invokeai/backend/model_manager/metadata/fetch/civitai.py
262
265
  invokeai/backend/model_manager/metadata/fetch/fetch_base.py
263
266
  invokeai/backend/model_manager/metadata/fetch/huggingface.py
267
+ invokeai/backend/model_manager/util/libc_util.py
268
+ invokeai/backend/model_manager/util/model_util.py
264
269
  invokeai/backend/model_manager/util/select_hf_files.py
270
+ invokeai/backend/onnx/onnx_runtime.py
265
271
  invokeai/backend/stable_diffusion/__init__.py
266
272
  invokeai/backend/stable_diffusion/diffusers_pipeline.py
273
+ invokeai/backend/stable_diffusion/seamless.py
267
274
  invokeai/backend/stable_diffusion/diffusion/__init__.py
268
275
  invokeai/backend/stable_diffusion/diffusion/conditioning_data.py
269
276
  invokeai/backend/stable_diffusion/diffusion/cross_attention_control.py
270
- invokeai/backend/stable_diffusion/diffusion/cross_attention_map_saving.py
271
277
  invokeai/backend/stable_diffusion/diffusion/shared_invokeai_diffusion.py
272
278
  invokeai/backend/stable_diffusion/schedulers/__init__.py
273
279
  invokeai/backend/stable_diffusion/schedulers/schedulers.py
@@ -284,11 +290,10 @@ invokeai/backend/util/hotfixes.py
284
290
  invokeai/backend/util/log.py
285
291
  invokeai/backend/util/logging.py
286
292
  invokeai/backend/util/mps_fixes.py
293
+ invokeai/backend/util/silence_warnings.py
287
294
  invokeai/backend/util/test_utils.py
288
295
  invokeai/backend/util/util.py
289
296
  invokeai/configs/INITIAL_MODELS.yaml
290
- invokeai/configs/INITIAL_MODELS2.yaml
291
- invokeai/configs/models.yaml.example
292
297
  invokeai/configs/controlnet/cldm_v15.yaml
293
298
  invokeai/configs/controlnet/cldm_v21.yaml
294
299
  invokeai/configs/stable-diffusion/sd_xl_base.yaml
@@ -311,28 +316,25 @@ invokeai/frontend/install/import_images.py
311
316
  invokeai/frontend/install/invokeai_configure.py
312
317
  invokeai/frontend/install/invokeai_update.py
313
318
  invokeai/frontend/install/model_install.py
314
- invokeai/frontend/install/model_install2.py
315
319
  invokeai/frontend/install/widgets.py
316
320
  invokeai/frontend/merge/__init__.py
317
321
  invokeai/frontend/merge/merge_diffusers.py
318
- invokeai/frontend/merge/merge_diffusers2.py
319
322
  invokeai/frontend/training/__init__.py
320
323
  invokeai/frontend/training/textual_inversion.py
321
- invokeai/frontend/training/textual_inversion2.py
322
324
  invokeai/frontend/web/__init__.py
323
325
  invokeai/frontend/web/dist/index.html
324
- invokeai/frontend/web/dist/assets/App-bX_N2fq4.js
325
- invokeai/frontend/web/dist/assets/App-yOqAlINK.css
326
- invokeai/frontend/web/dist/assets/ThemeLocaleProvider-LDFeQ-Xr.css
327
- invokeai/frontend/web/dist/assets/ThemeLocaleProvider-zQsWeS5D.js
328
- invokeai/frontend/web/dist/assets/index-5973AuZK.js
329
- invokeai/frontend/web/dist/assets/inter-cyrillic-ext-wght-normal-yBM_KeYt.woff2
330
- invokeai/frontend/web/dist/assets/inter-cyrillic-wght-normal-ZiSV2vHp.woff2
331
- invokeai/frontend/web/dist/assets/inter-greek-ext-wght-normal--QGCzYqo.woff2
332
- invokeai/frontend/web/dist/assets/inter-greek-wght-normal-8iAzSMjZ.woff2
333
- invokeai/frontend/web/dist/assets/inter-latin-ext-wght-normal-jdaSF5G5.woff2
334
- invokeai/frontend/web/dist/assets/inter-latin-wght-normal-YFatk6uG.woff2
335
- invokeai/frontend/web/dist/assets/inter-vietnamese-wght-normal-PxkLsD1V.woff2
326
+ invokeai/frontend/web/dist/assets/App-DI6oCUg0.css
327
+ invokeai/frontend/web/dist/assets/App-DvDxXs2J.js
328
+ invokeai/frontend/web/dist/assets/ThemeLocaleProvider-D652FVM6.css
329
+ invokeai/frontend/web/dist/assets/ThemeLocaleProvider-DHi38vMA.js
330
+ invokeai/frontend/web/dist/assets/index-DALs_7tf.js
331
+ invokeai/frontend/web/dist/assets/inter-cyrillic-ext-wght-normal-DIEz8p5i.woff2
332
+ invokeai/frontend/web/dist/assets/inter-cyrillic-wght-normal-BmJJXa8e.woff2
333
+ invokeai/frontend/web/dist/assets/inter-greek-ext-wght-normal-D5AYLNiq.woff2
334
+ invokeai/frontend/web/dist/assets/inter-greek-wght-normal-DyIDNIyN.woff2
335
+ invokeai/frontend/web/dist/assets/inter-latin-ext-wght-normal-CN1pIXkb.woff2
336
+ invokeai/frontend/web/dist/assets/inter-latin-wght-normal-BgVq2Tq4.woff2
337
+ invokeai/frontend/web/dist/assets/inter-vietnamese-wght-normal-_GQuwPVU.woff2
336
338
  invokeai/frontend/web/dist/assets/images/invoke-avatar-circle.svg
337
339
  invokeai/frontend/web/dist/assets/images/invoke-avatar-square.svg
338
340
  invokeai/frontend/web/dist/assets/images/invoke-favicon.png
@@ -378,6 +380,8 @@ invokeai/frontend/web/dist/locales/uk.json
378
380
  invokeai/frontend/web/dist/locales/vi.json
379
381
  invokeai/frontend/web/dist/locales/zh_CN.json
380
382
  invokeai/frontend/web/dist/locales/zh_Hant.json
383
+ invokeai/frontend/web/scripts/clean_translations.py
381
384
  invokeai/frontend/web/static/docs/invoke-favicon-docs.svg
385
+ invokeai/invocation_api/__init__.py
382
386
  invokeai/version/__init__.py
383
387
  invokeai/version/invokeai_version.py
@@ -3,8 +3,7 @@ configure_invokeai.py = invokeai.frontend.install.invokeai_configure:invokeai_co
3
3
  invokeai-configure = invokeai.frontend.install.invokeai_configure:invokeai_configure
4
4
  invokeai-db-maintenance = invokeai.backend.util.db_maintenance:main
5
5
  invokeai-import-images = invokeai.frontend.install.import_images:main
6
- invokeai-merge = invokeai.frontend.merge:invokeai_merge_diffusers
7
- invokeai-merge2 = invokeai.frontend.merge.merge_diffusers2:main
6
+ invokeai-merge = invokeai.frontend.merge.merge_diffusers:main
8
7
  invokeai-metadata = invokeai.backend.image_util.invoke_metadata:main
9
8
  invokeai-migrate3 = invokeai.backend.install.migrate_to_3:main
10
9
  invokeai-model-install = invokeai.frontend.install.model_install:main
@@ -16,23 +16,24 @@ torch==2.1.2
16
16
  torchmetrics==0.11.4
17
17
  torchsde==0.2.6
18
18
  torchvision==0.16.2
19
- transformers==4.37.2
20
- fastapi-events==0.10.1
21
- fastapi==0.109.2
22
- huggingface-hub==0.20.3
23
- pydantic-settings==2.1.0
24
- pydantic==2.6.1
19
+ transformers==4.38.2
20
+ fastapi-events==0.11.0
21
+ fastapi==0.110.0
22
+ huggingface-hub==0.21.3
23
+ pydantic-settings==2.2.1
24
+ pydantic==2.6.3
25
25
  python-socketio==5.11.1
26
- uvicorn[standard]==0.27.1
26
+ uvicorn[standard]==0.28.0
27
27
  albumentations
28
+ blake3
28
29
  click
29
30
  datasets
31
+ Deprecated
30
32
  dnspython~=2.4.0
31
33
  dynamicprompts
32
34
  easing-functions
33
35
  einops
34
36
  facexlib
35
- imohash
36
37
  matplotlib
37
38
  npyscreen
38
39
  omegaconf
@@ -66,9 +67,10 @@ pipdeptree
66
67
  twine
67
68
 
68
69
  [docs]
69
- mkdocs-material<9.0
70
+ mkdocs-material>=9.5.13
70
71
  mkdocs-git-revision-date-localized-plugin
71
- mkdocs-redirects==1.2.0
72
+ mkdocs-redirects
73
+ mkdocstrings[python]>=0.24.1
72
74
 
73
75
  [onnx]
74
76
  onnxruntime
@@ -80,14 +82,16 @@ onnxruntime-gpu
80
82
  onnxruntime-directml
81
83
 
82
84
  [test]
83
- ruff==0.2.1
85
+ ruff
84
86
  ruff-lsp
85
87
  mypy
86
88
  pre-commit
87
89
  pytest>6.0.0
88
90
  pytest-cov
91
+ pytest-timeout
89
92
  pytest-datadir
90
93
  requests_testadapter
94
+ httpx
91
95
 
92
96
  [xformers]
93
97
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: InvokeAI
3
- Version: 3.7.0
3
+ Version: 4.0.0rc2
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
@@ -2,9 +2,12 @@
2
2
 
3
3
  from logging import Logger
4
4
 
5
- from invokeai.app.services.item_storage.item_storage_memory import ItemStorageMemory
5
+ import torch
6
+
7
+ from invokeai.app.services.object_serializer.object_serializer_disk import ObjectSerializerDisk
8
+ from invokeai.app.services.object_serializer.object_serializer_forward_cache import ObjectSerializerForwardCache
6
9
  from invokeai.app.services.shared.sqlite.sqlite_util import init_db
7
- from invokeai.backend.model_manager.metadata import ModelMetadataStore
10
+ from invokeai.backend.stable_diffusion.diffusion.conditioning_data import ConditioningFieldData
8
11
  from invokeai.backend.util.logging import InvokeAILogger
9
12
  from invokeai.version.invokeai_version import __version__
10
13
 
@@ -12,26 +15,22 @@ from ..services.board_image_records.board_image_records_sqlite import SqliteBoar
12
15
  from ..services.board_images.board_images_default import BoardImagesService
13
16
  from ..services.board_records.board_records_sqlite import SqliteBoardRecordStorage
14
17
  from ..services.boards.boards_default import BoardService
18
+ from ..services.bulk_download.bulk_download_default import BulkDownloadService
15
19
  from ..services.config import InvokeAIAppConfig
16
20
  from ..services.download import DownloadQueueService
17
21
  from ..services.image_files.image_files_disk import DiskImageFileStorage
18
22
  from ..services.image_records.image_records_sqlite import SqliteImageRecordStorage
19
23
  from ..services.images.images_default import ImageService
20
24
  from ..services.invocation_cache.invocation_cache_memory import MemoryInvocationCache
21
- from ..services.invocation_processor.invocation_processor_default import DefaultInvocationProcessor
22
- from ..services.invocation_queue.invocation_queue_memory import MemoryInvocationQueue
23
25
  from ..services.invocation_services import InvocationServices
24
26
  from ..services.invocation_stats.invocation_stats_default import InvocationStatsService
25
27
  from ..services.invoker import Invoker
26
- from ..services.latents_storage.latents_storage_disk import DiskLatentsStorage
27
- from ..services.latents_storage.latents_storage_forward_cache import ForwardCacheLatentsStorage
28
- from ..services.model_install import ModelInstallService
28
+ from ..services.model_images.model_images_default import ModelImageFileStorageDisk
29
29
  from ..services.model_manager.model_manager_default import ModelManagerService
30
30
  from ..services.model_records import ModelRecordServiceSQL
31
31
  from ..services.names.names_default import SimpleNameService
32
32
  from ..services.session_processor.session_processor_default import DefaultSessionProcessor
33
33
  from ..services.session_queue.session_queue_sqlite import SqliteSessionQueue
34
- from ..services.shared.graph import GraphExecutionState
35
34
  from ..services.urls.urls_default import LocalUrlService
36
35
  from ..services.workflow_records.workflow_records_sqlite import SqliteWorkflowRecordsStorage
37
36
  from .events import FastAPIEventService
@@ -68,8 +67,13 @@ class ApiDependencies:
68
67
  logger.debug(f"Internet connectivity is {config.internet_available}")
69
68
 
70
69
  output_folder = config.output_path
70
+ if output_folder is None:
71
+ raise ValueError("Output folder is not set")
72
+
71
73
  image_files = DiskImageFileStorage(f"{output_folder}/images")
72
74
 
75
+ model_images_folder = config.models_path
76
+
73
77
  db = init_db(config=config, logger=logger, image_files=image_files)
74
78
 
75
79
  configuration = config
@@ -80,26 +84,26 @@ class ApiDependencies:
80
84
  board_records = SqliteBoardRecordStorage(db=db)
81
85
  boards = BoardService()
82
86
  events = FastAPIEventService(event_handler_id)
83
- graph_execution_manager = ItemStorageMemory[GraphExecutionState]()
87
+ bulk_download = BulkDownloadService()
84
88
  image_records = SqliteImageRecordStorage(db=db)
85
89
  images = ImageService()
86
90
  invocation_cache = MemoryInvocationCache(max_cache_size=config.node_cache_size)
87
- latents = ForwardCacheLatentsStorage(DiskLatentsStorage(f"{output_folder}/latents"))
88
- model_manager = ModelManagerService(config, logger)
89
- model_record_service = ModelRecordServiceSQL(db=db)
91
+ tensors = ObjectSerializerForwardCache(
92
+ ObjectSerializerDisk[torch.Tensor](output_folder / "tensors", ephemeral=True)
93
+ )
94
+ conditioning = ObjectSerializerForwardCache(
95
+ ObjectSerializerDisk[ConditioningFieldData](output_folder / "conditioning", ephemeral=True)
96
+ )
90
97
  download_queue_service = DownloadQueueService(event_bus=events)
91
- metadata_store = ModelMetadataStore(db=db)
92
- model_install_service = ModelInstallService(
93
- app_config=config,
94
- record_store=model_record_service,
98
+ model_images_service = ModelImageFileStorageDisk(model_images_folder / "model_images")
99
+ model_manager = ModelManagerService.build_model_manager(
100
+ app_config=configuration,
101
+ model_record_service=ModelRecordServiceSQL(db=db),
95
102
  download_queue=download_queue_service,
96
- metadata_store=metadata_store,
97
- event_bus=events,
103
+ events=events,
98
104
  )
99
105
  names = SimpleNameService()
100
106
  performance_statistics = InvocationStatsService()
101
- processor = DefaultInvocationProcessor()
102
- queue = MemoryInvocationQueue()
103
107
  session_processor = DefaultSessionProcessor()
104
108
  session_queue = SqliteSessionQueue(db=db)
105
109
  urls = LocalUrlService()
@@ -110,27 +114,25 @@ class ApiDependencies:
110
114
  board_images=board_images,
111
115
  board_records=board_records,
112
116
  boards=boards,
117
+ bulk_download=bulk_download,
113
118
  configuration=configuration,
114
119
  events=events,
115
- graph_execution_manager=graph_execution_manager,
116
120
  image_files=image_files,
117
121
  image_records=image_records,
118
122
  images=images,
119
123
  invocation_cache=invocation_cache,
120
- latents=latents,
121
124
  logger=logger,
125
+ model_images=model_images_service,
122
126
  model_manager=model_manager,
123
- model_records=model_record_service,
124
127
  download_queue=download_queue_service,
125
- model_install=model_install_service,
126
128
  names=names,
127
129
  performance_statistics=performance_statistics,
128
- processor=processor,
129
- queue=queue,
130
130
  session_processor=session_processor,
131
131
  session_queue=session_queue,
132
132
  urls=urls,
133
133
  workflow_records=workflow_records,
134
+ tensors=tensors,
135
+ conditioning=conditioning,
134
136
  )
135
137
 
136
138
  ApiDependencies.invoker = Invoker(services)
@@ -36,7 +36,7 @@ async def list_downloads() -> List[DownloadJob]:
36
36
  400: {"description": "Bad request"},
37
37
  },
38
38
  )
39
- async def prune_downloads():
39
+ async def prune_downloads() -> Response:
40
40
  """Prune completed and errored jobs."""
41
41
  queue = ApiDependencies.invoker.services.download_queue
42
42
  queue.prune_jobs()
@@ -55,7 +55,7 @@ async def download(
55
55
  ) -> DownloadJob:
56
56
  """Download the source URL to the file or directory indicted in dest."""
57
57
  queue = ApiDependencies.invoker.services.download_queue
58
- return queue.download(source, dest, priority, access_token)
58
+ return queue.download(source, Path(dest), priority, access_token)
59
59
 
60
60
 
61
61
  @download_queue_router.get(
@@ -87,7 +87,7 @@ async def get_download_job(
87
87
  )
88
88
  async def cancel_download_job(
89
89
  id: int = Path(description="ID of the download job to cancel."),
90
- ):
90
+ ) -> Response:
91
91
  """Cancel a download job using its ID."""
92
92
  try:
93
93
  queue = ApiDependencies.invoker.services.download_queue
@@ -105,7 +105,7 @@ async def cancel_download_job(
105
105
  204: {"description": "Download jobs have been cancelled"},
106
106
  },
107
107
  )
108
- async def cancel_all_download_jobs():
108
+ async def cancel_all_download_jobs() -> Response:
109
109
  """Cancel all download jobs."""
110
110
  ApiDependencies.invoker.services.download_queue.cancel_all_jobs()
111
111
  return Response(status_code=204)
@@ -2,13 +2,13 @@ import io
2
2
  import traceback
3
3
  from typing import Optional
4
4
 
5
- from fastapi import Body, HTTPException, Path, Query, Request, Response, UploadFile
5
+ from fastapi import BackgroundTasks, Body, HTTPException, Path, Query, Request, Response, UploadFile
6
6
  from fastapi.responses import FileResponse
7
7
  from fastapi.routing import APIRouter
8
8
  from PIL import Image
9
9
  from pydantic import BaseModel, Field, ValidationError
10
10
 
11
- from invokeai.app.invocations.baseinvocation import MetadataField, MetadataFieldValidator
11
+ from invokeai.app.invocations.fields import MetadataField, MetadataFieldValidator
12
12
  from invokeai.app.services.image_records.image_records_common import ImageCategory, ImageRecordChanges, ResourceOrigin
13
13
  from invokeai.app.services.images.images_common import ImageDTO, ImageUrlsDTO
14
14
  from invokeai.app.services.shared.pagination import OffsetPaginatedResults
@@ -375,16 +375,67 @@ async def unstar_images_in_list(
375
375
 
376
376
  class ImagesDownloaded(BaseModel):
377
377
  response: Optional[str] = Field(
378
- description="If defined, the message to display to the user when images begin downloading"
378
+ default=None, description="The message to display to the user when images begin downloading"
379
+ )
380
+ bulk_download_item_name: Optional[str] = Field(
381
+ default=None, description="The name of the bulk download item for which events will be emitted"
379
382
  )
380
383
 
381
384
 
382
- @images_router.post("/download", operation_id="download_images_from_list", response_model=ImagesDownloaded)
385
+ @images_router.post(
386
+ "/download", operation_id="download_images_from_list", response_model=ImagesDownloaded, status_code=202
387
+ )
383
388
  async def download_images_from_list(
384
- image_names: list[str] = Body(description="The list of names of images to download", embed=True),
389
+ background_tasks: BackgroundTasks,
390
+ image_names: Optional[list[str]] = Body(
391
+ default=None, description="The list of names of images to download", embed=True
392
+ ),
385
393
  board_id: Optional[str] = Body(
386
- default=None, description="The board from which image should be downloaded from", embed=True
394
+ default=None, description="The board from which image should be downloaded", embed=True
387
395
  ),
388
396
  ) -> ImagesDownloaded:
389
- # return ImagesDownloaded(response="Your images are downloading")
390
- raise HTTPException(status_code=501, detail="Endpoint is not yet implemented")
397
+ if (image_names is None or len(image_names) == 0) and board_id is None:
398
+ raise HTTPException(status_code=400, detail="No images or board id specified.")
399
+ bulk_download_item_id: str = ApiDependencies.invoker.services.bulk_download.generate_item_id(board_id)
400
+
401
+ background_tasks.add_task(
402
+ ApiDependencies.invoker.services.bulk_download.handler,
403
+ image_names,
404
+ board_id,
405
+ bulk_download_item_id,
406
+ )
407
+ return ImagesDownloaded(bulk_download_item_name=bulk_download_item_id + ".zip")
408
+
409
+
410
+ @images_router.api_route(
411
+ "/download/{bulk_download_item_name}",
412
+ methods=["GET"],
413
+ operation_id="get_bulk_download_item",
414
+ response_class=Response,
415
+ responses={
416
+ 200: {
417
+ "description": "Return the complete bulk download item",
418
+ "content": {"application/zip": {}},
419
+ },
420
+ 404: {"description": "Image not found"},
421
+ },
422
+ )
423
+ async def get_bulk_download_item(
424
+ background_tasks: BackgroundTasks,
425
+ bulk_download_item_name: str = Path(description="The bulk_download_item_name of the bulk download item to get"),
426
+ ) -> FileResponse:
427
+ """Gets a bulk download zip file"""
428
+ try:
429
+ path = ApiDependencies.invoker.services.bulk_download.get_path(bulk_download_item_name)
430
+
431
+ response = FileResponse(
432
+ path,
433
+ media_type="application/zip",
434
+ filename=bulk_download_item_name,
435
+ content_disposition_type="inline",
436
+ )
437
+ response.headers["Cache-Control"] = f"max-age={IMAGE_MAX_AGE}"
438
+ background_tasks.add_task(ApiDependencies.invoker.services.bulk_download.delete, bulk_download_item_name)
439
+ return response
440
+ except Exception:
441
+ raise HTTPException(status_code=404)