Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/openpyxl/packaging/workbook.py: 90%

Shortcuts on this page

r m x   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

100 statements  

1# Copyright (c) 2010-2024 openpyxl 

2 

3from openpyxl.descriptors.serialisable import Serialisable 

4from openpyxl.descriptors import ( 

5 Alias, 

6 Typed, 

7 String, 

8 Integer, 

9 Bool, 

10 NoneSet, 

11) 

12from openpyxl.descriptors.excel import ExtensionList, Relation 

13from openpyxl.descriptors.sequence import NestedSequence 

14from openpyxl.descriptors.nested import NestedString 

15 

16from openpyxl.xml.constants import SHEET_MAIN_NS 

17 

18from openpyxl.workbook.defined_name import DefinedNameList 

19from openpyxl.workbook.external_reference import ExternalReference 

20from openpyxl.workbook.function_group import FunctionGroupList 

21from openpyxl.workbook.properties import WorkbookProperties, CalcProperties, FileVersion 

22from openpyxl.workbook.protection import WorkbookProtection, FileSharing 

23from openpyxl.workbook.smart_tags import SmartTagList, SmartTagProperties 

24from openpyxl.workbook.views import CustomWorkbookView, BookView 

25from openpyxl.workbook.web import WebPublishing, WebPublishObjectList 

26 

27 

28class FileRecoveryProperties(Serialisable): 

29 

30 tagname = "fileRecoveryPr" 

31 

32 autoRecover = Bool(allow_none=True) 

33 crashSave = Bool(allow_none=True) 

34 dataExtractLoad = Bool(allow_none=True) 

35 repairLoad = Bool(allow_none=True) 

36 

37 def __init__(self, 

38 autoRecover=None, 

39 crashSave=None, 

40 dataExtractLoad=None, 

41 repairLoad=None, 

42 ): 

43 self.autoRecover = autoRecover 

44 self.crashSave = crashSave 

45 self.dataExtractLoad = dataExtractLoad 

46 self.repairLoad = repairLoad 

47 

48 

49class ChildSheet(Serialisable): 

50 """ 

51 Represents a reference to a worksheet or chartsheet in workbook.xml 

52 

53 It contains the title, order and state but only an indirect reference to 

54 the objects themselves. 

55 """ 

56 

57 tagname = "sheet" 

58 

59 name = String() 

60 sheetId = Integer() 

61 state = NoneSet(values=(['visible', 'hidden', 'veryHidden'])) 

62 id = Relation() 

63 

64 def __init__(self, 

65 name=None, 

66 sheetId=None, 

67 state="visible", 

68 id=None, 

69 ): 

70 self.name = name 

71 self.sheetId = sheetId 

72 self.state = state 

73 self.id = id 

74 

75 

76class PivotCache(Serialisable): 

77 

78 tagname = "pivotCache" 

79 

80 cacheId = Integer() 

81 id = Relation() 

82 

83 def __init__(self, 

84 cacheId=None, 

85 id=None 

86 ): 

87 self.cacheId = cacheId 

88 self.id = id 

89 

90 

91class WorkbookPackage(Serialisable): 

92 

93 """ 

94 Represent the workbook file in the archive 

95 """ 

96 

97 tagname = "workbook" 

98 

99 conformance = NoneSet(values=['strict', 'transitional']) 

100 fileVersion = Typed(expected_type=FileVersion, allow_none=True) 

101 fileSharing = Typed(expected_type=FileSharing, allow_none=True) 

102 workbookPr = Typed(expected_type=WorkbookProperties, allow_none=True) 

103 properties = Alias("workbookPr") 

104 workbookProtection = Typed(expected_type=WorkbookProtection, allow_none=True) 

105 bookViews = NestedSequence(expected_type=BookView) 

106 sheets = NestedSequence(expected_type=ChildSheet) 

107 functionGroups = Typed(expected_type=FunctionGroupList, allow_none=True) 

108 externalReferences = NestedSequence(expected_type=ExternalReference) 

109 definedNames = Typed(expected_type=DefinedNameList, allow_none=True) 

110 calcPr = Typed(expected_type=CalcProperties, allow_none=True) 

111 oleSize = NestedString(allow_none=True, attribute="ref") 

112 customWorkbookViews = NestedSequence(expected_type=CustomWorkbookView) 

113 pivotCaches = NestedSequence(expected_type=PivotCache, allow_none=True) 

114 smartTagPr = Typed(expected_type=SmartTagProperties, allow_none=True) 

115 smartTagTypes = Typed(expected_type=SmartTagList, allow_none=True) 

116 webPublishing = Typed(expected_type=WebPublishing, allow_none=True) 

117 fileRecoveryPr = Typed(expected_type=FileRecoveryProperties, allow_none=True) 

118 webPublishObjects = Typed(expected_type=WebPublishObjectList, allow_none=True) 

119 extLst = Typed(expected_type=ExtensionList, allow_none=True) 

120 Ignorable = NestedString(namespace="http://schemas.openxmlformats.org/markup-compatibility/2006", allow_none=True) 

121 

122 __elements__ = ('fileVersion', 'fileSharing', 'workbookPr', 

123 'workbookProtection', 'bookViews', 'sheets', 'functionGroups', 

124 'externalReferences', 'definedNames', 'calcPr', 'oleSize', 

125 'customWorkbookViews', 'pivotCaches', 'smartTagPr', 'smartTagTypes', 

126 'webPublishing', 'fileRecoveryPr', 'webPublishObjects') 

127 

128 def __init__(self, 

129 conformance=None, 

130 fileVersion=None, 

131 fileSharing=None, 

132 workbookPr=None, 

133 workbookProtection=None, 

134 bookViews=(), 

135 sheets=(), 

136 functionGroups=None, 

137 externalReferences=(), 

138 definedNames=None, 

139 calcPr=None, 

140 oleSize=None, 

141 customWorkbookViews=(), 

142 pivotCaches=(), 

143 smartTagPr=None, 

144 smartTagTypes=None, 

145 webPublishing=None, 

146 fileRecoveryPr=None, 

147 webPublishObjects=None, 

148 extLst=None, 

149 Ignorable=None, 

150 ): 

151 self.conformance = conformance 

152 self.fileVersion = fileVersion 

153 self.fileSharing = fileSharing 

154 if workbookPr is None: 

155 workbookPr = WorkbookProperties() 

156 self.workbookPr = workbookPr 

157 self.workbookProtection = workbookProtection 

158 self.bookViews = bookViews 

159 self.sheets = sheets 

160 self.functionGroups = functionGroups 

161 self.externalReferences = externalReferences 

162 self.definedNames = definedNames 

163 self.calcPr = calcPr 

164 self.oleSize = oleSize 

165 self.customWorkbookViews = customWorkbookViews 

166 self.pivotCaches = pivotCaches 

167 self.smartTagPr = smartTagPr 

168 self.smartTagTypes = smartTagTypes 

169 self.webPublishing = webPublishing 

170 self.fileRecoveryPr = fileRecoveryPr 

171 self.webPublishObjects = webPublishObjects 

172 

173 

174 def to_tree(self): 

175 tree = super().to_tree() 

176 tree.set("xmlns", SHEET_MAIN_NS) 

177 return tree 

178 

179 

180 @property 

181 def active(self): 

182 for view in self.bookViews: 

183 if view.activeTab is not None: 

184 return view.activeTab 

185 return 0