def _vaspinput_factory(atoms, **kwargs) -> GenerateVaspInput: mocker = mock.Mock() inputs = GenerateVaspInput() inputs.set(**kwargs) inputs._build_pp_list = mocker(return_value=None) # type: ignore inputs.initialize(atoms) return inputs
def set(self, **kwargs): """Override the set function, to test for changes in the Vasp Calculator, then call the create_input.set() on remaining inputs for VASP specific keys. Allows for setting ``label``, ``directory`` and ``txt`` without resetting the results in the calculator. """ changed_parameters = {} if 'label' in kwargs: label = kwargs.pop('label') self.set_label(label) if 'directory' in kwargs: # If we explicitly set directory, overwrite the one in label. # XXX: Should we just raise an error here if clash? directory = kwargs.pop('directory') label = os.path.join(directory, self.prefix) self.set_label(label) if 'txt' in kwargs: txt = kwargs.pop('txt') self.set_txt(txt) if 'atoms' in kwargs: atoms = kwargs.pop('atoms') self.set_atoms(atoms) # Resets results if 'command' in kwargs: self.command = kwargs.pop('command') changed_parameters.update(Calculator.set(self, **kwargs)) # We might at some point add more to changed parameters, or use it if changed_parameters: self.results.clear() # We don't want to clear atoms if kwargs: # If we make any changes to Vasp input, we always reset GenerateVaspInput.set(self, **kwargs) self.results.clear()
def set(self, **kwargs): """Override the set function, to test for changes in the Vasp Calculator, then call the create_input.set() on remaining inputs for VASP specific keys. Allows for setting ``label``, ``directory`` and ``txt`` without resetting the results in the calculator. """ changed_parameters = {} if 'label' in kwargs: self.label = kwargs.pop('label') if 'directory' in kwargs: # str() call to deal with pathlib objects self.directory = str(kwargs.pop('directory')) if 'txt' in kwargs: self.txt = kwargs.pop('txt') if 'atoms' in kwargs: atoms = kwargs.pop('atoms') self.atoms = atoms # Resets results if 'command' in kwargs: self.command = kwargs.pop('command') changed_parameters.update(Calculator.set(self, **kwargs)) # We might at some point add more to changed parameters, or use it if changed_parameters: self.results.clear() # We don't want to clear atoms if kwargs: # If we make any changes to Vasp input, we always reset GenerateVaspInput.set(self, **kwargs) self.results.clear()