예제 #1
0
    def _patched_import2(name, globals={}, locals={}, fromlist=[], level=-1):
        already_imported = name in sys.modules
        mod = builtins.__org_import__(name,
                                      globals=globals,
                                      locals=locals,
                                      fromlist=fromlist,
                                      level=level)

        if not already_imported and name in PostImportHookPatching._post_import_hooks:
            for hook in PostImportHookPatching._post_import_hooks[name]:
                hook()
        return mod
예제 #2
0
 def _patched_import3(name,
                      globals=None,
                      locals=None,
                      fromlist=(),
                      level=0):
     base_name = name.split('.')[0]
     already_imported = (not base_name) or (base_name in sys.modules)
     mod = builtins.__org_import__(name,
                                   globals=globals,
                                   locals=locals,
                                   fromlist=fromlist,
                                   level=level)
     if not already_imported and base_name in PostImportHookPatching._post_import_hooks:
         for hook in PostImportHookPatching._post_import_hooks[base_name]:
             hook()
     return mod
예제 #3
0
 def _patched_import3(name,
                      globals=None,
                      locals=None,
                      fromlist=(),
                      level=0):
     name_parts = name.split('.')
     base_name = name_parts[0]
     second_name = '.'.join(name_parts[:2]) if len(name_parts) > 1 else None
     base_already_imported = (not base_name) or (base_name in sys.modules)
     second_already_imported = (not second_name) or (second_name
                                                     in sys.modules)
     mod = builtins.__org_import__(name,
                                   globals=globals,
                                   locals=locals,
                                   fromlist=fromlist,
                                   level=level)
     if not base_already_imported and base_name in PostImportHookPatching._post_import_hooks:
         for hook in PostImportHookPatching._post_import_hooks[base_name]:
             hook()
     if not second_already_imported and second_name in PostImportHookPatching._post_import_hooks:
         for hook in PostImportHookPatching._post_import_hooks[second_name]:
             hook()
     return mod