InvokeAI 5.9.1__tar.gz → 5.10.0.dev2__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 (666) hide show
  1. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/InvokeAI.egg-info/PKG-INFO +18 -20
  2. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/InvokeAI.egg-info/SOURCES.txt +6 -4
  3. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/InvokeAI.egg-info/requires.txt +16 -20
  4. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/PKG-INFO +18 -20
  5. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/api/dependencies.py +24 -3
  6. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/baseinvocation.py +105 -98
  7. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/object_serializer/object_serializer_disk.py +9 -1
  8. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/shared/graph.py +5 -4
  9. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/util/custom_openapi.py +6 -3
  10. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/config.py +87 -96
  11. invokeai-5.10.0.dev2/invokeai/backend/model_manager/model_on_disk.py +96 -0
  12. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/taxonomy.py +9 -0
  13. invokeai-5.10.0.dev2/invokeai/backend/patches/lora_conversions/formats.py +24 -0
  14. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/stable_diffusion/diffusion/conditioning_data.py +3 -0
  15. invokeai-5.9.1/invokeai/frontend/web/dist/assets/App-BMgpnKMc.js → invokeai-5.10.0.dev2/invokeai/frontend/web/dist/assets/App-BRowKuQ_.js +28 -28
  16. invokeai-5.9.1/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-BP9YFOT0.js → invokeai-5.10.0.dev2/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-Bpzh-kaZ.js +1 -1
  17. invokeai-5.9.1/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-Dej1epe9.css → invokeai-5.10.0.dev2/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-DMkJ1hTD.css +1 -1
  18. invokeai-5.10.0.dev2/invokeai/frontend/web/dist/assets/index-DI5t0zMv.js +511 -0
  19. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/index.html +1 -1
  20. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/locales/de.json +10 -3
  21. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/locales/it.json +7 -4
  22. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/locales/vi.json +13 -5
  23. invokeai-5.10.0.dev2/invokeai/version/invokeai_version.py +1 -0
  24. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/pyproject.toml +17 -19
  25. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/tests/test_config.py +4 -4
  26. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/tests/test_model_probe.py +1 -1
  27. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/tests/test_object_serializer_disk.py +15 -13
  28. invokeai-5.9.1/invokeai/frontend/web/dist/assets/index-C432-pld.js +0 -511
  29. invokeai-5.9.1/invokeai/version/invokeai_version.py +0 -1
  30. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/InvokeAI.egg-info/dependency_links.txt +0 -0
  31. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/InvokeAI.egg-info/entry_points.txt +0 -0
  32. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/InvokeAI.egg-info/top_level.txt +0 -0
  33. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/LICENSE +0 -0
  34. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/LICENSE-SD1+SD2.txt +0 -0
  35. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/LICENSE-SDXL.txt +0 -0
  36. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/README.md +0 -0
  37. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/__init__.py +0 -0
  38. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/api/extract_metadata_from_image.py +0 -0
  39. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/api/no_cache_staticfiles.py +0 -0
  40. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/api/routers/app_info.py +0 -0
  41. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/api/routers/board_images.py +0 -0
  42. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/api/routers/boards.py +0 -0
  43. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/api/routers/download_queue.py +0 -0
  44. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/api/routers/images.py +0 -0
  45. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/api/routers/model_manager.py +0 -0
  46. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/api/routers/session_queue.py +0 -0
  47. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/api/routers/style_presets.py +0 -0
  48. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/api/routers/utilities.py +0 -0
  49. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/api/routers/workflows.py +0 -0
  50. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/api/sockets.py +0 -0
  51. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/api_app.py +0 -0
  52. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/assets/images/caution.png +0 -0
  53. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/__init__.py +0 -0
  54. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/batch.py +0 -0
  55. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/blend_latents.py +0 -0
  56. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/canny.py +0 -0
  57. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/collections.py +0 -0
  58. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/color_map.py +0 -0
  59. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/compel.py +0 -0
  60. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/composition-nodes.py +0 -0
  61. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/constants.py +0 -0
  62. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/content_shuffle.py +0 -0
  63. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/controlnet_image_processors.py +0 -0
  64. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/create_denoise_mask.py +0 -0
  65. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/create_gradient_mask.py +0 -0
  66. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/crop_latents.py +0 -0
  67. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/custom_nodes/README.md +0 -0
  68. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/cv.py +0 -0
  69. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/denoise_latents.py +0 -0
  70. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/depth_anything.py +0 -0
  71. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/dw_openpose.py +0 -0
  72. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/facetools.py +0 -0
  73. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/fields.py +0 -0
  74. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/flux_control_lora_loader.py +0 -0
  75. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/flux_controlnet.py +0 -0
  76. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/flux_denoise.py +0 -0
  77. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/flux_fill.py +0 -0
  78. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/flux_ip_adapter.py +0 -0
  79. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/flux_lora_loader.py +0 -0
  80. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/flux_model_loader.py +0 -0
  81. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/flux_redux.py +0 -0
  82. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/flux_text_encoder.py +0 -0
  83. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/flux_vae_decode.py +0 -0
  84. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/flux_vae_encode.py +0 -0
  85. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/grounding_dino.py +0 -0
  86. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/hed.py +0 -0
  87. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/ideal_size.py +0 -0
  88. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/image.py +0 -0
  89. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/image_panels.py +0 -0
  90. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/image_to_latents.py +0 -0
  91. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/infill.py +0 -0
  92. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/ip_adapter.py +0 -0
  93. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/latents_to_image.py +0 -0
  94. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/lineart.py +0 -0
  95. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/lineart_anime.py +0 -0
  96. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/llava_onevision_vllm.py +0 -0
  97. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/load_custom_nodes.py +0 -0
  98. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/mask.py +0 -0
  99. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/math.py +0 -0
  100. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/mediapipe_face.py +0 -0
  101. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/metadata.py +0 -0
  102. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/metadata_linked.py +0 -0
  103. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/mlsd.py +0 -0
  104. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/model.py +0 -0
  105. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/noise.py +0 -0
  106. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/normal_bae.py +0 -0
  107. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/param_easing.py +0 -0
  108. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/pidi.py +0 -0
  109. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/primitives.py +0 -0
  110. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/prompt.py +0 -0
  111. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/resize_latents.py +0 -0
  112. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/scheduler.py +0 -0
  113. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/sd3_denoise.py +0 -0
  114. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/sd3_image_to_latents.py +0 -0
  115. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/sd3_latents_to_image.py +0 -0
  116. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/sd3_model_loader.py +0 -0
  117. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/sd3_text_encoder.py +0 -0
  118. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/sdxl.py +0 -0
  119. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/segment_anything.py +0 -0
  120. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/spandrel_image_to_image.py +0 -0
  121. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/strings.py +0 -0
  122. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/t2i_adapter.py +0 -0
  123. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/tiled_multi_diffusion_denoise_latents.py +0 -0
  124. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/tiles.py +0 -0
  125. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/upscale.py +0 -0
  126. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/invocations/util.py +0 -0
  127. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/run_app.py +0 -0
  128. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/__init__.py +0 -0
  129. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/board_image_records/__init__.py +0 -0
  130. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/board_image_records/board_image_records_base.py +0 -0
  131. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/board_image_records/board_image_records_sqlite.py +0 -0
  132. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/board_images/__init__.py +0 -0
  133. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/board_images/board_images_base.py +0 -0
  134. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/board_images/board_images_common.py +0 -0
  135. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/board_images/board_images_default.py +0 -0
  136. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/board_records/board_records_base.py +0 -0
  137. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/board_records/board_records_common.py +0 -0
  138. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/board_records/board_records_sqlite.py +0 -0
  139. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/boards/__init__.py +0 -0
  140. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/boards/boards_base.py +0 -0
  141. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/boards/boards_common.py +0 -0
  142. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/boards/boards_default.py +0 -0
  143. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/bulk_download/__init__.py +0 -0
  144. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/bulk_download/bulk_download_base.py +0 -0
  145. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/bulk_download/bulk_download_common.py +0 -0
  146. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/bulk_download/bulk_download_default.py +0 -0
  147. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/config/__init__.py +0 -0
  148. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/config/config_common.py +0 -0
  149. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/config/config_default.py +0 -0
  150. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/download/__init__.py +0 -0
  151. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/download/download_base.py +0 -0
  152. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/download/download_default.py +0 -0
  153. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/events/__init__.py +0 -0
  154. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/events/events_base.py +0 -0
  155. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/events/events_common.py +0 -0
  156. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/events/events_fastapievents.py +0 -0
  157. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/image_files/__init__.py +0 -0
  158. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/image_files/image_files_base.py +0 -0
  159. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/image_files/image_files_common.py +0 -0
  160. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/image_files/image_files_disk.py +0 -0
  161. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/image_records/__init__.py +0 -0
  162. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/image_records/image_records_base.py +0 -0
  163. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/image_records/image_records_common.py +0 -0
  164. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/image_records/image_records_sqlite.py +0 -0
  165. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/images/__init__.py +0 -0
  166. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/images/images_base.py +0 -0
  167. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/images/images_common.py +0 -0
  168. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/images/images_default.py +0 -0
  169. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/invocation_cache/__init__.py +0 -0
  170. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/invocation_cache/invocation_cache_base.py +0 -0
  171. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/invocation_cache/invocation_cache_common.py +0 -0
  172. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/invocation_cache/invocation_cache_memory.py +0 -0
  173. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/invocation_services.py +0 -0
  174. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/invocation_stats/__init__.py +0 -0
  175. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/invocation_stats/invocation_stats_base.py +0 -0
  176. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/invocation_stats/invocation_stats_common.py +0 -0
  177. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/invocation_stats/invocation_stats_default.py +0 -0
  178. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/invoker.py +0 -0
  179. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/item_storage/__init__.py +0 -0
  180. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/item_storage/item_storage_base.py +0 -0
  181. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/item_storage/item_storage_common.py +0 -0
  182. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/item_storage/item_storage_memory.py +0 -0
  183. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/model_images/model_images_base.py +0 -0
  184. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/model_images/model_images_common.py +0 -0
  185. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/model_images/model_images_default.py +0 -0
  186. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/model_install/__init__.py +0 -0
  187. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/model_install/model_install_base.py +0 -0
  188. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/model_install/model_install_common.py +0 -0
  189. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/model_install/model_install_default.py +0 -0
  190. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/model_load/__init__.py +0 -0
  191. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/model_load/model_load_base.py +0 -0
  192. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/model_load/model_load_default.py +0 -0
  193. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/model_manager/__init__.py +0 -0
  194. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/model_manager/model_manager_base.py +0 -0
  195. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/model_manager/model_manager_common.py +0 -0
  196. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/model_manager/model_manager_default.py +0 -0
  197. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/model_records/__init__.py +0 -0
  198. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/model_records/model_records_base.py +0 -0
  199. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/model_records/model_records_sql.py +0 -0
  200. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/names/__init__.py +0 -0
  201. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/names/names_base.py +0 -0
  202. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/names/names_common.py +0 -0
  203. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/names/names_default.py +0 -0
  204. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/object_serializer/object_serializer_base.py +0 -0
  205. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/object_serializer/object_serializer_common.py +0 -0
  206. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/object_serializer/object_serializer_forward_cache.py +0 -0
  207. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/session_processor/__init__.py +0 -0
  208. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/session_processor/session_processor_base.py +0 -0
  209. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/session_processor/session_processor_common.py +0 -0
  210. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/session_processor/session_processor_default.py +0 -0
  211. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/session_queue/__init__.py +0 -0
  212. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/session_queue/session_queue_base.py +0 -0
  213. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/session_queue/session_queue_common.py +0 -0
  214. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/session_queue/session_queue_sqlite.py +0 -0
  215. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/shared/__init__.py +0 -0
  216. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/shared/invocation_context.py +0 -0
  217. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/shared/pagination.py +0 -0
  218. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/shared/sqlite/__init__.py +0 -0
  219. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/shared/sqlite/sqlite_common.py +0 -0
  220. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/shared/sqlite/sqlite_database.py +0 -0
  221. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/shared/sqlite/sqlite_util.py +0 -0
  222. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/shared/sqlite_migrator/__init__.py +0 -0
  223. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/shared/sqlite_migrator/migrations/__init__.py +0 -0
  224. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_1.py +0 -0
  225. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_10.py +0 -0
  226. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_11.py +0 -0
  227. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_12.py +0 -0
  228. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_13.py +0 -0
  229. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_14.py +0 -0
  230. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_15.py +0 -0
  231. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_16.py +0 -0
  232. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_17.py +0 -0
  233. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_18.py +0 -0
  234. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_2.py +0 -0
  235. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_3.py +0 -0
  236. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_4.py +0 -0
  237. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_5.py +0 -0
  238. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_6.py +0 -0
  239. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_7.py +0 -0
  240. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_8.py +0 -0
  241. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_9.py +0 -0
  242. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/shared/sqlite_migrator/sqlite_migrator_common.py +0 -0
  243. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/shared/sqlite_migrator/sqlite_migrator_impl.py +0 -0
  244. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/style_preset_images/default_style_preset_images/Anime.png +0 -0
  245. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/style_preset_images/default_style_preset_images/Architectural Visualization.png +0 -0
  246. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Character).png +0 -0
  247. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Fantasy).png +0 -0
  248. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Painterly).png +0 -0
  249. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Sci-Fi).png +0 -0
  250. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/style_preset_images/default_style_preset_images/Environment Art.png +0 -0
  251. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/style_preset_images/default_style_preset_images/Illustration.png +0 -0
  252. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/style_preset_images/default_style_preset_images/Interior Design (Visualization).png +0 -0
  253. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/style_preset_images/default_style_preset_images/Line Art.png +0 -0
  254. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (Black and White).png +0 -0
  255. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (General).png +0 -0
  256. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (Landscape).png +0 -0
  257. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (Portrait).png +0 -0
  258. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (Studio Lighting).png +0 -0
  259. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/style_preset_images/default_style_preset_images/Product Rendering.png +0 -0
  260. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/style_preset_images/default_style_preset_images/Sketch.png +0 -0
  261. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/style_preset_images/default_style_preset_images/Vehicles.png +0 -0
  262. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/style_preset_images/default_style_preset_images/__init__.py +0 -0
  263. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/style_preset_images/style_preset_images_base.py +0 -0
  264. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/style_preset_images/style_preset_images_common.py +0 -0
  265. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/style_preset_images/style_preset_images_disk.py +0 -0
  266. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/style_preset_records/__init__.py +0 -0
  267. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/style_preset_records/default_style_presets.json +0 -0
  268. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/style_preset_records/style_preset_records_base.py +0 -0
  269. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/style_preset_records/style_preset_records_common.py +0 -0
  270. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/style_preset_records/style_preset_records_sqlite.py +0 -0
  271. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/urls/__init__.py +0 -0
  272. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/urls/urls_base.py +0 -0
  273. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/urls/urls_default.py +0 -0
  274. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/workflow_records/__init__.py +0 -0
  275. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/workflow_records/default_workflows/ESRGAN Upscaling with Canny ControlNet.json +0 -0
  276. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/workflow_records/default_workflows/FLUX Image to Image.json +0 -0
  277. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/workflow_records/default_workflows/Face Detailer with IP-Adapter & Canny (See Note in Details).json +0 -0
  278. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/workflow_records/default_workflows/Flux Text to Image.json +0 -0
  279. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/workflow_records/default_workflows/Multi ControlNet (Canny & Depth).json +0 -0
  280. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/workflow_records/default_workflows/MultiDiffusion SD1.5.json +0 -0
  281. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/workflow_records/default_workflows/MultiDiffusion SDXL.json +0 -0
  282. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/workflow_records/default_workflows/Prompt from File.json +0 -0
  283. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/workflow_records/default_workflows/SD3.5 Text to Image.json +0 -0
  284. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/workflow_records/default_workflows/Text to Image - SD1.5.json +0 -0
  285. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/workflow_records/default_workflows/Text to Image - SDXL.json +0 -0
  286. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/workflow_records/default_workflows/Text to Image with LoRA.json +0 -0
  287. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/workflow_records/default_workflows/Tiled Upscaling (Beta).json +0 -0
  288. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/workflow_records/workflow_records_base.py +0 -0
  289. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/workflow_records/workflow_records_common.py +0 -0
  290. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/workflow_records/workflow_records_sqlite.py +0 -0
  291. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/workflow_thumbnails/workflow_thumbnails_base.py +0 -0
  292. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/workflow_thumbnails/workflow_thumbnails_common.py +0 -0
  293. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/services/workflow_thumbnails/workflow_thumbnails_disk.py +0 -0
  294. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/shared/__init__.py +0 -0
  295. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/shared/models.py +0 -0
  296. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/util/__init__.py +0 -0
  297. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/util/controlnet_utils.py +0 -0
  298. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/util/metaenum.py +0 -0
  299. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/util/misc.py +0 -0
  300. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/util/model_exclude_null.py +0 -0
  301. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/util/profiler.py +0 -0
  302. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/util/startup_utils.py +0 -0
  303. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/util/step_callback.py +0 -0
  304. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/util/suppress_output.py +0 -0
  305. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/util/t5_model_identifier.py +0 -0
  306. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/util/thumbnails.py +0 -0
  307. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/util/ti_utils.py +0 -0
  308. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/app/util/torch_cuda_allocator.py +0 -0
  309. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/assets/fonts/inter/Inter-Regular.ttf +0 -0
  310. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/__init__.py +0 -0
  311. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/flux/controlnet/__init__.py +0 -0
  312. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/flux/controlnet/controlnet_flux_output.py +0 -0
  313. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/flux/controlnet/instantx_controlnet_flux.py +0 -0
  314. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/flux/controlnet/state_dict_utils.py +0 -0
  315. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/flux/controlnet/xlabs_controlnet_flux.py +0 -0
  316. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/flux/controlnet/zero_module.py +0 -0
  317. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/flux/custom_block_processor.py +0 -0
  318. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/flux/denoise.py +0 -0
  319. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/flux/extensions/__init__.py +0 -0
  320. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/flux/extensions/base_controlnet_extension.py +0 -0
  321. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/flux/extensions/inpaint_extension.py +0 -0
  322. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/flux/extensions/instantx_controlnet_extension.py +0 -0
  323. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/flux/extensions/regional_prompting_extension.py +0 -0
  324. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/flux/extensions/xlabs_controlnet_extension.py +0 -0
  325. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/flux/extensions/xlabs_ip_adapter_extension.py +0 -0
  326. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/flux/flux_state_dict_utils.py +0 -0
  327. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/flux/ip_adapter/__init__.py +0 -0
  328. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/flux/ip_adapter/ip_double_stream_block_processor.py +0 -0
  329. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/flux/ip_adapter/state_dict_utils.py +0 -0
  330. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/flux/ip_adapter/xlabs_ip_adapter_flux.py +0 -0
  331. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/flux/math.py +0 -0
  332. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/flux/model.py +0 -0
  333. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/flux/modules/autoencoder.py +0 -0
  334. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/flux/modules/conditioner.py +0 -0
  335. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/flux/modules/layers.py +0 -0
  336. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/flux/redux/flux_redux_model.py +0 -0
  337. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/flux/redux/flux_redux_state_dict_utils.py +0 -0
  338. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/flux/sampling_utils.py +0 -0
  339. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/flux/text_conditioning.py +0 -0
  340. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/flux/util.py +0 -0
  341. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/__init__.py +0 -0
  342. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/assets/CIELab_to_UPLab.icc +0 -0
  343. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/basicsr/__init__.py +0 -0
  344. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/basicsr/arch_util.py +0 -0
  345. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/basicsr/rrdbnet_arch.py +0 -0
  346. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/canny.py +0 -0
  347. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/composition.py +0 -0
  348. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/content_shuffle.py +0 -0
  349. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/depth_anything/depth_anything_pipeline.py +0 -0
  350. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/dw_openpose/__init__.py +0 -0
  351. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/dw_openpose/onnxdet.py +0 -0
  352. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/dw_openpose/onnxpose.py +0 -0
  353. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/dw_openpose/utils.py +0 -0
  354. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/dw_openpose/wholebody.py +0 -0
  355. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/grounding_dino/__init__.py +0 -0
  356. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/grounding_dino/detection_result.py +0 -0
  357. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/grounding_dino/grounding_dino_pipeline.py +0 -0
  358. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/hed.py +0 -0
  359. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/infill_methods/cv2_inpaint.py +0 -0
  360. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/infill_methods/lama.py +0 -0
  361. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/infill_methods/mosaic.py +0 -0
  362. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/infill_methods/patchmatch.py +0 -0
  363. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/infill_methods/tile.py +0 -0
  364. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/invisible_watermark.py +0 -0
  365. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/lineart.py +0 -0
  366. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/lineart_anime.py +0 -0
  367. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/mediapipe_face/__init__.py +0 -0
  368. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/mediapipe_face/mediapipe_face_common.py +0 -0
  369. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/mlsd/__init__.py +0 -0
  370. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/mlsd/models/__init__.py +0 -0
  371. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/mlsd/models/mbv2_mlsd_large.py +0 -0
  372. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/mlsd/models/mbv2_mlsd_tiny.py +0 -0
  373. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/mlsd/utils.py +0 -0
  374. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/normal_bae/__init__.py +0 -0
  375. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/normal_bae/nets/NNET.py +0 -0
  376. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/normal_bae/nets/__init__.py +0 -0
  377. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/normal_bae/nets/baseline.py +0 -0
  378. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/normal_bae/nets/submodules/__init__.py +0 -0
  379. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/normal_bae/nets/submodules/decoder.py +0 -0
  380. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/__init__.py +0 -0
  381. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/caffe2_benchmark.py +0 -0
  382. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/caffe2_validate.py +0 -0
  383. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/__init__.py +0 -0
  384. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/activations/__init__.py +0 -0
  385. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/activations/activations.py +0 -0
  386. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/activations/activations_jit.py +0 -0
  387. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/activations/activations_me.py +0 -0
  388. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/config.py +0 -0
  389. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/conv2d_layers.py +0 -0
  390. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/efficientnet_builder.py +0 -0
  391. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/gen_efficientnet.py +0 -0
  392. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/helpers.py +0 -0
  393. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/mobilenetv3.py +0 -0
  394. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/model_factory.py +0 -0
  395. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/geffnet/version.py +0 -0
  396. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/hubconf.py +0 -0
  397. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/onnx_export.py +0 -0
  398. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/onnx_optimize.py +0 -0
  399. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/onnx_to_caffe.py +0 -0
  400. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/onnx_validate.py +0 -0
  401. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/setup.py +0 -0
  402. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/utils.py +0 -0
  403. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/normal_bae/nets/submodules/efficientnet_repo/validate.py +0 -0
  404. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/normal_bae/nets/submodules/encoder.py +0 -0
  405. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/normal_bae/nets/submodules/submodules.py +0 -0
  406. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/pidi/__init__.py +0 -0
  407. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/pidi/model.py +0 -0
  408. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/pngwriter.py +0 -0
  409. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/realesrgan/__init__.py +0 -0
  410. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/realesrgan/realesrgan.py +0 -0
  411. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/safety_checker.py +0 -0
  412. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/segment_anything/__init__.py +0 -0
  413. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/segment_anything/mask_refinement.py +0 -0
  414. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/segment_anything/segment_anything_pipeline.py +0 -0
  415. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/image_util/util.py +0 -0
  416. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/ip_adapter/__init__.py +0 -0
  417. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/ip_adapter/ip_adapter.py +0 -0
  418. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/ip_adapter/ip_attention_weights.py +0 -0
  419. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/ip_adapter/resampler.py +0 -0
  420. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/llava_onevision_model.py +0 -0
  421. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_hash/hash_validator.py +0 -0
  422. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_hash/model_hash.py +0 -0
  423. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/__init__.py +0 -0
  424. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/legacy_probe.py +0 -0
  425. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/load/__init__.py +0 -0
  426. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/load/load_base.py +0 -0
  427. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/load/load_default.py +0 -0
  428. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/load/memory_snapshot.py +0 -0
  429. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/load/model_cache/__init__.py +0 -0
  430. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/load/model_cache/cache_record.py +0 -0
  431. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/load/model_cache/cache_stats.py +0 -0
  432. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/load/model_cache/cached_model/cached_model_only_full_load.py +0 -0
  433. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/load/model_cache/cached_model/cached_model_with_partial_load.py +0 -0
  434. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/load/model_cache/dev_utils.py +0 -0
  435. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/load/model_cache/model_cache.py +0 -0
  436. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/load/model_cache/torch_module_autocast/__init__.py +0 -0
  437. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/load/model_cache/torch_module_autocast/cast_to_device.py +0 -0
  438. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/load/model_cache/torch_module_autocast/custom_modules/__init__.py +0 -0
  439. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/load/model_cache/torch_module_autocast/custom_modules/custom_conv1d.py +0 -0
  440. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/load/model_cache/torch_module_autocast/custom_modules/custom_conv2d.py +0 -0
  441. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/load/model_cache/torch_module_autocast/custom_modules/custom_embedding.py +0 -0
  442. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/load/model_cache/torch_module_autocast/custom_modules/custom_flux_rms_norm.py +0 -0
  443. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/load/model_cache/torch_module_autocast/custom_modules/custom_group_norm.py +0 -0
  444. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/load/model_cache/torch_module_autocast/custom_modules/custom_invoke_linear_8_bit_lt.py +0 -0
  445. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/load/model_cache/torch_module_autocast/custom_modules/custom_invoke_linear_nf4.py +0 -0
  446. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/load/model_cache/torch_module_autocast/custom_modules/custom_linear.py +0 -0
  447. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/load/model_cache/torch_module_autocast/custom_modules/custom_module_mixin.py +0 -0
  448. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/load/model_cache/torch_module_autocast/custom_modules/utils.py +0 -0
  449. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/load/model_cache/torch_module_autocast/torch_module_autocast.py +0 -0
  450. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/load/model_cache/utils.py +0 -0
  451. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/load/model_loader_registry.py +0 -0
  452. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/load/model_loaders/__init__.py +0 -0
  453. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/load/model_loaders/clip_vision.py +0 -0
  454. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/load/model_loaders/controlnet.py +0 -0
  455. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/load/model_loaders/flux.py +0 -0
  456. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/load/model_loaders/generic_diffusers.py +0 -0
  457. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/load/model_loaders/ip_adapter.py +0 -0
  458. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/load/model_loaders/llava_onevision.py +0 -0
  459. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/load/model_loaders/lora.py +0 -0
  460. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/load/model_loaders/onnx.py +0 -0
  461. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/load/model_loaders/sig_lip_pipeline.py +0 -0
  462. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/load/model_loaders/spandrel_image_to_image.py +0 -0
  463. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/load/model_loaders/stable_diffusion.py +0 -0
  464. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/load/model_loaders/textual_inversion.py +0 -0
  465. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/load/model_loaders/vae.py +0 -0
  466. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/load/model_util.py +0 -0
  467. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/load/optimizations.py +0 -0
  468. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/merge.py +0 -0
  469. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/metadata/__init__.py +0 -0
  470. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/metadata/fetch/__init__.py +0 -0
  471. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/metadata/fetch/fetch_base.py +0 -0
  472. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/metadata/fetch/huggingface.py +0 -0
  473. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/metadata/metadata_base.py +0 -0
  474. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/search.py +0 -0
  475. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/starter_models.py +0 -0
  476. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/util/libc_util.py +0 -0
  477. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/util/model_util.py +0 -0
  478. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_manager/util/select_hf_files.py +0 -0
  479. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/model_patcher.py +0 -0
  480. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/onnx/onnx_runtime.py +0 -0
  481. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/patches/__init__.py +0 -0
  482. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/patches/layer_patcher.py +0 -0
  483. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/patches/layers/__init__.py +0 -0
  484. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/patches/layers/base_layer_patch.py +0 -0
  485. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/patches/layers/dora_layer.py +0 -0
  486. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/patches/layers/flux_control_lora_layer.py +0 -0
  487. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/patches/layers/full_layer.py +0 -0
  488. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/patches/layers/ia3_layer.py +0 -0
  489. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/patches/layers/loha_layer.py +0 -0
  490. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/patches/layers/lokr_layer.py +0 -0
  491. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/patches/layers/lora_layer.py +0 -0
  492. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/patches/layers/lora_layer_base.py +0 -0
  493. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/patches/layers/merged_layer_patch.py +0 -0
  494. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/patches/layers/norm_layer.py +0 -0
  495. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/patches/layers/param_shape_utils.py +0 -0
  496. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/patches/layers/set_parameter_layer.py +0 -0
  497. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/patches/layers/utils.py +0 -0
  498. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/patches/lora_conversions/__init__.py +0 -0
  499. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/patches/lora_conversions/flux_control_lora_utils.py +0 -0
  500. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/patches/lora_conversions/flux_diffusers_lora_conversion_utils.py +0 -0
  501. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/patches/lora_conversions/flux_kohya_lora_conversion_utils.py +0 -0
  502. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/patches/lora_conversions/flux_lora_constants.py +0 -0
  503. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/patches/lora_conversions/flux_onetrainer_lora_conversion_utils.py +0 -0
  504. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/patches/lora_conversions/kohya_key_utils.py +0 -0
  505. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/patches/lora_conversions/sd_lora_conversion_utils.py +0 -0
  506. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/patches/lora_conversions/sdxl_lora_conversion_utils.py +0 -0
  507. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/patches/model_patch_raw.py +0 -0
  508. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/patches/pad_with_zeros.py +0 -0
  509. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/quantization/__init__.py +0 -0
  510. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/quantization/bnb_llm_int8.py +0 -0
  511. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/quantization/bnb_nf4.py +0 -0
  512. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/quantization/gguf/ggml_tensor.py +0 -0
  513. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/quantization/gguf/loaders.py +0 -0
  514. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/quantization/gguf/utils.py +0 -0
  515. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/quantization/scripts/load_flux_model_bnb_llm_int8.py +0 -0
  516. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/quantization/scripts/load_flux_model_bnb_nf4.py +0 -0
  517. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/quantization/scripts/quantize_t5_xxl_bnb_llm_int8.py +0 -0
  518. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/raw_model.py +0 -0
  519. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/sd3/__init__.py +0 -0
  520. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/sd3/extensions/__init__.py +0 -0
  521. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/sd3/extensions/inpaint_extension.py +0 -0
  522. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/sig_lip/sig_lip_pipeline.py +0 -0
  523. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/spandrel_image_to_image_model.py +0 -0
  524. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/stable_diffusion/__init__.py +0 -0
  525. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/stable_diffusion/denoise_context.py +0 -0
  526. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/stable_diffusion/diffusers_pipeline.py +0 -0
  527. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/stable_diffusion/diffusion/__init__.py +0 -0
  528. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/stable_diffusion/diffusion/custom_atttention.py +0 -0
  529. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/stable_diffusion/diffusion/regional_ip_data.py +0 -0
  530. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/stable_diffusion/diffusion/regional_prompt_data.py +0 -0
  531. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/stable_diffusion/diffusion/shared_invokeai_diffusion.py +0 -0
  532. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/stable_diffusion/diffusion/unet_attention_patcher.py +0 -0
  533. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/stable_diffusion/diffusion_backend.py +0 -0
  534. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/stable_diffusion/extension_callback_type.py +0 -0
  535. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/stable_diffusion/extensions/base.py +0 -0
  536. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/stable_diffusion/extensions/controlnet.py +0 -0
  537. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/stable_diffusion/extensions/freeu.py +0 -0
  538. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/stable_diffusion/extensions/inpaint.py +0 -0
  539. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/stable_diffusion/extensions/inpaint_model.py +0 -0
  540. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/stable_diffusion/extensions/lora.py +0 -0
  541. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/stable_diffusion/extensions/preview.py +0 -0
  542. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/stable_diffusion/extensions/rescale_cfg.py +0 -0
  543. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/stable_diffusion/extensions/seamless.py +0 -0
  544. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/stable_diffusion/extensions/t2i_adapter.py +0 -0
  545. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/stable_diffusion/extensions_manager.py +0 -0
  546. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/stable_diffusion/multi_diffusion_pipeline.py +0 -0
  547. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/stable_diffusion/schedulers/__init__.py +0 -0
  548. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/stable_diffusion/schedulers/schedulers.py +0 -0
  549. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/stable_diffusion/vae_tiling.py +0 -0
  550. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/textual_inversion.py +0 -0
  551. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/tiles/__init__.py +0 -0
  552. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/tiles/tiles.py +0 -0
  553. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/tiles/utils.py +0 -0
  554. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/util/__init__.py +0 -0
  555. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/util/attention.py +0 -0
  556. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/util/build_line.py +0 -0
  557. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/util/calc_tensor_size.py +0 -0
  558. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/util/catch_sigint.py +0 -0
  559. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/util/db_maintenance.py +0 -0
  560. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/util/devices.py +0 -0
  561. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/util/hotfixes.py +0 -0
  562. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/util/logging.py +0 -0
  563. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/util/mask.py +0 -0
  564. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/util/mps_fixes.py +0 -0
  565. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/util/original_weights_storage.py +0 -0
  566. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/util/prefix_logger_adapter.py +0 -0
  567. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/util/silence_warnings.py +0 -0
  568. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/util/test_utils.py +0 -0
  569. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/backend/util/util.py +0 -0
  570. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/configs/controlnet/cldm_v15.yaml +0 -0
  571. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/configs/controlnet/cldm_v21.yaml +0 -0
  572. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/configs/stable-diffusion/sd_xl_base.yaml +0 -0
  573. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/configs/stable-diffusion/sd_xl_inpaint.yaml +0 -0
  574. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/configs/stable-diffusion/sd_xl_refiner.yaml +0 -0
  575. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/configs/stable-diffusion/v1-finetune.yaml +0 -0
  576. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/configs/stable-diffusion/v1-finetune_style.yaml +0 -0
  577. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/configs/stable-diffusion/v1-inference-v.yaml +0 -0
  578. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/configs/stable-diffusion/v1-inference.yaml +0 -0
  579. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/configs/stable-diffusion/v1-inpainting-inference.yaml +0 -0
  580. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/configs/stable-diffusion/v1-m1-finetune.yaml +0 -0
  581. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/configs/stable-diffusion/v2-inference-v.yaml +0 -0
  582. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/configs/stable-diffusion/v2-inference.yaml +0 -0
  583. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/configs/stable-diffusion/v2-inpainting-inference-v.yaml +0 -0
  584. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/configs/stable-diffusion/v2-inpainting-inference.yaml +0 -0
  585. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/configs/stable-diffusion/v2-midas-inference.yaml +0 -0
  586. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/__init__.py +0 -0
  587. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/cli/__init__.py +0 -0
  588. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/cli/arg_parser.py +0 -0
  589. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/install/__init__.py +0 -0
  590. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/install/import_images.py +0 -0
  591. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/__init__.py +0 -0
  592. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/assets/commercial-license-bg-C_dHp7on.png +0 -0
  593. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/assets/denoising-strength-4mznP2tj.png +0 -0
  594. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/assets/images/commercial-license-bg.png +0 -0
  595. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/assets/images/denoising-strength.png +0 -0
  596. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/assets/images/invoke-alert-favicon.svg +0 -0
  597. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/assets/images/invoke-avatar-circle.svg +0 -0
  598. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/assets/images/invoke-avatar-square.svg +0 -0
  599. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/assets/images/invoke-favicon.png +0 -0
  600. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/assets/images/invoke-favicon.svg +0 -0
  601. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/assets/images/invoke-key-char-lrg.svg +0 -0
  602. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/assets/images/invoke-key-char-sml.svg +0 -0
  603. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/assets/images/invoke-key-wht-lrg.svg +0 -0
  604. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/assets/images/invoke-key-wht-sml.svg +0 -0
  605. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/assets/images/invoke-symbol-char-lrg.svg +0 -0
  606. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/assets/images/invoke-symbol-char-sml.svg +0 -0
  607. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/assets/images/invoke-symbol-wht-lrg.svg +0 -0
  608. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/assets/images/invoke-symbol-wht-sml.svg +0 -0
  609. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/assets/images/invoke-symbol-ylw-lrg.svg +0 -0
  610. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/assets/images/invoke-tag-char-lrg.svg +0 -0
  611. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/assets/images/invoke-tag-char-sml.svg +0 -0
  612. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/assets/images/invoke-tag-lrg.svg +0 -0
  613. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/assets/images/invoke-tag-sml.svg +0 -0
  614. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/assets/images/invoke-wordmark-charcoal.svg +0 -0
  615. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/assets/images/invoke-wordmark-white.svg +0 -0
  616. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/assets/images/mask.svg +0 -0
  617. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/assets/inter-cyrillic-ext-wght-normal-B2xhLi22.woff2 +0 -0
  618. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/assets/inter-cyrillic-wght-normal-CMZtQduZ.woff2 +0 -0
  619. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/assets/inter-greek-ext-wght-normal-CGAr0uHJ.woff2 +0 -0
  620. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/assets/inter-greek-wght-normal-CaVNZxsx.woff2 +0 -0
  621. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/assets/inter-latin-ext-wght-normal-CFHvXkgd.woff2 +0 -0
  622. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/assets/inter-latin-wght-normal-C2S99t-D.woff2 +0 -0
  623. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
  624. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/assets/worker-Dywf1EVc.js +0 -0
  625. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/locales/ar.json +0 -0
  626. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/locales/az.json +0 -0
  627. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/locales/bg.json +0 -0
  628. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/locales/en.json +0 -0
  629. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/locales/es.json +0 -0
  630. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/locales/fi.json +0 -0
  631. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/locales/fr.json +0 -0
  632. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/locales/he.json +0 -0
  633. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/locales/hu.json +0 -0
  634. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/locales/ja.json +0 -0
  635. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/locales/ko.json +0 -0
  636. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/locales/mn.json +0 -0
  637. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/locales/nl.json +0 -0
  638. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/locales/pl.json +0 -0
  639. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/locales/pt.json +0 -0
  640. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/locales/pt_BR.json +0 -0
  641. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/locales/ro.json +0 -0
  642. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/locales/ru.json +0 -0
  643. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/locales/sv.json +0 -0
  644. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/locales/tr.json +0 -0
  645. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/locales/uk.json +0 -0
  646. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/locales/zh_CN.json +0 -0
  647. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/dist/locales/zh_Hant.json +0 -0
  648. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/scripts/clean_translations.py +0 -0
  649. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/frontend/web/static/docs/invoke-favicon-docs.svg +0 -0
  650. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/invocation_api/__init__.py +0 -0
  651. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/invokeai/version/__init__.py +0 -0
  652. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/setup.cfg +0 -0
  653. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/tests/test_dangerously_run_function_in_subprocess.py +0 -0
  654. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/tests/test_docs.py +0 -0
  655. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/tests/test_graph_execution_state.py +0 -0
  656. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/tests/test_imports.py +0 -0
  657. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/tests/test_invocation_cache_memory.py +0 -0
  658. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/tests/test_item_storage_memory.py +0 -0
  659. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/tests/test_model_hash.py +0 -0
  660. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/tests/test_model_search.py +0 -0
  661. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/tests/test_node_graph.py +0 -0
  662. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/tests/test_nodes.py +0 -0
  663. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/tests/test_path.py +0 -0
  664. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/tests/test_profiler.py +0 -0
  665. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/tests/test_session_queue.py +0 -0
  666. {invokeai-5.9.1 → invokeai-5.10.0.dev2}/tests/test_sqlite_migrator.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: InvokeAI
