]> git.ipfire.org Git - thirdparty/tornado.git/commitdiff
Add support for parsing lists of str in config files 3193/head
authorJake Stambaugh <jake.stambaugh@gmail.com>
Fri, 7 Oct 2022 22:03:25 +0000 (18:03 -0400)
committerJake Stambaugh <jake.stambaugh@gmail.com>
Fri, 7 Oct 2022 22:03:25 +0000 (18:03 -0400)
tornado/options.py
tornado/test/options_test.py
tornado/test/options_test_types.cfg
tornado/test/options_test_types_str.cfg

index e62f7efe89b843a11ef64281ec16f595fdb1383c..6ec58996484de2466c2eaa2157f6893e18bf8dd6 100644 (file)
@@ -427,7 +427,9 @@ class OptionParser(object):
                             % (option.name, option.type.__name__)
                         )
 
-                if type(config[name]) == str and option.type != str:
+                if type(config[name]) == str and (
+                    option.type != str or option.multiple
+                ):
                     option.parse(config[name])
                 else:
                     option.set(config[name])
index 1fe582898af0187c75f247cec4386a3fefc5d82a..6f4021c683d9067c76d15a8803f9f4d9385edff4 100644 (file)
@@ -204,6 +204,7 @@ class OptionsTest(unittest.TestCase):
         options.define("timedelta", type=datetime.timedelta)
         options.define("email", type=Email)
         options.define("list-of-int", type=int, multiple=True)
+        options.define("list-of-str", type=str, multiple=True)
         return options
 
     def _check_options_values(self, options):
@@ -216,6 +217,7 @@ class OptionsTest(unittest.TestCase):
         self.assertEqual(options.email.value, "tornado@web.com")
         self.assertTrue(isinstance(options.email, Email))
         self.assertEqual(options.list_of_int, [1, 2, 3])
+        self.assertEqual(options.list_of_str, ["a", "b", "c"])
 
     def test_types(self):
         options = self._define_options()
@@ -230,6 +232,7 @@ class OptionsTest(unittest.TestCase):
                 "--timedelta=45s",
                 "--email=tornado@web.com",
                 "--list-of-int=1,2,3",
+                "--list-of-str=a,b,c",
             ]
         )
         self._check_options_values(options)
index e1d53cb9cc4d03365d9e2a816da4c3313baf4f21..9dfd92205e7630fd83db7034c6d2b256e7c50c9f 100644 (file)
@@ -9,3 +9,4 @@ datetime = datetime(2013, 4, 28, 5, 16)
 timedelta = timedelta(0, 45)
 email = Email('tornado@web.com')
 list_of_int = [1, 2, 3]
+list_of_str = ["a", "b", "c"]
index 25dfbc2bf514b32ac4a03800fbac6988511021c8..b07d64289100199b18e7db83e835b08f0ba5355b 100644 (file)
@@ -6,3 +6,4 @@ datetime = '2013-04-28 05:16'
 timedelta = '45s'
 email = 'tornado@web.com'
 list_of_int = '1,2,3'
+list_of_str = 'a,b,c'