Note for the future: it looks like `inspect.signature` automatically skips the self/cls for us:    ```python  >>> class C:  ...     def foo(): ...  ...   >>>   >>> C.foo  <function C.foo at 0x7fafdbd97400>  >>> C().foo  <bound method C.foo of <__main__.C object at 0x7fafdbcd5db0>>  >>> inspect.signature(C.foo)  <Signature ()>  >>> sig = inspect.signature(C.foo); sig  <Signature ()>      >>> sig.parameters  mappingproxy(OrderedDict())    ```