[IPython-dev] Fwd: Status of pre-0.10 reviews and merges
Brian Granger
ellisonbg.net at gmail.com
Thu Apr 2 23:09:21 EDT 2009
---------- Forwarded message ----------
From: Brian Granger <ellisonbg.net at gmail.com>
Date: Thu, Apr 2, 2009 at 8:09 PM
Subject: Re: [IPython-dev] Status of pre-0.10 reviews and merges
To: Jörgen Stenarson <jorgen.stenarson at bostream.nu>
> Some random thoughts on the refactoring process:
>
> When working on the genutils.py patch I thought that it would be nice to
> have smaller module files because it is somewhat difficult to navigate huge
> modules and sometimes it can be difficult to guess in what module I should
> look for some function.
Yes, partitioning large modules like genutils into more logical
modules is part of my reorganization plans. Details to follow.
> All uses of from xx import * should be removed. This is one refactoring that
> would really benefit from good test coverage.
Definitely!
> To simplify debugging I have found the following idiom useful when
> re-raising exceptions because it preserves the full traceback:
Yes, this type of thing is helpful.
> import sys
>
> def a():
> 1/0
>
> def b():
> try:
> a()
> except ZeroDivisionError, x:
> raise ValueError, None, sys.exc_info()[2]
> def c():
> try:
> a()
> except ZeroDivisionError, x:
> raise ValueError
>
>
> From an interactive session after running the prop_traceback.py script:
>
> In [1]: b()
> ---------------------------------------------------------------------------
> ValueError Traceback (most recent call last)
>
> C:\python\<ipython console> in <module>()
>
> C:\python\prop_traceback.py in b()
> 9 def b():
> 10 try:
> ---> 11 a()
> 12 except ZeroDivisionError, x:
> 13 raise ValueError, None, sys.exc_info()[2]
>
> C:\python\prop_traceback.py in a()
> 5
> 6 def a():
> ----> 7 1/0
> 8
> 9 def b():
>
> ValueError:
>
> In [2]: c()
> ---------------------------------------------------------------------------
> ValueError Traceback (most recent call last)
>
> C:\python\<ipython console> in <module>()
>
> C:\python\prop_traceback.py in c()
> 16 a()
> 17 except ZeroDivisionError, x:
> ---> 18 raise ValueError
> 19
> 20
>
> ValueError:
>
> As you can see when calling b() we get the full traceback up to the a
> function unlike in c() where the traceback terminates in the except cluse. I
> have found this technique very useful when debugging code. I do not know in
> what way this will affect performance or if there are any other drawbacks in
> threaded code or elsewhere...
>
> /Jörgen
>
More information about the IPython-dev
mailing list