Functions
_convert_sphinx_roles
Convert reStructuredText-style cross-reference roles to inline code.
Handles common reStructuredTe…
_convert_sphinx_roles
def _convert_sphinx_roles(text: str) -> str
Convert reStructuredText-style cross-reference roles to inline code.
Handles common reStructuredText roles:
ClassNameorClassName→ClassNamefunction_name()→function_name()method_name()→method_name()module_name→module_nameattribute_name→attribute_nameExceptionName→ExceptionName
Parameters 1
| Name | Type | Default | Description |
|---|---|---|---|
text |
str |
— | Text containing reStructuredText roles |
Returns
Text with roles converted to inline codestr
—
sanitize_text
Clean user-provided text for markdown generation.
This function is the single source of truth for …
sanitize_text
def sanitize_text(text: str | None) -> str
Clean user-provided text for markdown generation.
This function is the single source of truth for text cleaning across all autodoc extractors. It prevents common markdown rendering issues by:
- Removing leading/trailing whitespace
- Dedenting indented blocks (prevents accidental code blocks)
- Normalizing line endings
- Collapsing excessive blank lines
Parameters 1
| Name | Type | Default | Description |
|---|---|---|---|
text |
str | None |
— | Raw text from docstrings, help text, or API specs |
Returns
Cleaned text safe for markdown generationstr
—
truncate_text
Truncate text to a maximum length, adding suffix if truncated.
truncate_text
def truncate_text(text: str, max_length: int = 200, suffix: str = '...') -> str
Truncate text to a maximum length, adding suffix if truncated.
Parameters 3
| Name | Type | Default | Description |
|---|---|---|---|
text |
str |
— | Text to truncate |
max_length |
int |
200 |
Maximum length (default: 200) |
suffix |
str |
'...' |
Suffix to add if truncated (default: '...') |
Returns
Truncated textstr
—
auto_detect_prefix_map
Auto-detect grouping from __init__.py hierarchy.
Scans source directories for packages (directorie…
auto_detect_prefix_map
def auto_detect_prefix_map(source_dirs: list[Path], strip_prefix: str = '') -> dict[str, str]
Auto-detect grouping from init.py hierarchy.
Scans source directories for packages (directories containing init.py) and builds a prefix map for every package path. Each entry maps the full dotted module path to its slash-separated path relative to the stripped prefix (e.g., "cli.templates" → "cli/templates"). Using the full path ensures nested packages stay under their parent directories (cli/templates lives under cli/).
Parameters 2
| Name | Type | Default | Description |
|---|---|---|---|
source_dirs |
list[Path] |
— | Directories to scan for packages |
strip_prefix |
str |
'' |
Optional dotted prefix to remove from detected modules |
Returns
Prefix map: {"package.path": "group_path"}dict[str, str]
—
apply_grouping
Apply grouping config to qualified module name.
apply_grouping
def apply_grouping(qualified_name: str, config: dict[str, Any]) -> tuple[str | None, str]
Apply grouping config to qualified module name.
Parameters 2
| Name | Type | Default | Description |
|---|---|---|---|
qualified_name |
str |
— | Full module name (e.g., "bengal.cli.templates.blog") |
config |
dict[str, Any] |
— | Grouping config dict with mode and prefix_map |
Returns
Tuple of (group_name, remaining_path):tuple[str | None, str]
—
get_python_class_bases
Get class base classes with type-safe access.
get_python_class_bases
def get_python_class_bases(element: DocElement) -> tuple[str, ...]
Get class base classes with type-safe access.
Parameters 1
| Name | Type | Default | Description |
|---|---|---|---|
element |
DocElement |
— | DocElement with element_type "class" |
Returns
Tuple of base class names (e.g., ("ABC", "Mixin"))tuple[str, ...]
—
get_python_class_decorators
Get class decorators with type-safe access.
get_python_class_decorators
def get_python_class_decorators(element: DocElement) -> tuple[str, ...]
Get class decorators with type-safe access.
Parameters 1
| Name | Type | Default | Description |
|---|---|---|---|
element |
DocElement |
— | DocElement with element_type "class" |
Returns
Tuple of decorator names (e.g., ("dataclass", "frozen"))tuple[str, ...]
—
get_python_class_is_dataclass
Check if class is a dataclass with type-safe access.
get_python_class_is_dataclass
def get_python_class_is_dataclass(element: DocElement) -> bool
Check if class is a dataclass with type-safe access.
Parameters 1
| Name | Type | Default | Description |
|---|---|---|---|
element |
DocElement |
— | DocElement with element_type "class" |
Returns
True if class has @dataclass decoratorbool
—
get_python_function_decorators
Get function/method decorators with type-safe access.
get_python_function_decorators
def get_python_function_decorators(element: DocElement) -> tuple[str, ...]
Get function/method decorators with type-safe access.
Parameters 1
| Name | Type | Default | Description |
|---|---|---|---|
element |
DocElement |
— | DocElement with element_type "function" or "method" |
Returns
Tuple of decorator names (e.g., ("classmethod", "override"))tuple[str, ...]
—
get_python_function_is_property
Check if function is a property with type-safe access.
get_python_function_is_property
def get_python_function_is_property(element: DocElement) -> bool
Check if function is a property with type-safe access.
Parameters 1
| Name | Type | Default | Description |
|---|---|---|---|
element |
DocElement |
— | DocElement with element_type "function" or "method" |
Returns
True if function has @property decoratorbool
—
get_python_function_signature
Get function signature with type-safe access.
get_python_function_signature
def get_python_function_signature(element: DocElement) -> str
Get function signature with type-safe access.
Parameters 1
| Name | Type | Default | Description |
|---|---|---|---|
element |
DocElement |
— | DocElement with element_type "function" or "method" |
Returns
Signature string (e.g., "def build(force: bool = False) -> None")str
—
get_python_function_return_type
Get function return type with type-safe access.
get_python_function_return_type
def get_python_function_return_type(element: DocElement) -> str | None
Get function return type with type-safe access.
Parameters 1
| Name | Type | Default | Description |
|---|---|---|---|
element |
DocElement |
— | DocElement with element_type "function" or "method" |
Returns
Return type string or Nonestr | None
—
get_cli_command_callback
Get CLI command callback name with type-safe access.
get_cli_command_callback
def get_cli_command_callback(element: DocElement) -> str | None
Get CLI command callback name with type-safe access.
Parameters 1
| Name | Type | Default | Description |
|---|---|---|---|
element |
DocElement |
— | DocElement with element_type "command" |
Returns
Callback function name or Nonestr | None
—
get_cli_command_option_count
Get CLI command option count with type-safe access.
get_cli_command_option_count
def get_cli_command_option_count(element: DocElement) -> int
Get CLI command option count with type-safe access.
Parameters 1
| Name | Type | Default | Description |
|---|---|---|---|
element |
DocElement |
— | DocElement with element_type "command" |
Returns
Number of optionsint
—
get_cli_group_command_count
Get CLI group command count with type-safe access.
get_cli_group_command_count
def get_cli_group_command_count(element: DocElement) -> int
Get CLI group command count with type-safe access.
Parameters 1
| Name | Type | Default | Description |
|---|---|---|---|
element |
DocElement |
— | DocElement with element_type "command-group" |
Returns
Number of subcommandsint
—
get_openapi_tags
Get OpenAPI endpoint tags with type-safe access.
get_openapi_tags
def get_openapi_tags(element: DocElement) -> tuple[str, ...]
Get OpenAPI endpoint tags with type-safe access.
Parameters 1
| Name | Type | Default | Description |
|---|---|---|---|
element |
DocElement |
— | DocElement with element_type "openapi_endpoint" |
Returns
Tuple of tag names (e.g., ("users", "admin"))tuple[str, ...]
—
get_openapi_method
Get OpenAPI HTTP method with type-safe access.
get_openapi_method
def get_openapi_method(element: DocElement) -> str
Get OpenAPI HTTP method with type-safe access.
Parameters 1
| Name | Type | Default | Description |
|---|---|---|---|
element |
DocElement |
— | DocElement with element_type "openapi_endpoint" |
Returns
HTTP method string (e.g., "GET", "POST")str
—
get_openapi_path
Get OpenAPI endpoint path with type-safe access.
get_openapi_path
def get_openapi_path(element: DocElement) -> str
Get OpenAPI endpoint path with type-safe access.
Parameters 1
| Name | Type | Default | Description |
|---|---|---|---|
element |
DocElement |
— | DocElement with element_type "openapi_endpoint" |
Returns
Path string (e.g., "/users/{id}")str
—
get_openapi_operation_id
Get OpenAPI operation ID with type-safe access.
get_openapi_operation_id
def get_openapi_operation_id(element: DocElement) -> str | None
Get OpenAPI operation ID with type-safe access.
Parameters 1
| Name | Type | Default | Description |
|---|---|---|---|
element |
DocElement |
— | DocElement with element_type "openapi_endpoint" |
Returns
Operation ID string or Nonestr | None
—
get_function_parameters
Get normalized function/method parameters across all extractor types.
This is the canonical way to…
get_function_parameters
def get_function_parameters(element: DocElement, exclude_self: bool = True) -> list[dict[str, Any]]
Get normalized function/method parameters across all extractor types.
This is the canonical way to access parameters in templates. It handles:
- Python functions/methods (typed_metadata.parameters or metadata.args)
- CLI options (typed_metadata or metadata.options)
- OpenAPI endpoints (typed_metadata.parameters or metadata.parameters)
Each parameter is normalized to a consistent dict format:
{
"name": str, # Parameter name
"type": str | None, # Type annotation/schema type
"default": str | None, # Default value
"required": bool, # Whether required (derived from default)
"description": str, # Description from docstring
}
Parameters 2
| Name | Type | Default | Description |
|---|---|---|---|
element |
DocElement |
— | DocElement to extract parameters from |
exclude_self |
bool |
True |
If True, excludes 'self' and 'cls' parameters (default True) |
Returns
List of normalized parameter dicts (empty list if element has no params)list[dict[str, Any]]
—
get_function_return_info
Get normalized return type information across all extractor types.
Returns a consistent dict forma…
get_function_return_info
def get_function_return_info(element: DocElement) -> dict[str, Any]
Get normalized return type information across all extractor types.
Returns a consistent dict format:
{
"type": str | None, # Return type annotation
"description": str | None, # Return description from docstring
}
Parameters 1
| Name | Type | Default | Description |
|---|---|---|---|
element |
DocElement |
— | DocElement to extract return info from |
Returns
Dict with 'type' and 'description' keys (both None if not applicable)dict[str, Any]
—