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