client_python icon indicating copy to clipboard operation
client_python copied to clipboard

Type hint stubs

Open paravoid opened this issue 4 years ago • 3 comments

It'd be awesome if client_python was type hinted, as that would allow downstream consumers to typecheck their API calls (one has to explicitly # type: ignore the import right now).

My understanding is that the project is actively trying to support (very) old versions of Python. In this case, there are two options: a) type hints in comments b) type stubs (.pyi). The latter is preferrable; this can be shipped by either typeshed, or, ideally, in the software itself. For more about the pros and cons of each solution, I've found Bernat Gabor's blog post to be informative.

Adding the hints across the entire code base is easy but still, not a trivial amount of work. Tools like MonkeyType can help bootstrap that process. Given the good code test coverage, I tried running the test suite with MonkeyType (monkeytype run -m pytest) and it generated the majority of the hints. There were, however, some corner cases that it wasn't able to figure out or otherwise failed to generate, and I'm not familiar enough with the codebase to help with that.

Thanks & thanks for all of the work you've been putting on this module!

paravoid avatar Dec 03 '19 20:12 paravoid

This seems reasonable to add to the public bits of the API via comments.

My understanding is that the project is actively trying to support (very) old versions of Python.

More that we're not going to drop them until they cause too much hassle, so far it has only been a little annoying.

brian-brazil avatar Dec 04 '19 09:12 brian-brazil

@brian-brazil type hints can still be added using # type: comments, here's more: https://mypy.readthedocs.io/en/stable/python2.html (this is another alternative: https://mypy.readthedocs.io/en/stable/stubs.html, but it is worse since types get easilly out of sync with the code)

I found this ticket, because I am getting bunch of error: Untyped decorator makes function "get_parameter" untyped errors in places where I use a decorator. I would love if a support would be added.

Adding types to Python makes autocomplete and refactoring functionality work well, and of course finds all kinds of bugs in the code.

takeda avatar Oct 09 '21 01:10 takeda

#718 dropped support for Python 2 altogether, so real type hints could now be added.

akx avatar Jan 11 '22 10:01 akx

I believe type hints now exist, so resolving this. Thanks!

paravoid avatar Feb 14 '23 07:02 paravoid