Mark, I'm sorry but you have to view the proposal as a whole. Discussing it point by point in isolation doesn't make any sense, as with any complex subject. Thanks, Yury On 2015-04-28 2:44 PM, Mark Shannon wrote: > Hi, > > I still think that there are several issues that need addressing with > PEP 492. This time, one issue at a time :) > > "async" > > The "Rationale and Goals" of PEP 492 states that PEP 380 has 3 > shortcomings. > The second of which is: > """It is not possible to natively define a coroutine which has no > yield or yield from statements.""" > This is incorrect, although what is meant by 'natively' is unclear. > > A coroutine without a yield statement can be defined simply and > concisely, thus: > > @coroutine > def f(): > return 1 > > This is only a few character longer than the proposed new syntax, > perfectly explicit and requires no modification the language whatsoever. > A pure-python definition of the "coroutine" decorator is given below. > > So could the "Rationale and Goals" be correctly accordingly, please. > Also, either the "async def" syntax should be dropped, or a new > justification is required. > > Cheers, > Mark. > > > #coroutine.py > > from types import FunctionType, CodeType > > CO_COROUTINE = 0x0080 > CO_GENERATOR = 0x0020 > > def coroutine(f): > 'Converts a function to a generator function' > old_code = f.__code__ > new_code = CodeType( > old_code.co_argcount, > old_code.co_kwonlyargcount, > old_code.co_nlocals, > old_code.co_stacksize, > old_code.co_flags | CO_GENERATOR | CO_COROUTINE, > old_code.co_code, > old_code.co_consts, > old_code.co_names, > old_code.co_varnames, > old_code.co_filename, > old_code.co_name, > old_code.co_firstlineno, > old_code.co_lnotab, > old_code.co_freevars, > old_code.co_cellvars) > return FunctionType(new_code, f.__globals__) > > > P.S. The reverse of this decorator, which unsets the flags, converts a > generator function into a normal function. :? > _______________________________________________ > Python-Dev mailing list > Python-Dev at python.org > https://mail.python.org/mailman/listinfo/python-dev > Unsubscribe: > https://mail.python.org/mailman/options/python-dev/yselivanov.ml%40gmail.com
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4