Data Parser
Mission Data Parsing and Normalization Utilities
Note
Core functionalities include: - Mission plan construction from raw input data - Command structure normalization and organization - Vehicle-specific data extraction and typing - Feedback data standardization
- data_parser.parse_mission(mission_id: int, mission_data: dict, mission_logger: Logger) dict[source]
Constructs structured vehicle mission plans from raw mission data.
- Parameters:
mission_id – Unique identifier for the current mission
mission_data – Raw mission structure containing tasks, commands and vehicles
mission_logger – Configured logger instance for mission operations
- Returns:
- {vehicle_id: {
task_id: {**task_data, ‘commands’: {command_id: command_data}}}
}
- Return type:
Nested dictionary structure
- Raises:
KeyError – If required data fields are missing in input structures
ValueError – If invalid data formats are detected
Example
mission_data = { 'tasks': [...], 'commands': [...], 'vehicles': [...] } plans = parse_mission(123, mission_data, logger)
- data_parser.obtain_commands_per_vehicle(mission_id: int, vehicle_id: int, plan: dict, mission_logger: Logger) dict[source]
Flattens command hierarchy into vehicle-specific command dictionary.
- Parameters:
mission_id – Current mission identifier
vehicle_id – Target vehicle identifier
plan – Vehicle’s mission plan structure from parse_mission()
mission_logger – Configured logging instance
- Returns:
{command_id: {command_data}}
- Return type:
Dictionary mapping command IDs to full command specifications
- Raises:
KeyError – If command structure violates expected format
- data_parser.commands_to_list(mission_id: int, commands: dict, mission_logger: Logger) list[source]
Serializes command dictionary to string list representation.
- Parameters:
mission_id – Current mission identifier
commands – Command dictionary from obtain_commands_per_vehicle()
mission_logger – Configured logging instance
- Returns:
List of string representations for each command
Note
Maintains command insertion order based on dictionary ordering
- data_parser.obtain_type_of_vehicle(mission_id: int, vehicle_id: int, mission_data: dict, mission_logger: Logger) str[source]
Identifies vehicle type from mission configuration data.
- Parameters:
mission_id – Current mission identifier
vehicle_id – Target vehicle identifier
mission_data – Original mission data structure
mission_logger – Configured logging instance
- Returns:
Vehicle type string if found, None otherwise
Example
vehicle_type = obtain_type_of_vehicle(123, 456, mission_data, logger)
- data_parser.parse_feedback_data(mission_id: int, vehicle_id: int, drone_result, mission_logger: Logger) list[source]
Normalizes diverse feedback formats into standardized list structure.
- Parameters:
mission_id – Current mission identifier
vehicle_id – Source vehicle identifier
raw_data – Input data from vehicle (JSON string or raw format)
mission_logger – Configured logging instance
- Returns:
JSON objects are parsed and wrapped in list
Strings are preserved in list
Invalid JSON treated as raw strings
- Return type:
List containing normalized feedback items
- Raises:
json.JSONDecodeError – For malformed JSON with detailed logging
Example
>>> parse_feedback_data(123, 456, '{"status": "ok"}', logger) [{'status': 'ok'}] >>> parse_feedback_data(123, 456, "plain text", logger) ['plain text']