Commit Graph

68 Commits

Author SHA1 Message Date
Joongi Kim 6e8dcdaaa4
bpo-41229: Update docs for explicit aclose()-required cases and add contextlib.aclosing() method (GH-21545)
This is a PR to:

 * Add `contextlib.aclosing` which ia analogous to `contextlib.closing` but for async-generators with an explicit test case for [bpo-41229]()
 * Update the docs to describe when we need explicit `aclose()` invocation.

which are motivated by the following issues, articles, and examples:

 * [bpo-41229]()
 * https://github.com/njsmith/async_generator
 * https://vorpus.org/blog/some-thoughts-on-asynchronous-api-design-in-a-post-asyncawait-world/#cleanup-in-generators-and-async-generators
 * https://www.python.org/dev/peps/pep-0533/
 * https://github.com/achimnol/aiotools/blob/ef7bf0cea7af/src/aiotools/context.py#L152

Particuarly regarding [PEP-533](https://www.python.org/dev/peps/pep-0533/), its acceptance (`__aiterclose__()`) would make this little addition of `contextlib.aclosing()` unnecessary for most use cases, but until then this could serve as a good counterpart and analogy to `contextlib.closing()`. The same applies for `contextlib.closing` with `__iterclose__()`.
Also, still there are other use cases, e.g., when working with non-generator objects with `aclose()` methods.
2020-11-02 00:02:48 -08:00
Serhiy Storchaka 142566c028
[3.9] bpo-37116: Use PEP 570 syntax for positional-only parameters. (GH-12620)
Turn deprecation warnings added in 3.8 into TypeError.
2019-06-05 18:22:31 +03:00
Serhiy Storchaka 2085bd0877
bpo-37116: Use PEP 570 syntax for positional-only parameters. (GH-13700) 2019-06-01 11:00:15 +03:00
Serhiy Storchaka 2b57c43f21
bpo-35506: Remove redundant and incorrect links from keywords. (GH-11174) 2018-12-19 08:09:46 +02:00
Nathaniel J. Smith a3c88ef12c Clarify that AsyncExitStack works with coroutine functions (GH-9405)
The docs were ambiguous about whether you pass in a coroutine function
or a coroutine object, e.g. is it:

  aestack.push_async_exit(some_async_func)

or

  aestack.push_async_exit(some_async_func())

(It's the first one.)
2018-09-18 14:27:59 -07:00
Alexander Vasin 416cbce22d Fixed typo with asynccontextmanager code example (GH-8845)
`yield conn`, instead of just `yield`.
2018-08-24 19:38:11 -07:00
Matthias Bussonnier bde782bb59 bpo-33468: Add try-finally contextlib.contextmanager example (GH-7816) 2018-07-24 00:10:56 +03:00
Daniel Porteous c287545d62 bpo-34067: Include a more easily understood example for nullcontext (GH-8158)
Include a more easily understood example for nullcontext
2018-07-09 23:49:29 +10:00
Ilya Kulakov 1aa094f740 bpo-29302: Implement contextlib.AsyncExitStack. (#4790) 2018-01-25 15:51:18 -05:00
Jelle Zijlstra 176baa326b bpo-30241: implement contextlib.AbstractAsyncContextManager (#1412) 2017-12-13 20:19:17 -05:00
Jesse-Bakker 0784a2e5b1 bpo-10049: Add a "no-op" (null) context manager to contextlib (GH-4464)
Adds a simpler and faster alternative to ExitStack for handling
single optional context managers without having to change the
lexical structure of your code.
2017-11-23 10:23:28 +10:00
Jelle Zijlstra 2e624690bd bpo-29679: Implement @contextlib.asynccontextmanager (#360) 2017-04-30 18:25:58 -07:00
Vinay Sajip dd917f84e3 Closes #27904: Improved logging statements to defer formatting until needed. 2016-08-31 08:22:29 +01:00
Brett Cannon 516f5461b0 Add a missing :term:. 2016-06-09 15:55:52 -07:00
Serhiy Storchaka c499f30286 Issue #23921: Standardized documentation whitespace formatting.
Original patch by James Edwards.
2016-05-10 12:01:56 +03:00
Serhiy Storchaka dba903993a Issue #23921: Standardized documentation whitespace formatting.
Original patch by James Edwards.
2016-05-10 12:01:23 +03:00
Brett Cannon 9e080e0e74 Issue #25609: Introduce contextlib.AbstractContextManager and
typing.ContextManager.
2016-04-08 12:15:27 -07:00
Serhiy Storchaka e4ba872543 Remove redundant leading zeroes in PEP references. 2016-03-31 15:30:54 +03:00
Serhiy Storchaka a84f6c3dd3 Issue #25523: Merge a-to-an corrections from 3.4. 2015-11-02 14:39:05 +02:00
Serhiy Storchaka d65c9496da Issue #25523: Further a-to-an corrections. 2015-11-02 14:10:23 +02:00
Martin Panter 84835ab1cb Issue #25161: Merge full stops from 3.4 into 3.5 2015-10-10 10:44:25 +00:00
Martin Panter d21e0b52f1 Issue #25161: Add full stops in documentation; patch by Takase Arihiro 2015-10-10 10:36:22 +00:00
Berker Peksag bb44fe0a0b Issue #22389: Add contextlib.redirect_stderr(). 2014-11-28 23:28:06 +02:00
Nick Coghlan 36d8ef9cc7 Issue #21061: correctly note redirect_stdout is reentrant 2014-10-12 10:25:00 +10:00
Terry Jan Reedy f9bd920cfa Issue 22603: add missing 'self'. Patch by Francisco Fernández Castaño. 2014-10-10 16:00:18 -04:00
Raymond Hettinger e8e2df3daa Issue 21558: Fix a typo in the contextlib docs 2014-05-25 18:06:04 -07:00
Nick Coghlan 8e113b418d Close #19403: make contextlib.redirect_stdout reentrant 2013-11-03 17:00:51 +10:00
Nick Coghlan 0acceb7697 What's New updates prior to alpha 2013-10-20 13:22:21 +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
Georg Brandl a7c17e552d Fix spacing of toplevel items. 2013-10-13 22:25:10 +02:00
Nick Coghlan b4534ae704 Docs tweaks for contextlib additions 2013-10-13 23:23:08 +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
Barry Warsaw 8c01ffa6ed Merge 3.3 2013-05-10 11:36:23 -04:00
Barry Warsaw d8f870d0fa I was confused before. It's correct to not call .close() inside the with
statement, but add a comment that clarifies the purpose of the code.
2013-05-10 11:35:38 -04:00
Barry Warsaw 24aa15959b Merge 3.3 2013-04-19 11:32:54 -04:00
Barry Warsaw 0aa685a33c Minor typo in example. 2013-04-19 11:32:25 -04:00
Ned Deily 05bdd853ec Issue #17586: fix typo in contextlib.rst 2013-03-31 17:06:15 -07:00
Ezio Melotti a41fb4be5b #17351: merge with 3.3. 2013-03-11 09:43:25 +02:00
Ezio Melotti c9cfcf1e6c #17351: merge with 3.2. 2013-03-11 09:42:40 +02:00
Raymond Hettinger e318a883fe Issue #15806: Add contextlib.ignored(). 2013-03-10 22:26:51 -07:00
Andrew Svetlov 5b89840d9c Issue #16714: use 'raise' exceptions, don't 'throw'.
Patch by Serhiy Storchaka.
2012-12-18 21:26:36 +02:00
Nick Coghlan b7a455f326 Typo fix 2012-05-31 22:34:59 +10:00
Nick Coghlan 2722827071 Additional ExitStack examples, and a few other cleanups for the ExitStack docs 2012-05-31 22:17:08 +10:00
Nick Coghlan a497b44238 Fix the versionadded tags for a couple of my recent changes 2012-05-22 23:02:00 +10:00
Nick Coghlan 3267a30de1 Close #13585: add contextlib.ExitStack to replace the ill-fated contextlib.nested API 2012-05-21 22:54:43 +10:00
Nick Coghlan 0ded3e307b Issue #11647: allow contextmanager objects to be used as decorators as described in the docs. Initial patch by Ysj Ray. 2011-05-05 23:49:25 +10:00
Raymond Hettinger 4f707fd316 Separate source link from main text. 2011-01-10 19:54:11 +00:00
Raymond Hettinger 1048094037 Move source links to consistent location and remove wordy, big yellow boxes. 2011-01-10 03:26:08 +00:00