docs: 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