Metadata-Version: 2.4
Name: doukimd
Version: 1.1.0
Summary: Markdown documentation with first-class Douki API references
License-Expression: BSD-3-Clause
License-File: LICENSE
Author: Ivan Ogasawara
Author-email: ivan.ogasawara@gmail.com
Requires-Python: >=3.10,<4
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Requires-Dist: Jinja2 (>=3.1.6,<4)
Requires-Dist: PyYAML (>=6,<7)
Requires-Dist: Pygments (>=2.18,<3)
Requires-Dist: atpublic (>=5,<6)
Requires-Dist: click (>=8.1,<9)
Requires-Dist: douki (>=0.12.1,<0.13)
Requires-Dist: griffe (>=1.15,<2)
Requires-Dist: jsonschema (>=4.23,<5)
Requires-Dist: markdown-it-py (>=3,<5)
Requires-Dist: mdit-py-plugins (>=0.4,<0.7)
Requires-Dist: nbformat (>=5.11,<6)
Requires-Dist: pluggy (>=1.5,<2)
Requires-Dist: plum-dispatch (>=2.5,<3)
Requires-Dist: pydantic (>=2.10,<3)
Requires-Dist: typeguard (>=4.4,<5)
Description-Content-Type: text/markdown

# DoukiMD

Markdown documentation with first-class
[Douki](https://github.com/arxlang/douki) API references.

DoukiMD is an opinionated static documentation engine for projects using
Douki YAML docstrings. This initial version supports Python projects.

## Run from source

```console
poetry install
poetry run doukimd build --config examples/basic/doukimd.yaml
```

Open `examples/basic/build/index.html` to view the generated site.
Use `doukimd check` to validate without writing files.

## Included

- Markdown and saved Jupyter notebook pages with validated metadata.
- Opt-in Jinja in Markdown with project, page, data, and API metadata.
- Static Python API extraction and validation against Douki's shipped schema.
- Public re-exports, properties, data declarations, and callable variants.
- Named API source folders with per-page and per-block selection.
- Native API blocks, virtual API pages, and forward API references.
- Ordered navbar menus and product sidebars with source-scoped API trees.
- Page layouts, trusted HTML opt-in, local branding, and extra stylesheets.
- Local link and heading validation, assets, code highlighting, and JSON
  symbol and search inventories.
- Local browser search across guides, notebooks, and API sections.
- A bundled theme, local Jinja theme overrides, and explicit context plugins.
- Safe replacement of managed output after successful builds.

See [authoring and configuration](docs/usage.md) and the complete
[example project](examples/basic).

## Initial scope

Python 3.10–3.14 is supported. Handwritten modules, classes, and callables
require valid Douki docstrings. Data declarations can use their annotations
and class-field documentation. Source code is never imported or rewritten.
Arx collection requires a future frontend documentation adapter and is
explicitly rejected today. Inherited members,
incremental builds, preview serving, and cross-project links are follow-ups.

Notebooks render stored results without executing cells; interactive widgets
and notebook execution are outside the build.

## Development

```console
poetry run makim all.ci
poetry check --lock
```

Infrastructure is adapted from [Douki](https://github.com/arxlang/douki).
See [contributing](docs/contributing.md) for the pinned source and workflow.

