Spaces:
Runtime error
Runtime error
from __future__ import annotations | |
import inspect | |
from rich.console import Console | |
from rich.table import Table | |
import gradio._simple_templates | |
import gradio.components | |
import gradio.layouts | |
from gradio.analytics import custom_component_analytics | |
from gradio.blocks import BlockContext | |
from gradio.components import Component, FormComponent | |
_IGNORE = { | |
"Text", | |
"Dataframe", | |
"Highlightedtext", | |
"Annotatedimage", | |
"Checkboxgroup", | |
"Json", | |
"Highlight", | |
"Component", | |
"Form", | |
"Dataset", | |
"FormComponent", | |
"Fallback", | |
"State", | |
"LogoutButton", | |
} | |
_BEGINNER_FRIENDLY = {"Slider", "Radio", "Checkbox", "Number", "CheckboxGroup", "File"} | |
def _get_table_items(module): | |
items = [] | |
for name in module.__all__: | |
if name in _IGNORE: | |
continue | |
gr_cls = getattr(module, name) | |
if not ( | |
inspect.isclass(gr_cls) and issubclass(gr_cls, (Component, BlockContext)) | |
): | |
continue | |
tags = [] | |
if "Simple" in name or name in _BEGINNER_FRIENDLY: | |
tags.append(":seedling::handshake:Beginner Friendly:seedling::handshake:") | |
if issubclass(gr_cls, FormComponent): | |
tags.append(":pencil::jigsaw:Form Component:pencil::jigsaw:") | |
if name in gradio.layouts.__all__: | |
tags.append(":triangular_ruler:Layout:triangular_ruler:") | |
doc = inspect.getdoc(gr_cls) or "No description available." | |
doc = doc.split(".")[0] | |
if tags: | |
doc = f"[{', '.join(tags)}]" + " " + doc | |
items.append((name, doc)) | |
return items | |
def _show(): | |
custom_component_analytics( | |
"show", | |
None, | |
upload_demo=None, | |
upload_pypi=None, | |
upload_source=None, | |
) | |
items = ( | |
_get_table_items(gradio._simple_templates) | |
+ _get_table_items(gradio.components) | |
+ _get_table_items(gradio.layouts) | |
) | |
table = Table(show_header=True, header_style="orange1", show_lines=True) | |
table.add_column("Name", justify="center") | |
table.add_column("Description", justify="center") | |
for item in items: | |
table.add_row(*item) | |
console = Console() | |
with console.pager(): | |
console.print(table) | |