Skip to content

docs src configuration

github-actions[bot] edited this page Feb 3, 2026 · 1 revision

Configuration

Configuration for yardang is driven from the pyproject.toml, either via standard sections like project or from the dedicated tool.yardang section. Each option below corresponds to the Sphinx configuration.

Here is yardang’s own configuration, in pyproject.toml

[tool.yardang] root = "docs/src/home.md" cname = "yardang.python-templates.dev" pages = [     "docs/src/overview.md",     "docs/src/installation.md",     "docs/src/configuration.md", ] use-autoapi = true 

The project name is taken from the standard section, or from the cwd.

[project] name = "your project name" 

title

Same as name

module

The module title is taken from the name, replacing - with _, or from the cwd doing the same.

description

[project] description = "your project description" 

[project] authors = "your project authors" 

[project] version = "0.1.0" 

theme

Defaults to furo.

[tool.yardang] theme = "furo" 

Defaults to furo.

[tool.yardang] theme = "furo" 

root

The root page to use, defaults to README.md.

[tool.yardang] root = "docs/src/index.md" 

cname

If set, will generate a CNAME file for GitHub Pages custom domains.

[tool.yardang] cname = "yardang.python-templates.dev" 

pages

Pages to include in the contents tree.

[tool.yardang] pages = [     "docs/src/overview.md",     "docs/src/installation.md",     "docs/src/configuration.md", ] 

use_autoapi

Whether or not to use Sphinx AutoAPI. NOTE: it is recommended to manually autodoc your code.

[tool.yardang] use-autoapi = true 

Sphinx Options

[tool.yardang] html_theme_options = {} html_static_path = [] html_css_files = [] html_js_files = [] source_suffix = [] exclude_patterns = [] language = "en" pygments_style = "sphinx" 

[tool.yardang] myst_enable_extensions = ["amsmath", "colon_fence", "dollarmath", "html_image"] myst_fence_as_directive = ["mermaid"] 

[tool.yardang] nb_execution_mode = "off" nb_execution_excludepatterns = [] 

Notebooks can be included with:

```{eval-rst} .. toctree::   :maxdepth: 1    ../notebooks/example ``` 

An example follows:

Autodoc Pydantic arguments

Configuration for Autodoc Pydantic.

[tool.yardang] autodoc_pydantic_model_show_config_summary = false autodoc_pydantic_model_show_validator_summary = false autodoc_pydantic_model_show_validator_members = false autodoc_pydantic_field_list_validators = false autodoc_pydantic_field_show_constraints = false autodoc_pydantic_model_member_order = "bysource" autodoc_pydantic_model_show_json = true autodoc_pydantic_settings_show_json = false autodoc_pydantic_model_show_field_summary = false 

Mermaid

GitHub Admonitions

GitHub admonitions are automatically translated to sphinx.

NOTE

Note markdown content

IMPORTANT

Important content

WARNING

Warning content

Breathe/Doxygen Integration

Yardang provides integration with Breathe for documenting C/C++ code using Doxygen. To use this feature, install yardang with the breathe extra:

pip install yardang[breathe] 

All breathe configuration is under [tool.yardang.breathe].

projects

A dictionary mapping project names to their Doxygen XML output directories.

[tool.yardang.breathe] projects = { myproject = "docs/doxygen/xml", another = "path/to/xml" } 

default-project

The default project to use when no project is specified in breathe directives.

[tool.yardang.breathe] default-project = "myproject" 

domain-by-extension

Map file extensions to Sphinx domains.

[tool.yardang.breathe] domain-by-extension = { "hpp" = "cpp", "h" = "cpp", "py" = "py" } 

domain-by-file-pattern

Map file patterns to Sphinx domains.

[tool.yardang.breathe] domain-by-file-pattern = { "*.hpp" = "cpp" } 

projects-source

Configure source files for automatic Doxygen XML generation.

[tool.yardang.breathe] projects-source = { auto = ["src", ["file1.hpp", "file2.hpp"]] } 

build-directory

The directory where Doxygen XML is built.

[tool.yardang.breathe] build-directory = "build/doxygen" 

default-members

Default member visibility for doxygenclass directives.

[tool.yardang.breathe] default-members = ["members", "protected-members", "private-members"] 

show-define-initializer

Show the initializer value for #define macros.

[tool.yardang.breathe] show-define-initializer = true 

show-enumvalue-initializer

Show the initializer value for enum values.

[tool.yardang.breathe] show-enumvalue-initializer = true 

show-include

Show the #include directive for documented entities.

