diff --git a/conftest.py b/conftest.py index f4be30e..ee2a34b 100644 --- a/conftest.py +++ b/conftest.py @@ -112,14 +112,6 @@ def _install_stubs(): setattr(sys.modules[bare], k, v) setattr(sys.modules[fq], k, v) - # 2b. Stub network_utils (used by config_builder_node via relative import) - for _nu_name in ("network_utils", f"{_PKG_NAME}.network_utils"): - if _nu_name not in sys.modules: - _nu = types.ModuleType(_nu_name) - sys.modules[_nu_name] = _nu - if not hasattr(sys.modules[_nu_name], "civitai_fetch_by_hash"): - sys.modules[_nu_name].civitai_fetch_by_hash = lambda *a, **kw: None - # 3. Pre-register the package itself if _PKG_NAME not in sys.modules: pkg_stub = types.ModuleType(_PKG_NAME) diff --git a/network_utils.py b/network_utils.py deleted file mode 100644 index e4f315a..0000000 --- a/network_utils.py +++ /dev/null @@ -1,54 +0,0 @@ -# ============================================================================== -# NETWORK UTILS - Outbound network requests centralized here. -# -# External services contacted: -# 1. CivitAI API (civitai.com/api/v1) - model/LoRA metadata lookup -# -# (HuggingFace Remote VAE was moved to the ComfyUI-USCG-RemoteVAE companion -# plugin in 2026-05-19. See remote_vae.py for the facade. -# Distribution system was moved to the ComfyUI-USCG-Distributed companion -# plugin in 2026-05-19. See distribution.py for the facade.) -# ============================================================================== - -import json -import os -import urllib.request -import urllib.error -import urllib.parse - - -# ============================================================================= -# 1. CIVITAI API — Model/LoRA metadata lookup -# Target: civitai.com/api/v1 (ONLY) -# ============================================================================= - -CIVITAI_API_BASE = "https://civitai.com/api/v1" -CIVITAI_TIMEOUT = 10 # seconds -CIVITAI_USER_AGENT = "ComfyUI-ConfigBuilder" - - -def civitai_fetch_by_hash(hash_value): - """ - Fetch model version info from CivitAI API using a file hash. - - Network call: GET https://civitai.com/api/v1/model-versions/by-hash/{hash} - Timeout: 10 seconds - Returns: Parsed JSON dict on success, None on any error. - """ - api_url = f"{CIVITAI_API_BASE}/model-versions/by-hash/{hash_value}" - try: - req = urllib.request.Request( - api_url, - headers={"User-Agent": CIVITAI_USER_AGENT} - ) - with urllib.request.urlopen(req, timeout=CIVITAI_TIMEOUT) as response: - if response.status == 200: - return json.loads(response.read().decode("utf-8")) - else: - return None - except urllib.error.HTTPError: - return None - except Exception as e: - print(f"[NetworkUtils] ⚠️ CivitAI lookup failed: {e}") - return None - diff --git a/tests/conftest.py b/tests/conftest.py index 2cd4dc8..780cb33 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -163,23 +163,7 @@ _GEN_ORCH_DEPS = { }, } -# network_utils.py uses only stdlib — always load the real module and register -# it under both the bare name and the package-qualified name. This ensures the -# relative import `from .network_utils import huggingface_vae_decode, ...` in -# remote_vae.py resolves correctly regardless of what pytest has pre-loaded. -import importlib.util as _ilu # imported here; re-used below for gen_orch and remote_vae -_NETWORK_UTILS_FQ = f"{_PKG_NAME}.network_utils" -_NU_PATH = os.path.join(_NODE_ROOT, "network_utils.py") -_nu_spec = _ilu.spec_from_file_location(_NETWORK_UTILS_FQ, _NU_PATH, - submodule_search_locations=[]) -_nu_spec.submodule_search_locations = None -_nu_mod = _ilu.module_from_spec(_nu_spec) -_nu_mod.__package__ = _PKG_NAME -# Unconditionally replace any prior stub — we need the real attributes. -sys.modules[_NETWORK_UTILS_FQ] = _nu_mod -sys.modules["network_utils"] = _nu_mod -setattr(sys.modules[_PKG_NAME], "network_utils", _nu_mod) -_nu_spec.loader.exec_module(_nu_mod) +import importlib.util as _ilu # used below for gen_orch, remote_vae, distribution, civitai for _bare, _attrs in _GEN_ORCH_DEPS.items(): _fq = f"{_PKG_NAME}.{_bare}" @@ -213,8 +197,6 @@ if "generation_orchestrator" not in sys.modules: # Pre-load the real remote_vae module so that test_remote_vae_facade.py gets # the actual functions (is_remote_vae_available, get_endpoint_names, # _companion_decode) rather than the lightweight stub registered above. -# remote_vae.py uses `from .network_utils import ...`; we satisfy that via the -# network_utils stub already registered in sys.modules. _RV_PATH = os.path.join(_NODE_ROOT, "remote_vae.py") _RV_FQ = f"{_PKG_NAME}.remote_vae" _rv_spec = _ilu.spec_from_file_location(_RV_FQ, _RV_PATH,