-
-
Notifications
You must be signed in to change notification settings - Fork 3.1k
Description
Many typeshed stubs only accept str when ascii-only unicode values also work at runtime. This causes a lot of problems with code using unicode_literals, since generally most literals will have unicode as their type. A quick fix would be to infer str as the type for ascii-only string literals when using unicode_literals, but only then. This would cause some unsafety, but it may be worth it for users using unicode_literals. The type safe solution is to manually check every str argument type in the entire typeshed and potentially replace it with unicode or similar, but this would be extremely painful and unlikely to happen any time soon. This would have no effect on code that doesn't use unicode_literals.
Example of how this would work:
from __future__ import unicode_literals
reveal_type('foo') # str
reveal_type('ß') # unicodeSome open questions:
- Should
u'foo'always have typeunicode? - What's the inferred type of
xinx = 'foo'?