On Mon, Dec 20, 2021 at 3:44 AM Mark Shannon <m...@hotpy.org> wrote: > Hi, > > Why not make Callable usable as a function decorator? > > > > The motivating example in the PEP is this: > > > def flat_map( > l: list[int], > func: Callable[[int], list[int]] > ) -> list[int]: > .... > > > Since, as the PEP claims, `Callable[[int], list[int]]` is hard to read, > then give it a name and use regular function definition syntax. > > > @Callable > def IntToIntFunc(a:int)->int: > pass > > > def flat_map( > l: list[int], > func: IntToIntFunc > ) -> list[int]: > .... > > > To me, this seems much clearer than the proposed syntax and is more > general. > > > It is a little longer, but unless you are playing code golf, that > shouldn't matter. >
It's an interesting idea! Both `@overload` and `@final` show there is precedence for having decorators have special meanings to static type checkers: https://docs.python.org/3/library/typing.html#functions-and-decorators. > > Cheers, > Mark. > > > > On 16/12/2021 5:57 pm, Steven Troxler wrote: > > Hello all, > > > > Thanks everyone for comments on our earlier thread [1] about callable > type syntax. We now have a draft PEP [2] proposing an arrow-based syntax > for callable types, for example: > > > > ``` > > (int, str) -> bool # equivalent to Callable[[int, str], bool] > > ``` > > > > In support of the PEP we also have: > > - a reference implementation of the parser [3] to ensure the grammar is > correct (tests [5], [6], [7]) > > - a detailed specification of planned runtime behavior [4], which is not > yet in the reference implementation > > > > We'd like to get your feedback about the PEP in general, and especially > details and edge cases we need to consider regarding runtime behavior. > > > > Cheers, > > Steven Troxler > > > > --------- > > [1] Earlier python-dev thread > https://mail.python.org/archives/list/python-dev@python.org/thread/VBHJOS3LOXGVU6I4FABM6DKHH65GGCUB/ > > [2] PEP 677: https://www.python.org/dev/peps/pep-0677/ > > [3] Reference implementation of Parser: > https://github.com/stroxler/cpython/tree/callable-type-syntax--shorthand > > [4] Details on the runtime behavior: > https://docs.google.com/document/d/15nmTDA_39Lo-EULQQwdwYx_Q1IYX4dD5WPnHbFG71Lk/edit > > > > [5] Ast tests for parser changes: > > > https://github.com/stroxler/cpython/blob/20eb59fdca0d6d8dbe4efa3b04038c7c22024654/Lib/test/test_ast.py#L359-L392 > > [6] Easy-read tests of examples from the PEP: > https://github.com/stroxler/cpython/blob/callable-type-syntax--shorthand/Lib/test/test_callable_type_examples_for_pep.py > > [7] Test sanity checking hundreds of examples pulled from typeshed: > > > https://github.com/stroxler/cpython/blob/callable-type-syntax--shorthand/Lib/test/test_callable_type_examples_for_pep.py > > _______________________________________________ > > Python-Dev mailing list -- python-dev@python.org > > To unsubscribe send an email to python-dev-le...@python.org > > https://mail.python.org/mailman3/lists/python-dev.python.org/ > > Message archived at > https://mail.python.org/archives/list/python-dev@python.org/message/OGACYN2X7RX2GHAUP2AKRPT6DP432VCN/ > > Code of Conduct: http://python.org/psf/codeofconduct/ > > > _______________________________________________ > Python-Dev mailing list -- python-dev@python.org > To unsubscribe send an email to python-dev-le...@python.org > https://mail.python.org/mailman3/lists/python-dev.python.org/ > Message archived at > https://mail.python.org/archives/list/python-dev@python.org/message/2BKD5YBU7WJMUY3TSX34HX5IICT5UFRQ/ > Code of Conduct: http://python.org/psf/codeofconduct/ >
_______________________________________________ Python-Dev mailing list -- python-dev@python.org To unsubscribe send an email to python-dev-le...@python.org https://mail.python.org/mailman3/lists/python-dev.python.org/ Message archived at https://mail.python.org/archives/list/python-dev@python.org/message/OCLGF6IXGHVBCCA24ZFJMUEFJ2DJVAQX/ Code of Conduct: http://python.org/psf/codeofconduct/