code: def read_ppdesc(self, filename):
          
          if filename.endswith(".xml"):
              raise self.Error("XML pseudo not supported yet")
  
          else:
              # Assume file with the abinit header.
              lines = _read_nlines(filename, 80)
  
              for lineno, line in enumerate(lines):
  
                  if lineno == 2:
                      try:
                          tokens = line.split()
                          pspcod, pspxc = map(int, tokens[:2])
                      except:
                          msg = "%s: Cannot parse pspcod, pspxc in line\n %s" % (filename, line)
                          logger.critical(msg)
                          return None
  
                      #if tokens[-1].strip().replace(" ","") not in ["pspcod,pspxc,lmax,lloc,mmax,r2well",
                      #                              "pspcod,pspxc,lmax,llocal,mmax,r2well"]:
                      #    raise self.Error("%s: Invalid line\n %s"  % (filename, line))
                      #    return None
  
                      if pspcod not in self._PSPCODES:
                          raise self.Error("%s: Don't know how to handle pspcod %s\n" % (filename, pspcod))
  
                      ppdesc = self._PSPCODES[pspcod]
  
                      if pspcod == 7:
                          # PAW -> need to know the format pspfmt
                          tokens = lines[lineno+1].split()
                          pspfmt, creatorID = tokens[:2]
                          #if tokens[-1].strip() != "pspfmt,creatorID":
                          #    raise self.Error("%s: Invalid line\n %s" % (filename, line))
                          #    return None
  
                          ppdesc = ppdesc._replace(format = pspfmt)
  
                      return ppdesc
  
              return None
docs: Read the pseudopotential descriptor from file filename.
  
          Returns:
              Pseudopotential descriptor. None if filename is not a valid pseudopotential file.
  
          Raises:
              `PseudoParserError` if fileformat is not supported.