3
- Version: 5.9.1
3
+ Version: 5.10.0.dev2
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
@@ -204,17 +204,17 @@ Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Server
204
204
  Classifier: Topic :: Multimedia :: Graphics
205
205
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
206
206
  Classifier: Topic :: Scientific/Engineering :: Image Processing
207
- Requires-Python: <3.12,>=3.10
207
+ Requires-Python: <3.13,>=3.10
208
208
  Description-Content-Type: text/markdown
209
209
  License-File: LICENSE
210
210
  License-File: LICENSE-SD1+SD2.txt
211
211
  License-File: LICENSE-SDXL.txt
212
- Requires-Dist: accelerate==1.0.1
213
- Requires-Dist: bitsandbytes==0.45.0; sys_platform != "darwin"
212
+ Requires-Dist: accelerate
213
+ Requires-Dist: bitsandbytes; sys_platform != "darwin"
214
214
  Requires-Dist: clip_anytorch==2.6.0
215
215
  Requires-Dist: compel==2.0.2
216
216
  Requires-Dist: controlnet-aux==0.0.7
217
- Requires-Dist: diffusers[torch]==0.31.0
217
+ Requires-Dist: diffusers[torch]
218
218
  Requires-Dist: gguf==0.10.0
219
219
  Requires-Dist: invisible-watermark==0.2.0
