Update of /cvsroot/jython/jython/org/python/core
In directory usw-pr-cvs1:/tmp/cvs-serv26074
Modified Files:
PyClass.java
Log Message:
PyClass.__setattr__(): Fix #409930. Allow assignment to __bases__,
__name__ and __dict__.
Index: PyClass.java
===================================================================
RCS file: /cvsroot/jython/jython/org/python/core/PyClass.java,v
retrieving revision 2.23
retrieving revision 2.24
diff -C2 -r2.23 -r2.24
*** PyClass.java 2001/03/22 20:02:49 2.23
--- PyClass.java 2001/04/25 18:39:24 2.24
***************
*** 215,221 ****
public void __setattr__(String name, PyObject value) {
! if (name == "__dict__" || name == "__name__" || name == "__bases__") {
! throw Py.TypeError("read-only special attribute: "+name);
}
__dict__.__setitem__(name, value);
}
--- 215,237 ----
public void __setattr__(String name, PyObject value) {
! if (name == "__dict__") {
! if (!value.isMappingType())
! throw Py.TypeError("__dict__ must be a dictionary object");
! __dict__ = value;
! return;
}
+ if (name == "__name__") {
+ if (!(value instanceof PyString))
+ throw Py.TypeError("__name__ must be a string object");
+ __name__ = value.toString();
+ return;
+ }
+ if (name == "__bases__") {
+ if (!(value instanceof PyTuple))
+ throw Py.TypeError("__bases__ must be a tuple object");
+ __bases__ = (PyTuple) value;
+ return;
+ }
+
__dict__.__setitem__(name, value);
}
|