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

Method parse

src/packagedcode/pypi.py:1163–1248  ·  view source on GitHub ↗
(cls, location, package_only=False)

Source from the content-addressed store, hash-verified

1161
1162 @classmethod
1163 def parse(cls, location, package_only=False):
1164
1165 with open(location) as f:
1166 content = f.read()
1167
1168 data = json.loads(content)
1169 installed_packages = data.get('installed')
1170 if not installed_packages:
1171 return
1172
1173 main_package_metadata = {}
1174 dependencies = []
1175
1176 direct_deps_of_main_package = []
1177
1178 for package_metadata in installed_packages:
1179 package_metadata_dep = package_metadata.get('metadata')
1180 is_requested = package_metadata.get('requested')
1181
1182 # `direct_url` is only present for root package
1183 # `requested` is true for root package and direct dependencies only
1184 if is_requested and 'direct_url' in package_metadata:
1185 main_package_metadata = package_metadata_dep
1186 main_package_requires = main_package_metadata.get('requires_dist')
1187 dependencies_for_main = get_requires_dependencies(
1188 requires=main_package_requires,
1189 )
1190 direct_deps_of_main_package.extend([
1191 get_base_purl(dep.purl)
1192 for dep in dependencies_for_main
1193 ])
1194 continue
1195
1196 package_data_dep = cls.get_resolved_package_from_metadata(
1197 metadata=package_metadata_dep,
1198 package_only=package_only,
1199 )
1200 dep_purl = package_data_dep.purl
1201 dependency = models.DependentPackage(
1202 purl=dep_purl,
1203 extracted_requirement=None,
1204 scope=None,
1205 is_runtime=True,
1206 is_optional=False,
1207 is_direct=False,
1208 is_pinned=True,
1209 resolved_package=package_data_dep.to_dict()
1210 )
1211 if is_requested:
1212 dependency.is_direct = True
1213 dependencies.append(dependency)
1214
1215 dependency_mappings = []
1216 resolved_main_dependencies = []
1217
1218 # Update is_direct for direct dependencies
1219 for dep in dependencies:
1220 base_purl = get_base_purl(dep.purl)

Callers

nothing calls this directly

Calls 8

get_base_purlFunction · 0.90
loadsMethod · 0.80
getMethod · 0.65
readMethod · 0.45
to_dictMethod · 0.45
appendMethod · 0.45

Tested by

no test coverage detected