52 Commits

Author SHA1 Message Date
Mariatta
4d015a40a7 [3.5] bpo-29692: contextlib.contextmanager may incorrectly unchain RuntimeError (GH-949) (#1107)
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.
(cherry picked from commit 00c75e9a45)
2017-04-13 03:14:53 -07:00
Serhiy Storchaka
ce1a9f309f Added more tests for issue #27122. 2016-06-20 05:29:54 +03: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
Martin Panter
05da525e55 Issue #25322: Merge contextlib.suppress test fix from 3.4 into 3.5 2015-10-10 11:05:47 +00:00
Martin Panter
7c6420a552 Issue #25322: Fix test for nested contextlib.suppress 2015-10-10 11:04:44 +00: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
683333955a Issue 24237: Raise PendingDeprecationWarning per PEP 479
Raise PendingDeprecationWarning when generator raises StopIteration
and no __future__ import is used.  Fix offenders in the stdlib
and tests.

See also issue 22906.
Thanks to Nick Coghlan and Berker Peksag for reviews.
2015-05-22 11:16:47 -04: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
561eb5cbe4 Issue #19330: Handle the no-docstrings case in tests 2013-10-26 22:20:43 +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
0ddaed3456 Close #19396: make test_contextlib tolerate -S 2013-10-26 16:37:47 +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
Brett Cannon
3e9a9ae09d Update various test modules to use unittest.main() for test discovery
instead of manually listing tests for test.support.run_unittest().
2013-06-12 21:25:59 -04:00