From 0c2d049c906fbe7c4bb4394b13605485e040db5c Mon Sep 17 00:00:00 2001 From: Zestyr Date: Mon, 3 Jul 2017 23:53:35 +0200 Subject: [PATCH 1/2] Fix error when resolving an integer Fixes #588 --- CHANGELOG.md | 4 +++- lbrynet/daemon/DaemonCLI.py | 10 ++++++---- tests/unit/lbrynet_daemon/test_DaemonCLI.py | 2 +- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c8072e9ba..daf8aaa3a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,8 @@ at anytime. * Fixed incorrect formatting of "amount" fields * Fixed handling of SIGINT, SIGTERM. * Fixed shutdown sequence + * Fix error when resolving an integer + * ### Deprecated * The API will no longer be served at the /lbryapi path. It will now be at the root. @@ -80,7 +82,7 @@ at anytime. ### Fixed * Fixed timeout behaviour when calling API command get * Fixed https://github.com/lbryio/lbry/issues/765 - + ### Removed * Removed stream_info_cache.json from daemon.py diff --git a/lbrynet/daemon/DaemonCLI.py b/lbrynet/daemon/DaemonCLI.py index 906afb96b..d13ab4fe8 100644 --- a/lbrynet/daemon/DaemonCLI.py +++ b/lbrynet/daemon/DaemonCLI.py @@ -28,12 +28,12 @@ def set_flag_vals(flag_names, parsed_args): elif key.startswith("--"): if remove_brackets(key[2:]) not in kwargs: k = remove_brackets(key[2:]) - kwargs[k] = guess_type(arg) elif key in flag_names: if remove_brackets(flag_names[key]) not in kwargs: - kwargs[remove_brackets(flag_names[key])] = guess_type(arg) + k = remove_brackets(flag_names[key]) elif remove_brackets(key) not in kwargs: - kwargs[remove_brackets(key)] = guess_type(arg) + k = remove_brackets(key) + kwargs[k] = guess_type(arg, k) return kwargs @@ -130,7 +130,7 @@ def main(): return 1 -def guess_type(x): +def guess_type(x, key=None): if not isinstance(x, (unicode, str)): return x if x in ('true', 'True', 'TRUE'): @@ -143,6 +143,8 @@ def guess_type(x): except ValueError: # not a float pass + if key == "uri": + return x try: return int(x) except ValueError: diff --git a/tests/unit/lbrynet_daemon/test_DaemonCLI.py b/tests/unit/lbrynet_daemon/test_DaemonCLI.py index 1ee330d42..294ce1410 100644 --- a/tests/unit/lbrynet_daemon/test_DaemonCLI.py +++ b/tests/unit/lbrynet_daemon/test_DaemonCLI.py @@ -7,6 +7,7 @@ class DaemonCLITests(unittest.TestCase): self.assertEqual('0.3.8', DaemonCLI.guess_type('0.3.8')) self.assertEqual(0.3, DaemonCLI.guess_type('0.3')) self.assertEqual(3, DaemonCLI.guess_type('3')) + self.assertEqual('3', DaemonCLI.guess_type('3', key="uri")) self.assertEqual('VdNmakxFORPSyfCprAD/eDDPk5TY9QYtSA==', DaemonCLI.guess_type('VdNmakxFORPSyfCprAD/eDDPk5TY9QYtSA==')) self.assertEqual(0.3, DaemonCLI.guess_type('0.3')) self.assertEqual(True, DaemonCLI.guess_type('TRUE')) @@ -15,4 +16,3 @@ class DaemonCLITests(unittest.TestCase): self.assertEqual(False, DaemonCLI.guess_type('FALSE')) self.assertEqual(False, DaemonCLI.guess_type('false')) self.assertEqual(False, DaemonCLI.guess_type('False')) - From b2f0dedefb1be378b7d7b71059e8f0858f525b89 Mon Sep 17 00:00:00 2001 From: Kay Kurokawa Date: Mon, 14 Aug 2017 11:52:51 -0400 Subject: [PATCH 2/2] fix error when resolving true/false/floats and also prevent other keys from being parsed as boolean, int, or float in CLI --- lbrynet/daemon/DaemonCLI.py | 4 ++-- tests/unit/lbrynet_daemon/test_DaemonCLI.py | 14 +++++++++++++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/lbrynet/daemon/DaemonCLI.py b/lbrynet/daemon/DaemonCLI.py index d13ab4fe8..d012cd23d 100644 --- a/lbrynet/daemon/DaemonCLI.py +++ b/lbrynet/daemon/DaemonCLI.py @@ -133,6 +133,8 @@ def main(): def guess_type(x, key=None): if not isinstance(x, (unicode, str)): return x + if key in ('uri', 'channel_name', 'name', 'file_name', 'download_directory'): + return x if x in ('true', 'True', 'TRUE'): return True if x in ('false', 'False', 'FALSE'): @@ -143,8 +145,6 @@ def guess_type(x, key=None): except ValueError: # not a float pass - if key == "uri": - return x try: return int(x) except ValueError: diff --git a/tests/unit/lbrynet_daemon/test_DaemonCLI.py b/tests/unit/lbrynet_daemon/test_DaemonCLI.py index 294ce1410..d21996a9d 100644 --- a/tests/unit/lbrynet_daemon/test_DaemonCLI.py +++ b/tests/unit/lbrynet_daemon/test_DaemonCLI.py @@ -7,7 +7,6 @@ class DaemonCLITests(unittest.TestCase): self.assertEqual('0.3.8', DaemonCLI.guess_type('0.3.8')) self.assertEqual(0.3, DaemonCLI.guess_type('0.3')) self.assertEqual(3, DaemonCLI.guess_type('3')) - self.assertEqual('3', DaemonCLI.guess_type('3', key="uri")) self.assertEqual('VdNmakxFORPSyfCprAD/eDDPk5TY9QYtSA==', DaemonCLI.guess_type('VdNmakxFORPSyfCprAD/eDDPk5TY9QYtSA==')) self.assertEqual(0.3, DaemonCLI.guess_type('0.3')) self.assertEqual(True, DaemonCLI.guess_type('TRUE')) @@ -16,3 +15,16 @@ class DaemonCLITests(unittest.TestCase): self.assertEqual(False, DaemonCLI.guess_type('FALSE')) self.assertEqual(False, DaemonCLI.guess_type('false')) self.assertEqual(False, DaemonCLI.guess_type('False')) + + + self.assertEqual('3', DaemonCLI.guess_type('3', key="uri")) + self.assertEqual('0.3', DaemonCLI.guess_type('0.3', key="uri")) + self.assertEqual('True', DaemonCLI.guess_type('True', key="uri")) + self.assertEqual('False', DaemonCLI.guess_type('False', key="uri")) + + self.assertEqual('3', DaemonCLI.guess_type('3', key="file_name")) + self.assertEqual('3', DaemonCLI.guess_type('3', key="name")) + self.assertEqual('3', DaemonCLI.guess_type('3', key="download_directory")) + self.assertEqual('3', DaemonCLI.guess_type('3', key="channel_name")) + + self.assertEqual(3, DaemonCLI.guess_type('3', key="some_other_thing"))