code: def get_nn_info(self, structure, n):
          
  
          site = structure[n]
  
          # Determine relevant bond lengths based on atomic radii table
          bonds = {}
          for el in structure.composition.elements:
              bonds[site.specie, el] = self.get_max_bond_distance(
                  site.specie.symbol, el.symbol)
  
          # Search for neighbors up to max bond length + tolerance
          max_rad = max(bonds.values()) + self.tol
          min_rad = min(bonds.values())
  
          siw = []
          for neighb, dist in structure.get_neighbors(site, max_rad):
              # Confirm neighbor based on bond length specific to atom pair
              if dist <= (bonds[(site.specie, neighb.specie)]) and (
                      dist > self.min_bond_distance):
                  weight = min_rad / dist
                  siw.append({'site': neighb,
                              'image': self._get_image(structure, neighb),
                              'weight': weight,
                              'site_index': self._get_original_site(structure,
                                                                    neighb)})
          return siw
docs: Get all near-neighbor sites as well as the associated image locations
          and weights of the site with index n using the bond identification
          algorithm underlying Jmol.
  
          Args:
              structure (Structure): input structure.
              n (integer): index of site for which to determine near
                  neighbors.
   
          Returns:
              siw (list of tuples (Site, array, float)): tuples, each one
                  of which represents a neighbor site, its image location,
                  and its weight.