[pypy-commit] pypy py3k: merge heads

antocuni noreply at buildbot.pypy.org
Wed Aug 22 14:25:40 CEST 2012


Author: Antonio Cuni <anto.cuni at gmail.com>
Branch: py3k
Changeset: r56800:e8678fb55920
Date: 2012-08-22 14:25 +0200
http://bitbucket.org/pypy/pypy/changeset/e8678fb55920/

Log:	merge heads

diff --git a/TODO b/TODO
--- a/TODO
+++ b/TODO
@@ -10,5 +10,6 @@
 re-enable StdObjSpace.listview_str
 
 re-enable the kwargs dict strategy in dictmultiobject.py
+re-enable view_as_kwargs
 
 unskip numpypy tests in module/test_lib_pypy/numpypy/
diff --git a/pypy/interpreter/argument.py b/pypy/interpreter/argument.py
--- a/pypy/interpreter/argument.py
+++ b/pypy/interpreter/argument.py
@@ -5,6 +5,7 @@
 from pypy.interpreter.error import OperationError, operationerrfmt
 from pypy.rlib.debug import make_sure_not_resized
 from pypy.rlib import jit
+from pypy.rlib.debug import check_annotation
 from pypy.rlib.objectmodel import enforceargs
 
 class Signature(object):
@@ -93,15 +94,19 @@
         raise IndexError
 
 
-def assert_list_of_unicode(value):
-    from pypy.rlib.debug import check_annotation
-    def checker(ann, bk):
-        from pypy.annotation.model import SomeList, SomeUnicodeString
-        if not isinstance(ann, SomeList):
-            raise TypeError
-        if not isinstance(ann.listdef.listitem.s_value, SomeUnicodeString):
-            raise TypeError
-    check_annotation(value, checker)
+
+def check_list_of_unicode(ann, bk):
+    from pypy.annotation.model import (SomeList, SomeUnicodeString,
+                                       s_None, s_ImpossibleValue)
+    if ann is s_None:
+        return
+    if not isinstance(ann, SomeList):
+        raise TypeError
+    s_item = ann.listdef.listitem.s_value
+    if s_item is s_ImpossibleValue:
+        return
+    if not isinstance(s_item, SomeUnicodeString):
+        raise TypeError
 
 
 class Arguments(object):
@@ -116,13 +121,13 @@
     """
 
     ###  Construction  ###
-    @enforceargs(keywords=[unicode])
+    #@enforceargs(keywords=[unicode])
     def __init__(self, space, args_w, keywords=None, keywords_w=None,
                  w_stararg=None, w_starstararg=None, keyword_names_w=None):
         self.space = space
         assert isinstance(args_w, list)
         self.arguments_w = args_w
-        assert_list_of_unicode(keywords)
+        check_annotation(keywords, check_list_of_unicode)
         
         self.keywords = keywords
         self.keywords_w = keywords_w
@@ -198,7 +203,7 @@
         # unpack the ** arguments
         space = self.space
         keywords, values_w = space.view_as_kwargs(w_starstararg)
-        assert_list_of_unicode(keywords)
+        check_annotation(keywords, check_list_of_unicode)
         if keywords is not None: # this path also taken for empty dicts
             if self.keywords is None:
                 self.keywords = keywords
diff --git a/pypy/module/__builtin__/compiling.py b/pypy/module/__builtin__/compiling.py
--- a/pypy/module/__builtin__/compiling.py
+++ b/pypy/module/__builtin__/compiling.py
@@ -6,7 +6,7 @@
 from pypy.interpreter.error import OperationError
 from pypy.interpreter.astcompiler import consts, ast
 from pypy.interpreter.gateway import unwrap_spec
-from pypy.interpreter.argument import Arguments, assert_list_of_unicode
+from pypy.interpreter.argument import Arguments, check_annotation, check_list_of_unicode
 from pypy.interpreter.nestedscope import Cell
 
 @unwrap_spec(filename=str, mode=str, flags=int, dont_inherit=int, optimize=int)
@@ -114,7 +114,7 @@
 def build_class(space, w_func, w_name, __args__):
     bases_w, kwds_w = __args__.unpack()
     w_bases = space.newtuple(bases_w)
-    w_meta = kwds_w.pop('metaclass', None)
+    w_meta = kwds_w.pop(u'metaclass', None)
     if w_meta is None:
         if bases_w:
             w_meta = space.type(bases_w[0])
@@ -129,7 +129,7 @@
         w_namespace = space.newdict()
     else:
         keywords = kwds_w.keys()
-        assert_list_of_unicode(keywords)
+        check_annotation(keywords, check_list_of_unicode)
         args = Arguments(space, 
                          args_w=[w_name, w_bases],
                          keywords=keywords,
@@ -137,7 +137,7 @@
         w_namespace = space.call_args(w_prep, args)
     w_cell = space.call_function(w_func, w_namespace)
     keywords = kwds_w.keys()
-    assert_list_of_unicode(keywords)
+    check_annotation(keywords, check_list_of_unicode)
     args = Arguments(space,
                      args_w=[w_name, w_bases, w_namespace],
                      keywords=keywords,
diff --git a/pypy/objspace/flow/flowcontext.py b/pypy/objspace/flow/flowcontext.py
--- a/pypy/objspace/flow/flowcontext.py
+++ b/pypy/objspace/flow/flowcontext.py
@@ -11,6 +11,7 @@
 from pypy.objspace.flow.framestate import (FrameState, recursively_unflatten,
         recursively_flatten)
 from pypy.tool.stdlib_opcode import host_bytecode_spec
+from pypy.rlib import jit
 
 class StopFlowing(Exception):
     pass
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
@@ -529,6 +529,7 @@
     @jit.look_inside_iff(lambda self, w_dict:
                          w_dict_unrolling_heuristic(w_dict))
     def view_as_kwargs(self, w_dict):
+        return (None, None) # XXX: fix me to return unicode keys
         d = self.unerase(w_dict.dstorage)
         l = len(d)
         keys, values = [None] * l, [None] * l


More information about the pypy-commit mailing list