code: def _log_band_edge_information(bs, edge_data):
      
      if bs.is_spin_polarized:
          spins = edge_data['band_index'].keys()
          b_indices = [', '.join([str(i+1) for i in
                                  edge_data['band_index'][spin]])
                       + '({})'.format(spin.name.capitalize()) for spin in spins]
          b_indices = ', '.join(b_indices)
      else:
          b_indices = ', '.join([str(i+1) for i in
                                 edge_data['band_index'][Spin.up]])
  
      kpoint = edge_data['kpoint']
      kpoint_str = kpt_str.format(k=kpoint.frac_coords)
      k_indices = ', '.join(map(str, edge_data['kpoint_index']))
  
      if kpoint.label:
          k_loc = kpoint.label
      else:
          branch = bs.get_branch(edge_data['kpoint_index'][0])[0]
          k_loc = 'between {}'.format(branch['name'])
  
      logging.info('  Energy: {:.3f} eV'.format(edge_data['energy']))
      logging.info('  k-point: {}'.format(kpoint_str))
      logging.info('  k-point location: {}'.format(k_loc))
      logging.info('  k-point indices: {}'.format(k_indices))
      logging.info('  Band indices: {}'.format(b_indices))
docs: Log data about the valence band maximum or conduction band minimum.
  
      Args:
          bs (:obj:`~pymatgen.electronic_structure.bandstructure.BandStructureSymmLine`):
              The band structure.
          edge_data (dict): The :obj:`dict` from ``bs.get_vbm()`` or
              ``bs.get_cbm()``