[pypy-svn] r10652 - in pypy/dist/pypy: annotation objspace/std

pedronis at codespeak.net pedronis at codespeak.net
Fri Apr 15 01:00:39 CEST 2005


Author: pedronis
Date: Fri Apr 15 01:00:39 2005
New Revision: 10652

Modified:
   pypy/dist/pypy/annotation/builtin.py
   pypy/dist/pypy/objspace/std/typeobject.py
Log:
workaround  getitem(None,0) -> SomeObject issue

annotations for os.path.* stuff and min,max



Modified: pypy/dist/pypy/annotation/builtin.py
==============================================================================
--- pypy/dist/pypy/annotation/builtin.py	(original)
+++ pypy/dist/pypy/annotation/builtin.py	Fri Apr 15 01:00:39 2005
@@ -3,11 +3,11 @@
 """
 
 import types
-import sys, math
+import sys, math, os
 from pypy.tool.ansi_print import ansi_print
 from pypy.annotation.model import SomeInteger, SomeObject, SomeChar, SomeBool
 from pypy.annotation.model import SomeList, SomeString, SomeTuple, SomeSlice
-from pypy.annotation.model import SomeFloat
+from pypy.annotation.model import SomeFloat, unionof
 from pypy.annotation.bookkeeper import getbookkeeper
 from pypy.annotation.factory import ListFactory
 from pypy.objspace.flow.model import Constant
@@ -112,6 +112,15 @@
     factory.generalize(s_tup)
     return factory.create()
 
+def builtin_min(*s_values):
+    if len(s_values) == 1: # xxx do we support this?
+        s_iter = s_values[0].iter()
+        return s_iter.next()
+    else:
+        return unionof(*s_values)
+
+builtin_max = builtin_min
+
 def builtin_apply(*stuff):
     getbookkeeper().warning("ignoring apply%r" % (stuff,))
     return SomeObject()
@@ -164,6 +173,12 @@
 def unicodedata_decimal(s_uchr):
     return SomeInteger()
 
+def test(*args):
+    return SomeBool()
+
+def pathpart(*args):
+    return SomeString()
+
 # collect all functions
 import __builtin__
 BUILTIN_ANALYZERS = {}
@@ -187,3 +202,9 @@
 import unicodedata
 BUILTIN_ANALYZERS[unicodedata.decimal] = unicodedata_decimal # xxx
 
+# os.path stuff
+BUILTIN_ANALYZERS[os.path.dirname] = pathpart
+BUILTIN_ANALYZERS[os.path.normpath] = pathpart
+BUILTIN_ANALYZERS[os.path.join] = pathpart
+BUILTIN_ANALYZERS[os.path.exists] = test
+BUILTIN_ANALYZERS[os.path.isdir] = test

Modified: pypy/dist/pypy/objspace/std/typeobject.py
==============================================================================
--- pypy/dist/pypy/objspace/std/typeobject.py	(original)
+++ pypy/dist/pypy/objspace/std/typeobject.py	Fri Apr 15 01:00:39 2005
@@ -305,7 +305,7 @@
     while orderlists:
         for candidatelist in orderlists:
             candidate = candidatelist[0]
-            if mro_blockinglist(candidate, orderlists) is None:
+            if mro_blockinglist(candidate, orderlists) is GOODCANDIDATE:
                 break    # good candidate
         else:
             return mro_error(orderlists)  # no candidate found
@@ -318,11 +318,13 @@
                     del orderlists[i]
     return order
 
+GOODCANDIDATE = []
+
 def mro_blockinglist(candidate, orderlists):
     for lst in orderlists:
         if candidate in lst[1:]:
             return lst
-    return None  # good candidate
+    return GOODCANDIDATE # good candidate
 
 def mro_error(orderlists):
     cycle = []



More information about the Pypy-commit mailing list