On Wed, Mar 13, 2019 at 5:52 AM Sebastian Wagner <swagner@xxxxxxxx> wrote: > > > > Am 13.03.19 um 08:56 schrieb Ricardo Dias: > > > > > > On 12/03/19 23:34, Gregory Farnum wrote: > >> We talked about this briefly in the testing weekly last week and it > >> looks pretty cool to me! As a C++ developer dabbling in Python, I've > >> had periodic trouble dealing with dynamic typing (o_0) and the extra > >> tests we could add against PRs seem real nice. > >> > >> Unfortunately mypy is apparently pretty noisy and has a number of > >> false positives if you *don't* add the annotations, so we can't just > >> use it for free. > >> > >> How do people feel about adding those annotations to our coding > >> standards and enforcing rules on PRs about not adding warnings? > >> Perhaps we could try it out in just the mgr, or one of the modules, if > >> we feel like we need some experience with the tradeoffs? > > > > I like the idea and I think we should at the same time remove the > > python2 support, and start using python3.6 type annotations. This allows > > to avoid to write type annotations inside code comments. > > Yep. we should IMO really soon remove python2 support in Octopus. On the > other hand, adding Python 3 type annotations makes it harder to backport > changes to Nautilus. Although you are talking about Python2 code, the plan is to no longer require Python2 as a dependency and require python3 only after nautilus is released. > > I don't know if we really should add Python 3 annotations to code that > might need to be backported to Nautilus, until Nautilus is EOL. > > > > >> -Greg > >> > >> On Mon, Mar 4, 2019 at 1:17 AM Sebastian Wagner <swagner@xxxxxxxx> wrote: > >>> > >>> all, > >>> > >>> to find bugs in our Python code base a bit earlier, I looked into static > >>> type checking using mypy and I'd like to share my results. > >>> > >>> Mypy ( http://mypy-lang.org/ ) is a static type checker for Python that > >>> aims to combine the benefits of dynamic (or "duck") typing and static > >>> typing. > >>> > >>> As of now, running mypy on our code base already reveals some genuine > >>> bugs, especially with respect to Python 3 incompatibilities. > >>> > >>> Unfortunately, we will need to look into every module and message and > >>> manually separate bugs and false-positives. > >>> > >>> Here are two example errors: > >>> > >>>> pybind/mgr/restful/decorators.py:21: error: > >>>> Argument 1 to "split" of "bytes" has incompatible type "str"; expected "Optional[bytes]" > >>> > >>> > >>> This is an issue that will be fixed by > >>> https://github.com/ceph/ceph/pull/26712 > >>> > >>>> pybind/mgr/diskprediction_cloud/module.py:12: error: > >>>> Module 'string' has no attribute 'maketrans' > >>> > >>> > >>> which is already tracked as https://tracker.ceph.com/issues/38521 > >>> > >>> By adding additional type annotations to our Python code, we could > >>> enhance the quality of static type checking and thus reveal additional > >>> bugs. This is of course not mandatory! > >>> > >>> > >>> Here is the PR that adds a script that calls mypy: > >>> https://github.com/ceph/ceph/pull/26715 > >>> > >>> It also contains a list of messages printed by mypy. > >> > > > > -- > SUSE Linux GmbH, GF: Felix Imendörffer, Jane Smithard, Graham Norton, > HRB 21284 (AG Nürnberg)