Skip to content
Open
25 changes: 24 additions & 1 deletion cyclonedx/model/component.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@
from .dependency import Dependable
from .issue import IssueType
from .license import License, LicenseRepository, _LicenseRepositorySerializationHelper
from .model_card import ModelCard
from .release_note import ReleaseNotes


Expand Down Expand Up @@ -1003,6 +1004,7 @@ def __init__(
external_references: Optional[Iterable[ExternalReference]] = None,
properties: Optional[Iterable[Property]] = None,
release_notes: Optional[ReleaseNotes] = None,
model_card: Optional[ModelCard] = None,
cpe: Optional[str] = None,
swid: Optional[Swid] = None,
pedigree: Optional[Pedigree] = None,
Expand Down Expand Up @@ -1043,6 +1045,7 @@ def __init__(
self.components = components or []
self.evidence = evidence
self.release_notes = release_notes
self.model_card = model_card
self.crypto_properties = crypto_properties
self.tags = tags or []
# spec-deprecated properties below
Expand Down Expand Up @@ -1602,6 +1605,26 @@ def release_notes(self) -> Optional[ReleaseNotes]:
def release_notes(self, release_notes: Optional[ReleaseNotes]) -> None:
self._release_notes = release_notes

@property
@serializable.view(SchemaVersion1Dot5)
@serializable.view(SchemaVersion1Dot6)
@serializable.view(SchemaVersion1Dot7)
@serializable.xml_sequence(26)
@serializable.json_name('modelCard')
@serializable.xml_name('modelCard')
def model_card(self) -> Optional[ModelCard]:
"""
Specifies the model card for components of type `machine-learning-model`.

Returns:
`ModelCard` or `None`
"""
return self._model_card

@model_card.setter
def model_card(self, model_card: Optional[ModelCard]) -> None:
self._model_card = model_card

# @property
# ...
# @serializable.view(SchemaVersion1Dot5)
Expand Down Expand Up @@ -1694,7 +1717,7 @@ def __comparable_tuple(self) -> _ComparableTuple:
_ComparableTuple(self.external_references), _ComparableTuple(self.properties),
_ComparableTuple(self.components), self.evidence, self.release_notes, self.modified,
_ComparableTuple(self.authors), _ComparableTuple(self.omnibor_ids), self.manufacturer,
self.crypto_properties, _ComparableTuple(self.tags),
self.crypto_properties, _ComparableTuple(self.tags), self.model_card,
))

def __eq__(self, other: object) -> bool:
Expand Down
Loading