Patchwork D2931: thirdparty: allow zope.interface.advice to be lazily imported

login
register
mail settings
Submitter phabricator
Date March 22, 2018, 4:09 a.m.
Message ID <differential-rev-PHID-DREV-wlcluevmrpx35klnupyx-req@phab.mercurial-scm.org>
Download mbox | patch
Permalink /patch/29768/
State Superseded
Headers show

Comments

phabricator - March 22, 2018, 4:09 a.m.
indygreg created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REVISION SUMMARY
  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.

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D2931

AFFECTED FILES
  mercurial/thirdparty/zope/interface/declarations.py

CHANGE DETAILS




To: indygreg, #hg-reviewers
Cc: mercurial-devel

Patch

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
@@ -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