horde-engine 6.3.0__tar.gz → 6.3.2__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.
- {horde_engine-6.3.0 → horde_engine-6.3.2}/PKG-INFO +1 -1
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/_version.py +2 -2
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/model_manager/civitai_adhoc.py +78 -8
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/model_manager/hyper.py +5 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/shared_model_manager.py +7 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/.gitignore +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/LICENSE +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/README.md +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/__init__.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/__pyinstaller.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/api.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/benchmark.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/beta_models.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/comfy_horde.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/config_path.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/consts.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/exceptions.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/execution/__init__.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/execution/comfy_events.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/execution/comfy_patches.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/execution/component_materialize.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/execution/component_stability_probe.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/execution/graph_utils.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/execution/in_process.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/execution/interface.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/execution/model_dirs.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/execution/phase_timing.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/execution/progress_hook.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/execution/results.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/execution/sampling_lease.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/execution/server_shim.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/execution/shared_components.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/execution/stage_graph.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/execution/stage_payloads.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/execution/zero_copy_load.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/feature_impact.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/feature_requirements.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/horde.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/initialisation.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/installation/__init__.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/installation/__main__.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/installation/installer.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/installation/manifest.json +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/installation/manifest.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/integrations/__init__.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/integrations/logfire_comfy_internals.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/integrations/logfire_setup.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/metrics.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/model_database/db_dep.json +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/model_database/db_embeds.json +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/model_database/diffusers.json +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/model_database/med_config.json +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/model_manager/__init__.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/model_manager/annotator_provider.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/model_manager/base.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/model_manager/civitai_provider.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/model_manager/civitai_records.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/model_manager/codeformer.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/model_manager/compvis.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/model_manager/controlnet.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/model_manager/controlnet_annotator.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/model_manager/diffusers.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/model_manager/esrgan.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/model_manager/gfpgan.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/model_manager/lora.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/model_manager/miscellaneous.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/model_manager/safety_checker.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/model_manager/ti.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/__init__.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/comfyui_layerdiffuse/LICENSE +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/comfyui_layerdiffuse/README.md +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/comfyui_layerdiffuse/__init__.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/comfyui_layerdiffuse/examples/layer_diffusion_cond_example.json +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/comfyui_layerdiffuse/examples/layer_diffusion_cond_fg_all.json +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/comfyui_layerdiffuse/examples/layer_diffusion_cond_joint_bg.json +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/comfyui_layerdiffuse/examples/layer_diffusion_cond_joint_fg.json +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/comfyui_layerdiffuse/examples/layer_diffusion_diff_bg.json +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/comfyui_layerdiffuse/examples/layer_diffusion_diff_bg_stop_at.json +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/comfyui_layerdiffuse/examples/layer_diffusion_diff_fg.json +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/comfyui_layerdiffuse/examples/layer_diffusion_fg_example.json +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/comfyui_layerdiffuse/examples/layer_diffusion_fg_example_rgba.json +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/comfyui_layerdiffuse/examples/layer_diffusion_joint.json +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/comfyui_layerdiffuse/layered_diffusion.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/comfyui_layerdiffuse/lib_layerdiffusion/__init__.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/comfyui_layerdiffuse/lib_layerdiffusion/attention_sharing.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/comfyui_layerdiffuse/lib_layerdiffusion/enums.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/comfyui_layerdiffuse/lib_layerdiffusion/models.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/comfyui_layerdiffuse/lib_layerdiffusion/utils.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/comfyui_layerdiffuse/pyproject.toml +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/comfyui_layerdiffuse/requirements.txt +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/LICENSE +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/README.md +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/__init__.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/VERSION +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/__init__.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/archs/__init__.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/archs/arcface_arch.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/archs/arch_util.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/archs/codeformer_arch.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/archs/rrdbnet_arch.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/archs/vgg_arch.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/archs/vqgan_arch.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/data/__init__.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/data/data_sampler.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/data/data_util.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/data/prefetch_dataloader.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/data/transforms.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/losses/__init__.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/losses/loss_util.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/losses/losses.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/metrics/__init__.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/metrics/metric_util.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/metrics/psnr_ssim.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/models/__init__.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/ops/__init__.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/ops/dcn/__init__.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/ops/dcn/deform_conv.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/ops/dcn/src/deform_conv_cuda.cpp +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/ops/dcn/src/deform_conv_cuda_kernel.cu +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/ops/dcn/src/deform_conv_ext.cpp +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/ops/fused_act/__init__.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/ops/fused_act/fused_act.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/ops/fused_act/src/fused_bias_act.cpp +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/ops/fused_act/src/fused_bias_act_kernel.cu +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/ops/upfirdn2d/__init__.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/ops/upfirdn2d/src/upfirdn2d.cpp +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/ops/upfirdn2d/src/upfirdn2d_kernel.cu +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/ops/upfirdn2d/upfirdn2d.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/setup.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/train.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/utils/__init__.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/utils/dist_util.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/utils/download_util.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/utils/file_client.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/utils/img_util.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/utils/lmdb_util.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/utils/logger.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/utils/matlab_functions.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/utils/misc.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/utils/options.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/utils/realesrgan_utils.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/utils/registry.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/version.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/facelib/__init__.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/facelib/detection/__init__.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/facelib/detection/align_trans.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/facelib/detection/matlab_cp2tform.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/facelib/detection/retinaface/retinaface.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/facelib/detection/retinaface/retinaface_net.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/facelib/detection/retinaface/retinaface_utils.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/facelib/detection/yolov5face/__init__.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/facelib/detection/yolov5face/face_detector.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/facelib/detection/yolov5face/models/__init__.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/facelib/detection/yolov5face/models/common.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/facelib/detection/yolov5face/models/experimental.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/facelib/detection/yolov5face/models/yolo.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/facelib/detection/yolov5face/models/yolov5l.yaml +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/facelib/detection/yolov5face/models/yolov5n.yaml +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/facelib/detection/yolov5face/utils/__init__.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/facelib/detection/yolov5face/utils/autoanchor.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/facelib/detection/yolov5face/utils/datasets.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/facelib/detection/yolov5face/utils/extract_ckpt.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/facelib/detection/yolov5face/utils/general.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/facelib/detection/yolov5face/utils/torch_utils.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/facelib/parsing/__init__.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/facelib/parsing/bisenet.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/facelib/parsing/parsenet.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/facelib/parsing/resnet.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/facelib/utils/__init__.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/facelib/utils/face_restoration_helper.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/facelib/utils/face_utils.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/facelib/utils/misc.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/r_chainner/README.md +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/r_chainner/__init__.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/r_chainner/gfpganv1_clean_arch.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/r_chainner/model_loading.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/r_chainner/stylegan2_clean_arch.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/r_chainner/types.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/node_controlnet_model_loader.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/node_image_loader.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/node_image_output.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/node_lora_loader.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/node_model_loader.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/node_stage_io.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/node_upscale_model_loader.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/node_v3_canary.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipeline/__init__.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipeline/comfy_node_inputs.json +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipeline/constants.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipeline/context.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipeline/definition.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipeline/families/__init__.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipeline/families/image.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipeline/families/image_gen/__init__.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipeline/families/image_gen/baselines.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipeline/families/image_gen/bindings.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipeline/families/image_gen/cascade.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipeline/families/image_gen/controlnet.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipeline/families/image_gen/creative_upscale.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipeline/families/image_gen/features.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipeline/families/image_gen/flux.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipeline/families/image_gen/qr_code.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipeline/families/image_gen/qwen.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipeline/families/image_gen/stable_diffusion.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipeline/families/image_gen/steps.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipeline/families/image_gen/z_image.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipeline/families/post_processing.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipeline/graph.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipeline/horde_compat.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipeline/identifiers.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipeline/node_schemas.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipeline/patches.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipeline/payload.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipeline/payload_pp.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipeline/registry.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipeline/resolution.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipeline/sdk_adapter.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipeline_designs/pipeline_controlnet.json +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipeline_designs/pipeline_controlnet_annotator.json +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipeline_designs/pipeline_controlnet_hires_fix.json +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipeline_designs/pipeline_flux.json +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipeline_designs/pipeline_image_facefix.json +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipeline_designs/pipeline_image_upscale.json +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipeline_designs/pipeline_qr_code.json +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipeline_designs/pipeline_qwen.json +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipeline_designs/pipeline_stable_cascade.json +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipeline_designs/pipeline_stable_cascade_2pass.json +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipeline_designs/pipeline_stable_cascade_remix.json +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipeline_designs/pipeline_stable_diffusion.json +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipeline_designs/pipeline_stable_diffusion_hires_fix.json +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipeline_designs/pipeline_stable_diffusion_img2img_mask.json +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipeline_designs/pipeline_stable_diffusion_paint.json +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipelines/pipeline_controlnet.json +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipelines/pipeline_controlnet_annotator.json +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipelines/pipeline_controlnet_hires_fix.json +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipelines/pipeline_creative_upscale.json +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipelines/pipeline_flux.json +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipelines/pipeline_image_facefix.json +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipelines/pipeline_image_upscale.json +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipelines/pipeline_qr_code.json +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipelines/pipeline_qwen.json +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipelines/pipeline_stable_cascade.json +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipelines/pipeline_stable_cascade_2pass.json +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipelines/pipeline_stable_cascade_remix.json +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipelines/pipeline_stable_diffusion.json +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipelines/pipeline_stable_diffusion_hires_fix.json +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipelines/pipeline_stable_diffusion_img2img_mask.json +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipelines/pipeline_stable_diffusion_paint.json +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pipelines/pipeline_z_image.json +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/preload.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/profiling.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/py.typed +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pyinstaller_hooks/__init__.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/pyinstaller_hooks/hook-hordelib.horde.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/safety.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/safety_checker.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/settings.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/train.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/utils/__init__.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/utils/device_pinning.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/utils/distance.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/utils/dynamicprompt.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/utils/fd_limits.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/utils/gpuinfo.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/utils/image_utils.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/utils/ioredirect.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/utils/logger.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/utils/nvml.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/utils/optional_deps.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/utils/sanitizer.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/utils/switch.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/utils/torch_build.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/utils/torch_memory.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/vram_planning.py +0 -0
- {horde_engine-6.3.0 → horde_engine-6.3.2}/pyproject.toml +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: horde-engine
|
|
3
|
-
Version: 6.3.
|
|
3
|
+
Version: 6.3.2
|
|
4
4
|
Summary: A wrapper around ComfyUI to allow use by AI Horde.
|
|
5
5
|
Project-URL: Homepage, https://github.com/Haidra-Org/hordelib
|
|
6
6
|
Project-URL: Bug Tracker, https://github.com/Haidra-Org/hordelib/issues
|
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '6.3.
|
|
22
|
-
__version_tuple__ = version_tuple = (6, 3,
|
|
21
|
+
__version__ = version = '6.3.2'
|
|
22
|
+
__version_tuple__ = version_tuple = (6, 3, 2)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -77,6 +77,15 @@ lets the rename land once the transient read handle closes.
|
|
|
77
77
|
REFERENCE_REPLACE_RETRY_DELAY = 0.05
|
|
78
78
|
"""Delay between atomic-rename retries, in seconds."""
|
|
79
79
|
|
|
80
|
+
ORPHAN_TEMP_MIN_AGE_SECONDS = 3600
|
|
81
|
+
"""Only prune an atomic-write temp file whose mtime is older than this many seconds.
|
|
82
|
+
|
|
83
|
+
A temp file younger than this may belong to a writer in another process still transferring bytes: a
|
|
84
|
+
weight download can run for the whole of a large transfer. A live writer finishes (its rename) or
|
|
85
|
+
fails (its own cleanup) well inside this window, so only a crashed writer's temp survives past it.
|
|
86
|
+
Age-gating the prune reclaims leaked disk without ever deleting an in-flight write.
|
|
87
|
+
"""
|
|
88
|
+
|
|
80
89
|
DEFAULT_MIN_FREE_DISK_MB = 1024
|
|
81
90
|
"""Keep at least this many MB free on the cache volume; ad-hoc downloads evict (then refuse) below it.
|
|
82
91
|
|
|
@@ -331,6 +340,7 @@ class CivitaiAdhocModelManager[RecordT: GenericModelRecord](
|
|
|
331
340
|
if not self.read_only:
|
|
332
341
|
os.makedirs(self.model_folder_path, exist_ok=True)
|
|
333
342
|
os.makedirs(self.models_db_path.parent, exist_ok=True)
|
|
343
|
+
self._prune_orphan_temp_files()
|
|
334
344
|
|
|
335
345
|
if not self.models_db_path.exists():
|
|
336
346
|
manager_logger.info("adhoc.reference_missing", database_name=self.models_db_name)
|
|
@@ -380,6 +390,33 @@ class CivitaiAdhocModelManager[RecordT: GenericModelRecord](
|
|
|
380
390
|
)
|
|
381
391
|
return reference
|
|
382
392
|
|
|
393
|
+
def _prune_orphan_temp_files(self) -> None:
|
|
394
|
+
"""Remove atomic-write temp files left by a writer that crashed mid-download.
|
|
395
|
+
|
|
396
|
+
A temp file is inert: it is never loaded and never matches the weight-file scan, so it only
|
|
397
|
+
wastes disk. Only files older than :data:`ORPHAN_TEMP_MIN_AGE_SECONDS` are removed, because a
|
|
398
|
+
younger temp may belong to a writer in another process still transferring bytes (a fresh
|
|
399
|
+
manager on this host can be constructed while the download process is mid-fetch), and deleting
|
|
400
|
+
it would fail that in-flight write. Never called for a read-only manager, which never writes
|
|
401
|
+
weights and so never orphans a temp file.
|
|
402
|
+
"""
|
|
403
|
+
cutoff = time.time() - ORPHAN_TEMP_MIN_AGE_SECONDS
|
|
404
|
+
for temp_file in glob.glob(os.path.join(self.model_folder_path, "*.tmp-*")):
|
|
405
|
+
try:
|
|
406
|
+
mtime = os.stat(temp_file).st_mtime
|
|
407
|
+
except OSError:
|
|
408
|
+
# The file vanished between the glob and the stat (its writer completed the rename, or
|
|
409
|
+
# another pruner won the race); there is nothing left to remove.
|
|
410
|
+
continue
|
|
411
|
+
if mtime > cutoff:
|
|
412
|
+
continue
|
|
413
|
+
try:
|
|
414
|
+
os.remove(temp_file)
|
|
415
|
+
except OSError as remove_error:
|
|
416
|
+
logger.bind(manager=self.METRIC_PREFIX).warning(
|
|
417
|
+
"adhoc.temp_file_prune_failed", temp_path=temp_file, error=str(remove_error)
|
|
418
|
+
)
|
|
419
|
+
|
|
383
420
|
def _prune_missing_files(self) -> None:
|
|
384
421
|
"""Drop cache entries whose weight file is no longer present on disk."""
|
|
385
422
|
for entry in list(self._iter_cache_entries()):
|
|
@@ -409,20 +446,25 @@ class CivitaiAdhocModelManager[RecordT: GenericModelRecord](
|
|
|
409
446
|
tmp_path = f"{self.models_db_path}.tmp-{uuid.uuid4().hex[:8]}"
|
|
410
447
|
with open(tmp_path, "w", encoding="utf-8", errors="ignore") as outfile:
|
|
411
448
|
outfile.write(payload)
|
|
412
|
-
self.
|
|
449
|
+
self._replace_file_with_retry(tmp_path, self.models_db_path)
|
|
413
450
|
self._record_reference_stamp()
|
|
414
451
|
if self._using_multiprocessing:
|
|
415
452
|
self.cleanup_reference_backup_files()
|
|
416
453
|
|
|
417
|
-
def
|
|
418
|
-
"""Rename *tmp_path* onto
|
|
454
|
+
def _replace_file_with_retry(self, tmp_path: str, dest_path: str | Path) -> None:
|
|
455
|
+
"""Rename *tmp_path* onto *dest_path*, retrying a transient Windows sharing violation.
|
|
456
|
+
|
|
457
|
+
On Windows a rename onto a file another process holds open (a lock-free reader mid-read) fails
|
|
458
|
+
with a sharing violation even though that reader still sees the intact previous file. A brief
|
|
459
|
+
bounded retry lets the rename land once the transient read handle closes. On final failure the
|
|
460
|
+
temp file is removed so a blocked replace leaves nothing behind.
|
|
419
461
|
|
|
420
462
|
Raises:
|
|
421
463
|
PermissionError: If the rename is still blocked after :data:`REFERENCE_REPLACE_ATTEMPTS`.
|
|
422
464
|
"""
|
|
423
465
|
for attempt in range(REFERENCE_REPLACE_ATTEMPTS):
|
|
424
466
|
try:
|
|
425
|
-
os.replace(tmp_path,
|
|
467
|
+
os.replace(tmp_path, dest_path)
|
|
426
468
|
return
|
|
427
469
|
except PermissionError:
|
|
428
470
|
if attempt == REFERENCE_REPLACE_ATTEMPTS - 1:
|
|
@@ -433,6 +475,31 @@ class CivitaiAdhocModelManager[RecordT: GenericModelRecord](
|
|
|
433
475
|
raise
|
|
434
476
|
time.sleep(REFERENCE_REPLACE_RETRY_DELAY)
|
|
435
477
|
|
|
478
|
+
def _atomic_write_bytes(self, dest_path: str, data: bytes) -> None:
|
|
479
|
+
"""Write *data* to *dest_path* atomically via a sibling temp file and a hardened rename.
|
|
480
|
+
|
|
481
|
+
The bytes are staged to a uniquely named temp file in the same directory as *dest_path* (same
|
|
482
|
+
filesystem, so the rename is atomic) and then moved into place with
|
|
483
|
+
:meth:`_replace_file_with_retry`. A concurrent reader listing the folder only ever observes the
|
|
484
|
+
temp name or the fully placed final file, never a truncated write at *dest_path*. The temp file
|
|
485
|
+
is removed on any failure, so an error mid-write leaves neither a partial final file nor a
|
|
486
|
+
leaked temp file.
|
|
487
|
+
|
|
488
|
+
Raises:
|
|
489
|
+
OSError: If the temp write or the rename fails (e.g. a full disk or a persistent lock).
|
|
490
|
+
"""
|
|
491
|
+
tmp_path = f"{dest_path}.tmp-{uuid.uuid4().hex[:8]}"
|
|
492
|
+
try:
|
|
493
|
+
with open(tmp_path, "wb") as tmp_file:
|
|
494
|
+
tmp_file.write(data)
|
|
495
|
+
self._replace_file_with_retry(tmp_path, dest_path)
|
|
496
|
+
finally:
|
|
497
|
+
if os.path.exists(tmp_path):
|
|
498
|
+
try:
|
|
499
|
+
os.remove(tmp_path)
|
|
500
|
+
except OSError:
|
|
501
|
+
pass
|
|
502
|
+
|
|
436
503
|
def reload_reference_from_disk(self) -> None:
|
|
437
504
|
"""Reload the reference from disk, rebuild the indices and available list, and restamp the file."""
|
|
438
505
|
with self._file_mutex, self._file_lock:
|
|
@@ -788,10 +855,13 @@ class CivitaiAdhocModelManager[RecordT: GenericModelRecord](
|
|
|
788
855
|
time.sleep(self.RETRY_DELAY)
|
|
789
856
|
continue
|
|
790
857
|
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
858
|
+
# Stage the weight bytes to a temp file and rename into place so a concurrent reader
|
|
859
|
+
# (another process loading this model) never observes a torn or truncated file at the
|
|
860
|
+
# final path. The sidecar lands only after the weight file is fully placed, so a present
|
|
861
|
+
# sidecar always describes a complete weight file; a weight file without a sidecar is
|
|
862
|
+
# harmlessly re-verified or re-downloaded.
|
|
863
|
+
self._atomic_write_bytes(filepath, response.content)
|
|
864
|
+
self._atomic_write_bytes(hashpath, f"{sha256} *{target.filename}".encode())
|
|
795
865
|
|
|
796
866
|
self._commit_download(record, target, downloaded=True)
|
|
797
867
|
self._metric_download_duration.record(time.perf_counter() - download_start)
|
|
@@ -11,6 +11,7 @@ from loguru import logger
|
|
|
11
11
|
|
|
12
12
|
# from hordelib.model_manager.diffusers import DiffusersModelManager
|
|
13
13
|
from hordelib.model_manager.base import BaseModelManager
|
|
14
|
+
from hordelib.model_manager.civitai_adhoc import CivitaiAdhocModelManager
|
|
14
15
|
from hordelib.model_manager.codeformer import CodeFormerModelManager
|
|
15
16
|
from hordelib.model_manager.compvis import CompVisModelManager
|
|
16
17
|
from hordelib.model_manager.controlnet import ControlNetModelManager
|
|
@@ -201,6 +202,7 @@ class ModelManager:
|
|
|
201
202
|
managers_to_load: Iterable[str | MODEL_REFERENCE_CATEGORY | type[BaseModelManager]],
|
|
202
203
|
multiprocessing_lock: multiprocessing_lock | None = None,
|
|
203
204
|
lora_reference_backups: bool | None = None,
|
|
205
|
+
adhoc_read_only: bool = False,
|
|
204
206
|
) -> None:
|
|
205
207
|
for raw_manager_to_load in managers_to_load:
|
|
206
208
|
manager_to_load = resolve_manager_alias(raw_manager_to_load)
|
|
@@ -234,6 +236,9 @@ class ModelManager:
|
|
|
234
236
|
}
|
|
235
237
|
if resolve_manager_to_load_type is LoraModelManager and lora_reference_backups is not None:
|
|
236
238
|
manager_kwargs["reference_backups"] = lora_reference_backups
|
|
239
|
+
# read_only is an ad-hoc CivitAI concept only; the other managers do not accept it.
|
|
240
|
+
if issubclass(resolve_manager_to_load_type, CivitaiAdhocModelManager):
|
|
241
|
+
manager_kwargs["read_only"] = adhoc_read_only
|
|
237
242
|
|
|
238
243
|
self.active_model_managers.append(resolve_manager_to_load_type(**manager_kwargs))
|
|
239
244
|
|
|
@@ -82,6 +82,7 @@ class SharedModelManager:
|
|
|
82
82
|
multiprocessing_lock: multiprocessing_lock | None = None,
|
|
83
83
|
lora_reference_backups: bool | None = None,
|
|
84
84
|
reference_offline: bool | None = None,
|
|
85
|
+
adhoc_read_only: bool = False,
|
|
85
86
|
):
|
|
86
87
|
"""Load the model managers specified.
|
|
87
88
|
|
|
@@ -98,6 +99,11 @@ class SharedModelManager:
|
|
|
98
99
|
reference_offline (bool | None, optional): If True, construct the reference manager in \
|
|
99
100
|
offline mode (read references from local disk only, never download). If None, defers \
|
|
100
101
|
to the process-wide override / ``HORDE_MODEL_REFERENCE_OFFLINE``. Defaults to None.
|
|
102
|
+
adhoc_read_only (bool, optional): When True, the ad-hoc CivitAI managers (LoRA and TI) are \
|
|
103
|
+
constructed read-only. A read-only ad-hoc manager never writes its reference, downloads \
|
|
104
|
+
weights, or evicts, and construction itself performs no writes; any mutating call raises \
|
|
105
|
+
ReadOnlyModelManagerError. Lets a consumer process that must never write (an inference \
|
|
106
|
+
child) get that enforcement. Non-ad-hoc managers are unaffected. Defaults to False.
|
|
101
107
|
"""
|
|
102
108
|
if cls.manager is None:
|
|
103
109
|
cls.manager = ModelManager()
|
|
@@ -137,6 +143,7 @@ class SharedModelManager:
|
|
|
137
143
|
managers_to_load,
|
|
138
144
|
multiprocessing_lock=multiprocessing_lock,
|
|
139
145
|
lora_reference_backups=lora_reference_backups,
|
|
146
|
+
adhoc_read_only=adhoc_read_only,
|
|
140
147
|
)
|
|
141
148
|
|
|
142
149
|
cls._register_civitai_provider()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/comfyui_layerdiffuse/layered_diffusion.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/comfyui_layerdiffuse/pyproject.toml
RENAMED
|
File without changes
|
{horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/comfyui_layerdiffuse/requirements.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/archs/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/archs/arch_util.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/archs/vgg_arch.py
RENAMED
|
File without changes
|
{horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/archs/vqgan_arch.py
RENAMED
|
File without changes
|
{horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/data/__init__.py
RENAMED
|
File without changes
|
{horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/data/data_sampler.py
RENAMED
|
File without changes
|
{horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/data/data_util.py
RENAMED
|
File without changes
|
|
File without changes
|
{horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/data/transforms.py
RENAMED
|
File without changes
|
{horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/losses/__init__.py
RENAMED
|
File without changes
|
{horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/losses/loss_util.py
RENAMED
|
File without changes
|
{horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/losses/losses.py
RENAMED
|
File without changes
|
{horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/metrics/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/metrics/psnr_ssim.py
RENAMED
|
File without changes
|
{horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/models/__init__.py
RENAMED
|
File without changes
|
{horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/ops/__init__.py
RENAMED
|
File without changes
|
{horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/ops/dcn/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/utils/__init__.py
RENAMED
|
File without changes
|
{horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/utils/dist_util.py
RENAMED
|
File without changes
|
|
File without changes
|
{horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/utils/file_client.py
RENAMED
|
File without changes
|
{horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/utils/img_util.py
RENAMED
|
File without changes
|
{horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/utils/lmdb_util.py
RENAMED
|
File without changes
|
{horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/utils/logger.py
RENAMED
|
File without changes
|
|
File without changes
|
{horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/utils/misc.py
RENAMED
|
File without changes
|
{horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/utils/options.py
RENAMED
|
File without changes
|
|
File without changes
|
{horde_engine-6.3.0 → horde_engine-6.3.2}/hordelib/nodes/facerestore_cf/basicsr/utils/registry.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|