Skip to content

Commit 34c047b

Browse files
Merge branch 'feat/data' into feat/model-card
Signed-off-by: Wiebe Vandendriessche <146532897+wiebe-vandendriessche@users.noreply.github.com>
2 parents 1be3233 + aae7133 commit 34c047b

13 files changed

Lines changed: 2101 additions & 154 deletions

cyclonedx/model/component.py

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@
6666
from .component_evidence import ComponentEvidence, _ComponentEvidenceSerializationHelper
6767
from .contact import OrganizationalContact, OrganizationalEntity
6868
from .crypto import CryptoProperties
69+
from .data import ComponentData
6970
from .dependency import Dependable
7071
from .issue import IssueType
7172
from .license import License, LicenseRepository, _LicenseRepositorySerializationHelper
@@ -1013,6 +1014,7 @@ def __init__(
10131014
omnibor_ids: Optional[Iterable[OmniborId]] = None,
10141015
swhids: Optional[Iterable[Swhid]] = None,
10151016
crypto_properties: Optional[CryptoProperties] = None,
1017+
data: Optional[Iterable[ComponentData]] = None,
10161018
tags: Optional[Iterable[str]] = None,
10171019
# Deprecated in v1.6
10181020
author: Optional[str] = None,
@@ -1044,6 +1046,7 @@ def __init__(
10441046
self.release_notes = release_notes
10451047
self.model_card = model_card
10461048
self.crypto_properties = crypto_properties
1049+
self.data = data or []
10471050
self.tags = tags or []
10481051
# spec-deprecated properties below
10491052
self.author = author
@@ -1631,16 +1634,24 @@ def model_card(self, model_card: Optional[ModelCard]) -> None:
16311634
# def model_card(self, ...) -> None:
16321635
# ... # TODO since CDX1.5
16331636

1634-
# @property
1635-
# ...
1636-
# @serializable.view(SchemaVersion1Dot5)
1637-
# @serializable.xml_sequence(23)
1638-
# def data(self) -> ...:
1639-
# ... # TODO since CDX1.5
1640-
#
1641-
# @data.setter
1642-
# def data(self, ...) -> None:
1643-
# ... # TODO since CDX1.5
1637+
@property
1638+
@serializable.view(SchemaVersion1Dot5)
1639+
@serializable.view(SchemaVersion1Dot6)
1640+
@serializable.view(SchemaVersion1Dot7)
1641+
@serializable.xml_array(serializable.XmlArraySerializationType.FLAT, 'data')
1642+
@serializable.xml_sequence(27)
1643+
def data(self) -> 'SortedSet[ComponentData]':
1644+
"""
1645+
Specifies data objects for components of type `data`.
1646+
1647+
Returns:
1648+
`Iterable[ComponentData]`
1649+
"""
1650+
return self._data
1651+
1652+
@data.setter
1653+
def data(self, data: Iterable[ComponentData]) -> None:
1654+
self._data = SortedSet(data)
16441655

16451656
@property
16461657
@serializable.view(SchemaVersion1Dot6)
@@ -1712,7 +1723,7 @@ def __comparable_tuple(self) -> _ComparableTuple:
17121723
_ComparableTuple(self.external_references), _ComparableTuple(self.properties),
17131724
_ComparableTuple(self.components), self.evidence, self.release_notes, self.modified,
17141725
_ComparableTuple(self.authors), _ComparableTuple(self.omnibor_ids), self.manufacturer,
1715-
self.crypto_properties, _ComparableTuple(self.tags), self.model_card,
1726+
self.crypto_properties, _ComparableTuple(self.tags), self.model_card, _ComparableTuple(self.data)
17161727
))
17171728

17181729
def __eq__(self, other: object) -> bool:

0 commit comments

Comments
 (0)