def recorder_add_process_decoder_value_event(
decoder: Decoder,
event_id: str,
mapping_name: str | None = None,
) -> None:
processed_mapping = {}
for key, value in decoder.mapping.items():
if isinstance(value, (str, int, float)):
processed_mapping[key] = value
if isinstance(value, type):
processed_mapping[key] = value.__name__
else:
processed_mapping[key] = value.__class__.__name__
Recorder.add_event(
Event(
id=event_id,
object_name=decoder.__class__.__name__,
callable_name=f'Processing "{mapping_name}" Mapping' if mapping_name else 'Processing Mapping',
type=EventType.OTHER,
attributes=[
EventAttribute(
key='Mapping Key Description',
value=decoder.mapping_keys_description,
),
EventAttribute(
key='Mapping',
value=processed_mapping,
),
]
)
)