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']