You are, of course, correct. Bill
Guido van Rossum <[EMAIL PROTECTED]> wrote: > Are you sure? I thought that was different -- httplib depends on the > reference count semantics of socket objects. The closefd behavior that > Christian is describing here is part of the (new in 2.6 and 3.0) io.py > module. > > On Mon, Nov 3, 2008 at 7:25 PM, Bill Janssen <[EMAIL PROTECTED]> wrote: > > Note that the whole httplib uses this behavior -- issue 1348. > > > > Bill > > > > Guido van Rossum <[EMAIL PROTECTED]> wrote: > > > >> I see no problem in fixing this in 3.0 and 2.6.1. The current behavior > >> is a bug and I see no reason to expect that users would depend on it. > >> Sure, it might occasionally mask a bug elsewhere in their code -- but > >> given how esoteric this whole issue is I think its fine to consider > >> this simply a bug and fix it. > >> > >> 2008/11/2 Christian Heimes <[EMAIL PROTECTED]>: > >> > Martin v. Löwis wrote: > >> >> > >> >> However, this is the documented behavior: > >> >> > >> >> "the underlying file descriptor will be kept open when the file is > >> >> closed." > >> >> > >> >> and, for close > >> >> > >> >> "Flush and close this stream." > >> >> > >> >> It would help if the documentation of close would read > >> >> > >> >> "Flush and close this stream. This method has no effect if the file is > >> >> already closed, or if closefd was False when the file object was > >> >> created." > >> > > >> > I would use a slightly different wording > >> > > >> > "Flush and close this stream. This method has no effect if the file is > >> > already closed. Once the file is closed, any operation on the file (e.g. > >> > reading or writing) will fail. Close doesn't close the internal file > >> > descriptor if closefd was False when the file object was created." > >> > > >> > In my opinion close() should render the file *object* disabled in all > >> > cases. closefd should just leave the file *descriptor* open, not the > >> > file *object*. > >> > > >> >> It might be useful if closefd attribute could be reflected, so that > >> >> applications that know about it and really want to close the file > >> >> still can do that. > >> > > >> > Agreed! My latest patch adds a read only attribute closefd. > >> > > >> >> Also, is it really the case that close has no effect if closefd > >> >> was given? ISTM that it will still flush the file, for a > >> >> _BufferedIOMixin. This should systematically be clarified: it > >> >> should either always flush, or never (although "always flush" > >> >> seems more useful). > >> > > >> > I haven't looked at the code in the io yet. Our discussion was mostly > >> > about the _fileio C extension. To clarify the issue with an example > >> > > >> >>>> out = open(1, "w", closefd=False) > >> >>>> out.write("example\n") > >> > example > >> > 8 > >> >>>> out.close() > >> > /usr/local/lib/python3.0/io.py:1461: RuntimeWarning: Trying to close > >> > unclosable fd! > >> > self.buffer.close() > >> >>>> out.write("example\n") > >> > example > >> > 8 > >> > > >> > I think the second out.write() call should raise an exception instead of > >> > writing the string to the fd 1. > >> > > >> >> Also, why does the _BufferedIOMixin discard exceptions from flush? > >> >> Errors should never pass silently. > >> > > >> > Ack! > >> > > >> >> Also, why does the FileIO.close first invoke _FileIO.close, then > >> >> RawIOBase.close? IIUC, FileIO.close will close the file handle, > >> >> yet RawIOBase will attempt to flush afterwards. > >> > > >> > Apparently the io module hasn't been reviewed for its massive usage of > >> > close. :/ > >> > > >> > Christian > >> > _______________________________________________ > >> > Python-3000 mailing list > >> > Python-3000@python.org > >> > http://mail.python.org/mailman/listinfo/python-3000 > >> > Unsubscribe: > >> > http://mail.python.org/mailman/options/python-3000/guido%40python.org > >> > > >> > >> > >> > >> -- > >> --Guido van Rossum (home page: http://www.python.org/~guido/) > >> _______________________________________________ > >> Python-3000 mailing list > >> Python-3000@python.org > >> http://mail.python.org/mailman/listinfo/python-3000 > >> Unsubscribe: > >> http://mail.python.org/mailman/options/python-3000/janssen%40parc.com > > > > > > -- > --Guido van Rossum (home page: http://www.python.org/~guido/) _______________________________________________ Python-3000 mailing list Python-3000@python.org http://mail.python.org/mailman/listinfo/python-3000 Unsubscribe: http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com