              self._vgg_face.init_model()
  
          # If logging is enabled, prepare container
          if self._args.log_changes:
              self.changes = dict()
  
              # Assign default sort_log.json value if user didn't specify one
              if self._args.log_file_path == 'sort_log.json':
                  self._args.log_file_path = os.path.join(self._args.input_dir,
                                                          'sort_log.json')
 
</s> remove         reference_groups = dict()
 </s> add         reference_groups = {} </s> remove                 output = "{}_{}{}".format(frame_name, str(face_idx), ".png")
 </s> add                 output = f"{frame_name}_{face_idx}.png" </s> remove         reference_groups = dict()
 </s> add         reference_groups = {} </s> remove         batch = dict()
 </s> add         batch = {} </s> remove         batch = dict()
 </s> add         batch = {}
            self.changes = {}
              self._vgg_face.init_model()
  
          # If logging is enabled, prepare container
          if self._args.log_changes:
            self.changes = {}
  
              # Assign default sort_log.json value if user didn't specify one
              if self._args.log_file_path == 'sort_log.json':
                  self._args.log_file_path = os.path.join(self._args.input_dir,
                                                          'sort_log.json')
keep keep keep keep replace keep keep keep keep keep
 lib.align updates:
  - alignments.py
    - Add typed dicts for imported alignments
    - Explicitly check for presence of thumb value in alignments dict
    - linting
  - detected_face.py
    - Typing
    - Linting
    - Legacy support for pre-aligned face
    - Update dependencies to new property names 
tools/sort/sort.py