code: def ephemerals_info(self, hosts):
          
          info_by_path, info_by_id = {}, {}
  
          for server_endpoint, dump in self.dump_by_server(hosts).items():
              server_ip, server_port = server_endpoint
              sid = None
              for line in dump.split("\n"):
                  mat = self.SESSION_REGEX.match(line)
                  if mat:
                      sid = mat.group(1)
                      continue
  
                  mat = self.PATH_REGEX.match(line)
                  if mat:
                      info = info_by_id.get(sid, None)
                      if info is None:
                          info = info_by_id[sid] = ClientInfo(sid)
                      info_by_path[mat.group(1)] = info
                      continue
  
                  mat = self.IP_PORT_REGEX.match(line)
                  if mat:
                      ip, port, sid = mat.groups()
                      if sid not in info_by_id:
                          continue
                      info_by_id[sid](ip, int(port), server_ip, server_port)
  
          return info_by_path
docs: Returns ClientInfo per path.
  
          :param hosts: comma separated lists of members of the ZK ensemble.
          :returns: A dictionary of (path, ClientInfo).