code: def sorted_filetype_items(self):
          processed_types = []
          file_type_items = deque(self.config['file_types'].items())
          while len(file_type_items):
              filetype, filetype_info = file_type_items.popleft()
              requirements = filetype_info.get('requires')
              if requirements is not None:
                  missing = [req for req in requirements
                             if req not in processed_types]
                  if missing:
                      file_type_items.append((filetype, filetype_info))
                      continue
              processed_types.append(filetype)
              yield filetype, filetype_info