220
220
  Requires-Dist: mediapipe==0.10.14
@@ -222,23 +222,24 @@ Requires-Dist: numpy<2.0.0
222
222
  Requires-Dist: onnx==1.16.1
223
223
  Requires-Dist: onnxruntime==1.19.2
224
224
  Requires-Dist: opencv-python==4.9.0.80
225
- Requires-Dist: pytorch-lightning==2.1.3
226
- Requires-Dist: safetensors==0.4.3
225
+ Requires-Dist: pytorch-lightning
226
+ Requires-Dist: safetensors
227
227
  Requires-Dist: sentencepiece==0.2.0
228
228
  Requires-Dist: spandrel==0.3.4
229
- Requires-Dist: timm==0.6.13
230
- Requires-Dist: torch<2.5.0
229
+ Requires-Dist: timm~=1.0.0
230
+ Requires-Dist: torch~=2.6.0
231
231
  Requires-Dist: torchmetrics
232
232
  Requires-Dist: torchsde
233
233
  Requires-Dist: torchvision
234
- Requires-Dist: transformers==4.46.3
235
- Requires-Dist: fastapi-events==0.11.1
236
- Requires-Dist: fastapi==0.111.0
237
- Requires-Dist: huggingface-hub==0.26.1
238
- Requires-Dist: pydantic-settings==2.2.1
239
- Requires-Dist: pydantic==2.7.2
240
- Requires-Dist: python-socketio==5.11.1
241
- Requires-Dist: uvicorn[standard]==0.28.0
234
+ Requires-Dist: timm~=1.0.0
235
+ Requires-Dist: transformers
236
+ Requires-Dist: fastapi-events
237
+ Requires-Dist: fastapi
238
+ Requires-Dist: huggingface-hub
239
+ Requires-Dist: pydantic-settings
240
+ Requires-Dist: pydantic
241
+ Requires-Dist: python-socketio
242
+ Requires-Dist: uvicorn[standard]
242
243
  Requires-Dist: albumentations
