Skip to content

Small validator refactorings - #809

Merged
danieldk merged 5 commits into
mainfrom
validate-refactor
Sep 3, 2026
Merged

Small validator refactorings#809
danieldk merged 5 commits into
mainfrom
validate-refactor

Conversation

@danieldk

@danieldk danieldk commented Sep 2, 2026

Copy link
Copy Markdown
Member
  • Move validators to the validation module.
  • Move validator tests to test_validation.
  • Rename Validator to MetadataValidator, since we may want to support KernelValidators in the future as well.
  • Let validators only take Metadata and the variant string. This makes it possible to change the dependency tree representation without breaking validators.

@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 commented Sep 2, 2026

Copy link
Copy Markdown
Member Author

The nix fmt error is unrelated.

@drbh drbh left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

lgtm!

@drbh

drbh commented Sep 2, 2026

Copy link
Copy Markdown
Collaborator

The nix fmt error is unrelated.

**nix formatting issue should be resolved by - #810

@github-actions

github-actions Bot commented Sep 2, 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.8% — 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 65 1 98% 58
src/kernels/hf_hub.py 62 2 97% 18, 20
src/kernels/importer.py 57 5 91% 112, 116, 119, 133-134
src/kernels/install.py 21 7 67% 77-101
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, 124, 198, 320, 346, 376
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% 183, 230, 256, 376, 456-457, 469, 478, 486, 497, 526, 530, 543, 596, 626
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 70 2 97% 329, 368
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/validate.py 40 1 98% 58
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 2089 275 87%

Updated by the Test kernels workflow on commit f450e3846c241f96be2c68913999306a324f29ca.

@sayakpaul sayakpaul 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.

My main comment is if we should have separate validators like this. Right now the argument makes it clear that the validator is only for metadata validation. So, are we aiming for a design where we have arguments for different validators that differ in their areas? For example, for a kernel validator we would add a different argument?

kernel: KernelDependency,
resolver: Resolver | None,
validator: Validator,
metadata_validator: MetadataValidator,

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.

I think this should be a generic validator still because we might want to add a kernel validator in the future and we will have to add another argument for that, right?

@danieldk danieldk Sep 3, 2026

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.

For kernel validators there would be a kernel_validator: KernelValidator argument. Otherwise we'd have MetadataValidator | KernelValidator, but you would not be able to pass both.

@danieldk danieldk Sep 3, 2026

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.

Or, we'd need another Validator protocol, but it couldn't define any methods, since the arguments would be different between metadata and kernel validators.

@sayakpaul sayakpaul 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.

Fine to merge I think the nix related failures are unrelated. But I am still debating if it makes sense to have separate arguments for different validators or if they should clubbed. I don't have a clear picture of the pros and cons of both yet.

@danieldk
danieldk merged commit d7c41d4 into main Sep 3, 2026
51 of 56 checks passed
@danieldk
danieldk deleted the validate-refactor branch September 3, 2026 07:50
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.

4 participants