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