/usr/lib/python3/dist-packages/xlsxwriter/custom.py is in python3-xlsxwriter 0.9.6-0.1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 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 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 | ###############################################################################
#
# Custom - A class for writing the Excel XLSX Custom Property file.
#
# Copyright 2013-2016, John McNamara, jmcnamara@cpan.org
#
# Package imports.
from . import xmlwriter
class Custom(xmlwriter.XMLwriter):
"""
A class for writing the Excel XLSX Custom Workbook Property file.
"""
###########################################################################
#
# Public API.
#
###########################################################################
def __init__(self):
"""
Constructor.
"""
super(Custom, self).__init__()
self.properties = []
self.pid = 1
def _set_properties(self, properties):
# Set the document properties.
self.properties = properties
###########################################################################
#
# Private API.
#
###########################################################################
def _assemble_xml_file(self):
# Assemble and write the XML file.
# Write the XML declaration.
self._xml_declaration()
self._write_properties()
self._xml_end_tag('Properties')
# Close the file.
self._xml_close()
###########################################################################
#
# XML methods.
#
###########################################################################
def _write_properties(self):
# Write the <Properties> element.
schema = 'http://schemas.openxmlformats.org/officeDocument/2006/'
xmlns = schema + 'custom-properties'
xmlns_vt = schema + 'docPropsVTypes'
attributes = [
('xmlns', xmlns),
('xmlns:vt', xmlns_vt),
]
self._xml_start_tag('Properties', attributes)
for custom_property in self.properties:
# Write the property element.
self._write_property(custom_property)
def _write_property(self, custom_property):
# Write the <property> element.
fmtid = '{D5CDD505-2E9C-101B-9397-08002B2CF9AE}'
name, value, property_type = custom_property
self.pid += 1
attributes = [
('fmtid', fmtid),
('pid', self.pid),
('name', name),
]
self._xml_start_tag('property', attributes)
if property_type == 'number_int':
# Write the vt:i4 element.
self._write_vt_i4(value)
elif property_type == 'number':
# Write the vt:r8 element.
self._write_vt_r8(value)
elif property_type == 'date':
# Write the vt:filetime element.
self._write_vt_filetime(value)
elif property_type == 'bool':
# Write the vt:bool element.
self._write_vt_bool(value)
else:
# Write the vt:lpwstr element.
self._write_vt_lpwstr(value)
self._xml_end_tag('property')
def _write_vt_lpwstr(self, value):
# Write the <vt:lpwstr> element.
self._xml_data_element('vt:lpwstr', value)
def _write_vt_filetime(self, value):
# Write the <vt:filetime> element.
self._xml_data_element('vt:filetime', value)
def _write_vt_i4(self, value):
# Write the <vt:i4> element.
self._xml_data_element('vt:i4', value)
def _write_vt_r8(self, value):
# Write the <vt:r8> element.
self._xml_data_element('vt:r8', value)
def _write_vt_bool(self, value):
# Write the <vt:bool> element.
if value:
value = 'true'
else:
value = 'false'
self._xml_data_element('vt:bool', value)
|