fields.py 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326
  1. # Copyright (c) 2010-2024 openpyxl
  2. from openpyxl.descriptors.serialisable import Serialisable
  3. from openpyxl.descriptors import (
  4. Typed,
  5. DateTime,
  6. Bool,
  7. Float,
  8. String,
  9. Integer,
  10. Sequence,
  11. )
  12. from openpyxl.descriptors.excel import HexBinary
  13. class Index(Serialisable):
  14. tagname = "x"
  15. v = Integer(allow_none=True)
  16. def __init__(self,
  17. v=0,
  18. ):
  19. self.v = v
  20. class Tuple(Serialisable):
  21. tagname = "tpl"
  22. fld = Integer(allow_none=True)
  23. hier = Integer(allow_none=True)
  24. item = Integer()
  25. def __init__(self,
  26. fld=None,
  27. hier=None,
  28. item=None,
  29. ):
  30. self.fld = fld
  31. self.hier = hier
  32. self.item = item
  33. class TupleList(Serialisable):
  34. tagname = "tpls"
  35. c = Integer(allow_none=True)
  36. tpl = Typed(expected_type=Tuple, )
  37. __elements__ = ('tpl',)
  38. def __init__(self,
  39. c=None,
  40. tpl=None,
  41. ):
  42. self.c = c
  43. self.tpl = tpl
  44. class Missing(Serialisable):
  45. tagname = "m"
  46. tpls = Sequence(expected_type=TupleList)
  47. x = Sequence(expected_type=Index)
  48. u = Bool(allow_none=True)
  49. f = Bool(allow_none=True)
  50. c = String(allow_none=True)
  51. cp = Integer(allow_none=True)
  52. _in = Integer(allow_none=True)
  53. bc = HexBinary(allow_none=True)
  54. fc = HexBinary(allow_none=True)
  55. i = Bool(allow_none=True)
  56. un = Bool(allow_none=True)
  57. st = Bool(allow_none=True)
  58. b = Bool(allow_none=True)
  59. __elements__ = ('tpls', 'x')
  60. def __init__(self,
  61. tpls=(),
  62. x=(),
  63. u=None,
  64. f=None,
  65. c=None,
  66. cp=None,
  67. _in=None,
  68. bc=None,
  69. fc=None,
  70. i=None,
  71. un=None,
  72. st=None,
  73. b=None,
  74. ):
  75. self.tpls = tpls
  76. self.x = x
  77. self.u = u
  78. self.f = f
  79. self.c = c
  80. self.cp = cp
  81. self._in = _in
  82. self.bc = bc
  83. self.fc = fc
  84. self.i = i
  85. self.un = un
  86. self.st = st
  87. self.b = b
  88. class Number(Serialisable):
  89. tagname = "n"
  90. tpls = Sequence(expected_type=TupleList)
  91. x = Sequence(expected_type=Index)
  92. v = Float()
  93. u = Bool(allow_none=True)
  94. f = Bool(allow_none=True)
  95. c = String(allow_none=True)
  96. cp = Integer(allow_none=True)
  97. _in = Integer(allow_none=True)
  98. bc = HexBinary(allow_none=True)
  99. fc = HexBinary(allow_none=True)
  100. i = Bool(allow_none=True)
  101. un = Bool(allow_none=True)
  102. st = Bool(allow_none=True)
  103. b = Bool(allow_none=True)
  104. __elements__ = ('tpls', 'x')
  105. def __init__(self,
  106. tpls=(),
  107. x=(),
  108. v=None,
  109. u=None,
  110. f=None,
  111. c=None,
  112. cp=None,
  113. _in=None,
  114. bc=None,
  115. fc=None,
  116. i=None,
  117. un=None,
  118. st=None,
  119. b=None,
  120. ):
  121. self.tpls = tpls
  122. self.x = x
  123. self.v = v
  124. self.u = u
  125. self.f = f
  126. self.c = c
  127. self.cp = cp
  128. self._in = _in
  129. self.bc = bc
  130. self.fc = fc
  131. self.i = i
  132. self.un = un
  133. self.st = st
  134. self.b = b
  135. class Error(Serialisable):
  136. tagname = "e"
  137. tpls = Typed(expected_type=TupleList, allow_none=True)
  138. x = Sequence(expected_type=Index)
  139. v = String()
  140. u = Bool(allow_none=True)
  141. f = Bool(allow_none=True)
  142. c = String(allow_none=True)
  143. cp = Integer(allow_none=True)
  144. _in = Integer(allow_none=True)
  145. bc = HexBinary(allow_none=True)
  146. fc = HexBinary(allow_none=True)
  147. i = Bool(allow_none=True)
  148. un = Bool(allow_none=True)
  149. st = Bool(allow_none=True)
  150. b = Bool(allow_none=True)
  151. __elements__ = ('tpls', 'x')
  152. def __init__(self,
  153. tpls=None,
  154. x=(),
  155. v=None,
  156. u=None,
  157. f=None,
  158. c=None,
  159. cp=None,
  160. _in=None,
  161. bc=None,
  162. fc=None,
  163. i=None,
  164. un=None,
  165. st=None,
  166. b=None,
  167. ):
  168. self.tpls = tpls
  169. self.x = x
  170. self.v = v
  171. self.u = u
  172. self.f = f
  173. self.c = c
  174. self.cp = cp
  175. self._in = _in
  176. self.bc = bc
  177. self.fc = fc
  178. self.i = i
  179. self.un = un
  180. self.st = st
  181. self.b = b
  182. class Boolean(Serialisable):
  183. tagname = "b"
  184. x = Sequence(expected_type=Index)
  185. v = Bool()
  186. u = Bool(allow_none=True)
  187. f = Bool(allow_none=True)
  188. c = String(allow_none=True)
  189. cp = Integer(allow_none=True)
  190. __elements__ = ('x',)
  191. def __init__(self,
  192. x=(),
  193. v=None,
  194. u=None,
  195. f=None,
  196. c=None,
  197. cp=None,
  198. ):
  199. self.x = x
  200. self.v = v
  201. self.u = u
  202. self.f = f
  203. self.c = c
  204. self.cp = cp
  205. class Text(Serialisable):
  206. tagname = "s"
  207. tpls = Sequence(expected_type=TupleList)
  208. x = Sequence(expected_type=Index)
  209. v = String()
  210. u = Bool(allow_none=True)
  211. f = Bool(allow_none=True)
  212. c = String(allow_none=True)
  213. cp = Integer(allow_none=True)
  214. _in = Integer(allow_none=True)
  215. bc = HexBinary(allow_none=True)
  216. fc = HexBinary(allow_none=True)
  217. i = Bool(allow_none=True)
  218. un = Bool(allow_none=True)
  219. st = Bool(allow_none=True)
  220. b = Bool(allow_none=True)
  221. __elements__ = ('tpls', 'x')
  222. def __init__(self,
  223. tpls=(),
  224. x=(),
  225. v=None,
  226. u=None,
  227. f=None,
  228. c=None,
  229. cp=None,
  230. _in=None,
  231. bc=None,
  232. fc=None,
  233. i=None,
  234. un=None,
  235. st=None,
  236. b=None,
  237. ):
  238. self.tpls = tpls
  239. self.x = x
  240. self.v = v
  241. self.u = u
  242. self.f = f
  243. self.c = c
  244. self.cp = cp
  245. self._in = _in
  246. self.bc = bc
  247. self.fc = fc
  248. self.i = i
  249. self.un = un
  250. self.st = st
  251. self.b = b
  252. class DateTimeField(Serialisable):
  253. tagname = "d"
  254. x = Sequence(expected_type=Index)
  255. v = DateTime()
  256. u = Bool(allow_none=True)
  257. f = Bool(allow_none=True)
  258. c = String(allow_none=True)
  259. cp = Integer(allow_none=True)
  260. __elements__ = ('x',)
  261. def __init__(self,
  262. x=(),
  263. v=None,
  264. u=None,
  265. f=None,
  266. c=None,
  267. cp=None,
  268. ):
  269. self.x = x
  270. self.v = v
  271. self.u = u
  272. self.f = f
  273. self.c = c
  274. self.cp = cp