[Python-ideas] Proposal: Use mypy syntax for function annotations
Ryan Gonzalez
rymg19 at gmail.com
Thu Aug 14 00:34:07 CEST 2014
On Wed, Aug 13, 2014 at 3:29 PM, Christian Heimes <christian at python.org>
wrote:
> On 13.08.2014 21:44, Guido van Rossum wrote:
> > Yesterday afternoon I had an inspiring conversation with Bob Ippolito
> > (man of many trades, author of simplejson) and Jukka Lehtosalo (author
> > of mypy: http://mypy-lang.org/). Bob gave a talk at EuroPython about
> > what Python can learn from Haskell (and other languages); yesterday he
> > gave the same talk at Dropbox. The talk is online
> > (https://ep2014.europython.eu/en/schedule/sessions/121/) and in broad
> > strokes comes down to three suggestions:
> >
> > (a) Python should adopt mypy's syntax for function annotations
> > (b) Python's use of mutabe containers by default is wrong
> > (c) Python should adopt some kind of Abstract Data Types
>
> I was at Bob's talk during EP14 and really liked the idea. A couple of
> colleagues and other attendees also said it's a good and useful
> proposal. I also like your proposal to standardize the type annotations
> first without a full integration of mypy.
>
> In general I'm +1 but I like to discuss two aspects:
>
> 1) I'm not keen with the naming of mypy's typing classes. The visual
> distinction between e.g. dict() and Dict() is too small and IMHO
> confusing for newcomers. How about an additional 'T' prefix to make
> clear that the objects are referring to typing objects?
>
> from typing import TList, TDict
>
> def word_count(input: TList[str]) -> TDict[str, int]:
> ...
>
Eeewwwww. That's way too Pascal-ish.
> 2) PEP 3107 only specifies arguments and return values but not
> exceptions that can be raised by a function. Java has the "throws"
> syntax to list possible exceptions:
>
> public void readFile() throws IOException {}
>
> May I suggest that we also standardize a way to annotate the exceptions
> that can be raised by a function? It's a very useful piece of
> information and commonly requested information on the Python user
> mailing list. It doesn't have to be a new syntax element, a decorator in
> the typing module would suffice, too. For example:
>
> from typing import TList, TDict, raises
>
> @raises(RuntimeError, (ValueError, "is raised when input is empty"))
> def word_count(input: TList[str]) -> TDict[str, int]:
> ...
>
That was a disaster in C++. It's confusing, especially since Python uses
exceptions more than most other languages do.
>
> Regards,
> Christian
>
> _______________________________________________
> Python-ideas mailing list
> Python-ideas at python.org
> https://mail.python.org/mailman/listinfo/python-ideas
> Code of Conduct: http://python.org/psf/codeofconduct/
>
--
Ryan
If anybody ever asks me why I prefer C++ to C, my answer will be simple:
"It's becauseslejfp23(@#Q*(E*EIdc-SEGFAULT. Wait, I don't think that was
nul-terminated."
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20140813/9862a70c/attachment-0001.html>
More information about the Python-ideas
mailing list