@@ -748,6 +748,7 @@ def __init__(
748748 column_borders : bool = True ,
749749 padding : int = 1 ,
750750 border_fg : Optional [ansi .FgColor ] = None ,
751+ border_bg : Optional [ansi .BgColor ] = None ,
751752 header_bg : Optional [ansi .BgColor ] = None ,
752753 data_bg : Optional [ansi .BgColor ] = None ,
753754 ) -> None :
@@ -762,6 +763,7 @@ def __init__(
762763 a row's cells. (Defaults to True)
763764 :param padding: number of spaces between text and left/right borders of cell
764765 :param border_fg: optional foreground color for borders (defaults to None)
766+ :param border_bg: optional background color for borders (defaults to None)
765767 :param header_bg: optional background color for header cells (defaults to None)
766768 :param data_bg: optional background color for data cells (defaults to None)
767769 :raises: ValueError if tab_width is less than 1
@@ -776,18 +778,19 @@ def __init__(
776778 self .padding = padding
777779
778780 self .border_fg = border_fg
781+ self .border_bg = border_bg
779782 self .header_bg = header_bg
780783 self .data_bg = data_bg
781784
782- def apply_border_fg (self , value : Any ) -> str :
785+ def apply_border_color (self , value : Any ) -> str :
783786 """
784- If defined, apply the border foreground color to border text
787+ If defined, apply the border foreground and background colors
785788 :param value: object whose text is to be colored
786789 :return: formatted text
787790 """
788- if self .border_fg is None :
791+ if self .border_fg is None and self . border_bg is None :
789792 return str (value )
790- return ansi .style (value , fg = self .border_fg )
793+ return ansi .style (value , fg = self .border_fg , bg = self . border_bg )
791794
792795 def apply_header_bg (self , value : Any ) -> str :
793796 """
@@ -853,10 +856,10 @@ def generate_table_top_border(self) -> str:
853856
854857 return self .generate_row (
855858 row_data = self .empty_data ,
856- fill_char = self .apply_border_fg (fill_char ),
857- pre_line = self .apply_border_fg (pre_line ),
858- inter_cell = self .apply_border_fg (inter_cell ),
859- post_line = self .apply_border_fg (post_line ),
859+ fill_char = self .apply_border_color (fill_char ),
860+ pre_line = self .apply_border_color (pre_line ),
861+ inter_cell = self .apply_border_color (inter_cell ),
862+ post_line = self .apply_border_color (post_line ),
860863 )
861864
862865 def generate_header_bottom_border (self ) -> str :
@@ -874,32 +877,32 @@ def generate_header_bottom_border(self) -> str:
874877
875878 return self .generate_row (
876879 row_data = self .empty_data ,
877- fill_char = self .apply_border_fg (fill_char ),
878- pre_line = self .apply_border_fg (pre_line ),
879- inter_cell = self .apply_border_fg (inter_cell ),
880- post_line = self .apply_border_fg (post_line ),
880+ fill_char = self .apply_border_color (fill_char ),
881+ pre_line = self .apply_border_color (pre_line ),
882+ inter_cell = self .apply_border_color (inter_cell ),
883+ post_line = self .apply_border_color (post_line ),
881884 )
882885
883886 def generate_row_bottom_border (self ) -> str :
884887 """Generate a border which appears at the bottom of rows"""
885- fill_char = self . apply_data_bg ( '─' )
888+ fill_char = '─'
886889
887- pre_line = '╟' + self .apply_data_bg ( self . padding * '─' )
890+ pre_line = '╟' + self .padding * '─'
888891
889892 inter_cell = self .padding * '─'
890893 if self .column_borders :
891894 inter_cell += '┼'
892895 inter_cell += self .padding * '─'
893- inter_cell = self . apply_data_bg ( inter_cell )
896+ inter_cell = inter_cell
894897
895- post_line = self .apply_data_bg ( self . padding * '─' ) + '╢'
898+ post_line = self .padding * '─' + '╢'
896899
897900 return self .generate_row (
898901 row_data = self .empty_data ,
899- fill_char = self .apply_border_fg (fill_char ),
900- pre_line = self .apply_border_fg (pre_line ),
901- inter_cell = self .apply_border_fg (inter_cell ),
902- post_line = self .apply_border_fg (post_line ),
902+ fill_char = self .apply_border_color (fill_char ),
903+ pre_line = self .apply_border_color (pre_line ),
904+ inter_cell = self .apply_border_color (inter_cell ),
905+ post_line = self .apply_border_color (post_line ),
903906 )
904907
905908 def generate_table_bottom_border (self ) -> str :
@@ -917,25 +920,24 @@ def generate_table_bottom_border(self) -> str:
917920
918921 return self .generate_row (
919922 row_data = self .empty_data ,
920- fill_char = self .apply_border_fg (fill_char ),
921- pre_line = self .apply_border_fg (pre_line ),
922- inter_cell = self .apply_border_fg (inter_cell ),
923- post_line = self .apply_border_fg (post_line ),
923+ fill_char = self .apply_border_color (fill_char ),
924+ pre_line = self .apply_border_color (pre_line ),
925+ inter_cell = self .apply_border_color (inter_cell ),
926+ post_line = self .apply_border_color (post_line ),
924927 )
925928
926929 def generate_header (self ) -> str :
927930 """Generate table header"""
928931 fill_char = self .apply_header_bg (SPACE )
929932
930- pre_line = self .apply_border_fg ('║' ) + self .apply_header_bg (self .padding * SPACE )
933+ pre_line = self .apply_border_color ('║' ) + self .apply_header_bg (self .padding * SPACE )
931934
932- inter_cell = self .padding * SPACE
935+ inter_cell = self .apply_header_bg ( self . padding * SPACE )
933936 if self .column_borders :
934- inter_cell += self .apply_border_fg ('│' )
935- inter_cell += self .padding * SPACE
936- inter_cell = self .apply_header_bg (inter_cell )
937+ inter_cell += self .apply_border_color ('│' )
938+ inter_cell += self .apply_header_bg (self .padding * SPACE )
937939
938- post_line = self .apply_header_bg (self .padding * SPACE ) + self .apply_border_fg ('║' )
940+ post_line = self .apply_header_bg (self .padding * SPACE ) + self .apply_border_color ('║' )
939941
940942 # Apply background color to header text in Columns which allow it
941943 to_display : List [Any ] = []
@@ -968,15 +970,14 @@ def generate_data_row(self, row_data: Sequence[Any]) -> str:
968970 """
969971 fill_char = self .apply_data_bg (SPACE )
970972
971- pre_line = self .apply_border_fg ('║' ) + self .apply_data_bg (self .padding * SPACE )
973+ pre_line = self .apply_border_color ('║' ) + self .apply_data_bg (self .padding * SPACE )
972974
973- inter_cell = self .padding * SPACE
975+ inter_cell = self .apply_data_bg ( self . padding * SPACE )
974976 if self .column_borders :
975- inter_cell += self .apply_border_fg ('│' )
976- inter_cell += self .padding * SPACE
977- inter_cell = self .apply_data_bg (inter_cell )
977+ inter_cell += self .apply_border_color ('│' )
978+ inter_cell += self .apply_data_bg (self .padding * SPACE )
978979
979- post_line = self .apply_data_bg (self .padding * SPACE ) + self .apply_border_fg ('║' )
980+ post_line = self .apply_data_bg (self .padding * SPACE ) + self .apply_border_color ('║' )
980981
981982 # Apply background color to data text in Columns which allow it
982983 to_display : List [Any ] = []
@@ -1041,6 +1042,7 @@ def __init__(
10411042 column_borders : bool = True ,
10421043 padding : int = 1 ,
10431044 border_fg : Optional [ansi .FgColor ] = None ,
1045+ border_bg : Optional [ansi .BgColor ] = None ,
10441046 header_bg : Optional [ansi .BgColor ] = None ,
10451047 odd_bg : Optional [ansi .BgColor ] = None ,
10461048 even_bg : Optional [ansi .BgColor ] = ansi .Bg .DARK_GRAY ,
@@ -1058,14 +1060,21 @@ def __init__(
10581060 a row's cells. (Defaults to True)
10591061 :param padding: number of spaces between text and left/right borders of cell
10601062 :param border_fg: optional foreground color for borders (defaults to None)
1063+ :param border_bg: optional background color for borders (defaults to None)
10611064 :param header_bg: optional background color for header cells (defaults to None)
10621065 :param odd_bg: optional background color for odd numbered data rows (defaults to None)
10631066 :param even_bg: optional background color for even numbered data rows (defaults to StdBg.DARK_GRAY)
10641067 :raises: ValueError if tab_width is less than 1
10651068 :raises: ValueError if padding is less than 0
10661069 """
10671070 super ().__init__ (
1068- cols , tab_width = tab_width , column_borders = column_borders , padding = padding , border_fg = border_fg , header_bg = header_bg
1071+ cols ,
1072+ tab_width = tab_width ,
1073+ column_borders = column_borders ,
1074+ padding = padding ,
1075+ border_fg = border_fg ,
1076+ border_bg = border_bg ,
1077+ header_bg = header_bg ,
10691078 )
10701079 self .row_num = 1
10711080 self .odd_bg = odd_bg
0 commit comments