[Python-Dev] Type hints -- a mediocre programmer's reaction (original) (raw)

Chris Barker chris.barker at noaa.gov
Wed Apr 22 00:41:03 CEST 2015


On Tue, Apr 21, 2015 at 2:33 AM, Cory Benfield <cory at lukasa.co.uk> wrote:

It seems like the only place the type annotations will get used is in relatively trivial cases where the types are obvious anyway. I don't deny that some bugs will be caught, but I suspect they'll overwhelmingly be crass ones that would have been caught quickly anyway.

Well, it'll catch passing in a string instead of a sequence of strings -- one of teh common and semi-insidious type errors I see a lot (at least with newbies).

Oh wait, maybe it won't -- a string IS a sequence of strings. That's why this is an insidioous bug in teh first place:

List[string]

will work, yes -- but now I'm locked down the user to an actual, list, yes? So I try:

Iterable[string]

ah yes -- now users can use tuples of strings, or a custom class, or -- but wait, darn it, a string IS an iterable of strings.. SIGH.

NOTE: I've thought for years that Python should have a character type for this reason, but that's a side note.

Oh, and I'm a heavy numpy user. And, in fact, I write a lot of functions that are essentially statically typed -- i.e. they will only work with a Nx3 array of float64 for instance. However, in this case, I want run-time type checking, and I DON'T want the API to be statically typed, so I use something like:

the_arr = np.asarray( input_object, dypte-np.float64).reshape(-1, 3)

and in my docstring:

:param inputobject: the input data to compute something from :type inputobject: (Nx3) numpy array or floats or somethign that can be turned into one.

Is there any way for type hinting to help here???

--

Christopher Barker, Ph.D. Oceanographer

Emergency Response Division NOAA/NOS/OR&R (206) 526-6959 voice 7600 Sand Point Way NE (206) 526-6329 fax Seattle, WA 98115 (206) 526-6317 main reception

Chris.Barker at noaa.gov -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.python.org/pipermail/python-dev/attachments/20150421/8b69bdd5/attachment-0001.html>



More information about the Python-Dev mailing list