@@ -3014,30 +3014,25 @@ def norm(x):
30143014 dst_series = df [dst_col ].map (norm )
30153015 counts = df [count_col ].to_numpy ()
30163016
3017- # Local cache to avoid repeated lookups against _campus_by_number
3017+ # Precompute campus-id lookups for all observed normalized keys
30183018 id_cache : Dict [str , Optional [uuid .UUID ]] = {}
3019-
3020- def _lookup (normed : str | None ) -> Optional [uuid .UUID ]:
3021- if normed is None :
3022- return None
3023- hit = id_cache .get (normed )
3024- if hit is not None or normed in id_cache :
3025- return hit
3019+ observed_keys = set (src_series .dropna ())
3020+ observed_keys .update (dst_series .dropna ())
3021+ for normed in observed_keys :
30263022 digits = normed [1 :] if normed .startswith ("'" ) else normed
3027- cid = self ._campus_by_number .get (normed ) or self ._campus_by_number .get (
3028- digits
3029- )
3030- id_cache [normed ] = cid
3031- return cid
3023+ id_cache [normed ] = self ._campus_by_number .get (
3024+ normed
3025+ ) or self ._campus_by_number .get (digits )
30323026
3033- for src_key , dst_key , raw in zip (
3034- src_series .to_numpy (), dst_series .to_numpy (), counts
3027+ src_ids = src_series .map (id_cache ).to_numpy ()
3028+ dst_ids = dst_series .map (id_cache ).to_numpy ()
3029+
3030+ for src_key , dst_key , src_id , dst_id , raw in zip (
3031+ src_series .to_numpy (), dst_series .to_numpy (), src_ids , dst_ids , counts
30353032 ):
30363033 if not src_key or not dst_key :
30373034 continue
30383035
3039- src_id = _lookup (src_key )
3040- dst_id = _lookup (dst_key )
30413036 if src_id is None or dst_id is None :
30423037 if src_id is None and dst_id is None :
30433038 self ._xfers_missing ["either" ] = (
@@ -3072,9 +3067,6 @@ def _sort_key(edge):
30723067
30733068 for k in list (self ._xfers_in .keys ()):
30743069 # for transfers_in sort by the incoming count, same logic
3075- from_id , cnt , _ = (
3076- self ._xfers_in [k ][0 ] if self ._xfers_in [k ] else (None , None , None )
3077- )
30783070 self ._xfers_in [k ].sort (
30793071 key = lambda ed : (
30803072 - (ed [1 ] or - 1 ),
0 commit comments