<div dir="ltr"><div dir="ltr"><div dir="ltr">I agree with Ivan. This feater is stands in contradiction with second Python Zen principle: "Explicit is better than implicit.". Isn't it?</div></div></div><br><div class="gmail_quote"><div dir="ltr">On Fri, Oct 19, 2018 at 11:41 AM <<a href="mailto:python-ideas-request@python.org">python-ideas-request@python.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Send Python-ideas mailing list submissions to<br>
        <a href="mailto:python-ideas@python.org" target="_blank">python-ideas@python.org</a><br>
<br>
To subscribe or unsubscribe via the World Wide Web, visit<br>
        <a href="https://mail.python.org/mailman/listinfo/python-ideas" rel="noreferrer" target="_blank">https://mail.python.org/mailman/listinfo/python-ideas</a><br>
or, via email, send a message with subject or body 'help' to<br>
        <a href="mailto:python-ideas-request@python.org" target="_blank">python-ideas-request@python.org</a><br>
<br>
You can reach the person managing the list at<br>
        <a href="mailto:python-ideas-owner@python.org" target="_blank">python-ideas-owner@python.org</a><br>
<br>
When replying, please edit your Subject line so it is more specific<br>
than "Re: Contents of Python-ideas digest..."<br>
<br>
<br>
Today's Topics:<br>
<br>
   1. TypeHinting: From variable name to type (Thomas G?ttler)<br>
   2. Re: TypeHinting: From variable name to type (Anders Hovm?ller)<br>
   3. Re: TypeHinting: From variable name to type (Robert Vanden Eynde)<br>
   4. Re: TypeHinting: From variable name to type (Thomas G?ttler)<br>
   5. Re: TypeHinting: From variable name to type (Ivan Levkivskyi)<br>
<br>
<br>
----------------------------------------------------------------------<br>
<br>
Message: 1<br>
Date: Fri, 19 Oct 2018 09:18:02 +0200<br>
From: Thomas G?ttler <<a href="mailto:guettliml@thomas-guettler.de" target="_blank">guettliml@thomas-guettler.de</a>><br>
To: <a href="mailto:python-ideas@python.org" target="_blank">python-ideas@python.org</a><br>
Subject: [Python-ideas] TypeHinting: From variable name to type<br>
Message-ID: <<a href="mailto:2d9d1825-2619-e4a0-1b19-6a614666816a@thomas-guettler.de" target="_blank">2d9d1825-2619-e4a0-1b19-6a614666816a@thomas-guettler.de</a>><br>
Content-Type: text/plain; charset=utf-8; format=flowed<br>
<br>
Imaging you are developing in the django context.<br>
<br>
Everytime you use a variable named "request" or "response" your human brains<br>
knows that this is a subclass of  django.http.HttpRequest and django.http.HttpResponse.<br>
<br>
How to give the IDE this knowledge?<br>
<br>
One solution is the do typehinting everywhere the veriable gets used.<br>
<br>
But why does the human brain not need this?<br>
<br>
Because it is intelligent?<br>
<br>
I would not call this intelligence. There is a simple<br>
dictionary in the brain of the developer, which maps:<br>
<br>
variable-name --> Type<br>
<br>
And this mapping dict exists once per library.<br>
<br>
If you are developing in the requests http lib, then<br>
there is a different mapping. Then "response" means<br>
type requests.Response.<br>
<br>
<br>
Now my idea: Per module and/or per file type hinting from variable name.<br>
<br>
Maybe a magic docstring in the __init__.py file:<br>
<br>
"""<br>
variable-name-mapping:<br>
  {<br>
    request: django.http.HttpRequest,<br>
  ...<br>
}<br>
"""<br>
<br>
This makes the type mapping available for all files in this directory (or sub-directories).<br>
<br>
What do you think?<br>
<br>
<br>
<br>
<br>
Disclaimer: For reasons I don't want to explain in detail, I am not allowed to<br>
do implement things like this. This is just an idea. I would feel proud and thankfull<br>
if someone likes it that much, that he implements it.<br>
<br>
<br>
<br>
<br>
-- <br>
Thomas Guettler <a href="http://www.thomas-guettler.de/" rel="noreferrer" target="_blank">http://www.thomas-guettler.de/</a><br>
I am looking for feedback: <a href="https://github.com/guettli/programming-guidelines" rel="noreferrer" target="_blank">https://github.com/guettli/programming-guidelines</a><br>
<br>
<br>
------------------------------<br>
<br>
Message: 2<br>
Date: Fri, 19 Oct 2018 09:29:38 +0200<br>
From: Anders Hovm?ller <<a href="mailto:boxed@killingar.net" target="_blank">boxed@killingar.net</a>><br>
To: Thomas G?ttler <<a href="mailto:guettliml@thomas-guettler.de" target="_blank">guettliml@thomas-guettler.de</a>><br>
Cc: <a href="mailto:python-ideas@python.org" target="_blank">python-ideas@python.org</a><br>
Subject: Re: [Python-ideas] TypeHinting: From variable name to type<br>
Message-ID: <<a href="mailto:3A295990-52A3-4347-865E-096E9126C6C7@killingar.net" target="_blank">3A295990-52A3-4347-865E-096E9126C6C7@killingar.net</a>><br>
Content-Type: text/plain;       charset=utf-8<br>
<br>
<br>
<br>
> On 19 Oct 2018, at 09:18, Thomas G?ttler <<a href="mailto:guettliml@thomas-guettler.de" target="_blank">guettliml@thomas-guettler.de</a>> wrote:<br>
> <br>
> Imaging you are developing in the django context.<br>
> <br>
> Everytime you use a variable named "request" or "response" your human brains<br>
> knows that this is a subclass of  django.http.HttpRequest and django.http.HttpResponse.<br>
> <br>
> How to give the IDE this knowledge?<br>
> <br>
> One solution is the do typehinting everywhere the veriable gets used.<br>
> <br>
> But why does the human brain not need this?<br>
> <br>
> Because it is intelligent?<br>
> <br>
> I would not call this intelligence. There is a simple<br>
> dictionary in the brain of the developer, which maps:<br>
> <br>
> variable-name --> Type<br>
> <br>
> And this mapping dict exists once per library.<br>
> <br>
> If you are developing in the requests http lib, then<br>
> there is a different mapping. Then "response" means<br>
> type requests.Response.<br>
> <br>
> <br>
> Now my idea: Per module and/or per file type hinting from variable name.<br>
> <br>
> Maybe a magic docstring in the __init__.py file:<br>
> <br>
> """<br>
> variable-name-mapping:<br>
> {<br>
>   request: django.http.HttpRequest,<br>
> ...<br>
> }<br>
> """<br>
> <br>
> This makes the type mapping available for all files in this directory (or sub-directories).<br>
> <br>
> What do you think?<br>
<br>
<br>
I tried to implement this in mypy quite recently actually, but gave up for various reasons.<br>
<br>
I am very much +1 on this. This would be a huge boon to preexisting code bases.<br>
<br>
/ Anders<br>
<br>
<br>
<br>
<br>
------------------------------<br>
<br>
Message: 3<br>
Date: Fri, 19 Oct 2018 10:22:08 +0200<br>
From: Robert Vanden Eynde <<a href="mailto:robertve92@gmail.com" target="_blank">robertve92@gmail.com</a>><br>
To: Thomas G?ttler <<a href="mailto:guettliml@thomas-guettler.de" target="_blank">guettliml@thomas-guettler.de</a>><br>
Cc: python-ideas <<a href="mailto:python-ideas@python.org" target="_blank">python-ideas@python.org</a>><br>
Subject: Re: [Python-ideas] TypeHinting: From variable name to type<br>
Message-ID:<br>
        <<a href="mailto:CA%2BmsPNkhxXxCWkB4f_YbeR3oJQLNBWLGzvsOfouW%2BBQ7nonFyA@mail.gmail.com" target="_blank">CA+msPNkhxXxCWkB4f_YbeR3oJQLNBWLGzvsOfouW+BQ7nonFyA@mail.gmail.com</a>><br>
Content-Type: text/plain; charset="utf-8"<br>
<br>
That would be a feature in my "python dialect" future library. Taking one<br>
valid python program and producing another python program :<br>
<br>
def f(request):<br>
    return HttpResponse('ok')<br>
<br>
?<br>
<br>
def f(request: HttpRequest):<br>
   return HttpResponse('ok')<br>
