remove extra fields from the compare script metadata namedtuple

Signed-off-by: Alex Goodman <alex.goodman@anchore.com>
This commit is contained in:
Alex Goodman 2020-10-30 10:58:11 -04:00
parent 232cd13035
commit e2593cd6b7
No known key found for this signature in database
GPG Key ID: 5CB45AE22BAB7EA7
4 changed files with 7 additions and 32 deletions

View File

@ -84,7 +84,6 @@ class InlineScan:
metadata[pkg.type][pkg] = utils.package.Metadata(
version=entry["maven-version"],
extra=tuple(),
)
return packages, metadata
@ -98,7 +97,7 @@ class InlineScan:
type=entry["type"].lower(),
)
packages.add(pkg)
metadata[pkg.type][pkg] = utils.package.Metadata(version=entry["version"], extra=tuple())
metadata[pkg.type][pkg] = utils.package.Metadata(version=entry["version"])
return packages, metadata
@ -113,7 +112,7 @@ class InlineScan:
type=entry["type"].lower(),
)
packages.add(pkg)
metadata[pkg.type][pkg] = utils.package.Metadata(version=entry["version"], extra=tuple())
metadata[pkg.type][pkg] = utils.package.Metadata(version=entry["version"])
return packages, metadata
@ -126,7 +125,7 @@ class InlineScan:
type=entry["type"].lower(),
)
packages.add(pkg)
metadata[pkg.type][pkg] = utils.package.Metadata(version=entry["version"], extra=tuple())
metadata[pkg.type][pkg] = utils.package.Metadata(version=entry["version"])
return packages, metadata
@ -138,6 +137,6 @@ class InlineScan:
name=entry["package"], type=entry["type"].lower()
)
packages.add(pkg)
metadata[pkg.type][pkg] = utils.package.Metadata(version=entry["version"], extra=tuple())
metadata[pkg.type][pkg] = utils.package.Metadata(version=entry["version"])
return packages, metadata

View File

@ -3,7 +3,7 @@ import collections
import dataclasses
from typing import Set, FrozenSet, Tuple, Any, List
Metadata = collections.namedtuple("Metadata", "version extra")
Metadata = collections.namedtuple("Metadata", "version")
Package = collections.namedtuple("Package", "name type")
Info = collections.namedtuple("Info", "packages metadata")

View File

@ -4,7 +4,6 @@ import collections
import utils.package
import utils.image
from utils.traverse import dig
class Syft:
@ -29,8 +28,6 @@ class Syft:
metadata = collections.defaultdict(dict)
for entry in self._enumerate_section(section="artifacts"):
extra = {}
# normalize to inline
pkg_type = entry["type"].lower()
if pkg_type in ("wheel", "egg", "python"):
@ -52,7 +49,7 @@ class Syft:
if "java" in pkg_type:
# we need to use the virtual path instead of the name to account for nested dependencies with the same
# package name (but potentially different metadata)
name = dig(entry, "metadata", "virtualPath")
name = entry.get("metadata", {}).get("virtualPath")
elif pkg_type == "apkg":
# inline scan strips off the release from the version, which should be normalized here
@ -66,6 +63,6 @@ class Syft:
packages.add(pkg)
metadata[pkg.type][pkg] = utils.package.Metadata(version=version, extra=tuple())
metadata[pkg.type][pkg] = utils.package.Metadata(version=version)
return utils.package.Info(packages=frozenset(packages), metadata=metadata)

View File

@ -1,21 +0,0 @@
def dig(target, *keys, **kwargs):
"""
Traverse a nested set of dictionaries, tuples, or lists similar to ruby's dig function.
"""
end_of_chain = target
for key in keys:
if isinstance(end_of_chain, dict) and key in end_of_chain:
end_of_chain = end_of_chain[key]
elif isinstance(end_of_chain, (list, tuple)) and isinstance(key, int):
end_of_chain = end_of_chain[key]
else:
if 'fail' in kwargs and kwargs['fail'] is True:
if isinstance(end_of_chain, dict):
raise KeyError
else:
raise IndexError
else:
return None
return end_of_chain