          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
          self.output_dimensions = None
  
          # Methods for making sure frames are written out in frame order
          self.re_search = re.compile(r"(\d+)(?=\.\w+$)")  # Identify frame numbers
          self.cache = dict()  # Cache for when frames must be written in correct order
          logger.debug("Initialized %s", self.__class__.__name__)
 
</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 </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     """ Parent class for scaling adjustments """
    def __init__(self, output_folder, configfile=None):
 </s> add     """ 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: </s> remove     def is_stream(self):
        """ Return whether the writer is a stream or images
            Writers that write to a stream have a frame_order paramater to dictate
            the order in which frames should be written out (eg. gif/ffmpeg) """
 </s> add     def is_stream(self) -> bool:
        """ bool: Whether the writer outputs a stream or a series images.

        Writers that write to a stream have a frame_order paramater to dictate
        the order in which frames should be written out (eg. gif/ffmpeg) """ </s> remove     def output_filename(self, filename):
        """ Return the output filename with the correct folder and extension
            NB: The plugin must have a config item 'format' that contains the
                file extension to use this method """
 </s> add     def output_filename(self, filename: str) -> str:
        """ Obtain the full path for the output file, including the correct extension, for the
        given input filename.

        NB: The plugin must have a config item 'format' that contains the file extension to use
        this method.

        Parameters
        ----------
        filename: str
            The input frame filename to generate the output file name for

        Returns
        -------
        str
            The full path for the output converted frame to be saved to.
        """
        self.output_folder: str = output_folder
          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: str = output_folder
        self.output_folder: str = output_folder
  
          # Methods for making sure frames are written out in frame order
          self.re_search = re.compile(r"(\d+)(?=\.\w+$)")  # Identify frame numbers
          self.cache = dict()  # Cache for when frames must be written in correct order
          logger.debug("Initialized %s", self.__class__.__name__)
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