          configfile = self._args.configfile if hasattr(self._args, "configfile") else None
          return PluginLoader.get_converter("writer", self._args.writer)(*args,
                                                                         configfile=configfile)
  
      def _get_frame_ranges(self) -> Optional[List[Tuple[int, int]]]:
          """ Obtain the frame ranges that are to be converted.
  
          If frame ranges have been specified, then split the command line formatted arguments into
          ranges that can be used.
  
 
</s> remove     freeze_layers=dict(
        default="keras_encoder",
        info="If the command line option 'freeze-weights' is enabled, then the layers indicated "
             "here will be frozen the next time the model starts up. NB: Not all architectures "
             "contain all of the layers listed here, so any layers marked for freezing that are "
             "not within your chosen architecture will be ignored. EG:\n If 'split fc' has "
             "been selected, then 'fc_a' and 'fc_b' are available for freezing. If it has "
             "not been selected then 'fc_both' is available for freezing.",
        datatype=list,
        choices=["encoder", "keras_encoder", "fc_a", "fc_b", "fc_both", "fc_shared", "fc_gblock",
                 "g_block_a", "g_block_b", "g_block_both", "decoder_a", "decoder_b",
                 "decoder_both"],
        group="weights",
        fixed=False),
    load_layers=dict(
        default="encoder",
        info="If the command line option 'load-weights' is populated, then the layers indicated "
             "here will be loaded from the given weights file if starting a new model. NB Not all "
             "architectures contain all of the layers listed here, so any layers marked for "
             "loading that are not within your chosen architecture will be ignored. EG:\n If "
             "'split fc' has been selected, then 'fc_a' and 'fc_b' are available for loading. If "
             "it has not been selected then 'fc_both' is available for loading.",
        datatype=list,
        choices=["encoder", "fc_a", "fc_b", "fc_both", "fc_shared", "fc_gblock", "g_block_a",
                 "g_block_b", "g_block_both", "decoder_a", "decoder_b", "decoder_both"],
        group="weights",
        fixed=True),
 </s> add     "freeze_layers": {
        "default": "keras_encoder",
        "info": (
            "If the command line option 'freeze-weights' is enabled, then the layers indicated "
            "here will be frozen the next time the model starts up. NB: Not all architectures "
            "contain all of the layers listed here, so any layers marked for freezing that are "
            "not within your chosen architecture will be ignored. EG:\n If 'split fc' has "
            "been selected, then 'fc_a' and 'fc_b' are available for freezing. If it has "
            "not been selected then 'fc_both' is available for freezing."),
        "datatype": list,
        "choices": ["encoder", "keras_encoder", "fc_a", "fc_b", "fc_both", "fc_shared",
                    "fc_gblock", "g_block_a", "g_block_b", "g_block_both", "decoder_a",
                    "decoder_b", "decoder_both"],
        "group": "weights",
        "fixed": False},
    "load_layers": {
        "default": "encoder",
        "info": (
            "If the command line option 'load-weights' is populated, then the layers indicated "
            "here will be loaded from the given weights file if starting a new model. NB Not all "
            "architectures contain all of the layers listed here, so any layers marked for "
            "loading that are not within your chosen architecture will be ignored. EG:\n If "
            "'split fc' has been selected, then 'fc_a' and 'fc_b' are available for loading. If "
            "it has not been selected then 'fc_both' is available for loading."),
        "datatype": list,
        "choices": ["encoder", "fc_a", "fc_b", "fc_both", "fc_shared", "fc_gblock", "g_block_a",
                    "g_block_b", "g_block_both", "decoder_a", "decoder_b", "decoder_both"],
        "group": "weights",
        "fixed": True}, </s> remove     def _get_detected_faces(self, filename: str, image: np.ndarray) -> List[DetectedFace]:
 </s> add     def _get_detected_faces(self, filename: str, image: np.ndarray) -> T.List[DetectedFace]: </s> remove 
 </s> add from __future__ import annotations </s> remove     def __init__(self, arguments: "Namespace") -> None:
 </s> add     def __init__(self, arguments: Namespace) -> None: </s> remove     def _queue_out_frames(self, batch: List[ConvertItem], swapped_faces: np.ndarray) -> None:
 </s> add     def _queue_out_frames(self, batch: T.List[ConvertItem], swapped_faces: np.ndarray) -> None:
    def _get_frame_ranges(self) -> T.Optional[T.List[T.Tuple[int, int]]]:
          configfile = self._args.configfile if hasattr(self._args, "configfile") else None
          return PluginLoader.get_converter("writer", self._args.writer)(*args,
                                                                         configfile=configfile)
  
    def _get_frame_ranges(self) -> T.Optional[T.List[T.Tuple[int, int]]]:
          """ Obtain the frame ranges that are to be converted.
  
          If frame ranges have been specified, then split the command line formatted arguments into
          ranges that can be used.
  
keep keep keep keep replace keep keep keep keep keep
 Remove plaidML support (#1325)

* Remove PlaidML reference from readme files

* Remove AMD option from installers

* remove amd requirements and update setup.py

* remove plaidml test from CI workflow

* gpustats: remove plaidml backend

* plaid removals:
  - faceswap.py - python version check
  - setup.cfg - plaidml typing ignore
  - lib.keras_utils - All plaid code
  - lib.launcher.py - All plaidml checks and configuration

* remove tf2.2 specific code from GUI event reader

* lib.model - remove all plaidml implementations

* plugins.extract - remove plaidml code

* plugins.train remove plaidml code

* lib.convert - remove plaidml code

* tools.model: remove plaidml code

* Remove plaidML tests from unit tests

* remove plaidml_utils and docsting cleanups

* Remove plaidML refs from configs

* fix keras imports 
scripts/convert.py