Commit Graph

53 Commits

Author SHA1 Message Date
Jelle Zijlstra
57161aac5e bpo-30266: support "= None" pattern in AbstractContextManager (#1448)
contextlib.AbstractContextManager now supports anti-registration
by setting __enter__ = None or __exit__ = None, following the pattern
introduced in bpo-25958.
2017-06-09 08:21:47 -07:00
Jelle Zijlstra
2e624690bd bpo-29679: Implement @contextlib.asynccontextmanager (#360) 2017-04-30 18:25:58 -07:00
svelankar
00c75e9a45 bpo-29692: contextlib.contextmanager may incorrectly unchain RuntimeError (GH-949)
contextlib._GeneratorContextManager.__exit__ includes a special case to deal with
PEP 479 RuntimeErrors created when `StopIteration` is thrown into the context
manager body.

Previously this check was too permissive, and undid one level of chaining on *all*
RuntimeError instances, not just those that wrapped a StopIteration instance.
2017-04-11 19:11:13 +10:00
amosonn
680e20beee Clarify exception handler scope in contextlib
Moved explicit raise from inside try to try...else.
2017-03-01 16:18:27 +10:00
Nathaniel J. Smith
af88e7eda4 bpo-27122: Fix comment to point to correct issue number (#47)
It took me quite a bit to figure out what this was referring to,
since the given issue number is wrong, and the original commit
message I found through git blame lists a different, also wrong
issue number... see https://bugs.python.org/issue27122#msg279449
2017-02-12 14:37:24 +03:00
Gregory P. Smith
881aa38972 Issue #27123: When an exception is raised within the context being
managed by a contextlib.ExitStack() and one of the exit stack
generators catches and raises it in a chain, do not re-raise the
original exception when exiting, let the new chained one through.
This avoids the PEP 479 bug described in issue25782.
2016-06-14 09:24:31 -07:00
Gregory P. Smith
ba2ecd6841 Issue #27123: When an exception is raised within the context being
managed by a contextlib.ExitStack() and one of the exit stack
generators catches and raises it in a chain, do not re-raise the
original exception when exiting, let the new chained one through.
This avoids the PEP 479 bug described in issue25782.
2016-06-14 09:19:20 -07:00
Brett Cannon
8bd092b501 Normalize whitespace 2016-04-08 12:16:16 -07:00
Brett Cannon
9e080e0e74 Issue #25609: Introduce contextlib.AbstractContextManager and
typing.ContextManager.
2016-04-08 12:15:27 -07:00
Serhiy Storchaka
eab7704044 Issue #24336: The contextmanager decorator now works with functions with
keyword arguments called "func" and "self".  Patch by Martin Panter.
2015-06-28 17:08:35 +03:00
Serhiy Storchaka
101ff3541c Issue #24336: The contextmanager decorator now works with functions with
keyword arguments called "func" and "self".  Patch by Martin Panter.
2015-06-28 17:06:07 +03:00
Yury Selivanov
8170e8c0d1 PEP 479: Change StopIteration handling inside generators.
Closes issue #22906.
2015-05-09 11:44:30 -04:00
Berker Peksag
bb44fe0a0b Issue #22389: Add contextlib.redirect_stderr(). 2014-11-28 23:28:06 +02:00
Nick Coghlan
b3c0f4067d Merge removal of issue 20317 debugging code from 3.3 2014-01-24 23:07:16 +10:00
Nick Coghlan
add94c9d82 Issue 20317: Remove debugging code from contextlib
- Alex J Burke noticed a debugging raise in the commit that
  fixed the original bug reported in issue 20317
- this showed that multiple iterations through the affected
  loop wasn't actually being tested
2014-01-24 23:05:45 +10:00
Nick Coghlan
d58831e688 Merge #20317 from 3.3 2014-01-22 23:04:37 +10:00
Nick Coghlan
09761e7c9c Issue #20317: Don't create a reference loop in ExitStack 2014-01-22 22:24:46 +10:00
Nick Coghlan
8e113b418d Close #19403: make contextlib.redirect_stdout reentrant 2013-11-03 17:00:51 +10:00
Nick Coghlan
059def58a5 Close #19330 by using public classes in contextlib
- added test cases to ensure docstrings are reasonable
- also updates various comments in contextlib for accuracy
- identifed #19404 as an issue making it difficult to provide
  good help output on generator based context manager instances
2013-10-26 18:08:15 +10:00
Nick Coghlan
8608d26e81 contextlib doc updates and refactoring
- explain single use, reusable and reentrant in docs
- converted suppress to a reentrant class based impl
- converted redirect_stdout to a reusable impl
- moved both suppress and redirect_stdout behind a functional
  facade
- added reentrancy tests for the updated suppress
- added reusability tests for the updated redirect_stdio
- slightly cleaned up an exception from contextmanager
2013-10-20 00:30:51 +10:00
Nick Coghlan
240f86d7dd Close #19266: contextlib.ignore -> contextlib.suppress
Patch by Zero Piraeus.
2013-10-17 23:40:57 +10:00
Raymond Hettinger
1254b407ac Rename contextlib.ignored() to contextlib.ignore(). 2013-10-10 22:39:39 -07:00
Raymond Hettinger
088cbf2d39 Issue #15805: Add contextlib.redirect_stdout() 2013-10-10 00:46:57 -07:00
Nick Coghlan
e6f4631f08 Merge #19092 from 3.3 2013-10-01 23:28:00 +10:00
Nick Coghlan
1a33b2f35b Close #19092: ExitStack now reraises exceptions from __exit__
Report and patch by Hrvoje Nikšić
2013-10-01 23:24:56 +10:00