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.
Files changed (241) hide show
  1. {horde_engine-3.6.2 → horde_engine-3.7.0}/PKG-INFO +2 -2
  2. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/_version.py +2 -2
  3. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/model_manager/base.py +61 -0
  4. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/preload.py +109 -1
  5. {horde_engine-3.6.2 → horde_engine-3.7.0}/pyproject.toml +1 -1
  6. {horde_engine-3.6.2 → horde_engine-3.7.0}/.gitignore +0 -0
  7. {horde_engine-3.6.2 → horde_engine-3.7.0}/LICENSE +0 -0
  8. {horde_engine-3.6.2 → horde_engine-3.7.0}/README.md +0 -0
  9. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/__init__.py +0 -0
  10. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/__pyinstaller.py +0 -0
  11. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/api.py +0 -0
  12. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/benchmark.py +0 -0
  13. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/beta_models.py +0 -0
  14. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/comfy_horde.py +0 -0
  15. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/config_path.py +0 -0
  16. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/consts.py +0 -0
  17. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/exceptions.py +0 -0
  18. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/execution/__init__.py +0 -0
  19. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/execution/comfy_patches.py +0 -0
  20. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/execution/graph_utils.py +0 -0
  21. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/execution/in_process.py +0 -0
  22. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/execution/interface.py +0 -0
  23. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/execution/phase_timing.py +0 -0
  24. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/execution/progress_hook.py +0 -0
  25. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/execution/sampling_lease.py +0 -0
  26. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/feature_impact.py +0 -0
  27. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/feature_requirements.py +0 -0
  28. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/horde.py +0 -0
  29. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/initialisation.py +0 -0
  30. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/installation/__init__.py +0 -0
  31. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/installation/__main__.py +0 -0
  32. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/installation/installer.py +0 -0
  33. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/installation/manifest.json +0 -0
  34. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/installation/manifest.py +0 -0
  35. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/integrations/__init__.py +0 -0
  36. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/integrations/logfire_comfy_internals.py +0 -0
  37. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/integrations/logfire_setup.py +0 -0
  38. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/metrics.py +0 -0
  39. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/model_database/db_dep.json +0 -0
  40. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/model_database/db_embeds.json +0 -0
  41. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/model_database/diffusers.json +0 -0
  42. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/model_database/med_config.json +0 -0
  43. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/model_manager/__init__.py +0 -0
  44. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/model_manager/civitai_adhoc.py +0 -0
  45. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/model_manager/civitai_provider.py +0 -0
  46. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/model_manager/civitai_records.py +0 -0
  47. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/model_manager/codeformer.py +0 -0
  48. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/model_manager/compvis.py +0 -0
  49. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/model_manager/controlnet.py +0 -0
  50. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/model_manager/diffusers.py +0 -0
  51. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/model_manager/esrgan.py +0 -0
  52. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/model_manager/gfpgan.py +0 -0
  53. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/model_manager/hyper.py +0 -0
  54. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/model_manager/lora.py +0 -0
  55. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/model_manager/miscellaneous.py +0 -0
  56. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/model_manager/safety_checker.py +0 -0
  57. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/model_manager/ti.py +0 -0
  58. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/__init__.py +0 -0
  59. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/comfyui_layerdiffuse/LICENSE +0 -0
  60. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/comfyui_layerdiffuse/README.md +0 -0
  61. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/comfyui_layerdiffuse/__init__.py +0 -0
  62. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/comfyui_layerdiffuse/examples/layer_diffusion_cond_example.json +0 -0
  63. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/comfyui_layerdiffuse/examples/layer_diffusion_cond_fg_all.json +0 -0
  64. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/comfyui_layerdiffuse/examples/layer_diffusion_cond_joint_bg.json +0 -0
  65. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/comfyui_layerdiffuse/examples/layer_diffusion_cond_joint_fg.json +0 -0
  66. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/comfyui_layerdiffuse/examples/layer_diffusion_diff_bg.json +0 -0
  67. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/comfyui_layerdiffuse/examples/layer_diffusion_diff_bg_stop_at.json +0 -0
  68. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/comfyui_layerdiffuse/examples/layer_diffusion_diff_fg.json +0 -0
  69. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/comfyui_layerdiffuse/examples/layer_diffusion_fg_example.json +0 -0
  70. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/comfyui_layerdiffuse/examples/layer_diffusion_fg_example_rgba.json +0 -0
  71. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/comfyui_layerdiffuse/examples/layer_diffusion_joint.json +0 -0
  72. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/comfyui_layerdiffuse/layered_diffusion.py +0 -0
  73. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/comfyui_layerdiffuse/lib_layerdiffusion/__init__.py +0 -0
  74. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/comfyui_layerdiffuse/lib_layerdiffusion/attention_sharing.py +0 -0
  75. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/comfyui_layerdiffuse/lib_layerdiffusion/enums.py +0 -0
  76. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/comfyui_layerdiffuse/lib_layerdiffusion/models.py +0 -0
  77. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/comfyui_layerdiffuse/lib_layerdiffusion/utils.py +0 -0
  78. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/comfyui_layerdiffuse/pyproject.toml +0 -0
  79. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/comfyui_layerdiffuse/requirements.txt +0 -0
  80. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/LICENSE +0 -0
  81. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/README.md +0 -0
  82. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/__init__.py +0 -0
  83. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/VERSION +0 -0
  84. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/__init__.py +0 -0
  85. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/archs/__init__.py +0 -0
  86. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/archs/arcface_arch.py +0 -0
  87. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/archs/arch_util.py +0 -0
  88. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/archs/codeformer_arch.py +0 -0
  89. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/archs/rrdbnet_arch.py +0 -0
  90. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/archs/vgg_arch.py +0 -0
  91. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/archs/vqgan_arch.py +0 -0
  92. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/data/__init__.py +0 -0
  93. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/data/data_sampler.py +0 -0
  94. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/data/data_util.py +0 -0
  95. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/data/prefetch_dataloader.py +0 -0
  96. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/data/transforms.py +0 -0
  97. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/losses/__init__.py +0 -0
  98. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/losses/loss_util.py +0 -0
  99. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/losses/losses.py +0 -0
  100. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/metrics/__init__.py +0 -0
  101. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/metrics/metric_util.py +0 -0
  102. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/metrics/psnr_ssim.py +0 -0
  103. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/models/__init__.py +0 -0
  104. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/ops/__init__.py +0 -0
  105. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/ops/dcn/__init__.py +0 -0
  106. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/ops/dcn/deform_conv.py +0 -0
  107. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/ops/dcn/src/deform_conv_cuda.cpp +0 -0
  108. {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
  109. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/ops/dcn/src/deform_conv_ext.cpp +0 -0
  110. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/ops/fused_act/__init__.py +0 -0
  111. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/ops/fused_act/fused_act.py +0 -0
  112. {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
  113. {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
  114. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/ops/upfirdn2d/__init__.py +0 -0
  115. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/ops/upfirdn2d/src/upfirdn2d.cpp +0 -0
  116. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/ops/upfirdn2d/src/upfirdn2d_kernel.cu +0 -0
  117. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/ops/upfirdn2d/upfirdn2d.py +0 -0
  118. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/setup.py +0 -0
  119. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/train.py +0 -0
  120. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/utils/__init__.py +0 -0
  121. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/utils/dist_util.py +0 -0
  122. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/utils/download_util.py +0 -0
  123. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/utils/file_client.py +0 -0
  124. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/utils/img_util.py +0 -0
  125. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/utils/lmdb_util.py +0 -0
  126. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/utils/logger.py +0 -0
  127. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/utils/matlab_functions.py +0 -0
  128. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/utils/misc.py +0 -0
  129. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/utils/options.py +0 -0
  130. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/utils/realesrgan_utils.py +0 -0
  131. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/utils/registry.py +0 -0
  132. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/basicsr/version.py +0 -0
  133. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/__init__.py +0 -0
  134. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/detection/__init__.py +0 -0
  135. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/detection/align_trans.py +0 -0
  136. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/detection/matlab_cp2tform.py +0 -0
  137. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/detection/retinaface/retinaface.py +0 -0
  138. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/detection/retinaface/retinaface_net.py +0 -0
  139. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/detection/retinaface/retinaface_utils.py +0 -0
  140. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/detection/yolov5face/__init__.py +0 -0
  141. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/detection/yolov5face/face_detector.py +0 -0
  142. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/detection/yolov5face/models/__init__.py +0 -0
  143. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/detection/yolov5face/models/common.py +0 -0
  144. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/detection/yolov5face/models/experimental.py +0 -0
  145. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/detection/yolov5face/models/yolo.py +0 -0
  146. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/detection/yolov5face/models/yolov5l.yaml +0 -0
  147. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/detection/yolov5face/models/yolov5n.yaml +0 -0
  148. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/detection/yolov5face/utils/__init__.py +0 -0
  149. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/detection/yolov5face/utils/autoanchor.py +0 -0
  150. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/detection/yolov5face/utils/datasets.py +0 -0
  151. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/detection/yolov5face/utils/extract_ckpt.py +0 -0
  152. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/detection/yolov5face/utils/general.py +0 -0
  153. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/detection/yolov5face/utils/torch_utils.py +0 -0
  154. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/parsing/__init__.py +0 -0
  155. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/parsing/bisenet.py +0 -0
  156. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/parsing/parsenet.py +0 -0
  157. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/parsing/resnet.py +0 -0
  158. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/utils/__init__.py +0 -0
  159. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/utils/face_restoration_helper.py +0 -0
  160. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/utils/face_utils.py +0 -0
  161. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/facelib/utils/misc.py +0 -0
  162. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/r_chainner/README.md +0 -0
  163. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/r_chainner/__init__.py +0 -0
  164. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/r_chainner/gfpganv1_clean_arch.py +0 -0
  165. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/r_chainner/model_loading.py +0 -0
  166. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/r_chainner/stylegan2_clean_arch.py +0 -0
  167. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/facerestore_cf/r_chainner/types.py +0 -0
  168. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/node_controlnet_model_loader.py +0 -0
  169. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/node_image_loader.py +0 -0
  170. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/node_image_output.py +0 -0
  171. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/node_lora_loader.py +0 -0
  172. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/node_model_loader.py +0 -0
  173. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/nodes/node_upscale_model_loader.py +0 -0
  174. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline/__init__.py +0 -0
  175. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline/constants.py +0 -0
  176. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline/context.py +0 -0
  177. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline/families/__init__.py +0 -0
  178. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline/families/image.py +0 -0
  179. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline/families/post_processing.py +0 -0
  180. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline/graph.py +0 -0
  181. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline/horde_compat.py +0 -0
  182. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline/patches.py +0 -0
  183. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline/payload.py +0 -0
  184. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline/payload_pp.py +0 -0
  185. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline/registry.py +0 -0
  186. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline/resolution.py +0 -0
  187. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline/template.py +0 -0
  188. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline_designs/pipeline_controlnet.json +0 -0
  189. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline_designs/pipeline_controlnet_annotator.json +0 -0
  190. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline_designs/pipeline_controlnet_hires_fix.json +0 -0
  191. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline_designs/pipeline_flux.json +0 -0
  192. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline_designs/pipeline_image_facefix.json +0 -0
  193. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline_designs/pipeline_image_upscale.json +0 -0
  194. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline_designs/pipeline_qr_code.json +0 -0
  195. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline_designs/pipeline_qwen.json +0 -0
  196. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline_designs/pipeline_stable_cascade.json +0 -0
  197. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline_designs/pipeline_stable_cascade_2pass.json +0 -0
  198. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline_designs/pipeline_stable_cascade_remix.json +0 -0
  199. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline_designs/pipeline_stable_diffusion.json +0 -0
  200. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline_designs/pipeline_stable_diffusion_hires_fix.json +0 -0
  201. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline_designs/pipeline_stable_diffusion_img2img_mask.json +0 -0
  202. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipeline_designs/pipeline_stable_diffusion_paint.json +0 -0
  203. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipelines/pipeline_controlnet.json +0 -0
  204. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipelines/pipeline_controlnet_annotator.json +0 -0
  205. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipelines/pipeline_controlnet_hires_fix.json +0 -0
  206. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipelines/pipeline_flux.json +0 -0
  207. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipelines/pipeline_image_facefix.json +0 -0
  208. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipelines/pipeline_image_upscale.json +0 -0
  209. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipelines/pipeline_qr_code.json +0 -0
  210. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipelines/pipeline_qwen.json +0 -0
  211. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipelines/pipeline_stable_cascade.json +0 -0
  212. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipelines/pipeline_stable_cascade_2pass.json +0 -0
  213. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipelines/pipeline_stable_cascade_remix.json +0 -0
  214. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipelines/pipeline_stable_diffusion.json +0 -0
  215. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipelines/pipeline_stable_diffusion_hires_fix.json +0 -0
  216. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipelines/pipeline_stable_diffusion_img2img_mask.json +0 -0
  217. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipelines/pipeline_stable_diffusion_paint.json +0 -0
  218. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pipelines/pipeline_z_image.json +0 -0
  219. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/py.typed +0 -0
  220. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pyinstaller_hooks/__init__.py +0 -0
  221. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/pyinstaller_hooks/hook-hordelib.horde.py +0 -0
  222. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/safety.py +0 -0
  223. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/safety_checker.py +0 -0
  224. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/settings.py +0 -0
  225. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/shared_model_manager.py +0 -0
  226. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/train.py +0 -0
  227. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/utils/__init__.py +0 -0
  228. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/utils/device_pinning.py +0 -0
  229. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/utils/distance.py +0 -0
  230. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/utils/dynamicprompt.py +0 -0
  231. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/utils/gpuinfo.py +0 -0
  232. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/utils/image_utils.py +0 -0
  233. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/utils/ioredirect.py +0 -0
  234. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/utils/logger.py +0 -0
  235. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/utils/nvml.py +0 -0
  236. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/utils/optional_deps.py +0 -0
  237. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/utils/sanitizer.py +0 -0
  238. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/utils/switch.py +0 -0
  239. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/utils/torch_build.py +0 -0
  240. {horde_engine-3.6.2 → horde_engine-3.7.0}/hordelib/utils/torch_memory.py +0 -0
  241. {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.6.2
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<6.0.0,>=5.1.1
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.6.2'
22
- __version_tuple__ = version_tuple = (3, 6, 2)
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>=5.1.1,<6.0.0",
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