@@ -108,6 +108,24 @@ def update_pyproject_dependencies(dependencies: list, schedule: Dict[str, str]):
108108 dependencies [i ] = new_dep_str
109109
110110
111+ def iter_pep_dependency_lists (pyproject_data : dict , project_data : dict ):
112+ dependencies = project_data .get ("dependencies" )
113+ if isinstance (dependencies , list ):
114+ yield dependencies
115+
116+ optional_dependencies = project_data .get ("optional-dependencies" , {})
117+ if isinstance (optional_dependencies , dict ):
118+ for dependencies in optional_dependencies .values ():
119+ if isinstance (dependencies , list ):
120+ yield dependencies
121+
122+ dependency_groups = pyproject_data .get ("dependency-groups" , {})
123+ if isinstance (dependency_groups , dict ):
124+ for dependencies in dependency_groups .values ():
125+ if isinstance (dependencies , list ):
126+ yield dependencies
127+
128+
111129def update_dependency_table (dep_table : dict , new_versions : dict ):
112130 for pkg , pkg_data in dep_table .items ():
113131 schedule_key = canonicalize_name (pkg )
@@ -119,7 +137,10 @@ def update_dependency_table(dep_table: dict, new_versions: dict):
119137 if not is_url_spec (pkg_data ):
120138 spec = parse_version_spec (pkg_data )
121139 new_lower_bound = Version (new_versions [schedule_key ])
122- spec = tighten_lower_bound (spec , new_lower_bound )
140+ try :
141+ spec = tighten_lower_bound (spec , new_lower_bound )
142+ except ValueError :
143+ continue
123144 dep_table [pkg ] = repr_spec_set (spec )
124145 else :
125146 # We don't do anything with url spec dependencies
@@ -131,7 +152,10 @@ def update_dependency_table(dep_table: dict, new_versions: dict):
131152 continue
132153 spec = parse_version_spec (pkg_data ["version" ])
133154 new_lower_bound = Version (new_versions [schedule_key ])
134- spec = tighten_lower_bound (spec , new_lower_bound )
155+ try :
156+ spec = tighten_lower_bound (spec , new_lower_bound )
157+ except ValueError :
158+ continue
135159 pkg_data ["version" ] = repr_spec_set (spec )
136160
137161
@@ -188,42 +212,25 @@ def update_pyproject_toml(
188212 python_spec = parse_version_spec (new_version ["python" ])
189213 project_data ["requires-python" ] = repr_spec_set (python_spec )
190214
191- dependencies = project_data .get ("dependencies" )
192- if isinstance (dependencies , list ):
215+ for dependencies in iter_pep_dependency_lists (pyproject_data , project_data ):
193216 update_pyproject_dependencies (dependencies , new_version )
194217
195- optional_dependencies = project_data .get ("optional-dependencies" , {})
196- if isinstance (optional_dependencies , dict ):
197- for dependencies in optional_dependencies .values ():
198- if isinstance (dependencies , list ):
199- update_pyproject_dependencies (dependencies , new_version )
200-
201- dependency_groups = pyproject_data .get ("dependency-groups" , {})
202- if isinstance (dependency_groups , dict ):
203- for dependencies in dependency_groups .values ():
204- if isinstance (dependencies , list ):
205- update_pyproject_dependencies (dependencies , new_version )
206-
207218 if "tool" in pyproject_data and "pixi" in pyproject_data ["tool" ]:
208219 pixi_data = pyproject_data ["tool" ]["pixi" ]
209220 update_pixi_dependencies (pixi_data , new_version )
210221 if update_all is not None :
211- deps = project_data .get ("dependencies" , [])
212- for i , dep_str in enumerate (deps ):
213- if not isinstance (dep_str , str ):
214- continue
215- pkg , extras , spec , env = parse_pep_dependency (dep_str )
216- if (
217- canonicalize_name (pkg ) in new_version
218- or isinstance (spec , Url )
219- or spec is None
220- ):
221- continue
222- min_ver = _get_oldest_version_in_window (pkg , update_all )
223- if min_ver is None :
224- continue
225- try :
226- updated = tighten_lower_bound (spec , min_ver )
227- deps [i ] = f"{ pkg } { extras or '' } { repr_spec_set (updated )} { env or '' } "
228- except ValueError :
229- continue
222+ for deps in iter_pep_dependency_lists (pyproject_data , project_data ):
223+ for i , dep_str in enumerate (deps ):
224+ if not isinstance (dep_str , str ):
225+ continue
226+ pkg , extras , spec , env = parse_pep_dependency (dep_str )
227+ if canonicalize_name (pkg ) in new_version or isinstance (spec , Url ):
228+ continue
229+ min_ver = _get_oldest_version_in_window (pkg , update_all )
230+ if min_ver is None :
231+ continue
232+ try :
233+ updated = tighten_lower_bound (spec or SpecifierSet (), min_ver )
234+ deps [i ] = f"{ pkg } { extras or '' } { repr_spec_set (updated )} { env or '' } "
235+ except ValueError :
236+ continue
0 commit comments