[pypy-svn] r10575 - in pypy/dist/pypy: tool translator translator/test

pedronis at codespeak.net pedronis at codespeak.net
Wed Apr 13 14:34:52 CEST 2005


Author: pedronis
Date: Wed Apr 13 14:34:52 2005
New Revision: 10575

Modified:
   pypy/dist/pypy/tool/unionfind.py
   pypy/dist/pypy/translator/annrpython.py
   pypy/dist/pypy/translator/test/test_annrpython.py
Log:
let's access the pbc maximal access sets through annotator.getpbcaccesssets

expore for them a mapping [] interface for querying



Modified: pypy/dist/pypy/tool/unionfind.py
==============================================================================
--- pypy/dist/pypy/tool/unionfind.py	(original)
+++ pypy/dist/pypy/tool/unionfind.py	Wed Apr 13 14:34:52 2005
@@ -9,6 +9,15 @@
         self.info_factory = info_factory
         self.root_info = {}
 
+    # mapping-like [] access
+    def __getitem__(self, obj):
+        if obj not in self.link_to_parent:
+            raise KeyError, obj
+
+        ignore, rep, access = self.find(obj)
+
+        return access
+
     def find(self, obj):  # -> new_root, obj, info
         if obj not in self.link_to_parent:
             info = self.root_info[obj] = self.info_factory(obj)

Modified: pypy/dist/pypy/translator/annrpython.py
==============================================================================
--- pypy/dist/pypy/translator/annrpython.py	(original)
+++ pypy/dist/pypy/translator/annrpython.py	Wed Apr 13 14:34:52 2005
@@ -117,6 +117,10 @@
             self.bindings[v] = s_value
             yield v
 
+    def getpbcaccesssets(self):
+        """Return mapping const obj -> PBCAccessSet"""
+        return self.bookkeeper.pbc_maximal_access_sets
+
     #___ medium-level interface ____________________________
 
     def addpendingblock(self, fn, block, cells, called_from=None):

Modified: pypy/dist/pypy/translator/test/test_annrpython.py
==============================================================================
--- pypy/dist/pypy/translator/test/test_annrpython.py	(original)
+++ pypy/dist/pypy/translator/test/test_annrpython.py	Wed Apr 13 14:34:52 2005
@@ -757,15 +757,20 @@
         assert l1.s_item.knowntype == int
         assert l2.s_item.knowntype == str
 
-        ign, rep1,acc1 = a.bookkeeper.pbc_maximal_access_sets.find(c1)
-        ign, rep2,acc2 = a.bookkeeper.pbc_maximal_access_sets.find(c2)
-        ing, rep3,acc3 = a.bookkeeper.pbc_maximal_access_sets.find(c3)
+        access_sets = a.getpbcaccesssets()
+
+        ign, rep1,acc1 = access_sets.find(c1)
+        ign, rep2,acc2 = access_sets.find(c2)
+        ing, rep3,acc3 = access_sets.find(c3)
 
         assert rep1 is rep2 is rep3
         assert acc1 is acc2 is acc3
 
         assert len(acc1.objects) == 3
         assert acc1.attrs == {'v1': True, 'v2': True}
+
+        assert access_sets[c1] is acc1
+        raises(KeyError, "access_sets[object()]")
         
     def test_isinstance_usigned(self):
         from pypy.tool.rarithmetic import r_uint



More information about the Pypy-commit mailing list