On Wed, Apr 7, 2021 at 12:21 AM Federico Salerno <salerno...@gmail.com>
wrote:

> I don't have any decent proposal at the moment but I think coming up with
> a way to annotate side-effects of functions (including typeguard-ness)
> could come in handy. If we anticipate needing that, perhaps it would be
> beneficial to come up with that feature before implementing this PEP, lest
> we end up with something that could have benefitted from it but was
> released just before it.
>
> Though personally I like the PEP and have no qualms about having to learn
> that TypeGuard is "a bool with a side-effect"; I don't think it's a problem
> in the first place, there are less obvious, more complicated things in
> Python that I couldn't just intuit at a glance.
>

But it isn't a "side effect". It is a distinct concept that is important to
the type checker.

Note that in TypeScript this also doesn't look like a boolean -- it uses a
unique syntax that has to be learned:

function isCustomer(partner: any): partner is Customer {
    . . .
}

Arguably the TS syntax is more easily intuited without looking it up, but
TS has a certain freedom in its syntactic design that we don't have for
Python: new *syntax* has to be added to the Python parser and can't be
backported, whereas new *types* (like `TypeGuard[T]`) can easily be
backported via typing_extensions.py.

We have really tried, but we did not come up with anything better than the
current PEP.

FWIW you might be interested in Annotated (PEP 593), which can be used to
indicate various attributes of a type annotation. Before you suggest that
we adopt that instead of PEP 647, we considered that, and the consensus is
that that's not what Annotated is for (it's intended for conveying
information to tools *other* than the type checker, for example schema
checkers etc.).

-- 
--Guido van Rossum (python.org/~guido)
*Pronouns: he/him **(why is my pronoun here?)*
<http://feministing.com/2015/02/03/how-using-they-as-a-singular-pronoun-can-change-the-world/>
_______________________________________________
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/K3YNGWKOMMBV3V3KB6Y3FRXPE7SIQ5R7/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to