| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- from openhands.events.observation import (
- CmdOutputObservation,
- Observation,
- )
- from openhands.events.serialization import (
- event_from_dict,
- event_to_dict,
- event_to_memory,
- event_to_trajectory,
- )
- def serialization_deserialization(
- original_observation_dict, cls, max_message_chars: int = 10000
- ):
- observation_instance = event_from_dict(original_observation_dict)
- assert isinstance(
- observation_instance, Observation
- ), 'The observation instance should be an instance of Action.'
- assert isinstance(
- observation_instance, cls
- ), 'The observation instance should be an instance of CmdOutputObservation.'
- serialized_observation_dict = event_to_dict(observation_instance)
- serialized_observation_trajectory = event_to_trajectory(observation_instance)
- serialized_observation_memory = event_to_memory(
- observation_instance, max_message_chars
- )
- assert (
- serialized_observation_dict == original_observation_dict
- ), 'The serialized observation should match the original observation dict.'
- assert (
- serialized_observation_trajectory == original_observation_dict
- ), 'The serialized observation trajectory should match the original observation dict.'
- original_observation_dict.pop('message', None)
- original_observation_dict.pop('id', None)
- original_observation_dict.pop('timestamp', None)
- assert (
- serialized_observation_memory == original_observation_dict
- ), 'The serialized observation memory should match the original observation dict.'
- # Additional tests for various observation subclasses can be included here
- def test_observation_event_props_serialization_deserialization():
- original_observation_dict = {
- 'id': 42,
- 'source': 'agent',
- 'timestamp': '2021-08-01T12:00:00',
- 'observation': 'run',
- 'message': 'Command `ls -l` executed with exit code 0.',
- 'extras': {
- 'exit_code': 0,
- 'command': 'ls -l',
- 'command_id': 3,
- 'hidden': False,
- 'interpreter_details': '',
- },
- 'content': 'foo.txt',
- }
- serialization_deserialization(original_observation_dict, CmdOutputObservation)
- def test_command_output_observation_serialization_deserialization():
- original_observation_dict = {
- 'observation': 'run',
- 'extras': {
- 'exit_code': 0,
- 'command': 'ls -l',
- 'command_id': 3,
- 'hidden': False,
- 'interpreter_details': '',
- },
- 'message': 'Command `ls -l` executed with exit code 0.',
- 'content': 'foo.txt',
- }
- serialization_deserialization(original_observation_dict, CmdOutputObservation)
|