[Python-Dev] Please reject or postpone PEP 526 (original) (raw)

Koos Zevenhoven k7hoven at gmail.com
Sun Sep 4 10:34:30 EDT 2016


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

--



More information about the Python-Dev mailing list