Notedown - Markdown <=> IPython Notebook

Overview

Python 2/3 and IPython 4 / Jupyter compatible!

Convert IPython Notebooks to markdown (and back)

notedown is a simple tool to create IPython notebooks from markdown (and r-markdown).

notedown separates your markdown into code and not code. Code blocks (fenced or indented) go into input cells, everything else goes into markdown cells.

Usage:

notedown input.md > output.ipynb

Installation:

pip install notedown

or the latest on github:

pip install https://github.com/aaren/notedown/tarball/master

Conversion to markdown

Convert a notebook into markdown, stripping all outputs:

notedown input.ipynb --to markdown --strip > output.md

Convert a notebook into markdown, with output JSON intact:

notedown input.ipynb --to markdown > output_with_outputs.md

The outputs are placed as JSON in a code-block immediately after the corresponding input code-block. notedown understands this convention as well, so it is possible to convert this markdown-with-json back into a notebook.

This means it is possible to edit markdown, convert to notebook, play around a bit and convert back to markdown.

NB: currently, notebook and cell metadata is not preserved in the conversion.

Strip the output cells from markdown:

notedown with_output_cells.md --to markdown --strip > no_output_cells.md

Running an IPython Notebook

notedown notebook.md --run > executed_notebook.ipynb

Editing in the browser (new!)

You can configure IPython / Jupyter to seamlessly use markdown as its storage format. Add the following to your config file:

c.NotebookApp.contents_manager_class = 'notedown.NotedownContentsManager'

Now you can edit your markdown files in the browser, execute code, create plots - all stored in markdown!

For Jupyter, your config file is jupyter_notebook_config.py in ~/.jupyter. For IPython your config is ipython_notebook_config.py in your ipython profile (probably ~/.ipython/profile_default):

Editing in vim

There is a vim plugin that allows editing notebooks (ipynb files) directly in vim. They will be automatically converted to markdown on opening the file, and converted back to the original json format on writing.

R-markdown

You can use notedown to convert r-markdown as well. We just need to tell notedown to use knitr to convert the r-markdown. This requires that you have R installed with knitr.

Convert r-markdown into markdown:

notedown input.Rmd --to markdown --knit > output.md

Convert r-markdown into an IPython notebook:

notedown input.Rmd --knit > output.ipynb
  • --rmagic will add %load_ext rpy2.ipython at the start of the notebook, allowing you to execute code cells using the rmagic extension (requires rpy2). notedown does the appropriate %R cell magic automatically.

Magic

Fenced code blocks annotated with a language other than python are read into cells using IPython's %% cell magic.

You can disable this with --nomagic.

  • --pre lets you add arbitrary code to the start of the notebook. e.g. notedown file.md --pre '%matplotlib inline' 'import numpy as np'

How do I put a literal code block in my markdown?

By using the --match argument. notedown defaults to converting all code-blocks into code-cells. This behaviour can be changed by giving a different argument to --match:

  • --match=all: convert all code blocks (the default)

  • --match=fenced: only convert fenced code blocks

  • --match=language: only convert fenced code blocks with 'language' as the syntax specifier (or any member of the block attributes)

  • --match=strict: only convert code blocks with Pandoc style attributes containing 'python' and 'input' as classes. i.e. code blocks must look like

      ```{.python .input}
      code
      ```
    

This isn't very interactive!

Try editing the markdown in the IPython Notebook using the NotedownContentsManager (see above).

You can get an interactive ipython session in vim by using vim-ipython, which allows you to connect to a running ipython kernel. You can send code from vim to ipython and get code completion from the running kernel. Try it!

Where's my syntax highlighting?!

Try using either vim-markdown or vim-pandoc. Both are clever enough to highlight code in markdown.

Rendering outputs in markdown

This is experimental!

Convert a notebook into markdown, rendering cell outputs as native markdown elements:

notedown input.ipynb --render

This means that e.g. png outputs become ![](data-uri) images and that text is placed in the document.

Of course, you can use this in conjuntion with runipy to produce markdown-with-code-and-figures from markdown-with-code:

notedown input.md --run --render > output.md

Not a notebook in sight!

The --render flag forces the output format to markdown.

TODO

  • Python 3 support
  • unicode support
  • IPython 3 support
  • IPython 4 (Jupyter) support
  • Allow kernel specification
