Skip to main content

Elegant, flexible and fast dynamic report generation with python

Project description

This is a port of knitr ( and rmarkdown ( to python.

To start with, you can run the example overview document. To convert to all defined output formats, run knitpy --to="all" -- examples\knitpy_overview.pymd. This will produce a html, docx and pdf output (if you have pdflatex in path). You can view a markdown rendered and a html rendered version of this file. It’s not yet as pretty as the knitr version…

For a description of the code format see and replace {r <r style options>} by {python <python style options>} and of course use python code blocks…

It uses the IPython kernel infrastructure to execute code, so all kernels for IPython are (aem… can potentially be) supported.

What works:

  • code blocks and inline code

  • plots are shown inline

  • knitpy filename.pymd will convert filename filename.pymd to the defaul output format html.

  • output formats html, pdf and docx. Change with --to=<format>

  • --to=all will convert to all export formats specified in the yaml header

  • code chunk arguments eval, results (apart form “hold”), include and echo

  • errors in code chunks are shown in the document

  • uses the IPython display framework, so rich output for objects implementing _repr_html_() or _repr_markdown_(). Mimetypes not understood by the final output format are automatically converted via pandoc.

  • config files: generate an empty one with knitpy --init --profile-dir=.

  • using it from python (-> your app/ ipython notebook): import knitpy; knitpy.render(filename.pymd, output="html") will convert filename.pymd to filename.html. output=all will convert to all document types (as specified in the YAML header of the document). The call will return a list of converted documents.

  • debugging with `--debug, --kernel-debug=True, --output-debug=True

What does not work (=everything else :-) ):

  • most YAML headers are currently ignored

  • some advertised command-line options are ignored

  • most code chunk arguments (apart from the ones above) are ignored

  • probably lots of other stuff…


  • fix the above…

  • refactor the parsing, so that it is line based

  • errors make more sense, because it knows the line (“block starting at line….”)

  • add some traits for the default pdflatex/pandoc executeable, so they don’t have to be in path

  • the final output has to configure the “includeable” markup docs

  • html in html

  • latex in html?

  • more arguments for code blocks

  • more output formats? -> make output format configurable

  • more unit-/outputtests…

  • codeblocks + inline

  • yaml

  • errors

  • pandoc caller (via mocks?)

  • Documentation

  • what works? what is not supported?

  • differences to rmarkdown / knitr?

  • implement more kernel engines (R…) and make it possible to supply/change ones (for installed kernels for python2/3 or coda environments)

  • implement a nice default html template

  • Try

  • implement “code tidying”

  • maybe use

  • use metadata in keep_md output (like rmarkdown does…

  • should output #<title>\n<author>\n<date> before the rest

  • remove the first yaml block, but keep everything else…

  • chunk caching

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution (25.6 kB view hashes)

Uploaded source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page