Skip to content

artifact

mlte/negotiation/artifact.py

Artifact implementation for negotiation card.

NegotiationCard

Bases: Artifact

The negotiation card contains information produced at MLTE negotiation points.

Source code in mlte/negotiation/artifact.py
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
class NegotiationCard(Artifact):
    """The negotiation card contains information produced at MLTE negotiation points."""

    def __init__(
        self,
        identifier: str = DEFAULT_NEGOTIATION_CARD_ID,
        system: SystemDescriptor = SystemDescriptor(),
        data: List[DataDescriptor] = [],
        model: ModelDescriptor = ModelDescriptor(),
        qas: List[QASDescriptor] = [],
    ) -> None:
        super().__init__(identifier, ArtifactType.NEGOTIATION_CARD)

        self.system = system
        """A descriptor for the system into which the model is integrated."""

        self.data = data
        """A collection of descriptors for relevant datasets."""

        self.model = model
        """A descriptor for the model."""

        self.qas = qas
        """A list of quality attribute scenarios."""

    def to_model(self) -> ArtifactModel:
        """Convert a negotation card artifact to its corresponding model."""
        return ArtifactModel(
            header=self.build_artifact_header(),
            body=NegotiationCardModel(
                nc_data=NegotiationCardDataModel(
                    system=self.system,
                    data=self.data,
                    model=self.model,
                    system_requirements=self.qas,
                ),
            ),
        )

    @classmethod
    def from_model(cls, model: ArtifactModel) -> NegotiationCard:
        """Convert a negotiation card model to its corresponding artifact."""
        body = typing.cast(NegotiationCardModel, model.body)
        return NegotiationCard(
            identifier=model.header.identifier,
            system=body.nc_data.system,
            data=body.nc_data.data,
            model=body.nc_data.model,
            qas=body.nc_data.system_requirements,
        )

    @staticmethod
    def get_default_id() -> str:
        """Overriden"""
        return DEFAULT_NEGOTIATION_CARD_ID

    def __eq__(self, other: object) -> bool:
        if not isinstance(other, NegotiationCard):
            return False
        return self._equal(other)

data = data instance-attribute

A collection of descriptors for relevant datasets.

model = model instance-attribute

A descriptor for the model.

qas = qas instance-attribute

A list of quality attribute scenarios.

system = system instance-attribute

A descriptor for the system into which the model is integrated.

from_model(model) classmethod

Convert a negotiation card model to its corresponding artifact.

Source code in mlte/negotiation/artifact.py
66
67
68
69
70
71
72
73
74
75
76
@classmethod
def from_model(cls, model: ArtifactModel) -> NegotiationCard:
    """Convert a negotiation card model to its corresponding artifact."""
    body = typing.cast(NegotiationCardModel, model.body)
    return NegotiationCard(
        identifier=model.header.identifier,
        system=body.nc_data.system,
        data=body.nc_data.data,
        model=body.nc_data.model,
        qas=body.nc_data.system_requirements,
    )

get_default_id() staticmethod

Overriden

Source code in mlte/negotiation/artifact.py
78
79
80
81
@staticmethod
def get_default_id() -> str:
    """Overriden"""
    return DEFAULT_NEGOTIATION_CARD_ID

to_model()

Convert a negotation card artifact to its corresponding model.

Source code in mlte/negotiation/artifact.py
52
53
54
55
56
57
58
59
60
61
62
63
64
def to_model(self) -> ArtifactModel:
    """Convert a negotation card artifact to its corresponding model."""
    return ArtifactModel(
        header=self.build_artifact_header(),
        body=NegotiationCardModel(
            nc_data=NegotiationCardDataModel(
                system=self.system,
                data=self.data,
                model=self.model,
                system_requirements=self.qas,
            ),
        ),
    )