# custodian package

Custodian is a simple, robust and flexible just-in-time (JIT) job management framework written in Python.

## Subpackages

- custodian.ansible package

  - Subpackages

    - custodian.ansible.tests package

            * [custodian.ansible.tests.test_interpreter module](custodian.ansible.tests.test_interpreter.md)

    - custodian.ansible.actions module

      - `DictActions`

        - `DictActions.add_to_set()`

        - `DictActions.inc()`

        - `DictActions.pop()`

        - `DictActions.pull()`

        - `DictActions.pull_all()`

        - `DictActions.push()`

        - `DictActions.push_all()`

        - `DictActions.rename()`

        - `DictActions.set()`

        - `DictActions.unset()`

      - `FileActions`

        - `FileActions.file_copy()`

        - `FileActions.file_create()`

        - `FileActions.file_delete()`

        - `FileActions.file_modify()`

        - `FileActions.file_move()`

      - `get_nested_dict()`

    - custodian.ansible.interpreter module

      - `Modder`

        - `Modder.modify()`

        - `Modder.modify_object()`

- custodian.cli package

        * [custodian.cli.converge_geometry module](custodian.cli.converge_geometry.md)

            * [`do_run()`](custodian.cli.converge_geometry.md#custodian.cli.converge_geometry.do_run)

            * [`get_runs()`](custodian.cli.converge_geometry.md#custodian.cli.converge_geometry.get_runs)

        * [custodian.cli.converge_kpoints module](custodian.cli.converge_kpoints.md)

            * [`do_run()`](custodian.cli.converge_kpoints.md#custodian.cli.converge_kpoints.do_run)

            * [`get_runs()`](custodian.cli.converge_kpoints.md#custodian.cli.converge_kpoints.get_runs)

            * [`main()`](custodian.cli.converge_kpoints.md#custodian.cli.converge_kpoints.main)

        * [custodian.cli.cstdn module](custodian.cli.cstdn.md)

            * [`main()`](custodian.cli.cstdn.md#custodian.cli.cstdn.main)

            * [`print_example()`](custodian.cli.cstdn.md#custodian.cli.cstdn.print_example)

            * [`run()`](custodian.cli.cstdn.md#custodian.cli.cstdn.run)

        * [custodian.cli.run_nwchem module](custodian.cli.run_nwchem.md)

            * [`do_run()`](custodian.cli.run_nwchem.md#custodian.cli.run_nwchem.do_run)

            * [`main()`](custodian.cli.run_nwchem.md#custodian.cli.run_nwchem.main)

        * [custodian.cli.run_vasp module](custodian.cli.run_vasp.md)

            * [`do_run()`](custodian.cli.run_vasp.md#custodian.cli.run_vasp.do_run)

            * [`get_jobs()`](custodian.cli.run_vasp.md#custodian.cli.run_vasp.get_jobs)

            * [`load_class()`](custodian.cli.run_vasp.md#custodian.cli.run_vasp.load_class)

            * [`main()`](custodian.cli.run_vasp.md#custodian.cli.run_vasp.main)

- custodian.cp2k package

  - Subpackages

    - custodian.cp2k.tests package

            * [custodian.cp2k.tests.test_handlers module](custodian.cp2k.tests.test_handlers.md)

            * [custodian.cp2k.tests.test_jobs module](custodian.cp2k.tests.test_jobs.md)

    - custodian.cp2k.handlers module

    - custodian.cp2k.interpreter module

      - `Cp2kModder`

        - `Cp2kModder.apply_actions()`

    - custodian.cp2k.jobs module

      - `Cp2kJob`

        - `Cp2kJob.double_job()`

        - `Cp2kJob.gga_static_to_hybrid()`

        - `Cp2kJob.postprocess()`

        - `Cp2kJob.pre_screen_hybrid()`

        - `Cp2kJob.run()`

        - `Cp2kJob.setup()`

        - `Cp2kJob.terminate()`

    - custodian.cp2k.utils module

      - `activate_diag()`

      - `activate_ot()`

      - `can_use_ot()`

      - `cleanup_input()`

      - `get_conv()`

      - `restart()`

      - `tail()`

    - custodian.cp2k.validators module

      - `Cp2kOutputValidator`

        - `Cp2kOutputValidator.check()`

        - `Cp2kOutputValidator.exit`

        - `Cp2kOutputValidator.kill`

        - `Cp2kOutputValidator.no_children`

      - `Cp2kValidator`

        - `Cp2kValidator.check()`

        - `Cp2kValidator.exit`

        - `Cp2kValidator.kill`

        - `Cp2kValidator.no_children`

- custodian.feff package

  - Subpackages

    - custodian.feff.tests package

            * [custodian.feff.tests.test_handler module](custodian.feff.tests.test_handler.md)

            * [custodian.feff.tests.test_jobs module](custodian.feff.tests.test_jobs.md)

    - custodian.feff.handlers module

      - `UnconvergedErrorHandler`

        - `UnconvergedErrorHandler.check()`

        - `UnconvergedErrorHandler.correct()`

        - `UnconvergedErrorHandler.is_monitor`

    - custodian.feff.interpreter module

      - `FeffModder`

        - `FeffModder.apply_actions()`

    - custodian.feff.jobs module

      - `FeffJob`

        - `FeffJob.postprocess()`

        - `FeffJob.run()`

        - `FeffJob.setup()`

- custodian.lobster package

  - Subpackages

    - custodian.lobster.tests package

            * [custodian.lobster.tests.test_handlers module](custodian.lobster.tests.test_handlers.md)

            * [custodian.lobster.tests.test_jobs module](custodian.lobster.tests.test_jobs.md)

    - custodian.lobster.handlers module

      - `ChargeSpillingValidator`

        - `ChargeSpillingValidator.check()`

      - `EnoughBandsValidator`

        - `EnoughBandsValidator.check()`

      - `LobsterFilesValidator`

        - `LobsterFilesValidator.check()`

    - custodian.lobster.jobs module

      - `LobsterJob`

        - `LobsterJob.postprocess()`

        - `LobsterJob.run()`

        - `LobsterJob.setup()`

- custodian.nwchem package

  - Subpackages

    - custodian.nwchem.tests package

            * [custodian.nwchem.tests.test_handlers module](custodian.nwchem.tests.test_handlers.md)

    - custodian.nwchem.handlers module

      - `NwchemErrorHandler`

        - `NwchemErrorHandler.check()`

        - `NwchemErrorHandler.correct()`

    - custodian.nwchem.jobs module

      - `NwchemJob`

        - `NwchemJob.postprocess()`

        - `NwchemJob.run()`

        - `NwchemJob.setup()`

- custodian.qchem package

  - Subpackages

    - custodian.qchem.tests package

            * [custodian.qchem.tests.test_handlers module](custodian.qchem.tests.test_handlers.md)

            * [custodian.qchem.tests.test_job_handler_interaction module](custodian.qchem.tests.test_job_handler_interaction.md)

            * [custodian.qchem.tests.test_jobs module](custodian.qchem.tests.test_jobs.md)

    - custodian.qchem.handlers module

    - custodian.qchem.jobs module

    - custodian.qchem.utils module

      - `perturb_coordinates()`

      - `vector_list_diff()`

- custodian.vasp package

  - Subpackages

    - custodian.vasp.tests package

            * [custodian.vasp.tests.conftest module](custodian.vasp.tests.conftest.md)

            * [custodian.vasp.tests.test_handlers module](custodian.vasp.tests.test_handlers.md)

            * [custodian.vasp.tests.test_jobs module](custodian.vasp.tests.test_jobs.md)

            * [custodian.vasp.tests.test_validators module](custodian.vasp.tests.test_validators.md)

    - custodian.vasp.handlers module

      - `AliasingErrorHandler`

        - `AliasingErrorHandler.check()`

        - `AliasingErrorHandler.correct()`

        - `AliasingErrorHandler.error_msgs`

        - `AliasingErrorHandler.is_monitor`

      - `CheckpointHandler`

        - `CheckpointHandler.check()`

        - `CheckpointHandler.correct()`

        - `CheckpointHandler.is_monitor`

        - `CheckpointHandler.is_terminating`

      - `DriftErrorHandler`

        - `DriftErrorHandler.check()`

        - `DriftErrorHandler.correct()`

      - `FrozenJobErrorHandler`

        - `FrozenJobErrorHandler.check()`

        - `FrozenJobErrorHandler.correct()`

        - `FrozenJobErrorHandler.is_monitor`

      - `IncorrectSmearingHandler`

        - `IncorrectSmearingHandler.check()`

        - `IncorrectSmearingHandler.correct()`

        - `IncorrectSmearingHandler.is_monitor`

      - `LargeSigmaHandler`

        - `LargeSigmaHandler.check()`

        - `LargeSigmaHandler.correct()`

        - `LargeSigmaHandler.is_monitor`

      - `LrfCommutatorHandler`

        - `LrfCommutatorHandler.check()`

        - `LrfCommutatorHandler.correct()`

        - `LrfCommutatorHandler.error_msgs`

        - `LrfCommutatorHandler.is_monitor`

      - `MeshSymmetryErrorHandler`

        - `MeshSymmetryErrorHandler.check()`

        - `MeshSymmetryErrorHandler.correct()`

        - `MeshSymmetryErrorHandler.is_monitor`

      - `NonConvergingErrorHandler`

        - `NonConvergingErrorHandler.check()`

        - `NonConvergingErrorHandler.correct()`

        - `NonConvergingErrorHandler.from_dict()`

        - `NonConvergingErrorHandler.is_monitor`

      - `PositiveEnergyErrorHandler`

        - `PositiveEnergyErrorHandler.check()`

        - `PositiveEnergyErrorHandler.correct()`

        - `PositiveEnergyErrorHandler.is_monitor`

      - `PotimErrorHandler`

        - `PotimErrorHandler.check()`

        - `PotimErrorHandler.correct()`

        - `PotimErrorHandler.is_monitor`

      - `ScanMetalHandler`

        - `ScanMetalHandler.check()`

        - `ScanMetalHandler.correct()`

        - `ScanMetalHandler.is_monitor`

      - `StdErrHandler`

        - `StdErrHandler.check()`

        - `StdErrHandler.correct()`

        - `StdErrHandler.error_msgs`

        - `StdErrHandler.is_monitor`

      - `StoppedRunHandler`

        - `StoppedRunHandler.check()`

        - `StoppedRunHandler.correct()`

        - `StoppedRunHandler.is_monitor`

        - `StoppedRunHandler.is_terminating`

      - `UnconvergedErrorHandler`

        - `UnconvergedErrorHandler.check()`

        - `UnconvergedErrorHandler.correct()`

        - `UnconvergedErrorHandler.is_monitor`

      - `VaspErrorHandler`

        - `VaspErrorHandler.check()`

        - `VaspErrorHandler.correct()`

        - `VaspErrorHandler.error_msgs`

        - `VaspErrorHandler.is_monitor`

      - `WalltimeHandler`

        - `WalltimeHandler.check()`

        - `WalltimeHandler.correct()`

        - `WalltimeHandler.is_monitor`

        - `WalltimeHandler.is_terminating`

        - `WalltimeHandler.raises_runtime_error`

    - custodian.vasp.interpreter module

      - `VaspModder`

        - `VaspModder.apply_actions()`

    - custodian.vasp.jobs module

      - `GenerateVaspInputJob`

        - `GenerateVaspInputJob.postprocess()`

        - `GenerateVaspInputJob.run()`

        - `GenerateVaspInputJob.setup()`

      - `VaspJob`

        - `VaspJob.constrained_opt_run()`

        - `VaspJob.double_relaxation_run()`

        - `VaspJob.full_opt_run()`

        - `VaspJob.metagga_opt_run()`

        - `VaspJob.postprocess()`

        - `VaspJob.run()`

        - `VaspJob.setup()`

        - `VaspJob.terminate()`

      - `VaspNEBJob`

        - `VaspNEBJob.postprocess()`

        - `VaspNEBJob.run()`

        - `VaspNEBJob.setup()`

    - custodian.vasp.validators module

      - `VaspAECCARValidator`

        - `VaspAECCARValidator.check()`

      - `VaspFilesValidator`

        - `VaspFilesValidator.check()`

      - `VaspNpTMDValidator`

        - `VaspNpTMDValidator.check()`

      - `VasprunXMLValidator`

        - `VasprunXMLValidator.check()`

      - `check_broken_chgcar()`

- custodian.custodian module

  - `Custodian`

    - `Custodian.LOG_FILE`

    - `Custodian.from_spec()`

    - `Custodian.run()`

    - `Custodian.run_interrupted()`

  - `CustodianError`

  - `ErrorHandler`

    - `ErrorHandler.check()`

    - `ErrorHandler.correct()`

    - `ErrorHandler.is_monitor`

    - `ErrorHandler.is_terminating`

    - `ErrorHandler.max_num_corrections`

    - `ErrorHandler.n_applied_corrections`

    - `ErrorHandler.raise_on_max`

    - `ErrorHandler.raises_runtime_error`

  - `Job`

    - `Job.name`

    - `Job.postprocess()`

    - `Job.run()`

    - `Job.setup()`

    - `Job.terminate()`

  - `MaxCorrectionsError`

  - `MaxCorrectionsPerHandlerError`

  - `MaxCorrectionsPerJobError`

  - `NonRecoverableError`

  - `ReturnCodeError`

  - `ValidationError`

  - `Validator`

    - `Validator.check()`

- custodian.utils module

  - `backup()`

  - `get_execution_host_info()`