run markdown as python code
Project description
midgy
midgy transforms markdown to python modules and scripts.
command line interface
midgy README.md # run a readme file as python
midgy run README.md # run a readme file as python
midgy -m README # run a readme file as python
>>> from midgy.run import Markdown
>>> with Markdown():
... import README
>>> print(README)
<module 'README' from '...README.md'>
midgy is one half of pidgy, together they bring literate programming and computing afforandances to [python] and [IPython]. midgy is only concerned with the half of literate programming that translates a document to compiled code. midgy has a small api:
md_to_python- a function that converts a markdown document to pythonPython- a class that parses a markdown document and renders pythonmidgy.run.Markdown- is animportnbcontext manager that includes markdown documents when importing python modules.
tangling literate programs
literate programming is paradigm that treats code as literate, and vice versa; documents are evaluated on their literary and computational qualities. there are two actions defined in the framework of literate programming:
- render
: the act of translating the document into a programming language
:
midgyrenders markdown to python - weave
: the act of translating the document to a rendered format
:
pidgyweaves markdown to html, pdf, or md through thejinja2template system.
midgy focuses only on the render actions, and is extended in pidgy which implements the weave action.
extending the lexical analysis of CommonMark markdown
midgy extends the commonmark spec to reflect some common conventions.
- shebang
:
midgydocuments are programs and may begin with a shebang. - front matter : can be included at the beginning of a document or after a shebang. : either toml, json or yaml can be used
- doctest : a literate programming convention for including tests in python strings
- code : our code blocks are modified to be aware of doctests and include lexical diagnostics of the content
rendering tokenized CommonMark as Python
midgy translates markdown to python relative to indented code blocks. content between indented code blocks are wrapped a python block strings, and non-indented code blocks can be included in python programs. the translation from markdown to python is meant to require the fewest changes to have valid python code.
midgy goes to great lengths to generate a line-for-line translation of the markdown to python.
the line-for-line translation improves the error handling experience when using non-python documents as modules.
from sys import argv
print(argv)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file midgy-2023.2.14.tar.gz.
File metadata
- Download URL: midgy-2023.2.14.tar.gz
- Upload date:
- Size: 113.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: python-httpx/0.23.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aa9a491331d84aa6ea8ea26d0576add2e9ff7d5d9a2c74ab0dcbdf790f9ecd48
|
|
| MD5 |
18a0e20daafbeda799380032c51cbc0c
|
|
| BLAKE2b-256 |
6b6f78601e0fa5541245a221ab5722ea98dc2df15461a8dba55b1a6110e351fe
|
File details
Details for the file midgy-2023.2.14-py3-none-any.whl.
File metadata
- Download URL: midgy-2023.2.14-py3-none-any.whl
- Upload date:
- Size: 13.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: python-httpx/0.23.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5f5e7e2c58ec9434184a8ff79b711ef502aefbe3062fc478a211980296cca564
|
|
| MD5 |
ad118fcba7f8e577b493cef72dc2a351
|
|
| BLAKE2b-256 |
72c016fd42c544443c913814876618f5795cc42c7228f340e7b9b75ed249536c
|