code: def _auto_set_energy_range(self):
          
          emins = [min([e_k[0] for e_k in self._bs.bands[Spin.up]])]
          emaxs = [max([e_k[0] for e_k in self._bs.bands[Spin.up]])]
  
          if self._bs.is_spin_polarized:
              emins.append(min([e_k[0] for e_k in
                                self._bs.bands[Spin.down]]))
  
              emaxs.append(max([e_k[0] for e_k in
                                self._bs.bands[Spin.down]]))
  
          min_eigenval = Energy(min(emins) - self._bs.efermi, "eV"). \
              to("Ry")
          max_eigenval = Energy(max(emaxs) - self._bs.efermi, "eV"). \
              to("Ry")
  
          # set energy range to buffer around min/max EV
          # buffer does not increase CPU time but will help get equal
          # energies for spin up/down for band structure
          const = Energy(2, "eV").to("Ry")
          self._ll = min_eigenval - const
          self._hl = max_eigenval + const
  
          en_range = Energy(max((abs(self._ll), abs(self._hl))),
                            "Ry").to("eV")
  
          self.energy_span_around_fermi = en_range * 1.01
          print("energy_span_around_fermi = ",
                self.energy_span_around_fermi)
docs: automatically determine the energy range as min/max eigenvalue
          minus/plus the buffer_in_ev