Skip to content
  • Matt Harbison's avatar
    typing: add `from __future__ import annotations` to most files · f4733654f144
    Matt Harbison authored
    Now that py36 is no longer supported, we can postpone annotation evaluation.
    This means that the quoting is usually optional (for things imported under the
    guard of `if typing.TYPE_CHECKING:` to avoid circular imports), and there's less
    overhead on startup[1].
    
    There may be some missing here.  I backed out 6000f5b25c9b (which removed the
    `from __future__ import ...` that was supporting py2), reverted the changes in
    `contrib/`, `doc/`, and `tests/`, and then ran:
    
        $ hg status -n --change . | \
            xargs sed -i -e 's/from __future__ import .*$/from __future__ import annotations/'
    
    There were some minor tweaks needed when reviewing (mostly making the spacing
    around the import consistent, and `mercurial/testing/__init__.py` had a
    multiline import that wasn't fully rewritten.
    
    [1] https://docs.python.org/3/whatsnew/3.7.html#pep-563-postponed-evaluation-of-annotations
    f4733654f144