What should happen if the context manager attempts to suppress a raised 
exception? In cases where you applied the context manager to an entire line, 
e.g.

data = fail() with contextlib.suppress(Exception)

Then it would make sense to treat it like

with contextlib.suppress(Exception):
    data = fail()

Where `data` remains unassigned after the block executes assuming `fail` raises 
an exception. However, with the initial proposal you run into trouble when you 
apply this to sub-expressions that are expected to themselves have a value. For 
example, what should happen here?

more_work(fail() with contextlib.suppress(Exception))

We have no value to pass as an argument to `more_work` so there's no way we can 
call it. Yet it would be odd to not call it if there's no exception being 
raised since it exists outside of any context manager itself.
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/Y7WZDD2AFGUX3ND2OX3EUN2VUK27O4E5/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to