InvokeAI 4.2.7rc1__tar.gz → 4.2.8__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.7rc1 → InvokeAI-4.2.8}/InvokeAI.egg-info/PKG-INFO +1 -1
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/InvokeAI.egg-info/SOURCES.txt +57 -17
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/InvokeAI.egg-info/requires.txt +1 -2
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/PKG-INFO +1 -1
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/api/dependencies.py +15 -2
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/api/routers/images.py +14 -2
- InvokeAI-4.2.8/invokeai/app/api/routers/style_presets.py +274 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/api_app.py +5 -3
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/compel.py +4 -4
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/controlnet_image_processors.py +27 -14
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/create_gradient_mask.py +2 -1
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/denoise_latents.py +87 -25
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/fields.py +26 -1
- InvokeAI-4.2.8/invokeai/app/invocations/grounding_dino.py +100 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/latents_to_image.py +2 -2
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/mask.py +27 -2
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/primitives.py +40 -0
- InvokeAI-4.2.8/invokeai/app/invocations/segment_anything.py +161 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/config/config_default.py +7 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/events/events_fastapievents.py +14 -16
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/image_files/image_files_disk.py +6 -13
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/invocation_services.py +6 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/model_images/model_images_default.py +1 -2
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/shared/sqlite/sqlite_util.py +2 -0
- InvokeAI-4.2.8/invokeai/app/services/shared/sqlite_migrator/migrations/migration_14.py +61 -0
- InvokeAI-4.2.8/invokeai/app/services/style_preset_images/default_style_preset_images/Anime.png +0 -0
- InvokeAI-4.2.8/invokeai/app/services/style_preset_images/default_style_preset_images/Architectural Visualization.png +0 -0
- InvokeAI-4.2.8/invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Character).png +0 -0
- InvokeAI-4.2.8/invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Fantasy).png +0 -0
- InvokeAI-4.2.8/invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Painterly).png +0 -0
- InvokeAI-4.2.8/invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Sci-Fi).png +0 -0
- InvokeAI-4.2.8/invokeai/app/services/style_preset_images/default_style_preset_images/Environment Art.png +0 -0
- InvokeAI-4.2.8/invokeai/app/services/style_preset_images/default_style_preset_images/Illustration.png +0 -0
- InvokeAI-4.2.8/invokeai/app/services/style_preset_images/default_style_preset_images/Interior Design (Visualization).png +0 -0
- InvokeAI-4.2.8/invokeai/app/services/style_preset_images/default_style_preset_images/Line Art.png +0 -0
- White).png +0 -0
- InvokeAI-4.2.8/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (General).png +0 -0
- InvokeAI-4.2.8/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (Landscape).png +0 -0
- InvokeAI-4.2.8/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (Portrait).png +0 -0
- InvokeAI-4.2.8/invokeai/app/services/style_preset_images/default_style_preset_images/Photography (Studio Lighting).png +0 -0
- InvokeAI-4.2.8/invokeai/app/services/style_preset_images/default_style_preset_images/Product Rendering.png +0 -0
- InvokeAI-4.2.8/invokeai/app/services/style_preset_images/default_style_preset_images/Sketch.png +0 -0
- InvokeAI-4.2.8/invokeai/app/services/style_preset_images/default_style_preset_images/Vehicles.png +0 -0
- InvokeAI-4.2.8/invokeai/app/services/style_preset_images/style_preset_images_base.py +33 -0
- InvokeAI-4.2.8/invokeai/app/services/style_preset_images/style_preset_images_common.py +19 -0
- InvokeAI-4.2.8/invokeai/app/services/style_preset_images/style_preset_images_disk.py +88 -0
- InvokeAI-4.2.8/invokeai/app/services/style_preset_records/default_style_presets.json +146 -0
- InvokeAI-4.2.8/invokeai/app/services/style_preset_records/style_preset_records_base.py +42 -0
- InvokeAI-4.2.8/invokeai/app/services/style_preset_records/style_preset_records_common.py +139 -0
- InvokeAI-4.2.8/invokeai/app/services/style_preset_records/style_preset_records_sqlite.py +215 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/urls/urls_base.py +5 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/urls/urls_default.py +3 -0
- InvokeAI-4.2.8/invokeai/app/services/workflow_records/default_workflows/MultiDiffusion SD1.5.json +1430 -0
- InvokeAI-4.2.7rc1/invokeai/app/services/workflow_records/default_workflows/MultiDiffusion SDXL (Beta).json → InvokeAI-4.2.8/invokeai/app/services/workflow_records/default_workflows/MultiDiffusion SDXL.json +471 -1007
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/util/custom_openapi.py +1 -1
- InvokeAI-4.2.8/invokeai/backend/image_util/depth_anything/depth_anything_pipeline.py +31 -0
- InvokeAI-4.2.8/invokeai/backend/image_util/grounding_dino/detection_result.py +22 -0
- InvokeAI-4.2.8/invokeai/backend/image_util/grounding_dino/grounding_dino_pipeline.py +37 -0
- InvokeAI-4.2.8/invokeai/backend/image_util/segment_anything/__init__.py +0 -0
- InvokeAI-4.2.8/invokeai/backend/image_util/segment_anything/mask_refinement.py +50 -0
- InvokeAI-4.2.8/invokeai/backend/image_util/segment_anything/segment_anything_pipeline.py +53 -0
- InvokeAI-4.2.8/invokeai/backend/ip_adapter/__init__.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/lora.py +128 -51
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/load/model_loaders/stable_diffusion.py +3 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/load/model_util.py +15 -1
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/starter_models.py +40 -33
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_patcher.py +22 -61
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/stable_diffusion/__init__.py +0 -2
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/stable_diffusion/extensions/base.py +16 -4
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/stable_diffusion/extensions/freeu.py +3 -3
- InvokeAI-4.2.8/invokeai/backend/stable_diffusion/extensions/inpaint.py +120 -0
- InvokeAI-4.2.8/invokeai/backend/stable_diffusion/extensions/inpaint_model.py +88 -0
- InvokeAI-4.2.8/invokeai/backend/stable_diffusion/extensions/lora.py +137 -0
- InvokeAI-4.2.8/invokeai/backend/stable_diffusion/extensions/seamless.py +71 -0
- InvokeAI-4.2.8/invokeai/backend/stable_diffusion/extensions/t2i_adapter.py +120 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/stable_diffusion/extensions_manager.py +12 -5
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/stable_diffusion/schedulers/schedulers.py +31 -10
- InvokeAI-4.2.8/invokeai/backend/tiles/__init__.py +0 -0
- InvokeAI-4.2.8/invokeai/backend/util/original_weights_storage.py +39 -0
- InvokeAI-4.2.8/invokeai/frontend/cli/__init__.py +0 -0
- InvokeAI-4.2.8/invokeai/frontend/web/dist/assets/App-CWIiEcee.js +137 -0
- InvokeAI-4.2.8/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-B2NxUfIp.css +9 -0
- InvokeAI-4.2.8/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-BA4F4U51.js +1 -0
- InvokeAI-4.2.8/invokeai/frontend/web/dist/assets/index-CnfsQw4G.js +510 -0
- InvokeAI-4.2.8/invokeai/frontend/web/dist/assets/inter-cyrillic-ext-wght-normal-B2xhLi22.woff2 +0 -0
- InvokeAI-4.2.8/invokeai/frontend/web/dist/assets/inter-cyrillic-wght-normal-CMZtQduZ.woff2 +0 -0
- InvokeAI-4.2.8/invokeai/frontend/web/dist/assets/inter-greek-ext-wght-normal-CGAr0uHJ.woff2 +0 -0
- InvokeAI-4.2.8/invokeai/frontend/web/dist/assets/inter-greek-wght-normal-CaVNZxsx.woff2 +0 -0
- InvokeAI-4.2.8/invokeai/frontend/web/dist/assets/inter-latin-ext-wght-normal-CFHvXkgd.woff2 +0 -0
- InvokeAI-4.2.8/invokeai/frontend/web/dist/assets/inter-latin-wght-normal-C2S99t-D.woff2 +0 -0
- InvokeAI-4.2.8/invokeai/frontend/web/dist/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/index.html +1 -1
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/de.json +21 -3
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/en.json +85 -7
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/es.json +0 -1
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/it.json +86 -13
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/ja.json +0 -1
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/ko.json +0 -1
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/nl.json +0 -5
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/ru.json +125 -14
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/tr.json +0 -5
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/zh_CN.json +477 -52
- InvokeAI-4.2.8/invokeai/version/invokeai_version.py +1 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/pyproject.toml +7 -2
- InvokeAI-4.2.7rc1/invokeai/backend/image_util/depth_anything/__init__.py +0 -90
- InvokeAI-4.2.7rc1/invokeai/backend/image_util/depth_anything/model/blocks.py +0 -145
- InvokeAI-4.2.7rc1/invokeai/backend/image_util/depth_anything/model/dpt.py +0 -183
- InvokeAI-4.2.7rc1/invokeai/backend/image_util/depth_anything/utilities/util.py +0 -227
- InvokeAI-4.2.7rc1/invokeai/backend/stable_diffusion/seamless.py +0 -51
- InvokeAI-4.2.7rc1/invokeai/frontend/web/dist/assets/App-eRckIUzO.js +0 -137
- InvokeAI-4.2.7rc1/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-DzjsLZSc.css +0 -9
- InvokeAI-4.2.7rc1/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-KWOypeWr.js +0 -1
- InvokeAI-4.2.7rc1/invokeai/frontend/web/dist/assets/index-Cg0nXI8H.js +0 -510
- InvokeAI-4.2.7rc1/invokeai/frontend/web/dist/assets/inter-cyrillic-ext-wght-normal-DIEz8p5i.woff2 +0 -0
- InvokeAI-4.2.7rc1/invokeai/frontend/web/dist/assets/inter-cyrillic-wght-normal-BmJJXa8e.woff2 +0 -0
- InvokeAI-4.2.7rc1/invokeai/frontend/web/dist/assets/inter-greek-ext-wght-normal-D5AYLNiq.woff2 +0 -0
- InvokeAI-4.2.7rc1/invokeai/frontend/web/dist/assets/inter-greek-wght-normal-DyIDNIyN.woff2 +0 -0
- InvokeAI-4.2.7rc1/invokeai/frontend/web/dist/assets/inter-latin-ext-wght-normal-CN1pIXkb.woff2 +0 -0
- InvokeAI-4.2.7rc1/invokeai/frontend/web/dist/assets/inter-latin-wght-normal-BgVq2Tq4.woff2 +0 -0
- InvokeAI-4.2.7rc1/invokeai/frontend/web/dist/assets/inter-vietnamese-wght-normal-_GQuwPVU.woff2 +0 -0
- InvokeAI-4.2.7rc1/invokeai/version/invokeai_version.py +0 -1
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/InvokeAI.egg-info/dependency_links.txt +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/InvokeAI.egg-info/entry_points.txt +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/InvokeAI.egg-info/top_level.txt +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/LICENSE +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/LICENSE-SD1+SD2.txt +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/LICENSE-SDXL.txt +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/README.md +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/__init__.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/api/no_cache_staticfiles.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/api/routers/app_info.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/api/routers/board_images.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/api/routers/boards.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/api/routers/download_queue.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/api/routers/model_manager.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/api/routers/session_queue.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/api/routers/utilities.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/api/routers/workflows.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/api/sockets.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/assets/images/caution.png +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/__init__.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/baseinvocation.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/blend_latents.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/collections.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/constants.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/create_denoise_mask.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/crop_latents.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/custom_nodes/README.md +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/custom_nodes/init.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/cv.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/facetools.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/ideal_size.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/image.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/image_to_latents.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/infill.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/ip_adapter.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/math.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/metadata.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/model.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/noise.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/param_easing.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/prompt.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/resize_latents.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/scheduler.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/sdxl.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/spandrel_image_to_image.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/strings.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/t2i_adapter.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/tiled_multi_diffusion_denoise_latents.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/tiles.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/upscale.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/invocations/util.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/run_app.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/__init__.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/board_image_records/__init__.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/board_image_records/board_image_records_base.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/board_image_records/board_image_records_sqlite.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/board_images/__init__.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/board_images/board_images_base.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/board_images/board_images_common.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/board_images/board_images_default.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/board_records/board_records_base.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/board_records/board_records_common.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/board_records/board_records_sqlite.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/boards/__init__.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/boards/boards_base.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/boards/boards_common.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/boards/boards_default.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/bulk_download/__init__.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/bulk_download/bulk_download_base.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/bulk_download/bulk_download_common.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/bulk_download/bulk_download_default.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/config/__init__.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/config/config_common.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/download/__init__.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/download/download_base.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/download/download_default.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/events/__init__.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/events/events_base.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/events/events_common.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/image_files/__init__.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/image_files/image_files_base.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/image_files/image_files_common.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/image_records/__init__.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/image_records/image_records_base.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/image_records/image_records_common.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/image_records/image_records_sqlite.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/images/__init__.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/images/images_base.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/images/images_common.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/images/images_default.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/invocation_cache/__init__.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/invocation_cache/invocation_cache_base.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/invocation_cache/invocation_cache_common.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/invocation_cache/invocation_cache_memory.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/invocation_stats/__init__.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/invocation_stats/invocation_stats_base.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/invocation_stats/invocation_stats_common.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/invocation_stats/invocation_stats_default.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/invoker.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/item_storage/__init__.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/item_storage/item_storage_base.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/item_storage/item_storage_common.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/item_storage/item_storage_memory.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/model_images/model_images_base.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/model_images/model_images_common.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/model_install/__init__.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/model_install/model_install_base.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/model_install/model_install_common.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/model_install/model_install_default.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/model_load/__init__.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/model_load/model_load_base.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/model_load/model_load_default.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/model_manager/__init__.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/model_manager/model_manager_base.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/model_manager/model_manager_common.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/model_manager/model_manager_default.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/model_records/__init__.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/model_records/model_records_base.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/model_records/model_records_sql.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/names/__init__.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/names/names_base.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/names/names_common.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/names/names_default.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/object_serializer/object_serializer_base.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/object_serializer/object_serializer_common.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/object_serializer/object_serializer_disk.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/object_serializer/object_serializer_forward_cache.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/session_processor/__init__.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/session_processor/session_processor_base.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/session_processor/session_processor_common.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/session_processor/session_processor_default.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/session_queue/__init__.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/session_queue/session_queue_base.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/session_queue/session_queue_common.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/session_queue/session_queue_sqlite.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/shared/__init__.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/shared/graph.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/shared/invocation_context.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/shared/pagination.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/shared/sqlite/__init__.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/shared/sqlite/sqlite_common.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/shared/sqlite/sqlite_database.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/shared/sqlite_migrator/__init__.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/shared/sqlite_migrator/migrations/__init__.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_1.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_10.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_11.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_12.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_13.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_2.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_3.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_4.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_5.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_6.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_7.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_8.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/shared/sqlite_migrator/migrations/migration_9.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/shared/sqlite_migrator/sqlite_migrator_common.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/shared/sqlite_migrator/sqlite_migrator_impl.py +0 -0
- {InvokeAI-4.2.7rc1/invokeai/app/services/urls → InvokeAI-4.2.8/invokeai/app/services/style_preset_images/default_style_preset_images}/__init__.py +0 -0
- {InvokeAI-4.2.7rc1/invokeai/app/services/workflow_records → InvokeAI-4.2.8/invokeai/app/services/style_preset_records}/__init__.py +0 -0
- {InvokeAI-4.2.7rc1/invokeai/app/util → InvokeAI-4.2.8/invokeai/app/services/urls}/__init__.py +0 -0
- {InvokeAI-4.2.7rc1/invokeai/backend/image_util/realesrgan → InvokeAI-4.2.8/invokeai/app/services/workflow_records}/__init__.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/workflow_records/default_workflows/ESRGAN Upscaling with Canny ControlNet.json +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/workflow_records/default_workflows/Face Detailer with IP-Adapter & Canny (See Note in Details).json +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/workflow_records/default_workflows/Multi ControlNet (Canny & Depth).json +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/workflow_records/default_workflows/Prompt from File.json +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/workflow_records/default_workflows/Text to Image - SD1.5.json +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/workflow_records/default_workflows/Text to Image - SDXL.json +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/workflow_records/default_workflows/Text to Image with LoRA.json +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/workflow_records/default_workflows/Tiled Upscaling (Beta).json +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/workflow_records/workflow_records_base.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/workflow_records/workflow_records_common.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/services/workflow_records/workflow_records_sqlite.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/shared/__init__.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/shared/models.py +0 -0
- {InvokeAI-4.2.7rc1/invokeai/backend/ip_adapter → InvokeAI-4.2.8/invokeai/app/util}/__init__.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/util/controlnet_utils.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/util/metaenum.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/util/misc.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/util/model_exclude_null.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/util/profiler.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/util/step_callback.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/util/suppress_output.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/util/thumbnails.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/app/util/ti_utils.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/assets/fonts/inter/Inter-Regular.ttf +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/__init__.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/image_util/__init__.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/image_util/basicsr/__init__.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/image_util/basicsr/arch_util.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/image_util/basicsr/rrdbnet_arch.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/image_util/canny.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/image_util/dw_openpose/__init__.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/image_util/dw_openpose/onnxdet.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/image_util/dw_openpose/onnxpose.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/image_util/dw_openpose/utils.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/image_util/dw_openpose/wholebody.py +0 -0
- {InvokeAI-4.2.7rc1/invokeai/backend/tiles → InvokeAI-4.2.8/invokeai/backend/image_util/grounding_dino}/__init__.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/image_util/hed.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/image_util/infill_methods/cv2_inpaint.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/image_util/infill_methods/lama.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/image_util/infill_methods/mosaic.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/image_util/infill_methods/patchmatch.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/image_util/infill_methods/tile.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/image_util/invisible_watermark.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/image_util/lineart.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/image_util/lineart_anime.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/image_util/pngwriter.py +0 -0
- {InvokeAI-4.2.7rc1/invokeai/frontend/cli → InvokeAI-4.2.8/invokeai/backend/image_util/realesrgan}/__init__.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/image_util/realesrgan/realesrgan.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/image_util/safety_checker.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/image_util/util.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/ip_adapter/ip_adapter.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/ip_adapter/ip_attention_weights.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/ip_adapter/resampler.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_hash/hash_validator.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_hash/model_hash.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/__init__.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/config.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/load/__init__.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/load/load_base.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/load/load_default.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/load/memory_snapshot.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/load/model_cache/__init__.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/load/model_cache/model_cache_base.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/load/model_cache/model_cache_default.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/load/model_cache/model_locker.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/load/model_loader_registry.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/load/model_loaders/__init__.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/load/model_loaders/controlnet.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/load/model_loaders/generic_diffusers.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/load/model_loaders/ip_adapter.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/load/model_loaders/lora.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/load/model_loaders/onnx.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/load/model_loaders/spandrel_image_to_image.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/load/model_loaders/textual_inversion.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/load/model_loaders/vae.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/load/optimizations.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/merge.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/metadata/__init__.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/metadata/fetch/__init__.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/metadata/fetch/fetch_base.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/metadata/fetch/huggingface.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/metadata/metadata_base.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/probe.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/search.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/util/libc_util.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/util/model_util.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/model_manager/util/select_hf_files.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/onnx/onnx_runtime.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/raw_model.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/spandrel_image_to_image_model.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/stable_diffusion/denoise_context.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/stable_diffusion/diffusers_pipeline.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/stable_diffusion/diffusion/__init__.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/stable_diffusion/diffusion/conditioning_data.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/stable_diffusion/diffusion/custom_atttention.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/stable_diffusion/diffusion/regional_ip_data.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/stable_diffusion/diffusion/regional_prompt_data.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/stable_diffusion/diffusion/shared_invokeai_diffusion.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/stable_diffusion/diffusion/unet_attention_patcher.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/stable_diffusion/diffusion_backend.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/stable_diffusion/extension_callback_type.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/stable_diffusion/extensions/controlnet.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/stable_diffusion/extensions/preview.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/stable_diffusion/extensions/rescale_cfg.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/stable_diffusion/multi_diffusion_pipeline.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/stable_diffusion/schedulers/__init__.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/stable_diffusion/vae_tiling.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/textual_inversion.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/tiles/tiles.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/tiles/utils.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/util/__init__.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/util/attention.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/util/catch_sigint.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/util/db_maintenance.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/util/devices.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/util/hotfixes.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/util/logging.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/util/mask.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/util/mps_fixes.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/util/silence_warnings.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/util/test_utils.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/backend/util/util.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/configs/controlnet/cldm_v15.yaml +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/configs/controlnet/cldm_v21.yaml +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/configs/stable-diffusion/sd_xl_base.yaml +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/configs/stable-diffusion/sd_xl_inpaint.yaml +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/configs/stable-diffusion/sd_xl_refiner.yaml +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/configs/stable-diffusion/v1-finetune.yaml +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/configs/stable-diffusion/v1-finetune_style.yaml +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/configs/stable-diffusion/v1-inference-v.yaml +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/configs/stable-diffusion/v1-inference.yaml +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/configs/stable-diffusion/v1-inpainting-inference.yaml +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/configs/stable-diffusion/v1-m1-finetune.yaml +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/configs/stable-diffusion/v2-inference-v.yaml +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/configs/stable-diffusion/v2-inference.yaml +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/configs/stable-diffusion/v2-inpainting-inference-v.yaml +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/configs/stable-diffusion/v2-inpainting-inference.yaml +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/configs/stable-diffusion/v2-midas-inference.yaml +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/__init__.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/cli/arg_parser.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/install/__init__.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/install/import_images.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/__init__.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/assets/App-DEu4J2pT.css +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/assets/images/invoke-alert-favicon.svg +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/assets/images/invoke-avatar-circle.svg +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/assets/images/invoke-avatar-square.svg +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/assets/images/invoke-favicon.png +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/assets/images/invoke-favicon.svg +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/assets/images/invoke-key-char-lrg.svg +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/assets/images/invoke-key-char-sml.svg +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/assets/images/invoke-key-wht-lrg.svg +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/assets/images/invoke-key-wht-sml.svg +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/assets/images/invoke-symbol-char-lrg.svg +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/assets/images/invoke-symbol-char-sml.svg +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/assets/images/invoke-symbol-wht-lrg.svg +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/assets/images/invoke-symbol-wht-sml.svg +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/assets/images/invoke-symbol-ylw-lrg.svg +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/assets/images/invoke-tag-char-lrg.svg +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/assets/images/invoke-tag-char-sml.svg +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/assets/images/invoke-tag-lrg.svg +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/assets/images/invoke-tag-sml.svg +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/assets/images/invoke-wordmark-charcoal.svg +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/assets/images/invoke-wordmark-white.svg +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/assets/images/mask.svg +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/assets/images/transparent_bg.png +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/ar.json +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/az.json +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/bg.json +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/fi.json +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/fr.json +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/he.json +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/hu.json +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/mn.json +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/pl.json +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/pt.json +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/pt_BR.json +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/ro.json +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/sv.json +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/uk.json +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/vi.json +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/dist/locales/zh_Hant.json +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/scripts/clean_translations.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/frontend/web/static/docs/invoke-favicon-docs.svg +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/invocation_api/__init__.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/invokeai/version/__init__.py +0 -0
- {InvokeAI-4.2.7rc1 → InvokeAI-4.2.8}/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.8
|
|
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
|
|
@@ -22,6 +22,7 @@ invokeai/app/api/routers/download_queue.py
|
|
|
22
22
|
invokeai/app/api/routers/images.py
|
|
23
23
|
invokeai/app/api/routers/model_manager.py
|
|
24
24
|
invokeai/app/api/routers/session_queue.py
|
|
25
|
+
invokeai/app/api/routers/style_presets.py
|
|
25
26
|
invokeai/app/api/routers/utilities.py
|
|
26
27
|
invokeai/app/api/routers/workflows.py
|
|
27
28
|
invokeai/app/assets/images/caution.png
|
|
@@ -39,6 +40,7 @@ invokeai/app/invocations/cv.py
|
|
|
39
40
|
invokeai/app/invocations/denoise_latents.py
|
|
40
41
|
invokeai/app/invocations/facetools.py
|
|
41
42
|
invokeai/app/invocations/fields.py
|
|
43
|
+
invokeai/app/invocations/grounding_dino.py
|
|
42
44
|
invokeai/app/invocations/ideal_size.py
|
|
43
45
|
invokeai/app/invocations/image.py
|
|
44
46
|
invokeai/app/invocations/image_to_latents.py
|
|
@@ -56,6 +58,7 @@ invokeai/app/invocations/prompt.py
|
|
|
56
58
|
invokeai/app/invocations/resize_latents.py
|
|
57
59
|
invokeai/app/invocations/scheduler.py
|
|
58
60
|
invokeai/app/invocations/sdxl.py
|
|
61
|
+
invokeai/app/invocations/segment_anything.py
|
|
59
62
|
invokeai/app/invocations/spandrel_image_to_image.py
|
|
60
63
|
invokeai/app/invocations/strings.py
|
|
61
64
|
invokeai/app/invocations/t2i_adapter.py
|
|
@@ -170,6 +173,7 @@ invokeai/app/services/shared/sqlite_migrator/migrations/migration_10.py
|
|
|
170
173
|
invokeai/app/services/shared/sqlite_migrator/migrations/migration_11.py
|
|
171
174
|
invokeai/app/services/shared/sqlite_migrator/migrations/migration_12.py
|
|
172
175
|
invokeai/app/services/shared/sqlite_migrator/migrations/migration_13.py
|
|
176
|
+
invokeai/app/services/shared/sqlite_migrator/migrations/migration_14.py
|
|
173
177
|
invokeai/app/services/shared/sqlite_migrator/migrations/migration_2.py
|
|
174
178
|
invokeai/app/services/shared/sqlite_migrator/migrations/migration_3.py
|
|
175
179
|
invokeai/app/services/shared/sqlite_migrator/migrations/migration_4.py
|
|
@@ -178,6 +182,33 @@ invokeai/app/services/shared/sqlite_migrator/migrations/migration_6.py
|
|
|
178
182
|
invokeai/app/services/shared/sqlite_migrator/migrations/migration_7.py
|
|
179
183
|
invokeai/app/services/shared/sqlite_migrator/migrations/migration_8.py
|
|
180
184
|
invokeai/app/services/shared/sqlite_migrator/migrations/migration_9.py
|
|
185
|
+
invokeai/app/services/style_preset_images/style_preset_images_base.py
|
|
186
|
+
invokeai/app/services/style_preset_images/style_preset_images_common.py
|
|
187
|
+
invokeai/app/services/style_preset_images/style_preset_images_disk.py
|
|
188
|
+
invokeai/app/services/style_preset_images/default_style_preset_images/Anime.png
|
|
189
|
+
invokeai/app/services/style_preset_images/default_style_preset_images/Architectural Visualization.png
|
|
190
|
+
invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Character).png
|
|
191
|
+
invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Fantasy).png
|
|
192
|
+
invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Painterly).png
|
|
193
|
+
invokeai/app/services/style_preset_images/default_style_preset_images/Concept Art (Sci-Fi).png
|
|
194
|
+
invokeai/app/services/style_preset_images/default_style_preset_images/Environment Art.png
|
|
195
|
+
invokeai/app/services/style_preset_images/default_style_preset_images/Illustration.png
|
|
196
|
+
invokeai/app/services/style_preset_images/default_style_preset_images/Interior Design (Visualization).png
|
|
197
|
+
invokeai/app/services/style_preset_images/default_style_preset_images/Line Art.png
|
|
198
|
+
invokeai/app/services/style_preset_images/default_style_preset_images/Photography (Black and White).png
|
|
199
|
+
invokeai/app/services/style_preset_images/default_style_preset_images/Photography (General).png
|
|
200
|
+
invokeai/app/services/style_preset_images/default_style_preset_images/Photography (Landscape).png
|
|
201
|
+
invokeai/app/services/style_preset_images/default_style_preset_images/Photography (Portrait).png
|
|
202
|
+
invokeai/app/services/style_preset_images/default_style_preset_images/Photography (Studio Lighting).png
|
|
203
|
+
invokeai/app/services/style_preset_images/default_style_preset_images/Product Rendering.png
|
|
204
|
+
invokeai/app/services/style_preset_images/default_style_preset_images/Sketch.png
|
|
205
|
+
invokeai/app/services/style_preset_images/default_style_preset_images/Vehicles.png
|
|
206
|
+
invokeai/app/services/style_preset_images/default_style_preset_images/__init__.py
|
|
207
|
+
invokeai/app/services/style_preset_records/__init__.py
|
|
208
|
+
invokeai/app/services/style_preset_records/default_style_presets.json
|
|
209
|
+
invokeai/app/services/style_preset_records/style_preset_records_base.py
|
|
210
|
+
invokeai/app/services/style_preset_records/style_preset_records_common.py
|
|
211
|
+
invokeai/app/services/style_preset_records/style_preset_records_sqlite.py
|
|
181
212
|
invokeai/app/services/urls/__init__.py
|
|
182
213
|
invokeai/app/services/urls/urls_base.py
|
|
183
214
|
invokeai/app/services/urls/urls_default.py
|
|
@@ -188,7 +219,8 @@ invokeai/app/services/workflow_records/workflow_records_sqlite.py
|
|
|
188
219
|
invokeai/app/services/workflow_records/default_workflows/ESRGAN Upscaling with Canny ControlNet.json
|
|
189
220
|
invokeai/app/services/workflow_records/default_workflows/Face Detailer with IP-Adapter & Canny (See Note in Details).json
|
|
190
221
|
invokeai/app/services/workflow_records/default_workflows/Multi ControlNet (Canny & Depth).json
|
|
191
|
-
invokeai/app/services/workflow_records/default_workflows/MultiDiffusion
|
|
222
|
+
invokeai/app/services/workflow_records/default_workflows/MultiDiffusion SD1.5.json
|
|
223
|
+
invokeai/app/services/workflow_records/default_workflows/MultiDiffusion SDXL.json
|
|
192
224
|
invokeai/app/services/workflow_records/default_workflows/Prompt from File.json
|
|
193
225
|
invokeai/app/services/workflow_records/default_workflows/Text to Image - SD1.5.json
|
|
194
226
|
invokeai/app/services/workflow_records/default_workflows/Text to Image - SDXL.json
|
|
@@ -226,15 +258,15 @@ invokeai/backend/image_util/util.py
|
|
|
226
258
|
invokeai/backend/image_util/basicsr/__init__.py
|
|
227
259
|
invokeai/backend/image_util/basicsr/arch_util.py
|
|
228
260
|
invokeai/backend/image_util/basicsr/rrdbnet_arch.py
|
|
229
|
-
invokeai/backend/image_util/depth_anything/
|
|
230
|
-
invokeai/backend/image_util/depth_anything/model/blocks.py
|
|
231
|
-
invokeai/backend/image_util/depth_anything/model/dpt.py
|
|
232
|
-
invokeai/backend/image_util/depth_anything/utilities/util.py
|
|
261
|
+
invokeai/backend/image_util/depth_anything/depth_anything_pipeline.py
|
|
233
262
|
invokeai/backend/image_util/dw_openpose/__init__.py
|
|
234
263
|
invokeai/backend/image_util/dw_openpose/onnxdet.py
|
|
235
264
|
invokeai/backend/image_util/dw_openpose/onnxpose.py
|
|
236
265
|
invokeai/backend/image_util/dw_openpose/utils.py
|
|
237
266
|
invokeai/backend/image_util/dw_openpose/wholebody.py
|
|
267
|
+
invokeai/backend/image_util/grounding_dino/__init__.py
|
|
268
|
+
invokeai/backend/image_util/grounding_dino/detection_result.py
|
|
269
|
+
invokeai/backend/image_util/grounding_dino/grounding_dino_pipeline.py
|
|
238
270
|
invokeai/backend/image_util/infill_methods/cv2_inpaint.py
|
|
239
271
|
invokeai/backend/image_util/infill_methods/lama.py
|
|
240
272
|
invokeai/backend/image_util/infill_methods/mosaic.py
|
|
@@ -242,6 +274,9 @@ invokeai/backend/image_util/infill_methods/patchmatch.py
|
|
|
242
274
|
invokeai/backend/image_util/infill_methods/tile.py
|
|
243
275
|
invokeai/backend/image_util/realesrgan/__init__.py
|
|
244
276
|
invokeai/backend/image_util/realesrgan/realesrgan.py
|
|
277
|
+
invokeai/backend/image_util/segment_anything/__init__.py
|
|
278
|
+
invokeai/backend/image_util/segment_anything/mask_refinement.py
|
|
279
|
+
invokeai/backend/image_util/segment_anything/segment_anything_pipeline.py
|
|
245
280
|
invokeai/backend/ip_adapter/__init__.py
|
|
246
281
|
invokeai/backend/ip_adapter/ip_adapter.py
|
|
247
282
|
invokeai/backend/ip_adapter/ip_attention_weights.py
|
|
@@ -291,7 +326,6 @@ invokeai/backend/stable_diffusion/diffusion_backend.py
|
|
|
291
326
|
invokeai/backend/stable_diffusion/extension_callback_type.py
|
|
292
327
|
invokeai/backend/stable_diffusion/extensions_manager.py
|
|
293
328
|
invokeai/backend/stable_diffusion/multi_diffusion_pipeline.py
|
|
294
|
-
invokeai/backend/stable_diffusion/seamless.py
|
|
295
329
|
invokeai/backend/stable_diffusion/vae_tiling.py
|
|
296
330
|
invokeai/backend/stable_diffusion/diffusion/__init__.py
|
|
297
331
|
invokeai/backend/stable_diffusion/diffusion/conditioning_data.py
|
|
@@ -303,8 +337,13 @@ invokeai/backend/stable_diffusion/diffusion/unet_attention_patcher.py
|
|
|
303
337
|
invokeai/backend/stable_diffusion/extensions/base.py
|
|
304
338
|
invokeai/backend/stable_diffusion/extensions/controlnet.py
|
|
305
339
|
invokeai/backend/stable_diffusion/extensions/freeu.py
|
|
340
|
+
invokeai/backend/stable_diffusion/extensions/inpaint.py
|
|
341
|
+
invokeai/backend/stable_diffusion/extensions/inpaint_model.py
|
|
342
|
+
invokeai/backend/stable_diffusion/extensions/lora.py
|
|
306
343
|
invokeai/backend/stable_diffusion/extensions/preview.py
|
|
307
344
|
invokeai/backend/stable_diffusion/extensions/rescale_cfg.py
|
|
345
|
+
invokeai/backend/stable_diffusion/extensions/seamless.py
|
|
346
|
+
invokeai/backend/stable_diffusion/extensions/t2i_adapter.py
|
|
308
347
|
invokeai/backend/stable_diffusion/schedulers/__init__.py
|
|
309
348
|
invokeai/backend/stable_diffusion/schedulers/schedulers.py
|
|
310
349
|
invokeai/backend/tiles/__init__.py
|
|
@@ -319,6 +358,7 @@ invokeai/backend/util/hotfixes.py
|
|
|
319
358
|
invokeai/backend/util/logging.py
|
|
320
359
|
invokeai/backend/util/mask.py
|
|
321
360
|
invokeai/backend/util/mps_fixes.py
|
|
361
|
+
invokeai/backend/util/original_weights_storage.py
|
|
322
362
|
invokeai/backend/util/silence_warnings.py
|
|
323
363
|
invokeai/backend/util/test_utils.py
|
|
324
364
|
invokeai/backend/util/util.py
|
|
@@ -345,18 +385,18 @@ invokeai/frontend/install/__init__.py
|
|
|
345
385
|
invokeai/frontend/install/import_images.py
|
|
346
386
|
invokeai/frontend/web/__init__.py
|
|
347
387
|
invokeai/frontend/web/dist/index.html
|
|
388
|
+
invokeai/frontend/web/dist/assets/App-CWIiEcee.js
|
|
348
389
|
invokeai/frontend/web/dist/assets/App-DEu4J2pT.css
|
|
349
|
-
invokeai/frontend/web/dist/assets/
|
|
350
|
-
invokeai/frontend/web/dist/assets/ThemeLocaleProvider-
|
|
351
|
-
invokeai/frontend/web/dist/assets/
|
|
352
|
-
invokeai/frontend/web/dist/assets/
|
|
353
|
-
invokeai/frontend/web/dist/assets/inter-cyrillic-
|
|
354
|
-
invokeai/frontend/web/dist/assets/inter-
|
|
355
|
-
invokeai/frontend/web/dist/assets/inter-greek-
|
|
356
|
-
invokeai/frontend/web/dist/assets/inter-
|
|
357
|
-
invokeai/frontend/web/dist/assets/inter-latin-
|
|
358
|
-
invokeai/frontend/web/dist/assets/inter-
|
|
359
|
-
invokeai/frontend/web/dist/assets/inter-vietnamese-wght-normal-_GQuwPVU.woff2
|
|
390
|
+
invokeai/frontend/web/dist/assets/ThemeLocaleProvider-B2NxUfIp.css
|
|
391
|
+
invokeai/frontend/web/dist/assets/ThemeLocaleProvider-BA4F4U51.js
|
|
392
|
+
invokeai/frontend/web/dist/assets/index-CnfsQw4G.js
|
|
393
|
+
invokeai/frontend/web/dist/assets/inter-cyrillic-ext-wght-normal-B2xhLi22.woff2
|
|
394
|
+
invokeai/frontend/web/dist/assets/inter-cyrillic-wght-normal-CMZtQduZ.woff2
|
|
395
|
+
invokeai/frontend/web/dist/assets/inter-greek-ext-wght-normal-CGAr0uHJ.woff2
|
|
396
|
+
invokeai/frontend/web/dist/assets/inter-greek-wght-normal-CaVNZxsx.woff2
|
|
397
|
+
invokeai/frontend/web/dist/assets/inter-latin-ext-wght-normal-CFHvXkgd.woff2
|
|
398
|
+
invokeai/frontend/web/dist/assets/inter-latin-wght-normal-C2S99t-D.woff2
|
|
399
|
+
invokeai/frontend/web/dist/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2
|
|
360
400
|
invokeai/frontend/web/dist/assets/images/invoke-alert-favicon.svg
|
|
361
401
|
invokeai/frontend/web/dist/assets/images/invoke-avatar-circle.svg
|
|
362
402
|
invokeai/frontend/web/dist/assets/images/invoke-avatar-square.svg
|
|
@@ -35,7 +35,7 @@ dynamicprompts
|
|
|
35
35
|
easing-functions
|
|
36
36
|
einops
|
|
37
37
|
facexlib
|
|
38
|
-
matplotlib
|
|
38
|
+
matplotlib!=3.9.1
|
|
39
39
|
npyscreen
|
|
40
40
|
omegaconf
|
|
41
41
|
picklescan
|
|
@@ -50,7 +50,6 @@ requests~=2.28.2
|
|
|
50
50
|
rich~=13.3
|
|
51
51
|
scikit-image~=0.21.0
|
|
52
52
|
semver~=3.0.1
|
|
53
|
-
send2trash
|
|
54
53
|
test-tube~=0.7.5
|
|
55
54
|
|
|
56
55
|
[:sys_platform == "win32"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: InvokeAI
|
|
3
|
-
Version: 4.2.
|
|
3
|
+
Version: 4.2.8
|
|
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
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
# Copyright (c) 2022 Kyle Schouviller (https://github.com/kyle0654)
|
|
2
2
|
|
|
3
|
+
import asyncio
|
|
3
4
|
from logging import Logger
|
|
4
5
|
|
|
5
6
|
import torch
|
|
@@ -31,6 +32,8 @@ from invokeai.app.services.session_processor.session_processor_default import (
|
|
|
31
32
|
)
|
|
32
33
|
from invokeai.app.services.session_queue.session_queue_sqlite import SqliteSessionQueue
|
|
33
34
|
from invokeai.app.services.shared.sqlite.sqlite_util import init_db
|
|
35
|
+
from invokeai.app.services.style_preset_images.style_preset_images_disk import StylePresetImageFileStorageDisk
|
|
36
|
+
from invokeai.app.services.style_preset_records.style_preset_records_sqlite import SqliteStylePresetRecordsStorage
|
|
34
37
|
from invokeai.app.services.urls.urls_default import LocalUrlService
|
|
35
38
|
from invokeai.app.services.workflow_records.workflow_records_sqlite import SqliteWorkflowRecordsStorage
|
|
36
39
|
from invokeai.backend.stable_diffusion.diffusion.conditioning_data import ConditioningFieldData
|
|
@@ -63,7 +66,12 @@ class ApiDependencies:
|
|
|
63
66
|
invoker: Invoker
|
|
64
67
|
|
|
65
68
|
@staticmethod
|
|
66
|
-
def initialize(
|
|
69
|
+
def initialize(
|
|
70
|
+
config: InvokeAIAppConfig,
|
|
71
|
+
event_handler_id: int,
|
|
72
|
+
loop: asyncio.AbstractEventLoop,
|
|
73
|
+
logger: Logger = logger,
|
|
74
|
+
) -> None:
|
|
67
75
|
logger.info(f"InvokeAI version {__version__}")
|
|
68
76
|
logger.info(f"Root directory = {str(config.root_path)}")
|
|
69
77
|
|
|
@@ -74,6 +82,7 @@ class ApiDependencies:
|
|
|
74
82
|
image_files = DiskImageFileStorage(f"{output_folder}/images")
|
|
75
83
|
|
|
76
84
|
model_images_folder = config.models_path
|
|
85
|
+
style_presets_folder = config.style_presets_path
|
|
77
86
|
|
|
78
87
|
db = init_db(config=config, logger=logger, image_files=image_files)
|
|
79
88
|
|
|
@@ -84,7 +93,7 @@ class ApiDependencies:
|
|
|
84
93
|
board_images = BoardImagesService()
|
|
85
94
|
board_records = SqliteBoardRecordStorage(db=db)
|
|
86
95
|
boards = BoardService()
|
|
87
|
-
events = FastAPIEventService(event_handler_id)
|
|
96
|
+
events = FastAPIEventService(event_handler_id, loop=loop)
|
|
88
97
|
bulk_download = BulkDownloadService()
|
|
89
98
|
image_records = SqliteImageRecordStorage(db=db)
|
|
90
99
|
images = ImageService()
|
|
@@ -109,6 +118,8 @@ class ApiDependencies:
|
|
|
109
118
|
session_queue = SqliteSessionQueue(db=db)
|
|
110
119
|
urls = LocalUrlService()
|
|
111
120
|
workflow_records = SqliteWorkflowRecordsStorage(db=db)
|
|
121
|
+
style_preset_records = SqliteStylePresetRecordsStorage(db=db)
|
|
122
|
+
style_preset_image_files = StylePresetImageFileStorageDisk(style_presets_folder / "images")
|
|
112
123
|
|
|
113
124
|
services = InvocationServices(
|
|
114
125
|
board_image_records=board_image_records,
|
|
@@ -134,6 +145,8 @@ class ApiDependencies:
|
|
|
134
145
|
workflow_records=workflow_records,
|
|
135
146
|
tensors=tensors,
|
|
136
147
|
conditioning=conditioning,
|
|
148
|
+
style_preset_records=style_preset_records,
|
|
149
|
+
style_preset_image_files=style_preset_image_files,
|
|
137
150
|
)
|
|
138
151
|
|
|
139
152
|
ApiDependencies.invoker = Invoker(services)
|
|
@@ -218,9 +218,8 @@ async def get_image_workflow(
|
|
|
218
218
|
raise HTTPException(status_code=404)
|
|
219
219
|
|
|
220
220
|
|
|
221
|
-
@images_router.
|
|
221
|
+
@images_router.get(
|
|
222
222
|
"/i/{image_name}/full",
|
|
223
|
-
methods=["GET", "HEAD"],
|
|
224
223
|
operation_id="get_image_full",
|
|
225
224
|
response_class=Response,
|
|
226
225
|
responses={
|
|
@@ -231,6 +230,18 @@ async def get_image_workflow(
|
|
|
231
230
|
404: {"description": "Image not found"},
|
|
232
231
|
},
|
|
233
232
|
)
|
|
233
|
+
@images_router.head(
|
|
234
|
+
"/i/{image_name}/full",
|
|
235
|
+
operation_id="get_image_full_head",
|
|
236
|
+
response_class=Response,
|
|
237
|
+
responses={
|
|
238
|
+
200: {
|
|
239
|
+
"description": "Return the full-resolution image",
|
|
240
|
+
"content": {"image/png": {}},
|
|
241
|
+
},
|
|
242
|
+
404: {"description": "Image not found"},
|
|
243
|
+
},
|
|
244
|
+
)
|
|
234
245
|
async def get_image_full(
|
|
235
246
|
image_name: str = Path(description="The name of full-resolution image file to get"),
|
|
236
247
|
) -> Response:
|
|
@@ -242,6 +253,7 @@ async def get_image_full(
|
|
|
242
253
|
content = f.read()
|
|
243
254
|
response = Response(content, media_type="image/png")
|
|
244
255
|
response.headers["Cache-Control"] = f"max-age={IMAGE_MAX_AGE}"
|
|
256
|
+
response.headers["Content-Disposition"] = f'inline; filename="{image_name}"'
|
|
245
257
|
return response
|
|
246
258
|
except Exception:
|
|
247
259
|
raise HTTPException(status_code=404)
|
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
import csv
|
|
2
|
+
import io
|
|
3
|
+
import json
|
|
4
|
+
import traceback
|
|
5
|
+
from typing import Optional
|
|
6
|
+
|
|
7
|
+
import pydantic
|
|
8
|
+
from fastapi import APIRouter, File, Form, HTTPException, Path, Response, UploadFile
|
|
9
|
+
from fastapi.responses import FileResponse
|
|
10
|
+
from PIL import Image
|
|
11
|
+
from pydantic import BaseModel, Field
|
|
12
|
+
|
|
13
|
+
from invokeai.app.api.dependencies import ApiDependencies
|
|
14
|
+
from invokeai.app.api.routers.model_manager import IMAGE_MAX_AGE
|
|
15
|
+
from invokeai.app.services.style_preset_images.style_preset_images_common import StylePresetImageFileNotFoundException
|
|
16
|
+
from invokeai.app.services.style_preset_records.style_preset_records_common import (
|
|
17
|
+
InvalidPresetImportDataError,
|
|
18
|
+
PresetData,
|
|
19
|
+
PresetType,
|
|
20
|
+
StylePresetChanges,
|
|
21
|
+
StylePresetNotFoundError,
|
|
22
|
+
StylePresetRecordWithImage,
|
|
23
|
+
StylePresetWithoutId,
|
|
24
|
+
UnsupportedFileTypeError,
|
|
25
|
+
parse_presets_from_file,
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class StylePresetFormData(BaseModel):
|
|
30
|
+
name: str = Field(description="Preset name")
|
|
31
|
+
positive_prompt: str = Field(description="Positive prompt")
|
|
32
|
+
negative_prompt: str = Field(description="Negative prompt")
|
|
33
|
+
type: PresetType = Field(description="Preset type")
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
style_presets_router = APIRouter(prefix="/v1/style_presets", tags=["style_presets"])
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
@style_presets_router.get(
|
|
40
|
+
"/i/{style_preset_id}",
|
|
41
|
+
operation_id="get_style_preset",
|
|
42
|
+
responses={
|
|
43
|
+
200: {"model": StylePresetRecordWithImage},
|
|
44
|
+
},
|
|
45
|
+
)
|
|
46
|
+
async def get_style_preset(
|
|
47
|
+
style_preset_id: str = Path(description="The style preset to get"),
|
|
48
|
+
) -> StylePresetRecordWithImage:
|
|
49
|
+
"""Gets a style preset"""
|
|
50
|
+
try:
|
|
51
|
+
image = ApiDependencies.invoker.services.style_preset_image_files.get_url(style_preset_id)
|
|
52
|
+
style_preset = ApiDependencies.invoker.services.style_preset_records.get(style_preset_id)
|
|
53
|
+
return StylePresetRecordWithImage(image=image, **style_preset.model_dump())
|
|
54
|
+
except StylePresetNotFoundError:
|
|
55
|
+
raise HTTPException(status_code=404, detail="Style preset not found")
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
@style_presets_router.patch(
|
|
59
|
+
"/i/{style_preset_id}",
|
|
60
|
+
operation_id="update_style_preset",
|
|
61
|
+
responses={
|
|
62
|
+
200: {"model": StylePresetRecordWithImage},
|
|
63
|
+
},
|
|
64
|
+
)
|
|
65
|
+
async def update_style_preset(
|
|
66
|
+
image: Optional[UploadFile] = File(description="The image file to upload", default=None),
|
|
67
|
+
style_preset_id: str = Path(description="The id of the style preset to update"),
|
|
68
|
+
data: str = Form(description="The data of the style preset to update"),
|
|
69
|
+
) -> StylePresetRecordWithImage:
|
|
70
|
+
"""Updates a style preset"""
|
|
71
|
+
if image is not None:
|
|
72
|
+
if not image.content_type or not image.content_type.startswith("image"):
|
|
73
|
+
raise HTTPException(status_code=415, detail="Not an image")
|
|
74
|
+
|
|
75
|
+
contents = await image.read()
|
|
76
|
+
try:
|
|
77
|
+
pil_image = Image.open(io.BytesIO(contents))
|
|
78
|
+
|
|
79
|
+
except Exception:
|
|
80
|
+
ApiDependencies.invoker.services.logger.error(traceback.format_exc())
|
|
81
|
+
raise HTTPException(status_code=415, detail="Failed to read image")
|
|
82
|
+
|
|
83
|
+
try:
|
|
84
|
+
ApiDependencies.invoker.services.style_preset_image_files.save(style_preset_id, pil_image)
|
|
85
|
+
except ValueError as e:
|
|
86
|
+
raise HTTPException(status_code=409, detail=str(e))
|
|
87
|
+
else:
|
|
88
|
+
try:
|
|
89
|
+
ApiDependencies.invoker.services.style_preset_image_files.delete(style_preset_id)
|
|
90
|
+
except StylePresetImageFileNotFoundException:
|
|
91
|
+
pass
|
|
92
|
+
|
|
93
|
+
try:
|
|
94
|
+
parsed_data = json.loads(data)
|
|
95
|
+
validated_data = StylePresetFormData(**parsed_data)
|
|
96
|
+
|
|
97
|
+
name = validated_data.name
|
|
98
|
+
type = validated_data.type
|
|
99
|
+
positive_prompt = validated_data.positive_prompt
|
|
100
|
+
negative_prompt = validated_data.negative_prompt
|
|
101
|
+
|
|
102
|
+
except pydantic.ValidationError:
|
|
103
|
+
raise HTTPException(status_code=400, detail="Invalid preset data")
|
|
104
|
+
|
|
105
|
+
preset_data = PresetData(positive_prompt=positive_prompt, negative_prompt=negative_prompt)
|
|
106
|
+
changes = StylePresetChanges(name=name, preset_data=preset_data, type=type)
|
|
107
|
+
|
|
108
|
+
style_preset_image = ApiDependencies.invoker.services.style_preset_image_files.get_url(style_preset_id)
|
|
109
|
+
style_preset = ApiDependencies.invoker.services.style_preset_records.update(
|
|
110
|
+
style_preset_id=style_preset_id, changes=changes
|
|
111
|
+
)
|
|
112
|
+
return StylePresetRecordWithImage(image=style_preset_image, **style_preset.model_dump())
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
@style_presets_router.delete(
|
|
116
|
+
"/i/{style_preset_id}",
|
|
117
|
+
operation_id="delete_style_preset",
|
|
118
|
+
)
|
|
119
|
+
async def delete_style_preset(
|
|
120
|
+
style_preset_id: str = Path(description="The style preset to delete"),
|
|
121
|
+
) -> None:
|
|
122
|
+
"""Deletes a style preset"""
|
|
123
|
+
try:
|
|
124
|
+
ApiDependencies.invoker.services.style_preset_image_files.delete(style_preset_id)
|
|
125
|
+
except StylePresetImageFileNotFoundException:
|
|
126
|
+
pass
|
|
127
|
+
|
|
128
|
+
ApiDependencies.invoker.services.style_preset_records.delete(style_preset_id)
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
@style_presets_router.post(
|
|
132
|
+
"/",
|
|
133
|
+
operation_id="create_style_preset",
|
|
134
|
+
responses={
|
|
135
|
+
200: {"model": StylePresetRecordWithImage},
|
|
136
|
+
},
|
|
137
|
+
)
|
|
138
|
+
async def create_style_preset(
|
|
139
|
+
image: Optional[UploadFile] = File(description="The image file to upload", default=None),
|
|
140
|
+
data: str = Form(description="The data of the style preset to create"),
|
|
141
|
+
) -> StylePresetRecordWithImage:
|
|
142
|
+
"""Creates a style preset"""
|
|
143
|
+
|
|
144
|
+
try:
|
|
145
|
+
parsed_data = json.loads(data)
|
|
146
|
+
validated_data = StylePresetFormData(**parsed_data)
|
|
147
|
+
|
|
148
|
+
name = validated_data.name
|
|
149
|
+
type = validated_data.type
|
|
150
|
+
positive_prompt = validated_data.positive_prompt
|
|
151
|
+
negative_prompt = validated_data.negative_prompt
|
|
152
|
+
|
|
153
|
+
except pydantic.ValidationError:
|
|
154
|
+
raise HTTPException(status_code=400, detail="Invalid preset data")
|
|
155
|
+
|
|
156
|
+
preset_data = PresetData(positive_prompt=positive_prompt, negative_prompt=negative_prompt)
|
|
157
|
+
style_preset = StylePresetWithoutId(name=name, preset_data=preset_data, type=type)
|
|
158
|
+
new_style_preset = ApiDependencies.invoker.services.style_preset_records.create(style_preset=style_preset)
|
|
159
|
+
|
|
160
|
+
if image is not None:
|
|
161
|
+
if not image.content_type or not image.content_type.startswith("image"):
|
|
162
|
+
raise HTTPException(status_code=415, detail="Not an image")
|
|
163
|
+
|
|
164
|
+
contents = await image.read()
|
|
165
|
+
try:
|
|
166
|
+
pil_image = Image.open(io.BytesIO(contents))
|
|
167
|
+
|
|
168
|
+
except Exception:
|
|
169
|
+
ApiDependencies.invoker.services.logger.error(traceback.format_exc())
|
|
170
|
+
raise HTTPException(status_code=415, detail="Failed to read image")
|
|
171
|
+
|
|
172
|
+
try:
|
|
173
|
+
ApiDependencies.invoker.services.style_preset_image_files.save(new_style_preset.id, pil_image)
|
|
174
|
+
except ValueError as e:
|
|
175
|
+
raise HTTPException(status_code=409, detail=str(e))
|
|
176
|
+
|
|
177
|
+
preset_image = ApiDependencies.invoker.services.style_preset_image_files.get_url(new_style_preset.id)
|
|
178
|
+
return StylePresetRecordWithImage(image=preset_image, **new_style_preset.model_dump())
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
@style_presets_router.get(
|
|
182
|
+
"/",
|
|
183
|
+
operation_id="list_style_presets",
|
|
184
|
+
responses={
|
|
185
|
+
200: {"model": list[StylePresetRecordWithImage]},
|
|
186
|
+
},
|
|
187
|
+
)
|
|
188
|
+
async def list_style_presets() -> list[StylePresetRecordWithImage]:
|
|
189
|
+
"""Gets a page of style presets"""
|
|
190
|
+
style_presets_with_image: list[StylePresetRecordWithImage] = []
|
|
191
|
+
style_presets = ApiDependencies.invoker.services.style_preset_records.get_many()
|
|
192
|
+
for preset in style_presets:
|
|
193
|
+
image = ApiDependencies.invoker.services.style_preset_image_files.get_url(preset.id)
|
|
194
|
+
style_preset_with_image = StylePresetRecordWithImage(image=image, **preset.model_dump())
|
|
195
|
+
style_presets_with_image.append(style_preset_with_image)
|
|
196
|
+
|
|
197
|
+
return style_presets_with_image
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
@style_presets_router.get(
|
|
201
|
+
"/i/{style_preset_id}/image",
|
|
202
|
+
operation_id="get_style_preset_image",
|
|
203
|
+
responses={
|
|
204
|
+
200: {
|
|
205
|
+
"description": "The style preset image was fetched successfully",
|
|
206
|
+
},
|
|
207
|
+
400: {"description": "Bad request"},
|
|
208
|
+
404: {"description": "The style preset image could not be found"},
|
|
209
|
+
},
|
|
210
|
+
status_code=200,
|
|
211
|
+
)
|
|
212
|
+
async def get_style_preset_image(
|
|
213
|
+
style_preset_id: str = Path(description="The id of the style preset image to get"),
|
|
214
|
+
) -> FileResponse:
|
|
215
|
+
"""Gets an image file that previews the model"""
|
|
216
|
+
|
|
217
|
+
try:
|
|
218
|
+
path = ApiDependencies.invoker.services.style_preset_image_files.get_path(style_preset_id)
|
|
219
|
+
|
|
220
|
+
response = FileResponse(
|
|
221
|
+
path,
|
|
222
|
+
media_type="image/png",
|
|
223
|
+
filename=style_preset_id + ".png",
|
|
224
|
+
content_disposition_type="inline",
|
|
225
|
+
)
|
|
226
|
+
response.headers["Cache-Control"] = f"max-age={IMAGE_MAX_AGE}"
|
|
227
|
+
return response
|
|
228
|
+
except Exception:
|
|
229
|
+
raise HTTPException(status_code=404)
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
@style_presets_router.get(
|
|
233
|
+
"/export",
|
|
234
|
+
operation_id="export_style_presets",
|
|
235
|
+
responses={200: {"content": {"text/csv": {}}, "description": "A CSV file with the requested data."}},
|
|
236
|
+
status_code=200,
|
|
237
|
+
)
|
|
238
|
+
async def export_style_presets():
|
|
239
|
+
# Create an in-memory stream to store the CSV data
|
|
240
|
+
output = io.StringIO()
|
|
241
|
+
writer = csv.writer(output)
|
|
242
|
+
|
|
243
|
+
# Write the header
|
|
244
|
+
writer.writerow(["name", "prompt", "negative_prompt"])
|
|
245
|
+
|
|
246
|
+
style_presets = ApiDependencies.invoker.services.style_preset_records.get_many(type=PresetType.User)
|
|
247
|
+
|
|
248
|
+
for preset in style_presets:
|
|
249
|
+
writer.writerow([preset.name, preset.preset_data.positive_prompt, preset.preset_data.negative_prompt])
|
|
250
|
+
|
|
251
|
+
csv_data = output.getvalue()
|
|
252
|
+
output.close()
|
|
253
|
+
|
|
254
|
+
return Response(
|
|
255
|
+
content=csv_data,
|
|
256
|
+
media_type="text/csv",
|
|
257
|
+
headers={"Content-Disposition": "attachment; filename=prompt_templates.csv"},
|
|
258
|
+
)
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
@style_presets_router.post(
|
|
262
|
+
"/import",
|
|
263
|
+
operation_id="import_style_presets",
|
|
264
|
+
)
|
|
265
|
+
async def import_style_presets(file: UploadFile = File(description="The file to import")):
|
|
266
|
+
try:
|
|
267
|
+
style_presets = await parse_presets_from_file(file)
|
|
268
|
+
ApiDependencies.invoker.services.style_preset_records.create_many(style_presets)
|
|
269
|
+
except InvalidPresetImportDataError as e:
|
|
270
|
+
ApiDependencies.invoker.services.logger.error(traceback.format_exc())
|
|
271
|
+
raise HTTPException(status_code=400, detail=str(e))
|
|
272
|
+
except UnsupportedFileTypeError as e:
|
|
273
|
+
ApiDependencies.invoker.services.logger.error(traceback.format_exc())
|
|
274
|
+
raise HTTPException(status_code=415, detail=str(e))
|
|
@@ -30,6 +30,7 @@ from invokeai.app.api.routers import (
|
|
|
30
30
|
images,
|
|
31
31
|
model_manager,
|
|
32
32
|
session_queue,
|
|
33
|
+
style_presets,
|
|
33
34
|
utilities,
|
|
34
35
|
workflows,
|
|
35
36
|
)
|
|
@@ -55,11 +56,13 @@ mimetypes.add_type("text/css", ".css")
|
|
|
55
56
|
torch_device_name = TorchDevice.get_torch_device_name()
|
|
56
57
|
logger.info(f"Using torch device: {torch_device_name}")
|
|
57
58
|
|
|
59
|
+
loop = asyncio.new_event_loop()
|
|
60
|
+
|
|
58
61
|
|
|
59
62
|
@asynccontextmanager
|
|
60
63
|
async def lifespan(app: FastAPI):
|
|
61
64
|
# Add startup event to load dependencies
|
|
62
|
-
ApiDependencies.initialize(config=app_config, event_handler_id=event_handler_id, logger=logger)
|
|
65
|
+
ApiDependencies.initialize(config=app_config, event_handler_id=event_handler_id, loop=loop, logger=logger)
|
|
63
66
|
yield
|
|
64
67
|
# Shut down threads
|
|
65
68
|
ApiDependencies.shutdown()
|
|
@@ -106,6 +109,7 @@ app.include_router(board_images.board_images_router, prefix="/api")
|
|
|
106
109
|
app.include_router(app_info.app_router, prefix="/api")
|
|
107
110
|
app.include_router(session_queue.session_queue_router, prefix="/api")
|
|
108
111
|
app.include_router(workflows.workflows_router, prefix="/api")
|
|
112
|
+
app.include_router(style_presets.style_presets_router, prefix="/api")
|
|
109
113
|
|
|
110
114
|
app.openapi = get_openapi_func(app)
|
|
111
115
|
|
|
@@ -184,8 +188,6 @@ def invoke_api() -> None:
|
|
|
184
188
|
|
|
185
189
|
check_cudnn(logger)
|
|
186
190
|
|
|
187
|
-
# Start our own event loop for eventing usage
|
|
188
|
-
loop = asyncio.new_event_loop()
|
|
189
191
|
config = uvicorn.Config(
|
|
190
192
|
app=app,
|
|
191
193
|
host=app_config.host,
|
|
@@ -80,12 +80,12 @@ class CompelInvocation(BaseInvocation):
|
|
|
80
80
|
|
|
81
81
|
with (
|
|
82
82
|
# apply all patches while the model is on the target device
|
|
83
|
-
text_encoder_info.model_on_device() as (
|
|
83
|
+
text_encoder_info.model_on_device() as (cached_weights, text_encoder),
|
|
84
84
|
tokenizer_info as tokenizer,
|
|
85
85
|
ModelPatcher.apply_lora_text_encoder(
|
|
86
86
|
text_encoder,
|
|
87
87
|
loras=_lora_loader(),
|
|
88
|
-
|
|
88
|
+
cached_weights=cached_weights,
|
|
89
89
|
),
|
|
90
90
|
# Apply CLIP Skip after LoRA to prevent LoRA application from failing on skipped layers.
|
|
91
91
|
ModelPatcher.apply_clip_skip(text_encoder, self.clip.skipped_layers),
|
|
@@ -175,13 +175,13 @@ class SDXLPromptInvocationBase:
|
|
|
175
175
|
|
|
176
176
|
with (
|
|
177
177
|
# apply all patches while the model is on the target device
|
|
178
|
-
text_encoder_info.model_on_device() as (
|
|
178
|
+
text_encoder_info.model_on_device() as (cached_weights, text_encoder),
|
|
179
179
|
tokenizer_info as tokenizer,
|
|
180
180
|
ModelPatcher.apply_lora(
|
|
181
181
|
text_encoder,
|
|
182
182
|
loras=_lora_loader(),
|
|
183
183
|
prefix=lora_prefix,
|
|
184
|
-
|
|
184
|
+
cached_weights=cached_weights,
|
|
185
185
|
),
|
|
186
186
|
# Apply CLIP Skip after LoRA to prevent LoRA application from failing on skipped layers.
|
|
187
187
|
ModelPatcher.apply_clip_skip(text_encoder, clip_field.skipped_layers),
|