Mercurial > hg
changeset 37208:b9dd8403d8ff
zope: force module import by importing symbols
Previously, we tried to import a module and handle the ImportError.
Our lazy module importer doesn't verify the module exists and returns
a dummy object representing the module. Only once we attempt to load
a symbol in the module does the ImportError get raises.
This means that simple imports inside `try..except ImportError` don't
detect missing modules.
This commit changes imports in zope.interface to access symbols, thus
forcing module load and triggering ImportError.
This fixes zope.interface for pure builds.
Differential Revision: https://phab.mercurial-scm.org/D2980
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Fri, 30 Mar 2018 13:39:06 -0700 |
parents | d3f1d3e4e58d |
children | 2208149c4b8e |
files | mercurial/thirdparty/zope/interface/declarations.py |
diffstat | 1 files changed, 7 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/thirdparty/zope/interface/declarations.py Fri Mar 30 13:17:20 2018 -0700 +++ b/mercurial/thirdparty/zope/interface/declarations.py Fri Mar 30 13:39:06 2018 -0700 @@ -640,12 +640,9 @@ # Try to get C base: try: - from . import _zope_interface_coptimizations + from ._zope_interface_coptimizations import ClassProvidesBase except ImportError: pass -else: - from ._zope_interface_coptimizations import ClassProvidesBase - class ClassProvides(Declaration, ClassProvidesBase): """Special descriptor for class __provides__ @@ -917,15 +914,13 @@ _empty = Declaration() try: - from . import _zope_interface_coptimizations + from ._zope_interface_coptimizations import ( + getObjectSpecification, + implementedBy, + ObjectSpecificationDescriptor, + providedBy, + ) except ImportError: pass -else: - from ._zope_interface_coptimizations import implementedBy - from ._zope_interface_coptimizations import providedBy - from ._zope_interface_coptimizations import ( - getObjectSpecification) - from ._zope_interface_coptimizations import ( - ObjectSpecificationDescriptor) objectSpecificationDescriptor = ObjectSpecificationDescriptor()