Currently if a module imports f and then says f(...) = ... it adds a method. This is different from assignments; f = ... will always create a new binding. It could also lead to unexpected behavior since you might unintentionally add a method when you meant to have your own (possibly private!) function. The default should be changed.
f(...) = ...
f = ...
One possibility is for the default behavior to be adding f(x...) = Other.f(x...), so the new function falls back to the imported one.
f(x...) = Other.f(x...)
To add a method to an imported function, you have to specify something like extend f.
I think this may be the same issue:
A new method gets bound to uppercase, even though the module wasn't imported.
Closed by merge of jb/modulechanges branch.