[PATCH 1 of 3] demandimport: define an importnow context manager

Jordi Gutiérrez Hermoso jordigh at octave.org
Wed May 27 13:39:14 CDT 2015


On Tue, 2015-05-26 at 13:45 -0700, Pierre-Yves David wrote:
> 
> On 05/26/2015 01:35 PM, Jordi Gutiérrez Hermoso wrote:
> > # HG changeset patch
> > # User Jordi Gutiérrez Hermoso <jordigh at octave.org>
> > # Date 1432671771 14400
> > #      Tue May 26 16:22:51 2015 -0400
> > # Node ID ac165f67eab4ab8157f73ab229e80883d49fabe0
> > # Parent  6ac860f700b5cfeda232d5305963047696b869ca
> > demandimport: define an importnow context manager
> >
> > This can be useful for use in "with" blocks for temporarily disabling
> > demandimport.
> >
> > diff --git a/mercurial/demandimport.py b/mercurial/demandimport.py
> > --- a/mercurial/demandimport.py
> > +++ b/mercurial/demandimport.py
> > @@ -25,6 +25,8 @@ These imports will not be delayed:
> >   '''
> >
> >   import __builtin__, os, sys
> > +from contextlib import contextmanager
> > +
> >   _origimport = __import__
> >
> >   nothing = object()
> > @@ -179,3 +181,14 @@ def enable():
> >   def disable():
> >       "disable global demand-loading of modules"
> >       __builtin__.__import__ = _origimport
> > +
> > + at contextmanager
> > +def importnow():
> 
> what about: nodemandimport?

My only concern with that is that then it would read

    with demandimport.nodemandimport():

which akward to pash in English. If I'm going to be doing a negative,
I really wish I could write,

    without demandimport():

but of course this isn't valid Python.

I think I prefer Augie's recommendation to do

   with demandimport.immediate():





More information about the Mercurial-devel mailing list