Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
from __future__ import absolute_import

from importlib import import_module


class require_modules(object):
    """Context manager to check the availability of required modules."""
    def __init__(self, modules):
        self._missing_modules = []
        for module in modules:
            try:
                import_module(module)
            except ImportError:
                self._missing_modules.append(module)

    def __enter__(self):
        return self._missing_modules

    def __exit__(self, exc_type, exc_value, traceback):
        return False


def func_name(f):
    """Return a human readable version of the function's name."""
    if hasattr(f, '__module__'):
        return '%s.%s' % (f.__module__, getattr(f, '__name__', f.__class__.__name__))
    return getattr(f, '__name__', f.__class__.__name__)


def module_name(instance):
    """Return the instance module name."""
    return instance.__class__.__module__.split('.')[0]