mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
Minor refactoring in importlib._bootstrap, and fix the '_wrap' docstring.
This commit is contained in:
parent
a1c974a66d
commit
79d79a0f29
1 changed files with 15 additions and 14 deletions
|
@ -140,7 +140,7 @@ def _write_atomic(path, data):
|
||||||
|
|
||||||
|
|
||||||
def _wrap(new, old):
|
def _wrap(new, old):
|
||||||
"""Simple substitute for functools.wraps."""
|
"""Simple substitute for functools.update_wrapper."""
|
||||||
for replace in ['__module__', '__name__', '__qualname__', '__doc__']:
|
for replace in ['__module__', '__name__', '__qualname__', '__doc__']:
|
||||||
if hasattr(old, replace):
|
if hasattr(old, replace):
|
||||||
setattr(new, replace, getattr(old, replace))
|
setattr(new, replace, getattr(old, replace))
|
||||||
|
@ -345,7 +345,7 @@ def set_package(fxn):
|
||||||
"""Set __package__ on the returned module."""
|
"""Set __package__ on the returned module."""
|
||||||
def set_package_wrapper(*args, **kwargs):
|
def set_package_wrapper(*args, **kwargs):
|
||||||
module = fxn(*args, **kwargs)
|
module = fxn(*args, **kwargs)
|
||||||
if not hasattr(module, '__package__') or module.__package__ is None:
|
if getattr(module, '__package__', None) is None:
|
||||||
module.__package__ = module.__name__
|
module.__package__ = module.__name__
|
||||||
if not hasattr(module, '__path__'):
|
if not hasattr(module, '__path__'):
|
||||||
module.__package__ = module.__package__.rpartition('.')[0]
|
module.__package__ = module.__package__.rpartition('.')[0]
|
||||||
|
@ -438,7 +438,7 @@ def _requires_builtin(fxn):
|
||||||
"""Decorator to verify the named module is built-in."""
|
"""Decorator to verify the named module is built-in."""
|
||||||
def _requires_builtin_wrapper(self, fullname):
|
def _requires_builtin_wrapper(self, fullname):
|
||||||
if fullname not in sys.builtin_module_names:
|
if fullname not in sys.builtin_module_names:
|
||||||
raise ImportError("{0} is not a built-in module".format(fullname),
|
raise ImportError("{} is not a built-in module".format(fullname),
|
||||||
name=fullname)
|
name=fullname)
|
||||||
return fxn(self, fullname)
|
return fxn(self, fullname)
|
||||||
_wrap(_requires_builtin_wrapper, fxn)
|
_wrap(_requires_builtin_wrapper, fxn)
|
||||||
|
@ -449,7 +449,7 @@ def _requires_frozen(fxn):
|
||||||
"""Decorator to verify the named module is frozen."""
|
"""Decorator to verify the named module is frozen."""
|
||||||
def _requires_frozen_wrapper(self, fullname):
|
def _requires_frozen_wrapper(self, fullname):
|
||||||
if not _imp.is_frozen(fullname):
|
if not _imp.is_frozen(fullname):
|
||||||
raise ImportError("{0} is not a frozen module".format(fullname),
|
raise ImportError("{} is not a frozen module".format(fullname),
|
||||||
name=fullname)
|
name=fullname)
|
||||||
return fxn(self, fullname)
|
return fxn(self, fullname)
|
||||||
_wrap(_requires_frozen_wrapper, fxn)
|
_wrap(_requires_frozen_wrapper, fxn)
|
||||||
|
@ -511,7 +511,7 @@ class BuiltinImporter:
|
||||||
@classmethod
|
@classmethod
|
||||||
@_requires_builtin
|
@_requires_builtin
|
||||||
def is_package(cls, fullname):
|
def is_package(cls, fullname):
|
||||||
"""Return None as built-in modules are never packages."""
|
"""Return False as built-in modules are never packages."""
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
@ -936,7 +936,7 @@ class _NamespacePath:
|
||||||
return len(self._recalculate())
|
return len(self._recalculate())
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return "_NamespacePath({0!r})".format(self._path)
|
return "_NamespacePath({!r})".format(self._path)
|
||||||
|
|
||||||
def __contains__(self, item):
|
def __contains__(self, item):
|
||||||
return item in self._recalculate()
|
return item in self._recalculate()
|
||||||
|
@ -1198,7 +1198,7 @@ def _resolve_name(name, package, level):
|
||||||
if len(bits) < level:
|
if len(bits) < level:
|
||||||
raise ValueError('attempted relative import beyond top-level package')
|
raise ValueError('attempted relative import beyond top-level package')
|
||||||
base = bits[0]
|
base = bits[0]
|
||||||
return '{0}.{1}'.format(base, name) if name else base
|
return '{}.{}'.format(base, name) if name else base
|
||||||
|
|
||||||
|
|
||||||
def _find_module(name, path):
|
def _find_module(name, path):
|
||||||
|
@ -1228,7 +1228,7 @@ def _sanity_check(name, package, level):
|
||||||
if not isinstance(package, str):
|
if not isinstance(package, str):
|
||||||
raise TypeError("__package__ not set to a string")
|
raise TypeError("__package__ not set to a string")
|
||||||
elif package not in sys.modules:
|
elif package not in sys.modules:
|
||||||
msg = ("Parent module {0!r} not loaded, cannot perform relative "
|
msg = ("Parent module {!r} not loaded, cannot perform relative "
|
||||||
"import")
|
"import")
|
||||||
raise SystemError(msg.format(package))
|
raise SystemError(msg.format(package))
|
||||||
if not name and level == 0:
|
if not name and level == 0:
|
||||||
|
@ -1267,7 +1267,7 @@ def _find_and_load_unlocked(name, import_):
|
||||||
parent_module = sys.modules[parent]
|
parent_module = sys.modules[parent]
|
||||||
setattr(parent_module, name.rpartition('.')[2], module)
|
setattr(parent_module, name.rpartition('.')[2], module)
|
||||||
# Set __package__ if the loader did not.
|
# Set __package__ if the loader did not.
|
||||||
if not hasattr(module, '__package__') or module.__package__ is None:
|
if getattr(module, '__package__', None) is None:
|
||||||
try:
|
try:
|
||||||
module.__package__ = module.__name__
|
module.__package__ = module.__name__
|
||||||
if not hasattr(module, '__path__'):
|
if not hasattr(module, '__path__'):
|
||||||
|
@ -1336,11 +1336,12 @@ def _handle_fromlist(module, fromlist, import_):
|
||||||
fromlist = list(fromlist)
|
fromlist = list(fromlist)
|
||||||
fromlist.remove('*')
|
fromlist.remove('*')
|
||||||
fromlist.extend(module.__all__)
|
fromlist.extend(module.__all__)
|
||||||
for x in (y for y in fromlist if not hasattr(module, y)):
|
for x in fromlist:
|
||||||
try:
|
if not hasattr(module, x):
|
||||||
import_('{0}.{1}'.format(module.__name__, x))
|
try:
|
||||||
except ImportError:
|
import_('{}.{}'.format(module.__name__, x))
|
||||||
pass
|
except ImportError:
|
||||||
|
pass
|
||||||
return module
|
return module
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue