Mercurial > hg-stable
view tests/test-remotefilelog-bundle2-legacy.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 | d718eddf01d9 |
children |
line wrap: on
line source
#require no-windows $ . "$TESTDIR/remotefilelog-library.sh" generaldelta to generaldelta interactions with bundle2 but legacy clients without changegroup2 support $ cat > testcg2.py << EOF > import sys > from mercurial import changegroup, registrar, util > cmdtable = {} > command = registrar.command(cmdtable) > @command('testcg2', norepo=True) > def testcg2(ui): > if not hasattr(changegroup, 'cg2packer'): > sys.exit(80) > EOF $ cat >> $HGRCPATH << EOF > [extensions] > testcg2 = $TESTTMP/testcg2.py > EOF $ hg testcg2 || exit 80 $ cat > disablecg2.py << EOF > from mercurial import changegroup, error, util > deleted = False > def reposetup(ui, repo): > global deleted > if deleted: > return > packermap = changegroup._packermap > # protect against future changes > if len(packermap) != 3: > raise error.Abort('packermap has %d versions, expected 3!' % len(packermap)) > for k in ['01', '02', '03']: > if not packermap.get(k): > raise error.Abort("packermap doesn't have key '%s'!" % k) > > del packermap['02'] > deleted = True > EOF $ hg init master $ hg debugrequires -R master | grep generaldelta generaldelta $ cd master preferuncompressed = False so that we can make both generaldelta and non-generaldelta clones $ cat >> .hg/hgrc <<EOF > [remotefilelog] > server=True > [experimental] > bundle2-exp = True > [server] > preferuncompressed = False > EOF $ echo x > x $ hg commit -qAm x $ cd .. $ hgcloneshallow ssh://user@dummy/master shallow -q --pull --config experimental.bundle2-exp=True 1 files fetched over 1 fetches - (1 misses, 0.00% hit ratio) over *s (glob) $ cd shallow $ cat >> .hg/hgrc << EOF > [extensions] > disablecg2 = $TESTTMP/disablecg2.py > EOF $ cd ../master $ echo y > y $ hg commit -qAm y $ cd ../shallow $ hg pull -u pulling from ssh://user@dummy/master searching for changes adding changesets adding manifests adding file changes added 1 changesets with 0 changes to 0 files new changesets d34c38483be9 1 files updated, 0 files merged, 0 files removed, 0 files unresolved 1 files fetched over 1 fetches - (1 misses, 0.00% hit ratio) over *s (glob) $ echo a > a $ hg commit -qAm a $ hg push pushing to ssh://user@dummy/master searching for changes remote: adding changesets remote: adding manifests remote: adding file changes remote: added 1 changesets with 1 changes to 1 files