It seems to be design flaw to maintain trait types and interface contracts by module. That's because a type may be defined in one module but then imported into another module. So it becomes confusing where it came from. For example, if I am going to define a trait that is used for Base types, then should I use my module or Base for lookup?
Since we can always find out the module of a data type using parentmodule function, I want to simplify the design and get rid of the 2-layer dict. Hence this PR.
It seems to be design flaw to maintain trait types and interface contracts by module. That's because a type may be defined in one module but then imported into another module. So it becomes confusing where it came from. For example, if I am going to define a trait that is used for Base types, then should I use my module or Base for lookup?
Since we can always find out the module of a data type using
parentmodule
function, I want to simplify the design and get rid of the 2-layer dict. Hence this PR.