Return a Signature object for the given callable:
inspect.signature(callable, *, follow_wrapped=True, globals=None, locals=None, eval_str=False)
>>> from inspect import signature
>>> def foo(a, *, b:int, **kwargs):
... pass
>>> sig = signature(foo)
>>> str(sig)
'(a, *, b: int, **kwargs)'
>>> str(sig.parameters['b'])
'b: int'
>>> sig.parameters['b'].annotation
<class 'int'>