On Tue, Nov 7, 2017 at 2:58 AM, Guido van Rossum <guido@python.org> wrote:
On Mon, Nov 6, 2017 at 2:34 AM, Stéfane Fermigier <sf@fermigier.com> wrote:
4) 10 years ago, when I was working on the EDOS project ( http://cordis.europa.eu/pub/ist/docs/directorate_d/st-ds/edos-project-story_en.pdf ), I ran a small experiment where I used, IIRC, the profile hook to intercept all function / method calls, and log information about arguments and return value types to a gigantic log file. Then the log file could be parsed and these information used to suggest type annotations. Except there were no type annotations at the time in Python.

I know PyCharm can do a similar thing now: you run your program or your tests under the debugger, it logs runtime type information somewhere, and then can use it to suggest autocompletion or maybe type annotations.

I didn't know this. Do you know where there are docs for this feature?

This was described in this blog post when first introduced:

https://blog.jetbrains.com/pycharm/2013/02/dynamic-runtime-type-inference-in-pycharm-2-7/

And more tersely, in the documentation: https://www.jetbrains.com/help/pycharm/python-debugger.html

a) record runtime type information from test or regular runs
b) massage these information and use them to annotate Python code with additional type information (up to the developer to then accept or not the proposed changes)

We have an early version of a tool that does this at Dropbox; I am planning to open-source it by the end of this year. So far the experience is that the annotations require a fair amount of manual cleanup though.

That would be great !

  S.
 
--
Stefane Fermigier - http://fermigier.com/ - http://twitter.com/sfermigier - http://linkedin.com/in/sfermigier
Founder & CEO, Abilian - Enterprise Social Software - http://www.abilian.com/
Chairman, Free&OSS Group / Systematic Cluster - http://www.gt-logiciel-libre.org/
Co-Chairman, National Council for Free & Open Source Software (CNLL) - http://cnll.fr/
Founder & Organiser, PyData Paris - http://pydata.fr/
---
“You never change things by fighting the existing reality. To change something, build a new model that makes the existing model obsolete.” — R. Buckminster Fuller