1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
U
¬ý°dx)ã@sÞdZddlmZddlZddlZddlmZmZm    Z    m
Z
m Z m Z ddl ZddlmZddlmZmZmZmZmZmZddlmZddlmZmZmZmZdd    l m!Z!dd
l"m#Z#dd l$m%Z%erÌdd l&m'Z'Gd d„dƒZ(dS)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@sôeZdZUded<d]d d dddddddddddddddddœdd„Zeddœdd„ƒZeddœdd„ƒZeddœd d!„ƒZed"dœd#d$„ƒZ    eddœd%d&„ƒZ
dd'd(œd)d*„Z d+dœd,d-„Z d+dœd.d/„Z d+dœd0d1„Zddd2œd3d4„Zeddœd5d6„ƒZddd7œd8d9„Zdd:d;œd<d=„Zed>dœd?d@„ƒZedAdœdBdC„ƒZed:dœdDdE„ƒZeddœdFdG„ƒZeddœdHdI„ƒZed+dœdJdK„ƒZedLdœdMdN„ƒZddœdOdP„ZddœdQdR„ZddœdSdT„ZdUdœdVdW„ZddœdXdY„Zd:d:ddZœd[d\„Z dS)^Ú CSVFormatterz
np.ndarrayÚcolsÚú,NÚwÚstrictÚinferÚ
ú"Trz0FilePath | WriteBuffer[str] | WriteBuffer[bytes]ÚstrzSequence[Hashable] | NonezIndexLabel | Nonez
str | Noner
z
int | NoneÚboolrÚNone)Ú    formatterÚ path_or_bufÚseprÚ index_labelÚmodeÚencodingÚerrorsÚ compressionÚquotingÚlineterminatorÚ    chunksizeÚ    quotecharÚ date_formatÚ doublequoteÚ
escapecharÚstorage_optionsÚreturncCs˜||_|jj|_||_||_|    |_||_||_||_|     |¡|_
||_ |
pNt j |_| | ¡|_||_||_| prtj|_||_| |¡|_| | ¡|_dS©N)ÚfmtÚframeÚobjÚfilepath_or_bufferr*r,r)r4r'Ú_initialize_index_labelr(r+ÚcsvlibÚ QUOTE_MINIMALr-Ú_initialize_quotecharr0r2r3ÚosÚlinesepr.r1Ú_initialize_columnsrÚ_initialize_chunksizer/)Úselfr%r&r'rr(r)r*r+r,r-r.r/r0r1r2r3r4©rDúMd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\pandas/io/formats/csvs.pyÚ__init__2s$
     zCSVFormatter.__init__)r5cCs|jjSr6)r7Úna_rep©rCrDrDrErG\szCSVFormatter.na_repzFloatFormatType | NonecCs|jjSr6)r7Ú float_formatrHrDrDrErI`szCSVFormatter.float_formatcCs|jjSr6)r7ÚdecimalrHrDrDrErJdszCSVFormatter.decimalzbool | Sequence[str]cCs|jjSr6)r7ÚheaderrHrDrDrErKhszCSVFormatter.headercCs|jjSr6)r7ÚindexrHrDrDrErLlszCSVFormatter.indexr )r(r5cCs6|dk    r2|dkr| ¡St|tttjtfƒs2|gS|S)NF)Ú_get_index_label_from_objÚ
isinstanceÚlistÚtupleÚnpÚndarrayr©rCr(rDrDrEr;ps z$CSVFormatter._initialize_index_labelzSequence[Hashable]cCs"t|jjtƒr| ¡S| ¡SdSr6)rNr9rLrÚ_get_index_label_multiindexÚ_get_index_label_flatrHrDrDrErMysz&CSVFormatter._get_index_label_from_objcCsdd„|jjjDƒS)NcSsg|] }|pd‘qS©rrD)Ú.0ÚnamerDrDrEÚ
<listcomp>€sz<CSVFormatter._get_index_label_multiindex.<locals>.<listcomp>)r9rLÚnamesrHrDrDrErTsz(CSVFormatter._get_index_label_multiindexcCs|jjj}|dkrdgS|gS)Nr)r9rLrXrSrDrDrErU‚s
z"CSVFormatter._get_index_label_flat)r0r5cCs|jtjkr|SdSr6)r-r<Ú
QUOTE_NONE)rCr0rDrDrEr>†s z"CSVFormatter._initialize_quotecharcCstt|jjtƒƒSr6)r#rNr9ÚcolumnsrrHrDrDrEÚhas_mi_columnsŒszCSVFormatter.has_mi_columns)rr5cCsp|jr|dk    rd}t|ƒ‚|dk    rZt|tƒr<|jf|jŽ}nt|ƒ}|jjdd…|f|_|jj    }|jf|jŽS)Nz4cannot specify cols with a MultiIndex on the columns)
r]Ú    TypeErrorrNrÚ_format_native_typesÚ_number_formatrOr9Úlocr\)rCrÚmsgZnew_colsrDrDrErAs
z CSVFormatter._initialize_columnsÚint)r/r5cCs&|dkrdt|jƒpdpdSt|ƒS)Ni †é)Úlenrrc)rCr/rDrDrErB£sz"CSVFormatter._initialize_chunksizezdict[str, Any]cCs|j|j|j|j|jdœS)z7Dictionary used for storing number formatting settings.©rGrIr1r-rJrfrHrDrDrEr`¨s ûzCSVFormatter._number_formatrcsNˆjj}t|ttfƒr8ˆjdk    r8t‡fdd„|Dƒƒ}nt|tƒrJ| ¡}|S)Ncs$g|]}t|ƒr| ˆj¡nd‘qSrV)rÚstrftimer1)rWÚxrHrDrErY»sz+CSVFormatter.data_index.<locals>.<listcomp>)    r9rLrNrrr1rrZremove_unused_levels)rCÚ
data_indexrDrHrEri³s ÿþÿ
zCSVFormatter.data_indexcCs|jrt|jddƒSdSdS)NÚnlevelsrdr)rLÚgetattrrirHrDrDrErjÁszCSVFormatter.nlevelscCst|jtttjtfƒSr6)rNrKrPrOrQrRrrHrDrDrEÚ _has_aliasesÈszCSVFormatter._has_aliasescCst|jp |jƒSr6)r#rlrKrHrDrDrEÚ_need_to_save_headerÌsz!CSVFormatter._need_to_save_headercCsf|jrRt|jtƒrt‚t|jƒt|jƒkrLtdt|jƒ›dt|jƒ›dƒ‚|jStt    t
|jƒSdS)NzWriting z cols but got z aliases) rlrNrKr#ÚAssertionErrorrerÚ
ValueErrorrrrrHrDrDrEÚ
write_colsÐsÿzCSVFormatter.write_colszlist[Hashable]cCsHg}|jr*|jr*t|jtƒs t‚t|jƒ}|jr6|jrD|t|jƒ7}|Sr6)    rLr(rNrrnrOr]rlrp)rCÚencoded_labelsrDrDrErqÞs 
 zCSVFormatter.encoded_labelsc
