
    *g3                    x    d Z ddlmZ ddlmZ ddlmZ ddlZddl	m
Z
 erddlmZ ddlmZ  G d	 d
      ZddZy)z;
Module for formatting output data in console (to string).
    )annotations)get_terminal_size)TYPE_CHECKINGN)pprint_thing)Iterable)DataFrameFormatterc                      e Zd ZdZdddZddZddZddZedd       Z	edd       Z
dd	Zedd
       Z	 	 	 	 	 	 ddZ	 	 	 	 	 	 ddZddZddZy)StringFormatterz3Formatter for string representation of a dataframe.Nc                d    || _         |j                  | _        |j                  | _        || _        y N)fmtadjframe
line_width)selfr   r   s      b/var/www/html/articles-backend/trend/venv/lib/python3.12/site-packages/pandas/io/formats/string.py__init__zStringFormatter.__init__   s&    77YY
$    c                    | j                         }| j                  j                  r| | j                  j                   }|S r   )_get_string_representationr   should_show_dimensionsdimensions_info)r   texts     r   	to_stringzStringFormatter.to_string   s;    ..088**VDHH4456Dr   c                    | j                   j                         }| j                   j                  r| j                  |      }|S r   )r   get_strcolsis_truncated_insert_dot_separatorsr   strcolss     r   _get_strcolszStringFormatter._get_strcols"   s6    ((&&(88  11':Gr   c                (   | j                   j                  j                  r| j                  S | j	                         }| j
                   | j                  j                  dg| S | j                  r| j                  |      S | j                  |      S N   )r   r   empty_empty_info_liner!   r   r   adjoin_need_to_wrap_around_join_multiline_fit_strcols_to_terminal_widthr   s     r   r   z*StringFormatter._get_string_representation(   s|    88>>(((##%??""488??1/w//$$''00227;;r   c                    dt        | j                        j                   dt        | j                  j                         dt        | j                  j
                         S )NzEmpty z

Columns: z
Index: )typer   __name__r   columnsindexr   s    r   r&   z StringFormatter._empty_info_line7   sY     T$**%../ 0$TZZ%7%789 :"4::#3#3457	
r   c                z    t        | j                  j                  d u xs | j                  j                  dkD        S )Nr   )boolr   max_colsr0   s    r   r(   z$StringFormatter._need_to_wrap_around?   s0    DHH%%-F1B1BQ1FGGr   c                   | j                   j                  | j                   j                        }t        |      }| j                   j                  r| j                  ||      }| j                   j                  r| j                  ||      }|S r   )r   _get_formatted_indextr_framelenis_truncated_horizontally _insert_dot_separator_horizontalis_truncated_vertically_insert_dot_separator_vertical)r   r    	str_indexindex_lengths       r   r   z&StringFormatter._insert_dot_separatorsC   sl    HH11$((2C2CD	9~88--;;G\RG88++99'<PGr   c                    | j                   j                  r| j                   j                  dz   S | j                   j                  S r#   )r   r/   
tr_col_numr0   s    r   _adjusted_tr_col_numz$StringFormatter._adjusted_tr_col_numO   s0    *.((..txx""Q&Qdhh>Q>QQr   c                F    |j                  | j                  dg|z         |S )Nz ...)insertr@   )r   r    r=   s      r   r9   z0StringFormatter._insert_dot_separator_horizontalS   s$     	t006(\2IJr   c                   |t        | j                  j                        z
  }| j                  j                  }t	        |      D ]  \  }}| j
                  j                  ||         }| j                  j                  r|| j                  k(  }nd}|dkD  s|rd}	nd}	|dk(  r| j                  j                  rd}
n	|rd}d}
nd}
| j
                  j                  |	g||
	      d   }|j                  ||z   |        |S )
