summaryrefslogtreecommitdiffstats
path: root/utils.py
diff options
context:
space:
mode:
authorJan Pokorný <jpokorny@redhat.com>2014-04-01 22:14:04 +0200
committerJan Pokorný <jpokorny@redhat.com>2014-04-01 22:14:04 +0200
commit60ac1b07da3db110556d260abde244f62901dc97 (patch)
treedb04f521129f920c57df240f30e0bdedc60b6c7f /utils.py
parent1fb60d04eb7ee6a42bec0a589896fa22b4a59468 (diff)
downloadclufter-60ac1b07da3db110556d260abde244f62901dc97.tar.gz
clufter-60ac1b07da3db110556d260abde244f62901dc97.tar.xz
clufter-60ac1b07da3db110556d260abde244f62901dc97.zip
utils: further sanitize/simplify func_defaults_varnames
Signed-off-by: Jan Pokorný <jpokorny@redhat.com>
Diffstat (limited to 'utils.py')
-rw-r--r--utils.py14
1 files changed, 6 insertions, 8 deletions
diff --git a/utils.py b/utils.py
index b15a851..9be58ec 100644
--- a/utils.py
+++ b/utils.py
@@ -100,24 +100,22 @@ def func_defaults_varnames(func, skip=0, fix_generator_tail=True):
https://mail.python.org/pipermail/python-list/
2013-November/661304.html
"""
- # XXX assert len(func_varnames) - skip >= len(func.func_defaults)
- func_varnames = func.func_code.co_varnames[skip:]
+ func_varnames = func.func_code.co_varnames
+ assert len(func_varnames) - skip >= len(func.func_defaults)
# look at tail possibly spoiled with implicit generator's stuff ala "_[1]"
fix = 0
- for i in xrange(len(func_varnames) if fix_generator_tail else 0, 0, -1):
+ for i in xrange(len(func_varnames) if fix_generator_tail else 0, skip, -1):
if func_varnames[i - 1][0] not in "_.":
break
fix -= 1
- fix = fix or None
+ func_varnames = func_varnames[skip:fix or None]
func_defaults = dict(zip(
- func_varnames[-len(func.func_defaults) + skip - 1:fix],
- func.func_defaults[skip:fix]
+ func_varnames,
+ func.func_defaults[-len(func_varnames):] # "fix" auto-accommodated
))
- if fix:
- return func_defaults, func_varnames[:fix]
return func_defaults, func_varnames