Join GitHub today
GitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together.Sign up
Support conditional Python version and platform checks #698
Mypy should support some common kinds of Python version checks and platform checks (e.g. Windows vs. Posix). We should ignore code paths that won't be run on the targeted Python version or platform. This way mypy can more effectively type check code that supports Python 2 and 3 and multiplatform code.
We first need to decide which checks to support. These examples are from PEP 484 and should be supported:
import sys if sys.version_info >= 3: # Python 3 specific definitions ... else: # Python 2 specific definitions ... if sys.platform == 'win32': # Windows specific definitions ... else: # Posix specific definitions ...
When type checking code as above, always only if or the else block would be analyzed, never both, since on any given program run only one them can be evaluated (we assume that nobody does anything crazy like modifying
We already have Python 2 and Python 3 modes, and we should also implement Windows and non-Windows (Posix) modes. Initially, we can just use the platform on which the type checker is being run, but more generally this should be configurable (e.g.,
I may need help with the last item, and maybe we should update PEP 484 to clarify what's allowed.
Here are some thoughts: