Skip to content

Commit 46ee6b4

Browse files
authored
ENH: always overwrite kernel name to "Python 3 (ipykernel)" (#499)
1 parent c4d5547 commit 46ee6b4

File tree

5 files changed

+72
-7
lines changed

5 files changed

+72
-7
lines changed

.cspell.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@
109109
"Deepnote",
110110
"docstrings",
111111
"graphviz",
112+
"ipykernel",
112113
"ipython",
113114
"mkdir",
114115
"mypy",

.pre-commit-hooks.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,3 +40,10 @@
4040
language: python
4141
types:
4242
- jupyter
43+
44+
- id: set-nb-display-name
45+
name: Revert display name of the notebook kernel
46+
entry: set-nb-display-name
47+
language: python
48+
types:
49+
- jupyter

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ fix-nbformat-version = "compwa_policy.fix_nbformat_version:main"
4141
remove-empty-tags = "compwa_policy.remove_empty_tags:main"
4242
self-check = "compwa_policy.self_check:main"
4343
set-nb-cells = "compwa_policy.set_nb_cells:main"
44+
set-nb-display-name = "compwa_policy.set_nb_display_name:main"
4445

4546
[project.urls]
4647
Source = "https://github.com/ComPWA/policy"

src/compwa_policy/check_dev_files/precommit.py

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -86,13 +86,18 @@ def _update_policy_hook(precommit: ModifiablePrecommit, has_notebooks: bool) ->
8686
msg = "Could not find ComPWA/policy pre-commit repo"
8787
raise KeyError(msg)
8888
hook_ids = {h["id"] for h in repo["hooks"]}
89-
remove_empty_tags_ids = "remove-empty-tags"
90-
if remove_empty_tags_ids in hook_ids:
91-
return
92-
precommit.update_hook(
93-
repo_url=repo["repo"],
94-
expected_hook=Hook(id=remove_empty_tags_ids),
95-
)
89+
with Executor() as do:
90+
for expected_hook_id in [
91+
"remove-empty-tags",
92+
"set-nb-display-name",
93+
]:
94+
if expected_hook_id in hook_ids:
95+
continue
96+
do(
97+
precommit.update_hook,
98+
repo_url=repo["repo"],
99+
expected_hook=Hook(id=expected_hook_id),
100+
)
96101

97102

98103
def _update_precommit_ci_commit_msg(precommit: ModifiablePrecommit) -> None:
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
"""Remove tags metadata from notebook cells if they are empty."""
2+
3+
from __future__ import annotations
4+
5+
import argparse
6+
import sys
7+
from typing import TYPE_CHECKING
8+
9+
import nbformat
10+
11+
from compwa_policy.errors import PrecommitError
12+
from compwa_policy.utilities.executor import Executor
13+
from compwa_policy.utilities.notebook import load_notebook
14+
15+
if TYPE_CHECKING:
16+
from collections.abc import Sequence
17+
18+
19+
def main(argv: Sequence[str] | None = None) -> int:
20+
parser = argparse.ArgumentParser(__doc__)
21+
parser.add_argument("filenames", nargs="*", help="Filenames to check.")
22+
args = parser.parse_args(argv)
23+
24+
with Executor(raise_exception=False) as do:
25+
for filename in args.filenames:
26+
do(_set_nb_display_name, filename)
27+
return 1 if do.error_messages else 0
28+
29+
30+
def _set_nb_display_name(filename: str) -> None:
31+
notebook = load_notebook(filename)
32+
display_name = (
33+
notebook.get("metadata", {})
34+
.get("kernelspec", {}) # cspell:ignore kernelspec
35+
.get("display_name")
36+
)
37+
expected_display_name = "Python 3 (ipykernel)"
38+
if display_name != expected_display_name:
39+
if "metadata" not in notebook:
40+
notebook["metadata"] = {}
41+
metadata = notebook["metadata"]
42+
if "kernelspec" not in metadata:
43+
metadata["kernelspec"] = {}
44+
metadata["kernelspec"]["display_name"] = expected_display_name
45+
nbformat.write(notebook, filename)
46+
msg = f"Set display name to {expected_display_name!r} in {filename}"
47+
raise PrecommitError(msg)
48+
49+
50+
if __name__ == "__main__":
51+
sys.exit(main())

0 commit comments

Comments
 (0)