Author: Manuel Jacob Branch: remove-dict-smm Changeset: r64156:0cd0e3db9235 Date: 2013-05-15 15:12 +0200 http://bitbucket.org/pypy/pypy/changeset/0cd0e3db9235/
Log: Cleanup dictmultiobject.py. 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 @@ -1,18 +1,19 @@ -from pypy.objspace.std.model import registerimplementation, W_Object -from pypy.objspace.std.stdtypedef import StdTypeDef from pypy.interpreter import gateway from pypy.interpreter.error import OperationError, operationerrfmt from pypy.interpreter.mixedmodule import MixedModule from pypy.interpreter.signature import Signature +from pypy.objspace.std.model import registerimplementation, W_Object +from pypy.objspace.std.stdtypedef import StdTypeDef +from rpython.rlib import rerased, jit +from rpython.rlib.debug import mark_dict_non_null from rpython.rlib.objectmodel import r_dict, specialize, newlist_hint -from rpython.rlib.debug import mark_dict_non_null from rpython.tool.sourcetools import func_with_new_name -from rpython.rlib import rerased, jit UNROLL_CUTOFF = 5 + def _is_str(space, w_key): return space.is_w(space.type(w_key), space.w_str) @@ -261,7 +262,6 @@ 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 return space.newbool(self.getitem(w_key) is not None) def descr_clear(self, space): @@ -416,9 +416,10 @@ ) dict_typedef = W_DictMultiObject.typedef +registerimplementation(W_DictMultiObject) + class DictStrategy(object): - def __init__(self, space): self.space = space @@ -483,8 +484,8 @@ def view_as_kwargs(self, w_dict): return (None, None) + class EmptyDictStrategy(DictStrategy): - erase, unerase = rerased.new_erasing_pair("empty") erase = staticmethod(erase) unerase = staticmethod(unerase) @@ -589,6 +590,7 @@ def getiteritems(self, w_dict): return iter([(None, None)]) + # Iterator Implementation base classes def _new_next(TP): @@ -596,7 +598,7 @@ EMPTY = None else: EMPTY = None, None - + def next(self): if self.dictimplementation is None: return EMPTY @@ -660,7 +662,7 @@ wrapvalue = lambda space, key : key else: wrapvalue = dictimpl.wrapvalue.im_func - + class IterClassKeys(BaseKeyIterator): def __init__(self, space, strategy, impl): self.iterator = strategy.getiterkeys(impl) @@ -712,11 +714,6 @@ create_iterator_classes(EmptyDictStrategy) -registerimplementation(W_DictMultiObject) - -# DictImplementation lattice -# XXX fix me - # concrete subclasses of the above @@ -831,7 +828,6 @@ class ObjectDictStrategy(AbstractTypedStrategy, DictStrategy): - erase, unerase = rerased.new_erasing_pair("object") erase = staticmethod(erase) unerase = staticmethod(unerase) @@ -864,8 +860,8 @@ create_iterator_classes(ObjectDictStrategy) + class StringDictStrategy(AbstractTypedStrategy, DictStrategy): - erase, unerase = rerased.new_erasing_pair("string") erase = staticmethod(erase) unerase = staticmethod(unerase) @@ -930,7 +926,6 @@ class UnicodeDictStrategy(AbstractTypedStrategy, DictStrategy): - erase, unerase = rerased.new_erasing_pair("unicode") erase = staticmethod(erase) unerase = staticmethod(unerase) @@ -1032,9 +1027,6 @@ create_iterator_classes(IntDictStrategy) -init_signature = Signature(['seq_or_map'], None, 'kwargs') -init_defaults = [None] - def update1(space, w_dict, w_data): if space.findattr(w_data, space.wrap("keys")) is None: @@ -1076,6 +1068,9 @@ w_dict.setitem(w_key, w_value) +init_signature = Signature(['seq_or_map'], None, 'kwargs') +init_defaults = [None] + def init_or_update(space, w_dict, __args__, funcname): w_src, w_kwds = __args__.parse_obj( None, funcname, @@ -1111,7 +1106,6 @@ # ____________________________________________________________ # Iteration - class W_BaseDictMultiIterObject(W_Object): _immutable_fields_ = ["iteratorimplementation"] @@ -1179,12 +1173,12 @@ w_ret = space.newtuple([new_inst, space.newtuple(tup)]) return w_ret - W_BaseDictMultiIterObject.typedef = StdTypeDef("dictionaryiterator", __length_hint__ = gateway.interp2app(W_BaseDictMultiIterObject.descr_length_hint), __reduce__ = gateway.interp2app(W_BaseDictMultiIterObject.descr_reduce), ) + class W_DictMultiIterKeysObject(W_BaseDictMultiIterObject): def descr_next(self, space): iteratorimplementation = self.iteratorimplementation @@ -1231,6 +1225,7 @@ next = gateway.interp2app(W_DictMultiIterValuesObject.descr_next) ) + # ____________________________________________________________ # Views @@ -1244,7 +1239,6 @@ return space.wrap("%s(%s)" % (space.type(self).getname(space), space.str_w(w_repr))) - def descr_eq(self, space, w_otherview): if not space.eq_w(space.len(self), space.len(w_otherview)): return space.w_False _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit