If functions in SelectionLib
are, as you say, "methods" for Container
, it seems reasonable that DataLib
imports SelectionLib
, not the other way around.
Then the user code would just import DataLib
. This would require some refactoring. One possibility to minimize the disruption to the user code would be to rename your existing DataLib
and SelectionLib
to _DataLib
and _SelectionLib
, and have a new DataLib
to import the necessary bits from either (or both).
As an aside, it's better to follow the PEP-8 conventions and name your modules in lowercase_with_underscores.