Skip to content
Snippets Groups Projects

Delayed annotation evaluation

Merged Matt Harbison requested to merge topic/default/import-future-annotations into branch/default
  1. Sep 12, 2024
    • Matt Harbison's avatar
      typing: add `from __future__ import annotations` to remaining source files · 1c5810ce737e
      Matt Harbison authored
      Most of these look newer than when the original imports referenced in the
      previous commit were dropped, so these weren't covered by the backout.  These
      were found with:
      
          hg files mercurial hgext hgext3rd -I '**.py' -X '**/thirdparty' \
              | xargs grep -L 'from __future__ import annotations'
      
      All of the `__init__.py` files that finds are empty, so those were ignored and
      the rest manually edited.
      1c5810ce737e
  2. Sep 16, 2024
    • 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
    • Matt Harbison's avatar
      format: add many "missing" comma · 607e94e01851
      Matt Harbison authored
      Black was not adding them until the next changeset introduced a bunch of `from
      __future__ import annotations` to most file. Since it make the next changeset
      hard to read we introduce them in advance.
      607e94e01851
Loading