11from __future__ import annotations
2- from typing import TYPE_CHECKING
2+
33from collections .abc import Callable
4+ from typing import TYPE_CHECKING
45
56if TYPE_CHECKING :
6- from afterpython ._typing import NodeEnv
77 from pathlib import Path
88
9+ from afterpython ._typing import NodeEnv
10+
911import os
1012import shutil
1113import subprocess
1416from click .exceptions import Exit
1517
1618import afterpython as ap
17- from afterpython .utils import find_node_env
18- from afterpython .const import CONTENT_TYPES
1919from afterpython .builders import (
20- build_metadata ,
2120 add_molab_badge_to_jupyter_notebooks ,
21+ build_metadata ,
2222)
23+ from afterpython .const import CONTENT_TYPES
24+ from afterpython .utils import find_node_env
2325
2426
2527def determine_base_path () -> str :
@@ -29,9 +31,9 @@ def determine_base_path() -> str:
2931 Empty string if custom domain is configured (no github.io in URL)
3032 /repo-name if using default GitHub Pages URL (contains github.io)
3133 """
34+ from afterpython ._io .toml import _from_tomlkit
3235 from afterpython .tools ._afterpython import read_afterpython
3336 from afterpython .tools .pyproject import read_metadata
34- from afterpython ._io .toml import _from_tomlkit
3537
3638 # Read website URL from afterpython.toml
3739 afterpython = read_afterpython ()
@@ -167,8 +169,7 @@ def build(ctx, dev: bool, execute: bool):
167169
168170 Use --execute to execute Jupyter notebooks for all content types.
169171 """
170- from afterpython .utils import has_content_for_myst
171- from afterpython .utils import handle_passthrough_help
172+ from afterpython .utils import handle_passthrough_help , has_content_for_myst
172173
173174 # Show both our options and myst's help and exit
174175 handle_passthrough_help (
0 commit comments