Compare commits

...

1 Commits

Author SHA1 Message Date
Erick Friis
7bc4a5964c wip 2023-12-15 17:46:48 -08:00
3 changed files with 75 additions and 5 deletions

View File

@@ -0,0 +1,69 @@
# based on outerbounds/nbdoc
from nbdev.export import nbglob
from nbconvert import MarkdownExporter
from nbconvert.preprocessors import Preprocessor
from pathlib import Path
import re
class WriteTitle(Preprocessor):
"""Modify the code-fence with the filename upon %%writefile cell magic."""
pattern = r"(^[\S\s]*%%writefile\s)(\S+)\n"
def preprocess_cell(self, cell, resources, index):
print("here")
m = re.match(self.pattern, cell.source)
if m:
filename = m.group(2)
ext = filename.split(".")[-1]
cell.metadata.magics_language = f'{ext} title="{filename}"'
cell.metadata.script = True
cell.metadata.file_ext = ext
cell.metadata.filename = filename
cell.outputs = []
return cell, resources
def get_exporter():
# c = Config()
# c.MarkdownExporter.preprocessors = [WriteTitle]
exporter = MarkdownExporter(
config={"MarkdownExporter": {"preprocessors": [WriteTitle]}}
)
return exporter
def process_file(fname: Path, force: bool = False) -> None:
fname_rel = fname.relative_to(basedir)
fname_out_ipynb = outdir / fname_rel
fname_out = fname_out_ipynb.with_suffix(".md")
if (
force
or not fname_out.exists()
or fname.stat().st_mtime > fname_out.stat().st_mtime
):
print(f"Converting {fname_rel} to markdown")
exporter = get_exporter()
output, _ = exporter.from_filename(fname)
fname_out.write_text(output)
print(fname_out)
if __name__ == "__main__":
# parallel process
basedir = Path(__file__).parent.parent / "docs"
outdir = Path(__file__).parent.parent.parent.parent / "_dist" / "docs"
files = nbglob(basedir, recursive=True)
fname = files[0]
process_file(fname, True)
# for fname in files:
# process_file(fname)
# print(fname_out)
# for fname in files:
# fname_out = fname.with_suffix('.md')

10
poetry.lock generated
View File

@@ -2119,13 +2119,13 @@ test = ["flaky", "ipykernel", "ipython", "ipywidgets", "nbconvert (>=7.0.0)", "p
[[package]]
name = "nbconvert"
version = "7.8.0"
version = "7.12.0"
description = "Converting Jupyter Notebooks"
optional = false
python-versions = ">=3.8"
files = [
{file = "nbconvert-7.8.0-py3-none-any.whl", hash = "sha256:aec605e051fa682ccc7934ccc338ba1e8b626cfadbab0db592106b630f63f0f2"},
{file = "nbconvert-7.8.0.tar.gz", hash = "sha256:f5bc15a1247e14dd41ceef0c0a3bc70020e016576eb0578da62f1c5b4f950479"},
{file = "nbconvert-7.12.0-py3-none-any.whl", hash = "sha256:5b6c848194d270cc55fb691169202620d7b52a12fec259508d142ecbe4219310"},
{file = "nbconvert-7.12.0.tar.gz", hash = "sha256:b1564bd89f69a74cd6398b0362da94db07aafb991b7857216a766204a71612c0"},
]
[package.dependencies]
@@ -2152,7 +2152,7 @@ docs = ["ipykernel", "ipython", "myst-parser", "nbsphinx (>=0.2.12)", "pydata-sp
qtpdf = ["nbconvert[qtpng]"]
qtpng = ["pyqtwebengine (>=5.15)"]
serve = ["tornado (>=6.1)"]
test = ["flaky", "ipykernel", "ipywidgets (>=7)", "pre-commit", "pytest", "pytest-dependency"]
test = ["flaky", "ipykernel", "ipywidgets (>=7)", "pytest"]
webpdf = ["playwright"]
[[package]]
@@ -3971,4 +3971,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p
[metadata]
lock-version = "2.0"
python-versions = ">=3.8.1,<4.0"
content-hash = "581c178796dbb76589632e687d353a336ca23b3cdda7075720660b479dc85fa2"
content-hash = "01838f8ac4fb3d5ac59517aa5b24e55f7167736fba952ebaa1216991b3972512"

View File

@@ -27,6 +27,7 @@ myst-nb = "^0.17.1"
linkchecker = "^10.2.1"
sphinx-copybutton = "^0.5.1"
nbdoc = "^0.0.82"
nbconvert = "^7.12.0"
[tool.poetry.group.lint.dependencies]
ruff = "^0.1.5"