classification
Title: new-style exceptions
Type: Stage:
Components: Interpreter Core Versions: Python 2.5
process
Status: closed Resolution: accepted
Dependencies: Superseder:
Assigned To: Nosy List: brett.cannon, jimjjewett, mcherm, mwh, ncoghlan, simon.percivall, tim.peters
Priority: normal Keywords: patch

Created on 2005-01-18 18:09 by mwh, last changed 2006-03-01 04:35 by brett.cannon. This issue is now closed.

Files
File name Uploaded Description Edit
new-new-new-new-new-style-exceptions.diff mwh, 2005-12-05 22:17 mwh's attempt #4
Messages (15)
msg47572 - (view) Author: Michael Hudson (mwh) (Python committer) Date: 2005-01-18 18:09
This patch allows new-style exceptions and makes Exception a 
new-style class.

The test suite runs, apart from failures in test_tempfile (will dig, 
but doubt this is my fault) and test__locale (known OS X problem).
msg47573 - (view) Author: Simon Percivall (simon.percivall) Date: 2005-01-18 19:47
Logged In: YES 
user_id=329382

One thing: Raising an old-style class/instance doesn't give a traceback or 
populate sys.last_*.
msg47574 - (view) Author: Michael Hudson (mwh) (Python committer) Date: 2005-01-19 13:25
Logged In: YES 
user_id=6656

You're right!  Odd.  No time to fix it today, I'm afraid.
msg47575 - (view) Author: Michael Hudson (mwh) (Python committer) Date: 2005-02-09 14:18
Logged In: YES 
user_id=6656

New patch attached.  Did this a while ago, don't actually remember the 
details of what's new :-/

The problem with the previous patch was that one of my exception-
checking macros had the side-effect of clearing any pending exception...
msg47576 - (view) Author: Michael Hudson (mwh) (Python committer) Date: 2005-02-15 15:40
Logged In: YES 
user_id=6656

I found the final wart (caught by test_tempfile of all things).  I think the 
attached is good to go.

Issues remaining: test_pickletools fails, because PickleError is now new-
style and thus pickles differently.  Docs.
msg47577 - (view) Author: Tim Peters (tim.peters) * (Python committer) Date: 2005-02-15 16:03
Logged In: YES 
user_id=31435

FYI, there's nothing special about PicklingError in the 
pickletools doctest, it's just aiming at an example of an 
instance -- that it's also an exception instance is irrelevant 
to what the test is aiming at.

Tell you what:  I'll check in a suitable change to 
pickletools.py, so that the example it uses stops interfering 
with this patch.
msg47578 - (view) Author: Tim Peters (tim.peters) * (Python committer) Date: 2005-02-15 16:17
Logged In: YES 
user_id=31435

FYI, there's nothing special about PicklingError in the 
pickletools doctest, it's just aiming at an example of an 
instance -- that it's also an exception instance is irrelevant 
to what the test is aiming at.

Tell you what:  I'll check in a suitable change to 
pickletools.py, so that the example it uses stops interfering 
with this patch.
msg47579 - (view) Author: Jim Jewett (jimjjewett) Date: 2005-02-15 17:34
Logged In: YES 
user_id=764593

Several lines near the end of errors.c had no visible 
change.  Was this a whitespace cleanup, or is this a risk of 
tab/space mixing?
msg47580 - (view) Author: Michael Hudson (mwh) (Python committer) Date: 2005-02-15 17:39
Logged In: YES 
user_id=6656

Jim: Yes.  It looks like I ran delete-trailing-whitespace on the file at 
some point.  I could redo the diff without them, but it would be tedious...

Tim: thanks!
msg47581 - (view) Author: Jim Jewett (jimjjewett) Date: 2005-02-15 17:51
Logged In: YES 
user_id=764593

Is it worth adding a comment on parsing precedence?  

An object can be both an instance and a class, which puts 
some ambiguity between "raise class" and "raise 
classinstance".  

Assuming the class seems sensible; I'm just wondering 
whether it should be made explicit.  (Making something 
both an instance and a subclass of anything besides object 
might be weird enough that you don't *want* to document 
the results yet.)
msg47582 - (view) Author: Michael Hudson (mwh) (Python committer) Date: 2005-02-15 19:37
Logged In: YES 
user_id=6656

> Is it worth adding a comment on parsing precedence?

I've been studiously avoiding thinking about that :)

> Making something both an instance and a subclass of
> anything besides object might be weird enough that you
> don't *want* to document the results yet.

Quite.  What happens, happens IMHO.  I'm prepared to be argued into a 
different position on this, but I do think the only reason someone would 
do this is curiousity :)
msg47583 - (view) Author: Michael Hudson (mwh) (Python committer) Date: 2005-12-05 22:17
Logged In: YES 
user_id=6656

Here's a patch updated to SVN HEAD (the PEP 342 implementation meant this 
wasn't quite trivial).
msg47584 - (view) Author: Nick Coghlan (ncoghlan) * (Python committer) Date: 2005-12-10 17:19
Logged In: YES 
user_id=1038590

New patch worked fine on Ubuntu 5.10 (all tests in 'make
test' passed, aside from the skips due to the various
extension modules I can't build)
msg47585 - (view) Author: Michael Chermside (mcherm) Date: 2005-12-12 17:00
Logged In: YES 
user_id=99874

I haven't tried out the patch, I just want to chime in to
say how VERY much I would like to have this. I'm ready NOW
to completely give up using old-style classes, but because
of exceptions I'm not allowed to. This would fix that for
me. If Python had a "vote for your favorite bugs" list, I'd
be voting for this one.
msg47586 - (view) Author: Brett Cannon (brett.cannon) * (Python committer) Date: 2006-03-01 04:35
Logged In: YES 
user_id=357491

Rev. 42711 has the patch with the requisite tweaks for it to
work for PEP 352.

Thanks, Michael!
History
Date User Action Args
2005-01-18 18:09:36mwhcreate