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
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")
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