Classes
RenderingPipeline
Coordinates the entire rendering process for content pages.
Orchestrates the complete rendering pi…
RenderingPipeline
Coordinates the entire rendering process for content pages.
Orchestrates the complete rendering pipeline from markdown parsing through template rendering to final HTML output. Manages thread-local parser instances for performance and integrates with dependency tracking for incremental builds.
Creation:
Direct instantiation: RenderingPipeline(site, dependency_tracker=None, ...)
- Created by RenderOrchestrator for page rendering
- One instance per worker thread (thread-local)
- Requires Site instance with config
Attributes
| Name | Type | Description |
|---|---|---|
site |
— | Site instance with config and xref_index |
parser |
— | Thread-local markdown parser (cached per thread) |
dependency_tracker |
— | Optional DependencyTracker for incremental builds |
quiet |
— | Whether to suppress per-page output |
build_stats |
— | Optional BuildStats for error collection Pipeline Stages: 1. Parse source content (Markdown, etc.) 2. Build Abstract Syntax Tree (AST) 3. Apply templates (Jinja2) 4. Render output (HTML) 5. Write to output directory |
Relationships |
— |
|
Methods 1
process_page
Process a single page through the entire rendering pipeline.
Executes all rend…
process_page
def process_page(self, page: Page) -> None
Process a single page through the entire rendering pipeline.
Executes all rendering stages: parsing, AST building, template rendering, and output writing. Uses cached parsed content when available.
Virtual pages (e.g., autodoc API pages) bypass markdown parsing and use pre-rendered HTML directly.
Parameters 1
page |
Page |
Page object to process. Must have source_path set. |
Internal Methods 20
__init__
Initialize the rendering pipeline.
Parser Selection:
Reads from config in …
__init__
def __init__(self, site: Any, dependency_tracker: Any = None, quiet: bool = False, build_stats: Any = None, build_context: Any | None = None, changed_sources: set[Path] | None = None) -> None
Initialize the rendering pipeline.
Parser Selection:
Reads from config in this order:
1. config['markdown_engine'] (legacy)
2. config['markdown']['parser'] (preferred)
3. Default: 'mistune' (recommended for speed)
Parser Caching:
Uses thread-local caching via get_thread_parser().
Creates ONE parser per worker thread, cached for reuse.
Parameters 6
site |
Any |
Site instance with config and xref_index |
dependency_tracker |
Any |
Optional tracker for incremental builds |
quiet |
bool |
If True, suppress per-page output |
build_stats |
Any |
Optional BuildStats object to collect warnings |
build_context |
Any | None |
Optional BuildContext for dependency injection |
changed_sources |
set[Path] | None |
_try_rendered_cache
Try to use rendered output cache. Returns True if cache hit.
_try_rendered_cache
def _try_rendered_cache(self, page: Page, template: str) -> bool
Try to use rendered output cache. Returns True if cache hit.
Parameters 2
page |
Page |
|
template |
str |
Returns
bool
_try_parsed_cache
Try to use parsed content cache. Returns True if cache hit.
_try_parsed_cache
def _try_parsed_cache(self, page: Page, template: str, parser_version: str) -> bool
Try to use parsed content cache. Returns True if cache hit.
Parameters 3
page |
Page |
|
template |
str |
|
parser_version |
str |
Returns
bool
_parse_content
Parse page content through markdown parser.
_parse_content
def _parse_content(self, page: Page) -> None
Parse page content through markdown parser.
Parameters 1
page |
Page |
_should_generate_toc
Determine if TOC should be generated for this page.
_should_generate_toc
def _should_generate_toc(self, page: Page) -> bool
Determine if TOC should be generated for this page.
Parameters 1
page |
Page |
Returns
bool
_parse_with_mistune
Parse content using Mistune parser.
_parse_with_mistune
def _parse_with_mistune(self, page: Page, need_toc: bool) -> None
Parse content using Mistune parser.
Parameters 2
page |
Page |
|
need_toc |
bool |
_parse_with_legacy
Parse content using legacy python-markdown parser.
_parse_with_legacy
def _parse_with_legacy(self, page: Page, need_toc: bool) -> None
Parse content using legacy python-markdown parser.
Parameters 2
page |
Page |
|
need_toc |
bool |
_enhance_api_docs
Enhance API documentation with badges.
_enhance_api_docs
def _enhance_api_docs(self, page: Page) -> None
Enhance API documentation with badges.
Parameters 1
page |
Page |
_cache_parsed_content
Store parsed content in cache for next build.
_cache_parsed_content
def _cache_parsed_content(self, page: Page, template: str, parser_version: str) -> None
Store parsed content in cache for next build.
Parameters 3
page |
Page |
|
template |
str |
|
parser_version |
str |
_render_and_write
Render template and write output.
_render_and_write
def _render_and_write(self, page: Page, template: str) -> None
Render template and write output.
Parameters 2
page |
Page |
|
template |
str |
_cache_rendered_output
Store rendered output in cache for next build.
_cache_rendered_output
def _cache_rendered_output(self, page: Page, template: str) -> None
Store rendered output in cache for next build.
Parameters 2
page |
Page |
|
template |
str |
_accumulate_json_data
Accumulate JSON data during rendering for post-processing optimization.
_accumulate_json_data
def _accumulate_json_data(self, page: Page) -> None
Accumulate JSON data during rendering for post-processing optimization.
Parameters 1
page |
Page |
_process_virtual_page
Process a virtual page with pre-rendered HTML content.
Virtual pages (like aut…
_process_virtual_page
def _process_virtual_page(self, page: Page) -> None
Process a virtual page with pre-rendered HTML content.
Virtual pages (like autodoc pages) may have pre-rendered HTML that is either:
- A complete HTML page (extends base.html) - use directly
- A content fragment - wrap with template
- Deferred autodoc page - render now with full context (menus available)
Complete pages start with <!DOCTYPE or <html and should not be wrapped.
Parameters 1
page |
Page |
_render_autodoc_page
Render an autodoc page using the site's template engine.
This is called during…
_render_autodoc_page
def _render_autodoc_page(self, page: Page) -> None
Render an autodoc page using the site's template engine.
This is called during the rendering phase (after menus are built), ensuring full template context is available for proper header/nav rendering.
Parameters 1
page |
Page |
Virtual page with autodoc_element in metadata |
_build_variable_context
Build variable context for {{ variable }} substitution in markdown.
_build_variable_context
def _build_variable_context(self, page: Page) -> dict[str, Any]
Build variable context for {{ variable }} substitution in markdown.
Parameters 1
page |
Page |
Returns
dict[str, Any]
_get_parser_version
Get parser version string for cache validation.
_get_parser_version
def _get_parser_version(self) -> str
Get parser version string for cache validation.
Returns
str
_write_output
Write rendered page to output directory (backward compatibility wrapper).
_write_output
def _write_output(self, page: Page) -> None
Write rendered page to output directory (backward compatibility wrapper).
Parameters 1
page |
Page |
_preprocess_content
Pre-process page content through Jinja2 (legacy parser only).
_preprocess_content
def _preprocess_content(self, page: Page) -> str
Pre-process page content through Jinja2 (legacy parser only).
Parameters 1
page |
Page |
Returns
str
_normalize_autodoc_element
Ensure autodoc element metadata supports both dotted and mapping access.
_normalize_autodoc_element
def _normalize_autodoc_element(self, element: Any) -> Any
Ensure autodoc element metadata supports both dotted and mapping access.
Parameters 1
element |
Any |
Returns
Any
_normalize_config
Wrap config to allow dotted access with safe defaults for github metadata.
Ext…
_normalize_config
def _normalize_config(self, config: Any) -> Any
Wrap config to allow dotted access with safe defaults for github metadata.
Extracts github_repo and github_branch from the autodoc section of the config and normalizes github_repo to a full URL if provided in owner/repo format.
Parameters 1
config |
Any |
Returns
Any
_MetadataView
Dict that also supports attribute-style access (dotted) used by templates.
_MetadataView
Dict that also supports attribute-style access (dotted) used by templates.
dict[str, Any]Internal Methods 1
__getattr__
__getattr__
def __getattr__(self, item: str) -> Any
Parameters 1
item |
str |
Returns
Any
Functions
_safe_metadata_summary
Summarize metadata for logging without raising on missing attributes.
_safe_metadata_summary
def _safe_metadata_summary(meta: Any) -> str
Summarize metadata for logging without raising on missing attributes.
Parameters 1
| Name | Type | Default | Description |
|---|---|---|---|
meta |
Any |
— |
Returns
str