[Python-Dev] Deprecate sys.exitfunc?

Guido van Rossum guido at python.org
Tue Aug 17 23:48:35 CEST 2004


> On Tue, Aug 17, 2004 at 08:28:03AM -0700, Guido van Rossum wrote:
> > > Well, none, really.  But let's not change the name sys.exitfunc just
> > > for the sake of deprecation, because it will probably break existing
> > > and well-behaving modules (not just non-well-behaving ones).
> > 
> > That's never been a reason not to deprecate something.
> 
> Sorry.  Sure.  What I was opposing here is Raymond's original claim in this 
> thread, which was apparently the reason he wanted to deprecate sys.exitfunc:
> 
> """
> The atexit module does attempt to co-exist by introducing code to
> register a function in sys.exitfunc if it were defined before "import
> atexit" was called.  However, this is unreliable because it depends on
> import order and the library is free to introduce an earlier "import
> atexit" which would break code relying on the co-existance mechanism.
> """
> 
> I claim that there is nothing unreliable or depending on import
> order here, as long as all concerned parties do the right thing.
> Now if there are other good reasons to deprecate sys.exitfunc, like
> it being another way of doing something for which a better interface
> is provided, then fine.

Raymond may have overstated his case somewhat.  But the fact is that
it is easy to abuse sys.exitfunc with a poorly written handler, and
the atexit module avoids this.  This in itself to me looks like a
classic "deprecate the old solution, recommend the new way".  TOOWTDI!

--Guido van Rossum (home page: http://www.python.org/~guido/)


More information about the Python-Dev mailing list