This function is called when we specify the task dependencies with the syntax:

            deps={node: "@property"}

        In this case the task has to the get `property` from `node` before starting the calculation.

        At present, the following properties are supported:

            - @structure

def apply_getters(self, task):
        """
        This function is called when we specify the task dependencies with the syntax:

            deps={node: "@property"}

        In this case the task has to the get `property` from `node` before starting the calculation.

        At present, the following properties are supported:

            - @structure
        """
        if not self.getters: return

        for getter in self.getters:
            if getter == "@structure":
                task.history.info("Getting structure from %s" % self.node)
                new_structure = self.node.get_final_structure()
                task._change_structure(new_structure)
            else:
                raise ValueError("Wrong getter %s" % getter)