fields.py 6.8 KB

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