code: def from_directory(input_dir, optional_files=None):
          
          sub_d = {}
          for fname, ftype in [("INCAR", Incar), ("KPOINTS", Kpoints),
                               ("POSCAR", Poscar), ("POTCAR", Potcar)]:
              fullzpath = zpath(os.path.join(input_dir, fname))
              sub_d[fname.lower()] = ftype.from_file(fullzpath)
          sub_d["optional_files"] = {}
          if optional_files is not None:
              for fname, ftype in optional_files.items():
                  sub_d["optional_files"][fname] = \
                      ftype.from_file(os.path.join(input_dir, fname))
          return VaspInput(**sub_d)
docs: Read in a set of VASP input from a directory. Note that only the
          standard INCAR, POSCAR, POTCAR and KPOINTS files are read unless
          optional_filenames is specified.
  
          Args:
              input_dir (str): Directory to read VASP input from.
              optional_files (dict): Optional files to read in as well as a
                  dict of {filename: Object type}. Object type must have a
                  static method from_file.