[Jython-checkins] jython: Applied AbstractDict-unification of PyDictionary and PyStringMap to various
stefan.richthofer
jython-checkins at python.org
Sun Jan 8 18:09:39 EST 2017
https://hg.python.org/jython/rev/2315cf2259b6
changeset: 7991:2315cf2259b6
user: Stefan Richthofer <stefan.richthofer at gmx.de>
date: Mon Jan 09 00:09:25 2017 +0100
summary:
Applied AbstractDict-unification of PyDictionary and PyStringMap to various further places.
files:
src/org/python/core/PyBaseException.java | 2 +-
src/org/python/core/PyClass.java | 12 +++++-----
src/org/python/core/PyFunction.java | 8 +++---
src/org/python/core/PyInstance.java | 2 +-
src/org/python/core/PyModule.java | 3 +-
src/org/python/core/PyObject.java | 3 +-
src/org/python/core/PyString.java | 2 +-
src/org/python/core/PyStringMap.java | 9 +-----
src/org/python/modules/_functools/PyPartial.java | 9 ++++---
9 files changed, 22 insertions(+), 28 deletions(-)
diff --git a/src/org/python/core/PyBaseException.java b/src/org/python/core/PyBaseException.java
--- a/src/org/python/core/PyBaseException.java
+++ b/src/org/python/core/PyBaseException.java
@@ -96,7 +96,7 @@
@ExposedMethod(doc = BuiltinDocs.BaseException___setstate___doc)
final PyObject BaseException___setstate__(PyObject state) {
if (state != Py.None) {
- if (!(state instanceof PyStringMap) && !(state instanceof PyDictionary)) {
+ if (!(state instanceof AbstractDict)) {
throw Py.TypeError("state is not a dictionary");
}
for (PyObject key : state.asIterable()) {
diff --git a/src/org/python/core/PyClass.java b/src/org/python/core/PyClass.java
--- a/src/org/python/core/PyClass.java
+++ b/src/org/python/core/PyClass.java
@@ -14,7 +14,7 @@
public static final PyType TYPE = PyType.fromClass(PyClass.class);
/** Holds the namespace for this class */
- public PyObject __dict__;
+ public AbstractDict __dict__;
/** The base classes of this class */
public PyTuple __bases__;
@@ -46,7 +46,7 @@
if (!name.getType().isSubType(PyString.TYPE)) {
throw Py.TypeError("PyClass_New: name must be a string");
}
- if (!(dict instanceof PyStringMap || dict instanceof PyDictionary)) {
+ if (!(dict instanceof AbstractDict)) {
throw Py.TypeError("PyClass_New: dict must be a dictionary");
}
PyType.ensureDoc(dict);
@@ -69,7 +69,7 @@
PyClass klass = new PyClass();
klass.__name__ = name.toString();
klass.__bases__ = basesTuple;
- klass.__dict__ = dict;
+ klass.__dict__ = (AbstractDict) dict;
klass.cacheDescriptors();
return klass;
}
@@ -100,7 +100,7 @@
}
@Override
- public PyObject fastGetDict() {
+ public AbstractDict fastGetDict() {
return __dict__;
}
@@ -248,10 +248,10 @@
}
public void setDict(PyObject value) {
- if (value == null || !(value instanceof PyStringMap || value instanceof PyDictionary)) {
+ if (value == null || !(value instanceof AbstractDict)) {
throw Py.TypeError("__dict__ must be a dictionary object");
}
- __dict__ = value;
+ __dict__ = (AbstractDict) value;
}
public void setBases(PyObject value) {
diff --git a/src/org/python/core/PyFunction.java b/src/org/python/core/PyFunction.java
--- a/src/org/python/core/PyFunction.java
+++ b/src/org/python/core/PyFunction.java
@@ -47,7 +47,7 @@
* A function's lazily created __dict__; allows arbitrary
* attributes to be tacked on. Read only.
*/
- public PyObject __dict__;
+ public AbstractDict __dict__;
/** A read only closure tuple for nested scopes. */
@ExposedGet
@@ -269,7 +269,7 @@
}
@Override
- public PyObject fastGetDict() {
+ public AbstractDict fastGetDict() {
return __dict__;
}
@@ -281,10 +281,10 @@
@ExposedSet(name = "__dict__")
public void setDict(PyObject value) {
- if (!(value instanceof PyDictionary) && !(value instanceof PyStringMap)) {
+ if (!(value instanceof AbstractDict)) {
throw Py.TypeError("setting function's dictionary to a non-dict");
}
- __dict__ = value;
+ __dict__ = (AbstractDict) value;
}
@ExposedDelete(name = "__dict__")
diff --git a/src/org/python/core/PyInstance.java b/src/org/python/core/PyInstance.java
--- a/src/org/python/core/PyInstance.java
+++ b/src/org/python/core/PyInstance.java
@@ -52,7 +52,7 @@
PyObject dict = ap.getPyObject(1, Py.None);
if (dict == Py.None) {
dict = null;
- } else if (!(dict instanceof PyStringMap || dict instanceof PyDictionary)) {
+ } else if (!(dict instanceof AbstractDict)) {
throw Py.TypeError("instance() second arg must be dictionary or None");
}
return new PyInstance(klass, dict);
diff --git a/src/org/python/core/PyModule.java b/src/org/python/core/PyModule.java
--- a/src/org/python/core/PyModule.java
+++ b/src/org/python/core/PyModule.java
@@ -199,8 +199,7 @@
d = __dict__;
}
if (d == null ||
- !(d instanceof PyDictionary ||
- d instanceof PyStringMap ||
+ !(d instanceof AbstractDict ||
d instanceof PyDictProxy)) {
throw Py.TypeError(String.format("%.200s.__dict__ is not a dictionary",
getType().fastGetName().toLowerCase()));
diff --git a/src/org/python/core/PyObject.java b/src/org/python/core/PyObject.java
--- a/src/org/python/core/PyObject.java
+++ b/src/org/python/core/PyObject.java
@@ -1120,8 +1120,7 @@
if (obj == null) {
return;
}
- if (obj instanceof PyDictionary || obj instanceof PyStringMap
- || obj instanceof PyDictProxy) {
+ if (obj instanceof AbstractDict || obj instanceof PyDictProxy) {
accum.update(obj);
}
}
diff --git a/src/org/python/core/PyString.java b/src/org/python/core/PyString.java
--- a/src/org/python/core/PyString.java
+++ b/src/org/python/core/PyString.java
@@ -4508,7 +4508,7 @@
} else {
// Not a tuple, but possibly still some kind of container: use special argIndex values.
argIndex = -1;
- if (args instanceof PyDictionary || args instanceof PyStringMap
+ if (args instanceof AbstractDict
|| (!(args instanceof PySequence) && args.__findattr__("__getitem__") != null)) {
dict = args;
argIndex = -3;
diff --git a/src/org/python/core/PyStringMap.java b/src/org/python/core/PyStringMap.java
--- a/src/org/python/core/PyStringMap.java
+++ b/src/org/python/core/PyStringMap.java
@@ -266,7 +266,7 @@
@ExposedMethod(type = MethodType.CMP, doc = BuiltinDocs.dict___cmp___doc)
final int stringmap___cmp__(PyObject other) {
- if (!(other instanceof PyStringMap || other instanceof PyDictionary)) {
+ if (!(other instanceof AbstractDict)) {
return -2;
}
int an = __len__();
@@ -278,12 +278,7 @@
return 1;
}
PyList akeys = keys();
- PyList bkeys = null;
- if (other instanceof PyStringMap) {
- bkeys = ((PyStringMap)other).keys();
- } else {
- bkeys = ((PyDictionary)other).keys();
- }
+ PyList bkeys = ((AbstractDict) other).keys();
akeys.sort();
bkeys.sort();
for (int i = 0; i < bn; i++) {
diff --git a/src/org/python/modules/_functools/PyPartial.java b/src/org/python/modules/_functools/PyPartial.java
--- a/src/org/python/modules/_functools/PyPartial.java
+++ b/src/org/python/modules/_functools/PyPartial.java
@@ -8,6 +8,7 @@
import org.python.core.PyNewWrapper;
import org.python.core.PyObject;
import org.python.core.PyStringMap;
+import org.python.core.AbstractDict;
import org.python.core.PyTuple;
import org.python.core.PyType;
import org.python.core.Traverseproc;
@@ -35,7 +36,7 @@
private String[] keywords;
/** Lazily created dict for extra attributes. */
- private PyObject __dict__;
+ private AbstractDict __dict__;
public PyPartial() {
super(TYPE);
@@ -162,7 +163,7 @@
}
@Override
- public PyObject fastGetDict() {
+ public AbstractDict fastGetDict() {
return __dict__;
}
@@ -176,10 +177,10 @@
@Override
@ExposedSet(name = "__dict__")
public void setDict(PyObject val) {
- if (!(val instanceof PyStringMap) && !(val instanceof PyDictionary)) {
+ if (!(val instanceof AbstractDict)) {
throw Py.TypeError("setting partial object's dictionary to a non-dict");
}
- __dict__ = val;
+ __dict__ = (AbstractDict) val;
}
private void ensureDict() {
--
Repository URL: https://hg.python.org/jython
More information about the Jython-checkins
mailing list