@@ -320,27 +320,28 @@ def scan_for_application_packages(project):
320320 resource_qs = project .codebaseresources .no_status ()
321321
322322 # Collect detected Package data and save it to the CodebaseResource it was
323- # detected from.
323+ # detected from
324324 _scan_and_save (
325325 resource_qs = resource_qs ,
326326 scan_func = scan_for_package_data ,
327327 save_func = save_scan_package_results ,
328328 )
329329
330330 # Iterate through CodebaseResources with Package data and handle them using
331- # the proper Package handler from packagedcode.
331+ # the proper Package handler from packagedcode
332332 assemble_packages (project = project )
333333
334334
335335def add_to_package (package_uid , resource , project ):
336336 """
337- Relate a DiscoveredPackage to `resource` from `project` using `package_uid`.
337+ Relate a DiscoveredPackage to `resource` from `project` using `package_uid`
338338 """
339339 if not package_uid :
340340 return
341-
342- resource_package = resource .discovered_packages .filter (package_uid = package_uid )
343- if not resource_package .exists ():
341+ package_associated_with_resource = resource .discovered_packages .filter (
342+ package_uid = package_uid
343+ ).exists ()
344+ if not package_associated_with_resource :
344345 package = project .discoveredpackages .get (package_uid = package_uid )
345346 resource .discovered_packages .add (package )
346347
@@ -350,20 +351,22 @@ def assemble_packages(project):
350351 Create instances of DiscoveredPackage and DiscoveredDependency for `project`
351352 from the parsed package data present in the CodebaseResources of `project`.
352353 """
353- logger .info (f"Project { project } assemble_packages: " )
354+ logger .info (f"Project: { project } : \n " "Function: assemble_packages \n " )
354355 seen_resource_paths = set ()
355-
356356 for resource in project .codebaseresources .has_package_data ():
357357 if resource .path in seen_resource_paths :
358358 continue
359359
360- logger .info (f" Processing: { resource .path } " )
360+ logger .info (f"Processing: CodebaseResource { resource .path } \n " )
361+
361362 for package_mapping in resource .package_data :
362363 pd = packagedcode_models .PackageData .from_dict (mapping = package_mapping )
363- logger .info (f" Package data: { pd .purl } " )
364+
365+ logger .info (f"Processing: PackageData { pd .purl } \n " )
364366
365367 handler = get_package_handler (pd )
366- logger .info (f" Selected package handler: { handler .__name__ } " )
368+
369+ logger .info (f"Selected: Package handler { handler } \n " )
367370
368371 items = handler .assemble (
369372 package_data = pd ,
@@ -372,19 +375,36 @@ def assemble_packages(project):
372375 package_adder = add_to_package ,
373376 )
374377
378+ dependencies = []
379+ resources = []
375380 for item in items :
376- logger .info (f" Processing item: { item } " )
381+ logger .info (f"Processing: item { item } \n " )
377382 if isinstance (item , packagedcode_models .Package ):
383+ # In order to relate CodebaseResources to
384+ # DiscoveredPackages, we create DiscoveredPackages from
385+ # yielded `Package`s first
378386 package_data = item .to_dict ()
379387 pipes .update_or_create_package (project , package_data )
380388 elif isinstance (item , packagedcode_models .Dependency ):
381389 # We will handle Dependencies when we properly implement the
382390 # DiscoveredDependency model
383391 pass
384392 elif isinstance (item , CodebaseResource ):
385- seen_resource_paths .add (item .path )
393+ # We store CodebaseResources in `resources` so we can
394+ # process them after we create all Packages assembled from
395+ # `resource`
396+ resources .append (item )
386397 else :
387- logger .info (f"Unknown Package assembly item type: { item !r} " )
398+ logger .info (f"Unknown Package assembly item type: { item !r} \n " )
399+
400+ for item in resources + dependencies :
401+ logger .info (f"Processing: item { item } \n " )
402+ if isinstance (item , packagedcode_models .Dependency ):
403+ # We will handle Dependencies when we properly implement the
404+ # DiscoveredDependency model
405+ pass
406+ elif isinstance (item , CodebaseResource ):
407+ seen_resource_paths .add (item .path )
388408
389409
390410def run_scancode (location , output_file , options , raise_on_error = False ):
0 commit comments