class_docstr: Engine that executes the models sequentially.
class_docstr_tok: ["Engine","that","executes","the","models","sequentially","."]
code: def _canonicalize(self, parents):
      assert len(parents) > 0
      parent_config = parents[0]
      assert isinstance(
          parent_config, ExperimentConfig
      ), "SequentialEngineConfig must be a child of ExperimentConfig"
      if self.max_model_count is None:
          self.max_model_count = parent_config.max_trial_number
      if (
          self.max_duration is None
          and parent_config.max_trial_duration is not None
      ):
          self.max_duration = parse_time(
              parent_config.max_trial_duration
          )
      if (
          isinstance(parent_config.trial_concurrency, int)
          and parent_config.trial_concurrency > 1
      ):
          _logger.warning(
              "Sequential engine does not support trial concurrency > 1"
          )
      return super()._canonicalize(parents)
  
file_path: nni/nni/nas/experiment/config/engine.py
imports: import logging
  from dataclasses import dataclass
  from typing import Optional
  from nni.experiment.config import ExperimentConfig
  from nni.experiment.config.training_services import RemoteConfig
  from nni.experiment.config.utils import parse_time
  from .utils import NamedSubclassConfigBase
label_desc: Use image node_id 1 for calling the SequentialEngineConfig obj's underlying member method code with example usage: obj._canonicalize(parents) and returns: super