From 7fa025432c147333167393d0b88edfe7266b2646 Mon Sep 17 00:00:00 2001 From: William Deegan Date: Mon, 31 Jul 2017 15:23:04 -0700 Subject: PY2/3 Add property values for object/instance signature --- src/engine/SCons/Action.py | 8 ++++---- src/engine/SCons/ActionTests.py | 7 +++---- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/engine/SCons/Action.py b/src/engine/SCons/Action.py index bf611af..7f11d7b 100644 --- a/src/engine/SCons/Action.py +++ b/src/engine/SCons/Action.py @@ -329,8 +329,6 @@ def _function_contents(func): contents.append(b')') retval = bytearray(b'').join(contents) - - # print("ReTVAL:%s"%retval) return retval @@ -350,7 +348,7 @@ def _object_instance_content(obj): inst_class_hierarchy = bytearray(repr(inspect.getclasstree([obj.__class__,])),'utf-8') # print("ICH:%s : %s"%(inst_class_hierarchy, repr(obj))) - properties = [(p, getattr(obj, p, "None")) for p in dir(obj) if p[:2] != '__' and not inspect.ismethod(getattr(obj, p))] + properties = [(p, getattr(obj, p, "None")) for p in dir(obj) if not (p[:2] == '__' or inspect.ismethod(getattr(obj, p)) or inspect.isbuiltin(getattr(obj,p))) ] properties.sort() properties_str = ','.join(["%s=%s"%(p[0],p[1]) for p in properties]) properties_bytes = bytearray(properties_str,'utf-8') @@ -373,7 +371,9 @@ def _object_instance_content(obj): retval.extend(inst_class_hierarchy) retval.extend(b']]{{') retval.extend(bytearray(b",").join(method_contents)) - retval.extend(b"}}") + retval.extend(b"}}{{{") + retval.extend(properties_bytes) + retval.extend(b'}}}') return retval # print("class :%s"%inst_class) diff --git a/src/engine/SCons/ActionTests.py b/src/engine/SCons/ActionTests.py index 7980e39..ba3d844 100644 --- a/src/engine/SCons/ActionTests.py +++ b/src/engine/SCons/ActionTests.py @@ -2095,15 +2095,14 @@ class ObjectContentsTestCase(unittest.TestCase): # Since the python bytecode has per version differences, we need different expected results per version if TestCmd.IS_PY3: if sys.version_info[:2] == (3,5): - expected = bytearray(b"{TestClass:__main__}[[[(, ()), [(, (,))]]]]{{1, 1, 0, 0,({str:builtins}[[[(, ()), [(, (,))]]]]{{}},{str:builtins}[[[(, ()), [(, (,))]]]]{{}}),({str:builtins}[[[(, ()), [(, (,))]]]]{{}},{str:builtins}[[[(, ()), [(, (,))]]]]{{}}),(d\x01\x00|\x00\x00_\x00\x00d\x02\x00|\x00\x00_\x01\x00d\x00\x00S),(),(),2, 2, 0, 0,(),(),(d\x00\x00S),(),()}}") + expected = bytearray(b"{TestClass:__main__}[[[(, ()), [(, (,))]]]]{{1, 1, 0, 0,({str:builtins}[[[(, ()), [(, (,))]]]]{{}}{{{}}},{str:builtins}[[[(, ()), [(, (,))]]]]{{}}{{{}}}),({str:builtins}[[[(, ()), [(, (,))]]]]{{}}{{{}}},{str:builtins}[[[(, ()), [(, (,))]]]]{{}}{{{}}}),(d\x01\x00|\x00\x00_\x00\x00d\x02\x00|\x00\x00_\x01\x00d\x00\x00S),(),(),2, 2, 0, 0,(),(),(d\x00\x00S),(),()}}{{{a=a,b=b}}}") elif sys.version_info[:2] == (3,6): - expected = bytearray(b"{TestClass:__main__}[[[(, ()), [(, (,))]]]]{{1, 1, 0, 0,({str:builtins}[[[(, ()), [(, (,))]]]]{{}},{str:builtins}[[[(, ()), [(, (,))]]]]{{}}),({str:builtins}[[[(, ()), [(, (,))]]]]{{}},{str:builtins}[[[(, ()), [(, (,))]]]]{{}}),(d\x01|\x00_\x00d\x02|\x00_\x01d\x00S\x00),(),(),2, 2, 0, 0,(),(),(d\x00S\x00),(),()}}") + expected = bytearray(b"{TestClass:__main__}[[[(, ()), [(, (,))]]]]{{1, 1, 0, 0,({str:builtins}[[[(, ()), [(, (,))]]]]{{}}{{{}}},{str:builtins}[[[(, ()), [(, (,))]]]]{{}}{{{}}}),({str:builtins}[[[(, ()), [(, (,))]]]]{{}}{{{}}},{str:builtins}[[[(, ()), [(, (,))]]]]{{}}{{{}}}),(d\x01|\x00_\x00d\x02|\x00_\x01d\x00S\x00),(),(),2, 2, 0, 0,(),(),(d\x00S\x00),(),()}}{{{a=a,b=b}}}") else: - expected = bytearray(b"{TestClass:__main__}[[[(, ()), [(, (,))]]]]{{1, 1, 0, 0,({str:__builtin__}[[[(, (,)), [(, (,))]]]]{{}},{str:__builtin__}[[[(, (,)), [(, (,))]]]]{{}}),({str:__builtin__}[[[(, (,)), [(, (,))]]]]{{}},{str:__builtin__}[[[(, (,)), [(, (,))]]]]{{}}),(d\x01\x00|\x00\x00_\x00\x00d\x02\x00|\x00\x00_\x01\x00d\x00\x00S),(),(),2, 2, 0, 0,(),(),(d\x00\x00S),(),()}}") + expected = bytearray(b"{TestClass:__main__}[[[(, ()), [(, (,))]]]]{{1, 1, 0, 0,({str:__builtin__}[[[(, (,)), [(, (,))]]]]{{}}{{{}}},{str:__builtin__}[[[(, (,)), [(, (,))]]]]{{}}{{{}}}),({str:__builtin__}[[[(, (,)), [(, (,))]]]]{{}}{{{}}},{str:__builtin__}[[[(, (,)), [(, (,))]]]]{{}}{{{}}}),(d\x01\x00|\x00\x00_\x00\x00d\x02\x00|\x00\x00_\x01\x00d\x00\x00S),(),(),2, 2, 0, 0,(),(),(d\x00\x00S),(),()}}{{{a=a,b=b}}}") assert c == expected, "Got\n"+repr(c)+"\nExpected \n"+"\n"+repr(expected) - # @unittest.skip("Results vary between py2 and py3, not sure if test makes sense to implement") def test_code_contents(self): """Test that Action._code_contents works""" -- cgit v0.12