Class: Chemicalml::Convention::Compchem::Constraints::CalculationRequiresFinalization

Inherits:
Chemicalml::Convention::Constraint::NodeConstraint show all
Includes:
ModulePredicates
Defined in:
lib/chemicalml/convention/compchem/constraints/calculation_requires_finalization.rb

Overview

Co-constraint: if a calculation module is present inside a job, a finalization MUST also be present.

Instance Method Summary collapse

Methods included from ModulePredicates

#calculation_module?, #child_modules_with, #cml_module?, #compchem_root?, #environment_module?, #finalization_module?, #initialization_module?, #job_list_module?, #job_module?

Methods inherited from Chemicalml::Convention::Constraint::NodeConstraint

#check

Instance Method Details

#check_node(node, path) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
# File 'lib/chemicalml/convention/compchem/constraints/calculation_requires_finalization.rb', line 13

def check_node(node, path)

  calculations = child_modules_with(node, 'compchem:calculation')
  finalizations = child_modules_with(node, 'compchem:finalization')
  return [] if calculations.empty?
  return [] unless finalizations.empty?

  [violation(path: path.join('/'),
             message: 'job module has a calculation but no finalization ' \
                      '(finalization MUST be present when calculation is)')]
end