2323
2424from .vulnerability import Vulnerability
2525
26- PURL_TYPE_PREFIX = 'pypi'
27-
2826
2927class ComponentType (Enum ):
3028 """
@@ -51,6 +49,7 @@ class Component:
5149 See the CycloneDX Schema definition: https://cyclonedx.org/docs/1.3/#type_component
5250 """
5351 _type : ComponentType
52+ _package_url_type : str
5453 _name : str
5554 _version : str
5655 _qualifiers : str
@@ -62,12 +61,13 @@ class Component:
6261 _vulnerabilites : List [Vulnerability ] = []
6362
6463 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' ):
6665 self ._name = name
6766 self ._version = version
6867 self ._type = component_type
6968 self ._qualifiers = qualifiers
7069 self ._vulnerabilites = []
70+ self ._package_url_type = package_url_type
7171
7272 def add_vulnerability (self , vulnerability : Vulnerability ):
7373 """
@@ -125,7 +125,7 @@ def get_purl(self) -> str:
125125 Returns:
126126 PackageURL that reflects this Component as `str`.
127127 """
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 )
129129 if self ._qualifiers :
130130 base_purl = '{}?{}' .format (base_purl , self ._qualifiers )
131131 return base_purl
@@ -213,7 +213,7 @@ def to_package_url(self) -> PackageURL:
213213 `packageurl.PackageURL` instance which represents this Component.
214214 """ ""
215215 return PackageURL (
216- type = PURL_TYPE_PREFIX ,
216+ type = self . _package_url_type ,
217217 name = self ._name ,
218218 version = self ._version ,
219219 qualifiers = self ._qualifiers
0 commit comments