MCPcopy
hub / github.com/Textualize/rich / _get_signature

Method _get_signature

rich/_inspect.py:82–123  ·  view source on GitHub ↗

Get a signature for a callable.

(self, name: str, obj: Any)

Source from the content-addressed store, hash-verified

80 )
81
82 def _get_signature(self, name: str, obj: Any) -> Optional[Text]:
83 """Get a signature for a callable."""
84 try:
85 _signature = str(signature(obj)) + ":"
86 except ValueError:
87 _signature = "(...)"
88 except TypeError:
89 return None
90
91 source_filename: Optional[str] = None
92 try:
93 source_filename = getfile(obj)
94 except (OSError, TypeError):
95 # OSError is raised if obj has no source file, e.g. when defined in REPL.
96 pass
97
98 callable_name = Text(name, style="inspect.callable")
99 if source_filename:
100 callable_name.stylize(f"link file://{source_filename}")
101 signature_text = self.highlighter(_signature)
102
103 qualname = name or getattr(obj, "__qualname__", name)
104 if not isinstance(qualname, str):
105 qualname = getattr(obj, "__name__", name)
106 if not isinstance(qualname, str):
107 qualname = name
108
109 # If obj is a module, there may be classes (which are callable) to display
110 if inspect.isclass(obj):
111 prefix = "class"
112 elif inspect.iscoroutinefunction(obj):
113 prefix = "async def"
114 else:
115 prefix = "def"
116
117 qual_signature = Text.assemble(
118 (f"{prefix} ", f"inspect.{prefix.replace(' ', '_')}"),
119 (qualname, "inspect.callable"),
120 signature_text,
121 )
122
123 return qual_signature
124
125 def _render(self) -> Iterable[RenderableType]:
126 """Render object."""

Callers 1

_renderMethod · 0.95

Calls 4

stylizeMethod · 0.95
TextClass · 0.85
assembleMethod · 0.80
replaceMethod · 0.80

Tested by

no test coverage detected