<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:x="urn:schemas-microsoft-com:office:excel" xmlns:p="urn:schemas-microsoft-com:office:powerpoint" xmlns:a="urn:schemas-microsoft-com:office:access" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema" xmlns:b="urn:schemas-microsoft-com:office:publisher" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:c="urn:schemas-microsoft-com:office:component:spreadsheet" xmlns:oa="urn:schemas-microsoft-com:office:activation" xmlns:html="http://www.w3.org/TR/REC-html40" xmlns:q="http://schemas.xmlsoap.org/soap/envelope/" xmlns:D="DAV:" xmlns:x2="http://schemas.microsoft.com/office/excel/2003/xml" xmlns:ois="http://schemas.microsoft.com/sharepoint/soap/ois/" xmlns:dir="http://schemas.microsoft.com/sharepoint/soap/directory/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:dsp="http://schemas.microsoft.com/sharepoint/dsp" xmlns:udc="http://schemas.microsoft.com/data/udc" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sps="http://schemas.microsoft.com/sharepoint/soap/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:udcxf="http://schemas.microsoft.com/data/udc/xmlfile" xmlns:wf="http://schemas.microsoft.com/sharepoint/soap/workflow/" xmlns:mver="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns:mrels="http://schemas.openxmlformats.org/package/2006/relationships" xmlns:ex12t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:ex12m="http://schemas.microsoft.com/exchange/services/2006/messages" 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 12 (filtered medium)">
<style>
<!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@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","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p
        {mso-style-priority:99;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.Section1
        {page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang=EN-US link=blue vlink=purple>
<div class=Section1>
<p class=MsoNormal>This is because we don’t define a custom __getnewargs__
for .NET data types. Therefore when the copy module tries to create the
new instance it has no arguments and creates the default value – you’ll
get the same behavior with any random value type that isn’t also a type
in Python’s type system. For other random .NET types you may or may
not get a new instance (depending on whether or not the type has a
parameterless constructor). We of course do define this for types like
int because our int is Python’s int.<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>We could presumably support this with some value types: for
example the primitive types such as Int64 (decimal, char, etc…) and types
like enums where it’s well-understood how to construct the value
type. But we couldn’t support it on arbitrary types. We could
also even considering pushing this further and support any type which is
serializable (at which point __reduce_ex__ would return a function which does
the deserialization, and __getnewargs__ would return the serialized data).<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>I’ve opened a feature request on CodePlex (<a
href="http://www.codeplex.com/IronPython/WorkItem/View.aspx?WorkItemId=13401">http://www.codeplex.com/IronPython/WorkItem/View.aspx?WorkItemId=13401</a>)
to track this. If you (and anyone else who thinks this would be cool)
would vote for the feature then it’ll help us get the right priority on
it. <o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>Thanks for the report!<o:p></o:p></p>
<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p> </o:p></span></p>
<div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'>
<p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span
style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>
users-bounces@lists.ironpython.com [mailto:users-bounces@lists.ironpython.com] <b>On
Behalf Of </b>Ronnie Maor<br>
<b>Sent:</b> Friday, October 19, 2007 2:38 PM<br>
<b>To:</b> users@lists.ironpython.com<br>
<b>Subject:</b> [IronPython] bug with copy.copy of System.Int64?<o:p></o:p></span></p>
</div>
<p class=MsoNormal><o:p> </o:p></p>
<div>
<p class=MsoNormal>I stumbled across the following problem copying
System.Int64:<o:p></o:p></p>
</div>
<div>
<p class=MsoNormal> <o:p></o:p></p>
</div>
<div>
<div>
<p class=MsoNormal><span style='font-family:"Calibri","sans-serif"'>C:\>ipy</span><o:p></o:p></p>
</div>
<div>
<p style='margin:0in;margin-bottom:.0001pt'><span style='font-family:"Calibri","sans-serif"'>IronPython
1.1 (1.1) on .NET 2.0.50727.832</span><o:p></o:p></p>
<p style='margin:0in;margin-bottom:.0001pt'><span style='font-family:"Calibri","sans-serif"'>Copyright
(c) Microsoft Corporation. All rights reserved.</span><o:p></o:p></p>
<p style='margin:0in;margin-bottom:.0001pt'><span style='font-family:"Calibri","sans-serif"'>>>>
import copy</span><o:p></o:p></p>
<p style='margin:0in;margin-bottom:.0001pt'><span style='font-family:"Calibri","sans-serif"'>>>>
from System import Int64</span><o:p></o:p></p>
<p style='margin:0in;margin-bottom:.0001pt'><span style='font-family:"Calibri","sans-serif"'>>>>
x = Int64(3)</span><o:p></o:p></p>
<p style='margin:0in;margin-bottom:.0001pt'><span style='font-family:"Calibri","sans-serif"'>>>>
x</span><o:p></o:p></p>
<p style='margin:0in;margin-bottom:.0001pt'><span style='font-family:"Calibri","sans-serif"'>3L</span><o:p></o:p></p>
<p style='margin:0in;margin-bottom:.0001pt'><span style='font-family:"Calibri","sans-serif"'>>>>
copy.copy(x)</span><o:p></o:p></p>
<p style='margin:0in;margin-bottom:.0001pt'><span style='font-family:"Calibri","sans-serif"'>0L</span><o:p></o:p></p>
<p style='margin:0in;margin-bottom:.0001pt'><span style='font-family:"Calibri","sans-serif"'>>>>
copy.deepcopy(x)</span><o:p></o:p></p>
<p style='margin:0in;margin-bottom:.0001pt'><span style='font-family:"Calibri","sans-serif"'>0L</span><o:p></o:p></p>
<p style='margin:0in;margin-bottom:.0001pt'> <o:p></o:p></p>
<div>
<p class=MsoNormal>Has anyone else come across this problem? Are there other
types that will produce wrong copies?<o:p></o:p></p>
</div>
<div>
<p class=MsoNormal> <o:p></o:p></p>
</div>
<div>
<div>
<div>
<p class=MsoNormal>My current workaround is to convert the Int64 to a long.<o:p></o:p></p>
</div>
<div>
<p class=MsoNormal> <o:p></o:p></p>
</div>
<p class=MsoNormal>Some more notes:<o:p></o:p></p>
</div>
<div>
<p class=MsoNormal>I'm using IronPython 1.1 with CPython 2.4 standard library.<o:p></o:p></p>
</div>
<div>
<p class=MsoNormal>Doesn't happen with Int32<o:p></o:p></p>
</div>
<div>
<p class=MsoNormal> <o:p></o:p></p>
</div>
</div>
<div>
<p class=MsoNormal>thanks<o:p></o:p></p>
</div>
<div>
<p class=MsoNormal>Ronnie<o:p></o:p></p>
</div>
</div>
</div>
<div>
<p class=MsoNormal><span style='font-family:"Calibri","sans-serif"'> </span><o:p></o:p></p>
</div>
</div>
</body>
</html>