Source code for openpyxl.descriptors.container

# Copyright (c) 2010-2024 openpyxl

"""
Utility list for top level containers that contain one type of element

Provides the necessary API to read and write XML
"""

from openpyxl.xml.functions import Element


[docs] class ElementList(list): @property def tagname(self): raise NotImplementedError @property def expected_type(self): raise NotImplementedError
[docs] @classmethod def from_tree(cls, tree): l = [cls.expected_type.from_tree(el) for el in tree] return cls(l)
[docs] def to_tree(self): container = Element(self.tagname) for el in self: container.append(el.to_tree()) return container
[docs] def append(self, value): if not isinstance(value, self.expected_type): raise TypeError(f"Value must of type {self.expected_type} {type(value)} provided") super().append(value)