Skip to content

Commit

Permalink
Merge pull request #105 from RAMP-project/ipynb_to_rst
Browse files Browse the repository at this point in the history
Automatizing the conversion of jupyter examples to rst
  • Loading branch information
FLomb authored Dec 4, 2023
2 parents 4a4ecee + dd13fc6 commit 21e96dc
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 0 deletions.
2 changes: 2 additions & 0 deletions docs/docs-requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,5 @@ sphinx-pdj-theme # TODO to comment
sphinx-copybutton
sphinxjp.themes.sphinxjp
sphinxjp.themes.basicstrap
nbformat
nbconvert
58 changes: 58 additions & 0 deletions docs/notebooks_convert.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
from nbconvert import RSTExporter
from nbconvert.writers import FilesWriter
import nbformat
import os

path = os.path.abspath(
os.path.join(
os.path.dirname(__file__),
)
)


def convert_notebook_to_rst(input_file, output_dir, file_name):
# Load the notebook
with open(input_file, "r", encoding="utf-8") as f:
notebook_content = nbformat.read(f, as_version=4)

# Create an RST exporter
rst_exporter = RSTExporter()

# Generate RST content
rst_content, resources = rst_exporter.from_notebook_node(notebook_content)

if not os.path.exists(output_dir):
os.mkdir(output_dir)

output_file = os.path.join(output_dir, f"{file_name}.rst")

# Write RST content to the output file
with open(output_file, "w", encoding="utf-8") as f:
f.write(rst_content)

print(f"Conversion successful. RST file saved to: {output_file}")

# Copy images to the output folder
image_dir = output_dir
for image_filename, image_data in resources["outputs"].items():
image_path = os.path.join(output_dir, image_filename)
with open(image_path, "wb") as img_file:
img_file.write(image_data)


def get_all_ipynb_files(examples_path="notebooks"):
all_files = os.listdir(examples_path)
return [
(os.path.join(path, examples_path, file), file.split(".ipynb")[0])
for file in all_files
if file.endswith("ipynb")
]


if __name__ == "__main__":
files = get_all_ipynb_files()

for file, folder in files:
convert_notebook_to_rst(
file, os.path.join(path, "source", "examples", folder), folder
)

0 comments on commit 21e96dc

Please sign in to comment.