|
"""Module to convert json file to jsonl""" |
|
|
|
import os |
|
import sys |
|
from pathlib import Path |
|
from typing import Optional, Union |
|
|
|
import fire |
|
|
|
from axolotl.convert import ( |
|
FileReader, |
|
FileWriter, |
|
JsonlSerializer, |
|
JsonParser, |
|
JsonToJsonlConverter, |
|
StdoutWriter, |
|
) |
|
|
|
|
|
project_root = os.path.abspath(os.path.join(os.path.dirname(__file__), "..")) |
|
src_dir = os.path.join(project_root, "src") |
|
sys.path.insert(0, src_dir) |
|
|
|
|
|
def main( |
|
file: Path, |
|
output: Optional[Path] = None, |
|
to_stdout: Optional[bool] = False, |
|
): |
|
""" |
|
Convert a json file to jsonl |
|
""" |
|
|
|
file_reader = FileReader() |
|
writer: Union[StdoutWriter, FileWriter] |
|
if to_stdout or output is None: |
|
writer = StdoutWriter() |
|
else: |
|
writer = FileWriter(output) |
|
json_parser = JsonParser() |
|
jsonl_serializer = JsonlSerializer() |
|
|
|
converter = JsonToJsonlConverter(file_reader, writer, json_parser, jsonl_serializer) |
|
|
|
converter.convert(file, output) |
|
|
|
|
|
if __name__ == "__main__": |
|
fire.Fire(main) |
|
|