@@ -182,7 +182,6 @@ def get_modified_pipfile_entries(project, pipfile_categories):
182
182
Returns a dict mapping categories to sets of modified package names.
183
183
"""
184
184
modified = defaultdict (set )
185
-
186
185
lockfile = project .lockfile ()
187
186
188
187
for pipfile_category in pipfile_categories :
@@ -191,38 +190,43 @@ def get_modified_pipfile_entries(project, pipfile_categories):
191
190
locked_packages = lockfile .get (lockfile_category , {})
192
191
193
192
for package_name , pipfile_entry in pipfile_packages .items ():
194
- # Check if package exists in lockfile
195
193
if package_name not in locked_packages :
196
194
modified [lockfile_category ].add (package_name )
197
195
continue
198
196
199
197
locked_entry = locked_packages .get (package_name )
198
+ if not locked_entry :
199
+ modified [lockfile_category ].add (package_name )
200
+ continue
201
+
200
202
# Compare version specs
201
203
pipfile_version = (
202
204
str (pipfile_entry )
203
205
if isinstance (pipfile_entry , str )
204
206
else pipfile_entry .get ("version" )
205
207
)
206
- if locked_entry :
207
- locked_version = locked_entry .get ("version" , "" )
208
- # We might want to eventually improve this check to consider full constraints but for now ...
209
- if pipfile_version == locked_version :
210
- continue
211
- modified [lockfile_category ].add (package_name )
212
- else : # Hasn't been added to lock yet
213
- modified [lockfile_category ].add (package_name )
208
+ if locked_version := locked_entry .get ("version" , "" ):
209
+ if pipfile_version != locked_version :
210
+ modified [lockfile_category ].add (package_name )
214
211
215
- # Handle VCS/path dependencies
216
- vcs_keys = ["ref" , "subdirectory" ]
217
- vcs_keys .extend (VCS_LIST )
218
- has_vcs_changed = any (
219
- pipfile_entry .get (key ) != locked_entry .get (key )
220
- for key in vcs_keys
221
- if isinstance (pipfile_entry , dict ) and key in pipfile_entry
222
- )
212
+ # Compare extras
213
+ if isinstance (pipfile_entry , dict ) and "extras" in pipfile_entry :
214
+ pipfile_extras = set (pipfile_entry ["extras" ])
215
+ locked_extras = set (locked_entry .get ("extras" , []))
216
+ if pipfile_extras != locked_extras :
217
+ modified [lockfile_category ].add (package_name )
223
218
224
- if has_vcs_changed :
225
- modified [lockfile_category ].add (package_name )
219
+ # Handle VCS/path dependencies
220
+ if isinstance (pipfile_entry , dict ):
221
+ vcs_keys = ["ref" , "subdirectory" ]
222
+ vcs_keys .extend (VCS_LIST )
223
+ has_vcs_changed = any (
224
+ pipfile_entry .get (key ) != locked_entry .get (key )
225
+ for key in vcs_keys
226
+ if key in pipfile_entry
227
+ )
228
+ if has_vcs_changed :
229
+ modified [lockfile_category ].add (package_name )
226
230
227
231
return modified
228
232
0 commit comments