How to use strongtyping-pyoverload on a module based level
Overloading function
- module_a.py
from strongtyping_pyoverload import overload
@overload
def module_func():
return 0
@overload
def module_func(a: int, b: int):
return a * b
@overload
def module_func(a: str, b: str):
return a + b
>>> from module_a import module_func
>>> module_func()
0
>>> module_func(2, 2)
4
>>> module_func("foo", "bar")
"foobar"
No function matches
When no function matches, an InvalidOverloadException will be raised.
It is importable from strongtyping_pyoverload.exception:
from strongtyping_pyoverload.exception import InvalidOverloadException
>>> from module_a import module_func
>>> module_func(21)
InvalidOverloadException: No function was found which matches your parameters `(21,), {}`