def test_provide(default_model_storage: ModelStorage, default_execution_context: ExecutionContext): resource = Resource("some resource") domain = Domain.load("examples/rules/domain.yml") trackers = rasa.core.training.load_data("examples/rules/data/rules.yml", domain) policy = RulePolicy.create( RulePolicy.get_default_config(), default_model_storage, resource, default_execution_context, ) policy.train(trackers, domain) provider = RuleOnlyDataProvider.load({}, default_model_storage, resource, default_execution_context) rule_only_data = provider.provide() assert rule_only_data for key in [RULE_ONLY_SLOTS, RULE_ONLY_LOOPS]: assert rule_only_data[key] == policy.lookup[key]
def test_validate_after_adding_adding_default_parameter( get_validation_method: Callable[..., ValidationMethodType], nlu: bool, core: bool, ): # create a schema and rely on rasa to fill in defaults later schema1 = _get_example_schema() schema1.nodes["nlu-node"] = SchemaNode(needs={}, uses=WhitespaceTokenizer, constructor_name="", fn="", config={}) schema1.nodes["core-node"] = SchemaNode(needs={}, uses=RulePolicy, constructor_name="", fn="", config={}) # training validate = get_validation_method(finetuning=False, load=False, nlu=nlu, core=core, graph_schema=schema1) validate(importer=EmptyDataImporter()) # same schema -- we just explicitly pass default values schema2 = copy.deepcopy(schema1) schema2.nodes["nlu-node"] = SchemaNode( needs={}, uses=WhitespaceTokenizer, constructor_name="", fn="", config=WhitespaceTokenizer.get_default_config(), ) schema2.nodes["core-node"] = SchemaNode( needs={}, uses=RulePolicy, constructor_name="", fn="", config=RulePolicy.get_default_config(), ) # finetuning *does not raise* loaded_validate = get_validation_method(finetuning=True, load=True, nlu=nlu, core=core, graph_schema=schema2) loaded_validate(importer=EmptyDataImporter())