Function is somehow not getting input arguments

So basicly my project is setup like this:

Environment
| -- API
|    | -- Project1
|    |    | -- API_one
|    |         | -- API_one_Project1.py
|    | -- Project2
|    |    | -- API_one
|    |         | -- API_one_Project2.py
|    | API_one.py
| -- External_scripts
|    | -- external_script.py
| framework.py

API_one.py

exec("from API.%s.API_one.API_one_%s import *" % (project, project))

If an external scripts wants to use API_one.py it just imports it, and API_one.py handles which actual implementation is going to be imported based on project variable which is injected.

I have a function defined in API_one_Project1.py which takes several input arguments, does some work and then returns a value:

API_one_Project1.py

def foo(argument=None):
    if argument:
        argument += 1
    return argument

And when I want to use foo from external script and I pass an argument, I never enter if statement:

external_script.py

import API_one as one
one.foo(argument=3)

Could anyone explain to me what is going on?