For me this is more clever, than I actually like. I like things simple and readable... Honestly I'd prefer dumb parser without types and methods to get type with standardized exception. Eg.:
<pre>
config['whatever'] => always return string
config.bool('whatever') => bool or exception
config.get_bool('whatever', True) => bool or default
...
.int(), .get_int(), .float(), .get_float()
</pre>
With additional flag none=False. Than in case of failure it would return None. That way you know what you need and the exceptions can describe the problem easily...

Anyway I just need time to get use to this version.... everything has it's benefits/drawbacks.