@@ -214,6 +214,28 @@ def _integrate_tau_channels(histogram, channels):
214214 return histogram .integrate ("channel" , channels )[{"channel" : sum }]
215215
216216
217+ def _extend_unique (target , values ):
218+ """Append values to target while preserving order and avoiding duplicates."""
219+
220+ if not values :
221+ return target
222+
223+ for value in values :
224+ if value not in target :
225+ target .append (value )
226+ return target
227+
228+
229+ def _prune_tokens (target , forbidden ):
230+ """Return a list excluding forbidden tokens while preserving order."""
231+
232+ if not forbidden :
233+ return list (target )
234+
235+ forbidden_set = set (forbidden )
236+ return [token for token in target if token not in forbidden_set ]
237+
238+
217239def _resolve_year_filters (year_args ):
218240 """Normalise CLI year arguments and build per-sample filter lists."""
219241
@@ -248,26 +270,18 @@ def _resolve_year_filters(year_args):
248270 rules = YEAR_TOKEN_RULES [cleaned ]
249271
250272 mc_wl_values = rules .get ("mc_wl" , [])
251- for value in mc_wl_values :
252- if value not in mc_wl :
253- mc_wl .append (value )
254- mc_bl = [value for value in mc_bl if value not in mc_wl_values ]
273+ _extend_unique (mc_wl , mc_wl_values )
274+ mc_bl = _prune_tokens (mc_bl , mc_wl_values )
255275
256276 mc_bl_values = rules .get ("mc_bl" , [])
257- for value in mc_bl_values :
258- if value not in mc_bl :
259- mc_bl .append (value )
277+ _extend_unique (mc_bl , mc_bl_values )
260278
261279 data_wl_values = rules .get ("data_wl" , [])
262- for value in data_wl_values :
263- if value not in data_wl :
264- data_wl .append (value )
265- data_bl = [value for value in data_bl if value not in data_wl_values ]
280+ _extend_unique (data_wl , data_wl_values )
281+ data_bl = _prune_tokens (data_bl , data_wl_values )
266282
267283 data_bl_values = rules .get ("data_bl" , [])
268- for value in data_bl_values :
269- if value not in data_bl :
270- data_bl .append (value )
284+ _extend_unique (data_bl , data_bl_values )
271285
272286 normalized .append (cleaned )
273287 seen .add (cleaned )
0 commit comments