<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def end_task_type(self, task_type_str):
 """Call when processing of all tasks of the given type is completed, typically just after exiting a loop that processes many tasks of the given type. Progress messages logged at intervals will typically not include the final entry which shows that processing is 100% complete, so a final progress message is logged here. """

        assert (
            task_type_str in self._task_dict
        ), "Task type has not been started yet: {}".format(task_type_str)
        self._log_progress()
        del self._task_dict[task_type_str]