
    cMh)                       d Z ddlmZ ddlmZmZmZmZ ddlZ	ddl
Z
ddlmZmZmZ ddlZddlmZ ddlmZ ddlmZ dd	lmZmZmZmZ dd
lmZ ddlm Z  ddl!m"Z" erddlm#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z) ddl*m+Z+ dZ, G d d          Z-dS )z3
Module for formatting output data into CSV files.
    )annotations)HashableIterableIteratorSequenceN)TYPE_CHECKINGAnycast)writers)SequenceNotStr)cache_readonly)ABCDatetimeIndexABCIndexABCMultiIndexABCPeriodIndex)notna)Index)
get_handle)CompressionOptionsFilePathFloatFormatType
IndexLabelStorageOptionsWriteBuffernpt)DataFrameFormatteri c                     e Zd ZU ded<   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dPdQd(ZedRd)            ZedSd+            ZedRd,            ZedTd.            Z	edUd/            Z
dVd1ZdWd3ZdWd4ZdWd5ZdXd6ZedUd7            ZdYd9ZdZd;Zed[d=            Zed\d?            Zed]d@            ZedUdA            ZedUdB            Zed^dD            Zed_dF            Zd`dGZd`dHZd`dIZdadKZd`dLZdbdOZ dS )cCSVFormatternpt.NDArray[np.object_]cols ,Nwstrictinfer
"T	formatterr   path_or_buf0FilePath | WriteBuffer[str] | WriteBuffer[bytes]sepstrSequence[Hashable] | Noneindex_labelIndexLabel | Nonemodeencoding
str | Noneerrorscompressionr   quoting
int | Nonelineterminator	chunksize	quotechardate_formatdoublequotebool
escapecharstorage_optionsStorageOptions | NonereturnNonec                   || _         | j         j        | _        || _        || _        |	| _        || _        || _        || _        | 	                    |          | _
        || _        |
pt          j        | _        |                     |          | _        || _        || _        |pt&          j        | _        || _        |                     |          | _        |                     |          | _        d S N)fmtframeobjfilepath_or_bufferr1   r4   r0   r>   r+   _initialize_index_labelr.   r3   csvlibQUOTE_MINIMALr5   _initialize_quotecharr9   r;   r=   oslinesepr7   r:   _initialize_columnsr    _initialize_chunksizer8   )selfr(   r)   r+   r    r.   r0   r1   r3   r4   r5   r7   r8   r9   r:   r;   r=   r>   s                     V/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pandas/io/formats/csvs.py__init__zCSVFormatter.__init__;   s    ( 8>"- /:	.77DD6&"633I>>&$,:
&,,T22	33I>>    c                    | j         j        S rC   )rD   na_reprP   s    rQ   rU   zCSVFormatter.na_repe       xrS   FloatFormatType | Nonec                    | j         j        S rC   )rD   float_formatrV   s    rQ   rZ   zCSVFormatter.float_formati   s    x$$rS   c                    | j         j        S rC   )rD   decimalrV   s    rQ   r\   zCSVFormatter.decimalm   s    xrS   bool | SequenceNotStr[str]c                    | j         j        S rC   )rD   headerrV   s    rQ   r_   zCSVFormatter.headerq   rW   rS   c                    | j         j        S rC   )rD   indexrV   s    rQ   ra   zCSVFormatter.indexu   s    x~rS   r   c                    |durF||                                  S t          |t          t          t          j        t          f          s|gS |S )NF)_get_index_label_from_obj
isinstancelisttuplenpndarrayr   rP   r.   s     rQ   rH   z$CSVFormatter._initialize_index_labely   sP    e##"55777dE2:x-PQQ %#}$rS   Sequence[Hashable]c                    t          | j        j        t                    r|                                 S |                                 S rC   )rd   rF   ra   r   _get_index_label_multiindex_get_index_label_flatrV   s    rQ   rc   z&CSVFormatter._get_index_label_from_obj   s<    dhnm44 	033555--///rS   c                8    d | j         j        j        D             S )Nc                    g | ]}|pd S r!    ).0names     rQ   
<listcomp>z<CSVFormatter._get_index_label_multiindex.<locals>.<listcomp>   s    <<<t
<<<rS   )rF   ra   namesrV   s    rQ   rl   z(CSVFormatter._get_index_label_multiindex   s    <<tx~';<<<<rS   c                4    | j         j        j        }|dgn|gS )Nr!   )rF   ra   rs   ri   s     rQ   rm   z"CSVFormatter._get_index_label_flat   s!    hn)"*tt=rS   c                4    | j         t          j        k    r|S d S rC   )r5   rI   
QUOTE_NONE)rP   r9   s     rQ   rK   z"CSVFormatter._initialize_quotechar   s    <6,,,trS   c                Z    t          t          | j        j        t                              S rC   )r<   rd   rF   columnsr   rV   s    rQ   has_mi_columnszCSVFormatter.has_mi_columns   s    Jtx/??@@@rS   Iterable[Hashable] | Nonec                   | j         r|d}t          |          |Rt          |t                    r |j        di | j        }nt          |          }| j        j        d d |f         | _        | j        j	        } |j        di | j        S )Nz4cannot specify cols with a MultiIndex on the columnsrq   )
r{   	TypeErrorrd   r   _get_values_for_csv_number_formatre   rF   locrz   )rP   r    msgnew_colss       rQ   rN   z CSVFormatter._initialize_columns   s      	%Lnn$$)) "/t/FF$2EFFDzzx|AAAtG,DH 8#+x+BBd.ABBBrS   intc                d    | t           t          | j                  pdz  pdS t          |          S N   )_DEFAULT_CHUNKSIZE_CELLSlenr    r   )rP   r8   s     rQ   rO   z"CSVFormatter._initialize_chunksize   s1    ,TY1D1EK!K9~~rS   dict[str, Any]c                D    | j         | j        | j        | j        | j        dS )z7Dictionary used for storing number formatting settings.rU   rZ   r:   r5   r\   r   rV   s    rQ   r   zCSVFormatter._number_format   s.     k -+||
 
 	
rS   r   c                      j         j        }t          |t          t          f          r# j        t           fd|D                       }n)t          |t                    r|                                }|S )Nc                f    g | ]-}t          |          r|                    j                  nd .S rp   )r   strftimer:   )rr   xrP   s     rQ   rt   z+CSVFormatter.data_index.<locals>.<listcomp>   s8    VVVaqAD,---rVVVrS   )	rF   ra   rd   r   r   r:   r   r   remove_unused_levels)rP   
data_indexs   ` rQ   r   zCSVFormatter.data_index   s    X^
z$4n#EFF	; ,VVVV:VVV JJ 
M22 	;#88::JrS   c                @    | j         rt          | j        dd          S dS )Nnlevelsr   r   )ra   getattrr   rV   s    rQ   r   zCSVFormatter.nlevels   s%    : 	4?Iq9991rS   c                f    t          | j        t          t          t          j        t          f          S rC   )rd   r_   rf   re   rg   rh   r   rV   s    rQ   _has_aliaseszCSVFormatter._has_aliases   s    $+tRZ'JKKKrS   c                8    t          | j        p| j                  S rC   )r<   r   r_   rV   s    rQ   _need_to_save_headerz!CSVFormatter._need_to_save_header   s    D%4555rS   SequenceNotStr[Hashable]c                h   | j         rt          | j        t                    rJ t	          | j                  t	          | j                  k    r:t          dt	          | j                   dt	          | j                   d          | j        S t          t          t                   | j                  S )NzWriting z cols but got z aliases)
r   rd   r_   r<   r   r    
ValueErrorr
   r   r   rV   s    rQ   
write_colszCSVFormatter.write_cols   s     
	=!$+t444444;3ty>>11 Ws49~~WWS=M=MWWW   ; x0$)<<<rS   list[Hashable]c                    g }| j         r7| j        r0t          | j        t                    sJ t	          | j                  }| j        r| j        r|t	          | j                  z  }|S rC   )ra   r.   rd   r   re   r{   r   r   )rP   encoded_labelss     rQ   r   zCSVFormatter.encoded_labels   ss    )+: 	4$* 	4d.99999!$"233N" 	4d&7 	4d4?333NrS   c           
     L   t          | j        | j        | j        | j        | j        | j                  5 }t          j        |j	        | j
        | j        | j        | j        | j        | j                  | _        |                                  ddd           dS # 1 swxY w Y   dS )z+
        Create the writer & save.
        )r1   r3   r4   r>   )r7   	delimiterr5   r;   r=   r9   N)r   rG   r0   r1   r3   r4   r>   rI   writerhandler7   r+   r5   r;   r=   r9   _save)rP   handless     rQ   savezCSVFormatter.save   s    
 #I];( 0
 
 
 	  -#2( ,?.  DK JJLLL'	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   ABB Bc                d    | j         r|                                  |                                  d S rC   )r   _save_header
_save_bodyrV   s    rQ   r   zCSVFormatter._save  s5    $ 	 rS   c                    | j         r| j        r!| j                            | j                   d S |                                 D ]}| j                            |           d S rC   )r{   r   r   writerowr    _generate_multiindex_header_rows)rP   rows     rQ   r   zCSVFormatter._save_header  st    " 	*d&7 	*K  !455555<<>> * *$$S))))* *rS   Iterator[list[Hashable]]c              #  <  K   | j         j        }t          |j                  D ]}g }| j        r|                    |j        |                    t          | j        t                    rFt          | j                  dk    r.|                    dgt          | j                  dz
  z             |                    |                    |                     |V  | j        r8t          | j                  dhk    r!| j        dgt          |          z  z   V  d S d S d S )Nr   r!   )rF   rz   ranger   ra   appendru   rd   r.   re   r   extend_get_level_valuesr   set)rP   rz   icol_lines       rQ   r   z-CSVFormatter._generate_multiindex_header_rows  s-     ("w'' 	 	AHz Ha 0111d.55 H#d>N:O:ORS:S:SOORDC0@,A,AA,E$FGGGOOG55a88999NNNN
  	<3t':#;#;t#C#C%s7||(;;;;;;;	< 	<#C#CrS   c                    t          | j                  }|| j        z  dz   }t          |          D ]C}|| j        z  }t	          || j        z   |          }||k    r d S |                     ||           Dd S r   )r   r   r8   r   min_save_chunk)rP   nrowschunksr   start_iend_is         rQ   r   zCSVFormatter._save_body1  s    DO$$4>)Q.v 	- 	-A$.(G$.0%88E%We,,,,	- 	-rS   r   r   c                8   t          ||          }| j        j        |         } |j        di | j        }t          |                                          } | j        |         j        di | j        }t          j	        ||| j
        | j        | j                   d S )Nrq   )slicerF   ilocr   r   re   _iter_column_arraysr   
libwriterswrite_csv_rowsr   r    r   )rP   r   r   slicerdfresdataixs           rQ   r   zCSVFormatter._save_chunk;  s    w&&X]6"$b$;;t':;;C++--..8T_V$8OO4;NOO!LIK	
 	
 	
 	
 	
rS   )r!   r"   NNr#   Nr$   r%   Nr&   Nr'   NTNN)$r(   r   r)   r*   r+   r,   r    r-   r.   r/   r0   r,   r1   r2   r3   r,   r4   r   r5   r6   r7   r2   r8   r6   r9   r2   r:   r2   r;   r<   r=   r2   r>   r?   r@   rA   )r@   r,   )r@   rX   )r@   r]   )r@   r<   )r.   r/   r@   r   )r@   rj   )r9   r2   r@   r2   )r    r|   r@   r   )r8   r6   r@   r   )r@   r   )r@   r   )r@   r   )r@   r   )r@   r   )r@   rA   )r@   r   )r   r   r   r   r@   rA   )!__name__
__module____qualname____annotations__rR   propertyrU   rZ   r\   r_   ra   rH   rc   rl   rm   rK   r{   rN   rO   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rq   rS   rQ   r   r   8   s         !!!!
 IK*.)-#*1"%) $ #"& !%15%(? (? (? (? (?T    X % % % X%       X     X    X   0 0 0 0= = = => > > >    A A A XAC C C C*   
 
 
 
 X
    ^    X L L L XL 6 6 6 X6 = = = X= 
 
 
 X
   4   
* * * *< < < <*- - - -
 
 
 
 
 
rS   r   ).__doc__
__future__r   collections.abcr   r   r   r   csvrI   rL   typingr   r	   r
   numpyrg   pandas._libsr   r   pandas._typingr   pandas.util._decoratorsr   pandas.core.dtypes.genericr   r   r   r   pandas.core.dtypes.missingr   pandas.core.indexes.apir   pandas.io.commonr   r   r   r   r   r   r   r   pandas.io.formats.formatr   r   r   rq   rS   rQ   <module>r      s    # " " " " "                				              . . . . . . ) ) ) ) ) ) 2 2 2 2 2 2            - , , , , , ) ) ) ) ) ) ' ' ' ' ' ' <                  <;;;;; # R
 R
 R
 R
 R
 R
 R
 R
 R
 R
rS   