diff --git a/marimo/_plugins/stateless/inspect.py b/marimo/_plugins/stateless/inspect.py index ed9b06a7b8c..4fdcaa86997 100644 --- a/marimo/_plugins/stateless/inspect.py +++ b/marimo/_plugins/stateless/inspect.py @@ -3,6 +3,7 @@ import html import inspect as inspect_ +from functools import lru_cache from marimo._output.builder import h from marimo._output.formatting import as_html @@ -422,7 +423,7 @@ def _render_attribute_row( def _format_method(name: str, method: object, docs: bool) -> str: try: - sig = inspect_.signature(method) # type: ignore + sig = _cached_signature(method) # type: ignore if inspect_.iscoroutinefunction(method): display = f"async def {name}{sig}" else: @@ -481,3 +482,8 @@ def _render_value_inline(value: object) -> str: html.escape(value_str), style="font-family: monospace; font-size: 0.75rem;", ) + + +@lru_cache(maxsize=128) +def _cached_signature(method): + return inspect_.signature(method)