Skip to content

fix: cleanup failed imports - #803

Merged
drbh merged 2 commits into
mainfrom
import-cleanup-fix
Sep 1, 2026
Merged

drbh merged 2 commits into
mainfrom
import-cleanup-fix

Conversation

@drbh

@drbh drbh commented Aug 31, 2026

Copy link
Copy Markdown
Collaborator

this pr cleans up partially initialized kernel modules after an import fails and adds kernel context to the original exception

previously, a failed exec_module call left the module in sys.modules, where a later import could return the partially initialized module. _import_from_path now removes the entry before re-raising the original exception with the kernel name, variant, and remote revision when available

note: the additional context uses BaseException.add_note from PEP 678 on Python 3.11 and newer. Python 3.10 re-raises the original exception without a note

https://peps.python.org/pep-0678/

a regression test covers the failed import cleanup and exception note

@HuggingFaceDocBuilderDev

Copy link
Copy Markdown

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint. The docs are available until 30 days after the last update.

@github-actions

github-actions Bot commented Sep 1, 2026 •

Copy link
Copy Markdown

Coverage report — kernels/

Measured on: Python 3.10 / Torch 2.13.0.
Other CI configurations are not included in this number.
Hardware-gated code paths (ROCm/XPU/NPU/Darwin/Windows) are excluded or unreachable on the Linux+CUDA runner.

Total coverage: 86.7% — threshold: 80% — ✅

Per-file breakdown
Name Stmts Miss Cover Missing
src/kernels/__init__.py 14 0 100%
src/kernels/_system.py 6 1 83% 10
src/kernels/_versions.py 78 9 88% 47, 53-54, 57-58, 97, 119, 130, 136
src/kernels/archs.py 56 1 98% 95
src/kernels/backends.py 212 62 71% 40, 44, 48-51, 68, 90, 108, 117, 121, 125-127, 148, 157, 161, 165-167, 188, 199, 201, 208-211, 224, 228, 232-252, 260, 283-303
src/kernels/compat.py 8 1 88% 5
src/kernels/deps.py 81 1 99% 58
src/kernels/hf_hub.py 62 3 95% 18, 20, 114
src/kernels/importer.py 57 5 91% 110, 114, 117, 131-132
src/kernels/install.py 21 7 67% 78-102
src/kernels/layer/__init__.py 6 0 100%
src/kernels/layer/_interval_tree.py 103 4 96% 23, 52, 147, 150
src/kernels/layer/device.py 48 14 71% 42, 47-49, 91, 96-98, 101, 149, 152, 155-157
src/kernels/layer/func.py 87 6 93% 91, 122, 194, 314, 340, 368
src/kernels/layer/globals.py 5 0 100%
src/kernels/layer/kernelize.py 74 8 89% 255, 281, 289-290, 296, 300, 316-318
src/kernels/layer/layer.py 216 15 93% 178, 223, 249, 367, 447-448, 460, 469, 477, 488, 517, 521, 534, 587, 617
src/kernels/layer/mode.py 14 0 100%
src/kernels/layer/repos.py 144 42 71% 27, 33, 36-43, 63-64, 70, 73-76, 90, 94, 103-104, 110, 113-116, 123-124, 130, 133-136, 143-144, 150, 153-156, 163-164, 170, 173-176, 257
src/kernels/load.py 69 2 97% 326, 365
src/kernels/locking.py 89 64 28% 35-83, 91-98, 102-125, 137, 152-159, 165-175, 179-186
src/kernels/python_deps.py 58 6 90% 59-60, 64-65, 101, 104
src/kernels/resolver.py 141 2 99% 182, 188
src/kernels/status.py 49 2 96% 23, 81
src/kernels/variants.py 278 19 93% 64, 95, 116, 146, 255-256, 298-301, 303, 387-394, 400-406, 437-443, 455-461
src/kernels/verify.py 88 1 99% 32
TOTAL 2064 275 87%

Updated by the Test kernels workflow on commit 4eafdfeb6f56f157e9f9f7ecf3f3a4ef63e9cd89.

@danieldk danieldk left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great catch! Small nit.

Comment thread kernels/src/kernels/importer.py Outdated
drbh and others added 2 commits September 1, 2026 10:13
@drbh
drbh force-pushed the import-cleanup-fix branch from bd85e53 to 4eafdfe Compare September 1, 2026 14:15
@drbh
drbh merged commit 415762c into main Sep 1, 2026
47 of 54 checks passed

This branch was previously deployed

1 inactive deployment
testpypi — 4eafdfeb Deployed Sep 1, 2026 by drbh via Publish Python 🐍 distribution 📦 to TestPyPI #2057
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants