Skip to content

Commit 60fe989

Browse files
feat: Use metadata classifier for license resolution
1 parent 984aa34 commit 60fe989

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

sbom4python/scanner.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -418,6 +418,43 @@ def _getpackage_metadata(self, module):
418418
requires = package_data.get_all("Requires-Dist")
419419
else:
420420
requires = None
421+
# Use classifier if no license
422+
if metadata.get("License") is not None:
423+
if metadata["License"] == "UNKNOWN":
424+
metadata["License"] = None
425+
elif "see license" in metadata["License"].lower():
426+
# If license has text similar to 'see license file', reset
427+
metadata["License"] = None
428+
if metadata.get("License") is None and package_metadata.get("Classifier") is not None:
429+
for i in package_data.get_all("Classifier"):
430+
if i.startswith("License"):
431+
# Extract license from classifier
432+
license_name = i.split("::")[-1].strip()
433+
if metadata.get("License") is None:
434+
metadata["License"] = license_name
435+
else:
436+
metadata["License"] = f'{metadata["License"]} AND {license_name}'
437+
# Extract dependencies (if any)
438+
if package_metadata.get("Requires-Dist"):
439+
requires = package_metadata.get("Requires-Dist")
440+
else:
441+
requires = None
442+
# Extract dependencies (if any)
443+
if package_metadata.get("Requires-External"):
444+
requires = package_metadata.get("Requires-external")
445+
else:
446+
requires = None
447+
# Extract dependencies (if any)
448+
if package_metadata.get("Requires"):
449+
requires = package_metadata.get("Requires")
450+
else:
451+
requires = None
452+
# Extract dependencies (if any)
453+
if package_metadata.get("Requires-python"):
454+
requires = package_metadata.get("Requires-python")
455+
else:
456+
requires = None
457+
# Extract dependencies (if any)
421458

422459
if requires is not None:
423460
# Find dependent packages

0 commit comments

Comments
 (0)