Comments
  • Load Magic Extensions

    Load Magic Extensions

    This is an awesome tool and exactly what I was looking for as I try to work with R and IPython. I was able to successfully convert a markdown file into an IPython notebook, but one glitch I noticed was that I had to manually load the rmagic extension before running my notebook. Since, your code automatically detects magics, I was wondering if it was possible to auto load these magics?

    %load_ext rmagic
    
    opened by ramnathv 24
  • Add Python 3 support

    Add Python 3 support

    This PR brings nearly full compatibility for Python 3, while maintaining Python 2 compatibility.

    The sole exception is the R-markdown test, which for me is failing on master as well. The failures on master and on this PR match.

    opened by jni 8
  • ipymd functionality: feedback wanted

    ipymd functionality: feedback wanted

    @jni, @stefanv maybe you can test this out and give some feedback?

    I've just pushed a change to master that lets you use markdown files as the on disk notebook storage, editing them with the web notebook. This was inspired by ipymd which lets you do a similar thing.

    This isn't documented yet but I've released it with 1.4.4.

    To try it out, add the following to ipython_notebook_config.py in your ipython profile (probably ~/.ipython/profile_default/):

    c.NotebookApp.contents_manager_class = 'notedown.NotedownContentsManager'
    

    and then try opening up, editing and saving some markdown in the browser.

    Unlike ipymd, notedown preserves prompt numbers and outputs (using json code cells) in the markdown. This isn't very pretty but I get around it by collapsing json cells in my editor (and turning wrap off!).

    question 
    opened by aaren 7
  • Writing to sys.stdout fails on Python 3

    Writing to sys.stdout fails on Python 3

    Just ran into this with @stefanv. This line:

    writer.write(notebook, codecs.getwriter('utf-8')(sys.stdout))
    

    aims to wrap sys.stdout in a unicode interface that will encode using UTF-8 before writing. But in Python 3, sys.stdout is already a unicode interface, so it encodes and tries to write bytes to something that's expecting unicode.

    We have Python 2 and 3 compatible code for this in nbconvert - feel free to copy and paste our function:

    https://github.com/jupyter/jupyter_nbconvert/blob/3a55808265c8b140cb483c374b5c6ccd464373d0/jupyter_nbconvert/utils/io.py#L12

    You'd use this as:

    writer.write(notebook, unicode_std_stream('stdout'))
    
    opened by takluyver 7
  • match argument handling

    match argument handling

    I'm having trouble setting the match argument to a specific language. For example

    notedown --nomagic --match=stata StataIntro.md > StataIntro.ipynb
    Traceback (most recent call last):
      File "/home/izahn/.local/bin/notedown", line 11, in <module>
        sys.exit(app())
      File "/home/izahn/.local/lib/python3.5/site-packages/notedown/main.py", line 312, in app
        main(args, help=parser.format_help())
      File "/home/izahn/.local/lib/python3.5/site-packages/notedown/main.py", line 275, in main
        notebook = reader.read(ip, as_version=4)
      File "/usr/lib/python3.5/site-packages/nbformat/v4/rwbase.py", line 89, in read
        return self.reads(nbs, **kwargs)
      File "/home/izahn/.local/lib/python3.5/site-packages/notedown/notedown.py", line 376, in reads
        return self.to_notebook(s, **kwargs)
      File "/home/izahn/.local/lib/python3.5/site-packages/notedown/notedown.py", line 368, in to_notebook
        cells = self.create_cells(blocks)
      File "/home/izahn/.local/lib/python3.5/site-packages/notedown/notedown.py", line 347, in create_cells
        markdown_cell = self.create_markdown_cell(block)
      File "/home/izahn/.local/lib/python3.5/site-packages/notedown/notedown.py", line 323, in create_markdown_cell
        markdown_cell = nbbase.new_markdown_cell(**kwargs)
      File "/usr/lib/python3.5/site-packages/nbformat/v4/nbbase.py", line 112, in new_markdown_cell
        validate(cell, 'markdown_cell')
      File "/usr/lib/python3.5/site-packages/nbformat/v4/nbbase.py", line 23, in validate
        return validate(node, ref=ref, version=nbformat)
      File "/usr/lib/python3.5/site-packages/nbformat/validator.py", line 156, in validate
        raise better_validation_error(e, version, version_minor)
      File "/usr/lib/python3.5/site-packages/nbformat/validator.py", line 152, in validate
        return validator.validate(nbjson, {'$ref' : '#/definitions/%s' % ref})
      File "/usr/lib/python3.5/site-packages/jsonschema/validators.py", line 123, in validate
        raise error
    jsonschema.exceptions.ValidationError: None is not valid under any of the given schemas
    
    Failed validating 'oneOf' in schema['properties']['source']:
        {'oneOf': [{'type': 'string'},
                   {'items': {'type': 'string'}, 'type': 'array'}]}
    
    On instance['source']:
        None
    

    Any help will be appreciated.

    opened by izahn 6
  • Allow overriding of cell timeout setting

    Allow overriding of cell timeout setting

    When executing a long-running cell, notedown times out.

    notedown --match fenced --run markdown/ch7.markdown --output build_ipynb/ch7.ipynb
    ERROR:root:Timeout waiting for execute reply
    ERROR:root:failed to run cell: Empty()
    ERROR:root:# dm6.fa.gz can be downloaded from ftp://hgdownload.cse.ucsc.edu/goldenPath/dm6/bigZips/
    # Unzip before using: gzip -d dm6.fa.gz
    dm = 'data/dm6.fa'
    model = tz.pipe(dm, genome, markov)
    Traceback (most recent call last):
      File "/Users/hdashnow/anaconda/envs/elegant/bin/notedown", line 9, in <module>
        load_entry_point('notedown==1.4.4', 'console_scripts', 'notedown')()
      File "/Users/hdashnow/anaconda/envs/elegant/lib/python3.4/site-packages/notedown/main.py", line 275, in app
        main(args, help=parser.format_help())
      File "/Users/hdashnow/anaconda/envs/elegant/lib/python3.4/site-packages/notedown/main.py", line 241, in main
        run(notebook)
      File "/Users/hdashnow/anaconda/envs/elegant/lib/python3.4/site-packages/notedown/notedown.py", line 43, in run
        notebook, resources = executor.preprocess(notebook, resources={})
      File "/Users/hdashnow/anaconda/envs/elegant/lib/python3.4/site-packages/IPython/nbconvert/preprocessors/execute.py", line 39, in preprocess
        nb, resources = super(ExecutePreprocessor, self).preprocess(nb, resources)
      File "/Users/hdashnow/anaconda/envs/elegant/lib/python3.4/site-packages/IPython/nbconvert/preprocessors/base.py", line 70, in preprocess
        nb.cells[index], resources = self.preprocess_cell(cell, resources, index)
      File "/Users/hdashnow/anaconda/envs/elegant/lib/python3.4/site-packages/IPython/nbconvert/preprocessors/execute.py", line 49, in preprocess_cell
        outputs = self.run_cell(cell)
      File "/Users/hdashnow/anaconda/envs/elegant/lib/python3.4/site-packages/IPython/nbconvert/preprocessors/execute.py", line 63, in run_cell
        msg = self.kc.shell_channel.get_msg(timeout=self.timeout)
      File "/Users/hdashnow/anaconda/envs/elegant/lib/python3.4/site-packages/IPython/kernel/blocking/channels.py", line 57, in get_msg
        raise Empty
    queue.Empty
    

    It looks like the ExecutePreprocessor has a settable timeout (defaulting to 30 seconds) but I don't understand how to set it...

    opened by jni 6
  • notedown doesn't work with Jupter Notebook 5.1.0

    notedown doesn't work with Jupter Notebook 5.1.0

    Whenever I run notedown it returns with this error

    $ notedown 
    Traceback (most recent call last):
      File "/home/adonese/anaconda3/bin/notedown", line 7, in <module>
        from notedown.main import app
      File "/home/adonese/anaconda3/lib/python3.5/site-packages/notedown/__init__.py", line 8, in <module>
        from .contentsmanager import NotedownContentsManager
      File "/home/adonese/anaconda3/lib/python3.5/site-packages/notedown/contentsmanager.py", line 8, in <module>
        from notebook.services.contents.filemanager import FileContentsManager
      File "/home/adonese/anaconda3/lib/python3.5/site-packages/notebook/services/contents/filemanager.py", line 21, in <module>
        from .manager import ContentsManager
      File "/home/adonese/anaconda3/lib/python3.5/site-packages/notebook/services/contents/manager.py", line 37, in <module>
        class ContentsManager(LoggingConfigurable):
      File "/home/adonese/anaconda3/lib/python3.5/site-packages/notebook/services/contents/manager.py", line 69, in ContentsManager
        untitled_notebook = Unicode(_("Untitled"), config=True,
    NameError: name '_' is not defined
    

    The same applied when I try to import it from python shell.

    opened by adonese 5
  • jupyter support

    jupyter support

    Work on supporting Jupyter and IPython 4.

    The transition from IPython 3 to 4 was marked by the splitting of the monolithic IPython packages into a number of smaller packages (e.g. nbformat and nbconvert are now standalone).

    There were a few import changes (which produced a warning if you used the old import path) and also some changes to the internals of nbconvert (the API of which I wasn't using properly). These have been addressed and this branch is now passing all tests.

    However, this was done at the expense of IPython 3 compatibility (for ease of hacking). This shouldn't be hard to re-implement - I think it just needs import shims putting in.

    TODO:

    • [x] put in import shims to permit IPython 3
    • [x] does nbconvert usage change from 3 to 4?
    opened by aaren 5
  • notedown: command not found

    notedown: command not found

    I'm on OSX 10.10.3 (Yosemite)

    • Python version / location

    ~> python -V Python 2.7.10 :: Anaconda 2.3.0 (x86_64) ~> which python //anaconda/bin/python

    • iPython version / location

    ~> which ipython //anaconda/bin/ipython ~> ipython -V 3.2.0

    • notedown

    pip install note down

    Appears to work fine, and installs at:

    /anaconda/lib/python2.7/site-packages

    import notedown

    Works fine within ipython

    But when I try to call notedown I get an error:

    -bash: notedown: command not found

    Any ideas on how to fix this? Deep thanks!

    opened by toomey8 5
  • support of cell metadata in markdown

    support of cell metadata in markdown

    I am interested in supporting notebook cell metadata in the markdown file.This would have benefits:

    • It would maintain metadata like slideshow information for cells and allow one to write a slide show in markdown originally.
    • The would allow true round trip fidelity ipynb -> markdown -> ipynb

    I am not sure about the best way to do this, but I can imagine abusing markdown links somewhat

    each markdown cell would be allowed to have a "comment:"

    [//]: # ( "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide"} } )
    ### The markdown content level three header
    content plain text...
    

    The code blocks would be handled as they are in notedown, but would add an optional metadata tag:

    ```{.python, "metadata" : {"collapsed": false, "slideshow": { "slide_type": "fragment"} } }
    import numpy, pandas
    y = 3 * 4
    ```
    

    This may be an answer to #47 I am not married to the idea of using this particular system, but it would seem it would be ignored by a typical common-mark/markdown renderer and would not be too hard to implement.

    opened by cleemesser 4
  • Fenced code blocks: Compatibility with pandoc

    Fenced code blocks: Compatibility with pandoc

    When converting Rst to markdown, and writing a fenced code block, pandoc insert a space between the triple quotes and the options:

    mistral-/tmp>cat bla.rst 
    .. code:: python
    
        1+1
    
    mistral-/tmp>pandoc bla.rst -t markdown
    ``` {.sourceCode .python}
    1+1
    ```
    

    However, when converting this further to a notebook, notedown seems to get confused by this additional space, and does not produce a block as desired.

    Sorry, that later part is not super specific. I'll provide a complete example later on, but right now I broke notedown on my machine while hacking around ...

    Would it be possible to tweak notedown's regexp to tolerate this additional space?

    Btw: thanks a lot for notedown! That's going to be super useful in my Rst -> notebook workflow!

    opened by nthiery 4
  • Major but far-for-complete refactoring (stilll better to use jupytext)

    Major but far-for-complete refactoring (stilll better to use jupytext)

    Original repo is dead and has only one semialive fork (with changed default behavior). This is the fork of original repo with 2 last pull request applied (#93, #96) and refactoring.

    Also there is no R support.

    I needed it for https://github.com/szymonmaszke/vimpyter but switched to https://github.com/goerz/jupytext.vim

    jupytext also can be used with CLI: https://jupytext.readthedocs.io/en/latest/using-cli.html

    opened by banderlog 0
  • fix: display_priority template is deprecatedand throws an error

    fix: display_priority template is deprecatedand throws an error

    {{ resources.deprecated("This template is deprecated, please use base/display_priority.j2") }}
    {%- extends 'display_priority.j2' -%}
    

    Fix for https://github.com/aaren/notedown/issues/95

    opened by banderlog 2
  • Used nbconverter template is deprecated now and throws an error

    Used nbconverter template is deprecated now and throws an error

    When I am trying to run notedown in a fresh virtualenv it drops jinja error:

    ./venv/bin/notedown tmp.ipynb --to markdown --strip > output.md
    Traceback (most recent call last):
      File "./venv/bin/notedown", line 8, in <module>
        sys.exit(app())
      File "/home/bkaba/SoftServe/hrm_translation/PD/notebooks/venv/lib/python3.8/site-packages/notedown/main.py", line 312, in app
        main(args, help=parser.format_help())
      File "/home/bkaba/SoftServe/hrm_translation/PD/notebooks/venv/lib/python3.8/site-packages/notedown/main.py", line 301, in main
        writer.write(notebook, unicode_std_stream('stdout'))
      File "/home/bkaba/SoftServe/hrm_translation/PD/notebooks/venv/lib/python3.8/site-packages/nbformat/v4/rwbase.py", line 124, in write
        nbs = self.writes(nb, **kwargs)
      File "/home/bkaba/SoftServe/hrm_translation/PD/notebooks/venv/lib/python3.8/site-packages/notedown/notedown.py", line 434, in writes
        body, resources = self.exporter.from_notebook_node(notebook)
      File "/home/bkaba/SoftServe/hrm_translation/PD/notebooks/venv/lib/python3.8/site-packages/nbconvert/exporters/templateexporter.py", line 384, in from_notebook_node
        output = self.template.render(nb=nb_copy, resources=resources)
      File "/home/bkaba/SoftServe/hrm_translation/PD/notebooks/venv/lib/python3.8/site-packages/jinja2/environment.py", line 1090, in render
        self.environment.handle_exception()
      File "/home/bkaba/SoftServe/hrm_translation/PD/notebooks/venv/lib/python3.8/site-packages/jinja2/environment.py", line 832, in handle_exception
        reraise(*rewrite_traceback_stack(source=source))
      File "/home/bkaba/SoftServe/hrm_translation/PD/notebooks/venv/lib/python3.8/site-packages/jinja2/_compat.py", line 28, in reraise
        raise value.with_traceback(tb)
      File "/home/bkaba/SoftServe/hrm_translation/PD/notebooks/venv/lib/python3.8/site-packages/notedown/templates/markdown.tpl", line 1, in top-level template code
        {% extends 'display_priority.tpl' %}
      File "/home/bkaba/.local/share/jupyter/nbconvert/templates/compatibility/display_priority.tpl", line 2, in top-level template code
        {%- extends 'display_priority.j2' -%}
    jinja2.exceptions.TemplateNotFound: display_priority.j2
    

    Linked to this: https://github.com/jupyter/nbconvert/issues/1369

    opened by banderlog 0
  • Error while saving file: foo.md display_priority.j2

    Error while saving file: foo.md display_priority.j2

    Hello. Firstly, thank you so much for this extension. It really is awesome!

    We have used it for quite some days/months with the jupyter/pyspark-notebook docker image. We noticed it started to raise an error when we tried to save the .md notebooks inside jupyter:

    screenshot

    Stacktrace:

    foo_bar_1  | [E 14:38:26.584 NotebookApp] Error while saving file: foo.md display_priority.j2
    foo_bar_1  |     Traceback (most recent call last):
    foo_bar_1  |       File "/opt/conda/lib/python3.8/site-packages/notebook/services/contents/filemanager.py", line 476, in save
    foo_bar_1  |         self._save_notebook(os_path, nb)
    foo_bar_1  |       File "/opt/conda/lib/python3.8/site-packages/notedown/contentsmanager.py", line 59, in _save_notebook
    foo_bar_1  |         markdown = convert(nbjson,
    foo_bar_1  |       File "/opt/conda/lib/python3.8/site-packages/notedown/main.py", line 104, in convert
    foo_bar_1  |         return writer.writes(notebook)
    foo_bar_1  |       File "/opt/conda/lib/python3.8/site-packages/notedown/notedown.py", line 434, in writes
    foo_bar_1  |         body, resources = self.exporter.from_notebook_node(notebook)
    foo_bar_1  |       File "/opt/conda/lib/python3.8/site-packages/nbconvert/exporters/templateexporter.py", line 384, in from_notebook_node
    foo_bar_1  |         output = self.template.render(nb=nb_copy, resources=resources)
    foo_bar_1  |       File "/opt/conda/lib/python3.8/site-packages/jinja2/environment.py", line 1090, in render
    foo_bar_1  |         self.environment.handle_exception()
    foo_bar_1  |       File "/opt/conda/lib/python3.8/site-packages/jinja2/environment.py", line 832, in handle_exception
    foo_bar_1  |         reraise(*rewrite_traceback_stack(source=source))
    foo_bar_1  |       File "/opt/conda/lib/python3.8/site-packages/jinja2/_compat.py", line 28, in reraise
    foo_bar_1  |         raise value.with_traceback(tb)
    foo_bar_1  |       File "/opt/conda/lib/python3.8/site-packages/notedown/templates/markdown.tpl", line 1, in top-level template code
    foo_bar_1  |         {% extends 'display_priority.tpl' %}
    foo_bar_1  |       File "/opt/conda/share/jupyter/nbconvert/templates/compatibility/display_priority.tpl", line 2, in top-level template code
    foo_bar_1  |         {%- extends 'display_priority.j2' -%}
    foo_bar_1  |     jinja2.exceptions.TemplateNotFound: display_priority.j2
    foo_bar_1  | [W 14:38:26.585 NotebookApp] 500 PUT /api/contents/foo.md (172.22.0.1): Unexpected error while saving file: foo.md display_priority.j2
    foo_bar_1  | [W 14:38:26.585 NotebookApp] Unexpected error while saving file: foo.md display_priority.j2
    

    Setup

    Dockerfile

    FROM jupyter/pyspark-notebook
    
    RUN python -m pip install --upgrade --force-reinstall --ignore-installed pip
    ADD requirements.txt .
    RUN pip install --quiet -r requirements.txt
    
    RUN echo 'c.NotebookApp.contents_manager_class = "notedown.NotedownContentsManager"' >> ~/.jupyter/jupyter_notebook_config.py
    

    Dependencies

    Jinja2                        2.11.2
    ...
    jupyter-client                6.1.7
    jupyter-core                  4.6.3
    jupyter-telemetry             0.0.5
    jupyterhub                    1.1.0
    jupyterlab                    2.2.8
    jupyterlab-pygments           0.1.2
    jupyterlab-server             1.2.0
    jupyterthemes                 0.20.0
    ...
    notebook                      6.1.4
    
    
    opened by lucasdavid 0
  • fedora 32 not install

    fedora 32 not install

    ERROR: Command errored out with exit status 1: command: /usr/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-kqpl_o0m/pandoc-attributes/setup.py'"'"'; file='"'"'/tmp/pip-install-kqpl_o0m/pandoc-attributes/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(file);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-install-kqpl_o0m/pandoc-attributes/pip-egg-info cwd: /tmp/pip-install-kqpl_o0m/pandoc-attributes/ Complete output (9 lines): /tmp/pip-install-kqpl_o0m/pandoc-attributes/setup.py:5: DeprecationWarning: Due to possible ambiguity, 'convert()' is deprecated. Use 'convert_file()' or 'convert_text()'. long_description = pypandoc.convert('README.md', 'rst') Traceback (most recent call last): File "", line 1, in File "/tmp/pip-install-kqpl_o0m/pandoc-attributes/setup.py", line 5, in long_description = pypandoc.convert('README.md', 'rst') File "/usr/lib/python3.8/site-packages/pypandoc/init.py", line 66, in convert raise RuntimeError("Format missing, but need one (identified source as text as no " RuntimeError: Format missing, but need one (identified source as text as no file with that name was found). ---------------------------------------- ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

    opened by it-ces 0
Owner
Aaron O'Leary
Aaron O'Leary
A markdown lexer and parser which gives the programmer atomic control over markdown parsing to html.

A markdown lexer and parser which gives the programmer atomic control over markdown parsing to html.

stonepresto 4 Aug 13, 2022
Toci is a markdown tool to generate an outline from a given Jupyter notebook.

Toci is a markdown tool to generate an outline from a given Jupyter notebook. It traverses the markdown cells of a given ipynb file to form a toc for you.

Hakan Özler 7 Jan 22, 2022
A fast yet powerful Python Markdown parser with renderers and plugins.

Mistune v2 A fast yet powerful Python Markdown parser with renderers and plugins. NOTE: This is the re-designed v2 of mistune. Check v1 branch for ear

Hsiaoming Yang 2.2k Jan 4, 2023
A Python implementation of John Gruber’s Markdown with Extension support.

Python-Markdown This is a Python implementation of John Gruber's Markdown. It is almost completely compliant with the reference implementation, though

Python-Markdown 3.1k Dec 30, 2022
A Python implementation of John Gruber’s Markdown with Extension support.

Python-Markdown This is a Python implementation of John Gruber's Markdown. It is almost completely compliant with the reference implementation, though

Python-Markdown 3.1k Dec 31, 2022
Static site generator that supports Markdown and reST syntax. Powered by Python.

Pelican Pelican is a static site generator, written in Python. Write content in reStructuredText or Markdown using your editor of choice Includes a si

Pelican dev team 11.3k Jan 5, 2023
Extensions for Python Markdown

PyMdown Extensions Extensions for Python Markdown. Documentation Extension documentation is found here: https://facelessuser.github.io/pymdown-extensi

Isaac Muse 685 Jan 1, 2023
markdown2: A fast and complete implementation of Markdown in Python

Markdown is a light text markup format and a processor to convert that to HTML. The originator describes it as follows: Markdown is a text-to-HTML con

Trent Mick 2.4k Dec 30, 2022
Convert HTML to Markdown-formatted text.

html2text html2text is a Python script that converts a page of HTML into clean, easy-to-read plain ASCII text. Better yet, that ASCII also happens to

Alireza Savand 1.3k Dec 31, 2022
Comprehensive Markdown plugin built for Django

Django MarkdownX Django MarkdownX is a comprehensive Markdown plugin built for Django, the renowned high-level Python web framework, with flexibility,

neutronX 740 Jan 8, 2023
Awesome Django Markdown Editor, supported for Bootstrap & Semantic-UI

martor Martor is a Markdown Editor plugin for Django, supported for Bootstrap & Semantic-UI. Features Live Preview Integrated with Ace Editor Supporte

null 659 Jan 4, 2023
Markdown parser, done right. 100% CommonMark support, extensions, syntax plugins & high speed. Now in Python!

markdown-it-py Markdown parser done right. Follows the CommonMark spec for baseline parsing Configurable syntax: you can add new rules and even replac

Executable Books 398 Dec 24, 2022
A fast, extensible and spec-compliant Markdown parser in pure Python.

mistletoe mistletoe is a Markdown parser in pure Python, designed to be fast, spec-compliant and fully customizable. Apart from being the fastest Comm

Mi Yu 546 Jan 1, 2023
Livemark is a static page generator that extends Markdown with interactive charts, tables, and more.

Livermark This software is in the early stages and is not well-tested Livemark is a static site generator that extends Markdown with interactive chart

Frictionless Data 86 Dec 25, 2022
A super simple script which uses the GitHub API to convert your markdown files to GitHub styled HTML site.

A super simple script which uses the GitHub API to convert your markdown files to GitHub styled HTML site.

Çalgan Aygün 213 Dec 22, 2022
Remarkable Markdown Debian Package Fix

Remarkable debian package fix For some reason the Debian package for remarkable markdown editor has not been made to install properly on Ubuntu 20.04

Eric Seifert 37 Jan 2, 2023
Read a list in markdown and do something with it!

Markdown List Reader A simple tool for reading lists in markdown. Usage Begin by running the mdr.py file and input either a markdown string with the -

Esteban Garcia 3 Sep 13, 2021
Lightweight Markdown dialect for Python desktop apps

Litemark is a lightweight Markdown dialect originally created to be the markup language for the Codegame Platform project. When you run litemark from the command line interface without any arguments, the Litemark Viewer opens and displays the rendered demo.

null 10 Apr 23, 2022
A Discord Bot for rendering Markdown

Markdown to PDF Bot A discord bot that accepts markdown files (or messages) and displays them as images. Prerequisite To install, you must have have :

null 1 Oct 21, 2021