diff --git a/docs/hooks/.gitignore b/docs/hooks/.gitignore new file mode 100644 index 00000000..eeb8a6ec --- /dev/null +++ b/docs/hooks/.gitignore @@ -0,0 +1 @@ +**/__pycache__ diff --git a/docs/hooks/macros.py b/docs/hooks/macros.py new file mode 100644 index 00000000..5fc4fe3c --- /dev/null +++ b/docs/hooks/macros.py @@ -0,0 +1,11 @@ +import importlib.metadata + + +def define_env(env): + @env.macro + def requirements(): + packages = dict() + for package in sorted(set(importlib.metadata.packages_distributions().keys())): + if package.startswith("numcodecs-wasm") or package.startswith("numcodecs_wasm"): + packages[package] = importlib.metadata.version(package) + return packages diff --git a/docs/requirements.txt b/docs/requirements.txt index ec951cb6..a440873c 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -28,10 +28,11 @@ properdocs properdocs-theme-readthedocs mkdocstrings[python] +mkdocs-exclude mkdocs-include-markdown-plugin mkdocs-gen-files mkdocs-literate-nav -mkdocs-exclude +mkdocs-macros-plugin Pygments diff --git a/docs/try-repl.md b/docs/try-repl.md index 981e26d7..fbf9e56d 100644 --- a/docs/try-repl.md +++ b/docs/try-repl.md @@ -1,3 +1,7 @@ +--- +render_macros: true +--- + # Try the `numcodecs-wasm-*` codecs using JupyterLite /// details | **Warning:** JupyterLite may not work in every web browser @@ -34,6 +38,18 @@ plt.show()\ // example package lazy dependencies "crc32c", "msgpack", -]})); +]})) + "&pyodideKernelEnv=" + encodeURIComponent(JSON.stringify({"$override": { + "CLIMET_LAB_BOOTSTRAP_CODE": `\ +def preinstall_packages(lines): + return """ +import micropip +await micropip.install([ + f"{package}=={version}" for package, version in {{ requirements() }}.items() +]) +""".splitlines(keepends=True) + lines +preinstall_packages.has_side_effects = True +ip.input_transformers_cleanup.append(preinstall_packages) +`, +}})); }); diff --git a/properdocs.yml b/properdocs.yml index be33a051..dba387fa 100644 --- a/properdocs.yml +++ b/properdocs.yml @@ -47,6 +47,11 @@ plugins: - requirements.txt - search - autorefs + - macros: + module_name: docs/hooks/macros + on_error_fail: true + on_undefined: strict + render_by_default: false - mkdocstrings: enable_inventory: true handlers: