from typing import overload
@overload
def foo(x: int) -> int:
...
@overload
def foo(x: float) -> float:
...
# The actual, single definition of foo that can be used:
def foo(x):
print(type(x))
return 2 * x
print(foo(1))
print(foo(1.0))
print(foo('abc'))
ZnJvbSB0eXBpbmcgaW1wb3J0IG92ZXJsb2FkCgpAb3ZlcmxvYWQKZGVmIGZvbyh4OiBpbnQpIC0+IGludDoKCS4uLgoKQG92ZXJsb2FkCmRlZiBmb28oeDogZmxvYXQpIC0+IGZsb2F0OgogICAgLi4uCgojIFRoZSBhY3R1YWwsIHNpbmdsZSBkZWZpbml0aW9uIG9mIGZvbyB0aGF0IGNhbiBiZSB1c2VkOgpkZWYgZm9vKHgpOgoJcHJpbnQodHlwZSh4KSkKCXJldHVybiAyICogeAoJCnByaW50KGZvbygxKSkKcHJpbnQoZm9vKDEuMCkpCnByaW50KGZvbygnYWJjJykp