          logger.debug("Initializing: %s", __class__.__name__)
          self._images: Dict[str, "np.ndarray"] = {}
          self._lock = Lock()
          self._updated = Event()
          logger.debug("Initialized: %s", __class__.__name__)
  
      @property
      def is_updated(self) -> bool:
          """ bool: ``True`` when new images have been loaded into the  preview buffer """
          return self._updated.is_set()
 
</s> remove     def __init__(self):
        logger.debug("Initializing: %s", __class__.__name__)
 </s> add     def __init__(self) -> None:
        logger.debug("Initializing: %s", self.__class__.__name__) </s> remove         reader = imageio.get_reader(self._source_video, "ffmpeg")
 </s> add         reader = imageio.get_reader(self._source_video, "ffmpeg")  # type:ignore[arg-type] </s> remove         seen: dict[str, list[int]] = {}
 </s> add         seen: Dict[str, List[int]] = {} </s> remove         self._changes = {}
 </s> add         self._changes: Dict[str, str] = {} </s> remove [mypy-pyparsing.*]  # Remove this when fixed https://github.com/pyparsing/pyparsing/issues/385
follow_imports = skip
ignore_missing_imports = True
 </s> add 
        logger.debug("Initialized: %s", self.__class__.__name__)
          logger.debug("Initializing: %s", __class__.__name__)
          self._images: Dict[str, "np.ndarray"] = {}
          self._lock = Lock()
          self._updated = Event()
        logger.debug("Initialized: %s", self.__class__.__name__)
  
      @property
      def is_updated(self) -> bool:
          """ bool: ``True`` when new images have been loaded into the  preview buffer """
          return self._updated.is_set()
keep keep keep keep replace keep keep keep keep keep
 tests:
  - unit test: tools.alignments.media
  - Add mypy test
  - Typing fixes 
lib/training/preview_cv.py