@@ -544,21 +544,24 @@ The following code::
544544is semantically equivalent to::
545545
546546 manager = (EXPRESSION)
547- enter = type( manager) .__enter__
548- exit = type( manager) .__exit__
549- value = enter(manager )
547+ enter = manager.__enter__
548+ exit = manager.__exit__
549+ value = enter()
550550 hit_except = False
551551
552552 try:
553553 TARGET = value
554554 SUITE
555555 except:
556556 hit_except = True
557- if not exit(manager, *sys.exc_info()):
557+ if not exit(*sys.exc_info()):
558558 raise
559559 finally:
560560 if not hit_except:
561- exit(manager, None, None, None)
561+ exit(None, None, None)
562+
563+ except that implicit :ref: `special method lookup <special-lookup >` is used
564+ for :meth: `~object.__enter__ ` and :meth: `~object.__exit__ `.
562565
563566With more than one item, the context managers are processed as if multiple
564567:keyword: `with ` statements were nested::
@@ -1679,21 +1682,21 @@ The following code::
16791682
16801683Is semantically equivalent to::
16811684
1682- iter = (ITER)
1683- iter = type(iter).__aiter__(iter)
1685+ iter = (ITER).__aiter__()
16841686 running = True
16851687
16861688 while running:
16871689 try:
1688- TARGET = await type( iter) .__anext__(iter )
1690+ TARGET = await iter.__anext__()
16891691 except StopAsyncIteration:
16901692 running = False
16911693 else:
16921694 SUITE
16931695 else:
16941696 SUITE2
16951697
1696- See also :meth: `~object.__aiter__ ` and :meth: `~object.__anext__ ` for details.
1698+ except that implicit :ref: `special method lookup <special-lookup >` is used
1699+ for :meth: `~object.__aiter__ ` and :meth: `~object.__anext__ `.
16971700
16981701It is a :exc: `SyntaxError ` to use an ``async for `` statement outside the
16991702body of a coroutine function.
@@ -1719,23 +1722,24 @@ The following code::
17191722is semantically equivalent to::
17201723
17211724 manager = (EXPRESSION)
1722- aenter = type( manager) .__aenter__
1723- aexit = type( manager) .__aexit__
1724- value = await aenter(manager )
1725+ aenter = manager.__aenter__
1726+ aexit = manager.__aexit__
1727+ value = await aenter()
17251728 hit_except = False
17261729
17271730 try:
17281731 TARGET = value
17291732 SUITE
17301733 except:
17311734 hit_except = True
1732- if not await aexit(manager, *sys.exc_info()):
1735+ if not await aexit(*sys.exc_info()):
17331736 raise
17341737 finally:
17351738 if not hit_except:
1736- await aexit(manager, None, None, None)
1739+ await aexit(None, None, None)
17371740
1738- See also :meth: `~object.__aenter__ ` and :meth: `~object.__aexit__ ` for details.
1741+ except that implicit :ref: `special method lookup <special-lookup >` is used
1742+ for :meth: `~object.__aenter__ ` and :meth: `~object.__aexit__ `.
17391743
17401744It is a :exc: `SyntaxError ` to use an ``async with `` statement outside the
17411745body of a coroutine function.
0 commit comments