23
23
24
24
from .vulnerability import Vulnerability
25
25
26
- PURL_TYPE_PREFIX = 'pypi'
27
-
28
26
29
27
class ComponentType (Enum ):
30
28
"""
@@ -51,6 +49,7 @@ class Component:
51
49
See the CycloneDX Schema definition: https://cyclonedx.org/docs/1.3/#type_component
52
50
"""
53
51
_type : ComponentType
52
+ _package_url_type : str
54
53
_name : str
55
54
_version : str
56
55
_qualifiers : str
@@ -62,12 +61,13 @@ class Component:
62
61
_vulnerabilites : List [Vulnerability ] = []
63
62
64
63
def __init__ (self , name : str , version : str , qualifiers : str = None ,
65
- component_type : ComponentType = ComponentType .LIBRARY ):
64
+ component_type : ComponentType = ComponentType .LIBRARY , package_url_type : str = 'pypi' ):
66
65
self ._name = name
67
66
self ._version = version
68
67
self ._type = component_type
69
68
self ._qualifiers = qualifiers
70
69
self ._vulnerabilites = []
70
+ self ._package_url_type = package_url_type
71
71
72
72
def add_vulnerability (self , vulnerability : Vulnerability ):
73
73
"""
@@ -125,7 +125,7 @@ def get_purl(self) -> str:
125
125
Returns:
126
126
PackageURL that reflects this Component as `str`.
127
127
"""
128
- base_purl = 'pkg:{}/{}@{}' .format (PURL_TYPE_PREFIX , self ._name , self ._version )
128
+ base_purl = 'pkg:{}/{}@{}' .format (self . _package_url_type , self ._name , self ._version )
129
129
if self ._qualifiers :
130
130
base_purl = '{}?{}' .format (base_purl , self ._qualifiers )
131
131
return base_purl
@@ -213,7 +213,7 @@ def to_package_url(self) -> PackageURL:
213
213
`packageurl.PackageURL` instance which represents this Component.
214
214
""" ""
215
215
return PackageURL (
216
- type = PURL_TYPE_PREFIX ,
216
+ type = self . _package_url_type ,
217
217
name = self ._name ,
218
218
version = self ._version ,
219
219
qualifiers = self ._qualifiers
0 commit comments