Skip to content

kernels-data: replace GitHash by GitStatus - #765

Merged
danieldk merged 1 commit into
mainfrom
git-hash-refactor
Aug 17, 2026
Merged

kernels-data: replace GitHash by GitStatus#765
danieldk merged 1 commit into
mainfrom
git-hash-refactor

Conversation

@danieldk

Copy link
Copy Markdown
Member

GitHash backed the Git commit SHA and the dirty status in a struct. But it is a bit of a misnomer, since dirty is not part of the hash. The issue that this gives was that we cannot use GitHash in other contexts (like lock files).

This change renames GitHash to GitStatus. It also adds typing to the commit SHA for validation. The newtype is named Oid to align with other libraries such as libgit2.

For compatibility with existing metadata files, we still parse the old field name (sha) as well. There is currently no release with provenance in the metadata yet, but since kernels are built against main, there are many kernels that use this field name already.

`GitHash` backed the Git commit SHA and the dirty status in a struct.
But it is a bit of a misnomer, since `dirty` is not part of the hash.
The issue that this gives was that we cannot use `GitHash` in other
contexts (like lock files).

This change renames `GitHash` to `GitStatus`. It also adds typing to
the commit SHA for validation. The newtype is named `Oid` to align with
other libraries such as libgit2.

For compatibility with existing metadata files, we still parse the old
field name (`sha`) as well. There is currently no release with
provenance in the metadata yet, but since kernels are built against
`main`, there are many kernels that use this field name already.
@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

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.3% — threshold: 80% — ✅

Per-file breakdown
Name Stmts Miss Cover Missing
src/kernels/__init__.py 13 0 100%
src/kernels/_system.py 6 1 83% 10
src/kernels/_versions.py 63 7 89% 46, 49, 52-53, 56-57, 100
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 58 4 93% 59-60, 101, 104
src/kernels/hf_hub.py 62 5 92% 18, 20, 114, 136-137
src/kernels/importer.py 48 3 94% 106, 110, 113
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 82 7 91% 83, 113, 185, 303, 309, 322, 340
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 211 16 92% 169, 212, 218, 231, 339, 419-420, 432, 441, 449, 460, 489, 493, 506, 559, 589
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% 218, 224, 230-231, 252-264
src/kernels/locking.py 108 70 35% 42-109, 113-136, 144, 148-155, 159-169, 173-180
src/kernels/status.py 49 2 96% 23, 81
src/kernels/variants.py 278 22 92% 64, 95, 116, 146, 255-256, 298-301, 303, 387-394, 400-406, 437-443, 455-461, 611-613
src/kernels/verify.py 88 1 99% 32
TOTAL 1804 283 84%

Updated by the Test kernels workflow on commit 57f401c57efb252b0571545d2c0adb50ac46e44c.

@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!

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

Very nice!

Comment on lines -7 to +9
use kernels_data::metadata::{GitHash, KernelBuilderVersion, Metadata, Provenance};
use kernels_data::git::{GitStatus, Oid};
use kernels_data::metadata::{KernelBuilderVersion, Metadata, Provenance};

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.

Cool segregation. How does this handle metadata in the case where metadata also includes GitHash?

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.

Old serialized GitHash will be deserialized into GitStatus.

@danieldk
danieldk merged commit dbc322a into main Aug 17, 2026
56 of 57 checks passed
@danieldk
danieldk deleted the git-hash-refactor branch August 17, 2026 17:28
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