Fix matplotlib binding support

This commit is contained in:
allegroai 2020-01-10 13:35:07 +02:00
parent f65ef3e757
commit 70624f469b

View File

@ -46,17 +46,23 @@ class PostImportHookPatching(object):
@staticmethod @staticmethod
def _patched_import3(name, globals=None, locals=None, fromlist=(), level=0): def _patched_import3(name, globals=None, locals=None, fromlist=(), level=0):
base_name = name.split('.')[0] name_parts = name.split('.')
already_imported = (not base_name) or (base_name in sys.modules) 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__( mod = builtins.__org_import__(
name, name,
globals=globals, globals=globals,
locals=locals, locals=locals,
fromlist=fromlist, fromlist=fromlist,
level=level) level=level)
if not already_imported and base_name in PostImportHookPatching._post_import_hooks: if not base_already_imported and base_name in PostImportHookPatching._post_import_hooks:
for hook in PostImportHookPatching._post_import_hooks[base_name]: for hook in PostImportHookPatching._post_import_hooks[base_name]:
hook() 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 return mod
@staticmethod @staticmethod
@ -70,4 +76,3 @@ class PostImportHookPatching(object):
def remove_on_import(name, func): def remove_on_import(name, func):
if name in PostImportHookPatching._post_import_hooks and func in PostImportHookPatching._post_import_hooks[name]: if name in PostImportHookPatching._post_import_hooks and func in PostImportHookPatching._post_import_hooks[name]:
PostImportHookPatching._post_import_hooks[name].remove(func) PostImportHookPatching._post_import_hooks[name].remove(func)