<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 11 (filtered medium)">
<!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]-->
<title>[IronPython] New proposed exception model for IronPython</title>
<style>
<!--
font-face
        {font-family:Wingdings;}
font-face
        {font-family:Tahoma;}

 /* Font Definitions */
 @font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:purple;
        text-decoration:underline;}
p.Python, li.Python, div.Python
        {margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.2in;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";}
span.emailstyle17
        {font-family:Arial;
        color:navy;}
span.emailstyle18
        {font-family:Arial;
        color:navy;}
span.EmailStyle20
        {mso-style-type:personal-reply;
        font-family:Arial;
        color:navy;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.25in 1.0in 1.25in;}
div.Section1
        {page:Section1;}
 /* List Definitions */
 @list l0
        {mso-list-id:1770275771;
        mso-list-template-ids:1164361216;}
@list l0:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
-->
</style>

</head>

<body lang=EN-US link=blue vlink=purple>

<div class=Section1>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>I like this suggestion for its simplicity
and consistency.&nbsp; Here are two more cases: <o:p></o:p></span></font></p>

<p class=MsoNormal style='text-indent:.5in'><font size=2 color=navy face=Arial><span
style='font-size:10.0pt;font-family:Arial;color:navy'>(1) Exceptions generated
from code where no libraries are explicitly used.&nbsp; Here CPython (running
the script) creates a Python exception, and IronPython (running a DLL or EXE) creates
a .NET (or IP) exception, so this shouldn&#8217;t be a problem, and<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-indent:.5in'><font size=2 color=navy face=Arial><span
style='font-size:10.0pt;font-family:Arial;color:navy'>(2) Exceptions generated
from user-defined libraries that mix Python and .Net libraries.&nbsp; This is
sometimes done to support a need in the CPython world (as in the case of
Matplotlib, where I wrote a .Net backend &#8211; although I seem to be the only
one who uses it </span></font><font size=2 color=navy face=Wingdings><span
style='font-size:10.0pt;font-family:Wingdings;color:navy'>J</span></font><font
size=2 color=navy face=Arial><span style='font-size:10.0pt;font-family:Arial;
color:navy'>), and other times the library may be intended only to target .Net
(such as a .Net app, which is what Keith&#8217;s suggestion addresses).&nbsp; It
is this case that contains the wrinkles, as a library writer cannot predict who
the end user will be.<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-indent:.5in'><font size=2 color=navy face=Arial><span
style='font-size:10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>(as Tim Peters might say)<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>glad-to-point-out-problems-that-i-don&#8217;t-have-to-solve-ly
y&#8217;rs,<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>--Thane<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<div style='border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt'>

<div>

<div class=MsoNormal align=center style='text-align:center'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>

<hr size=2 width="100%" align=center tabindex=-1>

</span></font></div>

<p class=MsoNormal><b><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma;font-weight:bold'>From:</span></font></b><font size=2
face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'>
users-bounces@lists.ironpython.com [mailto:users-bounces@lists.ironpython.com] <b><span
style='font-weight:bold'>On Behalf Of </span></b>Ernst, Nathan<br>
<b><span style='font-weight:bold'>Sent:</span></b> Thursday, December 15, 2005
9:22 PM<br>
<b><span style='font-weight:bold'>To:</span></b> Discussion of IronPython<br>
<b><span style='font-weight:bold'>Subject:</span></b> Re: [IronPython] New
proposed exception model for IronPython</span></font><o:p></o:p></p>

</div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Personally, what I would propose would be:</span></font><o:p></o:p></p>

<ul style='margin-top:0in' type=disc>
 <li class=MsoNormal style='color:navy;mso-list:l0 level1 lfo1'><font size=2
     color=navy face=Arial><span style='font-size:10.0pt;font-family:Arial'>Python
     libraries throw python exceptions.</span></font><o:p></o:p></li>
 <li class=MsoNormal style='color:navy;mso-list:l0 level1 lfo1'><font size=2
     color=navy face=Arial><span style='font-size:10.0pt;font-family:Arial'>.Net
     libs ought to throw .Net exceptions</span></font><o:p></o:p></li>
 <li class=MsoNormal style='color:navy;mso-list:l0 level1 lfo1'><font size=2
     color=navy face=Arial><span style='font-size:10.0pt;font-family:Arial'>Where
     python libs are implemented using .Net libs, .Net exceptions ought to be
     wrapped with python libs to the fullest extent reasonably possible.</span></font><o:p></o:p></li>
</ul>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>I believe these three points would lead to
a consistent behavior and compatibility with CPython based scripts.</span></font><o:p></o:p></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>&nbsp;</span></font><o:p></o:p></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>While I like Keith&#8217;s suggestion of a
file-scoped mapping, I&#8217;m worried it might even further complicate matters
by having to compensate for both schemes (throwing python exceptions, versus
throwing .Net exceptions). &nbsp;I make my suggestion of having it effectively
left up to the library implementer because I think it is reasonable to expect
standard python libraries to throw python exceptions.&nbsp; I also think its
reasonable that if you are using ironpython specific libraries (or .Net libs
directly) to expect to have to handle .Net exceptions.</span></font><o:p></o:p></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>&nbsp;</span></font><o:p></o:p></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>I&#8217;m happy to see the progress that
is being made with the new releases (especially with regards to regex
support).&nbsp; I think we&#8217;re fast approaching the point where ironpython
can be used as a replacement for CPython.</span></font><o:p></o:p></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>&nbsp;</span></font><o:p></o:p></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Thanks,</span></font><o:p></o:p></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Nathan Ernst</span></font><o:p></o:p></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>&nbsp;</span></font><o:p></o:p></p>

<div>

<div class=MsoNormal align=center style='text-align:center'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>

<hr size=2 width="100%" align=center tabindex=-1>

</span></font></div>

<p class=MsoNormal><b><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma;font-weight:bold'>From:</span></font></b><font size=2
face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'>
users-bounces@lists.ironpython.com [mailto:users-bounces@lists.ironpython.com] <b><span
style='font-weight:bold'>On Behalf Of </span></b>Keith J. Farmer<br>
<b><span style='font-weight:bold'>Sent:</span></b> Thursday, December 15, 2005
7:27 PM<br>
<b><span style='font-weight:bold'>To:</span></b> Discussion of IronPython<br>
<b><span style='font-weight:bold'>Subject:</span></b> RE: [IronPython] New
proposed exception model for IronPython</span></font><o:p></o:p></p>

</div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>&nbsp;<o:p></o:p></span></font></p>

<div id=idOWAReplyText73216>

<div>

<p class=MsoNormal><font size=2 color=black face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:black'>It's something that should be scoped at
the source file level or lower.&nbsp; Otherwise, someone could map Foo
exception to PythonFoo exception, someone else could map Foo to PythonBar, and
some poor slob would be left wondering why the first bit of code is suddenly
misbehaving.</span></font><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>&nbsp;<o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>#BeginMapException &lt;CliException1&gt;
&lt;PythonException1&gt;</span></font><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>...</span></font><o:p></o:p></p>

</div>

<div>

<div>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp; #BeginMapException &lt;CliException2&gt;
&lt;PythonException2&gt;</span></font><o:p></o:p></p>

</div>

<div>

<div>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp; ...</span></font><o:p></o:p></p>

</div>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp; #EndMapException &lt;CliException2&gt;</span></font><o:p></o:p></p>

</div>

<div>

<div>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>...</span></font><o:p></o:p></p>

</div>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>#EndMapException &lt;CliException1&gt;</span></font><o:p></o:p></p>

</div>

</div>

</div>

<div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>&nbsp;<o:p></o:p></span></font></p>

</div>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>#BeginMapException &lt;CliException1&gt;
&lt;PythonException3&gt;</span></font><o:p></o:p></p>

</div>

<div>

<div>

<div>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>...</span></font><o:p></o:p></p>

</div>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>#EndMapException &lt;CliException1&gt;</span></font><o:p></o:p></p>

</div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>&nbsp;<o:p></o:p></span></font></p>

<div class=MsoNormal align=center style='text-align:center'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>

<hr size=2 width="100%" align=center tabIndex=-1>

</span></font></div>

<p class=MsoNormal style='margin-bottom:12.0pt'><b><font size=2 face=Tahoma><span
style='font-size:10.0pt;font-family:Tahoma;font-weight:bold'>From:</span></font></b><font
size=2 face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'>
users-bounces@lists.ironpython.com on behalf of Dino Viehland<br>
<b><span style='font-weight:bold'>Sent:</span></b> Thu 12/15/2005 3:40 PM<br>
<b><span style='font-weight:bold'>To:</span></b> Discussion of IronPython<br>
<b><span style='font-weight:bold'>Subject:</span></b> Re: [IronPython] New
proposed exception model for IronPython</span></font><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>It&#8217;s an extremely interesting idea
and one that I personally like.&nbsp; Being the new guy I&#8217;ll want to hear
Jim and Martin&#8217;s input too </span></font><font size=2 color=navy
face=Wingdings><span style='font-size:10.0pt;font-family:Wingdings;color:navy'>J</span></font><font
size=2 color=navy face=Arial><span style='font-size:10.0pt;font-family:Arial;
color:navy'>.</span></font><o:p></o:p></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Ultimately there&#8217;s no reason why we
couldn&#8217;t either expose supplementary dictionaries that provide for
user-defined exception translation or even to expose the dictionaries that we
use internally (to allow modifying the systems defaults).&nbsp; It also seems
like it&#8217;d be a great way to keep the exception system highly dynamic and
give the advanced Python developer more control of it.</span></font><o:p></o:p></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>I&#8217;ll make sure to make a note of
this to see if we can get it included.</span></font><o:p></o:p></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>&nbsp;<o:p></o:p></span></font></p>

<div>

<div class=MsoNormal align=center style='text-align:center'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>

<hr size=2 width="100%" align=center tabIndex=-1>

</span></font></div>

<p class=MsoNormal><b><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma;font-weight:bold'>From:</span></font></b><font size=2
face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'>
users-bounces@lists.ironpython.com [mailto:users-bounces@lists.ironpython.com] <b><span
style='font-weight:bold'>On Behalf Of </span></b>Keith J. Farmer<br>
<b><span style='font-weight:bold'>Sent:</span></b> Thursday, December 15, 2005
3:25 PM<br>
<b><span style='font-weight:bold'>To:</span></b> Discussion of IronPython<br>
<b><span style='font-weight:bold'>Subject:</span></b> Re: [IronPython] New
proposed exception model for IronPython</span></font><o:p></o:p></p>

</div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>&nbsp;<o:p></o:p></span></font></p>

<div id=idOWAReplyText38987>

<div>

<p class=MsoNormal><font size=2 color=black face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:black'>Would there be a way to map new
exceptions between IP and the CLI?</span></font><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>&nbsp;<o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>For example, if I create a new Python exception, and want to
bind it to System.ArgumentException, or convsersely if I create a new CLI
exception that I want to map to a Python equivalent.&nbsp; This would be an
IronPython-ism, but a worthwhile one I think.</span></font><o:p></o:p></p>

</div>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><br>
&nbsp;<o:p></o:p></span></font></p>

</div>

</div>

</div>

</div>

</body>

</html>