`Pipeline.print_steps()` calls `steps_to_string(self.steps)`, but `Pipeline.init` only ever sets `self.settings` and `self.stepnames` - there is no `self.steps` attribute, so this raises `AttributeError` if ever called. Currently unused anywhere in the codebase (no CLI/test/notebook calls it), which is presumably why this hasn't been noticed.
Fix: use `self.settings['steps']` instead.
`Pipeline.print_steps()` calls `steps_to_string(self.steps)`, but `Pipeline.init` only ever sets `self.settings` and `self.stepnames` - there is no `self.steps` attribute, so this raises `AttributeError` if ever called. Currently unused anywhere in the codebase (no CLI/test/notebook calls it), which is presumably why this hasn't been noticed.
Fix: use `self.settings['steps']` instead.