Author: Ronan Lamy <[email protected]>
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
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit