@@ -209,9 +209,9 @@ def parse_with_dparse(location):
209209 return
210210 file_name = fileutils .file_name (location )
211211
212- file_name = get_dependency_type (file_name )
212+ dependency_type = get_dependency_type (file_name )
213213
214- if file_name not in (filetypes .requirements_txt ,
214+ if dependency_type not in (filetypes .requirements_txt ,
215215 filetypes .conda_yml ,
216216 filetypes .tox_ini ,
217217 filetypes .pipfile ,
@@ -223,31 +223,43 @@ def parse_with_dparse(location):
223223 mode = 'r'
224224 with open (location , mode ) as f :
225225 content = f .read ()
226- df = dparse .parse (content , file_type = file_name )
227- df_dependencies = df .dependencies
228- if not df_dependencies :
229- return
230- package_dependencies = []
231- for df_dependency in df_dependencies :
232- specs = df_dependency .specs
233- is_resolved = False
234- requirement = None
235- if specs :
236- requirement = str (specs )
237- if '==' in requirement :
238- is_resolved = True
239- package_dependencies .append (
240- models .DependentPackage (
241- purl = PackageURL (
242- type = 'pypi' , name = df_dependency .name ).to_string (),
243- scope = 'dependencies' ,
244- is_runtime = True ,
245- is_optional = False ,
246- is_resolved = is_resolved ,
247- requirement = requirement
248- )
226+
227+ df = dparse .parse (content , file_type = dependency_type )
228+ df_dependencies = df .dependencies
229+
230+ if not df_dependencies :
231+ return
232+
233+ package_dependencies = []
234+ for df_dependency in df_dependencies :
235+ specs = list (df_dependency .specs ._specs )
236+ is_resolved = False
237+ requirement = None
238+ purl = PackageURL (
239+ type = 'pypi' ,
240+ name = df_dependency .name
241+ ).to_string ()
242+ if specs :
243+ requirement = specs [0 ]
244+ if specs [0 ].operator == '==' :
245+ is_resolved = True
246+ purl = PackageURL (
247+ type = 'pypi' ,
248+ name = df_dependency .name ,
249+ version = specs [0 ].version
250+ ).to_string ()
251+ package_dependencies .append (
252+ models .DependentPackage (
253+ purl = purl ,
254+ scope = 'dependencies' ,
255+ is_runtime = True ,
256+ is_optional = False ,
257+ is_resolved = is_resolved ,
258+ requirement = requirement
249259 )
250- return package_dependencies
260+ )
261+
262+ return package_dependencies
251263
252264
253265def parse_requirements_txt (location ):
0 commit comments