horde-engine 3.6.2__tar.gz → 3.7.0__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-3.6.2 → horde_engine-3.7.0}/PKG-INFO +2 -2
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/_version.py +2 -2
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/model_manager/base.py +61 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/preload.py +109 -1
- {horde_engine-3.6.2 → horde_engine-3.7.0}/pyproject.toml +1 -1
- {horde_engine-3.6.2 → horde_engine-3.7.0}/.gitignore +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/LICENSE +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/README.md +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/__init__.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/__pyinstaller.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/api.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/benchmark.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/beta_models.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/comfy_horde.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/config_path.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/consts.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/exceptions.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/execution/__init__.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/execution/comfy_patches.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/execution/graph_utils.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/execution/in_process.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/execution/interface.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/execution/phase_timing.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/execution/progress_hook.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/execution/sampling_lease.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/feature_impact.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/feature_requirements.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/horde.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/initialisation.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/installation/__init__.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/installation/__main__.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/installation/installer.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/installation/manifest.json +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/installation/manifest.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/integrations/__init__.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/integrations/logfire_comfy_internals.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/integrations/logfire_setup.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/metrics.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/model_database/db_dep.json +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/model_database/db_embeds.json +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/model_database/diffusers.json +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/model_database/med_config.json +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/model_manager/__init__.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/model_manager/civitai_adhoc.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/model_manager/civitai_provider.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/model_manager/civitai_records.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/model_manager/codeformer.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/model_manager/compvis.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/model_manager/controlnet.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/model_manager/diffusers.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/model_manager/esrgan.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/model_manager/gfpgan.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/model_manager/hyper.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/model_manager/lora.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/model_manager/miscellaneous.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/model_manager/safety_checker.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/model_manager/ti.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/__init__.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/comfyui_layerdiffuse/LICENSE +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/comfyui_layerdiffuse/README.md +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/comfyui_layerdiffuse/__init__.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/comfyui_layerdiffuse/examples/layer_diffusion_cond_example.json +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/comfyui_layerdiffuse/examples/layer_diffusion_cond_fg_all.json +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/comfyui_layerdiffuse/examples/layer_diffusion_cond_joint_bg.json +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/comfyui_layerdiffuse/examples/layer_diffusion_cond_joint_fg.json +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/comfyui_layerdiffuse/examples/layer_diffusion_diff_bg.json +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/comfyui_layerdiffuse/examples/layer_diffusion_diff_bg_stop_at.json +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/comfyui_layerdiffuse/examples/layer_diffusion_diff_fg.json +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/comfyui_layerdiffuse/examples/layer_diffusion_fg_example.json +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/comfyui_layerdiffuse/examples/layer_diffusion_fg_example_rgba.json +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/comfyui_layerdiffuse/examples/layer_diffusion_joint.json +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/comfyui_layerdiffuse/layered_diffusion.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/comfyui_layerdiffuse/lib_layerdiffusion/__init__.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/comfyui_layerdiffuse/lib_layerdiffusion/attention_sharing.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/comfyui_layerdiffuse/lib_layerdiffusion/enums.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/comfyui_layerdiffuse/lib_layerdiffusion/models.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/comfyui_layerdiffuse/lib_layerdiffusion/utils.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/comfyui_layerdiffuse/pyproject.toml +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/comfyui_layerdiffuse/requirements.txt +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/LICENSE +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/README.md +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/__init__.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/VERSION +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/__init__.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/archs/__init__.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/archs/arcface_arch.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/archs/arch_util.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/archs/codeformer_arch.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/archs/rrdbnet_arch.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/archs/vgg_arch.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/archs/vqgan_arch.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/data/__init__.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/data/data_sampler.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/data/data_util.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/data/prefetch_dataloader.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/data/transforms.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/losses/__init__.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/losses/loss_util.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/losses/losses.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/metrics/__init__.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/metrics/metric_util.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/metrics/psnr_ssim.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/models/__init__.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/ops/__init__.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/ops/dcn/__init__.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/ops/dcn/deform_conv.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/ops/dcn/src/deform_conv_cuda.cpp +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/ops/dcn/src/deform_conv_cuda_kernel.cu +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/ops/dcn/src/deform_conv_ext.cpp +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/ops/fused_act/__init__.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/ops/fused_act/fused_act.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/ops/fused_act/src/fused_bias_act.cpp +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/ops/fused_act/src/fused_bias_act_kernel.cu +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/ops/upfirdn2d/__init__.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/ops/upfirdn2d/src/upfirdn2d.cpp +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/ops/upfirdn2d/src/upfirdn2d_kernel.cu +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/ops/upfirdn2d/upfirdn2d.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/setup.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/train.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/utils/__init__.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/utils/dist_util.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/utils/download_util.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/utils/file_client.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/utils/img_util.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/utils/lmdb_util.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/utils/logger.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/utils/matlab_functions.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/utils/misc.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/utils/options.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/utils/realesrgan_utils.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/utils/registry.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/version.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/__init__.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/detection/__init__.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/detection/align_trans.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/detection/matlab_cp2tform.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/detection/retinaface/retinaface.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/detection/retinaface/retinaface_net.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/detection/retinaface/retinaface_utils.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/detection/yolov5face/__init__.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/detection/yolov5face/face_detector.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/detection/yolov5face/models/__init__.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/detection/yolov5face/models/common.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/detection/yolov5face/models/experimental.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/detection/yolov5face/models/yolo.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/detection/yolov5face/models/yolov5l.yaml +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/detection/yolov5face/models/yolov5n.yaml +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/detection/yolov5face/utils/__init__.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/detection/yolov5face/utils/autoanchor.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/detection/yolov5face/utils/datasets.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/detection/yolov5face/utils/extract_ckpt.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/detection/yolov5face/utils/general.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/detection/yolov5face/utils/torch_utils.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/parsing/__init__.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/parsing/bisenet.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/parsing/parsenet.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/parsing/resnet.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/utils/__init__.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/utils/face_restoration_helper.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/utils/face_utils.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/utils/misc.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/r_chainner/README.md +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/r_chainner/__init__.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/r_chainner/gfpganv1_clean_arch.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/r_chainner/model_loading.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/r_chainner/stylegan2_clean_arch.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/r_chainner/types.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/node_controlnet_model_loader.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/node_image_loader.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/node_image_output.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/node_lora_loader.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/node_model_loader.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/node_upscale_model_loader.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline/__init__.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline/constants.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline/context.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline/families/__init__.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline/families/image.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline/families/post_processing.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline/graph.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline/horde_compat.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline/patches.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline/payload.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline/payload_pp.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline/registry.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline/resolution.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline/template.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline_designs/pipeline_controlnet.json +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline_designs/pipeline_controlnet_annotator.json +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline_designs/pipeline_controlnet_hires_fix.json +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline_designs/pipeline_flux.json +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline_designs/pipeline_image_facefix.json +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline_designs/pipeline_image_upscale.json +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline_designs/pipeline_qr_code.json +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline_designs/pipeline_qwen.json +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline_designs/pipeline_stable_cascade.json +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline_designs/pipeline_stable_cascade_2pass.json +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline_designs/pipeline_stable_cascade_remix.json +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline_designs/pipeline_stable_diffusion.json +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline_designs/pipeline_stable_diffusion_hires_fix.json +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline_designs/pipeline_stable_diffusion_img2img_mask.json +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline_designs/pipeline_stable_diffusion_paint.json +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipelines/pipeline_controlnet.json +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipelines/pipeline_controlnet_annotator.json +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipelines/pipeline_controlnet_hires_fix.json +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipelines/pipeline_flux.json +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipelines/pipeline_image_facefix.json +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipelines/pipeline_image_upscale.json +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipelines/pipeline_qr_code.json +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipelines/pipeline_qwen.json +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipelines/pipeline_stable_cascade.json +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipelines/pipeline_stable_cascade_2pass.json +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipelines/pipeline_stable_cascade_remix.json +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipelines/pipeline_stable_diffusion.json +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipelines/pipeline_stable_diffusion_hires_fix.json +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipelines/pipeline_stable_diffusion_img2img_mask.json +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipelines/pipeline_stable_diffusion_paint.json +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipelines/pipeline_z_image.json +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/py.typed +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pyinstaller_hooks/__init__.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pyinstaller_hooks/hook-hordelib.horde.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/safety.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/safety_checker.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/settings.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/shared_model_manager.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/train.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/utils/__init__.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/utils/device_pinning.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/utils/distance.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/utils/dynamicprompt.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/utils/gpuinfo.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/utils/image_utils.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/utils/ioredirect.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/utils/logger.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/utils/nvml.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/utils/optional_deps.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/utils/sanitizer.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/utils/switch.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/utils/torch_build.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/utils/torch_memory.py +0 -0
- {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/vram_planning.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: horde-engine
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.7.0
|
|
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
|
|
@@ -690,7 +690,7 @@ Requires-Dist: filelock
|
|
|
690
690
|
Requires-Dist: ftfy
|
|
691
691
|
Requires-Dist: fuzzywuzzy>=0.18.0
|
|
692
692
|
Requires-Dist: gitpython>=3.1.45
|
|
693
|
-
Requires-Dist: horde-model-reference<
|
|
693
|
+
Requires-Dist: horde-model-reference<7.0.0,>=6.0.0
|
|
694
694
|
Requires-Dist: horde-sdk>=0.20.1
|
|
695
695
|
Requires-Dist: kornia>=0.7.1
|
|
696
696
|
Requires-Dist: logfire[system-metrics]==4.14.2
|
|
@@ -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 = '3.
|
|
22
|
-
__version_tuple__ = version_tuple = (3,
|
|
21
|
+
__version__ = version = '3.7.0'
|
|
22
|
+
__version_tuple__ = version_tuple = (3, 7, 0)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -2,6 +2,7 @@ import os
|
|
|
2
2
|
import threading
|
|
3
3
|
from abc import ABC
|
|
4
4
|
from collections.abc import Callable, Iterable
|
|
5
|
+
from functools import lru_cache
|
|
5
6
|
from pathlib import Path
|
|
6
7
|
from typing import Any, cast
|
|
7
8
|
from urllib import parse
|
|
@@ -26,6 +27,59 @@ from hordelib.config_path import get_hordelib_path
|
|
|
26
27
|
from hordelib.consts import CIVITAI_API_PATH
|
|
27
28
|
from hordelib.settings import UserSettings
|
|
28
29
|
|
|
30
|
+
_ANON_API_KEY = "0000000000"
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def _resolve_horde_api_key() -> str | None:
|
|
34
|
+
"""Return the worker's horde API key from the environment, or None for anonymous/standalone use.
|
|
35
|
+
|
|
36
|
+
The key gates the content-addressed R2 mirror in the download engine. The anonymous key cannot be trusted,
|
|
37
|
+
and a standalone hordelib user without a key simply downloads from each model's origin host. The worker
|
|
38
|
+
exposes its configured key as ``AIHORDE_API_KEY`` (inherited by the download subprocess).
|
|
39
|
+
"""
|
|
40
|
+
key = os.environ.get("AIHORDE_API_KEY") or os.environ.get("AI_HORDE_API_KEY")
|
|
41
|
+
if not key or key == _ANON_API_KEY:
|
|
42
|
+
return None
|
|
43
|
+
return key
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
@lru_cache(maxsize=1)
|
|
47
|
+
def _resolve_r2_gateway_url() -> str | None:
|
|
48
|
+
"""Return the gated-R2 gateway base URL from horde_model_reference settings (process-static, cached).
|
|
49
|
+
|
|
50
|
+
None when no gateway is configured, in which case the engine downloads only from origin hosts. An older
|
|
51
|
+
horde_model_reference without the R2 settings block degrades to the same origin-only behaviour rather than
|
|
52
|
+
breaking the download path, so the worker keeps working ahead of a coordinated hmr release.
|
|
53
|
+
|
|
54
|
+
The gateway URL is owned by the official deployment (the horde_model_reference default); it is deliberately
|
|
55
|
+
not a per-worker config knob. A sophisticated operator can still override it via the
|
|
56
|
+
``HORDE_MODEL_REFERENCE_R2__GATEWAY_URL`` environment variable, in which case the safety guard below applies:
|
|
57
|
+
because the worker's API key is sent to the gateway, a plaintext (non-``https``) gateway is refused outright
|
|
58
|
+
(the mirror is disabled and origins are used) so the key cannot travel in the clear.
|
|
59
|
+
"""
|
|
60
|
+
try:
|
|
61
|
+
from horde_model_reference import HordeModelReferenceSettings
|
|
62
|
+
from horde_model_reference.download_engine import gateway_accepts_key
|
|
63
|
+
|
|
64
|
+
gateway_url = HordeModelReferenceSettings().r2.gateway_url
|
|
65
|
+
except (AttributeError, ImportError):
|
|
66
|
+
# Older horde_model_reference without the R2 settings block or the key-safety guard: origin-only.
|
|
67
|
+
return None
|
|
68
|
+
|
|
69
|
+
if not gateway_url:
|
|
70
|
+
return None
|
|
71
|
+
if not gateway_accepts_key(gateway_url):
|
|
72
|
+
logger.warning(
|
|
73
|
+
"Configured R2 gateway is not https; refusing to send the API key over plaintext and disabling the "
|
|
74
|
+
"mirror (downloads use origin hosts): gateway={}",
|
|
75
|
+
gateway_url,
|
|
76
|
+
)
|
|
77
|
+
return None
|
|
78
|
+
# Normal path logs at DEBUG only: the gateway is a deployment-owned technical detail, not something a typical
|
|
79
|
+
# operator configures or needs to reason about, so it stays out of the default console.
|
|
80
|
+
logger.debug("Gated R2 mirror enabled; the API key will be sent to gateway={}", parse.urlparse(gateway_url).netloc)
|
|
81
|
+
return gateway_url
|
|
82
|
+
|
|
29
83
|
|
|
30
84
|
class BaseModelManager[RecordT: GenericModelRecord | dict[str, Any]](ABC):
|
|
31
85
|
"""Abstract base for the per-category model managers.
|
|
@@ -477,6 +531,7 @@ class BaseModelManager[RecordT: GenericModelRecord | dict[str, Any]](ABC):
|
|
|
477
531
|
model_name: str,
|
|
478
532
|
*,
|
|
479
533
|
callback: Callable[[int, int], None] | None = None,
|
|
534
|
+
connections: int = 1,
|
|
480
535
|
) -> bool | None:
|
|
481
536
|
"""Ensure *model_name*'s declared files are present, fetching any that are missing.
|
|
482
537
|
|
|
@@ -487,6 +542,9 @@ class BaseModelManager[RecordT: GenericModelRecord | dict[str, Any]](ABC):
|
|
|
487
542
|
Args:
|
|
488
543
|
model_name: The reference key of the model to download.
|
|
489
544
|
callback: Optional ``(downloaded_bytes, total_bytes)`` progress callback, per file.
|
|
545
|
+
connections: Maximum concurrent connections per large file, forwarded to the engine. 1 keeps the
|
|
546
|
+
single-stream path; a higher value lets the engine segment a large file across that many
|
|
547
|
+
ranged connections to raise single-file throughput (the caller's configured value).
|
|
490
548
|
|
|
491
549
|
Returns:
|
|
492
550
|
True if the model is present and validated, False on download/validation failure, and None
|
|
@@ -520,6 +578,9 @@ class BaseModelManager[RecordT: GenericModelRecord | dict[str, Any]](ABC):
|
|
|
520
578
|
self._weights_root,
|
|
521
579
|
progress_callback=callback,
|
|
522
580
|
auth_query_token=self._civitai_token_for(record),
|
|
581
|
+
gateway_base_url=_resolve_r2_gateway_url(),
|
|
582
|
+
apikey=_resolve_horde_api_key(),
|
|
583
|
+
connections=connections,
|
|
523
584
|
)
|
|
524
585
|
if not download_succeeded:
|
|
525
586
|
return False
|
|
@@ -27,11 +27,35 @@ Two optimisations keep this cheap after the first time:
|
|
|
27
27
|
import contextlib
|
|
28
28
|
import os
|
|
29
29
|
import threading
|
|
30
|
-
from collections.abc import Iterator
|
|
30
|
+
from collections.abc import Iterable, Iterator
|
|
31
31
|
from pathlib import Path
|
|
32
|
+
from typing import Protocol
|
|
32
33
|
|
|
33
34
|
from loguru import logger
|
|
34
35
|
|
|
36
|
+
|
|
37
|
+
class _AnnotatorFileLike(Protocol):
|
|
38
|
+
"""The shape the prefetch reads from a ``horde_model_reference.annotator_catalog.AnnotatorFile``.
|
|
39
|
+
|
|
40
|
+
Described structurally so this module type-checks even against an older installed ``horde_model_reference``
|
|
41
|
+
that does not yet ship the catalog (the concrete type is imported lazily and may be absent; see
|
|
42
|
+
:func:`_prefetch_annotator_files`).
|
|
43
|
+
"""
|
|
44
|
+
|
|
45
|
+
filename: str
|
|
46
|
+
sha256: str | None
|
|
47
|
+
preprocessors: tuple[str, ...]
|
|
48
|
+
|
|
49
|
+
@property
|
|
50
|
+
def relative_path(self) -> str:
|
|
51
|
+
"""The file's path relative to the annotator checkpoints directory (``<repo>/<subfolder>/<filename>``)."""
|
|
52
|
+
...
|
|
53
|
+
|
|
54
|
+
@property
|
|
55
|
+
def origin_url(self) -> str:
|
|
56
|
+
"""The HuggingFace origin URL the file is fetched from when the gated mirror does not serve it."""
|
|
57
|
+
...
|
|
58
|
+
|
|
35
59
|
_preload_mutex = threading.Lock()
|
|
36
60
|
_preload_completed = False
|
|
37
61
|
|
|
@@ -52,6 +76,83 @@ _PRELOAD_MARKER_NAME = ".hordelib_preload_complete"
|
|
|
52
76
|
_ONNXRUNTIME_GATED_PREPROCESSORS = frozenset({"OpenposePreprocessor"})
|
|
53
77
|
|
|
54
78
|
|
|
79
|
+
def _annotator_files_to_prefetch(all_files: Iterable[_AnnotatorFileLike]) -> list[_AnnotatorFileLike]:
|
|
80
|
+
"""Filter the annotator catalog to the files whose preprocessor will actually run on this install.
|
|
81
|
+
|
|
82
|
+
On a lean base install (no ``controlnet`` extra) the onnxruntime-gated preprocessors never register and the
|
|
83
|
+
preload skips them (see :func:`_run_preload`), so prefetching their large weights would be wasted. A file is
|
|
84
|
+
kept when at least one preprocessor that loads it is not gated away. Best-effort: if the feature check itself
|
|
85
|
+
cannot be evaluated, everything is kept (the worst case is a redundant download, never a missing one).
|
|
86
|
+
"""
|
|
87
|
+
try:
|
|
88
|
+
from hordelib.feature_impact import FEATURE_KIND
|
|
89
|
+
from hordelib.feature_requirements import feature_available
|
|
90
|
+
|
|
91
|
+
if feature_available(FEATURE_KIND.controlnet):
|
|
92
|
+
return list(all_files)
|
|
93
|
+
except Exception as e:
|
|
94
|
+
logger.debug("Could not evaluate controlnet feature for annotator prefetch; keeping all: error={}", e)
|
|
95
|
+
return list(all_files)
|
|
96
|
+
|
|
97
|
+
return [
|
|
98
|
+
entry
|
|
99
|
+
for entry in all_files
|
|
100
|
+
if any(preprocessor not in _ONNXRUNTIME_GATED_PREPROCESSORS for preprocessor in entry.preprocessors)
|
|
101
|
+
]
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
def _prefetch_annotator_files(ckpts_dir: Path) -> None:
|
|
105
|
+
"""Pre-place known annotator checkpoints via the unified gated-mirror-then-origin download engine.
|
|
106
|
+
|
|
107
|
+
For each catalog file not already on disk, fetch it to the exact path ``custom_hf_download`` expects, so the
|
|
108
|
+
detector finds it present and skips its own HuggingFace download. The gated R2 mirror (when configured and
|
|
109
|
+
the file's hash is known) is tried first and falls back to the HuggingFace origin on any failure, so this
|
|
110
|
+
only ever adds a faster, free path; it never blocks a download. Best-effort throughout: any failure simply
|
|
111
|
+
leaves the file for the detector to fetch itself, exactly as before this hook existed.
|
|
112
|
+
"""
|
|
113
|
+
try:
|
|
114
|
+
from horde_model_reference import annotator_catalog, download_engine
|
|
115
|
+
except Exception as e:
|
|
116
|
+
# An older installed horde_model_reference without the catalog (or its record-free fetch helper): the
|
|
117
|
+
# detectors download from HuggingFace themselves, exactly as before. Degrade quietly.
|
|
118
|
+
logger.debug("Annotator catalog unavailable (older horde_model_reference?); skipping prefetch: {}", e)
|
|
119
|
+
return
|
|
120
|
+
|
|
121
|
+
gateway_base_url: str | None = None
|
|
122
|
+
apikey: str | None = None
|
|
123
|
+
try:
|
|
124
|
+
from hordelib.model_manager.base import _resolve_horde_api_key, _resolve_r2_gateway_url
|
|
125
|
+
|
|
126
|
+
gateway_base_url = _resolve_r2_gateway_url()
|
|
127
|
+
apikey = _resolve_horde_api_key()
|
|
128
|
+
except Exception as e:
|
|
129
|
+
logger.debug("Could not resolve gated-mirror settings; annotator prefetch uses origin only: error={}", e)
|
|
130
|
+
|
|
131
|
+
for entry in _annotator_files_to_prefetch(annotator_catalog.ANNOTATOR_FILES):
|
|
132
|
+
destination = ckpts_dir / Path(entry.relative_path)
|
|
133
|
+
if destination.is_file():
|
|
134
|
+
continue
|
|
135
|
+
try:
|
|
136
|
+
outcome = download_engine.download_addressed_file(
|
|
137
|
+
entry.origin_url,
|
|
138
|
+
destination,
|
|
139
|
+
sha256=entry.sha256,
|
|
140
|
+
gateway_base_url=gateway_base_url,
|
|
141
|
+
apikey=apikey,
|
|
142
|
+
)
|
|
143
|
+
if not outcome.success:
|
|
144
|
+
logger.info(
|
|
145
|
+
"Annotator prefetch did not complete; the detector will fetch it at first use: file={}",
|
|
146
|
+
entry.filename,
|
|
147
|
+
)
|
|
148
|
+
except Exception as e:
|
|
149
|
+
logger.warning(
|
|
150
|
+
"Annotator prefetch errored; the detector will fetch it at first use: file={} error={}",
|
|
151
|
+
entry.filename,
|
|
152
|
+
e,
|
|
153
|
+
)
|
|
154
|
+
|
|
155
|
+
|
|
55
156
|
def _midas_already_cached() -> bool:
|
|
56
157
|
"""Return whether the transformers-based MiDaS annotator is fully in the HF cache.
|
|
57
158
|
|
|
@@ -284,6 +385,13 @@ def download_all_controlnet_annotators() -> bool:
|
|
|
284
385
|
_preload_completed = True
|
|
285
386
|
return True
|
|
286
387
|
|
|
388
|
+
# Pre-place the annotator checkpoints through the unified (gated R2 -> HuggingFace) download engine
|
|
389
|
+
# *before* the detectors run, so custom_hf_download finds them present and skips its own HF fetch. Runs
|
|
390
|
+
# with the Hub online (the offline window is inside _run_preload). Best-effort; never blocks the preload.
|
|
391
|
+
ckpts_dir = _annotator_ckpts_dir()
|
|
392
|
+
if ckpts_dir is not None:
|
|
393
|
+
_prefetch_annotator_files(ckpts_dir)
|
|
394
|
+
|
|
287
395
|
force_offline = _midas_already_cached()
|
|
288
396
|
if force_offline:
|
|
289
397
|
logger.debug(
|
|
@@ -52,7 +52,7 @@ dependencies = [
|
|
|
52
52
|
"ftfy", # comfyui_controlnet_aux node requirement (previously satisfied transitively via open-clip-torch)
|
|
53
53
|
"fuzzywuzzy>=0.18.0",
|
|
54
54
|
"gitpython>=3.1.45",
|
|
55
|
-
"horde_model_reference>=
|
|
55
|
+
"horde_model_reference>=6.0.0,<7.0.0",
|
|
56
56
|
"horde-sdk>=0.20.1",
|
|
57
57
|
"kornia>=0.7.1",
|
|
58
58
|
"logfire[system-metrics]==4.14.2",
|
|
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-3.6.2 → horde_engine-3.7.0}/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-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/comfyui_layerdiffuse/pyproject.toml
RENAMED
|
File without changes
|
{horde_engine-3.6.2 → horde_engine-3.7.0}/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-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/archs/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/archs/arch_util.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/archs/vgg_arch.py
RENAMED
|
File without changes
|
{horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/archs/vqgan_arch.py
RENAMED
|
File without changes
|
{horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/data/__init__.py
RENAMED
|
File without changes
|
{horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/data/data_sampler.py
RENAMED
|
File without changes
|
{horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/data/data_util.py
RENAMED
|
File without changes
|
|
File without changes
|
{horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/data/transforms.py
RENAMED
|
File without changes
|
{horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/losses/__init__.py
RENAMED
|
File without changes
|
{horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/losses/loss_util.py
RENAMED
|
File without changes
|
{horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/losses/losses.py
RENAMED
|
File without changes
|
{horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/metrics/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/metrics/psnr_ssim.py
RENAMED
|
File without changes
|
{horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/models/__init__.py
RENAMED
|
File without changes
|
{horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/ops/__init__.py
RENAMED
|
File without changes
|
{horde_engine-3.6.2 → horde_engine-3.7.0}/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-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/utils/__init__.py
RENAMED
|
File without changes
|
{horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/utils/dist_util.py
RENAMED
|
File without changes
|
|
File without changes
|
{horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/utils/file_client.py
RENAMED
|
File without changes
|
{horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/utils/img_util.py
RENAMED
|
File without changes
|
{horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/utils/lmdb_util.py
RENAMED
|
File without changes
|
{horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/utils/logger.py
RENAMED
|
File without changes
|
|
File without changes
|
{horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/utils/misc.py
RENAMED
|
File without changes
|
{horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/utils/options.py
RENAMED
|
File without changes
|
|
File without changes
|
{horde_engine-3.6.2 → horde_engine-3.7.0}/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
|