class_docstr: Implement a ketama compatible consistent hashing ring.
docstr: Calculate the weight factor of the given node and
  yield its hash key for every configured replica.
  
  :param node_name: the node name.
code: def _hashi_weight_generator(self, node_name, node_conf):
      """Calculate the weight factor of the given node and
      yield its hash key for every configured replica.
  
      :param node_name: the node name.
      """
      ks = (
          node_conf["vnodes"] * len(self._nodes) * node_conf["weight"]
      ) // self._weight_sum
      for w in range(0, ks):
          w_node_name = f"{node_name}-{w}"
          for i in range(0, self._replicas):
              yield self.hashi(w_node_name, replica=i)
  
file_path: mars/mars/lib/uhashring/ring_ketama.py
imports: from bisect import insort
  from collections import Counter
  from hashlib import md5
  from sys import version_info
label_desc: Use image node_id 3 for calling the KetamaRing obj's underlying member method code with example usage: obj._hashi_weight_generator(node_name, node_conf) without return types