Hi,
Recently, I've run across a bit of a bug while importing things with the
"from X import Y" syntax, when Y is anything but an an attribute of X
that already exists.
Demonstration:
IronPython 0.7.6 on .NET 2.0.50215.44
Copyright (c) Microsoft Corporation. All rights reserved.
>>> from foo import bar
>>> repr(bar)
'None'
>>> from foo.bar import quux
>>> repr(quux)
'<function quux at 0x00EA7F4A>'
One can work around the problem by doing a "regular" import first:
>>> import foo.bar
>>> from foo import bar
>>> repr(bar)
'<module foo.bar from "C:\\Documents and
Settings\\JJ\\Desktop\\IronPython-0.7.6-orig\\bin\\foo\\bar.py">'
After doing some digging I've come up with a solution. Even though I
don't really think it is a clean solution, I've attached the patch anyway.
--
Jonathan
diff -ru IronPython-0.7.6-orig/IronPython/Objects/Ops.cs
IronPython-0.7.6/IronPython/Objects/Ops.cs
--- IronPython-0.7.6-orig/IronPython/Objects/Ops.cs Sun Jun 12 17:01:42 2005
+++ IronPython-0.7.6/IronPython/Objects/Ops.cs Tue Jul 5 16:17:30 2005
@@ -2103,6 +2103,10 @@
try {
impObj = Importer.GetFrom(fromObj, names[i]);
+ if (impObj == null) {
+ Ops.ImportAs(mod, fullName + "." + names[i],
asNames[i] != null ? asNames[i] : names[i]);
+ continue;
+ }
} catch {
throw ImportError("Cannot import {0} from {1}", names[i],
fromObj);
}
_______________________________________________
users-ironpython.com mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com