Source code for text_machina.cli

import atexit
import os
from pathlib import Path
from typing import Optional

import typer
from typing_extensions import Annotated

from .cli_utils import _explore, _generate, generate_run_name, log_final_message
from .src.types import TaskType

os.environ["TOKENIZERS_PARALLELISM"] = "false"
app = typer.Typer()


[docs]@app.command() def explore( config_path: Annotated[ Path, typer.Option( help="The path to the YAML config or directory with YAML configs.", exists=True, file_okay=True, dir_okay=True, resolve_path=True, ), ], task_type: Annotated[TaskType, typer.Option(help="The type of task.")], metrics_path: Annotated[ Optional[Path], typer.Option( help="the path to the YAML metrics file.", exists=True, file_okay=True, dir_okay=False, resolve_path=True, ), ] = None, run_name: Annotated[ Optional[str], typer.Option( help="The name of the run. Generated automatically if none given." ), ] = None, save_dir: Annotated[ Optional[Path], typer.Option(help="The path where the exploration will be saved."), ] = None, max_generations: Annotated[ int, typer.Option( help="The maximum number of texts to generate per config." ), ] = 10, interactive: Annotated[ bool, typer.Option( help="Whether to step interactively through the generated texts" ), ] = True, ) -> None: """ Generates a small set of texts, compares it against human texts, providing metrics and an interface for manual inspection of the generations """ if not run_name: run_name = generate_run_name() if not save_dir: save_dir = Path.cwd() / run_name else: save_dir = save_dir / run_name atexit.register(log_final_message, run_name) _explore( config_path, metrics_path, save_dir, run_name, task_type, interactive, max_generations, )
[docs]@app.command() def generate( config_path: Annotated[ Path, typer.Option( help="The path to the YAML config or directory with YAML configs.", exists=True, file_okay=True, dir_okay=True, resolve_path=True, ), ], task_type: Annotated[TaskType, typer.Option(help="The type of task.")], run_name: Annotated[ Optional[str], typer.Option( help="The name of the run. Generated automatically if none given.", ), ] = None, save_dir: Annotated[ Optional[Path], typer.Option( help=("The path where the generations will be saved."), ), ] = None, ) -> None: """ Generates a dataset from the provided config or directory with configs. """ if not run_name: run_name = generate_run_name() if not save_dir: save_dir = Path.cwd() / run_name else: save_dir = save_dir / run_name atexit.register(log_final_message, run_name) _generate(config_path, save_dir, run_name, task_type)
if __name__ == "__main__": app()