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. 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)