Author: Ronan Lamy <ronan.l...@gmail.com>
Branch: less-stringly-ops
Changeset: r68223:9c0b00eeb262
Date: 2013-10-31 03:42 +0000
http://bitbucket.org/pypy/pypy/changeset/9c0b00eeb262/

Log:    make ArgsFT.keywords always be a list

diff --git a/rpython/annotator/argument.py b/rpython/annotator/argument.py
--- a/rpython/annotator/argument.py
+++ b/rpython/annotator/argument.py
@@ -11,9 +11,8 @@
         assert w_starstararg is None
         assert isinstance(args_w, list)
         self.arguments_w = args_w
-        self.keywords = keywords
-        self.keywords_w = keywords_w
-        self.keyword_names_w = None
+        self.keywords = keywords or []
+        self.keywords_w = keywords_w or []
 
     def __repr__(self):
         """ NOT_RPYTHON """
@@ -71,7 +70,7 @@
 
         args_w = self.positional_args
         num_args = len(args_w)
-        keywords = self.keywords or []
+        keywords = self.keywords
         num_kwds = len(keywords)
 
         # put as many positional input arguments into place as available
@@ -145,7 +144,7 @@
 
     def unpack(self):
         "Return a ([w1,w2...], {'kw':w3...}) pair."
-        kwds_w = dict(zip(self.keywords, self.keywords_w)) if self.keywords 
else {}
+        kwds_w = dict(zip(self.keywords, self.keywords_w))
         return self.positional_args, kwds_w
 
     def match_signature(self, signature, defaults_w):
@@ -177,9 +176,8 @@
         assert len(data_w) >= need_cnt
         args_w = data_w[:need_cnt]
         _kwds_w = dict(zip(argnames[need_cnt:], data_w[need_cnt:]))
-        keywords = self.keywords or []
-        keywords_w = [_kwds_w[key] for key in keywords]
-        return ArgumentsForTranslation(args_w, keywords, keywords_w)
+        keywords_w = [_kwds_w[key] for key in self.keywords]
+        return ArgumentsForTranslation(args_w, self.keywords, keywords_w)
 
     @classmethod
     def fromshape(cls, (shape_cnt, shape_keys, shape_star, shape_stst), 
data_w):
@@ -210,15 +208,11 @@
         return (shape_cnt, shape_keys, shape_star, shape_stst), data_w
 
     def _rawshape(self, nextra=0):
-        shape_cnt = len(self.arguments_w) + nextra       # Number of 
positional args
-        if self.keywords:
-            shape_keys = self.keywords[:]                # List of keywords 
(strings)
-            shape_keys.sort()
-        else:
-            shape_keys = []
+        shape_cnt = len(self.arguments_w) + nextra  # Number of positional args
+        shape_keys = tuple(sorted(self.keywords))
         shape_star = self.w_stararg is not None   # Flag: presence of *arg
-        shape_stst = self.w_starstararg is not None # Flag: presence of **kwds
-        return shape_cnt, tuple(shape_keys), shape_star, shape_stst # 
shape_keys are sorted
+        shape_stst = self.w_starstararg is not None  # Flag: presence of **kwds
+        return shape_cnt, shape_keys, shape_star, shape_stst
 
 
 def rawshape(args, nextra=0):
diff --git a/rpython/annotator/test/test_argument.py 
b/rpython/annotator/test/test_argument.py
--- a/rpython/annotator/test/test_argument.py
+++ b/rpython/annotator/test/test_argument.py
@@ -23,8 +23,8 @@
         args1 = args.prepend("thingy")
         assert args1 is not args
         assert args1.arguments_w == ["thingy", "0"]
-        assert args1.keywords is args.keywords
-        assert args1.keywords_w is args.keywords_w
+        assert args1.keywords == args.keywords
+        assert args1.keywords_w == args.keywords_w
 
     def test_fixedunpacked(self):
         args = MockArgs([], ["k"], [1])
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to