I have a package mypack with modules mod_a and mod_b in it. I intend the package itself and mod_a to be imported freely:
import mypack
import mypack.mod_a
However, I’d like to keep mod_b for the exclusive use of mypack. That’s because it exists merely to organize the latter’s internal code.
My first question is, is it an accepted practice in Python programming to have ‘private’ modules like this?
If yes, my second question is, what is the best way to convey this intention to the client? Do I prefix the name with an underscore (i.e. _mod_b)? Or would it be a good idea to declare a sub-package private and place all such modules there?
The solution I’ve settled on is to create a sub-package ‘private’ and place all the modules I wish to hide in there. This way they stay stowed away, leaving
mypack‘s module list cleaner and easier to parse.To me, this doesn’t look unpythonic either.