<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def set_limit(self, group, new_limit):
 """ Set a new limit on the number of tasks in the `group`. :param group: Group key of the group to modify. :type group: hashable :param new_limit: New limit for the number of tasks running in `group`. :type new_limit: non-negative :class:`int` or :data:`None` :raise ValueError: if `new_limit` is non-positive The limit of tasks for the `group` is set to `new_limit`. If there are currently more than `new_limit` tasks running in `group`, those tasks will continue to run, however, the creation of new tasks is inhibited until the group is below its limit. If the limit is set to zero, no new tasks can be spawned in the group at all. If `new_limit` is negative :class:`ValueError` is raised instead. If `new_limit` is :data:`None`, the method behaves as if :meth:`clear_limit` was called for `group`. """

        if new_limit is None:
            self._group_limits.pop(group, None)
            return

        self._group_limits[group] = new_limit