def dirty(self):
        """ The recipe is dirty if it is flagged dirty or any extensions are
        flagged dirty """
        if self._dirty:
            return True
        else:
            for extension in self.recipe_extensions:
                if extension.dirty:
                    return True
        return False