I guess this is kind of like mocking for testing. I have a simple module that's imported in a number of other spots in my program. There's a condition in the OS/filesystem where I'd like to import a polymorphically compatible variant of the same module. Can this be accomplished in a sort of once-and-only once spot?
For example, consider something like this:
client/
module_a
module_a_prime
lib/
paths
lib_a
lib_b
...
model/
model_a
model_b
...
top_level_a
top_level_b
...
I have a number of imports of module_a. I have a paths module that isolates all of my file system access, and that's where the determination can be made which one to use, so I tried to do something like:
def dynamic_client_module():
return client.module_a_prime if the_condition_occurs else client.module_a
Hoping that I could do something like
from lib import paths
import paths.dynamic_client_module()
But this seems to not work. Import can only take real modules? Not programatic ones?
Is there a Not-Too-Evil-Way(tm) to add a level of programmatic indirection in the import declarations? Or some other trick from a different angle?
--
https://mail.python.org/mailman/listinfo/python-list
For example, consider something like this:
client/
module_a
module_a_prime
lib/
paths
lib_a
lib_b
...
model/
model_a
model_b
...
top_level_a
top_level_b
...
I have a number of imports of module_a. I have a paths module that isolates all of my file system access, and that's where the determination can be made which one to use, so I tried to do something like:
def dynamic_client_module():
return client.module_a_prime if the_condition_occurs else client.module_a
Hoping that I could do something like
from lib import paths
import paths.dynamic_client_module()
But this seems to not work. Import can only take real modules? Not programatic ones?
Is there a Not-Too-Evil-Way(tm) to add a level of programmatic indirection in the import declarations? Or some other trick from a different angle?
--
https://mail.python.org/mailman/listinfo/python-list