[Python-Dev] PEP 340 -- concept clarification

Guido van Rossum gvanrossum at gmail.com
Wed May 4 01:41:53 CEST 2005


> >Maybe if you drop support for the "separate protocol" alternative... :-)
> 
> I don't understand you.  Are you suggesting a horse trade, or...?

Only tongue-in-cheek. :-)

> >I had never heard of that PEP. How much code is there in the field?
> 
> Maybe a dozen or so web applications and frameworks (including Zope,
> Quixote, PyBlosxom) and maybe a half dozen servers (incl. Twisted and
> mod_python).  A lot of the servers are based on my wsgiref library, though,
> so it probably wouldn't be too horrible a job to make everybody add
> support; I might even be able to fudge wsgiref so that wsgiref-based
> servers don't even see an issue.
> 
> Modifying the spec is potentially more controversial, however; it'll have
> to go past the Web-SIG, and I assume the first thing that'll be asked is,
> "Why aren't generators getting a close() method then?", so I figured I
> should ask that question first.
> 
> I'd completely forgotten about this being an issue until Raymond mentioned
> g.close(); I'd previously gotten the impression that PEP 325 was expected
> to be approved, otherwise I wouldn't have written support for it into PEP 333.
> 
> >Written by whom?
> 
> I used to know who all had written implementations, but there are now too
> many to keep track of.

Given all that, it's not infeasible to add a close() method to
generators as a shortcut for this:

    def close(self):
        try:
            self.__exit__(StopIteration)
        except StopIteration:
            break
        else:
            # __exit__() didn't
            raise RuntimeError("or some other exception")

I'd like the block statement to be defined exclusively in terms of
__exit__() though.

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


More information about the Python-Dev mailing list