Modernizes ComfyUI-CoreMLSuite onto Python 3.12 / torch 2.7 / coremltools 9 with a characterization-test safety net. The default conversion path is unchanged; existing saved workflows produce identical output. - Toolchain bump (Python 3.12, torch 2.7, coremltools 9, numpy <2) with the blocking upstream pins overridden. - Framework-free logic moved into coreml_suite/core/ (no comfy/coremltools imports); old module paths re-export from there. - Opt-in quantize_nbits dropdown (none|8|6|4) for k-means weight palettization; default none is byte-for-byte identical to before. - Tiered CI: Tier 0 (Linux unit), Tier 1 (macOS-ARM smoke), Tier 2 (self-hosted Apple Silicon golden-image check on the ANE).
44 lines
1.4 KiB
Python
44 lines
1.4 KiB
Python
"""Gate: prove the Tier-0 lane is framework-free.
|
|
|
|
In a pure `pytest -m unit` run, none of the banned runtime modules
|
|
(comfy, coremltools, python_coreml_stable_diffusion, folder_paths,
|
|
nodes, comfy_extras, diffusers, diffusionkit) may be in sys.modules
|
|
after collection. If they are, a tests/unit/ file is transitively
|
|
pulling them in and the Tier-0 promise — "runs on Linux with no Mac
|
|
stack" — is broken.
|
|
|
|
When other tiers (m2 / integration) are also collected, comfy is
|
|
expected in sys.modules (integration imports it deliberately), so the
|
|
check is skipped in mixed runs — Tier-0 purity is only meaningful when
|
|
nothing else is loaded.
|
|
"""
|
|
import sys
|
|
|
|
import pytest
|
|
|
|
BANNED_ROOTS = {
|
|
"comfy",
|
|
"comfy_extras",
|
|
"coremltools",
|
|
"python_coreml_stable_diffusion",
|
|
"folder_paths",
|
|
"nodes",
|
|
"diffusers",
|
|
"diffusionkit",
|
|
}
|
|
|
|
|
|
def test_no_framework_modules_loaded_by_unit_tier(request):
|
|
markexpr = request.config.option.markexpr
|
|
if markexpr != "unit":
|
|
pytest.skip(
|
|
"purity gate only meaningful in a pure `-m unit` run "
|
|
f"(got markexpr={markexpr!r}); other tiers are expected to "
|
|
"import comfy/coremltools."
|
|
)
|
|
loaded = {name for name in sys.modules if name.split(".")[0] in BANNED_ROOTS}
|
|
assert not loaded, (
|
|
f"Tier-0 leakage: these framework modules are in sys.modules after "
|
|
f"collecting tests/unit/: {sorted(loaded)}. Pure-core promise broken."
|
|
)
|