MCPcopy
hub / github.com/ComposioHQ/composio / generate_class_mdx

Function generate_class_mdx

python/scripts/generate-docs.py:325–477  ·  view source on GitHub ↗

Generate MDX for a class.

(
    info: dict[str, Any], prop_to_class: dict[str, str] | None = None
)

Source from the content-addressed store, hash-verified

323
324
325def generate_class_mdx(
326 info: dict[str, Any], prop_to_class: dict[str, str] | None = None
327) -> str:
328 """Generate MDX for a class."""
329 lines = []
330
331 # Frontmatter
332 desc = (
333 info["description"].split("\n")[0]
334 if info["description"]
335 else f"{info['name']} class"
336 )
337 # Normalize reStructuredText ``double backticks`` to single backticks so the
338 # frontmatter description reads cleanly.
339 desc = re.sub(r"``([^`]+)``", r"`\1`", desc)
340 if len(desc) > 150:
341 desc = desc[:147] + "..."
342
343 lines.append("---")
344 lines.append(f"title: {escape_yaml_string(display_name_for(info['name']))}")
345 lines.append(f"description: {escape_yaml_string(desc)}")
346 lines.append("---")
347 lines.append("")
348
349 # Class-level deprecation callout (rendered as a fumadocs warning callout).
350 deprecated_note = info.get("deprecated")
351 if deprecated_note:
352 # Normalize reStructuredText ``double backticks`` to MDX `single` so
353 # inline code renders correctly.
354 deprecated_note = re.sub(r"``([^`]+)``", r"`\1`", deprecated_note)
355 lines.append('<Callout type="warn" title="Deprecated">')
356 lines.append(deprecated_note)
357 lines.append("</Callout>")
358 lines.append("")
359
360 source_link = info.get("source_link", "")
361
362 # Properties
363 property_rows = []
364 if info["properties"]:
365 if prop_to_class:
366 for prop in info["properties"]:
367 prop_name = prop["name"]
368 if prop_name in prop_to_class:
369 class_name = prop_to_class[prop_name]
370 link = (
371 f"/reference/sdk-reference/python/{to_kebab_case(class_name)}"
372 )
373 property_rows.append(
374 {
375 "name": f"[`{prop_name}`]({link})",
376 "type": f"`{class_name}`",
377 "description": prop["description"],
378 }
379 )
380 elif info["name"] in ADDITIONAL_CLASSES:
381 for prop in info["properties"]:
382 property_rows.append(

Callers 1

mainFunction · 0.85

Calls 6

escape_yaml_stringFunction · 0.85
display_name_forFunction · 0.85
to_kebab_caseFunction · 0.85
appendMethod · 0.65
getMethod · 0.65
replaceMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…