Yeah, a flag for IMAP4 objects sounds like it'd solve backwards-compatibility problems. E.g.
imaplib.IMAP4_SSL(..., commit=manual/auto) As for handling errors with automatic commits, we should probably just defer to whatever Python IO does to remain consistent. On Oct 30, 2017, 1:33 PM, at 1:33 PM, Guido van Rossum <gu...@python.org> wrote: >But maybe if __exit__ is called with an exception it should roll back. > >In any case it looks like your proposal could break existing code (e.g. >code that uses `with` depending on its current behavior, using some >other >logic to decide whether to commit or not) and that feels difficult to >overcome. Perhaps a new method or flag argument can be added to request >that the transactions be automatically committed? > >On Mon, Oct 30, 2017 at 10:20 AM, Drew <dwarwic...@gmail.com> wrote: > >> IMAP4.close closes the selected inbox and commits changes such as >> deletions. It is not called on IMAP4.__exit__ (only logout is, which >> doesn't call close in its call stack) however, so: >> >> with imaplib.IMAP4_SSL(...) as i: >> ... >> >> would fail to commit those changes. close must be explicitly invoked >i.e. >> >> with imaplib.IMAP4_SSL(...) as i: >> ... >> i.close() >> >> This is counterintuitive however, as the with statement is meant to >> automatically clean up. Another programmer might come along and >delete >> i.close() because it seems unnecessary. Now changes aren't being >committed >> and the programmer doesn't realize it's because of this weird Python >> idiosyncracy. >> >> Python IO such as open commits changes automatically, so I'm not sure >why >> IMAP4 doesn't and only logs out. >> >> _______________________________________________ >> Python-ideas mailing list >> Python-ideas@python.org >> https://mail.python.org/mailman/listinfo/python-ideas >> Code of Conduct: http://python.org/psf/codeofconduct/ >> >> > > >-- >--Guido van Rossum (python.org/~guido)
_______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/