From 446da878e01d905b6ddcede4881dbfbb7e3613ed Mon Sep 17 00:00:00 2001 From: meshde Date: Tue, 6 Nov 2018 08:12:15 +0530 Subject: [PATCH 1/3] Add test case for #149 --- fire/fire_test.py | 5 +++++ fire/test_components.py | 10 ++++++++++ 2 files changed, 15 insertions(+) diff --git a/fire/fire_test.py b/fire/fire_test.py index 8cf121af..63302d26 100644 --- a/fire/fire_test.py +++ b/fire/fire_test.py @@ -703,6 +703,11 @@ def testTraceErrors(self): with self.assertRaisesFireExit(2): fire.Fire(tc.InstanceVars, command=['--arg1=a1', '--arg2=a2', '-', 'jog']) + def testClassWithDefaultMethod(self): + self.assertEqual( + fire.Fire(tc.DefaultMethod, command=['double', '10']), 20 + ) + if __name__ == '__main__': testutils.main() diff --git a/fire/test_components.py b/fire/test_components.py index e35027c7..6d8eaf09 100644 --- a/fire/test_components.py +++ b/fire/test_components.py @@ -498,3 +498,13 @@ def off(self): def set(self, value): self.pixels[self._row][self._col] = value return self + +class DefaultMethod(object): + + def double(self, number): + return 2 * number + + def __getattr__(self, name): + def _missing(*args, **kwargs): + return "Undefined Function" + return _missing From 43642ba96848cc3bac5d2d621d21adf030a8f0fa Mon Sep 17 00:00:00 2001 From: meshde Date: Tue, 6 Nov 2018 08:51:53 +0530 Subject: [PATCH 2/3] pylint unused-argument fixes --- fire/test_components.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fire/test_components.py b/fire/test_components.py index 6d8eaf09..e88ae907 100644 --- a/fire/test_components.py +++ b/fire/test_components.py @@ -505,6 +505,6 @@ def double(self, number): return 2 * number def __getattr__(self, name): - def _missing(*args, **kwargs): + def _missing(): return "Undefined Function" return _missing From c86e22b306c4798a4a6d607eb69a158c41aa7a1a Mon Sep 17 00:00:00 2001 From: meshde Date: Tue, 6 Nov 2018 08:59:44 +0530 Subject: [PATCH 3/3] Use dir() instead of inspect.getmembers() to get available methods of the object Ref: #149 --- fire/core.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fire/core.py b/fire/core.py index 07993de9..083163b9 100644 --- a/fire/core.py +++ b/fire/core.py @@ -632,7 +632,7 @@ def _GetMember(component, args): Raises: FireError: If we cannot consume an argument to get a member. """ - members = dict(inspect.getmembers(component)) + members = dir(component) arg = args[0] arg_names = [ arg, @@ -641,7 +641,7 @@ def _GetMember(component, args): for arg_name in arg_names: if arg_name in members: - return members[arg_name], [arg], args[1:] + return getattr(component, arg_name), [arg], args[1:] raise FireError('Could not consume arg:', arg)