Mercurial > hg-stable
view tests/test-check-help.t @ 51928:ad83e4f9b40e
typing: correct pytype mistakes in `mercurial/vfs.py`
With the previous changes in this series (prior to merging the *.pyi file), this
wasn't too bad- the only definitively wrong things were the `data` argument to
`writelines()`, and the return type on `backgroundclosing()` (both of these
errors were dropped in the previous commit; for some reason pytype doesn't like
`contextlib._GeneratorContextManager`, even though that's what it determined it
is):
File "/mnt/c/Users/Matt/hg/mercurial/vfs.py", line 411, in abstractvfs:
Bad return type 'contextlib._GeneratorContextManager' for generator function abstractvfs.backgroundclosing [bad-yield-annotation]
Expected Generator, Iterable or Iterator
PyCharm thinks this is `Generator[backgroundfilecloser], Any, None]`, which can
be reduced to `Iterator[backgroundfilecloser]`, but pytype flagged the line that
calls `yield` without an argument unless it's also `Optional`. PyCharm is happy
either way. For some reason, `Iterable` didn't work for pytype:
File "/mnt/c/Users/Matt/hg/mercurial/vfs.py", line 390, in abstractvfs:
Function contextlib.contextmanager was called with the wrong arguments [wrong-arg-types]
Expected: (func: Callable[[Any], Iterator])
Actually passed: (func: Callable[[Any, Any, Any], Iterable[Optional[Any]]])
Attributes of protocol Iterator[_T_co] are not implemented on Iterable[Optional[Any]]: __next__
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Fri, 20 Sep 2024 16:36:28 -0400 |
parents | 42d2b31cee0b |
children | ceaf92d6d380 |
line wrap: on
line source
#require test-repo $ . "$TESTDIR/helpers-testrepo.sh" $ cat <<'EOF' > scanhelptopics.py > import re > import sys > if sys.platform == "win32": > import msvcrt > import os > msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY) > stdout = getattr(sys.stdout, 'buffer', sys.stdout) > topics = set() > topicre = re.compile(br':hg:`help ([a-z0-9\-.]+)`') > for fname in sys.argv: > with open(fname, 'rb') as f: > topics.update(m.group(1) for m in topicre.finditer(f.read())) > for s in sorted(topics): > stdout.write(b'%s\n' % s) > EOF $ cd "$TESTDIR"/.. Check if ":hg:`help TOPIC`" is valid: (use "xargs -n1 -t" to see which help commands are executed) $ testrepohg files 'glob:{hgdemandimport,hgext,mercurial}/**/*.py' \ > | sed 's|\\|/|g' \ > | xargs "$PYTHON" "$TESTTMP/scanhelptopics.py" \ > | xargs -n1 hg help --config extensions.phabricator= > /dev/null