Skip to content

Commit a2a8f2b

Browse files
committed
refactored matplotlibrc-file parser
svn path=/trunk/matplotlib/; revision=3424
1 parent 8dbe8cb commit a2a8f2b

File tree

1 file changed

+16
-18
lines changed

1 file changed

+16
-18
lines changed

lib/matplotlib/__init__.py

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1000,9 +1000,6 @@ def validate_key(key, val, line, cnt, fname, fail_on_error):
10001000

10011001
default, converter = defaultParams[key]
10021002

1003-
ind = val.find('#')
1004-
if ind>=0: val = val[:ind] # ignore trailing comments
1005-
val = val.strip()
10061003
if fail_on_error:
10071004
return converter(val) # try to convert to proper type or raise
10081005
else:
@@ -1033,36 +1030,37 @@ def rc_params(fail_on_error=False):
10331030
warnings.warn(message)
10341031
return ret
10351032

1036-
lines = [line.strip() for line in file(fname)]
10371033
cnt = 0
10381034
rc_temp = {}
1039-
for line in lines:
1035+
for line in file(fname):
10401036
cnt += 1
1041-
if not len(line): continue
1042-
if line.startswith('#'): continue
1043-
tup = line.split(':',1)
1037+
strippedline = line.split('#',1)[0].strip()
1038+
if not strippedline: continue
1039+
tup = strippedline.split(':',1)
10441040
if len(tup) !=2:
10451041
warnings.warn('Illegal line #%d\n\t%s\n\tin file "%s"' % (cnt, line, fname))
10461042
continue
10471043
key, val = tup
10481044
key = key.strip()
1045+
val = val.strip()
1046+
if key in rc_temp:
1047+
warnings.warn('Duplicate key in file "%s", line #%d'%(fname,cnt))
10491048
rc_temp[key] = (val, line, cnt)
10501049

1050+
ret = dict([ (key,default) for key, (default, converter) in defaultParams.iteritems() ])
1051+
10511052
for key in ('verbose.level', 'verbose.fileo'):
1052-
try: val, line, cnt = rc_temp.pop(key)
1053-
except KeyError: continue
1054-
else:
1053+
if key in rc_temp:
1054+
val, line, cnt = rc_temp.pop(key)
10551055
cval = validate_key(key, val, line, cnt, fname, fail_on_error)
1056-
if cval is not None: defaultParams[key][0] = cval
1057-
while len(rc_temp) > 0:
1058-
key, (val, line, cnt) = rc_temp.popitem()
1056+
if cval is not None:
1057+
ret[key] = cval
10591058

1059+
for key, (val, line, cnt) in rc_temp.iteritems():
10601060
cval = validate_key(key, val, line, cnt, fname, fail_on_error)
1061-
if cval is not None: defaultParams[key][0] = cval
1062-
else: continue
1061+
if cval is not None:
1062+
ret[key] = cval
10631063

1064-
# strip the converter funcs and return
1065-
ret = dict([ (key, tup[0]) for key, tup in defaultParams.items()])
10661064
verbose.report('loaded rc file %s'%fname)
10671065

10681066
return ret

0 commit comments

Comments
 (0)