code: def eigenvalue_band_properties(self):
          
          vbm = -float("inf")
          vbm_kpoint = None
          cbm = float("inf")
          cbm_kpoint = None
          for spin, d in self.eigenvalues.items():
              for k, val in enumerate(d):
                  for (eigenval, occu) in val:
                      if occu > self.occu_tol and eigenval > vbm:
                          vbm = eigenval
                          vbm_kpoint = k
                      elif occu <= self.occu_tol and eigenval < cbm:
                          cbm = eigenval
                          cbm_kpoint = k
          return max(cbm - vbm, 0), cbm, vbm, vbm_kpoint == cbm_kpoint
docs: Band properties from the eigenvalues as a tuple,
          (band gap, cbm, vbm, is_band_gap_direct).