[IronPython] IronPython 2.6 CodePlex Source Update

merllab at microsoft.com merllab at microsoft.com
Tue Jun 16 17:53:57 CEST 2009

This is an automated email letting you know that sources 
have recently been pushed out.  You can download these newer 
sources directly from http://ironpython.codeplex.com/SourceControl/changeset/view/54862.



Changeset Id: 947161
Date: 6/15/2009 5:30:14 PM

(dinov) DLR outer ring only: Fix case insensitivity of SymbolIDs.  

Our current case insensitive story for SymbolIDs doesn’t really work.  There are 2 problems:
1.	Case insensitive IDs won’t compare equal to normal case sensitive IDs.  This means you can’t create a case insensitive ID and use it for lookup in an IAttributesCollection.
a.	This is just updating SymbolID to do the right comparisons and hashing and getting rid of some useless APIs here.
2.	When we store the IDs in the SymbolTable there is no way to disambiguate between an all upper case symbol and the “invariant” symbol.
a.	Here we need a separate table to store the invariant IDs.  I’ve also gotten rid of the ToUpper call and replaced it with a case invariant dictionary.  Now we have a separate table for the invariant IDs and it stores the latest case-version.  

There’s also a bunch of cleanup – replaced the magic numbers with 2 constants and added some missing locking on our ToString and Contains APIs.

(Shelveset: SymbolIdFix;REDMOND\dinov | SNAP CheckinId: 8701)
Changeset Id: 946342
Date: 6/15/2009 10:42:17 AM

(dinov) 4566       codecs.escape_encode returns a string instead of a tuple and the string has the wrong value
                Fixed our implementation to match CPython
17541    IronPython compiler throws an exception on syntax warnings
                Replace throwing with a report to the warnings.showwarning function.  We no longer set the error code on warnings either.  
1717       ironpython issues less number of "syntaxwarning"'s compared to cpython
                We report less warnings because we throw on the 1st warning.  We no longer throw and instead actually report a warning.  Also updated the error messages to match CPython.
21483    str.ljust does not properly handle width=int.MinValue
                If we get a negative value return the original string

I’m also adding some restrictions which are missing for purposes of x-lang interop.  When VB is talking to us neither of us will restrict when we both should restrict.  Python needs to restrict because we generate a type test, VB needs to restrict for whether it’s handling an IDMOP or not.

(Shelveset: FixSyntaxWarningsFinal;REDMOND\dinov | SNAP CheckinId: 8694)
Changeset Id: 946270
Date: 6/15/2009 9:55:51 AM

(dinov) Fixes various issues related to dir().  This change removes the get member names call site and replaces this with just a normal non-callsite based implementation of dir.  It also fixes sorting of GetAttrNames in some cases so that a few tests had to be updated to handle the changed results.

22456	Unexpected instance variables on subclass when __dir__ implemented
	PythonType now adds all of the members (including non-string keys) and this is avoided when we do __dir__.  Then PythonOps.GetAttrNames no longer needs to add non-string keys.
22832	dir(new-class) overlooks methods inherited from old-style classes      	PythonType updated to handle old-classes.  This causes a number of tests (specifically one string formatting and a bunch of codecs tests) to start running that previously didn’t.  I’ve disabled these tests and opened bugs.  I’ve also added a start of the required codecs support but ifdef’d it out keep things simple here.
11883	Calling help() on a .NET Framework class causes it to show up twice in dir() output   	This seems to be fixed already – just adding a regression test
20957	dir(expando_inst) doesn't show dyn members   	We now manifest a __dir__ method on non-Python IDynamicMetaObjectProvider instances.  Then our normal handling for __dir__ picks this up and gets the member name.s
22536	dir() fails for some generic CLR types 	We need to handle the case where the Type is a generic type definition which does not return a name.

(Shelveset: DirFixesFinal;REDMOND\dinov | SNAP CheckinId: 8693)

More information about the Ironpython-users mailing list