code: def pagerank_weighted(graph, initial_value=None, damping=0.85):
      
      if initial_value == None: initial_value = 1.0 / len(graph.nodes())
      scores = dict.fromkeys(graph.nodes(), initial_value)
  
      iteration_quantity = 0
      for iteration_number in range(100):
          iteration_quantity += 1
          convergence_achieved = 0
          for i in graph.nodes():
              rank = 1 - damping
              for j in graph.neighbors(i):
                  neighbors_sum = sum(graph.edge_weight((j, k)) for k in graph.neighbors(j))
                  rank += damping * scores[j] * graph.edge_weight((j, i)) / neighbors_sum
  
              if abs(scores[i] - rank) <= CONVERGENCE_THRESHOLD:
                  convergence_achieved += 1
  
              scores[i] = rank
  
          if convergence_achieved == len(graph.nodes()):
              break
  
      return scores
docs: Calculates PageRank for an undirected graph