MCPcopy Create free account
hub / github.com/aboutcode-org/scancode-toolkit / assemble

Method assemble

src/packagedcode/conda.py:42–110  ·  view source on GitHub ↗
(cls, package_data, resource, codebase, package_adder=models.add_to_package)

Source from the content-addressed store, hash-verified

40
41 @classmethod
42 def assemble(cls, package_data, resource, codebase, package_adder=models.add_to_package):
43
44 if codebase.has_single_resource:
45 yield from models.DatafileHandler.assemble(package_data, resource, codebase, package_adder)
46 return
47
48 # We do not have any package data detected here
49 if not resource.package_data:
50 return
51
52 # If this is a Conda meta.yaml, try to find the corresponding metadata JSON
53 # and if present, run assembly on the metadata resource
54 if CondaMetaYamlHandler.is_datafile(resource.location):
55 conda_meta_json = cls.find_conda_meta_json_resource(resource, codebase)
56 if conda_meta_json:
57 package_data_meta_json, = conda_meta_json.package_data
58 yield from cls.assemble(
59 package_data=package_data_meta_json,
60 resource=conda_meta_json,
61 codebase=codebase,
62 package_adder=package_adder,
63 )
64
65 # corresponding metadata JSON does not exist, so handle this meta.yaml
66 else:
67 yield from cls.assemble_from_meta_yaml_only(
68 package_data=package_data,
69 resource=resource,
70 codebase=codebase,
71 package_adder=package_adder,
72 )
73
74 return
75
76 if not package_data.purl:
77 yield resource
78 return
79
80 package = models.Package.from_package_data(
81 package_data=package_data,
82 datafile_path=resource.path,
83 )
84 yield from cls.get_and_assmeble_from_meta_yaml(
85 package=package,
86 resource=resource,
87 codebase=codebase,
88 package_adder=package_adder,
89 )
90
91 package.populate_license_fields()
92 yield package
93
94 cls.assign_package_to_resources(
95 package=package,
96 resource=resource,
97 codebase=codebase,
98 package_adder=package_adder,
99 )

Callers

nothing calls this directly

Tested by

no test coverage detected