[Python-Dev] Please reject or postpone PEP 526 (original) (raw)
Koos Zevenhoven k7hoven at gmail.com
Sun Sep 4 10:34:30 EDT 2016
- Previous message (by thread): [Python-Dev] Please reject or postpone PEP 526
- Next message (by thread): [Python-Dev] Please reject or postpone PEP 526
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Sun, Sep 4, 2016 at 3:43 PM, Steven D'Aprano <steve at pearwood.info> wrote: [...]
[steve at ando ~]$ cat test.py from typing import Optional
def foo(x:Optional[int])->int: if x is None: return -1 return x + 1 def bar(x:Optional[int])->int: y = x # the type of y must be inferred if y is None: return y + 1 return len(y) [steve at ando ~]$ mypy --strict-optional test.py test.py: note: In function "bar": test.py:11: error: Unsupported operand types for + (None and "int") test.py:12: error: Argument 1 to "len" has incompatible type "int"; expected "Sized"
foo passes the type check; bar fails.
That's great. While mypy has nice features, these examples have little to do with PEP 526 as they don't have variable annotations, not even using comments.
For some reason, pip install --upgrade mypy fails for me at the moment, but at least mypy version 0.4.1 does not allow this:
from typing import Callable
def foo(cond: bool, bar : Callable, baz : Callable) -> float:
if cond:
x = bar() # type: int
else:
x = baz() # type: float
return x / 2
and complains that
test.py:7: error: Name 'x' already defined". Maybe someone can confirm this with a newer version.
Here,
def foo(cond: bool) -> float:
if cond:
x = 1
else:
x = 1.5
return x / 2
you get a different error:
test.py:5: error: Incompatible types in assignment (expression has type "float", variable has type "int")
Maybe someone can confirm this with a newer version, but IIUC this is still the case.
I want a checker to check my code and, with minimal annotations, give me confidence that my code is correct Don't we all.
I would add with minimal restrictions on how the code is supposed to be written for type checking to work. It's not at all obvious that everyone thinks that way. Hence, the "Semantics for type checking" thread on python-ideas.
-- Koos
-- Steve
Python-Dev mailing list Python-Dev at python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/k7hoven%40gmail.com
--
- Koos Zevenhoven + http://twitter.com/k7hoven +
- Previous message (by thread): [Python-Dev] Please reject or postpone PEP 526
- Next message (by thread): [Python-Dev] Please reject or postpone PEP 526
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]