On Mon, May 1, 2017 at 12:28 AM, Nick Coghlan <[email protected]> wrote:
> On 1 May 2017 at 03:07, Guido van Rossum <[email protected]> wrote: > > There's a PR to the peps proposal here: > > https://github.com/python/peps/pull/242 > > > > The full text of the current proposal is below. The motivation for this > is > > that for complex decorators, even if the type checker can figure out > what's > > going on (by taking the signature of the decorator into account), it's > > sometimes helpful to the human reader of the code to be reminded of the > type > > after applying the decorators (or a stack thereof). Much discussion can > be > > found in the PR. Note that we ended up having `Callable` in the type > because > > there's no rule that says a decorator returns a function type (e.g. > > `property` doesn't). > > So a rigorous typechecker that understood the full decorator stack > would be able to check whether or not the argument to `decorated_type` > was correct, while all typecheckers (and human readers) would be able > to just believe the argument rather than having to run through all the > decorator transformations? > Yes. In fact the intention is that the checker should check the declared type with the inferred and complain if they don't fit. In some cases the inferred type would have `Any` where the declared type would have a specific type and then the declared type would "win" (for uses of the decorated function) -- this is an example of where "erosion" in type inference can be counteracted by explicit declarations. -- --Guido van Rossum (python.org/~guido)
_______________________________________________ Python-ideas mailing list [email protected] https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/
