Patchwork D1990: wireprotoserver: make abstractserverproto a proper abstract base class

login
register
mail settings
Submitter phabricator
Date Feb. 1, 2018, 11:12 p.m.
Message ID <differential-rev-PHID-DREV-5lpnod63ypty64gjkxpi-req@phab.mercurial-scm.org>
Download mbox | patch
Permalink /patch/27181/
State Superseded
Headers show

Comments

phabricator - Feb. 1, 2018, 11:12 p.m.
indygreg created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REVISION SUMMARY
  Plug in the abc module so we can have run-time validation of type
  conformance.

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D1990

AFFECTED FILES
  mercurial/wireprotoserver.py

CHANGE DETAILS




To: indygreg, #hg-reviewers
Cc: mercurial-devel

Patch

diff --git a/mercurial/wireprotoserver.py b/mercurial/wireprotoserver.py
--- a/mercurial/wireprotoserver.py
+++ b/mercurial/wireprotoserver.py
@@ -6,6 +6,7 @@ 
 
 from __future__ import absolute_import
 
+import abc
 import cgi
 import struct
 import sys
@@ -37,12 +38,15 @@ 
     Used as reference and documentation.
     """
 
+    __metaclass__ = abc.ABCMeta
+
+    @abc.abstractmethod
     def getargs(self, args):
         """return the value for arguments in <args>
 
         returns a list of values (same order as <args>)"""
-        raise NotImplementedError()
 
+    @abc.abstractmethod
     def getfile(self, fp):
         """write the whole content of a file into a file like object
 
@@ -52,13 +56,12 @@ 
 
         chunk size is the ascii version of the int.
         """
-        raise NotImplementedError()
 
+    @abc.abstractmethod
     def redirect(self):
         """may setup interception for stdout and stderr
 
         See also the `restore` method."""
-        raise NotImplementedError()
 
     # If the `redirect` function does install interception, the `restore`
     # function MUST be defined. If interception is not used, this function