docs: def _format_python2_or_3(self):
          """
          Change the PB files to use full pathnames for Python 3.x
          and modify the metaclasses to be version agnostic
          """
          pb_files = set()
          with open(self.source, 'r', buffering=1) as csvfile:
              reader = csv.reader(csvfile)
              for row in reader:
                  _, _, proto = row
                  pb_files.add('riak/pb/{0}_pb2.py'.format(proto))
  
          for im in sorted(pb_files):
              with open(im, 'r', buffering=1) as pbfile:
                  contents = 'from six import *\n' + pbfile.read()
                  contents = re.sub(r'riak_pb2',
                                    r'riak.pb.riak_pb2',
                                    contents)
              # Look for this pattern in the protoc-generated file:
              #
              # class RpbCounterGetResp(_message.Message):
              #    __metaclass__ = _reflection.GeneratedProtocolMessageType
              #
              # and convert it to:
              #
              # @add_metaclass(_reflection.GeneratedProtocolMessageType)
              # class RpbCounterGetResp(_message.Message):
              contents = re.sub(
                  r'class\s+(\S+)\((\S+)\):\s*\n'
                  '\s+__metaclass__\s+=\s+(\S+)\s*\n',
                  r'@add_metaclass(\3)\nclass \1(\2):\n', contents)
  
              with open(im, 'w', buffering=1) as pbfile:
                  pbfile.write(contents)