You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Jukka Lehtosalo edited this page Nov 8, 2016
·
8 revisions
Some Python features are not currently supported by mypy.
It should be relatively easy to add support for these features (and all of these will likely be supported
in the future):
Properties with setters (currently partial support)
Descriptors
__setattr__
__all__ with imports if the value can be evaluated during compilation (e.g. ['x', 'y', ...])
Double underscore name mangling in classes (you can use double underscores but the names are not treated as special)
The features in the list below are more difficult to support. Many of these could be supported, at least in a restricted form, but some will likely remain unsupported.
Metaclasses
We could have plugin mechanism that would allow mypy to understand specific metaclasses
Runtime mutation of classes and modules (runtime definition of new methods/functions, etc.)
__all__ with complex initializer / mutated value
Class decorators that modify a class
Similar to metaclasses
Run-time evaluated base class, for example:
class A(foo()): pass
eval and exec (these can be used but they are opaque to the type checker)
Run-time addition/mutation of base classes (e.g. registering ABCs)
Conditional definition of classes (e.g. within if statement)