_render_mermaid_using_pyppeteer() — langchain Function Reference
Architecture documentation for the _render_mermaid_using_pyppeteer() function in graph_mermaid.py from the langchain codebase.
Entity Profile
Dependency Diagram
graph TD bf3680e2_9ce5_0796_dd67_2a37f682c93b["_render_mermaid_using_pyppeteer()"] c545ef44_a033_15ff_e016_18af37277247["graph_mermaid.py"] bf3680e2_9ce5_0796_dd67_2a37f682c93b -->|defined in| c545ef44_a033_15ff_e016_18af37277247 affcc91c_bcd9_50c2_5762_c17c81886c6a["draw_mermaid_png()"] affcc91c_bcd9_50c2_5762_c17c81886c6a -->|calls| bf3680e2_9ce5_0796_dd67_2a37f682c93b style bf3680e2_9ce5_0796_dd67_2a37f682c93b fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
libs/core/langchain_core/runnables/graph_mermaid.py lines 334–402
async def _render_mermaid_using_pyppeteer(
mermaid_syntax: str,
output_file_path: str | None = None,
background_color: str | None = "white",
padding: int = 10,
device_scale_factor: int = 3,
) -> bytes:
"""Renders Mermaid graph using Pyppeteer."""
if not _HAS_PYPPETEER:
msg = "Install Pyppeteer to use the Pyppeteer method: `pip install pyppeteer`."
raise ImportError(msg)
browser = await launch()
page = await browser.newPage()
# Setup Mermaid JS
await page.goto("about:blank")
await page.addScriptTag(
{"url": "https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"}
)
await page.evaluate(
"""() => {
mermaid.initialize({startOnLoad:true});
}"""
)
# Render SVG
svg_code = await page.evaluate(
"""(mermaidGraph) => {
return mermaid.mermaidAPI.render('mermaid', mermaidGraph);
}""",
mermaid_syntax,
)
# Set the page background to white
await page.evaluate(
"""(svg, background_color) => {
document.body.innerHTML = svg;
document.body.style.background = background_color;
}""",
svg_code["svg"],
background_color,
)
# Take a screenshot
dimensions = await page.evaluate(
"""() => {
const svgElement = document.querySelector('svg');
const rect = svgElement.getBoundingClientRect();
return { width: rect.width, height: rect.height };
}"""
)
await page.setViewport(
{
"width": int(dimensions["width"] + padding),
"height": int(dimensions["height"] + padding),
"deviceScaleFactor": device_scale_factor,
}
)
img_bytes = cast("bytes", await page.screenshot({"fullPage": False}))
await browser.close()
if output_file_path is not None:
await asyncio.get_event_loop().run_in_executor(
None, Path(output_file_path).write_bytes, img_bytes
)
return img_bytes
Domain
Subdomains
Called By
Source
Frequently Asked Questions
What does _render_mermaid_using_pyppeteer() do?
_render_mermaid_using_pyppeteer() is a function in the langchain codebase, defined in libs/core/langchain_core/runnables/graph_mermaid.py.
Where is _render_mermaid_using_pyppeteer() defined?
_render_mermaid_using_pyppeteer() is defined in libs/core/langchain_core/runnables/graph_mermaid.py at line 334.
What calls _render_mermaid_using_pyppeteer()?
_render_mermaid_using_pyppeteer() is called by 1 function(s): draw_mermaid_png.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free