def _get_validated_dict(json_str: Text) -> Dict[Text, Text]: """Converts the provided json_str to a valid dict containing the entity attributes. Users can specify entity roles, synonyms, groups for an entity in a dict, e.g. [LA]{"entity": "city", "role": "to", "value": "Los Angeles"} Args: json_str: the entity dict as string without "{}" Raises: ValidationError if validation of entity dict fails. JSONDecodeError if provided entity dict is not valid json. Returns: a proper python dict """ import json import rasa.shared.utils.validation as validation_utils import rasa.shared.nlu.training_data.schemas.data_schema as schema # add {} as they are not part of the regex try: data = json.loads(f"{{{json_str}}}") except JSONDecodeError as e: rasa.shared.utils.io.raise_warning( f"Incorrect training data format ('{{{json_str}}}'), make sure your " f"data is valid. For more information about the format visit " f"{LEGACY_DOCS_BASE_URL}/nlu/training-data-format/.") raise e validation_utils.validate_training_data(data, schema.entity_dict_schema()) return data
def get_validated_dict(json_str: Text) -> Dict[Text, Text]: """Converts the provided `json_str` to a valid dict containing the entity attributes. Users can specify entity roles, synonyms, groups for an entity in a dict, e.g. [LA]{"entity": "city", "role": "to", "value": "Los Angeles"}. Args: json_str: The entity dict as string without "{}". Raises: ValidationError if validation of entity dict fails. JSONDecodeError if provided entity dict is not valid json. Returns: Deserialized and validated `json_str`. """ import json import rasa.shared.utils.validation as validation_utils import rasa.shared.nlu.training_data.schemas.data_schema as schema # add {} as they are not part of the regex try: data = json.loads(f"{{{json_str}}}") except JSONDecodeError as e: rasa.shared.utils.io.raise_warning( f"Incorrect training data format ('{{{json_str}}}'). Make sure your " f"data is valid.", docs=DOCS_URL_TRAINING_DATA_NLU, ) raise e validation_utils.validate_training_data(data, schema.entity_dict_schema()) return data
def test_entity_dict_is_valid(data): validation_utils.validate_training_data(data, schema.entity_dict_schema())
def test_validate_entity_dict_is_throwing_exceptions(invalid_data): with pytest.raises(SchemaValidationError): validation_utils.validate_training_data(invalid_data, schema.entity_dict_schema())