This revision was automatically updated to reflect the committed changes. Closed by commit rHGa0aad86b3b6a: repository: implement generic capability methods on peer class (authored by indygreg).
REPOSITORY rHG Mercurial CHANGES SINCE LAST UPDATE https://phab.mercurial-scm.org/D334?vs=849&id=933 REVISION DETAIL https://phab.mercurial-scm.org/D334 AFFECTED FILES mercurial/repository.py CHANGE DETAILS diff --git a/mercurial/repository.py b/mercurial/repository.py --- a/mercurial/repository.py +++ b/mercurial/repository.py @@ -9,6 +9,11 @@ import abc +from .i18n import _ +from . import ( + error, +) + class _basepeer(object): """Represents a "connection" to a repository. @@ -228,5 +233,36 @@ calls. However, they must all support this API. """ + def capable(self, name): + """Determine support for a named capability. + + Returns ``False`` if capability not supported. + + Returns ``True`` if boolean capability is supported. Returns a string + if capability support is non-boolean. + """ + caps = self.capabilities() + if name in caps: + return True + + name = '%s=' % name + for cap in caps: + if cap.startswith(name): + return cap[len(name):] + + return False + + def requirecap(self, name, purpose): + """Require a capability to be present. + + Raises a ``CapabilityError`` if the capability isn't present. + """ + if self.capable(name): + return + + raise error.CapabilityError( + _('cannot %s; remote repository does not support the %r ' + 'capability') % (purpose, name)) + class legacypeer(peer, _baselegacywirecommands): """peer but with support for legacy wire protocol commands.""" To: indygreg, #hg-reviewers, durin42 Cc: mercurial-devel _______________________________________________ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel