I have recently started adding type definitions to my Python code and I am stuck at this problem.
Given a foo.py file:
from typing import overload
@overload
def foo(a: int) -> int: ...
@overload
def foo(b: float) -> int: ...
def foo(a: int = 0, b: float = 0) -> int:
    # implementation not relevant
    return 42
When I run mypy I get the following error:
$ mypy foo.py
foo.py:10: error: Overloaded function implementation does not accept all possible arguments of signature 2  [misc]
I cannot understand where the error is.
In Java I can do that:
interface IFoo {
        int foo(int a);
        int foo(float b);
}
public class Foo implements IFoo {
        public int foo(int a) {
                return this.foo(a, 0f);
        }
        public int foo(float b) {
                return this.foo(0, b);
        }
        private int foo(int a, float b) {
                // implementation not relevant
                return 42;
        }
        public static void main (String[] args) {
                Foo obj = new Foo();
                System.out.println(obj.foo(1));
                System.out.println(obj.foo(1f));
                System.out.println(obj.foo(1, 1f));
        }
}
Can anybody explain me what I am doing wrong in the Python code?