
    d9(                        d Z ddlmZ ddlZddlZddlmZmZm	Z	m
Z
mZmZ ddlZddlmZ ddlmZmZmZmZmZ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'  G d d          Z(dS )z3
Module for formatting output data into CSV files.
    )annotationsN)TYPE_CHECKINGAnyHashableIteratorSequencecast)writers)CompressionOptionsFilePathFloatFormatType
IndexLabelStorageOptionsWriteBuffer)cache_readonly)ABCDatetimeIndexABCIndexABCMultiIndexABCPeriodIndex)notna)Index)
get_handle)DataFrameFormatterc                     e Zd ZU ded<   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dNdOd(ZedPd)            ZedQd+            ZedPd,            ZedRd.            Z	edSd/            Z
dTd1ZdUd3ZdUd4ZdUd5ZdVd6ZedSd7            ZdWd8ZdXd:ZedYd<            ZedZd>            Zed[d?            ZedSd@            ZedSdA            ZedUdB            Zed\dD            Zd]dEZd]dFZd]dGZd^dIZd]dJZd_dMZ dS )`CSVFormatter
np.ndarray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_optionsr   returnNonec                   || _         | j         j        | _        || _        || _        |	| _        || _        || _        || _        | 	                    |          | _
        || _        |
pt          j        | _        |                     |          | _        || _        || _        |pt&          j        | _        || _        |                     |          | _        |                     |          | _        d S N)fmtframeobjfilepath_or_bufferr.   r1   r-   r;   r(   _initialize_index_labelr+   r0   csvlibQUOTE_MINIMALr2   _initialize_quotecharr6   r8   r:   oslinesepr4   r7   _initialize_columnsr   _initialize_chunksizer5   )selfr%   r&   r(   r   r+   r-   r.   r0   r1   r2   r4   r5   r6   r7   r8   r:   r;   s                     R/var/www/html/t/fyr/venv311/lib/python3.11/site-packages/pandas/io/formats/csvs.py__init__zCSVFormatter.__init__2   s    ( 8>"- /:	.77DD6&"633I>>&$,:
&,,T22	33I>>    c                    | j         j        S r?   )r@   na_reprL   s    rM   rQ   zCSVFormatter.na_rep\       xrO   FloatFormatType | Nonec                    | j         j        S r?   )r@   float_formatrR   s    rM   rV   zCSVFormatter.float_format`   s    x$$rO   c                    | j         j        S r?   )r@   decimalrR   s    rM   rX   zCSVFormatter.decimald   s    xrO   bool | Sequence[str]c                    | j         j        S r?   )r@   headerrR   s    rM   r[   zCSVFormatter.headerh   rS   rO   c                    | j         j        S r?   )r@   indexrR   s    rM   r]   zCSVFormatter.indexl   s    x~rO   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   rL   r+   s     rM   rD   z$CSVFormatter._initialize_index_labelp   sP    e##"55777dE2:x-PQQ %#}$rO   Sequence[Hashable]c                    t          | j        j        t                    r|                                 S |                                 S r?   )r`   rB   r]   r   _get_index_label_multiindex_get_index_label_flatrR   s    rM   r_   z&CSVFormatter._get_index_label_from_objy   s<    dhnm44 	033555--///rO   c                8    d | j         j        j        D             S )Nc                    g | ]}|pd S r    ).0names     rM   
<listcomp>z<CSVFormatter._get_index_label_multiindex.<locals>.<listcomp>   s    <<<t
<<<rO   )rB   r]   namesrR   s    rM   rh   z(CSVFormatter._get_index_label_multiindex   s    <<tx~';<<<<rO   c                4    | j         j        j        }|dgn|gS )Nr   )rB   r]   ro   re   s     rM   ri   z"CSVFormatter._get_index_label_flat   s!    hn)"*tt=rO   c                4    | j         t          j        k    r|S d S r?   )r2   rE   
QUOTE_NONE)rL   r6   s     rM   rG   z"CSVFormatter._initialize_quotechar   s    <6,,,trO   c                Z    t          t          | j        j        t                              S r?   )r9   r`   rB   columnsr   rR   s    rM   has_mi_columnszCSVFormatter.has_mi_columns   s    Jtx/??@@@rO   c                   | 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 columnsrm   )
rw   	TypeErrorr`   r   _format_native_types_number_formatra   rB   locrv   )rL   r   msgnew_colss       rM   rJ   z CSVFormatter._initialize_columns   s     	%Lnn$$)) "0t0GG43FGGDzzx|AAAtG,DH 8#,x,CCt/BCCCrO   intc                Z    |dt          | j                  pdz  pdS t          |          S )Ni    )lenr   r   )rL   r5   s     rM   rK   z"CSVFormatter._initialize_chunksize   s1    s49~~23999~~rO   dict[str, Any]c                D    | j         | j        | j        | j        | j        dS )z7Dictionary used for storing number formatting settings.rQ   rV   r7   r2   rX   r   rR   s    rM   r{   zCSVFormatter._number_format   s.     k -+||
 
 	
rO   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 rl   )r   strftimer7   )rn   xrL   s     rM   rp   z+CSVFormatter.data_index.<locals>.<listcomp>   s8    VVVaqAD,---rVVVrO   )	rB   r]   r`   r   r   r7   r   r   remove_unused_levels)rL   
data_indexs   ` rM   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rO   c                @    | j         rt          | j        dd          S dS )Nnlevelsr   r   )r]   getattrr   rR   s    rM   r   zCSVFormatter.nlevels   s%    : 	4?Iq9991rO   c                f    t          | j        t          t          t          j        t          f          S r?   )r`   r[   rb   ra   rc   rd   r   rR   s    rM   _has_aliaseszCSVFormatter._has_aliases   s    $+tRZ'JKKKrO   c                8    t          | j        p| j                  S r?   )r9   r   r[   rR   s    rM   _need_to_save_headerz!CSVFormatter._need_to_save_header   s    D%4555rO   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   r`   r[   r9   r   r   
ValueErrorr	   r   r   rR   s    rM   
write_colszCSVFormatter.write_cols   s     
	7!$+t444444;3ty>>11 Ws49~~WWS=M=MWWW   ; *DI666rO   list[Hashable]c                    g }| j         r7| j        r0t          | j        t                    sJ t	          | j                  }| j        r| j        r|t	          | j                  z  }|S r?   )r]   r+   r`   r   ra   rw   r   r   )rL   encoded_labelss     rM   r   zCSVFormatter.encoded_labels   ss    )+: 	4$* 	4d.99999!$"233N" 	4d&7 	4d4?333NrO   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.
        )r.   r0   r1   r;   )r4   	delimiterr2   r8   r:   r6   N)r   rC   r-   r.   r0   r1   r;   rE   writerhandler4   r(   r2   r8   r:   r6   _save)rL   handless     rM   savezCSVFormatter.save   s    
 #I];( 0
 
 
 	  -#2( ,?.  DK JJLLL'	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   ABB Bc                d    | j         r|                                  |                                  d S r?   )r   _save_header
_save_bodyrR   s    rM   r   zCSVFormatter._save  s5    $ 	 rO   c                    | j         r| j        r!| j                            | j                   d S |                                 D ]}| j                            |           d S r?   )rw   r   r   writerowr    _generate_multiindex_header_rows)rL   rows     rM   r   zCSVFormatter._save_header
  st    " 	*d&7 	*K  !455555<<>> * *$$S))))* *rO   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   )rB   rv   ranger   r]   appendrq   r`   r+   ra   r   extend_get_level_valuesr   set)rL   rv   icol_lines       rM   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#CrO   c                    t          | j                  }|| j        z  dz   }t          |          D ]C}|| j        z  }t	          || j        z   |          }||k    r d S |                     ||           Dd S )Nr   )r   r   r5   r   min_save_chunk)rL   nrowschunksr   start_iend_is         rM   r   zCSVFormatter._save_body&  s    DO$$4>)Q.v 	- 	-A$.(G$.0%88E%We,,,,	- 	-rO   r   r   c                \   t          ||          }| j        j        |         } |j        j        di | j        fdt          t          j                            D             } | j	        |         j
        di | j        }t          j        ||| j        | j        | j                   d S )Nc                :    g | ]}                     |          S rm   )iget_values)rn   r   ress     rM   rp   z,CSVFormatter._save_chunk.<locals>.<listcomp>6  s%    BBBq""BBBrO   rm   )slicerB   iloc_mgrto_native_typesr{   r   r   itemsr   rz   
libwriterswrite_csv_rowsr   r   r   )rL   r   r   slicerdfdataixr   s          @rM   r   zCSVFormatter._save_chunk0  s    w&&X]6"%bg%<<(;<<BBBBE#ci..,A,ABBB9T_V$9PPD<OPP!LIK	
 	
 	
 	
 	
rO   )r   r   NNr    Nr!   r"   Nr#   Nr$   NTNN)$r%   r   r&   r'   r(   r)   r   r*   r+   r,   r-   r)   r.   r/   r0   r)   r1   r   r2   r3   r4   r/   r5   r3   r6   r/   r7   r/   r8   r9   r:   r/   r;   r   r<   r=   )r<   r)   )r<   rT   )r<   rY   )r<   r9   )r+   r,   r<   r   )r<   rf   )r6   r/   r<   r/   )r   r*   r<   r   )r5   r3   r<   r   )r<   r   )r<   r   )r<   r   )r<   r   )r<   r=   )r<   r   )r   r   r   r   r<   r=   )!__name__
__module____qualname____annotations__rN   propertyrQ   rV   rX   r[   r]   rD   r_   rh   ri   rG   rw   rJ   rK   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   rm   rO   rM   r   r   /   s         
 IK*.)-#*1"%) $ #"& !%*.%(? (? (? (? (?T    X % % % X%       X     X    X   0 0 0 0= = = => > > >    A A A XAD D D D&   
 
 
 
 X
    ^    X L L L XL 6 6 6 X6 7 7 7 X7 
 
 
 X
   4   
* * * *< < < <*- - - -
 
 
 
 
 
rO   r   ))__doc__
__future__r   csvrE   rH   typingr   r   r   r   r   r	   numpyrc   pandas._libsr
   r   pandas._typingr   r   r   r   r   r   pandas.util._decoratorsr   pandas.core.dtypes.genericr   r   r   r   pandas.core.dtypes.missingr   pandas.core.indexes.apir   pandas.io.commonr   pandas.io.formats.formatr   r   rm   rO   rM   <module>r      s    # " " " " "     				                    . . . . . .                3 2 2 2 2 2            - , , , , , ) ) ) ) ) ) ' ' ' ' ' ' <;;;;;;P
 P
 P
 P
 P
 P
 P
 P
 P
 P
rO   