<br>
The dialect options would include "all top functions in this module" for<br>
example, and parameters about the naming convention (explicit list of<br>
conversion or rules to create the mapping).<br>
<br>
Le ven. 19 oct. 2018 ? 09:18, Thomas G?ttler <<a href="mailto:guettliml@thomas-guettler.de" target="_blank">guettliml@thomas-guettler.de</a>><br>
a ?crit :<br>
<br>
> Imaging you are developing in the django context.<br>
><br>
> Everytime you use a variable named "request" or "response" your human<br>
> brains<br>
> knows that this is a subclass of  django.http.HttpRequest and<br>
> django.http.HttpResponse.<br>
><br>
> How to give the IDE this knowledge?<br>
><br>
> One solution is the do typehinting everywhere the veriable gets used.<br>
><br>
> But why does the human brain not need this?<br>
><br>
> Because it is intelligent?<br>
><br>
> I would not call this intelligence. There is a simple<br>
> dictionary in the brain of the developer, which maps:<br>
><br>
> variable-name --> Type<br>
><br>
> And this mapping dict exists once per library.<br>
><br>
> If you are developing in the requests http lib, then<br>
> there is a different mapping. Then "response" means<br>
> type requests.Response.<br>
><br>
><br>
> Now my idea: Per module and/or per file type hinting from variable name.<br>
><br>
> Maybe a magic docstring in the __init__.py file:<br>
><br>
> """<br>
> variable-name-mapping:<br>
>   {<br>
>     request: django.http.HttpRequest,<br>
>   ...<br>
> }<br>
> """<br>
><br>
> This makes the type mapping available for all files in this directory (or<br>
> sub-directories).<br>
><br>
> What do you think?<br>
><br>
><br>
><br>
><br>
> Disclaimer: For reasons I don't want to explain in detail, I am not<br>
> allowed to<br>
> do implement things like this. This is just an idea. I would feel proud<br>
> and thankfull<br>
> if someone likes it that much, that he implements it.<br>
><br>
><br>
><br>
><br>
> --<br>
> Thomas Guettler <a href="http://www.thomas-guettler.de/" rel="noreferrer" target="_blank">http://www.thomas-guettler.de/</a><br>
> I am looking for feedback:<br>
> <a href="https://github.com/guettli/programming-guidelines" rel="noreferrer" target="_blank">https://github.com/guettli/programming-guidelines</a><br>
> _______________________________________________<br>
> Python-ideas mailing list<br>
> <a href="mailto:Python-ideas@python.org" target="_blank">Python-ideas@python.org</a><br>
> <a href="https://mail.python.org/mailman/listinfo/python-ideas" rel="noreferrer" target="_blank">https://mail.python.org/mailman/listinfo/python-ideas</a><br>
> Code of Conduct: <a href="http://python.org/psf/codeofconduct/" rel="noreferrer" target="_blank">http://python.org/psf/codeofconduct/</a><br>
><br>
-------------- next part --------------<br>
An HTML attachment was scrubbed...<br>
URL: <<a href="http://mail.python.org/pipermail/python-ideas/attachments/20181019/cdfa7215/attachment-0001.html" rel="noreferrer" target="_blank">http://mail.python.org/pipermail/python-ideas/attachments/20181019/cdfa7215/attachment-0001.html</a>><br>
<br>
------------------------------<br>
<br>
Message: 4<br>
Date: Fri, 19 Oct 2018 11:30:53 +0200<br>
From: Thomas G?ttler <<a href="mailto:guettliml@thomas-guettler.de" target="_blank">guettliml@thomas-guettler.de</a>><br>
To: Robert Vanden Eynde <<a href="mailto:robertve92@gmail.com" target="_blank">robertve92@gmail.com</a>><br>
Cc: python-ideas <<a href="mailto:python-ideas@python.org" target="_blank">python-ideas@python.org</a>><br>
Subject: Re: [Python-ideas] TypeHinting: From variable name to type<br>
Message-ID: <<a href="mailto:0c2edac3-36de-723f-2571-a782fa118965@thomas-guettler.de" target="_blank">0c2edac3-36de-723f-2571-a782fa118965@thomas-guettler.de</a>><br>
Content-Type: text/plain; charset=utf-8; format=flowed<br>
<br>
<br>
<br>
Am 19.10.18 um 10:22 schrieb Robert Vanden Eynde:<br>
> That would be a feature in my "python dialect" future library. Taking one valid python program and producing another <br>
> python program :<br>
> <br>
> def f(request):<br>
>  ? ? return HttpResponse('ok')<br>
> <br>
> ?<br>
> <br>
> def f(request: HttpRequest):<br>
> return HttpResponse('ok')<br>
> <br>
> The dialect options would include "all top functions in this module" for example, and parameters about the naming <br>
> convention (explicit list of conversion or rules to create the mapping).<br>
<br>
<br>
I think creating source code from source code is most of the time not the best solution.<br>
Except you call the result not "source code" but "binary executable code". [1]<br>
<br>
I think it would be great if this could work for local variables (which are not in the arg/kwargs of the method), too:<br>
<br>
Example:<br>
<br>
def foo():<br>
     response = get_response_from_paradise()<br>
