MCPcopy Index your code
hub / github.com/bpython/bpython / _getpydocspec

Function _getpydocspec

bpython/inspection.py:223–263  ·  view source on GitHub ↗
(f: Callable)

Source from the content-addressed store, hash-verified

221
222
223def _getpydocspec(f: Callable) -> ArgSpec | None:
224 try:
225 argspec = pydoc.getdoc(f)
226 except NameError:
227 return None
228
229 s = _getpydocspec_re.search(argspec)
230 if s is None:
231 return None
232
233 if not hasattr_safe(f, "__name__") or s.groups()[0] != f.__name__:
234 return None
235
236 args = []
237 defaults = []
238 varargs = varkwargs = None
239 kwonly_args = []
240 kwonly_defaults = {}
241 for arg in s.group(2).split(","):
242 arg = arg.strip()
243 if arg.startswith("**"):
244 varkwargs = arg[2:]
245 elif arg.startswith("*"):
246 varargs = arg[1:]
247 elif arg == "...":
248 # At least print denotes "..." as separator between varargs and kwonly args.
249 varargs = ""
250 else:
251 arg, _, default = arg.partition("=")
252 if varargs is not None:
253 kwonly_args.append(arg)
254 if default:
255 kwonly_defaults[arg] = _Repr(default)
256 else:
257 args.append(arg)
258 if default:
259 defaults.append(_Repr(default))
260
261 return ArgSpec(
262 args, varargs, varkwargs, defaults, kwonly_args, kwonly_defaults, None
263 )
264
265
266def getfuncprops(func: str, f: Callable) -> FuncProps | None:

Callers 1

getfuncpropsFunction · 0.85

Calls 5

hasattr_safeFunction · 0.85
_ReprClass · 0.85
ArgSpecClass · 0.85
searchMethod · 0.80
appendMethod · 0.80

Tested by

no test coverage detected