Metadata-Version: 2.1
Name: markdown-mdantic
Version: 1.3.3
Summary: Python-Markdown extension for rendering pydantic BaseModel as table
Home-page: https://github.com/frefreak/mdantic
Author: Xiangyu Zhu
Author-email: frefreak.zxy@gmail.com
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Topic :: Text Processing :: Filters
Classifier: Topic :: Text Processing :: Markup :: HTML
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Description-Content-Type: text/markdown
License-File: LICENSE

# Mdantic

This is an extension to [Python-Markdown](https://python-markdown.github.io/). It adds a new syntax so that you can reference a [pydantic](https://pydantic-docs.helpmanual.io/) `BaseModel` and translate its fields to a markdown table. (Get the name?) I originally make this to generate http api parameter tables with [mkdocs](https://www.mkdocs.org/), but you can use it for other stuffs if suitable.

The code itself is a direct modification to [markdown-include](https://github.com/cmacmackin/markdown-include) since they do similar things.

Notice: This project is still WIP and need more examples to adapt to most of the possible BaseModel models.

## Installation

Just use pip:

```
pip install markdown-mdantic
```

## Usage

Currently this module has only one config option: `init_code` which will
execute **any** python code in the environment when its `__init__` is called.
In this way you can do something like adding system path, django setup etc,
before run.

**Note**: Please note that the `init_code` thing is a huge security issue if
you run that with untrusted input. Use it with caution!


### mkdocs

example:

```yaml
markdown_extensions:
    mdantic:
        init_code: |
            import os
            import django
            os.environ.setdefault("DJANGO_SETTINGS_MODULE", "conf.default")
            django.setup()
```

Some time ago the extension name used here should be `markdown_mdantic`, but
after some point it seems there will only be one file after installation in
python's site-packages directory (mdantic.py) so now we should use the name
`mdantic`.

### reference the model

Each reference must be in one line, starts with `$pydantic: ` (notice the
single space after the colon), following the model import path which looks
lik `a.b.c.D` where `D` is the model class itself (which is subclass of `BaseModel`).

```markdown
**params**:

$pydantic: src.test.TestGetSchema

```

### customize output

The resulting table is rendered using [tabulate](https://pypi.org/project/tabulate/), in `github` style. Currently there is no config option to change this and the table headers. PR is welcomed.