[tool.yardang.breathe] show-include = true 

implementation-filename-extensions

List of file extensions considered as implementation files.

[tool.yardang.breathe] implementation-filename-extensions = [".c", ".cc", ".cpp"] 

doxygen-config-options

Additional Doxygen configuration options for auto-generated XML.

[tool.yardang.breathe] doxygen-config-options = { EXTRACT_ALL = "YES", QUIET = "YES" } 

doxygen-aliases

Doxygen aliases for custom commands.

[tool.yardang.breathe] doxygen-aliases = { "myalias" = "Custom documentation text" } 

use-project-refids

Use project-qualified reference IDs to avoid conflicts.

[tool.yardang.breathe] use-project-refids = true 

order-parameters-first

Order function parameters before other members in documentation.

[tool.yardang.breathe] order-parameters-first = true 

separate-member-pages

Generate separate pages for each class member.

[tool.yardang.breathe] separate-member-pages = false 

Complete Example

Here’s a complete example configuration for a C++ project:

[tool.yardang] title = "My C++ Library" root = "docs/index.md" pages = ["docs/api.md", "docs/examples.md"] use-autoapi = false  [tool.yardang.breathe] projects = { mylib = "docs/doxygen/xml" } default-project = "mylib" domain-by-extension = { "hpp" = "cpp", "cpp" = "cpp", "h" = "cpp" } show-define-initializer = true show-enumvalue-initializer = true show-include = true use-project-refids = true 

Then in your documentation files, you can use breathe directives:

# API Reference  ## MyClass  \`\`\`{doxygenclass} MyNamespace::MyClass :members: :protected-members: \`\`\`  ## Functions  \`\`\`{doxygenfunction} MyNamespace::myFunction \`\`\` 

Sphinx-Rust Integration

Yardang provides integration with sphinx-rust for documenting Rust code. To use this feature, install yardang with the sphinx-rust extra:

pip install yardang[sphinx-rust] 

All sphinx-rust configuration is under [tool.yardang.sphinx-rust].

crates

A list of paths to Rust crates to document.

[tool.yardang.sphinx-rust] crates = [     "path/to/crate1",     "path/to/crate2", ] 

doc-formats

A dictionary mapping crate names to their docstring format. Valid values are "restructuredtext" (default) or "myst-nb" (for markdown docstrings).

[tool.yardang.sphinx-rust] doc-formats = { mycrate = "myst-nb" } 

Note: When using myst_nb as your Sphinx parser (which yardang uses by default), use "myst-nb" instead of "markdown" for markdown docstrings.

viewcode

Enable links to the source code for documented items. Defaults to true.

[tool.yardang.sphinx-rust] viewcode = true 

Complete Example

Here’s a complete example configuration for a Rust project:

[tool.yardang] title = "My Rust Library" root = "docs/index.md" pages = ["docs/api.md", "docs/examples.md"] use-autoapi = false  [tool.yardang.sphinx-rust] crates = [     "crates/mylib",     "crates/mylib-utils", ] doc-formats = { mylib = "myst-nb", "mylib-utils" = "restructuredtext" } viewcode = true 

Then in your documentation files, you can use sphinx-rust directives:

# API Reference  ## Document a Crate  \`\`\`{eval-rst} .. rust:crate:: mylib  \`\`\`  ## Document Individual Items  \`\`\`{eval-rst} .. rust:struct:: mylib::MyStruct  \`\`\`  \`\`\`{eval-rst} .. rust:enum:: mylib::MyEnum  \`\`\`  \`\`\`{eval-rst} .. rust:function:: mylib::my_function  \`\`\` 

Sphinx-JS Integration

Yardang provides integration with sphinx-js for documenting JavaScript and TypeScript code. To use this feature, you also need JSDoc or TypeDoc installed:

# For JavaScript projects npm install jsdoc  # For TypeScript projects npm install typedoc 

All sphinx-js configuration is under [tool.yardang.sphinx-js].

js-source-path

A list of directories containing your JS/TS source files, relative to the project root. This is required to enable sphinx-js.

[tool.yardang.sphinx-js] js-source-path = ["src", "lib"] 

Or as a single path:

[tool.yardang.sphinx-js] js-source-path = "src" 

js-language

The language of your source files. Use "javascript" (default) or "typescript".

[tool.yardang.sphinx-js] js-language = "typescript" 

root-for-relative-js-paths

The root directory for resolving relative JS entity paths. Required if you have multiple js-source-path entries.

[tool.yardang.sphinx-js] root-for-relative-js-paths = "src" 

jsdoc-config-path

