[Python-Dev] PEP 415: Implementing PEP 409 differently (original) (raw)

Yury Selivanov yselivanov.ml at gmail.com
Tue Feb 28 17:42:47 CET 2012


Big +1.

Indeed, this whole Ellipsis approach is just an awful hack.

On 2012-02-26, at 8:30 PM, Benjamin Peterson wrote:

PEP: 415 Title: Implementing PEP 409 differently Version: RevisionRevisionRevision Last-Modified: DateDateDate Author: Benjamin Peterson <benjamin at python.org> Status: Draft Type: Standards Track Content-Type: text/x-rst Created: 26-Feb-2012 Post-History: 26-Feb-2012

Abstract ======== PEP 409 allows PEP 3134 exception contexts and causes to be suppressed when the exception is printed. This is done using the raise exc from None syntax. This PEP proposes to implement context and cause suppression differently. Rationale ========= PEP 409 changes _cause_ to be Ellipsis by default. Then if _cause_ is set to None by raise exc from None, no context or cause will be printed should the exception be uncaught. The main problem with this scheme is it complicates the role of _cause_. _cause_ should indicate the cause of the exception not whether _context_ should be printed or not. This use of _cause_ is also not easily extended in the future. For example, we may someday want to allow the programmer to select which of _context_ and _cause_ will be printed. The PEP 409 implementation is not amendable to this. The use of Ellipsis is a hack. Before PEP 409, Ellipsis was used exclusively in extended slicing. Extended slicing has nothing to do with exceptions, so it's not clear to someone inspecting an exception object why _cause_ should be set to Ellipsis. Using Ellipsis by default for _cause_ makes it asymmetrical with _context_. Proposal ======== A new attribute on BaseException, _suppresscontext_, will be introduced. The raise exc from None syntax will cause exc._suppresscontext_ to be set to True. Exception printing code will check for the attribute to determine whether context and cause will be printed. _cause_ will return to its original purpose and values. There is precedence for _suppresscontext_ with the printlineandfile exception attribute. Patches ======= There is a patch on Issue 14133. References ========== .. issue 14133: http://bugs.python.org/issue6210 Copyright ========= This document has been placed in the public domain.


Python-Dev mailing list Python-Dev at python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/yselivanov.ml%40gmail.com



More information about the Python-Dev mailing list