docs: def parse_stat(self, buf):
          """
          `buf` is a readable file-like object
          returns a tuple: (metrics, tags, mode, version)
          """
          metrics = []
          buf.seek(0)
  
          # Check the version line to make sure we parse the rest of the
          # body correctly. Particularly, the Connections val was added in
          # >= 3.4.4.
          start_line = buf.readline()
          match = self.version_pattern.search(start_line)
          if match is None:
              return (None, None, "inactive", None)
              raise Exception("Could not parse version from stat command output: %s" % start_line)
          else:
              version = match.group()
          has_connections_val = LooseVersion(version) > LooseVersion("3.4.4")
  
          # Clients:
          buf.readline()  # skip the Clients: header
          connections = 0
          client_line = buf.readline().strip()
          if client_line:
              connections += 1
          while client_line:
              client_line = buf.readline().strip()
              if client_line:
                  connections += 1
  
          # Latency min/avg/max: -10/0/20007
          _, value = buf.readline().split(':')
          l_min, l_avg, l_max = [int(v) for v in value.strip().split('/')]
          metrics.append(ZKMetric('zookeeper.latency.min', l_min))
          metrics.append(ZKMetric('zookeeper.latency.avg', l_avg))
          metrics.append(ZKMetric('zookeeper.latency.max', l_max))
  
          # Received: 101032173
          _, value = buf.readline().split(':')
          # Fixme: This metric name is wrong. It should be removed in a major version of the agent
          # See https://github.com/DataDog/integrations-core/issues/816
          metrics.append(ZKMetric('zookeeper.bytes_received', long(value.strip())))
          metrics.append(ZKMetric('zookeeper.packets.received', long(value.strip()), "rate"))
  
          # Sent: 1324
          _, value = buf.readline().split(':')
          # Fixme: This metric name is wrong. It should be removed in a major version of the agent
          # See https://github.com/DataDog/integrations-core/issues/816
          metrics.append(ZKMetric('zookeeper.bytes_sent', long(value.strip())))
          metrics.append(ZKMetric('zookeeper.packets.sent', long(value.strip()), "rate"))
  
          if has_connections_val:
              # Connections: 1
              _, value = buf.readline().split(':')
              metrics.append(ZKMetric('zookeeper.connections', int(value.strip())))
          else:
              # If the zk version doesnt explicitly give the Connections val,
              # use the value we computed from the client list.
              metrics.append(ZKMetric('zookeeper.connections', connections))
  
          # Outstanding: 0
          _, value = buf.readline().split(':')
          metrics.append(ZKMetric('zookeeper.outstanding_requests', long(value.strip())))
  
          # Zxid: 0x1034799c7
          _, value = buf.readline().split(':')
          # Parse as a 64 bit hex int
          zxid = long(value.strip(), 16)
          # convert to bytes
          zxid_bytes = struct.pack('>q', zxid)
          # the higher order 4 bytes is the epoch
          (zxid_epoch,) = struct.unpack('>i', zxid_bytes[0:4])
          # the lower order 4 bytes is the count
          (zxid_count,) = struct.unpack('>i', zxid_bytes[4:8])
  
          metrics.append(ZKMetric('zookeeper.zxid.epoch', zxid_epoch))
          metrics.append(ZKMetric('zookeeper.zxid.count', zxid_count))
  
          # Mode: leader
          _, value = buf.readline().split(':')
          mode = value.strip().lower()
          tags = [u'mode:' + mode]
  
          # Node count: 487
          _, value = buf.readline().split(':')
          metrics.append(ZKMetric('zookeeper.nodes', long(value.strip())))
  
          return metrics, tags, mode, version