Path to a JSDoc configuration file.

[tool.yardang.sphinx-js] jsdoc-config-path = "jsdoc.json" 

jsdoc-tsconfig-path

Path to a TypeScript configuration file (for TypeDoc).

[tool.yardang.sphinx-js] jsdoc-tsconfig-path = "tsconfig.json" 

ts-type-bold

Make TypeScript types bold in the output. Defaults to false.

[tool.yardang.sphinx-js] ts-type-bold = true 

Complete Example

Here’s a complete example configuration for a TypeScript project:

[tool.yardang] title = "My TypeScript Library" root = "docs/index.md" pages = ["docs/api.md", "docs/examples.md"] use-autoapi = false  [tool.yardang.sphinx-js] js-language = "typescript" js-source-path = ["src"] jsdoc-tsconfig-path = "tsconfig.json" ts-type-bold = true 

Then in your documentation files, you can use sphinx-js directives:

# API Reference  ## Functions  \`\`\`{js:autofunction} myFunction \`\`\`  ## Classes  \`\`\`{js:autoclass} MyClass :members: \`\`\`  ## Modules  \`\`\`{js:automodule} myModule \`\`\` 

GitHub Wiki Integration

Yardang can generate GitHub Wiki compatible markdown documentation using sphinx-markdown-builder. This allows you to publish your documentation to a GitHub Wiki in addition to (or instead of) a static HTML site.

To generate wiki output, use the yardang wiki command instead of yardang build.

Wiki output is configured in the [tool.yardang.wiki] section:

[tool.yardang.wiki] enabled = true output-dir = "docs/wiki" generate-sidebar = true generate-footer = true fix-links = true footer-docs-url = "https://your-project.dev" footer-repo-url = "https://github.com/your-org/your-project" markdown-flavor = "github" 

enabled

Enable the markdown builder extension. Must be true to use yardang wiki. Defaults to false.

[tool.yardang.wiki] enabled = true 

output-dir

Output directory for the generated markdown files. Defaults to "docs/wiki".

[tool.yardang.wiki] output-dir = "docs/wiki" 

generate-sidebar

Generate a _Sidebar.md file for wiki navigation. Defaults to true.

[tool.yardang.wiki] generate-sidebar = true 

generate-footer

Generate a _Footer.md file with links to docs and repo. Defaults to true.

[tool.yardang.wiki] generate-footer = true 

fix-links

Fix internal markdown links for GitHub Wiki compatibility. Defaults to true.

[tool.yardang.wiki] fix-links = true 

footer-docs-url

URL to the full documentation site (for the footer).

[tool.yardang.wiki] footer-docs-url = "https://your-project.dev" 

footer-repo-url

URL to the repository (for the footer).

[tool.yardang.wiki] footer-repo-url = "https://github.com/your-org/your-project" 

markdown-flavor

Markdown flavor to use. Set to "github" for GitHub-flavored markdown. Defaults to "github".

[tool.yardang.wiki] markdown-flavor = "github" 

markdown-anchor-sections

Add anchors before each section. Defaults to true.

[tool.yardang.wiki] markdown-anchor-sections = true 

markdown-anchor-signatures

Add anchors before each function/class signature. Defaults to true.

[tool.yardang.wiki] markdown-anchor-signatures = true 

markdown-bullet

Bullet character to use for lists. Defaults to "-".

[tool.yardang.wiki] markdown-bullet = "-" 

Complete Example

[tool.yardang] title = "My Project" root = "docs/index.md" pages = ["docs/overview.md", "docs/api.md"]  [tool.yardang.wiki] enabled = true output-dir = "docs/wiki" generate-sidebar = true generate-footer = true footer-docs-url = "https://myproject.dev" footer-repo-url = "https://github.com/myorg/myproject" markdown-flavor = "github" 

Usage

Generate GitHub Wiki output:

yardang wiki 

The output will be in the docs/wiki/ directory (or the configured output directory). To publish to your GitHub Wiki:

# Clone your wiki repository git clone https://github.com/YOUR-ORG/YOUR-REPO.wiki.git  # Copy the generated markdown files cp -r docs/wiki/* YOUR-REPO.wiki/  # Commit and push cd YOUR-REPO.wiki git add . git commit -m "Update wiki documentation" git push 

The generated wiki includes:

  • Home.md - The main landing page (converted from index.md)
  • _Sidebar.md - Navigation sidebar with links to all pages
  • _Footer.md - Footer with links to documentation and repository
  • All documentation pages converted to GitHub-flavored markdown

Clone this wiki locally