# HG changeset patch # User Gregory Szorc # Date 1521681220 25200 # Node ID 49630e75635db139a1067ccbdd65f078587191d7 # Parent 68ee61822182ae3f783c11f3d21d79e323aa4472 thirdparty: allow zope.interface.advice to be lazily imported The symbol from this module is only used in functions. Let's access that symbol through its imported module so importing zope.interface.advice can be lazy. Differential Revision: https://phab.mercurial-scm.org/D2931 diff -r 68ee61822182 -r 49630e75635d mercurial/thirdparty/zope/interface/declarations.py --- a/mercurial/thirdparty/zope/interface/declarations.py Wed Mar 21 19:52:30 2018 -0700 +++ b/mercurial/thirdparty/zope/interface/declarations.py Wed Mar 21 18:13:40 2018 -0700 @@ -34,7 +34,7 @@ from types import ModuleType import weakref -from .advice import addClassAdvisor +from . import advice as advicemod from .interface import InterfaceClass from .interface import SpecificationBase from .interface import Specification @@ -451,7 +451,7 @@ raise TypeError(name+" can be used only once in a class definition.") locals['__implements_advice_data__'] = interfaces, classImplements - addClassAdvisor(_implements_advice, depth=3) + advicemod.addClassAdvisor(_implements_advice, depth=3) def implements(*interfaces): """Declare interfaces implemented by instances of a class @@ -732,7 +732,7 @@ locals["__provides__"] = _normalizeargs(interfaces) - addClassAdvisor(_classProvides_advice, depth=2) + advicemod.addClassAdvisor(_classProvides_advice, depth=2) def _classProvides_advice(cls): # This entire approach is invalid under Py3K. Don't even try to fix