Skip to content

Making it easier to use unicode_literals #2536

Closed

Description

@JukkaL

Currently using from __future__ import unicode_literals in Python 2 is kind of painful with mypy. Here are some potential issues:

  • Some typeshed stubs declare things to only accept str arguments, when in reality they also accept at least ascii-only unicode objects.
  • Mypy might not accept the implicit unicode literals in every context where a literal has a syntactic role (outside normal expressions), and b'foo' literals won't work in Python 3. String literal type escaping is an example.

It's fair to argue that using unicode_literals is a bad idea, but it's not uncommon to encounter real-world code using that, so getting mypy to work with it might be at least somewhat important.

Activity

  1. ddfisher commented on Dec 7, 2016

    @ddfisher
    Collaborator

    FWIW string literal type escaping has already been fixed: #2516

    After that fix I did a quick grep of the codebase looking for other similar errors, and the only one I found is fixed in #2519.

  2. JukkaL commented on Dec 7, 2016

    @JukkaL
    CollaboratorAuthor

    This is still rejected by mypy when using --py2 --fast-parser:

    from __future__ import unicode_literals
    
    def f(x: 'int') -> int:   # invalid syntax
        return x + 1
    
  3. JukkaL commented on Jan 29, 2020

    @JukkaL
    CollaboratorAuthor

    This doesn't seem worth fixing any more, since Python 2 reached it's EoL and gradually the amount of code using unicode_literals is likely to decrease.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions