fmeval.data_loaders.jmespath_util
1import jmespath 2import logging 3from typing import Any, List, Dict, Union, Optional 4from jmespath.exceptions import JMESPathError 5from jmespath.parser import ParsedResult 6from fmeval.exceptions import EvalAlgorithmClientError 7 8logger = logging.getLogger(__name__) 9 10 11def compile_jmespath(jmespath_expression: str): 12 """ 13 Compiles a JMESPath expression to be used for JSON data. 14 """ 15 try: 16 return jmespath.compile(jmespath_expression) 17 except (TypeError, JMESPathError) as e: 18 raise EvalAlgorithmClientError(f"Unable to compile JMESPath {jmespath_expression}") from e 19 20 21def search_jmespath( 22 jmespath_parser: ParsedResult, 23 jmespath_query_type: str, 24 dataset: Union[Dict, List], 25 dataset_name: str, 26) -> Optional[List[Any]]: 27 """Searches a dataset using a JMESPath query. 28 29 :param jmespath_parser: The JMESPath parser, used for parsing model inputs, model outputs, 30 target outputs, or categories. 31 :param jmespath_query_type: Used for error logging. Will always be the `name` attribute 32 of a fmeval.constants.DatasetColumns enumeration. 33 :param dataset: The data to be searched, already deserialized into a dict/list. 34 :param dataset_name: A name associated with the dataset being parsed for logging purposes. 35 :returns: The result of executing the JMESPath query on the dataset. 36 """ 37 try: 38 result = jmespath_parser.search(dataset) 39 if result is None: 40 logger.warning( 41 f"Failed to find {jmespath_query_type} columns in dataset `{dataset_name}` using JMESPath " 42 f"query '{jmespath_parser.expression}'." 43 ) 44 return result 45 except ValueError: 46 logger.warning( 47 f"Failed to find {jmespath_query_type} columns in dataset `{dataset_name}` using JMESPath query " 48 f"'{jmespath_parser.expression}'." 49 ) 50 return None
logger =
<Logger fmeval.data_loaders.jmespath_util (INFO)>
def
compile_jmespath(jmespath_expression: str):
12def compile_jmespath(jmespath_expression: str): 13 """ 14 Compiles a JMESPath expression to be used for JSON data. 15 """ 16 try: 17 return jmespath.compile(jmespath_expression) 18 except (TypeError, JMESPathError) as e: 19 raise EvalAlgorithmClientError(f"Unable to compile JMESPath {jmespath_expression}") from e
Compiles a JMESPath expression to be used for JSON data.
def
search_jmespath( jmespath_parser: jmespath.parser.ParsedResult, jmespath_query_type: str, dataset: Union[Dict, List], dataset_name: str) -> Optional[List[Any]]:
22def search_jmespath( 23 jmespath_parser: ParsedResult, 24 jmespath_query_type: str, 25 dataset: Union[Dict, List], 26 dataset_name: str, 27) -> Optional[List[Any]]: 28 """Searches a dataset using a JMESPath query. 29 30 :param jmespath_parser: The JMESPath parser, used for parsing model inputs, model outputs, 31 target outputs, or categories. 32 :param jmespath_query_type: Used for error logging. Will always be the `name` attribute 33 of a fmeval.constants.DatasetColumns enumeration. 34 :param dataset: The data to be searched, already deserialized into a dict/list. 35 :param dataset_name: A name associated with the dataset being parsed for logging purposes. 36 :returns: The result of executing the JMESPath query on the dataset. 37 """ 38 try: 39 result = jmespath_parser.search(dataset) 40 if result is None: 41 logger.warning( 42 f"Failed to find {jmespath_query_type} columns in dataset `{dataset_name}` using JMESPath " 43 f"query '{jmespath_parser.expression}'." 44 ) 45 return result 46 except ValueError: 47 logger.warning( 48 f"Failed to find {jmespath_query_type} columns in dataset `{dataset_name}` using JMESPath query " 49 f"'{jmespath_parser.expression}'." 50 ) 51 return None
Searches a dataset using a JMESPath query.
Parameters
- jmespath_parser: The JMESPath parser, used for parsing model inputs, model outputs, target outputs, or categories.
- jmespath_query_type: Used for error logging. Will always be the
name
attribute of a fmeval.constants.DatasetColumns enumeration. - dataset: The data to be searched, already deserialized into a dict/list.
- dataset_name: A name associated with the dataset being parsed for logging purposes. :returns: The result of executing the JMESPath query on the dataset.