Skip to content

Commit db50eed

Browse files
committed
VarParsing: skip empty list for int/float/bool list default; add opts.parseArguments to unit test
1 parent 5089cc1 commit db50eed

File tree

2 files changed

+21
-17
lines changed

2 files changed

+21
-17
lines changed

FWCore/ParameterSet/python/VarParsing.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -414,7 +414,7 @@ def register (self, name,
414414
# if it's a list, we only want to use the default if it
415415
# does exist.
416416
if (mytype in [VarParsing.varType.bool, VarParsing.varType.int, VarParsing.varType.float] and \
417-
default != "") or len (default): # check type to prevent TypeError for bool/int/float defaults
417+
default not in ["",[]]) or len (default): # check type to prevent TypeError for bool/int/float defaults
418418
self._lists[name].append (default) # known bug: default can be list
419419
#######################################
420420
## Process any additional directives ##

FWCore/ParameterSet/test/test_varparsing_list.py

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,29 @@
22
from FWCore.ParameterSet.VarParsing import VarParsing
33

44
def parse(argv):
5-
sys.argv = ['test.py','maxEvents=100']+argv # emulate user arguments
5+
sys.argv = ['test_varparsing_list.py','maxEvents=100']+argv # emulate user arguments
66
opts = VarParsing('standard')
7-
def add(n, d, m, t):
8-
opts.register(n, d, m, t)
9-
add('myInts0', '', VarParsing.multiplicity.list, VarParsing.varType.int)
10-
add('myInts1', 0, VarParsing.multiplicity.list, VarParsing.varType.int)
11-
add('myInts2', [0], VarParsing.multiplicity.list, VarParsing.varType.int)
12-
add('myFloats0', '', VarParsing.multiplicity.list, VarParsing.varType.float)
13-
add('myFloats1', 0, VarParsing.multiplicity.list, VarParsing.varType.float)
14-
add('myFloats2', [0], VarParsing.multiplicity.list, VarParsing.varType.float)
15-
add('myBools0', '', VarParsing.multiplicity.list, VarParsing.varType.bool)
16-
add('myBools1', True, VarParsing.multiplicity.list, VarParsing.varType.bool)
17-
add('myBools2', [True], VarParsing.multiplicity.list, VarParsing.varType.bool)
18-
add('myStrs0', '', VarParsing.multiplicity.list, VarParsing.varType.string)
19-
add('myStrs1', 'foo', VarParsing.multiplicity.list, VarParsing.varType.string)
20-
add('myStrs2', ['foo'], VarParsing.multiplicity.list, VarParsing.varType.string)
7+
opts.register('myInts0', '', VarParsing.multiplicity.list, VarParsing.varType.int)
8+
opts.register('myInts1', [], VarParsing.multiplicity.list, VarParsing.varType.int)
9+
opts.register('myInts2', 0, VarParsing.multiplicity.list, VarParsing.varType.int)
10+
opts.register('myInts3', [0], VarParsing.multiplicity.list, VarParsing.varType.int)
11+
opts.register('myFloats0', '', VarParsing.multiplicity.list, VarParsing.varType.float)
12+
opts.register('myFloats1', [], VarParsing.multiplicity.list, VarParsing.varType.float)
13+
opts.register('myFloats2', 0, VarParsing.multiplicity.list, VarParsing.varType.float)
14+
opts.register('myFloats3', [0], VarParsing.multiplicity.list, VarParsing.varType.float)
15+
opts.register('myBools0', '', VarParsing.multiplicity.list, VarParsing.varType.bool)
16+
opts.register('myBools1', [], VarParsing.multiplicity.list, VarParsing.varType.bool)
17+
opts.register('myBools2', True, VarParsing.multiplicity.list, VarParsing.varType.bool)
18+
opts.register('myBools3', [True], VarParsing.multiplicity.list, VarParsing.varType.bool)
19+
opts.register('myStrs0', '', VarParsing.multiplicity.list, VarParsing.varType.string)
20+
opts.register('myStrs1', [], VarParsing.multiplicity.list, VarParsing.varType.string)
21+
opts.register('myStrs2', 'foo', VarParsing.multiplicity.list, VarParsing.varType.string)
22+
opts.register('myStrs3', ['foo'], VarParsing.multiplicity.list, VarParsing.varType.string)
23+
opts.parseArguments()
24+
#print(f">>> Parsed: {sys.argv} -> lists={opts._lists}")
2125

2226
# parse without user arguments
2327
parse([ ])
2428

2529
# parse with user arguments
26-
parse(['myInts1=0,1','myBools1=True,False','myStrs1=foo,bar','myStrs2=foo,bar'])
30+
parse(['myInts1=0,1,-1','myFloats1=3.14,0,0.0,-1.0','myBools1=True,False','myStrs1=foo,bar'])

0 commit comments

Comments
 (0)