docs: def resolve_variables(self, task):
          """
          Resolve task variables based on input variables and the default
          values.
  
          Raises
          ------
          LookupError
              If a variable is missing.
          """
  
          variables = {**task.variables, **self.project.variables}
  
          values = {}
  
          for variable in variables.values():
              value = self.variables.get(variable.name) or variable.default
              if value is None:
                  raise LookupError(variable)
              values[variable.name] = value
  
          return values