Author: Manuel Jacob Branch: remove-dict-smm Changeset: r64079:fdb190651450 Date: 2013-05-14 16:31 +0200 http://bitbucket.org/pypy/pypy/changeset/fdb190651450/
Log: Remove dict.{iter,view}{items,keys,values} SMMs. diff --git a/pypy/objspace/std/dictmultiobject.py b/pypy/objspace/std/dictmultiobject.py --- a/pypy/objspace/std/dictmultiobject.py +++ b/pypy/objspace/std/dictmultiobject.py @@ -127,6 +127,30 @@ """D.values() -> list of D's values""" return space.newlist(self.values()) + def descr_iteritems(self, space): + """D.iteritems() -> an iterator over the (key, value) items of D""" + return W_DictMultiIterItemsObject(space, self.iteritems()) + + def descr_iterkeys(self, space): + """D.iterkeys() -> an iterator over the keys of D""" + return W_DictMultiIterKeysObject(space, self.iterkeys()) + + def descr_itervalues(self, space): + """D.itervalues() -> an iterator over the values of D""" + return W_DictMultiIterValuesObject(space, self.itervalues()) + + def descr_viewitems(self, space): + """D.viewitems() -> a set-like object providing a view on D's items""" + return W_DictViewItemsObject(space, self) + + def descr_viewkeys(self, space): + """D.viewkeys() -> a set-like object providing a view on D's keys""" + return W_DictViewKeysObject(space, self) + + def descr_viewvalues(self, space): + """D.viewvalues() -> an object providing a view on D's values""" + return W_DictViewValuesObject(space, self) + def descr_has_key(self, space, w_key): """D.has_key(k) -> True if D has a key k, else False""" # XXX duplication with contains @@ -151,24 +175,6 @@ # def descr_update(self, space): # """""" -# def descr_iteritems(self, space): -# """""" - -# def descr_iterkeys(self, space): -# """""" - -# def descr_itervalues(self, space): -# """""" - -# def descr_viewkeys(self, space): -# """""" - -# def descr_viewitems(self, space): -# """""" - -# def descr_viewvalues(self, space): -# """""" - # def descr_reversed(self, space): # """""" @@ -958,24 +964,6 @@ w_res = space.lt(w_leftval, w_rightval) return w_res -def dict_iteritems__DictMulti(space, w_self): - return W_DictMultiIterItemsObject(space, w_self.iteritems()) - -def dict_iterkeys__DictMulti(space, w_self): - return W_DictMultiIterKeysObject(space, w_self.iterkeys()) - -def dict_itervalues__DictMulti(space, w_self): - return W_DictMultiIterValuesObject(space, w_self.itervalues()) - -def dict_viewitems__DictMulti(space, w_self): - return W_DictViewItemsObject(space, w_self) - -def dict_viewkeys__DictMulti(space, w_self): - return W_DictViewKeysObject(space, w_self) - -def dict_viewvalues__DictMulti(space, w_self): - return W_DictViewValuesObject(space, w_self) - def dict_get__DictMulti_ANY_ANY(space, w_dict, w_key, w_default): w_value = w_dict.getitem(w_key) if w_value is not None: @@ -1074,29 +1062,25 @@ def __init__(w_self, space, w_dict): w_self.w_dict = w_dict +class W_DictViewItemsObject(W_DictViewObject): + def descr__iter__(self, space): + return W_DictMultiIterItemsObject(space, self.w_dict.iteritems()) +registerimplementation(W_DictViewItemsObject) + class W_DictViewKeysObject(W_DictViewObject): - pass + def descr__iter__(self, space): + return W_DictMultiIterKeysObject(space, self.w_dict.iterkeys()) registerimplementation(W_DictViewKeysObject) -class W_DictViewItemsObject(W_DictViewObject): - pass -registerimplementation(W_DictViewItemsObject) - class W_DictViewValuesObject(W_DictViewObject): - pass + def descr__iter__(self, space): + return W_DictMultiIterValuesObject(space, self.w_dict.itervalues()) registerimplementation(W_DictViewValuesObject) def len__DictViewKeys(space, w_dictview): return space.len(w_dictview.w_dict) len__DictViewItems = len__DictViewValues = len__DictViewKeys -def iter__DictViewKeys(space, w_dictview): - return dict_iterkeys__DictMulti(space, w_dictview.w_dict) -def iter__DictViewItems(space, w_dictview): - return dict_iteritems__DictMulti(space, w_dictview.w_dict) -def iter__DictViewValues(space, w_dictview): - return dict_itervalues__DictMulti(space, w_dictview.w_dict) - def all_contained_in(space, w_dictview, w_otherview): w_iter = space.iter(w_dictview) @@ -1187,19 +1171,6 @@ ' for k in E: D[k] = E[k]\n(if E has keys else: for' ' (k, v) in E: D[k] = v) then: for k in F: D[k] =' ' F[k]') -dict_iteritems = SMM('iteritems', 1, - doc='D.iteritems() -> an iterator over the (key, value)' - ' items of D') -dict_iterkeys = SMM('iterkeys', 1, - doc='D.iterkeys() -> an iterator over the keys of D') -dict_itervalues = SMM('itervalues', 1, - doc='D.itervalues() -> an iterator over the values of D') -dict_viewkeys = SMM('viewkeys', 1, - doc="D.viewkeys() -> a set-like object providing a view on D's keys") -dict_viewitems = SMM('viewitems', 1, - doc="D.viewitems() -> a set-like object providing a view on D's items") -dict_viewvalues = SMM('viewvalues', 1, - doc="D.viewvalues() -> an object providing a view on D's values") dict_reversed = SMM('__reversed__', 1) def dict_reversed__ANY(space, w_dict): @@ -1289,6 +1260,12 @@ items = gateway.interp2app(W_DictMultiObject.descr_items), keys = gateway.interp2app(W_DictMultiObject.descr_keys), values = gateway.interp2app(W_DictMultiObject.descr_values), + iteritems = gateway.interp2app(W_DictMultiObject.descr_iteritems), + iterkeys = gateway.interp2app(W_DictMultiObject.descr_iterkeys), + itervalues = gateway.interp2app(W_DictMultiObject.descr_itervalues), + viewkeys = gateway.interp2app(W_DictMultiObject.descr_viewkeys), + viewitems = gateway.interp2app(W_DictMultiObject.descr_viewitems), + viewvalues = gateway.interp2app(W_DictMultiObject.descr_viewvalues), has_key = gateway.interp2app(W_DictMultiObject.descr_has_key), clear = gateway.interp2app(W_DictMultiObject.descr_clear), #get = gateway.interp2app(W_DictMultiObject.descr_get), @@ -1296,12 +1273,6 @@ #popitem = gateway.interp2app(W_DictMultiObject.descr_popitem), #setdefault = gateway.interp2app(W_DictMultiObject.descr_setdefault), #update = gateway.interp2app(W_DictMultiObject.descr_update), - #iteritems = gateway.interp2app(W_DictMultiObject.descr_iteritems), - #iterkeys = gateway.interp2app(W_DictMultiObject.descr_iterkeys), - #itervalues = gateway.interp2app(W_DictMultiObject.descr_itervalues), - #viewkeys = gateway.interp2app(W_DictMultiObject.descr_viewkeys), - #viewitems = gateway.interp2app(W_DictMultiObject.descr_viewitems), - #viewvalues = gateway.interp2app(W_DictMultiObject.descr_viewvalues), #reversed = gateway.interp2app(W_DictMultiObject.descr_reversed), ) W_DictMultiObject.typedef.registermethods(globals()) @@ -1378,14 +1349,17 @@ # ____________________________________________________________ # Dict views +W_DictViewItemsObject.typedef = StdTypeDef( + "dict_items", + __iter__ = gateway.interp2app(W_DictViewItemsObject.descr__iter__) + ) + W_DictViewKeysObject.typedef = StdTypeDef( "dict_keys", - ) - -W_DictViewItemsObject.typedef = StdTypeDef( - "dict_items", + __iter__ = gateway.interp2app(W_DictViewKeysObject.descr__iter__) ) W_DictViewValuesObject.typedef = StdTypeDef( "dict_values", + __iter__ = gateway.interp2app(W_DictViewValuesObject.descr__iter__) ) _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit