@@ -13,7 +13,7 @@ def alert_key(alert: dict) -> tuple:
1313 return (
1414 alert ["type" ],
1515 alert ["severity" ],
16- alert [ "category" ] ,
16+ alert . get ( "category" ) ,
1717 Dedupe .normalize_file_path (alert .get ("file" )),
1818 alert .get ("start" ),
1919 alert .get ("end" )
@@ -25,7 +25,7 @@ def alert_identity(alert: dict) -> tuple:
2525 return (
2626 alert ["type" ],
2727 alert ["severity" ],
28- alert [ "category" ] ,
28+ alert . get ( "category" ) ,
2929 Dedupe .normalize_file_path (alert .get ("file" )),
3030 alert .get ("start" ),
3131 alert .get ("end" )
@@ -39,21 +39,29 @@ def alert_identity(alert: dict) -> tuple:
3939
4040 for alert in pkg .get ("alerts" , []):
4141 identity = alert_identity (alert )
42- file = Dedupe .normalize_file_path (alert .get ("file" ))
4342
4443 if identity not in alert_map :
45- alert_map [identity ] = {
44+ # Build alert dict with only fields that exist in the original alert
45+ consolidated_alert = {
4646 "key" : alert ["key" ], # keep the first key seen
4747 "type" : alert ["type" ],
4848 "severity" : alert ["severity" ],
49- "category" : alert ["category" ],
50- "file" : file ,
51- "start" : alert .get ("start" ),
52- "end" : alert .get ("end" ),
5349 "releases" : [release ],
5450 "props" : alert .get ("props" , []),
5551 "action" : alert ["action" ]
5652 }
53+
54+ # Only include optional fields if they exist in the original alert
55+ if "category" in alert :
56+ consolidated_alert ["category" ] = alert ["category" ]
57+ if "file" in alert :
58+ consolidated_alert ["file" ] = Dedupe .normalize_file_path (alert ["file" ])
59+ if "start" in alert :
60+ consolidated_alert ["start" ] = alert ["start" ]
61+ if "end" in alert :
62+ consolidated_alert ["end" ] = alert ["end" ]
63+
64+ alert_map [identity ] = consolidated_alert
5765 else :
5866 if release not in alert_map [identity ]["releases" ]:
5967 alert_map [identity ]["releases" ].append (release )
0 commit comments