Commit aa95cf4b authored by Nick Coghlan's avatar Nick Coghlan

Docs tweaks for contextlib additions

parent 5fa87fcb
...@@ -99,22 +99,27 @@ Functions and classes provided: ...@@ -99,22 +99,27 @@ Functions and classes provided:
Return a context manager that ignores the specified exceptions if they Return a context manager that ignores the specified exceptions if they
occur in the body of a with-statement. occur in the body of a with-statement.
As with any other mechanism that completely suppresses exceptions, it
should only be used to cover very specific errors where silently
ignoring the exception is known to be the right thing to do.
For example:: For example::
from contextlib import ignore from contextlib import ignore
with ignore(OSError): with ignore(FileNotFoundError):
os.remove('somefile.tmp') os.remove('somefile.tmp')
This code is equivalent to:: This code is equivalent to::
try: try:
os.remove('somefile.tmp') os.remove('somefile.tmp')
except OSError: except FileNotFoundError:
pass pass
.. versionadded:: 3.4 .. versionadded:: 3.4
.. function:: redirect_stdout(new_target) .. function:: redirect_stdout(new_target)
Context manager for temporarily redirecting :data:`sys.stdout` to Context manager for temporarily redirecting :data:`sys.stdout` to
...@@ -144,6 +149,11 @@ Functions and classes provided: ...@@ -144,6 +149,11 @@ Functions and classes provided:
with redirect_stdout(sys.stderr): with redirect_stdout(sys.stderr):
help(pow) help(pow)
Note that the global side effect on :data:`sys.stdout` means that this
context manager is not suitable for use in library code and most threaded
applications. It also has no effect on the output of subprocesses.
However, it is still a useful approach for many utility scripts.
.. versionadded:: 3.4 .. versionadded:: 3.4
.. class:: ContextDecorator() .. class:: ContextDecorator()
......
...@@ -205,6 +205,19 @@ been expanded so that they match the FCC NTSC versions. The change in ...@@ -205,6 +205,19 @@ been expanded so that they match the FCC NTSC versions. The change in
results should be less than 1% and may better match results found elsewhere. results should be less than 1% and may better match results found elsewhere.
contextlib
----------
The new :class:`contextlib.ignore` context manager helps to clarify the
intent of code that deliberately ignores failures from a particular
operation.
The new :class:`contextlib.redirect_stdio` context manager makes it easier
for utility scripts to handle inflexible APIs that don't provide any
options to retrieve their output as a string or direct it to somewhere
other than :data:`sys.stdout`.
dis dis
--- ---
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment