Skip to content

Add kernel dependency tree resolver - #779

Open
danieldk wants to merge 2 commits into
mainfrom
dep-solver
Open

Add kernel dependency tree resolver#779
danieldk wants to merge 2 commits into
mainfrom
dep-solver

Conversation

@danieldk

Copy link
Copy Markdown
Member

This change add basic dependency support:

  • DepTreeNode: the kernel dependency tree data structure.
  • resolve_kernel_tree: constructs the dependency tree for a kernel using a solver.
  • get_kernel_dep: function that can be used by a kernel to get one of its dependencies.

Note: get_kernel_dep is not lined in the documentation yet, since not all bits to actually use it have landed.

@@ -0,0 +1,106 @@
import importlib.util

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

This file is the old deps.py, no changes.

Comment thread kernels/src/kernels/resolver.py Outdated
origin: "RemoteKernel | None" = None

def install(self, *, api: HfApi, all_variants: bool = False) -> Self:
def install(self, *, api: HfApi) -> Self:

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

all_variants was a leftover from an experiment, not needed anymore.

@@ -0,0 +1,72 @@
from importlib.util import find_spec

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

This file is the old test_deps.py, GH doesn't visualize the renames well.

This change add basic dependency support:

- `DepTreeNode`: the kernel dependency tree data structure.
- `resolve_kernel_tree`: constructs the dependency tree for a kernel
  using a solver.
- `get_kernel_dep`: function that can be used by a kernel to get one
  of its dependencies.

Note: `get_kernel_dep` is not lined in the documentation yet, since
not all bits to actually use it have landed.
@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.

@danieldk
danieldk marked this pull request as ready for review August 21, 2026 13:45
@github-actions

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: 84.9% — 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 14 82% 47, 53-54, 57-58, 96-104, 119, 130
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 67 12 82% 46-50, 56-70, 75-82
src/kernels/hf_hub.py 62 5 92% 18, 20, 114, 136-137
src/kernels/importer.py 48 3 94% 110, 114, 117
src/kernels/install.py 50 5 90% 78, 116-117, 155, 173
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 83 7 92% 85, 116, 188, 306, 312, 325, 343
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 212 16 92% 172, 215, 221, 234, 342, 422-423, 435, 444, 452, 463, 492, 496, 509, 562, 592
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 74 9 88% 232, 238, 244-245, 266-278
src/kernels/locking.py 109 70 36% 43-110, 114-137, 145, 149-156, 160-170, 174-181
src/kernels/python_deps.py 58 4 93% 59-60, 101, 104
src/kernels/resolver.py 135 6 96% 41, 54-70, 174, 180
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 2025 305 85%

Updated by the Test kernels workflow on commit dc5056156e56a8779ce4b42516004a533d7e144a.

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.

2 participants