[Python-Dev] cpython: Rename contextlib.ignored() to contextlib.ignore().

Alexander Belopolsky alexander.belopolsky at gmail.com
Sun Oct 13 19:58:56 CEST 2013


On Sun, Oct 13, 2013 at 1:01 PM, R. David Murray <rdmurray at bitdance.com> wrote:
> But the name hurts my brain

I did not think I would weigh in on this because Ramond's and Nick's
position seemed quite rational and the issue minor, but surprisingly
this thread does not seem to end.

The feature (*and* its name) is a fine solution for the problem that
it solves and is an improvement over status quo.

I find

with ignore(OSError):
     os.unlink(path)

much easier to read than

try:
   os.unlink(path)
except OSError:
   pass

Yes, this feature can be abused with multiple statements in the with
block, but so can try/except.   People who write code using contextlib
are expected to know that it is not a good idea to keep resources
longer than necessary and multiple unrelated statements within the
with block will raise a mental red flag.   It is also easy for
lint-like tools to warn about abuse of ignore().

I also believe that any of the proposed alternative names will make
canonical usage (such as in the unlink example above) harder to
understand.  Let's not try to improve readability of bad code at the
expense of good code.


More information about the Python-Dev mailing list