Commit d7f1f316 authored by Aymeric Augustin's avatar Aymeric Augustin
Browse files

Simplified module_has_submodule on Python >= 3.3.

Stopped using the imp module on Python >= 3.3. Refs #21628.
parent 47a9347b
Loading
Loading
Loading
Loading
+77 −57
Original line number Diff line number Diff line
from __future__ import absolute_import  # Avoid importing `importlib` from this package.

import copy
import imp
from importlib import import_module
import os
import sys
@@ -87,6 +86,27 @@ def autodiscover_modules(*args, **kwargs):
                raise


if sys.version_info[:2] >= (3, 3):
    if sys.version_info[:2] >= (3, 4):
        from importlib.util import find_spec as importlib_find
    else:
        from importlib import find_loader as importlib_find

    def module_has_submodule(package, module_name):
        """See if 'module' is in 'package'."""
        try:
            package_name = package.__name__
            package_path = package.__path__
        except AttributeError:
            # package isn't a package.
            return False

        full_module_name = package_name + '.' + module_name
        return importlib_find(full_module_name, package_path) is not None

else:
    import imp

    def module_has_submodule(package, module_name):
        """See if 'module' is in 'package'."""
        name = ".".join([package.__name__, module_name])