From 6312e174df1dfb8bc37539bd181a6027251a9bc7 Mon Sep 17 00:00:00 2001 From: boblinux Date: Fri, 15 Apr 2016 20:47:37 +0200 Subject: [PATCH 1/4] builtins.py : Elimination of unused variables --- fatoptimizer/builtins.py | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/fatoptimizer/builtins.py b/fatoptimizer/builtins.py index 4165251..c62e7da 100644 --- a/fatoptimizer/builtins.py +++ b/fatoptimizer/builtins.py @@ -8,13 +8,13 @@ def _chr_check_args(args): - code_point = args[0] - return 0 <= code_point <= 0x10ffff + # args[0] => code_point + return 0 <= args[0] <= 0x10ffff def _complex_check_args(args): - code_point = args[0] - return 0 <= code_point <= 0x10ffff + # args[0] => code_point + return 0 <= args[0] <= 0x10ffff def _divmod_check_args(args): @@ -23,25 +23,24 @@ def _divmod_check_args(args): def _ord_check_args(args): - string = args[0] - return (len(string) == 1) + # param args[0] is a string + return (len(args[0]) == 1) def _bytes_check_args(args): - arg = args[0] - if not isinstance(arg, tuple): + if not isinstance(args[0], tuple): return True return all(0 <= item <= 255 for item in arg) def _pow_check_args(config, args): - num = args[0] - exp = args[1] + # num = args[0] + # exp = args[1] if len(args) >= 3: - mod = args[2] + return check_pow(config, args[0], args[1], args[2]) else: - mod = None - return check_pow(config, num, exp, mod) + return check_pow(config, args[0], args[1], None) + def add_pure_builtins(config): From 40c29008f7824330cf7c8de596d6fd589429fd01 Mon Sep 17 00:00:00 2001 From: boblinux Date: Fri, 15 Apr 2016 21:09:07 +0200 Subject: [PATCH 2/4] delete set but never read variables in file builtins.py --- fatoptimizer/builtins.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/fatoptimizer/builtins.py b/fatoptimizer/builtins.py index c62e7da..9cb124b 100644 --- a/fatoptimizer/builtins.py +++ b/fatoptimizer/builtins.py @@ -30,19 +30,20 @@ def _ord_check_args(args): def _bytes_check_args(args): if not isinstance(args[0], tuple): return True - return all(0 <= item <= 255 for item in arg) + return all(0 <= item <= 255 for item in args[0]) def _pow_check_args(config, args): - # num = args[0] - # exp = args[1] + # num => args[0] + # exp => args[1] if len(args) >= 3: + # mod => args[2] return check_pow(config, args[0], args[1], args[2]) else: + # mod => None return check_pow(config, args[0], args[1], None) - def add_pure_builtins(config): def add(name, *args, **kw): func = getattr(builtins, name) From 7715569af4b84b6135a682be66d76a742fb9eaa6 Mon Sep 17 00:00:00 2001 From: boblinux Date: Sat, 16 Apr 2016 00:56:06 +0200 Subject: [PATCH 3/4] add pure method str.upper() with tests --- fatoptimizer/builtins.py | 4 ++-- fatoptimizer/config.py | 3 ++- fatoptimizer/methods.py | 1 + test_fatoptimizer.py | 3 +++ 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/fatoptimizer/builtins.py b/fatoptimizer/builtins.py index 9cb124b..06e455d 100644 --- a/fatoptimizer/builtins.py +++ b/fatoptimizer/builtins.py @@ -47,8 +47,7 @@ def _pow_check_args(config, args): def add_pure_builtins(config): def add(name, *args, **kw): func = getattr(builtins, name) - pure_func = PureFunction(func, name, *args, **kw) - config._pure_builtins[name] = pure_func + config._pure_builtins[name] = PureFunction(func, name, *args, **kw) ANY_TYPE = None @@ -76,6 +75,7 @@ def add(name, *args, **kw): add('int', 1, FLOAT_TYPES + STR_TYPES, # catch ValueError for int('xyz') exceptions=ValueError) + add('len', 1, ITERABLE_TYPES) add('list', 1, ITERABLE_TYPES) add('oct', 1, int) diff --git a/fatoptimizer/config.py b/fatoptimizer/config.py index 7ec2212..bdb577a 100644 --- a/fatoptimizer/config.py +++ b/fatoptimizer/config.py @@ -1,7 +1,8 @@ import builtins from .tools import get_constant_size, ITERABLE_TYPES - +# ISSUE : SystemError: Parent module '' not loaded, cannot perform relative import +# StackOverFlow search : http://stackoverflow.com/questions/16981921/relative-imports-in-python-3 class Config: # FIXME: use dir()? diff --git a/fatoptimizer/methods.py b/fatoptimizer/methods.py index 5f37f44..2701092 100644 --- a/fatoptimizer/methods.py +++ b/fatoptimizer/methods.py @@ -53,5 +53,6 @@ def add(obj_type, name, *args, **kw): check_args=check_encoding, exceptions=UnicodeEncodeError) # FIXME: add more str methods + add(str, 'upper', 0) # FIXME: tuple: count, index diff --git a/test_fatoptimizer.py b/test_fatoptimizer.py index a8badf6..5751980 100644 --- a/test_fatoptimizer.py +++ b/test_fatoptimizer.py @@ -3206,6 +3206,9 @@ def test_str_encode(self): self.check_dont_optimize(r'"ab\xff".encode("big5")') self.check_dont_optimize(r'"ab\xff".encode("ascii", "backslashreplace")') + def test_str_upper(self): + + self.check_optimize(r'"abc".upper()','"ABC"') if __name__ == "__main__": unittest.main() From cda65946275a91ea14e9fc04194022f3b7b4cd9b Mon Sep 17 00:00:00 2001 From: boblinux Date: Mon, 18 Apr 2016 21:43:02 +0200 Subject: [PATCH 4/4] pure method str.lower() with tests --- fatoptimizer/methods.py | 2 +- test_fatoptimizer.py | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/fatoptimizer/methods.py b/fatoptimizer/methods.py index 2701092..8725f21 100644 --- a/fatoptimizer/methods.py +++ b/fatoptimizer/methods.py @@ -54,5 +54,5 @@ def add(obj_type, name, *args, **kw): exceptions=UnicodeEncodeError) # FIXME: add more str methods add(str, 'upper', 0) - + add(str,'lower', 0) # FIXME: tuple: count, index diff --git a/test_fatoptimizer.py b/test_fatoptimizer.py index 5751980..72d200c 100644 --- a/test_fatoptimizer.py +++ b/test_fatoptimizer.py @@ -3210,5 +3210,9 @@ def test_str_upper(self): self.check_optimize(r'"abc".upper()','"ABC"') + def test_str_lower(self): + + self.check_optimize(r'"ABC".lower()','"abc"') + if __name__ == "__main__": unittest.main()