MkDocs Integration¶
Embed live Dataface boards and examples in your MkDocs site with fenced code
blocks handled by pymdownx.superfences.
Installation¶
Install MkDocs, pymdown-extensions, and Dataface in the same environment:
If you prefer the packaged convenience extra, dataface[mkdocs-plugin] still
installs the base MkDocs dependency set, but the supported embed path is the
fenced markdown handler documented below rather than a separate MkDocs plugin.
Configuration¶
Register the custom fences in your mkdocs.yml:
markdown_extensions: - pymdownx.superfences: custom_fences: - name: dataface class: dataface format: !!python/name:dataface.integrations.markdown.fence_dataface - name: dataface-example class: dataface-example format: !!python/name:dataface.integrations.markdown.fence_dataface_example
The handlers resolve file= paths against your project root. Inline YAML and
file= inputs are both supported. In Dataface's published docs, full runnable
examples are kept inline so the markdown stays self-contained.
Usage¶
Use dataface when you want a render-only embed:
Inline YAML also works:
Example Layouts¶
Use dataface-example when you want the YAML and render together:
Supported format= options:
side-by-side(default)stackedrender-onlyyaml-only
Example:
Playground Links¶
dataface-example blocks include playground links automatically. Inline YAML is
compressed into the playground URL; file-backed examples use the resolved YAML
source.
How It Works¶
- MkDocs parses fenced blocks through
pymdownx.superfences. - The Dataface fence handlers resolve either inline YAML or
file=input. - Dataface compiles and renders the face during the docs build.
- The rendered output is injected into the generated HTML.
- Render failures become visible error
<div>blocks instead of crashing the entire build.
Face Rendering API¶
If you are building another integration, open a project session and render directly:
from dataface.agent_api import ProjectSession
from dataface.core.dashboard import raise_on_dashboard_failure
session = ProjectSession.open("path/to/your/project")
try:
face = session.project.path("faces/overview.yml").read_face()
rendered = session.render_dashboard(face=face, format="svg")
raise_on_dashboard_failure(rendered)
svg = rendered.data # str for svg/html, bytes for png/pdf
finally:
session.close()
See the Integrations overview for the broader architecture.