Cs`t|j|j|j|j|j|jd6}tj|j    |j
|j |j |j |j|jd|_| ¡W5QRXdS)z+
        Create the writer & save.
        )r*r+r,r4)r.Ú    delimiterr-r2r3r0N)rr:r)r*r+r,r4r<ÚwriterÚhandler.r'r-r2r3r0Ú_save)rCZhandlesrDrDrEÚsaveës&úù
zCSVFormatter.savecCs|jr| ¡| ¡dSr6)rmÚ _save_headerÚ
_save_bodyrHrDrDrEruszCSVFormatter._savecCs:|jr |jr|j |j¡n| ¡D]}|j |¡q$dSr6)r]rlrsÚwriterowrqÚ _generate_multiindex_header_rows)rCÚrowrDrDrErw
s  zCSVFormatter._save_headerzIterator[list[Hashable]]ccs¬|jj}t|jƒD]h}g}|jrd| |j|¡t|jt    ƒrdt
|jƒdkrd|  dgt
|jƒd¡|  |  |¡¡|Vq|j r¨t|j ƒdhkr¨|j dgt
|ƒVdS)Nrdr)r9r\ÚrangerjrLÚappendrZrNr(rOreÚextendZ_get_level_valuesrqÚset)rCr\ÚiZcol_linerDrDrErzsz-CSVFormatter._generate_multiindex_header_rowscCs\t|jƒ}||jd}t|ƒD]6}||j}t||j|ƒ}||krJqX| ||¡q dS)Nrd)rerir/r|ÚminÚ _save_chunk)rCZnrowsÚchunksr€Ústart_iÚend_irDrDrErx&s
 
zCSVFormatter._save_body)r„r…r5csrt||ƒ}|jj|}|jjf|jމ‡fdd„ttˆjƒƒDƒ}|j    |j
f|jŽ}t   |||j |j|j¡dS)Ncsg|]}ˆ |¡‘qSrD)Z iget_values)rWr€©ÚresrDrErY6sz,CSVFormatter._save_chunk.<locals>.<listcomp>)Úslicer9ZilocZ_mgrZto_native_typesr`r|reÚitemsrir_Ú
libwritersZwrite_csv_rowsrjrrs)rCr„r…ZslicerZdfÚdataÚixrDr†rEr‚0s
 ûzCSVFormatter._save_chunk)rrNNrNrrNr Nr!NTNN)!Ú__name__Ú
__module__Ú __qualname__Ú__annotations__rFÚpropertyrGrIrJrKrLr;rMrTrUr>r]rArBr`rrirjrlrmrprqrvrurwrzrxr‚rDrDrDrEr/sr
î2*    
 
r))Ú__doc__Ú
__future__rÚcsvr<r?ÚtypingrrrrrrÚnumpyrQZ pandas._libsr    rŠZpandas._typingr
r r r rrZpandas.util._decoratorsrZpandas.core.dtypes.genericrrrrZpandas.core.dtypes.missingrZpandas.core.indexes.apirZpandas.io.commonrZpandas.io.formats.formatrrrDrDrDrEÚ<module>s