Coverage for lobster/tools/trlc/item_wrapper.py: 91%

21 statements  

« prev     ^ index     » next       coverage.py v7.10.7, created at 2025-09-30 04:59 +0000

1from typing import Any 

2from trlc import ast 

3from lobster.tools.trlc.errors import RecordObjectComponentError 

4 

5 

6class ItemWrapper: 

7 def __init__(self, n_obj: ast.Record_Object): 

8 self._n_obj = n_obj 

9 self._item_data = n_obj.to_python_dict() 

10 

11 def get_field(self, field_name: str) -> Any: 

12 try: 

13 return self._item_data[field_name] 

14 except KeyError as ex: 

15 raise RecordObjectComponentError(field_name, self._n_obj) from ex 

16 

17 def get_field_raw(self, field_name: str) -> Any: 

18 """Returns the raw TRLC representation of the field.""" 

19 try: 

20 return self._n_obj.field[field_name] 

21 except KeyError as ex: 

22 raise RecordObjectComponentError(field_name, self._n_obj) from ex 

23 

24 def get_field_value_or_none(self, field_name: str) -> Any: 

25 if field := self._n_obj.field.get(field_name, None): 

26 return field.to_python_object() 

27 return None