243
244
  Requires-Dist: blake3
244
245
  Requires-Dist: click
@@ -260,11 +261,8 @@ Requires-Dist: pyperclip
260
261
  Requires-Dist: pyreadline3
261
262
  Requires-Dist: python-multipart
262
263
  Requires-Dist: requests
263
- Requires-Dist: rich~=13.3
264
264
  Requires-Dist: scikit-image
265
265
  Requires-Dist: semver~=3.0.1
266
- Requires-Dist: test-tube
267
- Requires-Dist: windows-curses; sys_platform == "win32"
268
266
  Requires-Dist: humanize==4.12.1
269
267
  Provides-Extra: xformers
270
268
  Requires-Dist: xformers>=0.0.28.post1; sys_platform != "darwin" and extra == "xformers"
@@ -408,6 +408,7 @@ invokeai/backend/model_manager/__init__.py
408
408
  invokeai/backend/model_manager/config.py
409
409
  invokeai/backend/model_manager/legacy_probe.py
410
410
  invokeai/backend/model_manager/merge.py
411
+ invokeai/backend/model_manager/model_on_disk.py
411
412
  invokeai/backend/model_manager/search.py
412
413
  invokeai/backend/model_manager/starter_models.py
413
414
  invokeai/backend/model_manager/taxonomy.py
