Skip to content

Instantly share code, notes, and snippets.

@chsasank
Last active February 21, 2024 14:29
Show Gist options
  • Star 29 You must be signed in to star a gist
  • Fork 13 You must be signed in to fork a gist
  • Save chsasank/7218ca16f8d022e02a9c0deb94a310fe to your computer and use it in GitHub Desktop.
Save chsasank/7218ca16f8d022e02a9c0deb94a310fe to your computer and use it in GitHub Desktop.
Convert jupyter notebook to sphinx gallery notebook styled examples.
@weber-s
Copy link

weber-s commented Apr 30, 2018

Hi,

This script is very useful! However lots of people now uses magic command such as %matplotlib inline and so, the resulting file is not executable by regular python.

I suggest adding something like:

    python_file = python_file.replace("\n%", "\n# %")

just before the writing of the file, l. 35.

thanks again :)

@chsasank
Copy link
Author

Modified!

@nabriis
Copy link

nabriis commented May 23, 2022

Really useful script. When using it I found that the pdoc conversion of markdown adds "\r\n" after every new line of the file I tried.
This causes errors in the conversion since the filer writer will add write 2 new lines splitting rst cells.

A quick fix was to add

rst_source = rst_source.replace('\r', '')

after line 23 and 28.

There might be a more clever way with how to write the file in the end.

@rabinadk1
Copy link

May be replace

nb_dict = json.load(open(file_name))

with

with open(file_name) as f:
    nb_dict = json.load(f)

in line 14 and replace

open(file_name.replace('.ipynb', '.py'), 'w').write(python_file)

with

with open(file_name.replace('.ipynb', '.py'), 'w') as f:
    f.write(python_file)

in line 38.

@HealthyPear
Copy link

I had the opposite issue of @weber-s : my first cell was magic code so as a quick fixed I modified the first conditional block as

if cell["cell_type"] == "markdown":
    md_source = "".join(cell["source"])
    rst_source = pdoc.convert_text(md_source, "rst", "md")
    python_file = '"""\n' + rst_source + '\n"""'
elif cell["cell_type"] == "code":
    source = "".join(cell["source"])
    python_file = python_file + "\n" * 2 + source
else:
    raise ValueError(f"Unsupported starting cell type {cell["cell_type"]}.") 

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment