docs: def synchronize_step_names(
          project: 'projects.Project',
          insert_index: int = None
  ) -> Response:
      """
      :param project:
      :param insert_index:
      """
  
      response = Response()
      response.returned = dict()
  
      if not project.naming_scheme:
          return response
  
      create_mapper_func = functools.partial(
          create_rename_entry,
          insertion_index=insert_index
      )
  
      step_renames = list([create_mapper_func(s) for s in project.steps])
      step_renames = list(filter(lambda sr: (sr is not None), step_renames))
  
      if not step_renames:
          return response
  
      try:
          backup_path = create_backup(project)
      except Exception as err:
          return response.fail(
              code='RENAME_BACKUP_ERROR',
              message='Unable to create backup name',
              error=err
          ).response
  
      try:
          step_renames = list([stash_source(sr) for sr in step_renames])
          step_renames = list([unstash_source(sr) for sr in step_renames])
      except Exception as err:
          return response.fail(
              code='RENAME_FILE_ERROR',
              message='Unable to rename files',
              error=err
          ).response
  
      response.returned = update_steps(project, step_renames)
      project.save()
  
      try:
          os.remove(backup_path)
      except PermissionError:
          pass
  
      return response