indygreg created this revision. Herald added a subscriber: mercurial-devel. Herald added a reviewer: hg-reviewers.
REVISION SUMMARY 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. REPOSITORY rHG Mercurial REVISION DETAIL https://phab.mercurial-scm.org/D2980 AFFECTED FILES mercurial/thirdparty/zope/interface/declarations.py CHANGE DETAILS diff --git a/mercurial/thirdparty/zope/interface/declarations.py b/mercurial/thirdparty/zope/interface/declarations.py --- a/mercurial/thirdparty/zope/interface/declarations.py +++ b/mercurial/thirdparty/zope/interface/declarations.py @@ -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() To: indygreg, #hg-reviewers Cc: mercurial-devel _______________________________________________ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel