      return Config(plugin_name, configfile=configfile).config_dict
  
  
  class Output():
      """ Parent class for scaling adjustments """
      def __init__(self, output_folder, configfile=None):
          logger.debug("Initializing %s: (output_folder: '%s')",
                       self.__class__.__name__, output_folder)
          self.config = get_config(".".join(self.__module__.split(".")[-2:]), configfile=configfile)
          logger.debug("config: %s", self.config)
          self.output_folder = output_folder
 
</s> remove         self.config = get_config(".".join(self.__module__.split(".")[-2:]), configfile=configfile)
 </s> add         self.config: dict = get_config(".".join(self.__module__.split(".")[-2:]),
                                       configfile=configfile) </s> remove         self.output_folder = output_folder
        self.output_dimensions = None
 </s> add         self.output_folder: str = output_folder </s> remove def get_config(plugin_name, configfile=None):
    """ Return the config for the requested model """
 </s> add def get_config(plugin_name: str, configfile: Optional[str] = None) -> dict:
    """ Obtain the configuration settings for the writer plugin.

    Parameters
    ----------
    plugin_name: str
        The name of the convert plugin to return configuration settings for
    configfile: str, optional
        The full path to a custom configuration ini file. If ``None`` is passed
        then the file is loaded from the default location. Default: ``None``.

    Returns
    -------
    dict
        The requested configuration dictionary
    """ </s> remove     """ Video output writer using imageio """
    def __init__(self, output_folder, total_count, frame_ranges, source_video, **kwargs):
 </s> add     """ Video output writer using imageio-ffmpeg.

    Parameters
    ----------
    output_folder: str
        The folder to save the output video to
    total_count: int
        The total number of frames to be converted
    frame_ranges: list or ``None``
        List of integers for any explicit frame ranges to be converted or ``None`` if all frames
        are to be converted
    source_video: str
        The full path to the source video for obtaining fps and audio
    kwargs: dict
        Any additional standard :class:`plugins.convert.writer._base.Output` key word arguments.
    """
    def __init__(self,
                 output_folder: str,
                 total_count: int,
                 frame_ranges: Optional[List[int]],
                 source_video: str,
                 **kwargs) -> None: </s> remove         self.re_search = re.compile(r"(\d+)(?=\.\w+$)")  # Identify frame numbers
        self.cache = dict()  # Cache for when frames must be written in correct order
 </s> add         self.re_search: re.Pattern = re.compile(r"(\d+)(?=\.\w+$)")  # Identify frame numbers
        self.cache: dict = {}  # Cache for when frames must be written in correct order
    """ Parent class for writer plugins.

    Parameters
    ----------
    output_folder: str
        The full path to the output folder where the converted media should be saved
    configfile: str, optional
        The full path to a custom configuration ini file. If ``None`` is passed
        then the file is loaded from the default location. Default: ``None``.
    """
    def __init__(self, output_folder: str, configfile: Optional[str] = None) -> None:
      return Config(plugin_name, configfile=configfile).config_dict
  
  
  class Output():
    """ Parent class for writer plugins.

    Parameters
    ----------
    output_folder: str
        The full path to the output folder where the converted media should be saved
    configfile: str, optional
        The full path to a custom configuration ini file. If ``None`` is passed
        then the file is loaded from the default location. Default: ``None``.
    """
    def __init__(self, output_folder: str, configfile: Optional[str] = None) -> None:
    """ Parent class for writer plugins.

    Parameters
    ----------
    output_folder: str
        The full path to the output folder where the converted media should be saved
    configfile: str, optional
        The full path to a custom configuration ini file. If ``None`` is passed
        then the file is loaded from the default location. Default: ``None``.
    """
    def __init__(self, output_folder: str, configfile: Optional[str] = None) -> None:
          logger.debug("Initializing %s: (output_folder: '%s')",
                       self.__class__.__name__, output_folder)
          self.config = get_config(".".join(self.__module__.split(".")[-2:]), configfile=configfile)
          logger.debug("config: %s", self.config)
          self.output_folder = output_folder
keep keep keep keep replace replace keep keep keep keep keep
 ffmpeg writer: Create new filename if output pre-exists 
plugins/convert/writer/_base.py