Mercurial > public > mercurial-scm > hg-stable
diff mercurial/interfaces/repository.py @ 52526:61f70a6ab645
wirepeer: subclass new `repository.ipeer{,legacy}commands` Proctocol classes
This is the same transformation as 3a90a6fd710d did for dirstate, but the
CamelCase naming was already cleaned up here. See 4ef6dbc27a99 for the benefits
of explicit subclassing.
PyCharm is flagging the `wirepeer.getbundle` function with:
Type of 'getbundle' is incompatible with 'ipeercommands'
I've no idea why- maybe it's because it can infer a `unbundle20 | cg1unpacker`
return there, or maybe it's the kwargs. Something to keep an eye on, but pytype
doesn't complain.
Since we're direct subclassing here and there are only a few methods on these
interfaces, also make them abstract like was done in ef119f914fc1.
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Thu, 24 Oct 2024 20:35:02 -0400 |
parents | e123c8a26a70 |
children | 9358d786af24 |
line wrap: on
line diff
--- a/mercurial/interfaces/repository.py Thu Oct 24 20:26:25 2024 -0400 +++ b/mercurial/interfaces/repository.py Thu Oct 24 20:35:02 2024 -0400 @@ -213,6 +213,7 @@ methods commonly call wire protocol commands of the same name. """ + @abc.abstractmethod def branchmap(self): """Obtain heads in named branches. @@ -220,27 +221,32 @@ heads on that branch. """ + @abc.abstractmethod def capabilities(self): """Obtain capabilities of the peer. Returns a set of string capabilities. """ + @abc.abstractmethod def get_cached_bundle_inline(self, path): """Retrieve a clonebundle across the wire. Returns a chunkbuffer """ + @abc.abstractmethod def clonebundles(self): """Obtains the clone bundles manifest for the repo. Returns the manifest as unparsed bytes. """ + @abc.abstractmethod def debugwireargs(self, one, two, three=None, four=None, five=None): """Used to facilitate debugging of arguments passed over the wire.""" + @abc.abstractmethod def getbundle(self, source, **kwargs): """Obtain remote repository data as a bundle. @@ -250,12 +256,14 @@ Returns a generator of bundle data. """ + @abc.abstractmethod def heads(self): """Determine all known head revisions in the peer. Returns an iterable of binary nodes. """ + @abc.abstractmethod def known(self, nodes): """Determine whether multiple nodes are known. @@ -265,18 +273,21 @@ at that index is known to the peer. """ + @abc.abstractmethod def listkeys(self, namespace): """Obtain all keys in a pushkey namespace. Returns an iterable of key names. """ + @abc.abstractmethod def lookup(self, key): """Resolve a value to a known revision. Returns a binary node of the resolved revision on success. """ + @abc.abstractmethod def pushkey(self, namespace, key, old, new): """Set a value using the ``pushkey`` protocol. @@ -287,12 +298,14 @@ namespace. """ + @abc.abstractmethod def stream_out(self): """Obtain streaming clone data. Successful result should be a generator of data chunks. """ + @abc.abstractmethod def unbundle(self, bundle, heads, url): """Transfer repository data to the peer. @@ -310,6 +323,7 @@ legacy, the interfaces are split. """ + @abc.abstractmethod def between(self, pairs): """Obtain nodes between pairs of nodes. @@ -319,6 +333,7 @@ requested pair. """ + @abc.abstractmethod def branches(self, nodes): """Obtain ancestor changesets of specific nodes back to a branch point. @@ -328,9 +343,11 @@ Returns an iterable of iterables with the resolved values for each node. """ + @abc.abstractmethod def changegroup(self, nodes, source): """Obtain a changegroup with data for descendants of specified nodes.""" + @abc.abstractmethod def changegroupsubset(self, bases, heads, source): pass