Beispiel #1
0
def create_argument_parser() -> argparse.ArgumentParser:
    """Parse all the command line arguments for the training script."""

    parser = argparse.ArgumentParser(
        prog="rasa",
        formatter_class=argparse.ArgumentDefaultsHelpFormatter,
        description="Rasa command line interface. Rasa allows you to build "
        "your own conversational assistants 🤖. The 'rasa' command "
        "allows you to easily run most common commands like "
        "creating a new bot, training or evaluating models.")

    parser.add_argument("--version",
                        action='store_true',
                        default=argparse.SUPPRESS,
                        help="Print installed Rasa version")

    parent_parser = argparse.ArgumentParser(add_help=False)
    add_logging_option_arguments(parent_parser)
    parent_parsers = [parent_parser]

    subparsers = parser.add_subparsers(help='Rasa commands')

    scaffold.add_subparser(subparsers, parents=parent_parsers)
    run.add_subparser(subparsers, parents=parent_parsers)
    shell.add_subparser(subparsers, parents=parent_parsers)
    train.add_subparser(subparsers, parents=parent_parsers)
    interactive.add_subparser(subparsers, parents=parent_parsers)
    test.add_subparser(subparsers, parents=parent_parsers)
    show.add_subparser(subparsers, parents=parent_parsers)
    data.add_subparser(subparsers, parents=parent_parsers)
    up.add_subparser(subparsers, parents=parent_parsers)

    return parser
Beispiel #2
0
def test_train_data_in_project_dir(monkeypatch: MonkeyPatch, tmp_path: Path):
    """Test cache directory placement.

    Tests cache directories for training data are in project root, not
    where `rasa init` is run.
    """
    # We would like to test CLI but can't run it with popen because we want
    # to be able to monkeypatch it. Solution is to call functions inside CLI
    # module. Initial project folder should have been created before
    # `init_project`, that's what we do here.
    monkeypatch.chdir(tmp_path)
    new_project_folder_path = tmp_path / "new-project-folder"
    new_project_folder_path.mkdir()

    # Simulate CLI run arguments.
    parser = argparse.ArgumentParser()
    subparsers = parser.add_subparsers()
    scaffold.add_subparser(subparsers, parents=[])

    args = parser.parse_args([
        "init",
        "--no-prompt",
    ])

    # Simple config which should train fast.
    def mock_get_config(*args):
        return {
            "language": "en",
            "pipeline": [{
                "name": "KeywordIntentClassifier"
            }],
            "policies": [{
                "name": "RulePolicy"
            }],
            "recipe": "default.v1",
        }

    monkeypatch.setattr(
        "rasa.shared.importers.importer.CombinedDataImporter.get_config",
        mock_get_config,
    )
    # Cache dir is auto patched to be a temp directory, this makes it
    # go back to local project folder so we can test it is created correctly.
    with enable_cache(Path(".rasa", "cache")):
        mock_stdin([])
        scaffold.init_project(args, str(new_project_folder_path))
    assert os.getcwd() == str(new_project_folder_path)
    assert os.path.exists(".rasa/cache")
Beispiel #3
0
def create_argument_parser() -> argparse.ArgumentParser:
    """Parse all the command line arguments for the training script."""

    parser = argparse.ArgumentParser(
        prog="rasa",
        formatter_class=argparse.ArgumentDefaultsHelpFormatter,
        description="Rasa command line interface. Rasa allows you to build "
        "your own conversational assistants 🤖. The 'rasa' command "
        "allows you to easily run most common commands like "
        "creating a new bot, training or evaluating models.",
    )

    parser.add_argument(
        "--version",
        action="store_true",
        default=argparse.SUPPRESS,
        help="Print installed Rasa version",
    )

    parent_parser = argparse.ArgumentParser(add_help=False)  # 一级命令解析器
    add_logging_options(parent_parser)
    parent_parsers = [parent_parser]

    subparsers = parser.add_subparsers(help="Rasa commands")  # 二级命令解析器

    scaffold.add_subparser(subparsers, parents=parent_parsers)  # 解析rasa init
    run.add_subparser(subparsers, parents=parent_parsers)  # 解析rasa run
    shell.add_subparser(subparsers, parents=parent_parsers)  # 解析rasa shell
    train.add_subparser(subparsers, parents=parent_parsers)  # 解析 rasa train
    interactive.add_subparser(subparsers, parents=parent_parsers)  # 解析rasa interactive
    test.add_subparser(subparsers, parents=parent_parsers)  # 解析rasa test
    visualize.add_subparser(subparsers, parents=parent_parsers)  # 解析rasa visualize
    data.add_subparser(subparsers, parents=parent_parsers)  # 解析rasa data
    x.add_subparser(subparsers, parents=parent_parsers)  # 解析rasa x

    return parser