'True if we need to update this path from the client.
Args:
path: The path relative to the root to check freshness of.
last: An aff4:last attribute to check freshness of.
At least one of path or last must be supplied.
Returns:
True if the path hasn\'t been updated in the last
self.max_age_before_refresh seconds, else False.
Raises:
type_info.TypeValueError: If no arguments are supplied.'

def DataRefreshRequired(self, path=None, last=None):

    if (last is None):
        if (path is None):
            raise type_info.TypeValueError("Either    'path'    or    'last'    must    be    supplied    as    an    argument.")
        else:
            fd = aff4.FACTORY.Open(self.root.Add(path), token=self.token)
            stat_obj = fd.Get(fd.Schema.STAT)
            if stat_obj:
                last = stat_obj.age
            else:
                last = rdfvalue.RDFDatetime(0)
    if (last is None):
        return True
    last = last.AsDatetime()
    if ((datetime.datetime.utcnow() - last) > self.max_age_before_refresh):
        return True
    return False
