          """
          for thread in self._threads:
              thread.check_and_raise_error()
  
      def rollover_collector(self, queue: "Queue") -> Union[Literal["EOF"], ExtractMedia]:
          """ For extractors after the Detectors, the number of detected faces per frame vs extractor
          batch size mean that faces will need to be split/re-joined with frames. The rollover
          collector can be used to rollover items that don't fit in a batch.
  
          Collect the item from the :attr:`_rollover` dict or from the queue. Add face count per
 
</s> remove     def add_skip_list(self, skip_list: List[int]) -> None:
 </s> add     def add_skip_list(self, skip_list: list[int]) -> None: </s> remove     def changeable_items(self) -> Dict[str, ConfigValueType]:
 </s> add     def changeable_items(self) -> dict[str, ConfigValueType]: </s> remove     def _queue_out_frames(self, batch: T.List[ConvertItem], swapped_faces: np.ndarray) -> None:
 </s> add     def _queue_out_frames(self, batch: list[ConvertItem], swapped_faces: np.ndarray) -> None: </s> remove         self._faces_per_filename: Dict[str, int] = {}  # Tracking for recompiling batches
        self._rollover: Optional[ExtractMedia] = None  # batch rollover items
        self._output_faces: List["DetectedFace"] = []  # Recompiled output faces from plugin
 </s> add         self._faces_per_filename: dict[str, int] = {}  # Tracking for recompiling batches
        self._rollover: ExtractMedia | None = None  # batch rollover items
        self._output_faces: list[DetectedFace] = []  # Recompiled output faces from plugin </s> remove     def to_install(self) -> List[Tuple[str, List[Tuple[str, str]]]]:
 </s> add     def to_install(self) -> list[tuple[str, list[tuple[str, str]]]]:
    def rollover_collector(self, queue: Queue) -> T.Literal["EOF"] | ExtractMedia:
          """
          for thread in self._threads:
              thread.check_and_raise_error()
  
    def rollover_collector(self, queue: Queue) -> T.Literal["EOF"] | ExtractMedia:
          """ For extractors after the Detectors, the number of detected faces per frame vs extractor
          batch size mean that faces will need to be split/re-joined with frames. The rollover
          collector can be used to rollover items that don't fit in a batch.
  
          Collect the item from the :attr:`_rollover` dict or from the queue. Add face count per
keep keep keep keep replace keep keep keep keep keep
 Rebase code (#1326)

* Remove tensorflow_probability requirement

* setup.py - fix progress bars

* requirements.txt: Remove pre python 3.9 packages

* update apple requirements.txt

* update INSTALL.md

* Remove python<3.9 code

* setup.py - fix Windows Installer

* typing: python3.9 compliant

* Update pytest and readthedocs python versions

* typing fixes

* Python Version updates
  - Reduce max version to 3.10
  - Default to 3.10 in installers
  - Remove incompatible 3.11 tests

* Update dependencies

* Downgrade imageio dep for Windows

* typing: merge optional unions and fixes

* Updates
  - min python version 3.10
  - typing to python 3.10 spec
  - remove pre-tf2.10 code
  - Add conda tests

* train: re-enable optimizer saving

* Update dockerfiles

* Update setup.py
  - Apple Conda deps to setup.py
  - Better Cuda + dependency handling

* bugfix: Patch logging to prevent Autograph errors

* Update dockerfiles

* Setup.py - Setup.py - stdout to utf-8

* Add more OSes to github Actions

* suppress mac-os end to end test 
plugins/extract/_base.py