Further fixes when using type() when using -builtin to include module name
Using type() on a builtin type should include the package and module name, see http://docs.python.org/2/c-api/typeobj.html
This commit is contained in:
parent
d8bfe00e25
commit
4fb940d913
5 changed files with 23 additions and 2 deletions
|
|
@ -5,6 +5,10 @@ See the RELEASENOTES file for a summary of changes in each release.
|
|||
Version 3.0.0 (in progress)
|
||||
============================
|
||||
|
||||
2014-03-01: wsfulton
|
||||
[Python] Patch #143 Fix type shown when using type() to include the module and package
|
||||
name when using -builtin.
|
||||
|
||||
2014-03-01: wsfulton
|
||||
[Python] SF patch #347 Fix missing argument count checking with -modern.
|
||||
Fixes regression introduced when builtin changes were introduced in SWIG-2.0.3.
|
||||
|
|
|
|||
|
|
@ -4,4 +4,6 @@ import pkg2.foo
|
|||
print " Finished importing pkg2.foo"
|
||||
|
||||
var2 = pkg2.foo.Pkg2_Foo()
|
||||
if str(type(var2)).find("'pkg2.foo.Pkg2_Foo'") == -1:
|
||||
raise RuntimeError("failed type checking: " + str(type(var2)))
|
||||
print " Successfully created object pkg2.foo.Pkg2_Foo"
|
||||
|
|
|
|||
|
|
@ -1,4 +1,7 @@
|
|||
import pkg1.pkg2.foo
|
||||
print " Finished importing pkg1.pkg2.foo"
|
||||
|
||||
var2 = pkg1.pkg2.foo.Pkg2_Foo();
|
||||
if str(type(var2)).find("'pkg1.pkg2.foo.Pkg2_Foo'") == -1:
|
||||
raise RuntimeError("failed type checking: " + str(type(var2)))
|
||||
print " Successfully created object pkg1.pkg2.foo.Pkg2_Foo"
|
||||
|
|
|
|||
|
|
@ -32,3 +32,7 @@ f.moo(1)
|
|||
|
||||
f = FooT_H()
|
||||
f.foo(Hi)
|
||||
|
||||
f_type = str(type(f))
|
||||
if f_type.find("'namespace_class.FooT_H'") == -1:
|
||||
raise RuntimeError("Incorrect type: " + f_type)
|
||||
|
|
|
|||
|
|
@ -3592,11 +3592,19 @@ public:
|
|||
if (GetFlag(n, "feature:python:nondynamic"))
|
||||
Setattr(n, "feature:python:tp_setattro", "SWIG_Python_NonDynamicSetAttr");
|
||||
|
||||
Node *mod = Getattr(n, "module");
|
||||
String *modname = mod ? Getattr(mod, "name") : 0;
|
||||
String *quoted_symname;
|
||||
if (package) {
|
||||
quoted_symname = NewStringf("\"%s.%s\"", package, symname);
|
||||
if (modname)
|
||||
quoted_symname = NewStringf("\"%s.%s.%s\"", package, modname, symname);
|
||||
else
|
||||
quoted_symname = NewStringf("\"%s.%s\"", package, symname);
|
||||
} else {
|
||||
quoted_symname = NewStringf("\"%s\"", symname);
|
||||
if (modname)
|
||||
quoted_symname = NewStringf("\"%s.%s\"", modname, symname);
|
||||
else
|
||||
quoted_symname = NewStringf("\"%s\"", symname);
|
||||
}
|
||||
String *quoted_rname = NewStringf("\"%s\"", rname);
|
||||
char const *tp_init = builtin_tp_init ? Char(builtin_tp_init) : Swig_directorclass(n) ? "0" : "SwigPyBuiltin_BadInit";
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue