a
    Sic                     @  st   d Z ddlmZ ddlmZ ddlmZmZ ddlZ	ddl
mZ erPddlmZ G dd	 d	Zd
dd
dddZdS )z;
Module for formatting output data in console (to string).
    )annotations)get_terminal_size)TYPE_CHECKINGIterableN)pprint_thing)DataFrameFormatterc                   @  s   e Zd ZdZd(ddddddZd	d
ddZdd
ddZd	d
ddZed	d
ddZ	edd
ddZ
dddddZedd
ddZddddddZddddd d!Zd"d	d#d$d%Zdd	dd&d'ZdS ))StringFormatterz3Formatter for string representation of a dataframe.Nr   z
int | NoneNone)fmt
line_widthreturnc                 C  s    || _ |j| _|j| _|| _d S N)r
   adjframer   )selfr
   r    r   T/var/www/html/django/DPS/env/lib/python3.9/site-packages/pandas/io/formats/string.py__init__   s    zStringFormatter.__init__str)r   c                 C  s&   |   }| jjr"d|| jjg}|S )N )_get_string_representationr
   should_show_dimensionsjoindimensions_info)r   textr   r   r   	to_string   s    zStringFormatter.to_stringzlist[list[str]]c                 C  s    | j  }| j jr| |}|S r   )r
   get_strcolsis_truncated_insert_dot_separatorsr   strcolsr   r   r   _get_strcols#   s    

zStringFormatter._get_strcolsc                 C  sP   | j jjr| jS |  }| jd u r6| jjdg|R  S | jrF| 	|S | 
|S N   )r
   r   empty_empty_info_liner!   r   r   adjoin_need_to_wrap_around_join_multiline_fit_strcols_to_terminal_widthr   r   r   r   r   )   s    


z*StringFormatter._get_string_representationc                 C  s.   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   r   r   r   r%   8   s    

z StringFormatter._empty_info_lineboolc                 C  s   t | jjd u p| jjdkS )Nr   )r/   r
   max_colsr.   r   r   r   r'   @   s    z$StringFormatter._need_to_wrap_around)r    r   c                 C  sD   | j | j j}t|}| j jr,| ||}| j jr@| ||}|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_lengthr   r   r   r   D   s    z&StringFormatter._insert_dot_separatorsintc                 C  s   | j jr| j jd S | j jS r"   )r
   r-   
tr_col_numr.   r   r   r   _adjusted_tr_col_numP   s    z$StringFormatter._adjusted_tr_col_num)r    r9   r   c                 C  s   | | jdg|  |S )Nz ...)insertr<   )r   r    r9   r   r   r   r5   T   s    z0StringFormatter._insert_dot_separator_horizontalc                 C  s   |t | jj }| jj}t|D ]\}}| j || }| jjrL|| jk}nd}|dks\|rbd}	nd}	|dkr|| jjr|d}
n|rd}d}
nd}
| jj	|	g||
d	d }|
|| | q |S )
NF   z...z..r   left   right)mode)r3   r
   r2   
tr_row_num	enumerater   r4   r<   r-   justifyr=   )r   r    r9   n_header_rowsrow_numixcolZcwidthZ
is_dot_coldotsZdot_modedot_strr   r   r   r7   Z   s&    z.StringFormatter._insert_dot_separator_verticalzIterable[list[str]])strcols_inputr   c                   s\   j }d}t|} jjrH|d}|t fdd|D  | 8 } fdd|D }|d usfJ t||}t	|} jj
r jjd usJ  jjd }	n
t	 j}	g }
d}t|D ]\}}||| } jjr|d| |dkr2|t	|kr"||d k r"|dgdg|	d    n|dg|	  |
 jj|g|R   |}qd	|
S )
Nr#   r   c                   s   g | ]} j |qS r   r   r3   .0xr.   r   r   
<listcomp>       z3StringFormatter._join_multiline.<locals>.<listcomp>c                   s8   g | ]0}t |d kr0t fdd|D  nd qS )r   c                   s   g | ]} j |qS r   rM   rN   r.   r   r   rQ      rR   z>StringFormatter._join_multiline.<locals>.<listcomp>.<listcomp>)r3   nparraymax)rO   rI   r.   r   r   rQ      s   z \z   z

)r   listr
   r-   poprS   rT   rU   _binifyr3   r6   max_rows_fittedr   rD   r=   appendr   r&   r   )r   rL   Zlwidthadjoin_widthr    idxZ
col_widthsZcol_binsnbinsnrowsZstr_lststartiendrowr   r.   r   r(   x   s:    
$



zStringFormatter._join_multilinec                   s  ddl m  | jjdg|R  d} |j  }t \}}|| }|d }  fdd|D }t|}	d}
|dkr|	dkr|
d7 }
t	|	d }|j
| }|| }||d 8 }||}t|}	qt|	| jj
 }t|d}|| j_| j  |  }| jjdg|R  S )Nr   Seriesr#   
c                   s   g | ]} | t qS r   )applyr3   rU   )rO   elerd   r   r   rQ      rR   zBStringFormatter._fit_strcols_to_terminal_width.<locals>.<listcomp>   )pandasre   r   r&   splitr   r3   rU   r   roundr-   dropr
   max_cols_fittedtruncater!   )r   r    linesmax_lenwidth_difZadj_difZcol_lensZn_colscountermidZmid_ixcol_lenrn   r   rd   r   r)      s.    





z.StringFormatter._fit_strcols_to_terminal_width)N)r+   
__module____qualname____doc__r   r   r!   r   propertyr%   r'   r   r<   r5   r7   r(   r)   r   r   r   r   r      s    'r   z	list[int]r:   )colsr   r   c           
      C  s   d}g }d}t | d }t| D ]\\}}|| }||7 }||krV|d |koR|dk}	n|d |koh|dk}	|	r || |}q |t |  |S )Nr#   r   ri   )r3   rD   r[   )
r|   r   r\   bins
curr_widthZi_last_columnra   wZ
w_adjoinedwrapr   r   r   rY      s    
rY   )rz   
__future__r   shutilr   typingr   r   numpyrS   pandas.io.formats.printingr   pandas.io.formats.formatr   r   rY   r   r   r   r   <module>   s    0