def reads(self, string: Text, **kwargs: Any) -> "TrainingData": """Reads TrainingData in YAML format from a string. Args: string: String with YAML training data. **kwargs: Keyword arguments. Returns: New `TrainingData` object with parsed training data. """ self.validate(string) yaml_content = rasa.shared.utils.io.read_yaml(string) if not validation.validate_training_data_format_version( yaml_content, self.filename): return TrainingData() for key, value in yaml_content.items(): if key == KEY_NLU: self._parse_nlu(value) elif key == KEY_RESPONSES: self.responses = value return TrainingData( self.training_examples, self.entity_synonyms, self.regex_features, self.lookup_tables, self.responses, )
async def test_invalid_training_data_format_version_warns(): invalid_version_1 = {KEY_TRAINING_DATA_FORMAT_VERSION: 2.0} invalid_version_2 = {KEY_TRAINING_DATA_FORMAT_VERSION: "Rasa"} for version in [invalid_version_1, invalid_version_2]: with pytest.warns(UserWarning): assert validation_utils.validate_training_data_format_version(version, "")
async def test_future_training_data_format_version_not_compatible(): next_minor = str(Version(LATEST_TRAINING_DATA_FORMAT_VERSION).next_minor()) incompatible_version = {KEY_TRAINING_DATA_FORMAT_VERSION: next_minor} with pytest.warns(UserWarning): assert not validation_utils.validate_training_data_format_version( incompatible_version, "")
async def test_compatible_training_data_format_version(): prev_major = str(Version("1.0")) compatible_version_1 = {KEY_TRAINING_DATA_FORMAT_VERSION: prev_major} compatible_version_2 = { KEY_TRAINING_DATA_FORMAT_VERSION: LATEST_TRAINING_DATA_FORMAT_VERSION } for version in [compatible_version_1, compatible_version_2]: with pytest.warns(None): assert validation_utils.validate_training_data_format_version(version, "")
def from_yaml(cls, yaml: Text, original_filename: Text = "") -> "Domain": try: validate_yaml_schema(yaml, DOMAIN_SCHEMA_FILE) except InvalidYamlFileError as e: raise InvalidDomain(str(e)) data = rasa.shared.utils.io.read_yaml(yaml) if not validate_training_data_format_version(data, original_filename): return Domain.empty() return cls.from_dict(data)
def read_from_dict(self, yaml_content: Dict, **kwargs: Any) -> "TrainingData": if not validation.validate_training_data_format_version( yaml_content, self.filename ): return TrainingData() for key, value in yaml_content.items(): if key == KEY_NLU: self._parse_nlu(value) elif key == KEY_RESPONSES: self.responses = value return TrainingData( self.training_examples, self.entity_synonyms, self.regex_features, self.lookup_tables, self.responses, )