I'm overloading functions with default parameter using multipledispatch (based on this answer)
from multipledispatch import dispatch
class TestExampleTest(AbstractTest):
    @dispatch(ClassOne, bool, bool)
    def function(self, my_class, a=True, b=True):
        do_something()
    @dispatch(ClassTwo, bool)
    def function(self, my_class, a=True):
        do_something_else()
When I'm calling a function() without passing values to the bool item/s
self.function(ClassOne())
I get
NotImplementedError: Could not find signature for function
Complete stack trace:
ExampleTest.py:27 (TestExampleTest.test_example_test)
self = <ExampleTest.TestExampleTest object at 0x04326BB0>
    def test_example_test(self):
>       self.function(ClassOne())
ExampleTest.py:29: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <dispatched function>
args = (<ExampleTest.ClassOne object at 0x043262B0>,), kwargs = {}
types = (<class 'ExampleTest.ClassOne'>,), func = None
    def __call__(self, *args, **kwargs):
        types = tuple([type(arg) for arg in args])
        func = self.dispatch(*types)
        if not func:
            raise NotImplementedError('Could not find signature for %s: <%s>' %
>                                     (self.name, str_signature(types)))
E           NotImplementedError: Could not find signature for function: <ClassOne>
..\..\..\..\Automation\lib\site-packages\multipledispatch\dispatcher.py:434: NotImplementedError
Note: I know I can drop @dispatch all together and do something like
def function(self, my_class_one=None, my_class_two=None, a=True, b=True):
    if my_class_one:
        do_something()
    elif my_class_two:
        do_something_else()
But I'm wondering if I can keep the current structure.
How can I fix it?
 
     
    