[pypy-svn] rev 617 - pypy/trunk/src/pypy/objspace/std

pedronis at codespeak.net pedronis at codespeak.net
Tue May 27 19:17:10 CEST 2003


Author: pedronis
Date: Tue May 27 19:17:10 2003
New Revision: 617

Modified:
   pypy/trunk/src/pypy/objspace/std/dictobject.py
Log:
added copy,items methods


Modified: pypy/trunk/src/pypy/objspace/std/dictobject.py
==============================================================================
--- pypy/trunk/src/pypy/objspace/std/dictobject.py	(original)
+++ pypy/trunk/src/pypy/objspace/std/dictobject.py	Tue May 27 19:17:10 2003
@@ -1,6 +1,7 @@
 from objspace import *
 from stringobject import W_StringObject
-
+from instmethobject import W_InstMethObject
+from pypy.interpreter.extmodule import make_builtin_func
 
 class _NoValueInCell: pass
 
@@ -47,6 +48,17 @@
 
     def cell(self,space,w_lookup):
         return space.wrap(self._cell(space,w_lookup))
+
+    def copy(w_self):
+        return W_DictObject(w_self.space,[(w_key,cell.get())
+                                          for w_key,cell in
+                                          w_self.non_empties()])
+    def items(w_self):
+        space = w_self.space
+        return space.newlist([ space.newtuple([w_key,cell.get()])
+                               for w_key,cell in
+                               w_self.non_empties()])
+        
                 
 def dict_is_true(space, w_dict):
     return not not w_dict.non_empties()
@@ -99,3 +111,14 @@
     return space.w_False
 
 StdObjSpace.contains.register(contains_dict_any, W_DictObject, W_ANY)
+
+def getattr_dict(space, w_dict, w_attr):
+    if space.is_true(space.eq(w_attr, space.wrap('copy'))):
+        w_builtinfn = make_builtin_func(space, W_DictObject.copy)
+        return W_InstMethObject(space, w_dict, w_builtinfn)
+    if space.is_true(space.eq(w_attr, space.wrap('items'))):
+        w_builtinfn = make_builtin_func(space, W_DictObject.items)
+        return W_InstMethObject(space, w_dict, w_builtinfn)    
+    raise FailedToImplement(space.w_AttributeError)
+
+StdObjSpace.getattr.register(getattr_dict, W_DictObject, W_ANY)


More information about the Pypy-commit mailing list