# HG changeset patch # User Gregory Szorc # Date 2018-01-31 19:32:21 # Node ID 29759c46aa1ab67b311ed57ea554b96f7b17df2e # Parent 68dc621fa06c81433859d27c1399f2afc59a1274 wireprotoserver: make name part of protocol interface This is a required part of the interface. Abstract properties must be defined at type creation time. So we make name a @property. Differential Revision: https://phab.mercurial-scm.org/D1991 diff --git a/mercurial/wireprotoserver.py b/mercurial/wireprotoserver.py --- a/mercurial/wireprotoserver.py +++ b/mercurial/wireprotoserver.py @@ -40,6 +40,13 @@ class abstractserverproto(object): __metaclass__ = abc.ABCMeta + @abc.abstractproperty + def name(self): + """The name of the protocol implementation. + + Used for uniquely identifying the transport type. + """ + @abc.abstractmethod def getargs(self, args): """return the value for arguments in @@ -95,7 +102,10 @@ class webproto(abstractserverproto): def __init__(self, req, ui): self._req = req self._ui = ui - self.name = 'http' + + @property + def name(self): + return 'http' def getargs(self, args): knownargs = self._args() @@ -255,7 +265,6 @@ class sshserver(abstractserverproto): self._repo = repo self._fin = ui.fin self._fout = ui.fout - self.name = 'ssh' hook.redirect(True) ui.fout = repo.ui.fout = ui.ferr @@ -264,6 +273,10 @@ class sshserver(abstractserverproto): util.setbinary(self._fin) util.setbinary(self._fout) + @property + def name(self): + return 'ssh' + def getargs(self, args): data = {} keys = args.split()