# HG changeset patch # User Matt Harbison # Date 1727038962 14400 # Node ID d6288776468732b2e93439b9d0f2c477f0f52d24 # Parent 8f3cbea2547c58d07da3a4dddf2937092ff48506 lfs: fix various signature mismatches for vfs subclasses These were flagged by PyCharm. I'm not sure why pytype doesn't catch these- only `hgext/lfs/__init__.py` in the lfs extension is excluded from being checked. I'm not sure if the `*insidef` arg to `join()` was meant as an internal convencience, because I see another class that gets flagged for the same signature problem (to be fixed next). But I don't feel bold enough to make this an internal function, and provide a simplified public `join()` on the `vfs` classes. That can still be done later, if desired. For now, process the additional args and pass them along, even though there don't appear to be any current callers that provide extra args to these classes. We need all of the subclasses to agree on the signature, or they won't be considered to implement the `Vfs` protocol being developed. While we're copy/pasting from the base class, bring the type annotations along for the ride. diff -r 8f3cbea2547c -r d62887764687 hgext/lfs/blobstore.py --- a/hgext/lfs/blobstore.py Sun Sep 22 17:18:05 2024 -0400 +++ b/hgext/lfs/blobstore.py Sun Sep 22 17:02:42 2024 -0400 @@ -15,6 +15,10 @@ import re import socket +from typing import ( + Optional, +) + from mercurial.i18n import _ from mercurial.node import hex @@ -42,11 +46,11 @@ class lfsvfs(vfsmod.vfs): - def join(self, path): + def join(self, path: Optional[bytes], *insidef: bytes) -> bytes: """split the path at first two characters, like: XX/XXXXX...""" if not _lfsre.match(path): raise error.ProgrammingError(b'unexpected lfs path: %s' % path) - return super(lfsvfs, self).join(path[0:2], path[2:]) + return super(lfsvfs, self).join(path[0:2], path[2:], *insidef) def walk(self, path=None, onerror=None): """Yield (dirpath, [], oids) tuple for blobs under path @@ -77,7 +81,7 @@ def __init__(self): pass - def exists(self, oid): + def exists(self, path: Optional[bytes] = None) -> bool: return False def read(self, oid): @@ -93,8 +97,8 @@ def walk(self, path=None, onerror=None): return (b'', [], []) - def write(self, oid, data): - pass + def write(self, *args, **kwargs) -> int: + return 0 class lfsuploadfile(httpconnectionmod.httpsendfile):