I the below function foo
, which has:
from typing import Callable
def foo(bar: str, *args, **kwargs) -> None:
"""Some function with one positional arg and then *args and **kwargs."""
foo_: Callable[[str, ...], None] = foo # error: Unexpected '...'
How can I type hint this?
Currently, mypy==0.812
throws the error: error: Unexpected '...' [misc]
I'd probably use Protocols for this. They're generally a bit more flexible than Callables. It would look something like this
from typing import Protocol
class BarFunc(Protocol):
def __call__(fakeself, bar: str, *args, **kwargs) -> None:
# fakeself gets swallowed by the class method binding logic
# so this will match functions that have bar and the free arguments.
...
def foo(bar: str, *args, **kwargs) -> None:
"""Some function with one positional arg and then *args and **kwargs."""
foo_: BarFunc = foo