|
From: Mark L. <mw...@po...> - 2006-02-23 09:27:40
|
According to the docs: http://www.voidspace.org.uk/python/configobj.html#default-values "You can set a default value in your check. If the value is missing from the config file then this value will be used instead." I think I'm making an incorrect assumption about retrieving default values from the dict, as illustrated here: File test.spec containing only: key1 = integer(0, 30, default=15) key2 = integer(default=15) File test.conf containing only: key1 = 5 >>> c = ConfigObj( 'test.conf', configspec='test.spec' ) >>> c {'key1': '5'} >>> c.configspec {'key2': 'integer(default=15)', 'key1': 'integer(0, 30, default=15)'} >>> c['key1'] '5' >>> c['key2'] Traceback (most recent call last): File "<stdin>", line 1, in ? File "C:\Python24\Lib\site-packages\configobj.py", line 337, in __getitem__ val = dict.__getitem__(self, key) KeyError: 'key2' Shouldn't this return the default value, in this case 15? Is there a different method I should be using for retrieving values? I can't find anything in the documentation or via introspection. I specifically want the defaults specified in an external file and not in the code using something like c.get('key2',15). I'm using configobj version 4.2.0beta2 Cheers, -Mark |
|
From: Fuzzyman <fuz...@vo...> - 2006-02-23 09:41:06
|
Mark Leonard wrote: > According to the docs: > http://www.voidspace.org.uk/python/configobj.html#default-values > "You can set a default value in your check. If the value is missing > from the config file then this value will be used instead." > > I think I'm making an incorrect assumption about retrieving default > values from the dict, as illustrated here: > > File test.spec containing only: > key1 = integer(0, 30, default=15) > key2 = integer(default=15) > > File test.conf containing only: > key1 = 5 > > >>> c = ConfigObj( 'test.conf', configspec='test.spec' ) > >>> c > {'key1': '5'} > >>> c.configspec > {'key2': 'integer(default=15)', 'key1': 'integer(0, 30, default=15)'} > >>> c['key1'] > '5' > >>> c['key2'] > Traceback (most recent call last): > File "<stdin>", line 1, in ? > File "C:\Python24\Lib\site-packages\configobj.py", line 337, in > __getitem__ > val = dict.__getitem__(self, key) > KeyError: 'key2' > > Shouldn't this return the default value, in this case 15? Is there a > different method I should be using for retrieving values? I can't find > anything in the documentation or via introspection. I specifically > want the defaults specified in an external file and not in the code > using something like c.get('key2',15). > Your logic is correct - but missing one step. The default values are filled in by the validation process (as is the type conversion to integers). >>> from configobj import ConfigObj >>> from validate import Validator >>> c = ConfigObj( 'test.conf', configspec='test.spec' ) >>> c {'key1': '5'} >>> c.configspec {'key2': 'integer(default=15)', 'key1': 'integer(0, 30, default=15)'} >>> v = Validator() >>> test = c.validate(v) >>> if test != True: ... print 'Something went wrong ;-)' >>> c['key2'] 15 Untested, but should work. ;-) Let me know if it doesn't. > I'm using configobj version 4.2.0beta2 > I changed a lot in the implementation of unicode from 4.2.0 beta 2 to the released version, as well as other tinkerings. (See the homepage http://www.voidspace.org.uk/python/configobj.html for a download link). I would highly recommend using the latest version. All the best, Fuzzyman http://www.voidspace.org.uk/python/index.shtml > Cheers, > -Mark > > > ------------------------------------------------------- > This SF.Net email is sponsored by xPML, a groundbreaking scripting > language > that extends applications into web and mobile media. Attend the live > webcast > and join the prime developer group breaking into this new coding > territory! > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642 > _______________________________________________ > Configobj-develop mailing list > Con...@li... > https://lists.sourceforge.net/lists/listinfo/configobj-develop > |
|
From: Mark L. <mw...@po...> - 2006-02-23 10:04:16
|
Fuzzyman wrote: > Untested, but should work. ;-) It does, thanks for the help! > I changed a lot in the implementation of unicode from 4.2.0 beta 2 to > the released version, as well as other tinkerings. (See the homepage > http://www.voidspace.org.uk/python/configobj.html for a download link). > I would highly recommend using the latest version. It seems I am indeed using the latest version, obtained from this link: http://www.voidspace.org.uk/cgi-bin/voidspace/downman.py?file=configobj-4.2.0.zip However, in configobj.py, line 106: __version__ = '4.2.0beta2' Cheers, -Mark |
|
From: Fuzzyman <fuz...@vo...> - 2006-02-23 10:13:56
|
Mark Leonard wrote: > Fuzzyman wrote: >> Untested, but should work. ;-) > It does, thanks for the help! > Good. >> I changed a lot in the implementation of unicode from 4.2.0 beta 2 to >> the released version, as well as other tinkerings. (See the homepage >> http://www.voidspace.org.uk/python/configobj.html for a download >> link). I would highly recommend using the latest version. > > It seems I am indeed using the latest version, obtained from this link: > http://www.voidspace.org.uk/cgi-bin/voidspace/downman.py?file=configobj-4.2.0.zip > > > However, in configobj.py, line 106: > __version__ = '4.2.0beta2' > Ah.... oops. :-) I'll correct that tonight. Thanks Fuzzyman http://www.voidspace.org.uk/python/index.shtml > Cheers, > -Mark > > > ------------------------------------------------------- > This SF.Net email is sponsored by xPML, a groundbreaking scripting > language > that extends applications into web and mobile media. Attend the live > webcast > and join the prime developer group breaking into this new coding > territory! > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642 > _______________________________________________ > Configobj-develop mailing list > Con...@li... > https://lists.sourceforge.net/lists/listinfo/configobj-develop > |