Coverage for /var/srv/projects/api.amasfac.comuna18.com/tmp/venv/lib/python3.9/site-packages/openpyxl/pivot/record.py: 77%

49 statements  

« prev     ^ index     » next       coverage.py v6.4.4, created at 2023-07-17 14:22 -0600

1# Copyright (c) 2010-2022 openpyxl 

2 

3from openpyxl.descriptors.serialisable import Serialisable 

4from openpyxl.descriptors import ( 

5 Typed, 

6 Integer, 

7 Sequence, 

8) 

9from openpyxl.descriptors.sequence import ( 

10 MultiSequence, 

11 MultiSequencePart, 

12) 

13from openpyxl.descriptors.excel import ExtensionList 

14from openpyxl.descriptors.nested import ( 

15 NestedInteger, 

16 NestedBool, 

17) 

18 

19from openpyxl.xml.constants import SHEET_MAIN_NS 

20from openpyxl.xml.functions import tostring 

21 

22from .fields import ( 

23 Boolean, 

24 Error, 

25 Missing, 

26 Number, 

27 Text, 

28 TupleList, 

29 DateTimeField, 

30 Index, 

31) 

32 

33 

34class Record(Serialisable): 

35 

36 tagname = "r" 

37 

38 _fields = MultiSequence() 

39 m = MultiSequencePart(expected_type=Missing, store="_fields") 

40 n = MultiSequencePart(expected_type=Number, store="_fields") 

41 b = MultiSequencePart(expected_type=Boolean, store="_fields") 

42 e = MultiSequencePart(expected_type=Error, store="_fields") 

43 s = MultiSequencePart(expected_type=Text, store="_fields") 

44 d = MultiSequencePart(expected_type=DateTimeField, store="_fields") 

45 x = MultiSequencePart(expected_type=Index, store="_fields") 

46 

47 

48 def __init__(self, 

49 _fields=(), 

50 m=None, 

51 n=None, 

52 b=None, 

53 e=None, 

54 s=None, 

55 d=None, 

56 x=None, 

57 ): 

58 self._fields = _fields 

59 

60 

61class RecordList(Serialisable): 

62 

63 mime_type = "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml" 

64 rel_type = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/pivotCacheRecords" 

65 _id = 1 

66 _path = "/xl/pivotCache/pivotCacheRecords{0}.xml" 

67 

68 tagname ="pivotCacheRecords" 

69 

70 r = Sequence(expected_type=Record, allow_none=True) 

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

72 

73 __elements__ = ('r', ) 

74 __attrs__ = ('count', ) 

75 

76 def __init__(self, 

77 count=None, 

78 r=(), 

79 extLst=None, 

80 ): 

81 self.r = r 

82 self.extLst = extLst 

83 

84 

85 @property 

86 def count(self): 

87 return len(self.r) 

88 

89 

90 def to_tree(self): 

91 tree = super(RecordList, self).to_tree() 

92 tree.set("xmlns", SHEET_MAIN_NS) 

93 return tree 

94 

95 

96 @property 

97 def path(self): 

98 return self._path.format(self._id) 

99 

100 

101 def _write(self, archive, manifest): 

102 """ 

103 Write to zipfile and update manifest 

104 """ 

105 xml = tostring(self.to_tree()) 

106 archive.writestr(self.path[1:], xml) 

107 manifest.append(self) 

108 

109 

110 def _write_rels(self, archive, manifest): 

111 pass