Change status of PEP 352 to final.
Also clarified wording to reflect the implementation; only exceptions are new-style class. Wording was ambiguous and suggested that you could raise any new-style class which was considered insane by everyone at the core sprint at PyCon 2006. And, most importantly, a Tim-channeled Guido thought that the current implementation was the way to go. No one should be able to ``raise 42``.
This commit is contained in:
parent
7e0013445c
commit
81eabf7a0d
|
@ -67,7 +67,6 @@ Index by Category
|
||||||
|
|
||||||
SA 328 Imports: Multi-Line and Absolute/Relative Aahz
|
SA 328 Imports: Multi-Line and Absolute/Relative Aahz
|
||||||
SA 343 The "with" Statement GvR, Coghlan
|
SA 343 The "with" Statement GvR, Coghlan
|
||||||
SA 352 Required Superclass for Exceptions GvR, Cannon
|
|
||||||
|
|
||||||
Open PEPs (under consideration)
|
Open PEPs (under consideration)
|
||||||
|
|
||||||
|
@ -166,6 +165,7 @@ Index by Category
|
||||||
SF 327 Decimal Data Type Batista
|
SF 327 Decimal Data Type Batista
|
||||||
SF 341 Unifying try-except and try-finally Brandl
|
SF 341 Unifying try-except and try-finally Brandl
|
||||||
SF 342 Coroutines via Enhanced Generators GvR, Eby
|
SF 342 Coroutines via Enhanced Generators GvR, Eby
|
||||||
|
SF 352 Required Superclass for Exceptions GvR, Cannon
|
||||||
SF 353 Using ssize_t as the index type von Loewis
|
SF 353 Using ssize_t as the index type von Loewis
|
||||||
|
|
||||||
Empty PEPs (or containing only an abstract)
|
Empty PEPs (or containing only an abstract)
|
||||||
|
|
22
pep-0352.txt
22
pep-0352.txt
|
@ -3,7 +3,7 @@ Title: Required Superclass for Exceptions
|
||||||
Version: $Revision$
|
Version: $Revision$
|
||||||
Last-Modified: $Date$
|
Last-Modified: $Date$
|
||||||
Author: Brett Cannon <brett@python.org>, Guido van Rossum <guido@python.org>
|
Author: Brett Cannon <brett@python.org>, Guido van Rossum <guido@python.org>
|
||||||
Status: Accepted
|
Status: Final
|
||||||
Type: Standards Track
|
Type: Standards Track
|
||||||
Content-Type: text/x-rst
|
Content-Type: text/x-rst
|
||||||
Created: 27-Oct-2005
|
Created: 27-Oct-2005
|
||||||
|
@ -16,10 +16,11 @@ Abstract
|
||||||
In Python 2.4 and before, any (classic) class can be raised as an
|
In Python 2.4 and before, any (classic) class can be raised as an
|
||||||
exception. The plan is to allow new-style classes starting in Python
|
exception. The plan is to allow new-style classes starting in Python
|
||||||
2.5, but this makes the problem worse -- it would mean *any* class (or
|
2.5, but this makes the problem worse -- it would mean *any* class (or
|
||||||
instance) can be raised! This is a problem since it prevents any
|
instance) can be raised (this is not the case in the final version;
|
||||||
guarantees to be made about the interface of exceptions. This PEP
|
only built-in exceptions can be new-style)! This is a problem since it
|
||||||
proposes introducing a new superclass that all raised objects must
|
prevents any guarantees to be made about the interface of exceptions.
|
||||||
inherit from. Imposing the restriction will allow a standard
|
This PEP proposes introducing a new superclass that all raised objects
|
||||||
|
must inherit from. Imposing the restriction will allow a standard
|
||||||
interface for exceptions to exist that can be relied upon.
|
interface for exceptions to exist that can be relied upon.
|
||||||
|
|
||||||
One might counter that requiring a specific base class for a
|
One might counter that requiring a specific base class for a
|
||||||
|
@ -86,8 +87,6 @@ will cause the deprecation of the existing ``args`` attribute)::
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
if not self.args:
|
if not self.args:
|
||||||
argss = "()"
|
argss = "()"
|
||||||
elif len(self.args) <= 1:
|
|
||||||
argss = "(%s)" % repr(self.message)
|
|
||||||
else:
|
else:
|
||||||
argss = repr(self.args)
|
argss = repr(self.args)
|
||||||
return self.__class__.__name__ + argss
|
return self.__class__.__name__ + argss
|
||||||
|
@ -208,8 +207,6 @@ desired.
|
||||||
|
|
||||||
* Python 2.5
|
* Python 2.5
|
||||||
|
|
||||||
- allow exceptions to be new-style classes
|
|
||||||
|
|
||||||
- all standard exceptions become new-style classes
|
- all standard exceptions become new-style classes
|
||||||
|
|
||||||
- introduce BaseException
|
- introduce BaseException
|
||||||
|
@ -248,12 +245,7 @@ desired.
|
||||||
Implementation
|
Implementation
|
||||||
==============
|
==============
|
||||||
|
|
||||||
An initial patch to make exceptions new-style classes has been
|
The initial implementation of this PEP has been checked into Python 2.5 .
|
||||||
authored by Michael Hudson can be found at SF patch #1104669
|
|
||||||
[#SF_1104669]_. While it does not implement all points mentioned in
|
|
||||||
this PEP, it will most likely be used as a basis for the final path
|
|
||||||
to implement this PEP.
|
|
||||||
|
|
||||||
|
|
||||||
References
|
References
|
||||||
==========
|
==========
|
||||||
|
|
Loading…
Reference in New Issue