NF   z...z..r   left   right)mode)r7   r   r6   
tr_row_num	enumerater   r8   r@   r/   justifyrB   )r   r    r=   n_header_rowsrow_numixcolcwidth
is_dot_coldotsdot_modedot_strs               r   r;   z.StringFormatter._insert_dot_separator_verticalY   s     %s488+<+<'==((%% ) 	9GBXX\\#g,/Fxx114#<#<<
"
zZQw488>>!""hh&&vvH&EaHGJJw.8-	9. r   c                   | j                   }d}t        |      }| j                  j                  ra|j	                  d      }|t        j                  |D cg c]  }| j                  j                  |       c}      j                         |z   z  }|D cg c]\  }t        |      dkD  rJt        j                  |D cg c]  }| j                  j                  |       c}      j                         nd^ }}}|J t        ||      }	t        |	      }
g }d}t        |	      D ]  \  }}||| }| j                  j                  r|j                  d       |
dkD  rVt        |d         }|t        |      k  r%||
dz
  k  r|j                  dgdg|dz
  z  z          n|j                  dg|z         |j                   | j                  j                  |g|        |} dj                  |      S c c}w c c}w c c}}w )Nr$   r   z \z   z

)r   listr   r/   popnparrayr   r7   max_binifyrJ   rB   appendr'   join)r   strcols_inputlwidthadjoin_widthr    idxxrO   
col_widthscol_binsnbinsstr_lststartiendrownrowss                    r   r)   zStringFormatter._join_multilinew   s   }%88>>++a.Cbhh=AQ=>BBD|SSF 
 ?B#hlBHHs3!dhhll1o3488:PQQ

 

 !!!:v.H) 	FAs%$Cxx~~

1c"qyCG#g,&1uqy=JJw$519)==>JJuu}-NN?488??<>#>?E	 {{7##3  > 4
s   "G3
&G=<"G8G=8G=c                R   ddl m}  | j                  j                  dg| j	                  d      } ||      j
                  j                         j                         }t               \  }}||z
  }|dz   } ||D 	cg c]0  }	 ||	      j
                  j                         j                         2 c}	      }
t        |
      }d}|dkD  r[|dkD  rV|dz  }t        |dz        }|
j                  |   }|
|   }||dz   z  }|
j                  |      }
t        |
      }|dkD  r|dkD  rV|| j                  j                  z
  }t        |d      }|| j                  _        | j                  j                          | j                         } | j                  j                  dg| S c c}	w )Nr   )Seriesr$   
   )pandasro   r   r'   splitstrr7   r\   r   roundr/   dropr   max_cols_fittedtruncater!   )r   r    ro   linesmax_lenwidth_difadj_difelecol_lensn_colscountermidmid_ixcol_lenrw   s                    r   r*   z.StringFormatter._fit_strcols_to_terminal_width   s   !,G,2248-##'')--/$&qo''J36#;??..0446JKXkfqjqLG
#C^^C(Fv&Gw{"G}}V,H]F kfqj !488>>1oq1#2  	##%txxq+7++/ Ks   >5F$r   )r   r   r   z
int | NonereturnNone)r   rt   )r   list[list[str]])r   r2   )r    r   r   r   )r   int)r    r   r=   r   r   r   )r`   zIterable[list[str]]r   rt   )r    r   r   rt   )r-   
__module____qualname____doc__r   r   r!   r   propertyr&   r(   r   r@   r9   r;   r)   r*    r   r   r
   r
      s    =%< 
 
 H H
 R R&69	&69	< $D!,r   r
   c                   d}g }d}t        |       dz
  }t        |       D ]I  \  }}||z   }||z  }||k(  r|dz   |kD  xr |dkD  }	n|dz   |kD  xr |dkD  }	|	s7|j                  |       |}K |j                  t        |              |S )Nr$   r   rq   )r7   rJ   r^   )
colsr   rb   bins
curr_widthi_last_columnrj   w
w_adjoinedwraps
             r   r]   r]      s    LDJIMM$ 	$1%
j 
A>J.81q5D>J.81q5DKKN#J	$ 	KKD	Kr   )r   	list[int]r   r   r   r   )r   
__future__r   shutilr   typingr   numpyrZ   pandas.io.formats.printingr   collections.abcr   pandas.io.formats.formatr   r
   r]   r   r   r   <module>r      s6    # $    3(;g, g,Tr   