[PATCH 00 of 11 logilab-common] type annotations using pyannotates and some cleaning

Laurent Peuch cortex at worlddomination.be
Wed Apr 1 16:20:01 CEST 2020


Hello,

This series is the result of our last sprint where we tested pyannotate to
generates types annotations from runtime analysis of our tests.:
https://github.com/dropbox/pyannotate

I've also included some cleaning work I was doing on the side when trying to do
this damn refactoring on yams was breaking my brain a bit too much.

To give a feedback on using pyannotate as a tool to introduce types annotations
in a project in comparison from doing everything by hand:

- it totally save a lot of time in comparison of doing everything by hand
- it's clearly not out of the box, we've had to fix some stuff from the
  generated analysis and then to please mypy (and it tooks me a few days to
  finish this work)
- but it's still worth it has it automates a lot what I was doing by hand
- it doesn't have the quality of doing everything by hand and checking
  everything by hand but it's still a win to start introducing types
- for our case it's based on tests data so it might not be perfect

For this series I've been focusing only on making mypy happy from the generated
types so it's clearly not optimal but I will definitively used pyannotate again
as a good way to bootstrap adding type annotations to a project.

This series also include the common list of good practices that are starting to
be included in all logilab's projects:

- black integration taken from yams that was taken from nemo
- flake8 compatible with black from the same source
- fyi I've tested https://github.com/myint/autoflake for flake8 cleaning, it
  helps a bit but doesn't do a lot of works
- check-manifest integration
- some minor cleaning raised by mypy/flake8 regarding python3 compatibility

Kind regards,




More information about the cubicweb-devel mailing list