@@ -488,6 +489,7 @@ invokeai/backend/patches/lora_conversions/flux_diffusers_lora_conversion_utils.p
488
489
  invokeai/backend/patches/lora_conversions/flux_kohya_lora_conversion_utils.py
489
490
  invokeai/backend/patches/lora_conversions/flux_lora_constants.py
490
491
  invokeai/backend/patches/lora_conversions/flux_onetrainer_lora_conversion_utils.py
492
+ invokeai/backend/patches/lora_conversions/formats.py
491
493
  invokeai/backend/patches/lora_conversions/kohya_key_utils.py
492
494
  invokeai/backend/patches/lora_conversions/sd_lora_conversion_utils.py
493
495
  invokeai/backend/patches/lora_conversions/sdxl_lora_conversion_utils.py
@@ -573,12 +575,12 @@ invokeai/frontend/install/__init__.py
573
575
  invokeai/frontend/install/import_images.py
574
576
  invokeai/frontend/web/__init__.py
575
577
  invokeai/frontend/web/dist/index.html
576
- invokeai/frontend/web/dist/assets/App-BMgpnKMc.js
577
- invokeai/frontend/web/dist/assets/ThemeLocaleProvider-BP9YFOT0.js
578
- invokeai/frontend/web/dist/assets/ThemeLocaleProvider-Dej1epe9.css
578
+ invokeai/frontend/web/dist/assets/App-BRowKuQ_.js
579
+ invokeai/frontend/web/dist/assets/ThemeLocaleProvider-Bpzh-kaZ.js
580
+ invokeai/frontend/web/dist/assets/ThemeLocaleProvider-DMkJ1hTD.css
579
581
  invokeai/frontend/web/dist/assets/commercial-license-bg-C_dHp7on.png
580
582
  invokeai/frontend/web/dist/assets/denoising-strength-4mznP2tj.png
581
- invokeai/frontend/web/dist/assets/index-C432-pld.js
583
+ invokeai/frontend/web/dist/assets/index-DI5t0zMv.js
582
584
  invokeai/frontend/web/dist/assets/inter-cyrillic-ext-wght-normal-B2xhLi22.woff2
583
585
  invokeai/frontend/web/dist/assets/inter-cyrillic-wght-normal-CMZtQduZ.woff2
584
586
  invokeai/frontend/web/dist/assets/inter-greek-ext-wght-normal-CGAr0uHJ.woff2
