parse raw data with evaluated variables mapping. Notice: variables_mapping should not contain any variable or function.
(
raw_data: Any,
variables_mapping: VariablesMapping = None,
functions_mapping: FunctionsMapping = None,
)
| 399 | |
| 400 | |
| 401 | def parse_data( |
| 402 | raw_data: Any, |
| 403 | variables_mapping: VariablesMapping = None, |
| 404 | functions_mapping: FunctionsMapping = None, |
| 405 | ) -> Any: |
| 406 | """parse raw data with evaluated variables mapping. |
| 407 | Notice: variables_mapping should not contain any variable or function. |
| 408 | """ |
| 409 | if isinstance(raw_data, str): |
| 410 | # content in string format may contains variables and functions |
| 411 | variables_mapping = variables_mapping or {} |
| 412 | functions_mapping = functions_mapping or {} |
| 413 | # only strip whitespaces and tabs, \n\r is left because they maybe used in changeset |
| 414 | raw_data = raw_data.strip(" \t") |
| 415 | return parse_string(raw_data, variables_mapping, functions_mapping) |
| 416 | |
| 417 | elif isinstance(raw_data, (list, set, tuple)): |
| 418 | return [ |
| 419 | parse_data(item, variables_mapping, functions_mapping) for item in raw_data |
| 420 | ] |
| 421 | |
| 422 | elif isinstance(raw_data, dict): |
| 423 | parsed_data = {} |
| 424 | for key, value in raw_data.items(): |
| 425 | parsed_key = parse_data(key, variables_mapping, functions_mapping) |
| 426 | parsed_value = parse_data(value, variables_mapping, functions_mapping) |
| 427 | parsed_data[parsed_key] = parsed_value |
| 428 | |
| 429 | return parsed_data |
| 430 | |
| 431 | else: |
| 432 | # other types, e.g. None, int, float, bool |
| 433 | return raw_data |
| 434 | |
| 435 | |
| 436 | def parse_variables_mapping( |
no test coverage detected