typing: add type hints to `mercurial.dirstatemap`
Somewhere since
10db46e128d4, pytype stopped being able to infer the type of the
`identity` field. Fill in some obvious other hints along the way.
These hints caused pytype to flag a missing attribute:
File "/mnt/c/Users/Matt/hg/mercurial/dirstatemap.py", line 714, in _v1_map:
No attribute 'stat' on mercurial.windows.cachestat [attribute-error]
In Union[Any, mercurial.posix.cachestat, mercurial.windows.cachestat]
File "/mnt/c/Users/Matt/hg/mercurial/dirstatemap.py", line 715, in _v1_map:
No attribute 'stat' on mercurial.windows.cachestat [attribute-error]
In Union[Any, mercurial.posix.cachestat, mercurial.windows.cachestat]
In practice, the `identity` field is NOT replaced with None if it isn't
cacheable, so it's probably safer to just add the field and set it to None,
since that check is already in place on line 715.
typing: add type hints to `cmdutil.findrepo()`
Since
10db46e128d4, pytype almost figured this out, going from `Any` -> `_T0`,
but the intent is obvious.
typing: add some type hints to fastannotate that have decayed in the last year
Somewhere since
10db46e128d4, `_knownopts` decayed to `set` for unknown reasons.
Also, `annotateopts.default` changed from bytes to str. While that is correct,
I noticed that PyCharm was flagging the member fields as undefined in
`shortstr()`, so add those to keep it happy. (There are no complaints from
pytype because that module is excluded, due to the missing reference to
`linelog.copyfrom()` that I'm not sure how to fix.)
heptapod-ci: use new v2.1 image
This is finally catching up to ~3 years of tech debt.
heptapod-ci: move version prints closer to the start
This makes debugging a lot easier if anything is to go wrong, and shows output
earlier.
pytype: only try the hacky way of finding PYTHON if not provided
This allows us to work in more environments, like when using pyenv. This
syntax is compatible with all POSIX shells.
dummysmtpd: fix EOF handling on newer versions of OpenSSL
Explanations inline.
test-install: add new glob for the upgrade notice in newer versions of pip
We only globbed for the old warning, newer versions of pip use a cleaner one.
rust: use `.cargo/config.toml` instead of `.cargo/config`
This has been deprecated for a while now and we don't support Rust versions
that only understand the old path.
rust: apply clippy lints
They are at most harmless and at best make the codebase more readable and
simpler.
rust: change minimum supported version everywhere applicable
This will help users and downstream packaging.
rustfmt: format the codebase with nightly-2024-07-16
The CI has moved to a newer nightly, which slightly changes how it wraps
comments (which is the very option we use nightly for).