@@ -1,8 +1,8 @@
1
- accelerate==1.0.1
1
+ accelerate
2
2
  clip_anytorch==2.6.0
3
3
  compel==2.0.2
4
4
  controlnet-aux==0.0.7
5
- diffusers[torch]==0.31.0
5
+ diffusers[torch]
6
6
  gguf==0.10.0
7
7
  invisible-watermark==0.2.0
8
8
  mediapipe==0.10.14
@@ -10,23 +10,24 @@ numpy<2.0.0
10
10
  onnx==1.16.1
11
11
  onnxruntime==1.19.2
12
12
  opencv-python==4.9.0.80
13
- pytorch-lightning==2.1.3
14
- safetensors==0.4.3
13
+ pytorch-lightning
14
+ safetensors
15
15
  sentencepiece==0.2.0
16
16
  spandrel==0.3.4
17
- timm==0.6.13
18
- torch<2.5.0
17
+ timm~=1.0.0
18
+ torch~=2.6.0
19
19
  torchmetrics
20
20
  torchsde
21
21
  torchvision
22
- transformers==4.46.3
23
- fastapi-events==0.11.1
24
- fastapi==0.111.0
25
- huggingface-hub==0.26.1
26
- pydantic-settings==2.2.1
27
- pydantic==2.7.2
28
- python-socketio==5.11.1
29
- uvicorn[standard]==0.28.0
22
+ timm~=1.0.0
23
+ transformers
24
+ fastapi-events
25
+ fastapi
26
+ huggingface-hub
27
+ pydantic-settings
28
+ pydantic
29
+ python-socketio
30
+ uvicorn[standard]
30
31
  albumentations
31
32
  blake3
32
33
  click
@@ -48,17 +49,12 @@ pyperclip
48
49
  pyreadline3
49
50
  python-multipart
50
51
  requests
51
- rich~=13.3
52
52
  scikit-image
53
53
  semver~=3.0.1
54
- test-tube
55
54
  humanize==4.12.1
56
55
 
57
56
  [:sys_platform != "darwin"]
58
- bitsandbytes==0.45.0
59
-
60
- [:sys_platform == "win32"]
61
- windows-curses
57
+ bitsandbytes
62
58
 
63
59
  [dev]
64
60
  jurigged
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: InvokeAI
3
- Version: 5.9.1
3
+ Version: 5.10.0.dev2
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
@@ -204,17 +204,17 @@ Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Server
204
204
  Classifier: Topic :: Multimedia :: Graphics
205
205
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
206
206
  Classifier: Topic :: Scientific/Engineering :: Image Processing
207
- Requires-Python: <3.12,>=3.10
207
+ Requires-Python: <3.13,>=3.10
208
208
  Description-Content-Type: text/markdown
209
209
  License-File: LICENSE
210
210
  License-File: LICENSE-SD1+SD2.txt
211
211
  License-File: LICENSE-SDXL.txt
212
- Requires-Dist: accelerate==1.0.1
213
- Requires-Dist: bitsandbytes==0.45.0; sys_platform != "darwin"
212
+ Requires-Dist: accelerate
213
+ Requires-Dist: bitsandbytes; sys_platform != "darwin"
214
214
  Requires-Dist: clip_anytorch==2.6.0
215
215
  Requires-Dist: compel==2.0.2
216
216
  Requires-Dist: controlnet-aux==0.0.7
217
- Requires-Dist: diffusers[torch]==0.31.0
217
+ Requires-Dist: diffusers[torch]
218
218
  Requires-Dist: gguf==0.10.0
219
219
  Requires-Dist: invisible-watermark==0.2.0
220
220
  Requires-Dist: mediapipe==0.10.14
@@ -222,23 +222,24 @@ Requires-Dist: numpy<2.0.0
222
222
  Requires-Dist: onnx==1.16.1
223
223
  Requires-Dist: onnxruntime==1.19.2
224
224
  Requires-Dist: opencv-python==4.9.0.80
225
- Requires-Dist: pytorch-lightning==2.1.3
226
- Requires-Dist: safetensors==0.4.3
225
+ Requires-Dist: pytorch-lightning
226
+ Requires-Dist: safetensors
227
227
  Requires-Dist: sentencepiece==0.2.0
228
228
  Requires-Dist: spandrel==0.3.4
229
- Requires-Dist: timm==0.6.13
230
- Requires-Dist: torch<2.5.0
229
+ Requires-Dist: timm~=1.0.0
230
+ Requires-Dist: torch~=2.6.0
231
231
  Requires-Dist: torchmetrics
232
232
  Requires-Dist: torchsde
233
233
  Requires-Dist: torchvision
234
- Requires-Dist: transformers==4.46.3
235
- Requires-Dist: fastapi-events==0.11.1
236
- Requires-Dist: fastapi==0.111.0
237
- Requires-Dist: huggingface-hub==0.26.1
238
- Requires-Dist: pydantic-settings==2.2.1
239
- Requires-Dist: pydantic==2.7.2
240
- Requires-Dist: python-socketio==5.11.1
241
- Requires-Dist: uvicorn[standard]==0.28.0
234
+ Requires-Dist: timm~=1.0.0
235
+ Requires-Dist: transformers
236
+ Requires-Dist: fastapi-events
237
+ Requires-Dist: fastapi
238
+ Requires-Dist: huggingface-hub
239
+ Requires-Dist: pydantic-settings
240
+ Requires-Dist: pydantic
241
+ Requires-Dist: python-socketio
242
+ Requires-Dist: uvicorn[standard]
242
243
  Requires-Dist: albumentations
243
244
  Requires-Dist: blake3
244
245
  Requires-Dist: click
@@ -260,11 +261,8 @@ Requires-Dist: pyperclip
260
261
  Requires-Dist: pyreadline3
261
262
  Requires-Dist: python-multipart
262
263
  Requires-Dist: requests
263
- Requires-Dist: rich~=13.3
264
264
  Requires-Dist: scikit-image
265
265
  Requires-Dist: semver~=3.0.1
266
- Requires-Dist: test-tube
267
- Requires-Dist: windows-curses; sys_platform == "win32"
268
266
  Requires-Dist: humanize==4.12.1
269
267
  Provides-Extra: xformers
270
268
  Requires-Dist: xformers>=0.0.28.post1; sys_platform != "darwin" and extra == "xformers"
@@ -37,7 +37,13 @@ from invokeai.app.services.style_preset_records.style_preset_records_sqlite impo
37
37
  from invokeai.app.services.urls.urls_default import LocalUrlService
38
38
  from invokeai.app.services.workflow_records.workflow_records_sqlite import SqliteWorkflowRecordsStorage
39
39
  from invokeai.app.services.workflow_thumbnails.workflow_thumbnails_disk import WorkflowThumbnailFileStorageDisk
40
- from invokeai.backend.stable_diffusion.diffusion.conditioning_data import ConditioningFieldData
40
+ from invokeai.backend.stable_diffusion.diffusion.conditioning_data import (
41
+ BasicConditioningInfo,
42
+ ConditioningFieldData,
43
+ FLUXConditioningInfo,
44
+ SD3ConditioningInfo,
45
+ SDXLConditioningInfo,
46
+ )
41
47
  from invokeai.backend.util.logging import InvokeAILogger
42
48
  from invokeai.version.invokeai_version import __version__
43
49
 
@@ -101,10 +107,25 @@ class ApiDependencies:
101
107
  images = ImageService()
102
108
  invocation_cache = MemoryInvocationCache(max_cache_size=config.node_cache_size)
103
109
  tensors = ObjectSerializerForwardCache(
104
- ObjectSerializerDisk[torch.Tensor](output_folder / "tensors", ephemeral=True)
110
+ ObjectSerializerDisk[torch.Tensor](
111
+ output_folder / "tensors",
112
+ safe_globals=[torch.Tensor],
113
+ ephemeral=True,
114
+ ),
115
+ max_cache_size=0,
105
116
  )
106
117
  conditioning = ObjectSerializerForwardCache(
107
- ObjectSerializerDisk[ConditioningFieldData](output_folder / "conditioning", ephemeral=True)
118
+ ObjectSerializerDisk[ConditioningFieldData](
119
+ output_folder / "conditioning",
120
+ safe_globals=[
121
+ ConditioningFieldData,
122
+ BasicConditioningInfo,
123
+ SDXLConditioningInfo,
124
+ FLUXConditioningInfo,
125
+ SD3ConditioningInfo,
126
+ ],
127
+ ephemeral=True,
128
+ ),
108
129
  )
109
130
  download_queue_service = DownloadQueueService(app_config=configuration, event_bus=events)
110
131
  model_images_service = ModelImageFileStorageDisk(model_images_folder / "model_images")
@@ -8,6 +8,7 @@ import sys
8
8
  import warnings
9
9
  from abc import ABC, abstractmethod
10
10
  from enum import Enum
11
+ from functools import lru_cache
11
12
  from inspect import signature
