def METHOD_NAME(
    self,
    inputs: List[str],
    input_type: str,
    dry_run: bool,
) -> Upload_History:
    uploads_local = {}
    if input_type in self._upload_file_types:
        for file in inputs:
            # skip already uploaded files
            if file in self._uploads:
                continue
            file_ext = "owl" if "owl" in input_type else input_type
            location = self._uploader.upload(
                file_ext=file_ext, file_or_dir=file, dry_run=dry_run
            )
            # additionally add input_type info to the upload location
            # output as it may be useful in the future, e.g. some handlers
            # may need info on upload files location of a particular type
            if location.get(file) is not None:
                location_and_type = {
                    "location": location.get(file),
                    "input_type": input_type,
                }
                # this adds the upload location info to the local dict that is then
                # returned. It becomes useful if one wishes to use the upload client
                # locally
                uploads_local[file] = location_and_type
                # this adds the upload location info to the _uploads dict,
                # this dict can be set via the init_uploads_history method.
                # In a pipeline, all handlers write to the same _uploads dict
                # by calling the init_uploads_history method and passing the
                # same dict to it for all the handlers.
                self._uploads[file] = location_and_type
    return uploads_local