Source code for finesse.analysis.actions.folder

"""Folder Action."""

from finesse.solutions import BaseSolution
from .base import Action


# IMPORTANT: renaming this class impacts the katscript spec and should be avoided!
[docs]class Folder(Action): """A Folder action collects a new solution every time the action is called. An example of this is the 'post step' for the `xaxis`. A folder action is made called `post_step` and is passed to a function which will `do` it multiple times. After each step the specificed action is called and its solution will be added to the folder. """ def __init__(self, name, action, solution): super().__init__(name) self.action = action self.folder_solution = BaseSolution(name) solution.add(self.folder_solution) def _do(self, state): sol = state.apply(self.action) if sol: self.folder_solution.add(sol) def _requests(self, model, memo, first=True): return self.action._requests(model, memo)