@@ -117,22 +117,34 @@ def main() -> None:
117117 continue
118118
119119 installed_date = next ((d for v , d in releases if v == installed_ver ), None )
120- if installed_date is None or installed_date <= grace_cutoff :
121- continue
122-
120+
121+ # Get the safe version (passed grace period)
123122 safe_ver , safe_date = _get_safe_version (releases )
123+
124+ # If no safe version exists, skip
124125 if safe_ver is None :
126+ continue
127+
128+ # If installed version is within grace period, downgrade to safe version
129+ if installed_date is not None and installed_date > grace_cutoff :
125130 print (
126- f"[grace-period] { pkg } == { installed_ver } (released { installed_date } ) "
127- f"is within grace period but no safe version exists — skipping "
131+ f"[grace-period] { pkg } : { installed_ver } (released { installed_date } ) "
132+ f"→ pinning to { safe_ver } (released { safe_date } ) "
128133 )
129- continue
130-
131- print (
132- f"[grace-period] { pkg } : { installed_ver } (released { installed_date } ) "
133- f"→ pinning to { safe_ver } (released { safe_date } )"
134- )
135- to_pin .append (f"{ pkg } =={ safe_ver } " )
134+ to_pin .append (f"{ pkg } =={ safe_ver } " )
135+ # If installed version is older than safe version, upgrade to safe version
136+ elif installed_ver != safe_ver :
137+ try :
138+ from packaging .version import Version
139+ if Version (installed_ver ) < Version (safe_ver ):
140+ print (
141+ f"[upgrade] { pkg } : { installed_ver } → { safe_ver } "
142+ f"(safe version available, grace period passed)"
143+ )
144+ to_pin .append (f"{ pkg } =={ safe_ver } " )
145+ except Exception :
146+ # If version comparison fails, skip
147+ pass
136148
137149 if to_pin :
138150 print (f"\n Pinning { len (to_pin )} package(s) to grace-period-safe versions..." )
0 commit comments