12
13
  from typing import (
13
14
  TYPE_CHECKING,
@@ -27,7 +28,6 @@ import semver
27
28
  from pydantic import BaseModel, ConfigDict, Field, TypeAdapter, create_model
28
29
  from pydantic.fields import FieldInfo
29
30
  from pydantic_core import PydanticUndefined
30
- from typing_extensions import TypeAliasType
31
31
 
32
32
  from invokeai.app.invocations.fields import (
33
33
  FieldKind,
@@ -100,37 +100,6 @@ class BaseInvocationOutput(BaseModel):
100
100
  All invocation outputs must use the `@invocation_output` decorator to provide their unique type.
101
101
  """
102
102
 
103
- _output_classes: ClassVar[set[BaseInvocationOutput]] = set()
104
- _typeadapter: ClassVar[Optional[TypeAdapter[Any]]] = None
105
- _typeadapter_needs_update: ClassVar[bool] = False
106
-
107
- @classmethod
108
- def register_output(cls, output: BaseInvocationOutput) -> None:
109
- """Registers an invocation output."""
110
- cls._output_classes.add(output)
111
- cls._typeadapter_needs_update = True
112
-
113
- @classmethod
114
- def get_outputs(cls) -> Iterable[BaseInvocationOutput]:
115
- """Gets all invocation outputs."""
116
- return cls._output_classes
117
-
118
- @classmethod
119
- def get_typeadapter(cls) -> TypeAdapter[Any]:
120
- """Gets a pydantc TypeAdapter for the union of all invocation output types."""
121
- if not cls._typeadapter or cls._typeadapter_needs_update:
122
- AnyInvocationOutput = TypeAliasType(
123
- "AnyInvocationOutput", Annotated[Union[tuple(cls._output_classes)], Field(discriminator="type")]
124
- )
125
- cls._typeadapter = TypeAdapter(AnyInvocationOutput)
126
- cls._typeadapter_needs_update = False
127
- return cls._typeadapter
128
-
129
- @classmethod
130
- def get_output_types(cls) -> Iterable[str]:
131
- """Gets all invocation output types."""
132
- return (i.get_type() for i in BaseInvocationOutput.get_outputs())
133
-
134
103
  @staticmethod
135
104
  def json_schema_extra(schema: dict[str, Any], model_class: Type[BaseInvocationOutput]) -> None:
136
105
  """Adds various UI-facing attributes to the invocation output's OpenAPI schema."""
@@ -173,76 +142,16 @@ class BaseInvocation(ABC, BaseModel):
173
142
  All invocations must use the `@invocation` decorator to provide their unique type.
174
143
  """
175
144
 
176
- _invocation_classes: ClassVar[set[BaseInvocation]] = set()
177
- _typeadapter: ClassVar[Optional[TypeAdapter[Any]]] = None
178
- _typeadapter_needs_update: ClassVar[bool] = False
179
-
180
145
  @classmethod
181
146
  def get_type(cls) -> str:
182
147
  """Gets the invocation's type, as provided by the `@invocation` decorator."""
183
148
  return cls.model_fields["type"].default
184
149
 
185
- @classmethod
186
- def register_invocation(cls, invocation: BaseInvocation) -> None:
187
- """Registers an invocation."""
188
- cls._invocation_classes.add(invocation)
189
- cls._typeadapter_needs_update = True
190
-
191
- @classmethod
192
- def get_typeadapter(cls) -> TypeAdapter[Any]:
193
- """Gets a pydantc TypeAdapter for the union of all invocation types."""
194
- if not cls._typeadapter or cls._typeadapter_needs_update:
195
- AnyInvocation = TypeAliasType(
196
- "AnyInvocation", Annotated[Union[tuple(cls.get_invocations())], Field(discriminator="type")]
197
- )
198
- cls._typeadapter = TypeAdapter(AnyInvocation)
199
- cls._typeadapter_needs_update = False
200
- return cls._typeadapter
201
-
202
- @classmethod
203
- def invalidate_typeadapter(cls) -> None:
204
- """Invalidates the typeadapter, forcing it to be rebuilt on next access. If the invocation allowlist or
205
- denylist is changed, this should be called to ensure the typeadapter is updated and validation respects
206
- the updated allowlist and denylist."""
207
- cls._typeadapter_needs_update = True
208
-
209
- @classmethod
210
- def get_invocations(cls) -> Iterable[BaseInvocation]:
211
- """Gets all invocations, respecting the allowlist and denylist."""
212
- app_config = get_config()
213
- allowed_invocations: set[BaseInvocation] = set()
214
- for sc in cls._invocation_classes:
215
- invocation_type = sc.get_type()
216
- is_in_allowlist = (
217
- invocation_type in app_config.allow_nodes if isinstance(app_config.allow_nodes, list) else True
218
- )
219
- is_in_denylist = (
220
- invocation_type in app_config.deny_nodes if isinstance(app_config.deny_nodes, list) else False
221
- )
222
- if is_in_allowlist and not is_in_denylist:
223
- allowed_invocations.add(sc)
224
- return allowed_invocations
225
-
226
- @classmethod
227
- def get_invocations_map(cls) -> dict[str, BaseInvocation]:
228
- """Gets a map of all invocation types to their invocation classes."""
229
- return {i.get_type(): i for i in BaseInvocation.get_invocations()}
230
-
231
- @classmethod
232
- def get_invocation_types(cls) -> Iterable[str]:
233
- """Gets all invocation types."""
234
- return (i.get_type() for i in BaseInvocation.get_invocations())
235
-
236
150
  @classmethod
237
151
  def get_output_annotation(cls) -> BaseInvocationOutput:
238
152
  """Gets the invocation's output annotation (i.e. the return annotation of its `invoke()` method)."""
239
153
  return signature(cls.invoke).return_annotation
240
154
 
241
- @classmethod
242
- def get_invocation_for_type(cls, invocation_type: str) -> BaseInvocation | None:
243
- """Gets the invocation class for a given invocation type."""
244
- return cls.get_invocations_map().get(invocation_type)
245
-
246
155
  @staticmethod
247
156
  def json_schema_extra(schema: dict[str, Any], model_class: Type[BaseInvocation]) -> None:
248
157
  """Adds various UI-facing attributes to the invocation's OpenAPI schema."""
@@ -340,6 +249,105 @@ class BaseInvocation(ABC, BaseModel):
340
249
  TBaseInvocation = TypeVar("TBaseInvocation", bound=BaseInvocation)
341
250
 
342
251
 
252
+ class InvocationRegistry:
253
+ _invocation_classes: ClassVar[set[type[BaseInvocation]]] = set()
254
+ _output_classes: ClassVar[set[type[BaseInvocationOutput]]] = set()
255
+
256
+ @classmethod
257
+ def register_invocation(cls, invocation: type[BaseInvocation]) -> None:
258
+ """Registers an invocation."""
259
+ cls._invocation_classes.add(invocation)
260
+ cls.invalidate_invocation_typeadapter()
261
+
262
+ @classmethod
263
+ @lru_cache(maxsize=1)
264
+ def get_invocation_typeadapter(cls) -> TypeAdapter[Any]:
265
+ """Gets a pydantic TypeAdapter for the union of all invocation types.
266
+
267
+ This is used to parse serialized invocations into the correct invocation class.
268
+
269
+ This method is cached to avoid rebuilding the TypeAdapter on every access. If the invocation allowlist or
270
+ denylist is changed, the cache should be cleared to ensure the TypeAdapter is updated and validation respects
271
+ the updated allowlist and denylist.
272
+
273
+ @see https://docs.pydantic.dev/latest/concepts/type_adapter/
274
+ """
275
+ return TypeAdapter(Annotated[Union[tuple(cls.get_invocation_classes())], Field(discriminator="type")])
276
+
277
+ @classmethod
278
+ def invalidate_invocation_typeadapter(cls) -> None:
279
+ """Invalidates the cached invocation type adapter."""
280
+ cls.get_invocation_typeadapter.cache_clear()
281
+
282
+ @classmethod
283
+ def get_invocation_classes(cls) -> Iterable[type[BaseInvocation]]:
284
+ """Gets all invocations, respecting the allowlist and denylist."""
285
+ app_config = get_config()
286
+ allowed_invocations: set[type[BaseInvocation]] = set()
287
+ for sc in cls._invocation_classes:
288
+ invocation_type = sc.get_type()
289
+ is_in_allowlist = (
290
+ invocation_type in app_config.allow_nodes if isinstance(app_config.allow_nodes, list) else True
291
+ )
292
+ is_in_denylist = (
293
+ invocation_type in app_config.deny_nodes if isinstance(app_config.deny_nodes, list) else False
294
+ )
295
+ if is_in_allowlist and not is_in_denylist:
296
+ allowed_invocations.add(sc)
297
+ return allowed_invocations
298
+
299
+ @classmethod
300
+ def get_invocations_map(cls) -> dict[str, type[BaseInvocation]]:
301
+ """Gets a map of all invocation types to their invocation classes."""
302
+ return {i.get_type(): i for i in cls.get_invocation_classes()}
303
+
304
+ @classmethod
305
+ def get_invocation_types(cls) -> Iterable[str]:
306
+ """Gets all invocation types."""
307
+ return (i.get_type() for i in cls.get_invocation_classes())
308
+
309
+ @classmethod
310
+ def get_invocation_for_type(cls, invocation_type: str) -> type[BaseInvocation] | None:
311
+ """Gets the invocation class for a given invocation type."""
312
+ return cls.get_invocations_map().get(invocation_type)
313
+
314
+ @classmethod
315
+ def register_output(cls, output: "type[TBaseInvocationOutput]") -> None:
316
+ """Registers an invocation output."""
317
+ cls._output_classes.add(output)
318
+ cls.invalidate_output_typeadapter()
319
+
320
+ @classmethod
321
+ def get_output_classes(cls) -> Iterable[type[BaseInvocationOutput]]:
322
+ """Gets all invocation outputs."""
323
+ return cls._output_classes
324
+
325
+ @classmethod
326
+ @lru_cache(maxsize=1)
327
+ def get_output_typeadapter(cls) -> TypeAdapter[Any]:
328
+ """Gets a pydantic TypeAdapter for the union of all invocation output types.
329
+
330
+ This is used to parse serialized invocation outputs into the correct invocation output class.
331
+
332
+ This method is cached to avoid rebuilding the TypeAdapter on every access. If the invocation allowlist or
333
+ denylist is changed, the cache should be cleared to ensure the TypeAdapter is updated and validation respects
334
+ the updated allowlist and denylist.
335
+
336
+ @see https://docs.pydantic.dev/latest/concepts/type_adapter/
337
+ """
338
+ return TypeAdapter(Annotated[Union[tuple(cls._output_classes)], Field(discriminator="type")])
339
+
340
+ @classmethod
341
+ def invalidate_output_typeadapter(cls) -> None:
342
+ """Invalidates the cached invocation output type adapter."""
343
+ cls.get_output_typeadapter.cache_clear()
344
+
345
+ @classmethod
346
+ def get_output_types(cls) -> Iterable[str]:
347
+ """Gets all invocation output types."""
348
+ return (i.get_type() for i in cls.get_output_classes())
349
+
350
+
343
351
  RESERVED_NODE_ATTRIBUTE_FIELD_NAMES = {
344
352
  "id",
345
353
  "is_intermediate",
@@ -453,8 +461,8 @@ def invocation(
453
461
  node_pack = cls.__module__.split(".")[0]
454
462
 
455
463
  # Handle the case where an existing node is being clobbered by the one we are registering
456
- if invocation_type in BaseInvocation.get_invocation_types():
457
- clobbered_invocation = BaseInvocation.get_invocation_for_type(invocation_type)
464
+ if invocation_type in InvocationRegistry.get_invocation_types():
465
+ clobbered_invocation = InvocationRegistry.get_invocation_for_type(invocation_type)
458
466
  # This should always be true - we just checked if the invocation type was in the set
459
467
  assert clobbered_invocation is not None
460
468
 
@@ -539,8 +547,7 @@ def invocation(
539
547
  )
540
548
  cls.__doc__ = docstring
541
549
 
542
- # TODO: how to type this correctly? it's typed as ModelMetaclass, a private class in pydantic
543
- BaseInvocation.register_invocation(cls) # type: ignore
550
+ InvocationRegistry.register_invocation(cls)
544
551
 
545
552
  return cls
546
553
 
@@ -565,7 +572,7 @@ def invocation_output(
565
572
  if re.compile(r"^\S+$").match(output_type) is None:
566
573
  raise ValueError(f'"output_type" must consist of non-whitespace characters, got "{output_type}"')
567
574
 
568
- if output_type in BaseInvocationOutput.get_output_types():
575
+ if output_type in InvocationRegistry.get_output_types():
569
576
  raise ValueError(f'Invocation type "{output_type}" already exists')
570
577
 
571
578
  validate_fields(cls.model_fields, output_type)
@@ -586,7 +593,7 @@ def invocation_output(
586
593
  )
587
594
  cls.__doc__ = docstring
588
595
 
589
- BaseInvocationOutput.register_output(cls) # type: ignore # TODO: how to type this correctly?
596
+ InvocationRegistry.register_output(cls)
590
597
 
591
598
  return cls
592
599
 
@@ -21,10 +21,16 @@ class ObjectSerializerDisk(ObjectSerializerBase[T]):
21
21
  """Disk-backed storage for arbitrary python objects. Serialization is handled by `torch.save` and `torch.load`.
22
22
 
23
23
  :param output_dir: The folder where the serialized objects will be stored
24
+ :param safe_globals: A list of types to be added to the safe globals for torch serialization
24
25
  :param ephemeral: If True, objects will be stored in a temporary directory inside the given output_dir and cleaned up on exit
25
26
  """
26
27
 
27
- def __init__(self, output_dir: Path, ephemeral: bool = False):
28
+ def __init__(
29
+ self,
30
+ output_dir: Path,
31
+ safe_globals: list[type],
32
+ ephemeral: bool = False,
33
+ ) -> None:
28
34
  super().__init__()
29
35
  self._ephemeral = ephemeral
30
36
  self._base_output_dir = output_dir
@@ -42,6 +48,8 @@ class ObjectSerializerDisk(ObjectSerializerBase[T]):
42
48
  self._output_dir = Path(self._tempdir.name) if self._tempdir else self._base_output_dir
43
49
  self.__obj_class_name: Optional[str] = None
44
50
 
51
+ torch.serialization.add_safe_globals(safe_globals) if safe_globals else None
52
+
45
53
  def load(self, name: str) -> T:
46
54
  file_path = self._get_path(name)
47
55
  try:
@@ -21,6 +21,7 @@ from invokeai.app.invocations import * # noqa: F401 F403
21
21
  from invokeai.app.invocations.baseinvocation import (
22
22
  BaseInvocation,
23
23
  BaseInvocationOutput,
24
+ InvocationRegistry,
24
25
  invocation,
25
26
  invocation_output,
26
27
  )
@@ -283,7 +284,7 @@ class AnyInvocation(BaseInvocation):
283
284
  @classmethod
284
285
  def __get_pydantic_core_schema__(cls, source_type: Any, handler: GetCoreSchemaHandler) -> core_schema.CoreSchema:
285
286
  def validate_invocation(v: Any) -> "AnyInvocation":
286
- return BaseInvocation.get_typeadapter().validate_python(v)
287
+ return InvocationRegistry.get_invocation_typeadapter().validate_python(v)
287
288
 
288
289
  return core_schema.no_info_plain_validator_function(validate_invocation)
289
290
 
@@ -294,7 +295,7 @@ class AnyInvocation(BaseInvocation):
294
295
  # Nodes are too powerful, we have to make our own OpenAPI schema manually
295
296
  # No but really, because the schema is dynamic depending on loaded nodes, we need to generate it manually
296
297
  oneOf: list[dict[str, str]] = []
297
- names = [i.__name__ for i in BaseInvocation.get_invocations()]
298
+ names = [i.__name__ for i in InvocationRegistry.get_invocation_classes()]
298
299
  for name in sorted(names):
299
300
  oneOf.append({"$ref": f"#/components/schemas/{name}"})
300
301
  return {"oneOf": oneOf}
@@ -304,7 +305,7 @@ class AnyInvocationOutput(BaseInvocationOutput):
304
305
  @classmethod
305
306
  def __get_pydantic_core_schema__(cls, source_type: Any, handler: GetCoreSchemaHandler):
306
307
  def validate_invocation_output(v: Any) -> "AnyInvocationOutput":
307
- return BaseInvocationOutput.get_typeadapter().validate_python(v)
308
+ return InvocationRegistry.get_output_typeadapter().validate_python(v)
308
309
 
309
310
  return core_schema.no_info_plain_validator_function(validate_invocation_output)
310
311
 
@@ -316,7 +317,7 @@ class AnyInvocationOutput(BaseInvocationOutput):
316
317
  # No but really, because the schema is dynamic depending on loaded nodes, we need to generate it manually
317
318
 
318
319
  oneOf: list[dict[str, str]] = []
319
- names = [i.__name__ for i in BaseInvocationOutput.get_outputs()]
320
+ names = [i.__name__ for i in InvocationRegistry.get_output_classes()]
320
321
  for name in sorted(names):
321
322
  oneOf.append({"$ref": f"#/components/schemas/{name}"})
322
323
  return {"oneOf": oneOf}
@@ -4,7 +4,10 @@ from fastapi import FastAPI
4
4
  from fastapi.openapi.utils import get_openapi
5
5
  from pydantic.json_schema import models_json_schema
6
6
 
7
- from invokeai.app.invocations.baseinvocation import BaseInvocation, BaseInvocationOutput, UIConfigBase
7
+ from invokeai.app.invocations.baseinvocation import (
8
+ InvocationRegistry,
9
+ UIConfigBase,
10
+ )
8
11
  from invokeai.app.invocations.fields import InputFieldJSONSchemaExtra, OutputFieldJSONSchemaExtra
9
12
  from invokeai.app.invocations.model import ModelIdentifierField
10
13
  from invokeai.app.services.events.events_common import EventBase
@@ -56,14 +59,14 @@ def get_openapi_func(
56
59
  invocation_output_map_required: list[str] = []
57
60
 
58
61
  # We need to manually add all outputs to the schema - pydantic doesn't add them because they aren't used directly.
59
- for output in BaseInvocationOutput.get_outputs():
62
+ for output in InvocationRegistry.get_output_classes():
60
63
  json_schema = output.model_json_schema(mode="serialization", ref_template="#/components/schemas/{model}")
61
64
  move_defs_to_top_level(openapi_schema, json_schema)
62
65
  openapi_schema["components"]["schemas"][output.__name__] = json_schema
63
66
 
64
67
  # Technically, invocations are added to the schema by pydantic, but we still need to manually set their output
65
68
  # property, so we'll just do it all manually.
66
- for invocation in BaseInvocation.get_invocations():
69
+ for invocation in InvocationRegistry.get_invocation_classes():
67
70
  json_schema = invocation.model_json_schema(
68
71
  mode="serialization", ref_template="#/components/schemas/{model}"
69
72
  )