Skip to content

Maintenance¤

Maintenance dataclass ¤

Maintenance(
    planned: tuple[PlannedTask, ...] = (),
    completed: tuple[CompletedTask, ...] = (),
)

Represents the maintenance element in an equipment register.

Parameters:

Name Type Description Default
planned tuple[PlannedTask, ...]

Maintenance tasks that are planned to be performed.

()
completed tuple[CompletedTask, ...]

Maintenance tasks that have been completed.

()

completed class-attribute instance-attribute ¤

completed: tuple[CompletedTask, ...] = ()

Maintenance tasks that have been completed.

planned class-attribute instance-attribute ¤

planned: tuple[PlannedTask, ...] = ()

Maintenance tasks that are planned to be performed.

from_xml classmethod ¤

from_xml(element: Element[str]) -> Maintenance

Convert an XML element into a Maintenance instance.

Parameters:

Name Type Description Default
element Element[str]

A maintenance XML element from an equipment register.

required

Returns:

Type Description
Maintenance

The Maintenance instance.

Source code in src/msl/equipment/schema.py
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
@classmethod
def from_xml(cls, element: Element[str]) -> Maintenance:
    """Convert an XML element into a [Maintenance][msl.equipment.schema.Maintenance] instance.

    Args:
        element: A [maintenance][type_maintenance] XML element from an equipment register.

    Returns:
        The [Maintenance][msl.equipment.schema.Maintenance] instance.
    """
    if len(element) == 0:
        return cls()

    # Schema forces order, planned tasks then completed tasks (and both sub-elements must exist)
    return cls(
        planned=tuple(PlannedTask.from_xml(e) for e in element[0]),
        completed=tuple(CompletedTask.from_xml(e) for e in element[1]),
    )

to_xml ¤

to_xml() -> Element[str]

Convert the Maintenance class into an XML element.

Returns:

Type Description
Element[str]

The Maintenance as an XML element.

Source code in src/msl/equipment/schema.py
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
def to_xml(self) -> Element[str]:
    """Convert the [Maintenance][msl.equipment.schema.Maintenance] class into an XML element.

    Returns:
        The [Maintenance][msl.equipment.schema.Maintenance] as an XML element.
    """
    e = Element("maintenance")
    if not (self.planned or self.completed):
        return e  # no maintenance plan

    # planned must come before completed
    planned = SubElement(e, "planned")
    planned.extend(p.to_xml() for p in self.planned)
    completed = SubElement(e, "completed")
    completed.extend(c.to_xml() for c in self.completed)
    return e