Skip to content

Commit a49d6c7

Browse files
authored
Merge pull request ipython#430 from ankostis/fix_emptystr_listopopts
Fix parsing of deprecated list options failing with empty strings
2 parents 3da90a6 + 23f09f8 commit a49d6c7

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

traitlets/config/loader.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -543,7 +543,7 @@ def _exec_config_str(self, lhs, rhs, trait=None):
543543

544544
elif isinstance(rhs, (list, tuple)):
545545
value = None
546-
if len(rhs) == 1:
546+
if len(rhs) == 1 and len(rhs[0]) > 0:
547547
# check for deprecated --Class.trait="['a', 'b', 'c']"
548548
r = rhs[0]
549549
if (

traitlets/config/tests/test_loader.py

+7
Original file line numberDiff line numberDiff line change
@@ -345,6 +345,13 @@ def test_seq_traits(self):
345345
self.assertEqual(config.CSub.d, [1, 'BBB'])
346346
self.assertEqual(config.CSub.e, [1, 'a', 'bcd'])
347347

348+
def test_seq_traits_single_empty_string(self):
349+
cl = self.klass(log=log, classes=(CBase, ))
350+
aliases = {'seqopt': 'CBase.c'}
351+
argv = ['--seqopt', '']
352+
config = cl.load_config(argv, aliases=aliases)
353+
self.assertEqual(config.CBase.c, [''])
354+
348355
def test_dict_traits(self):
349356
cl = self.klass(log=log, classes=(CBase, CSub))
350357
aliases = {'D': 'CBase.adict', 'E': 'CSub.bdict'}

0 commit comments

Comments
 (0)