aboutsummaryrefslogtreecommitdiff
path: root/.venv/lib/python3.12/site-packages/xlsxwriter/contenttypes.py
diff options
context:
space:
mode:
authorS. Solomon Darnell2025-03-28 21:52:21 -0500
committerS. Solomon Darnell2025-03-28 21:52:21 -0500
commit4a52a71956a8d46fcb7294ac71734504bb09bcc2 (patch)
treeee3dc5af3b6313e921cd920906356f5d4febc4ed /.venv/lib/python3.12/site-packages/xlsxwriter/contenttypes.py
parentcc961e04ba734dd72309fb548a2f97d67d578813 (diff)
downloadgn-ai-master.tar.gz
two version of R2R are hereHEADmaster
Diffstat (limited to '.venv/lib/python3.12/site-packages/xlsxwriter/contenttypes.py')
-rw-r--r--.venv/lib/python3.12/site-packages/xlsxwriter/contenttypes.py269
1 files changed, 269 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/xlsxwriter/contenttypes.py b/.venv/lib/python3.12/site-packages/xlsxwriter/contenttypes.py
new file mode 100644
index 00000000..bc144406
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/xlsxwriter/contenttypes.py
@@ -0,0 +1,269 @@
+###############################################################################
+#
+# ContentTypes - A class for writing the Excel XLSX ContentTypes file.
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2013-2025, John McNamara, jmcnamara@cpan.org
+#
+
+import copy
+
+from . import xmlwriter
+
+# Long namespace strings used in the class.
+APP_PACKAGE = "application/vnd.openxmlformats-package."
+APP_DOCUMENT = "application/vnd.openxmlformats-officedocument."
+
+defaults = [
+ ["rels", APP_PACKAGE + "relationships+xml"],
+ ["xml", "application/xml"],
+]
+
+overrides = [
+ ["/docProps/app.xml", APP_DOCUMENT + "extended-properties+xml"],
+ ["/docProps/core.xml", APP_PACKAGE + "core-properties+xml"],
+ ["/xl/styles.xml", APP_DOCUMENT + "spreadsheetml.styles+xml"],
+ ["/xl/theme/theme1.xml", APP_DOCUMENT + "theme+xml"],
+ ["/xl/workbook.xml", APP_DOCUMENT + "spreadsheetml.sheet.main+xml"],
+]
+
+
+class ContentTypes(xmlwriter.XMLwriter):
+ """
+ A class for writing the Excel XLSX ContentTypes file.
+
+
+ """
+
+ ###########################################################################
+ #
+ # Public API.
+ #
+ ###########################################################################
+
+ def __init__(self):
+ """
+ Constructor.
+
+ """
+
+ super().__init__()
+
+ # Copy the defaults in case we need to change them.
+ self.defaults = copy.deepcopy(defaults)
+ self.overrides = copy.deepcopy(overrides)
+
+ ###########################################################################
+ #
+ # Private API.
+ #
+ ###########################################################################
+
+ def _assemble_xml_file(self):
+ # Assemble and write the XML file.
+
+ # Write the XML declaration.
+ self._xml_declaration()
+
+ self._write_types()
+ self._write_defaults()
+ self._write_overrides()
+
+ self._xml_end_tag("Types")
+
+ # Close the file.
+ self._xml_close()
+
+ def _add_default(self, default):
+ # Add elements to the ContentTypes defaults.
+ self.defaults.append(default)
+
+ def _add_override(self, override):
+ # Add elements to the ContentTypes overrides.
+ self.overrides.append(override)
+
+ def _add_worksheet_name(self, worksheet_name):
+ # Add the name of a worksheet to the ContentTypes overrides.
+ worksheet_name = "/xl/worksheets/" + worksheet_name + ".xml"
+
+ self._add_override(
+ (worksheet_name, APP_DOCUMENT + "spreadsheetml.worksheet+xml")
+ )
+
+ def _add_chartsheet_name(self, chartsheet_name):
+ # Add the name of a chartsheet to the ContentTypes overrides.
+ chartsheet_name = "/xl/chartsheets/" + chartsheet_name + ".xml"
+
+ self._add_override(
+ (chartsheet_name, APP_DOCUMENT + "spreadsheetml.chartsheet+xml")
+ )
+
+ def _add_chart_name(self, chart_name):
+ # Add the name of a chart to the ContentTypes overrides.
+ chart_name = "/xl/charts/" + chart_name + ".xml"
+
+ self._add_override((chart_name, APP_DOCUMENT + "drawingml.chart+xml"))
+
+ def _add_drawing_name(self, drawing_name):
+ # Add the name of a drawing to the ContentTypes overrides.
+ drawing_name = "/xl/drawings/" + drawing_name + ".xml"
+
+ self._add_override((drawing_name, APP_DOCUMENT + "drawing+xml"))
+
+ def _add_vml_name(self):
+ # Add the name of a VML drawing to the ContentTypes defaults.
+ self._add_default(("vml", APP_DOCUMENT + "vmlDrawing"))
+
+ def _add_comment_name(self, comment_name):
+ # Add the name of a comment to the ContentTypes overrides.
+ comment_name = "/xl/" + comment_name + ".xml"
+
+ self._add_override((comment_name, APP_DOCUMENT + "spreadsheetml.comments+xml"))
+
+ def _add_shared_strings(self):
+ # Add the sharedStrings link to the ContentTypes overrides.
+ self._add_override(
+ ("/xl/sharedStrings.xml", APP_DOCUMENT + "spreadsheetml.sharedStrings+xml")
+ )
+
+ def _add_calc_chain(self):
+ # Add the calcChain link to the ContentTypes overrides.
+ self._add_override(
+ ("/xl/calcChain.xml", APP_DOCUMENT + "spreadsheetml.calcChain+xml")
+ )
+
+ def _add_image_types(self, image_types):
+ # Add the image default types.
+ for image_type in image_types:
+ extension = image_type
+
+ if image_type in ("wmf", "emf"):
+ image_type = "x-" + image_type
+
+ self._add_default((extension, "image/" + image_type))
+
+ def _add_table_name(self, table_name):
+ # Add the name of a table to the ContentTypes overrides.
+ table_name = "/xl/tables/" + table_name + ".xml"
+
+ self._add_override((table_name, APP_DOCUMENT + "spreadsheetml.table+xml"))
+
+ def _add_vba_project(self):
+ # Add a vbaProject to the ContentTypes defaults.
+
+ # Change the workbook.xml content-type from xlsx to xlsm.
+ for i, override in enumerate(self.overrides):
+ if override[0] == "/xl/workbook.xml":
+ xlsm = "application/vnd.ms-excel.sheet.macroEnabled.main+xml"
+ self.overrides[i][1] = xlsm
+
+ self._add_default(("bin", "application/vnd.ms-office.vbaProject"))
+
+ def _add_vba_project_signature(self):
+ # Add a vbaProjectSignature to the ContentTypes overrides.
+ self._add_override(
+ (
+ "/xl/vbaProjectSignature.bin",
+ "application/vnd.ms-office.vbaProjectSignature",
+ )
+ )
+
+ def _add_custom_properties(self):
+ # Add the custom properties to the ContentTypes overrides.
+ self._add_override(
+ ("/docProps/custom.xml", APP_DOCUMENT + "custom-properties+xml")
+ )
+
+ def _add_metadata(self):
+ # Add the metadata file to the ContentTypes overrides.
+ self._add_override(
+ ("/xl/metadata.xml", APP_DOCUMENT + "spreadsheetml.sheetMetadata+xml")
+ )
+
+ def _add_feature_bag_property(self):
+ # Add the featurePropertyBag file to the ContentTypes overrides.
+ self._add_override(
+ (
+ "/xl/featurePropertyBag/featurePropertyBag.xml",
+ "application/vnd.ms-excel.featurepropertybag+xml",
+ )
+ )
+
+ def _add_rich_value(self):
+ # Add the richValue files to the ContentTypes overrides.
+ self._add_override(
+ (
+ "/xl/richData/rdRichValueTypes.xml",
+ "application/vnd.ms-excel.rdrichvaluetypes+xml",
+ )
+ )
+
+ self._add_override(
+ ("/xl/richData/rdrichvalue.xml", "application/vnd.ms-excel.rdrichvalue+xml")
+ )
+
+ self._add_override(
+ (
+ "/xl/richData/rdrichvaluestructure.xml",
+ "application/vnd.ms-excel.rdrichvaluestructure+xml",
+ )
+ )
+
+ self._add_override(
+ (
+ "/xl/richData/richValueRel.xml",
+ "application/vnd.ms-excel.richvaluerel+xml",
+ )
+ )
+
+ ###########################################################################
+ #
+ # XML methods.
+ #
+ ###########################################################################
+
+ def _write_defaults(self):
+ # Write out all of the <Default> types.
+
+ for extension, content_type in self.defaults:
+ self._xml_empty_tag(
+ "Default", [("Extension", extension), ("ContentType", content_type)]
+ )
+
+ def _write_overrides(self):
+ # Write out all of the <Override> types.
+ for part_name, content_type in self.overrides:
+ self._xml_empty_tag(
+ "Override", [("PartName", part_name), ("ContentType", content_type)]
+ )
+
+ def _write_types(self):
+ # Write the <Types> element.
+ xmlns = "http://schemas.openxmlformats.org/package/2006/content-types"
+
+ attributes = [
+ (
+ "xmlns",
+ xmlns,
+ )
+ ]
+ self._xml_start_tag("Types", attributes)
+
+ def _write_default(self, extension, content_type):
+ # Write the <Default> element.
+ attributes = [
+ ("Extension", extension),
+ ("ContentType", content_type),
+ ]
+
+ self._xml_empty_tag("Default", attributes)
+
+ def _write_override(self, part_name, content_type):
+ # Write the <Override> element.
+ attributes = [
+ ("PartName", part_name),
+ ("ContentType", content_type),
+ ]
+
+ self._xml_empty_tag("Override", attributes)