Coverage for /var/srv/projects/api.amasfac.comuna18.com/tmp/venv/lib/python3.9/site-packages/openpyxl/styles/borders.py: 82%
66 statements
« prev ^ index » next coverage.py v6.4.4, created at 2023-07-17 14:22 -0600
« prev ^ index » next coverage.py v6.4.4, created at 2023-07-17 14:22 -0600
1# Copyright (c) 2010-2022 openpyxl
3from openpyxl.compat import safe_string
4from openpyxl.descriptors import (
5 NoneSet,
6 Typed,
7 Bool,
8 Alias,
9 Sequence,
10 Integer,
11)
12from openpyxl.descriptors.serialisable import Serialisable
14from .colors import ColorDescriptor
17BORDER_NONE = None
18BORDER_DASHDOT = 'dashDot'
19BORDER_DASHDOTDOT = 'dashDotDot'
20BORDER_DASHED = 'dashed'
21BORDER_DOTTED = 'dotted'
22BORDER_DOUBLE = 'double'
23BORDER_HAIR = 'hair'
24BORDER_MEDIUM = 'medium'
25BORDER_MEDIUMDASHDOT = 'mediumDashDot'
26BORDER_MEDIUMDASHDOTDOT = 'mediumDashDotDot'
27BORDER_MEDIUMDASHED = 'mediumDashed'
28BORDER_SLANTDASHDOT = 'slantDashDot'
29BORDER_THICK = 'thick'
30BORDER_THIN = 'thin'
33class Side(Serialisable):
35 """Border options for use in styles.
36 Caution: if you do not specify a border_style, other attributes will
37 have no effect !"""
39 __fields__ = ('style',
40 'color')
42 color = ColorDescriptor(allow_none=True)
43 style = NoneSet(values=('dashDot','dashDotDot', 'dashed','dotted',
44 'double','hair', 'medium', 'mediumDashDot', 'mediumDashDotDot',
45 'mediumDashed', 'slantDashDot', 'thick', 'thin')
46 )
47 border_style = Alias('style')
49 def __init__(self, style=None, color=None, border_style=None):
50 if border_style is not None: 50 ↛ 51line 50 didn't jump to line 51, because the condition on line 50 was never true
51 style = border_style
52 self.style = style
53 self.color = color
56class Border(Serialisable):
57 """Border positioning for use in styles."""
59 tagname = "border"
61 __fields__ = ('left',
62 'right',
63 'top',
64 'bottom',
65 'diagonal',
66 'diagonal_direction',
67 'vertical',
68 'horizontal')
69 __elements__ = ('start', 'end', 'left', 'right', 'top', 'bottom',
70 'diagonal', 'vertical', 'horizontal')
72 # child elements
73 start = Typed(expected_type=Side, allow_none=True)
74 end = Typed(expected_type=Side, allow_none=True)
75 left = Typed(expected_type=Side, allow_none=True)
76 right = Typed(expected_type=Side, allow_none=True)
77 top = Typed(expected_type=Side, allow_none=True)
78 bottom = Typed(expected_type=Side, allow_none=True)
79 diagonal = Typed(expected_type=Side, allow_none=True)
80 vertical = Typed(expected_type=Side, allow_none=True)
81 horizontal = Typed(expected_type=Side, allow_none=True)
82 # attributes
83 outline = Bool()
84 diagonalUp = Bool()
85 diagonalDown = Bool()
87 def __init__(self, left=None, right=None, top=None,
88 bottom=None, diagonal=None, diagonal_direction=None,
89 vertical=None, horizontal=None, diagonalUp=False, diagonalDown=False,
90 outline=True, start=None, end=None):
91 self.left = left
92 self.right = right
93 self.top = top
94 self.bottom = bottom
95 self.diagonal = diagonal
96 self.vertical = vertical
97 self.horizontal = horizontal
98 self.diagonal_direction = diagonal_direction
99 self.diagonalUp = diagonalUp
100 self.diagonalDown = diagonalDown
101 self.outline = outline
102 self.start = start
103 self.end = end
105 def __iter__(self):
106 for attr in self.__attrs__:
107 value = getattr(self, attr)
108 if value and attr != "outline":
109 yield attr, safe_string(value)
110 elif attr == "outline" and not value:
111 yield attr, safe_string(value)
113DEFAULT_BORDER = Border(left=Side(), right=Side(), top=Side(), bottom=Side(), diagonal=Side())