def METHOD_NAME(
    fs,
    input_file: GTFSScheduleFeedFile,
    gtfs_filename: str,
) -> GTFSScheduleParseOutcome:
    logging.info(f"Processing {input_file.path}")
    field_names = None
    lines = []
    try:
        with fs.open(input_file.path, newline="", mode="r", encoding="utf-8-sig") as f:
            reader = csv.DictReader(f, restkey="calitp_unknown_fields")
            field_names = reader.fieldnames
            for line_number, row in enumerate(reader, start=1):
                row["_line_number"] = line_number
                lines.append(row)
        jsonl_content = gzip.compress(
            "\n".join(json.dumps(line) for line in lines).encode()
        )
        jsonl_file = GTFSScheduleFeedJSONL(
            ts=input_file.ts,
            extract_config=input_file.extract_config,
            filename=gtfs_filename + ".jsonl.gz",
            gtfs_filename=gtfs_filename,
        )
        jsonl_file.save_content(content=jsonl_content, fs=fs)
    except Exception as e:
        logging.warn(f"Can't process {input_file.path}: {e}")
        return GTFSScheduleParseOutcome(
            success=False,
            exception=e,
            feed_file=input_file,
            fields=field_names,
        )
    logging.info(f"Parsed {input_file.path}")
    return GTFSScheduleParseOutcome(
        success=True,
        feed_file=input_file,
        fields=field_names,
        parsed_file=jsonl_file,
    )