<br>
If `get_response_from_paradise()` has not spec for the return type, then it would be great to guess<br>
the return type from the general "wisdom".<br>
<br>
Regards,<br>
   Thomas<br>
<br>
<br>
<br>
<br>
<br>
[1]: <a href="https://github.com/guettli/programming-guidelines/blob/master/README.rst#source-code-generation-is-a-stupid-idea" rel="noreferrer" target="_blank">https://github.com/guettli/programming-guidelines/blob/master/README.rst#source-code-generation-is-a-stupid-idea</a><br>
<br>
<br>
<br>
<br>
<br>
-- <br>
Thomas Guettler <a href="http://www.thomas-guettler.de/" rel="noreferrer" target="_blank">http://www.thomas-guettler.de/</a><br>
I am looking for feedback: <a href="https://github.com/guettli/programming-guidelines" rel="noreferrer" target="_blank">https://github.com/guettli/programming-guidelines</a><br>
<br>
<br>
------------------------------<br>
<br>
Message: 5<br>
Date: Fri, 19 Oct 2018 10:42:04 +0100<br>
From: Ivan Levkivskyi <<a href="mailto:levkivskyi@gmail.com" target="_blank">levkivskyi@gmail.com</a>><br>
To: <a href="mailto:guettliml@thomas-guettler.de" target="_blank">guettliml@thomas-guettler.de</a><br>
Cc: python-ideas <<a href="mailto:python-ideas@python.org" target="_blank">python-ideas@python.org</a>><br>
Subject: Re: [Python-ideas] TypeHinting: From variable name to type<br>
Message-ID:<br>
        <CAOMjWk=sSJZXpnGkniidD1WMY=<a href="mailto:LNM7vJCNLQq-j4t7h8Oz0T6Q@mail.gmail.com" target="_blank">LNM7vJCNLQq-j4t7h8Oz0T6Q@mail.gmail.com</a>><br>
Content-Type: text/plain; charset="utf-8"<br>
<br>
On Fri, 19 Oct 2018 at 08:19, Thomas G?ttler <<a href="mailto:guettliml@thomas-guettler.de" target="_blank">guettliml@thomas-guettler.de</a>><br>
wrote:<br>
<br>
> [...]<br>
> This makes the type mapping available for all files in this directory (or<br>
> sub-directories).<br>
> What do you think?<br>
><br>
<br>
I don't think this should be a language feature. _Maybe_ it can be some<br>
kind of an agreed format between IDEs.<br>
But in any case I would first discuss this on PyCharm and VScode<br>
(IntelliSense?) trackers.<br>
<br>
Also I don't think it is a good fit for mypy (and probably other type<br>
checkers, but better ask pytype and pyre devs).<br>
I would rather expect that IDEs auto-add annotations using some guided<br>
heuristics, and then type checkers can verify them.<br>
<br>
--<br>
Ivan<br>
-------------- next part --------------<br>
An HTML attachment was scrubbed...<br>
URL: <<a href="http://mail.python.org/pipermail/python-ideas/attachments/20181019/5cdb785c/attachment.html" rel="noreferrer" target="_blank">http://mail.python.org/pipermail/python-ideas/attachments/20181019/5cdb785c/attachment.html</a>><br>
<br>
------------------------------<br>
<br>
Subject: Digest Footer<br>
<br>
_______________________________________________<br>
Python-ideas mailing list<br>
<a href="mailto:Python-ideas@python.org" target="_blank">Python-ideas@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/python-ideas" rel="noreferrer" target="_blank">https://mail.python.org/mailman/listinfo/python-ideas</a><br>
<br>
<br>
------------------------------<br>
<br>
End of Python-ideas Digest, Vol 143, Issue 73<br>
*********************************************<br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">Pozdrawiam,<div>Bartłomiej Bartnicki</div></div></div>