Ignore:
Timestamp:
Mar 19, 2014, 11:11:30 AM (11 years ago)
Author:
dmik
Message:

python: Update vendor to 2.7.6.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • python/vendor/current/Lib/ihooks.py

    r2 r388  
    5050
    5151"""
    52 from warnings import warnpy3k
     52from warnings import warnpy3k, warn
    5353warnpy3k("the ihooks module has been removed in Python 3.0", stacklevel=2)
    5454del warnpy3k
     
    402402    """A module importer that supports packages."""
    403403
    404     def import_module(self, name, globals=None, locals=None, fromlist=None):
    405         parent = self.determine_parent(globals)
     404    def import_module(self, name, globals=None, locals=None, fromlist=None,
     405                      level=-1):
     406        parent = self.determine_parent(globals, level)
    406407        q, tail = self.find_head_package(parent, str(name))
    407408        m = self.load_tail(q, tail)
     
    412413        return m
    413414
    414     def determine_parent(self, globals):
    415         if not globals or not "__name__" in globals:
     415    def determine_parent(self, globals, level=-1):
     416        if not globals or not level:
    416417            return None
    417         pname = globals['__name__']
    418         if "__path__" in globals:
    419             parent = self.modules[pname]
    420             assert globals is parent.__dict__
    421             return parent
    422         if '.' in pname:
    423             i = pname.rfind('.')
    424             pname = pname[:i]
    425             parent = self.modules[pname]
    426             assert parent.__name__ == pname
    427             return parent
    428         return None
     418        pkgname = globals.get('__package__')
     419        if pkgname is not None:
     420            if not pkgname and level > 0:
     421                raise ValueError, 'Attempted relative import in non-package'
     422        else:
     423            # __package__ not set, figure it out and set it
     424            modname = globals.get('__name__')
     425            if modname is None:
     426                return None
     427            if "__path__" in globals:
     428                # __path__ is set so modname is already the package name
     429                pkgname = modname
     430            else:
     431                # normal module, work out package name if any
     432                if '.' not in modname:
     433                    if level > 0:
     434                        raise ValueError, ('Attempted relative import in '
     435                                           'non-package')
     436                    globals['__package__'] = None
     437                    return None
     438                pkgname = modname.rpartition('.')[0]
     439            globals['__package__'] = pkgname
     440        if level > 0:
     441            dot = len(pkgname)
     442            for x in range(level, 1, -1):
     443                try:
     444                    dot = pkgname.rindex('.', 0, dot)
     445                except ValueError:
     446                    raise ValueError('attempted relative import beyond '
     447                                     'top-level package')
     448            pkgname = pkgname[:dot]
     449        try:
     450            return sys.modules[pkgname]
     451        except KeyError:
     452            if level < 1:
     453                warn("Parent module '%s' not found while handling "
     454                     "absolute import" % pkgname, RuntimeWarning, 1)
     455                return None
     456            else:
     457                raise SystemError, ("Parent module '%s' not loaded, cannot "
     458                                    "perform relative import" % pkgname)
    429459
    430460    def find_head_package(self, parent, name):
     
    447477            q = self.import_it(head, qname, parent)
    448478            if q: return q, tail
    449         raise ImportError, "No module named " + qname
     479        raise ImportError, "No module named '%s'" % qname
    450480
    451481    def load_tail(self, q, tail):
     
    458488            m = self.import_it(head, mname, m)
    459489            if not m:
    460                 raise ImportError, "No module named " + mname
     490                raise ImportError, "No module named '%s'" % mname
    461491        return m
    462492
     
    476506                submod = self.import_it(sub, subname, m)
    477507                if not submod:
    478                     raise ImportError, "No module named " + subname
     508                    raise ImportError, "No module named '%s'" % subname
    479509
    480510    def import_it(self, partname, fqname, parent, force_load=0):
    481511        if not partname:
    482             raise ValueError, "Empty module name"
     512            # completely empty module name should only happen in
     513            # 'from . import' or __import__("")
     514            return parent
    483515        if not force_load:
    484516            try:
Note: See TracChangeset for help on using the changeset viewer.