mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
Issue #13588: Rename decorators in importlib.
More descriptive names are now used in order to make tracebacks more readable.
This commit is contained in:
parent
d3af6e30a2
commit
f522aea7a1
2 changed files with 19 additions and 18 deletions
|
@ -122,26 +122,26 @@ code_type = type(_wrap.__code__)
|
||||||
|
|
||||||
def set_package(fxn):
|
def set_package(fxn):
|
||||||
"""Set __package__ on the returned module."""
|
"""Set __package__ on the returned module."""
|
||||||
def 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 not hasattr(module, '__package__') or module.__package__ 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]
|
||||||
return module
|
return module
|
||||||
_wrap(wrapper, fxn)
|
_wrap(set_package_wrapper, fxn)
|
||||||
return wrapper
|
return set_package_wrapper
|
||||||
|
|
||||||
|
|
||||||
def set_loader(fxn):
|
def set_loader(fxn):
|
||||||
"""Set __loader__ on the returned module."""
|
"""Set __loader__ on the returned module."""
|
||||||
def wrapper(self, *args, **kwargs):
|
def set_loader_wrapper(self, *args, **kwargs):
|
||||||
module = fxn(self, *args, **kwargs)
|
module = fxn(self, *args, **kwargs)
|
||||||
if not hasattr(module, '__loader__'):
|
if not hasattr(module, '__loader__'):
|
||||||
module.__loader__ = self
|
module.__loader__ = self
|
||||||
return module
|
return module
|
||||||
_wrap(wrapper, fxn)
|
_wrap(set_loader_wrapper, fxn)
|
||||||
return wrapper
|
return set_loader_wrapper
|
||||||
|
|
||||||
|
|
||||||
def module_for_loader(fxn):
|
def module_for_loader(fxn):
|
||||||
|
@ -157,7 +157,7 @@ def module_for_loader(fxn):
|
||||||
the second argument.
|
the second argument.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
def decorated(self, fullname, *args, **kwargs):
|
def module_for_loader_wrapper(self, fullname, *args, **kwargs):
|
||||||
module = sys.modules.get(fullname)
|
module = sys.modules.get(fullname)
|
||||||
is_reload = bool(module)
|
is_reload = bool(module)
|
||||||
if not is_reload:
|
if not is_reload:
|
||||||
|
@ -172,8 +172,8 @@ def module_for_loader(fxn):
|
||||||
if not is_reload:
|
if not is_reload:
|
||||||
del sys.modules[fullname]
|
del sys.modules[fullname]
|
||||||
raise
|
raise
|
||||||
_wrap(decorated, fxn)
|
_wrap(module_for_loader_wrapper, fxn)
|
||||||
return decorated
|
return module_for_loader_wrapper
|
||||||
|
|
||||||
|
|
||||||
def _check_name(method):
|
def _check_name(method):
|
||||||
|
@ -184,32 +184,32 @@ def _check_name(method):
|
||||||
compared against. If the comparison fails then ImportError is raised.
|
compared against. If the comparison fails then ImportError is raised.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
def inner(self, name, *args, **kwargs):
|
def _check_name_wrapper(self, name, *args, **kwargs):
|
||||||
if self._name != name:
|
if self._name != name:
|
||||||
raise ImportError("loader cannot handle %s" % name)
|
raise ImportError("loader cannot handle %s" % name)
|
||||||
return method(self, name, *args, **kwargs)
|
return method(self, name, *args, **kwargs)
|
||||||
_wrap(inner, method)
|
_wrap(_check_name_wrapper, method)
|
||||||
return inner
|
return _check_name_wrapper
|
||||||
|
|
||||||
|
|
||||||
def _requires_builtin(fxn):
|
def _requires_builtin(fxn):
|
||||||
"""Decorator to verify the named module is built-in."""
|
"""Decorator to verify the named module is built-in."""
|
||||||
def 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("{0} is not a built-in module".format(fullname))
|
||||||
return fxn(self, fullname)
|
return fxn(self, fullname)
|
||||||
_wrap(wrapper, fxn)
|
_wrap(_requires_builtin_wrapper, fxn)
|
||||||
return wrapper
|
return _requires_builtin_wrapper
|
||||||
|
|
||||||
|
|
||||||
def _requires_frozen(fxn):
|
def _requires_frozen(fxn):
|
||||||
"""Decorator to verify the named module is frozen."""
|
"""Decorator to verify the named module is frozen."""
|
||||||
def 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("{0} is not a frozen module".format(fullname))
|
||||||
return fxn(self, fullname)
|
return fxn(self, fullname)
|
||||||
_wrap(wrapper, fxn)
|
_wrap(_requires_frozen_wrapper, fxn)
|
||||||
return wrapper
|
return _requires_frozen_wrapper
|
||||||
|
|
||||||
|
|
||||||
def _suffix_list(suffix_type):
|
def _suffix_list(suffix_type):
|
||||||
|
|
|
@ -754,6 +754,7 @@ Gaël Pasgrimaud
|
||||||
Randy Pausch
|
Randy Pausch
|
||||||
Samuele Pedroni
|
Samuele Pedroni
|
||||||
Marcel van der Peijl
|
Marcel van der Peijl
|
||||||
|
Berker Peksag
|
||||||
Steven Pemberton
|
Steven Pemberton
|
||||||
Santiago Peresón
|
Santiago Peresón
|
||||||
George Peristerakis
|
George Peristerakis
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue