[issue34242] configparser: SectionProxy.get is silent on missing options

2018-08-08 Thread Łukasz Langa

Łukasz Langa  added the comment:

> I still find the remark about the parser-level `get` being maintained for 
> backwards compatibility strange (and it is eight years old), could this be 
> improved?

How? Parser-level `.get()` predates mapping protocol access and has an 
incompatible API. Thus, we need to leave it as is, otherwise we'd break 
existing code.

Use mapping protocol everywhere in new code and you won't see those issues 
anymore.

--
resolution:  -> wont fix
stage: patch review -> resolved
status: open -> closed

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue34242] configparser: SectionProxy.get is silent on missing options

2018-08-08 Thread Łukasz Langa

Łukasz Langa  added the comment:

> Maybe a ConfigParser object could have an option to raise errors, because 
> they are useful for discovering errors in config files.

For this option, use mapping access instead of `.get()`:

>>> cp['section']['key']
Traceback (most recent call last):
...
KeyError: 'key'

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue34242] configparser: SectionProxy.get is silent on missing options

2018-07-27 Thread Stig Johan Berggren


Stig Johan Berggren  added the comment:

That's fair, I didn't consider consistency with dicts' `get`. Maybe a 
ConfigParser object could have an option to raise errors, because they are 
useful for discovering errors in config files.

I still find the remark about the parser-level `get` being maintained for 
backwards compatibility strange (and it is eight years old), could this be 
improved?

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue34242] configparser: SectionProxy.get is silent on missing options

2018-07-27 Thread INADA Naoki


Change by INADA Naoki :


--
nosy: +lukasz.langa

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue34242] configparser: SectionProxy.get is silent on missing options

2018-07-27 Thread INADA Naoki


INADA Naoki  added the comment:

I don't think it's worth enough to break backward compatibility.

Additionally, "section.get(key) returns None if key is not exist" is consistent 
with dict's behavior.

On the other hand, "parser.get(section, key)" has different signature from 
dict's get method.  So inconsistency is not a big problem.

--
nosy: +inada.naoki

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue34242] configparser: SectionProxy.get is silent on missing options

2018-07-26 Thread Stig Johan Berggren


Change by Stig Johan Berggren :


--
keywords: +patch
pull_requests: +8009
stage:  -> patch review

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue34242] configparser: SectionProxy.get is silent on missing options

2018-07-26 Thread Stig Johan Berggren


New submission from Stig Johan Berggren :

`get()` on a ConfigParser object behaves differently from `get()` on a section. 
The former raises an exception when the key does not exist and no fallback has 
been explicitly set. The latter returns None, with no option to raise an error 
for missing keys. I think this is confusing, and that both classes should have 
the same behaviour. I prefer raising an error, as it makes it easier to find 
errors such as typos in config files.

In addition, the docs state that the "parser-level `get` method
provides a custom, more complex interface, maintained for backwards
compatibility". The SectionProxy `get` method internally uses the parser-level 
`get`, so it seems unlikely that it is only maintained for backwards 
compatibility.

My proposed change is not backwards compatible, as any code that relies on a 
None being returned when a key does not exist would have to make this explicit 
through the fallback argument in `get`.

Here is the current behaviour in the latest build (3.8.0a0):

>>> import configparser
>>> c = configparser.ConfigParser()
>>> c.add_section('spam')
>>> c['spam'].get('eggs') # Returns None
>>> c['spam']['eggs']
Traceback (most recent call last):
  ...
KeyError: 'eggs'
>>> c.get('spam', 'eggs')
Traceback (most recent call last):
  ...
configparser.NoOptionError: No option 'eggs' in section: 'spam'
>>>

--
components: Library (Lib)
messages: 322448
nosy: Stig Johan Berggren
priority: normal
severity: normal
status: open
title: configparser: SectionProxy.get is silent on missing options
type: behavior

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com