InvokeAI 4.2.3__tar.gz → 4.2.4__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.
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/InvokeAI.egg-info/PKG-INFO +1 -1
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/InvokeAI.egg-info/SOURCES.txt +8 -4
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/InvokeAI.egg-info/requires.txt +7 -7
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/PKG-INFO +1 -1
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/api/dependencies.py +3 -3
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/api/routers/model_manager.py +1 -1
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/api/routers/session_queue.py +1 -0
- InvokeAI-4.2.4/invokeai/app/api/sockets.py +125 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/api_app.py +2 -98
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/invocations/baseinvocation.py +19 -11
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/invocations/compel.py +21 -24
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/invocations/latent.py +69 -46
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/bulk_download/bulk_download_default.py +5 -12
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/download/download_default.py +10 -20
- InvokeAI-4.2.4/invokeai/app/services/events/events_base.py +195 -0
- InvokeAI-4.2.4/invokeai/app/services/events/events_common.py +592 -0
- InvokeAI-4.2.4/invokeai/app/services/events/events_fastapievents.py +47 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/model_install/__init__.py +3 -1
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/model_install/model_install_base.py +5 -230
- InvokeAI-4.2.4/invokeai/app/services/model_install/model_install_common.py +233 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/model_install/model_install_default.py +16 -37
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/model_load/model_load_base.py +1 -8
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/model_load/model_load_default.py +9 -50
- InvokeAI-4.2.4/invokeai/app/services/session_processor/session_processor_base.py +153 -0
- InvokeAI-4.2.4/invokeai/app/services/session_processor/session_processor_default.py +507 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/session_queue/session_queue_base.py +19 -1
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/session_queue/session_queue_common.py +17 -2
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/session_queue/session_queue_sqlite.py +61 -109
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/shared/graph.py +86 -103
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/shared/invocation_context.py +9 -10
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/shared/sqlite/sqlite_util.py +2 -0
- InvokeAI-4.2.4/invokeai/app/services/shared/sqlite_migrator/migrations/migration_10.py +35 -0
- InvokeAI-4.2.4/invokeai/app/util/custom_openapi.py +116 -0
- InvokeAI-4.2.4/invokeai/app/util/step_callback.py +97 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/model_manager/load/model_cache/model_cache_base.py +17 -1
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/model_manager/load/model_cache/model_cache_default.py +26 -36
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/model_manager/load/model_cache/model_locker.py +1 -1
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/textual_inversion.py +28 -11
- InvokeAI-4.2.4/invokeai/frontend/web/dist/assets/App-IufUCLxZ.js +137 -0
- InvokeAI-4.2.4/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-CQIRp5vD.js +1 -0
- InvokeAI-4.2.4/invokeai/frontend/web/dist/assets/index-CSQTzMJa.js +510 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/index.html +1 -1
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/locales/de.json +2 -1
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/locales/en.json +20 -2
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/locales/es.json +52 -4
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/locales/it.json +64 -30
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/locales/ru.json +76 -14
- InvokeAI-4.2.4/invokeai/frontend/web/dist/locales/zh_Hant.json +249 -0
- InvokeAI-4.2.4/invokeai/version/invokeai_version.py +1 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/pyproject.toml +7 -7
- InvokeAI-4.2.3/invokeai/app/api/events.py +0 -52
- InvokeAI-4.2.3/invokeai/app/api/sockets.py +0 -66
- InvokeAI-4.2.3/invokeai/app/services/events/events_base.py +0 -490
- InvokeAI-4.2.3/invokeai/app/services/session_processor/session_processor_base.py +0 -28
- InvokeAI-4.2.3/invokeai/app/services/session_processor/session_processor_default.py +0 -300
- InvokeAI-4.2.3/invokeai/app/util/step_callback.py +0 -127
- InvokeAI-4.2.3/invokeai/frontend/web/dist/assets/App-vL2OZtc4.js +0 -137
- InvokeAI-4.2.3/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-B4Q4rD3s.js +0 -1
- InvokeAI-4.2.3/invokeai/frontend/web/dist/assets/index-Cilgq8Ke.js +0 -510
- InvokeAI-4.2.3/invokeai/frontend/web/dist/locales/zh_Hant.json +0 -27
- InvokeAI-4.2.3/invokeai/version/invokeai_version.py +0 -1
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/InvokeAI.egg-info/dependency_links.txt +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/InvokeAI.egg-info/entry_points.txt +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/InvokeAI.egg-info/top_level.txt +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/LICENSE +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/LICENSE-SD1+SD2.txt +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/LICENSE-SDXL.txt +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/README.md +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/api/no_cache_staticfiles.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/api/routers/app_info.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/api/routers/board_images.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/api/routers/boards.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/api/routers/download_queue.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/api/routers/images.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/api/routers/utilities.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/api/routers/workflows.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/assets/images/caution.png +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/invocations/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/invocations/collections.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/invocations/constants.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/invocations/controlnet_image_processors.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/invocations/custom_nodes/README.md +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/invocations/custom_nodes/init.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/invocations/cv.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/invocations/facetools.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/invocations/fields.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/invocations/image.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/invocations/infill.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/invocations/ip_adapter.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/invocations/mask.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/invocations/math.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/invocations/metadata.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/invocations/model.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/invocations/noise.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/invocations/param_easing.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/invocations/primitives.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/invocations/prompt.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/invocations/sdxl.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/invocations/strings.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/invocations/t2i_adapter.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/invocations/tiles.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/invocations/upscale.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/invocations/util.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/run_app.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/board_image_records/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/board_image_records/board_image_records_base.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/board_image_records/board_image_records_sqlite.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/board_images/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/board_images/board_images_base.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/board_images/board_images_common.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/board_images/board_images_default.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/board_records/board_records_base.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/board_records/board_records_common.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/board_records/board_records_sqlite.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/boards/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/boards/boards_base.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/boards/boards_common.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/boards/boards_default.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/bulk_download/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/bulk_download/bulk_download_base.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/bulk_download/bulk_download_common.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/config/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/config/config_common.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/config/config_default.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/download/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/download/download_base.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/events/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/image_files/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/image_files/image_files_base.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/image_files/image_files_common.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/image_files/image_files_disk.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/image_records/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/image_records/image_records_base.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/image_records/image_records_common.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/image_records/image_records_sqlite.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/images/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/images/images_base.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/images/images_common.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/images/images_default.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/invocation_cache/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/invocation_cache/invocation_cache_base.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/invocation_cache/invocation_cache_common.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/invocation_cache/invocation_cache_memory.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/invocation_services.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/invocation_stats/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/invocation_stats/invocation_stats_base.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/invocation_stats/invocation_stats_common.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/invocation_stats/invocation_stats_default.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/invoker.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/item_storage/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/item_storage/item_storage_base.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/item_storage/item_storage_common.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/item_storage/item_storage_memory.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/model_images/model_images_base.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/model_images/model_images_common.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/model_images/model_images_default.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/model_load/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/model_manager/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/model_manager/model_manager_base.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/model_manager/model_manager_common.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/model_manager/model_manager_default.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/model_records/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/model_records/model_records_base.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/model_records/model_records_sql.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/names/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/names/names_base.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/names/names_common.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/names/names_default.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/object_serializer/object_serializer_base.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/object_serializer/object_serializer_common.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/object_serializer/object_serializer_disk.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/object_serializer/object_serializer_forward_cache.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/session_processor/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/session_processor/session_processor_common.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/session_queue/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/shared/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/shared/pagination.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/shared/sqlite/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/shared/sqlite/sqlite_common.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/shared/sqlite/sqlite_database.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/shared/sqlite_migrator/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/shared/sqlite_migrator/migrations/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_1.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_2.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_3.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_4.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_5.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_6.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_7.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_8.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_9.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/shared/sqlite_migrator/sqlite_migrator_common.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/shared/sqlite_migrator/sqlite_migrator_impl.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/urls/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/urls/urls_base.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/urls/urls_default.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/workflow_records/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/workflow_records/default_workflows/ESRGAN Upscaling with Canny ControlNet.json +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/workflow_records/default_workflows/Face Detailer with IP-Adapter & Canny (See Note in Details).json +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/workflow_records/default_workflows/Multi ControlNet (Canny & Depth).json +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/workflow_records/default_workflows/Prompt from File.json +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/workflow_records/default_workflows/Text to Image - SD1.5.json +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/workflow_records/default_workflows/Text to Image - SDXL.json +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/workflow_records/default_workflows/Text to Image with LoRA.json +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/workflow_records/default_workflows/Tiled Upscaling (Beta).json +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/workflow_records/workflow_records_base.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/workflow_records/workflow_records_common.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/services/workflow_records/workflow_records_sqlite.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/shared/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/shared/models.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/util/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/util/controlnet_utils.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/util/download_with_progress.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/util/metaenum.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/util/misc.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/util/model_exclude_null.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/util/profiler.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/util/suppress_output.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/util/thumbnails.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/app/util/ti_utils.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/assets/fonts/inter/Inter-Regular.ttf +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/image_util/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/image_util/basicsr/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/image_util/basicsr/arch_util.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/image_util/basicsr/rrdbnet_arch.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/image_util/canny.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/image_util/depth_anything/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/image_util/depth_anything/model/blocks.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/image_util/depth_anything/model/dpt.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/image_util/depth_anything/utilities/util.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/image_util/dw_openpose/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/image_util/dw_openpose/onnxdet.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/image_util/dw_openpose/onnxpose.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/image_util/dw_openpose/utils.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/image_util/dw_openpose/wholebody.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/image_util/hed.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/image_util/infill_methods/cv2_inpaint.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/image_util/infill_methods/lama.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/image_util/infill_methods/mosaic.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/image_util/infill_methods/patchmatch.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/image_util/infill_methods/tile.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/image_util/invisible_watermark.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/image_util/lineart.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/image_util/lineart_anime.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/image_util/pngwriter.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/image_util/realesrgan/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/image_util/realesrgan/realesrgan.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/image_util/safety_checker.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/image_util/util.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/ip_adapter/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/ip_adapter/ip_adapter.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/ip_adapter/ip_attention_weights.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/ip_adapter/resampler.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/lora.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/model_hash/model_hash.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/model_manager/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/model_manager/config.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/model_manager/convert_ckpt_to_diffusers.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/model_manager/libc_util.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/model_manager/load/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/model_manager/load/convert_cache/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/model_manager/load/convert_cache/convert_cache_base.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/model_manager/load/convert_cache/convert_cache_default.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/model_manager/load/load_base.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/model_manager/load/load_default.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/model_manager/load/memory_snapshot.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/model_manager/load/model_cache/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/model_manager/load/model_loader_registry.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/model_manager/load/model_loaders/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/model_manager/load/model_loaders/controlnet.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/model_manager/load/model_loaders/generic_diffusers.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/model_manager/load/model_loaders/ip_adapter.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/model_manager/load/model_loaders/lora.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/model_manager/load/model_loaders/onnx.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/model_manager/load/model_loaders/stable_diffusion.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/model_manager/load/model_loaders/textual_inversion.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/model_manager/load/model_loaders/vae.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/model_manager/load/model_util.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/model_manager/load/optimizations.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/model_manager/merge.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/model_manager/metadata/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/model_manager/metadata/fetch/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/model_manager/metadata/fetch/fetch_base.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/model_manager/metadata/fetch/huggingface.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/model_manager/metadata/metadata_base.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/model_manager/probe.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/model_manager/search.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/model_manager/starter_models.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/model_manager/util/libc_util.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/model_manager/util/model_util.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/model_manager/util/select_hf_files.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/model_patcher.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/onnx/onnx_runtime.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/raw_model.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/stable_diffusion/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/stable_diffusion/diffusers_pipeline.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/stable_diffusion/diffusion/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/stable_diffusion/diffusion/conditioning_data.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/stable_diffusion/diffusion/custom_atttention.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/stable_diffusion/diffusion/regional_ip_data.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/stable_diffusion/diffusion/regional_prompt_data.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/stable_diffusion/diffusion/shared_invokeai_diffusion.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/stable_diffusion/diffusion/unet_attention_patcher.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/stable_diffusion/schedulers/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/stable_diffusion/schedulers/schedulers.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/stable_diffusion/seamless.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/tiles/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/tiles/tiles.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/tiles/utils.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/util/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/util/attention.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/util/catch_sigint.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/util/db_maintenance.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/util/devices.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/util/hotfixes.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/util/logging.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/util/mask.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/util/mps_fixes.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/util/silence_warnings.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/util/test_utils.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/backend/util/util.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/configs/controlnet/cldm_v15.yaml +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/configs/controlnet/cldm_v21.yaml +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/configs/stable-diffusion/sd_xl_base.yaml +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/configs/stable-diffusion/sd_xl_inpaint.yaml +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/configs/stable-diffusion/sd_xl_refiner.yaml +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/configs/stable-diffusion/v1-finetune.yaml +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/configs/stable-diffusion/v1-finetune_style.yaml +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/configs/stable-diffusion/v1-inference-v.yaml +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/configs/stable-diffusion/v1-inference.yaml +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/configs/stable-diffusion/v1-inpainting-inference.yaml +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/configs/stable-diffusion/v1-m1-finetune.yaml +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/configs/stable-diffusion/v2-inference-v.yaml +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/configs/stable-diffusion/v2-inference.yaml +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/configs/stable-diffusion/v2-inpainting-inference-v.yaml +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/configs/stable-diffusion/v2-inpainting-inference.yaml +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/configs/stable-diffusion/v2-midas-inference.yaml +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/cli/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/cli/arg_parser.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/install/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/install/import_images.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/assets/App-DEu4J2pT.css +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-DzjsLZSc.css +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/assets/images/invoke-alert-favicon.svg +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/assets/images/invoke-avatar-circle.svg +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/assets/images/invoke-avatar-square.svg +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/assets/images/invoke-favicon.png +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/assets/images/invoke-favicon.svg +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/assets/images/invoke-key-char-lrg.svg +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/assets/images/invoke-key-char-sml.svg +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/assets/images/invoke-key-wht-lrg.svg +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/assets/images/invoke-key-wht-sml.svg +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/assets/images/invoke-symbol-char-lrg.svg +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/assets/images/invoke-symbol-char-sml.svg +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/assets/images/invoke-symbol-wht-lrg.svg +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/assets/images/invoke-symbol-wht-sml.svg +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/assets/images/invoke-symbol-ylw-lrg.svg +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/assets/images/invoke-tag-char-lrg.svg +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/assets/images/invoke-tag-char-sml.svg +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/assets/images/invoke-tag-lrg.svg +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/assets/images/invoke-tag-sml.svg +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/assets/images/invoke-wordmark-charcoal.svg +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/assets/images/invoke-wordmark-white.svg +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/assets/images/mask.svg +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/assets/images/transparent_bg.png +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/assets/inter-cyrillic-ext-wght-normal-DIEz8p5i.woff2 +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/assets/inter-cyrillic-wght-normal-BmJJXa8e.woff2 +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/assets/inter-greek-ext-wght-normal-D5AYLNiq.woff2 +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/assets/inter-greek-wght-normal-DyIDNIyN.woff2 +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/assets/inter-latin-ext-wght-normal-CN1pIXkb.woff2 +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/assets/inter-latin-wght-normal-BgVq2Tq4.woff2 +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/assets/inter-vietnamese-wght-normal-_GQuwPVU.woff2 +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/locales/ar.json +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/locales/az.json +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/locales/bg.json +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/locales/fi.json +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/locales/fr.json +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/locales/he.json +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/locales/hu.json +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/locales/ja.json +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/locales/ko.json +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/locales/mn.json +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/locales/nl.json +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/locales/pl.json +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/locales/pt.json +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/locales/pt_BR.json +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/locales/ro.json +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/locales/sv.json +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/locales/tr.json +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/locales/uk.json +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/locales/vi.json +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/dist/locales/zh_CN.json +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/scripts/clean_translations.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/frontend/web/static/docs/invoke-favicon-docs.svg +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/invocation_api/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/invokeai/version/__init__.py +0 -0
- {InvokeAI-4.2.3 → InvokeAI-4.2.4}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: InvokeAI
|
|
3
|
-
Version: 4.2.
|
|
3
|
+
Version: 4.2.4
|
|
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
|
|
@@ -13,7 +13,6 @@ invokeai/app/__init__.py
|
|
|
13
13
|
invokeai/app/api_app.py
|
|
14
14
|
invokeai/app/run_app.py
|
|
15
15
|
invokeai/app/api/dependencies.py
|
|
16
|
-
invokeai/app/api/events.py
|
|
17
16
|
invokeai/app/api/no_cache_staticfiles.py
|
|
18
17
|
invokeai/app/api/sockets.py
|
|
19
18
|
invokeai/app/api/routers/app_info.py
|
|
@@ -84,6 +83,8 @@ invokeai/app/services/download/download_base.py
|
|
|
84
83
|
invokeai/app/services/download/download_default.py
|
|
85
84
|
invokeai/app/services/events/__init__.py
|
|
86
85
|
invokeai/app/services/events/events_base.py
|
|
86
|
+
invokeai/app/services/events/events_common.py
|
|
87
|
+
invokeai/app/services/events/events_fastapievents.py
|
|
87
88
|
invokeai/app/services/image_files/__init__.py
|
|
88
89
|
invokeai/app/services/image_files/image_files_base.py
|
|
89
90
|
invokeai/app/services/image_files/image_files_common.py
|
|
@@ -113,6 +114,7 @@ invokeai/app/services/model_images/model_images_common.py
|
|
|
113
114
|
invokeai/app/services/model_images/model_images_default.py
|
|
114
115
|
invokeai/app/services/model_install/__init__.py
|
|
115
116
|
invokeai/app/services/model_install/model_install_base.py
|
|
117
|
+
invokeai/app/services/model_install/model_install_common.py
|
|
116
118
|
invokeai/app/services/model_install/model_install_default.py
|
|
117
119
|
invokeai/app/services/model_load/__init__.py
|
|
118
120
|
invokeai/app/services/model_load/model_load_base.py
|
|
@@ -153,6 +155,7 @@ invokeai/app/services/shared/sqlite_migrator/sqlite_migrator_common.py
|
|
|
153
155
|
invokeai/app/services/shared/sqlite_migrator/sqlite_migrator_impl.py
|
|
154
156
|
invokeai/app/services/shared/sqlite_migrator/migrations/__init__.py
|
|
155
157
|
invokeai/app/services/shared/sqlite_migrator/migrations/migration_1.py
|
|
158
|
+
invokeai/app/services/shared/sqlite_migrator/migrations/migration_10.py
|
|
156
159
|
invokeai/app/services/shared/sqlite_migrator/migrations/migration_2.py
|
|
157
160
|
invokeai/app/services/shared/sqlite_migrator/migrations/migration_3.py
|
|
158
161
|
invokeai/app/services/shared/sqlite_migrator/migrations/migration_4.py
|
|
@@ -180,6 +183,7 @@ invokeai/app/shared/__init__.py
|
|
|
180
183
|
invokeai/app/shared/models.py
|
|
181
184
|
invokeai/app/util/__init__.py
|
|
182
185
|
invokeai/app/util/controlnet_utils.py
|
|
186
|
+
invokeai/app/util/custom_openapi.py
|
|
183
187
|
invokeai/app/util/download_with_progress.py
|
|
184
188
|
invokeai/app/util/metaenum.py
|
|
185
189
|
invokeai/app/util/misc.py
|
|
@@ -319,10 +323,10 @@ invokeai/frontend/install/import_images.py
|
|
|
319
323
|
invokeai/frontend/web/__init__.py
|
|
320
324
|
invokeai/frontend/web/dist/index.html
|
|
321
325
|
invokeai/frontend/web/dist/assets/App-DEu4J2pT.css
|
|
322
|
-
invokeai/frontend/web/dist/assets/App-
|
|
323
|
-
invokeai/frontend/web/dist/assets/ThemeLocaleProvider-
|
|
326
|
+
invokeai/frontend/web/dist/assets/App-IufUCLxZ.js
|
|
327
|
+
invokeai/frontend/web/dist/assets/ThemeLocaleProvider-CQIRp5vD.js
|
|
324
328
|
invokeai/frontend/web/dist/assets/ThemeLocaleProvider-DzjsLZSc.css
|
|
325
|
-
invokeai/frontend/web/dist/assets/index-
|
|
329
|
+
invokeai/frontend/web/dist/assets/index-CSQTzMJa.js
|
|
326
330
|
invokeai/frontend/web/dist/assets/inter-cyrillic-ext-wght-normal-DIEz8p5i.woff2
|
|
327
331
|
invokeai/frontend/web/dist/assets/inter-cyrillic-wght-normal-BmJJXa8e.woff2
|
|
328
332
|
invokeai/frontend/web/dist/assets/inter-greek-ext-wght-normal-D5AYLNiq.woff2
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
accelerate==0.
|
|
2
|
-
clip_anytorch==2.
|
|
1
|
+
accelerate==0.30.1
|
|
2
|
+
clip_anytorch==2.6.0
|
|
3
3
|
compel==2.0.2
|
|
4
4
|
controlnet-aux==0.0.7
|
|
5
5
|
diffusers[torch]==0.27.2
|
|
@@ -10,18 +10,18 @@ onnx==1.15.0
|
|
|
10
10
|
onnxruntime==1.16.3
|
|
11
11
|
opencv-python==4.9.0.80
|
|
12
12
|
pytorch-lightning==2.1.3
|
|
13
|
-
safetensors==0.4.
|
|
13
|
+
safetensors==0.4.3
|
|
14
14
|
timm==0.6.13
|
|
15
15
|
torch==2.2.2
|
|
16
16
|
torchmetrics==0.11.4
|
|
17
17
|
torchsde==0.2.6
|
|
18
18
|
torchvision==0.17.2
|
|
19
|
-
transformers==4.
|
|
19
|
+
transformers==4.41.1
|
|
20
20
|
fastapi-events==0.11.0
|
|
21
|
-
fastapi==0.
|
|
22
|
-
huggingface-hub==0.
|
|
21
|
+
fastapi==0.111.0
|
|
22
|
+
huggingface-hub==0.23.1
|
|
23
23
|
pydantic-settings==2.2.1
|
|
24
|
-
pydantic==2.
|
|
24
|
+
pydantic==2.7.2
|
|
25
25
|
python-socketio==5.11.1
|
|
26
26
|
uvicorn[standard]==0.28.0
|
|
27
27
|
albumentations
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: InvokeAI
|
|
3
|
-
Version: 4.2.
|
|
3
|
+
Version: 4.2.4
|
|
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
|
|
@@ -18,6 +18,7 @@ from ..services.boards.boards_default import BoardService
|
|
|
18
18
|
from ..services.bulk_download.bulk_download_default import BulkDownloadService
|
|
19
19
|
from ..services.config import InvokeAIAppConfig
|
|
20
20
|
from ..services.download import DownloadQueueService
|
|
21
|
+
from ..services.events.events_fastapievents import FastAPIEventService
|
|
21
22
|
from ..services.image_files.image_files_disk import DiskImageFileStorage
|
|
22
23
|
from ..services.image_records.image_records_sqlite import SqliteImageRecordStorage
|
|
23
24
|
from ..services.images.images_default import ImageService
|
|
@@ -29,11 +30,10 @@ from ..services.model_images.model_images_default import ModelImageFileStorageDi
|
|
|
29
30
|
from ..services.model_manager.model_manager_default import ModelManagerService
|
|
30
31
|
from ..services.model_records import ModelRecordServiceSQL
|
|
31
32
|
from ..services.names.names_default import SimpleNameService
|
|
32
|
-
from ..services.session_processor.session_processor_default import DefaultSessionProcessor
|
|
33
|
+
from ..services.session_processor.session_processor_default import DefaultSessionProcessor, DefaultSessionRunner
|
|
33
34
|
from ..services.session_queue.session_queue_sqlite import SqliteSessionQueue
|
|
34
35
|
from ..services.urls.urls_default import LocalUrlService
|
|
35
36
|
from ..services.workflow_records.workflow_records_sqlite import SqliteWorkflowRecordsStorage
|
|
36
|
-
from .events import FastAPIEventService
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
# TODO: is there a better way to achieve this?
|
|
@@ -103,7 +103,7 @@ class ApiDependencies:
|
|
|
103
103
|
)
|
|
104
104
|
names = SimpleNameService()
|
|
105
105
|
performance_statistics = InvocationStatsService()
|
|
106
|
-
session_processor = DefaultSessionProcessor()
|
|
106
|
+
session_processor = DefaultSessionProcessor(session_runner=DefaultSessionRunner())
|
|
107
107
|
session_queue = SqliteSessionQueue(db=db)
|
|
108
108
|
urls = LocalUrlService()
|
|
109
109
|
workflow_records = SqliteWorkflowRecordsStorage(db=db)
|
|
@@ -17,7 +17,7 @@ from starlette.exceptions import HTTPException
|
|
|
17
17
|
from typing_extensions import Annotated
|
|
18
18
|
|
|
19
19
|
from invokeai.app.services.model_images.model_images_common import ModelImageFileNotFoundException
|
|
20
|
-
from invokeai.app.services.model_install import ModelInstallJob
|
|
20
|
+
from invokeai.app.services.model_install.model_install_common import ModelInstallJob
|
|
21
21
|
from invokeai.app.services.model_records import (
|
|
22
22
|
DuplicateModelException,
|
|
23
23
|
InvalidModelException,
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# Copyright (c) 2022 Kyle Schouviller (https://github.com/kyle0654)
|
|
2
|
+
|
|
3
|
+
from typing import Any
|
|
4
|
+
|
|
5
|
+
from fastapi import FastAPI
|
|
6
|
+
from pydantic import BaseModel
|
|
7
|
+
from socketio import ASGIApp, AsyncServer
|
|
8
|
+
|
|
9
|
+
from invokeai.app.services.events.events_common import (
|
|
10
|
+
BatchEnqueuedEvent,
|
|
11
|
+
BulkDownloadCompleteEvent,
|
|
12
|
+
BulkDownloadErrorEvent,
|
|
13
|
+
BulkDownloadEventBase,
|
|
14
|
+
BulkDownloadStartedEvent,
|
|
15
|
+
DownloadCancelledEvent,
|
|
16
|
+
DownloadCompleteEvent,
|
|
17
|
+
DownloadErrorEvent,
|
|
18
|
+
DownloadEventBase,
|
|
19
|
+
DownloadProgressEvent,
|
|
20
|
+
DownloadStartedEvent,
|
|
21
|
+
FastAPIEvent,
|
|
22
|
+
InvocationCompleteEvent,
|
|
23
|
+
InvocationDenoiseProgressEvent,
|
|
24
|
+
InvocationErrorEvent,
|
|
25
|
+
InvocationStartedEvent,
|
|
26
|
+
ModelEventBase,
|
|
27
|
+
ModelInstallCancelledEvent,
|
|
28
|
+
ModelInstallCompleteEvent,
|
|
29
|
+
ModelInstallDownloadProgressEvent,
|
|
30
|
+
ModelInstallDownloadsCompleteEvent,
|
|
31
|
+
ModelInstallErrorEvent,
|
|
32
|
+
ModelInstallStartedEvent,
|
|
33
|
+
ModelLoadCompleteEvent,
|
|
34
|
+
ModelLoadStartedEvent,
|
|
35
|
+
QueueClearedEvent,
|
|
36
|
+
QueueEventBase,
|
|
37
|
+
QueueItemStatusChangedEvent,
|
|
38
|
+
register_events,
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
class QueueSubscriptionEvent(BaseModel):
|
|
43
|
+
"""Event data for subscribing to the socket.io queue room.
|
|
44
|
+
This is a pydantic model to ensure the data is in the correct format."""
|
|
45
|
+
|
|
46
|
+
queue_id: str
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
class BulkDownloadSubscriptionEvent(BaseModel):
|
|
50
|
+
"""Event data for subscribing to the socket.io bulk downloads room.
|
|
51
|
+
This is a pydantic model to ensure the data is in the correct format."""
|
|
52
|
+
|
|
53
|
+
bulk_download_id: str
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
QUEUE_EVENTS = {
|
|
57
|
+
InvocationStartedEvent,
|
|
58
|
+
InvocationDenoiseProgressEvent,
|
|
59
|
+
InvocationCompleteEvent,
|
|
60
|
+
InvocationErrorEvent,
|
|
61
|
+
QueueItemStatusChangedEvent,
|
|
62
|
+
BatchEnqueuedEvent,
|
|
63
|
+
QueueClearedEvent,
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
MODEL_EVENTS = {
|
|
67
|
+
DownloadCancelledEvent,
|
|
68
|
+
DownloadCompleteEvent,
|
|
69
|
+
DownloadErrorEvent,
|
|
70
|
+
DownloadProgressEvent,
|
|
71
|
+
DownloadStartedEvent,
|
|
72
|
+
ModelLoadStartedEvent,
|
|
73
|
+
ModelLoadCompleteEvent,
|
|
74
|
+
ModelInstallDownloadProgressEvent,
|
|
75
|
+
ModelInstallDownloadsCompleteEvent,
|
|
76
|
+
ModelInstallStartedEvent,
|
|
77
|
+
ModelInstallCompleteEvent,
|
|
78
|
+
ModelInstallCancelledEvent,
|
|
79
|
+
ModelInstallErrorEvent,
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
BULK_DOWNLOAD_EVENTS = {BulkDownloadStartedEvent, BulkDownloadCompleteEvent, BulkDownloadErrorEvent}
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
class SocketIO:
|
|
86
|
+
_sub_queue = "subscribe_queue"
|
|
87
|
+
_unsub_queue = "unsubscribe_queue"
|
|
88
|
+
|
|
89
|
+
_sub_bulk_download = "subscribe_bulk_download"
|
|
90
|
+
_unsub_bulk_download = "unsubscribe_bulk_download"
|
|
91
|
+
|
|
92
|
+
def __init__(self, app: FastAPI):
|
|
93
|
+
self._sio = AsyncServer(async_mode="asgi", cors_allowed_origins="*")
|
|
94
|
+
self._app = ASGIApp(socketio_server=self._sio, socketio_path="/ws/socket.io")
|
|
95
|
+
app.mount("/ws", self._app)
|
|
96
|
+
|
|
97
|
+
self._sio.on(self._sub_queue, handler=self._handle_sub_queue)
|
|
98
|
+
self._sio.on(self._unsub_queue, handler=self._handle_unsub_queue)
|
|
99
|
+
self._sio.on(self._sub_bulk_download, handler=self._handle_sub_bulk_download)
|
|
100
|
+
self._sio.on(self._unsub_bulk_download, handler=self._handle_unsub_bulk_download)
|
|
101
|
+
|
|
102
|
+
register_events(QUEUE_EVENTS, self._handle_queue_event)
|
|
103
|
+
register_events(MODEL_EVENTS, self._handle_model_event)
|
|
104
|
+
register_events(BULK_DOWNLOAD_EVENTS, self._handle_bulk_image_download_event)
|
|
105
|
+
|
|
106
|
+
async def _handle_sub_queue(self, sid: str, data: Any) -> None:
|
|
107
|
+
await self._sio.enter_room(sid, QueueSubscriptionEvent(**data).queue_id)
|
|
108
|
+
|
|
109
|
+
async def _handle_unsub_queue(self, sid: str, data: Any) -> None:
|
|
110
|
+
await self._sio.leave_room(sid, QueueSubscriptionEvent(**data).queue_id)
|
|
111
|
+
|
|
112
|
+
async def _handle_sub_bulk_download(self, sid: str, data: Any) -> None:
|
|
113
|
+
await self._sio.enter_room(sid, BulkDownloadSubscriptionEvent(**data).bulk_download_id)
|
|
114
|
+
|
|
115
|
+
async def _handle_unsub_bulk_download(self, sid: str, data: Any) -> None:
|
|
116
|
+
await self._sio.leave_room(sid, BulkDownloadSubscriptionEvent(**data).bulk_download_id)
|
|
117
|
+
|
|
118
|
+
async def _handle_queue_event(self, event: FastAPIEvent[QueueEventBase]):
|
|
119
|
+
await self._sio.emit(event=event[0], data=event[1].model_dump(mode="json"), room=event[1].queue_id)
|
|
120
|
+
|
|
121
|
+
async def _handle_model_event(self, event: FastAPIEvent[ModelEventBase | DownloadEventBase]) -> None:
|
|
122
|
+
await self._sio.emit(event=event[0], data=event[1].model_dump(mode="json"))
|
|
123
|
+
|
|
124
|
+
async def _handle_bulk_image_download_event(self, event: FastAPIEvent[BulkDownloadEventBase]) -> None:
|
|
125
|
+
await self._sio.emit(event=event[0], data=event[1].model_dump(mode="json"), room=event[1].bulk_download_id)
|
|
@@ -3,9 +3,7 @@ import logging
|
|
|
3
3
|
import mimetypes
|
|
4
4
|
import socket
|
|
5
5
|
from contextlib import asynccontextmanager
|
|
6
|
-
from inspect import signature
|
|
7
6
|
from pathlib import Path
|
|
8
|
-
from typing import Any
|
|
9
7
|
|
|
10
8
|
import torch
|
|
11
9
|
import uvicorn
|
|
@@ -13,11 +11,9 @@ from fastapi import FastAPI
|
|
|
13
11
|
from fastapi.middleware.cors import CORSMiddleware
|
|
14
12
|
from fastapi.middleware.gzip import GZipMiddleware
|
|
15
13
|
from fastapi.openapi.docs import get_redoc_html, get_swagger_ui_html
|
|
16
|
-
from fastapi.openapi.utils import get_openapi
|
|
17
14
|
from fastapi.responses import HTMLResponse
|
|
18
15
|
from fastapi_events.handlers.local import local_handler
|
|
19
16
|
from fastapi_events.middleware import EventHandlerASGIMiddleware
|
|
20
|
-
from pydantic.json_schema import models_json_schema
|
|
21
17
|
from torch.backends.mps import is_available as is_mps_available
|
|
22
18
|
|
|
23
19
|
# for PyCharm:
|
|
@@ -25,9 +21,8 @@ from torch.backends.mps import is_available as is_mps_available
|
|
|
25
21
|
import invokeai.backend.util.hotfixes # noqa: F401 (monkeypatching on import)
|
|
26
22
|
import invokeai.frontend.web as web_dir
|
|
27
23
|
from invokeai.app.api.no_cache_staticfiles import NoCacheStaticFiles
|
|
28
|
-
from invokeai.app.invocations.model import ModelIdentifierField
|
|
29
24
|
from invokeai.app.services.config.config_default import get_config
|
|
30
|
-
from invokeai.app.
|
|
25
|
+
from invokeai.app.util.custom_openapi import get_openapi_func
|
|
31
26
|
from invokeai.backend.util.devices import TorchDevice
|
|
32
27
|
|
|
33
28
|
from ..backend.util.logging import InvokeAILogger
|
|
@@ -44,11 +39,6 @@ from .api.routers import (
|
|
|
44
39
|
workflows,
|
|
45
40
|
)
|
|
46
41
|
from .api.sockets import SocketIO
|
|
47
|
-
from .invocations.baseinvocation import (
|
|
48
|
-
BaseInvocation,
|
|
49
|
-
UIConfigBase,
|
|
50
|
-
)
|
|
51
|
-
from .invocations.fields import InputFieldJSONSchemaExtra, OutputFieldJSONSchemaExtra
|
|
52
42
|
|
|
53
43
|
app_config = get_config()
|
|
54
44
|
|
|
@@ -118,93 +108,7 @@ app.include_router(app_info.app_router, prefix="/api")
|
|
|
118
108
|
app.include_router(session_queue.session_queue_router, prefix="/api")
|
|
119
109
|
app.include_router(workflows.workflows_router, prefix="/api")
|
|
120
110
|
|
|
121
|
-
|
|
122
|
-
# Build a custom OpenAPI to include all outputs
|
|
123
|
-
# TODO: can outputs be included on metadata of invocation schemas somehow?
|
|
124
|
-
def custom_openapi() -> dict[str, Any]:
|
|
125
|
-
if app.openapi_schema:
|
|
126
|
-
return app.openapi_schema
|
|
127
|
-
openapi_schema = get_openapi(
|
|
128
|
-
title=app.title,
|
|
129
|
-
description="An API for invoking AI image operations",
|
|
130
|
-
version="1.0.0",
|
|
131
|
-
routes=app.routes,
|
|
132
|
-
separate_input_output_schemas=False, # https://fastapi.tiangolo.com/how-to/separate-openapi-schemas/
|
|
133
|
-
)
|
|
134
|
-
|
|
135
|
-
# Add all outputs
|
|
136
|
-
all_invocations = BaseInvocation.get_invocations()
|
|
137
|
-
output_types = set()
|
|
138
|
-
output_type_titles = {}
|
|
139
|
-
for invoker in all_invocations:
|
|
140
|
-
output_type = signature(invoker.invoke).return_annotation
|
|
141
|
-
output_types.add(output_type)
|
|
142
|
-
|
|
143
|
-
output_schemas = models_json_schema(
|
|
144
|
-
models=[(o, "serialization") for o in output_types], ref_template="#/components/schemas/{model}"
|
|
145
|
-
)
|
|
146
|
-
for schema_key, output_schema in output_schemas[1]["$defs"].items():
|
|
147
|
-
# TODO: note that we assume the schema_key here is the TYPE.__name__
|
|
148
|
-
# This could break in some cases, figure out a better way to do it
|
|
149
|
-
output_type_titles[schema_key] = output_schema["title"]
|
|
150
|
-
openapi_schema["components"]["schemas"][schema_key] = output_schema
|
|
151
|
-
openapi_schema["components"]["schemas"][schema_key]["class"] = "output"
|
|
152
|
-
|
|
153
|
-
# Some models don't end up in the schemas as standalone definitions
|
|
154
|
-
additional_schemas = models_json_schema(
|
|
155
|
-
[
|
|
156
|
-
(UIConfigBase, "serialization"),
|
|
157
|
-
(InputFieldJSONSchemaExtra, "serialization"),
|
|
158
|
-
(OutputFieldJSONSchemaExtra, "serialization"),
|
|
159
|
-
(ModelIdentifierField, "serialization"),
|
|
160
|
-
(ProgressImage, "serialization"),
|
|
161
|
-
],
|
|
162
|
-
ref_template="#/components/schemas/{model}",
|
|
163
|
-
)
|
|
164
|
-
for schema_key, schema_json in additional_schemas[1]["$defs"].items():
|
|
165
|
-
openapi_schema["components"]["schemas"][schema_key] = schema_json
|
|
166
|
-
|
|
167
|
-
openapi_schema["components"]["schemas"]["InvocationOutputMap"] = {
|
|
168
|
-
"type": "object",
|
|
169
|
-
"properties": {},
|
|
170
|
-
"required": [],
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
# Add a reference to the output type to additionalProperties of the invoker schema
|
|
174
|
-
for invoker in all_invocations:
|
|
175
|
-
invoker_name = invoker.__name__ # type: ignore [attr-defined] # this is a valid attribute
|
|
176
|
-
output_type = signature(obj=invoker.invoke).return_annotation
|
|
177
|
-
output_type_title = output_type_titles[output_type.__name__]
|
|
178
|
-
invoker_schema = openapi_schema["components"]["schemas"][f"{invoker_name}"]
|
|
179
|
-
outputs_ref = {"$ref": f"#/components/schemas/{output_type_title}"}
|
|
180
|
-
invoker_schema["output"] = outputs_ref
|
|
181
|
-
openapi_schema["components"]["schemas"]["InvocationOutputMap"]["properties"][invoker.get_type()] = outputs_ref
|
|
182
|
-
openapi_schema["components"]["schemas"]["InvocationOutputMap"]["required"].append(invoker.get_type())
|
|
183
|
-
invoker_schema["class"] = "invocation"
|
|
184
|
-
|
|
185
|
-
# This code no longer seems to be necessary?
|
|
186
|
-
# Leave it here just in case
|
|
187
|
-
#
|
|
188
|
-
# from invokeai.backend.model_manager import get_model_config_formats
|
|
189
|
-
# formats = get_model_config_formats()
|
|
190
|
-
# for model_config_name, enum_set in formats.items():
|
|
191
|
-
|
|
192
|
-
# if model_config_name in openapi_schema["components"]["schemas"]:
|
|
193
|
-
# # print(f"Config with name {name} already defined")
|
|
194
|
-
# continue
|
|
195
|
-
|
|
196
|
-
# openapi_schema["components"]["schemas"][model_config_name] = {
|
|
197
|
-
# "title": model_config_name,
|
|
198
|
-
# "description": "An enumeration.",
|
|
199
|
-
# "type": "string",
|
|
200
|
-
# "enum": [v.value for v in enum_set],
|
|
201
|
-
# }
|
|
202
|
-
|
|
203
|
-
app.openapi_schema = openapi_schema
|
|
204
|
-
return app.openapi_schema
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
app.openapi = custom_openapi # type: ignore [method-assign] # this is a valid assignment
|
|
111
|
+
app.openapi = get_openapi_func(app)
|
|
208
112
|
|
|
209
113
|
|
|
210
114
|
@app.get("/docs", include_in_schema=False)
|
|
@@ -98,11 +98,13 @@ class BaseInvocationOutput(BaseModel):
|
|
|
98
98
|
|
|
99
99
|
_output_classes: ClassVar[set[BaseInvocationOutput]] = set()
|
|
100
100
|
_typeadapter: ClassVar[Optional[TypeAdapter[Any]]] = None
|
|
101
|
+
_typeadapter_needs_update: ClassVar[bool] = False
|
|
101
102
|
|
|
102
103
|
@classmethod
|
|
103
104
|
def register_output(cls, output: BaseInvocationOutput) -> None:
|
|
104
105
|
"""Registers an invocation output."""
|
|
105
106
|
cls._output_classes.add(output)
|
|
107
|
+
cls._typeadapter_needs_update = True
|
|
106
108
|
|
|
107
109
|
@classmethod
|
|
108
110
|
def get_outputs(cls) -> Iterable[BaseInvocationOutput]:
|
|
@@ -112,11 +114,12 @@ class BaseInvocationOutput(BaseModel):
|
|
|
112
114
|
@classmethod
|
|
113
115
|
def get_typeadapter(cls) -> TypeAdapter[Any]:
|
|
114
116
|
"""Gets a pydantc TypeAdapter for the union of all invocation output types."""
|
|
115
|
-
if not cls._typeadapter:
|
|
116
|
-
|
|
117
|
-
"
|
|
117
|
+
if not cls._typeadapter or cls._typeadapter_needs_update:
|
|
118
|
+
AnyInvocationOutput = TypeAliasType(
|
|
119
|
+
"AnyInvocationOutput", Annotated[Union[tuple(cls._output_classes)], Field(discriminator="type")]
|
|
118
120
|
)
|
|
119
|
-
cls._typeadapter = TypeAdapter(
|
|
121
|
+
cls._typeadapter = TypeAdapter(AnyInvocationOutput)
|
|
122
|
+
cls._typeadapter_needs_update = False
|
|
120
123
|
return cls._typeadapter
|
|
121
124
|
|
|
122
125
|
@classmethod
|
|
@@ -125,12 +128,13 @@ class BaseInvocationOutput(BaseModel):
|
|
|
125
128
|
return (i.get_type() for i in BaseInvocationOutput.get_outputs())
|
|
126
129
|
|
|
127
130
|
@staticmethod
|
|
128
|
-
def json_schema_extra(schema: dict[str, Any], model_class: Type[
|
|
131
|
+
def json_schema_extra(schema: dict[str, Any], model_class: Type[BaseInvocationOutput]) -> None:
|
|
129
132
|
"""Adds various UI-facing attributes to the invocation output's OpenAPI schema."""
|
|
130
133
|
# Because we use a pydantic Literal field with default value for the invocation type,
|
|
131
134
|
# it will be typed as optional in the OpenAPI schema. Make it required manually.
|
|
132
135
|
if "required" not in schema or not isinstance(schema["required"], list):
|
|
133
136
|
schema["required"] = []
|
|
137
|
+
schema["class"] = "output"
|
|
134
138
|
schema["required"].extend(["type"])
|
|
135
139
|
|
|
136
140
|
@classmethod
|
|
@@ -167,6 +171,7 @@ class BaseInvocation(ABC, BaseModel):
|
|
|
167
171
|
|
|
168
172
|
_invocation_classes: ClassVar[set[BaseInvocation]] = set()
|
|
169
173
|
_typeadapter: ClassVar[Optional[TypeAdapter[Any]]] = None
|
|
174
|
+
_typeadapter_needs_update: ClassVar[bool] = False
|
|
170
175
|
|
|
171
176
|
@classmethod
|
|
172
177
|
def get_type(cls) -> str:
|
|
@@ -177,15 +182,17 @@ class BaseInvocation(ABC, BaseModel):
|
|
|
177
182
|
def register_invocation(cls, invocation: BaseInvocation) -> None:
|
|
178
183
|
"""Registers an invocation."""
|
|
179
184
|
cls._invocation_classes.add(invocation)
|
|
185
|
+
cls._typeadapter_needs_update = True
|
|
180
186
|
|
|
181
187
|
@classmethod
|
|
182
188
|
def get_typeadapter(cls) -> TypeAdapter[Any]:
|
|
183
189
|
"""Gets a pydantc TypeAdapter for the union of all invocation types."""
|
|
184
|
-
if not cls._typeadapter:
|
|
185
|
-
|
|
186
|
-
"
|
|
190
|
+
if not cls._typeadapter or cls._typeadapter_needs_update:
|
|
191
|
+
AnyInvocation = TypeAliasType(
|
|
192
|
+
"AnyInvocation", Annotated[Union[tuple(cls._invocation_classes)], Field(discriminator="type")]
|
|
187
193
|
)
|
|
188
|
-
cls._typeadapter = TypeAdapter(
|
|
194
|
+
cls._typeadapter = TypeAdapter(AnyInvocation)
|
|
195
|
+
cls._typeadapter_needs_update = False
|
|
189
196
|
return cls._typeadapter
|
|
190
197
|
|
|
191
198
|
@classmethod
|
|
@@ -221,7 +228,7 @@ class BaseInvocation(ABC, BaseModel):
|
|
|
221
228
|
return signature(cls.invoke).return_annotation
|
|
222
229
|
|
|
223
230
|
@staticmethod
|
|
224
|
-
def json_schema_extra(schema: dict[str, Any], model_class: Type[
|
|
231
|
+
def json_schema_extra(schema: dict[str, Any], model_class: Type[BaseInvocation]) -> None:
|
|
225
232
|
"""Adds various UI-facing attributes to the invocation's OpenAPI schema."""
|
|
226
233
|
uiconfig = cast(UIConfigBase | None, getattr(model_class, "UIConfig", None))
|
|
227
234
|
if uiconfig is not None:
|
|
@@ -237,6 +244,7 @@ class BaseInvocation(ABC, BaseModel):
|
|
|
237
244
|
schema["version"] = uiconfig.version
|
|
238
245
|
if "required" not in schema or not isinstance(schema["required"], list):
|
|
239
246
|
schema["required"] = []
|
|
247
|
+
schema["class"] = "invocation"
|
|
240
248
|
schema["required"].extend(["type", "id"])
|
|
241
249
|
|
|
242
250
|
@abstractmethod
|
|
@@ -310,7 +318,7 @@ class BaseInvocation(ABC, BaseModel):
|
|
|
310
318
|
protected_namespaces=(),
|
|
311
319
|
validate_assignment=True,
|
|
312
320
|
json_schema_extra=json_schema_extra,
|
|
313
|
-
json_schema_serialization_defaults_required=
|
|
321
|
+
json_schema_serialization_defaults_required=False,
|
|
314
322
|
coerce_numbers_to_str=True,
|
|
315
323
|
)
|
|
316
324
|
|
|
@@ -65,11 +65,7 @@ class CompelInvocation(BaseInvocation):
|
|
|
65
65
|
@torch.no_grad()
|
|
66
66
|
def invoke(self, context: InvocationContext) -> ConditioningOutput:
|
|
67
67
|
tokenizer_info = context.models.load(self.clip.tokenizer)
|
|
68
|
-
tokenizer_model = tokenizer_info.model
|
|
69
|
-
assert isinstance(tokenizer_model, CLIPTokenizer)
|
|
70
68
|
text_encoder_info = context.models.load(self.clip.text_encoder)
|
|
71
|
-
text_encoder_model = text_encoder_info.model
|
|
72
|
-
assert isinstance(text_encoder_model, CLIPTextModel)
|
|
73
69
|
|
|
74
70
|
def _lora_loader() -> Iterator[Tuple[LoRAModelRaw, float]]:
|
|
75
71
|
for lora in self.clip.loras:
|
|
@@ -84,19 +80,21 @@ class CompelInvocation(BaseInvocation):
|
|
|
84
80
|
ti_list = generate_ti_list(self.prompt, text_encoder_info.config.base, context)
|
|
85
81
|
|
|
86
82
|
with (
|
|
87
|
-
|
|
88
|
-
tokenizer,
|
|
89
|
-
ti_manager,
|
|
90
|
-
),
|
|
83
|
+
# apply all patches while the model is on the target device
|
|
91
84
|
text_encoder_info as text_encoder,
|
|
92
|
-
|
|
85
|
+
tokenizer_info as tokenizer,
|
|
93
86
|
ModelPatcher.apply_lora_text_encoder(text_encoder, _lora_loader()),
|
|
94
87
|
# Apply CLIP Skip after LoRA to prevent LoRA application from failing on skipped layers.
|
|
95
|
-
ModelPatcher.apply_clip_skip(
|
|
88
|
+
ModelPatcher.apply_clip_skip(text_encoder, self.clip.skipped_layers),
|
|
89
|
+
ModelPatcher.apply_ti(tokenizer, text_encoder, ti_list) as (
|
|
90
|
+
patched_tokenizer,
|
|
91
|
+
ti_manager,
|
|
92
|
+
),
|
|
96
93
|
):
|
|
97
94
|
assert isinstance(text_encoder, CLIPTextModel)
|
|
95
|
+
assert isinstance(tokenizer, CLIPTokenizer)
|
|
98
96
|
compel = Compel(
|
|
99
|
-
tokenizer=
|
|
97
|
+
tokenizer=patched_tokenizer,
|
|
100
98
|
text_encoder=text_encoder,
|
|
101
99
|
textual_inversion_manager=ti_manager,
|
|
102
100
|
dtype_for_device_getter=TorchDevice.choose_torch_dtype,
|
|
@@ -106,7 +104,7 @@ class CompelInvocation(BaseInvocation):
|
|
|
106
104
|
conjunction = Compel.parse_prompt_string(self.prompt)
|
|
107
105
|
|
|
108
106
|
if context.config.get().log_tokenization:
|
|
109
|
-
log_tokenization_for_conjunction(conjunction,
|
|
107
|
+
log_tokenization_for_conjunction(conjunction, patched_tokenizer)
|
|
110
108
|
|
|
111
109
|
c, _options = compel.build_conditioning_tensor_for_conjunction(conjunction)
|
|
112
110
|
|
|
@@ -136,11 +134,7 @@ class SDXLPromptInvocationBase:
|
|
|
136
134
|
zero_on_empty: bool,
|
|
137
135
|
) -> Tuple[torch.Tensor, Optional[torch.Tensor]]:
|
|
138
136
|
tokenizer_info = context.models.load(clip_field.tokenizer)
|
|
139
|
-
tokenizer_model = tokenizer_info.model
|
|
140
|
-
assert isinstance(tokenizer_model, CLIPTokenizer)
|
|
141
137
|
text_encoder_info = context.models.load(clip_field.text_encoder)
|
|
142
|
-
text_encoder_model = text_encoder_info.model
|
|
143
|
-
assert isinstance(text_encoder_model, (CLIPTextModel, CLIPTextModelWithProjection))
|
|
144
138
|
|
|
145
139
|
# return zero on empty
|
|
146
140
|
if prompt == "" and zero_on_empty:
|
|
@@ -177,20 +171,23 @@ class SDXLPromptInvocationBase:
|
|
|
177
171
|
ti_list = generate_ti_list(prompt, text_encoder_info.config.base, context)
|
|
178
172
|
|
|
179
173
|
with (
|
|
180
|
-
|
|
181
|
-
tokenizer,
|
|
182
|
-
ti_manager,
|
|
183
|
-
),
|
|
174
|
+
# apply all patches while the model is on the target device
|
|
184
175
|
text_encoder_info as text_encoder,
|
|
185
|
-
|
|
176
|
+
tokenizer_info as tokenizer,
|
|
186
177
|
ModelPatcher.apply_lora(text_encoder, _lora_loader(), lora_prefix),
|
|
187
178
|
# Apply CLIP Skip after LoRA to prevent LoRA application from failing on skipped layers.
|
|
188
|
-
ModelPatcher.apply_clip_skip(
|
|
179
|
+
ModelPatcher.apply_clip_skip(text_encoder, clip_field.skipped_layers),
|
|
180
|
+
ModelPatcher.apply_ti(tokenizer, text_encoder, ti_list) as (
|
|
181
|
+
patched_tokenizer,
|
|
182
|
+
ti_manager,
|
|
183
|
+
),
|
|
189
184
|
):
|
|
190
185
|
assert isinstance(text_encoder, (CLIPTextModel, CLIPTextModelWithProjection))
|
|
186
|
+
assert isinstance(tokenizer, CLIPTokenizer)
|
|
187
|
+
|
|
191
188
|
text_encoder = cast(CLIPTextModel, text_encoder)
|
|
192
189
|
compel = Compel(
|
|
193
|
-
tokenizer=
|
|
190
|
+
tokenizer=patched_tokenizer,
|
|
194
191
|
text_encoder=text_encoder,
|
|
195
192
|
textual_inversion_manager=ti_manager,
|
|
196
193
|
dtype_for_device_getter=TorchDevice.choose_torch_dtype,
|
|
@@ -203,7 +200,7 @@ class SDXLPromptInvocationBase:
|
|
|
203
200
|
|
|
204
201
|
if context.config.get().log_tokenization:
|
|
205
202
|
# TODO: better logging for and syntax
|
|
206
|
-
log_tokenization_for_conjunction(conjunction,
|
|
203
|
+
log_tokenization_for_conjunction(conjunction, patched_tokenizer)
|
|
207
204
|
|
|
208
205
|
# TODO: ask for optimizations? to not run text_encoder twice
|
|
209
206
|
c, _options = compel.build_conditioning_tensor_for_conjunction(conjunction)
|