Author: Armin Rigo <[email protected]>
Branch:
Changeset: r45932:24ff93f071a4
Date: 2011-07-24 13:26 +0200
http://bitbucket.org/pypy/pypy/changeset/24ff93f071a4/
Log: Change the interface of deldictvalue() to take an unwrapped
attribute name, like getdictvalue() and setdictvalue(). Just for
unification purposes.
diff --git a/pypy/interpreter/baseobjspace.py b/pypy/interpreter/baseobjspace.py
--- a/pypy/interpreter/baseobjspace.py
+++ b/pypy/interpreter/baseobjspace.py
@@ -44,11 +44,11 @@
return True
return False
- def deldictvalue(self, space, w_name):
+ def deldictvalue(self, space, attr):
w_dict = self.getdict(space)
if w_dict is not None:
try:
- space.delitem(w_dict, w_name)
+ space.delitem(w_dict, space.wrap(attr))
return True
except OperationError, ex:
if not ex.match(space, space.w_KeyError):
diff --git a/pypy/module/__builtin__/interp_classobj.py
b/pypy/module/__builtin__/interp_classobj.py
--- a/pypy/module/__builtin__/interp_classobj.py
+++ b/pypy/module/__builtin__/interp_classobj.py
@@ -418,7 +418,7 @@
if w_meth is not None:
space.call_function(w_meth, w_name)
else:
- if not self.deldictvalue(space, w_name):
+ if not self.deldictvalue(space, name):
raise operationerrfmt(
space.w_AttributeError,
"%s instance has no attribute '%s'",
diff --git a/pypy/objspace/descroperation.py b/pypy/objspace/descroperation.py
--- a/pypy/objspace/descroperation.py
+++ b/pypy/objspace/descroperation.py
@@ -96,7 +96,7 @@
if space.is_data_descr(w_descr):
space.delete(w_descr, w_obj)
return
- if w_obj.deldictvalue(space, w_name):
+ if w_obj.deldictvalue(space, name):
return
raiseattrerror(space, w_obj, name, w_descr)
diff --git a/pypy/objspace/std/dictproxyobject.py
b/pypy/objspace/std/dictproxyobject.py
--- a/pypy/objspace/std/dictproxyobject.py
+++ b/pypy/objspace/std/dictproxyobject.py
@@ -61,7 +61,8 @@
space = self.space
w_key_type = space.type(w_key)
if space.is_w(w_key_type, space.w_str):
- if not self.unerase(w_dict.dstorage).deldictvalue(space, w_key):
+ key = self.space.str_w(w_key)
+ if not self.unerase(w_dict.dstorage).deldictvalue(space, key):
raise KeyError
else:
raise KeyError
diff --git a/pypy/objspace/std/mapdict.py b/pypy/objspace/std/mapdict.py
--- a/pypy/objspace/std/mapdict.py
+++ b/pypy/objspace/std/mapdict.py
@@ -369,8 +369,7 @@
def setdictvalue(self, space, attrname, w_value):
return self._get_mapdict_map().write(self, (attrname, DICT), w_value)
- def deldictvalue(self, space, w_name):
- attrname = space.str_w(w_name)
+ def deldictvalue(self, space, attrname):
new_obj = self._get_mapdict_map().delete(self, (attrname, DICT))
if new_obj is None:
return False
@@ -647,7 +646,8 @@
w_key_type = space.type(w_key)
w_obj = self.unerase(w_dict.dstorage)
if space.is_w(w_key_type, space.w_str):
- flag = w_obj.deldictvalue(space, w_key)
+ key = self.space.str_w(w_key)
+ flag = w_obj.deldictvalue(space, key)
if not flag:
raise KeyError
elif _never_equal_to_string(space, w_key_type):
diff --git a/pypy/objspace/std/proxyobject.py b/pypy/objspace/std/proxyobject.py
--- a/pypy/objspace/std/proxyobject.py
+++ b/pypy/objspace/std/proxyobject.py
@@ -52,10 +52,10 @@
raise
return False
- def deldictvalue(self, space, w_attr):
+ def deldictvalue(self, space, attr):
try:
space.call_function(self.w_controller,
space.wrap('__delattr__'),
- w_attr)
+ space.wrap(attr))
return True
except OperationError, e:
if not e.match(space, space.w_AttributeError):
diff --git a/pypy/objspace/std/typeobject.py b/pypy/objspace/std/typeobject.py
--- a/pypy/objspace/std/typeobject.py
+++ b/pypy/objspace/std/typeobject.py
@@ -313,10 +313,9 @@
w_self.dict_w[name] = w_value
return True
- def deldictvalue(w_self, space, w_key):
+ def deldictvalue(w_self, space, key):
if w_self.lazyloaders:
w_self._freeze_() # force un-lazification
- key = space.str_w(w_key)
if (not space.config.objspace.std.mutable_builtintypes
and not w_self.is_heaptype()):
msg = "can't delete attributes on type object '%s'"
diff --git a/pypy/objspace/std/typetype.py b/pypy/objspace/std/typetype.py
--- a/pypy/objspace/std/typetype.py
+++ b/pypy/objspace/std/typetype.py
@@ -226,7 +226,7 @@
def descr_del___abstractmethods__(space, w_type):
w_type = _check(space, w_type)
- if not w_type.deldictvalue(space, space.wrap("__abstractmethods__")):
+ if not w_type.deldictvalue(space, "__abstractmethods__"):
raise OperationError(space.w_AttributeError,
space.wrap("__abstractmethods__"))
w_type.set_abstract(False)
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit