aboutsummaryrefslogtreecommitdiff
path: root/.venv/lib/python3.12/site-packages/openpyxl/descriptors/container.py
diff options
context:
space:
mode:
Diffstat (limited to '.venv/lib/python3.12/site-packages/openpyxl/descriptors/container.py')
-rw-r--r--.venv/lib/python3.12/site-packages/openpyxl/descriptors/container.py41
1 files changed, 41 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/openpyxl/descriptors/container.py b/.venv/lib/python3.12/site-packages/openpyxl/descriptors/container.py
new file mode 100644
index 00000000..4b1839f5
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/openpyxl/descriptors/container.py
@@ -0,0 +1,41 @@
+# 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
+
+
+class ElementList(list):
+
+
+ @property
+ def tagname(self):
+ raise NotImplementedError
+
+
+ @property
+ def expected_type(self):
+ raise NotImplementedError
+
+
+ @classmethod
+ def from_tree(cls, tree):
+ l = [cls.expected_type.from_tree(el) for el in tree]
+ return cls(l)
+
+
+ def to_tree(self):
+ container = Element(self.tagname)
+ for el in self:
+ container.append(el.to_tree())
+ return container
+
+
+ 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)