o `@sLddgZddlmZddlTGdddeZGdddZGdddZd S) Emitter EmitterError) YAMLError)*c@s eZdZdS)rN)__name__ __module__ __qualname__r r ./usr/lib/python3/dist-packages/yaml/emitter.pyrsc@seZdZddZdS)ScalarAnalysisc Cs4||_||_||_||_||_||_||_||_dSNscalarempty multilineallow_flow_plainallow_block_plainallow_single_quotedallow_double_quoted allow_block) selfrrrrrrrrr r r __init__s zScalarAnalysis.__init__N)rrrrr r r r r s r c@s2eZdZdddZ  dddZddZd d Zd d Zd dZdddZ ddZ ddZ ddZ dddZ ddZddZ  dddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Zd2d3Zd4d5Zd6d7Zdd8d9Zd:d;Zdd?Z d@dAZ!dBdCZ"dDdEZ#dFdGZ$dHdIZ%dJdKZ&dLdMZ'dNdOZ(dPdQZ)dRdSZ*dTdUZ+dVdWZ,dXdYZ-dZd[Z.d\d]Z/d^d_Z0d`daZ1dbdcZ2dddeZ3 ddfdgZ4dhdiZ5ddjdkZ6dldmZ7dndoZ8ddqdrZ9dsdtdudvdwdxdydzd{d|d}d~ddddZ:dddZ;ddZdddZ?dS)r!z!!)rztag:yaml.org,2002:NcCs||_d|_g|_|j|_g|_d|_g|_d|_d|_ d|_ d|_ d|_ d|_ d|_d|_d|_d|_d|_||_||_d|_|rQd|krLdkrQnn||_d|_|r`||jdkr`||_d|_|d vrj||_d|_d|_d|_d|_d|_dS) NFTr P ) rz )streamencodingstatesexpect_stream_startstateeventseventindentsindent flow_level root_contextsequence_contextmapping_contextsimple_key_contextlinecolumn whitespace indention open_ended canonical allow_unicode best_indent best_widthbest_line_break tag_prefixesprepared_anchor prepared_taganalysisstyle)rrr2r'widthr3 line_breakr r r r&sD zEmitter.__init__cCsg|_d|_dSr )r!r#rr r r disposejs zEmitter.disposecCs@|j||s|jd|_|d|_|r dSdSNr)r$appendneed_more_eventspopr%r#rr%r r r emitos z Emitter.emitcCsT|jsdS|jd}t|tr|dSt|tr|dSt|tr(|dSdS)NTrrrF)r$ isinstanceDocumentStartEvent need_eventsSequenceStartEventMappingStartEventrDr r r rBxs       zEmitter.need_more_eventscCsvd}|jddD](}t|ttfr|d7}nt|ttfr#|d8}nt|tr*d}|dkr1dSq t|j|dkS)NrrF)r$rGrHCollectionStartEventDocumentEndEventCollectionEndEventStreamEndEventlen)rcountlevelr%r r r rIs   zEmitter.need_eventsFcCsN|j|j|jdur|r|j|_dSd|_dS|s%|j|j7_dSdSr@)r&rAr'r4)rflow indentlessr r r increase_indents   zEmitter.increase_indentcCsLt|jtr|jjrt|jds|jj|_||j|_dSt d|j)Nr z%expected StreamStartEvent, but got %s) rGr%StreamStartEventr hasattrrwrite_stream_startexpect_first_document_startr#rr>r r r r"s   zEmitter.expect_stream_startcCstd|j)Nzexpected nothing, but got %s)rr%r>r r r expect_nothingszEmitter.expect_nothingcC |jddSNT)first)expect_document_startr>r r r rZ z#Emitter.expect_first_document_startc Csht|jtr|jjs|jjr|jr|dd||jjr+||jj}| ||j |_ |jjr]t |jj}|D]}|jj|}||j |<||}||}|||q?|ov|jj ov|j ov|jj ov|jj ov| }|s||dd|jr||j|_dSt|jtr|jr|dd|||j|_dStd|j)N...T---z'expected DocumentStartEvent, but got %s)rGr%rHversiontagsr1write_indicator write_indentprepare_versionwrite_version_directiveDEFAULT_TAG_PREFIXEScopyr7sortedkeysprepare_tag_handleprepare_tag_prefixwrite_tag_directiveexplicitr2check_empty_documentexpect_document_rootr#rPwrite_stream_endr[r) rr^ version_texthandleshandleprefix handle_text prefix_textimplicitr r r r_sL             zEmitter.expect_document_startcCsRt|jtr"||jjr|dd|||j|_dSt d|j)NraTz%expected DocumentEndEvent, but got %s) rGr%rNrfrpre flush_streamr_r#rr>r r r expect_document_ends   zEmitter.expect_document_endcCs|j|j|jdddS)NT)root)r!rAr| expect_noder>r r r rrszEmitter.expect_document_rootcCs||_||_||_||_t|jtr|dSt|jtt frw| d| t|jtr5| dSt|jt rU|jsI|jsI|jjsI|rO|dS|dSt|jtru|jsi|jsi|jjsi|ro|dS|dSdStd|j)N&zexpected NodeEvent, but got %s)r)r*r+r,rGr% AliasEvent expect_alias ScalarEventrMprocess_anchor process_tag expect_scalarrJr(r2 flow_stylecheck_empty_sequenceexpect_flow_sequenceexpect_block_sequencerKcheck_empty_mappingexpect_flow_mappingexpect_block_mappingr)rr}sequencemapping simple_keyr r r r~s2           zEmitter.expect_nodecCs.|jjdur td|d|j|_dS)Nz!anchor is not specified for aliasr)r%anchorrrr!rCr#r>r r r rs  zEmitter.expect_aliascCs0|jdd||j|_|j|_dS)NTrT)rVprocess_scalarr&rCr'r!r#r>r r r r s  zEmitter.expect_scalarcC6|jdddd|jd7_|jdd|j|_dS)N[Tr/rr)rer(rVexpect_first_flow_sequence_itemr#r>r r r r  zEmitter.expect_flow_sequencecCszt|jtr!|j|_|jd8_|dd|j|_ dS|j s*|j |j kr.| |j|j|jdddS)Nr]FTr)rGr%SequenceEndEventr&rCr'r(rer!r#r2r.r5rfrAexpect_flow_sequence_itemr~r>r r r rs   z'Emitter.expect_first_flow_sequence_itemcCst|jtr.|j|_|jd8_|jr |dd| |dd|j |_ dS|dd|js=|j |j krA| |j |j|jdddS)Nr,FrTr)rGr%rr&rCr'r(r2rerfr!r#r.r5rArr~r>r r r r$s     z!Emitter.expect_flow_sequence_itemcCr)N{Trrr)rer(rVexpect_first_flow_mapping_keyr#r>r r r r6rzEmitter.expect_flow_mappingcCst|jtr!|j|_|jd8_|dd|j|_ dS|j s*|j |j kr.| |j sE|rE|j|j|jddddS|dd|j|j|jdddS)Nr}FTrr?r)rGr%MappingEndEventr&rCr'r(rer!r#r2r.r5rfcheck_simple_keyrA expect_flow_mapping_simple_valuer~expect_flow_mapping_valuer>r r r r<s    z%Emitter.expect_first_flow_mapping_keycCst|jtr.|j|_|jd8_|jr |dd| |dd|j |_ dS|dd|js=|j |j krA| |jsX|rX|j |j|jddddS|dd|j |j|jdddS) NrrFrTrrr)rGr%rr&rCr'r(r2rerfr!r#r.r5rrArr~rr>r r r expect_flow_mapping_keyMs"      zEmitter.expect_flow_mapping_keycC*|dd|j|j|jdddSN:FTr)rer!rArr~r>r r r rb z(Emitter.expect_flow_mapping_simple_valuecCsD|js |j|jkr ||dd|j|j|jdddS)NrTr) r2r.r5rfrer!rArr~r>r r r rgs  z!Emitter.expect_flow_mapping_valuecCs(|jo|j }|jd|d|j|_dS)NF)rTrU)r+r0rV expect_first_block_sequence_itemr#)rrUr r r rps zEmitter.expect_block_sequencecCr\r])expect_block_sequence_itemr>r r r rur`z(Emitter.expect_first_block_sequence_itemcCsb|st|jtr|j|_|j|_dS||j dddd|j |j |j dddS)N-Tr0r) rGr%rr&rCr'r!r#rfrerArr~rr^r r r rxs z"Emitter.expect_block_sequence_itemcCs|jdd|j|_dS)NFr)rVexpect_first_block_mapping_keyr#r>r r r rs  zEmitter.expect_block_mappingcCr\r])expect_block_mapping_keyr>r r r rr`z&Emitter.expect_first_block_mapping_keycCs|st|jtr|j|_|j|_dS|| r.|j |j |j ddddS|j dddd|j |j|j dddS)NTrrrr)rGr%rr&rCr'r!r#rfrrA!expect_block_mapping_simple_valuer~reexpect_block_mapping_valuerr r r rs z Emitter.expect_block_mapping_keycCrr)rer!rArr~r>r r r rrz)Emitter.expect_block_mapping_simple_valuecCs6||jdddd|j|j|jdddS)NrTrr)rfrer!rArr~r>r r r rsz"Emitter.expect_block_mapping_valuecC"t|jto|jot|jdtSr@)rGr%rJr$rr>r r r rzEmitter.check_empty_sequencecCrr@)rGr%rKr$rr>r r r rrzEmitter.check_empty_mappingcCsNt|jtr |js dS|jd}t|to&|jduo&|jduo&|jo&|jdkS)NFr) rGr%rHr$rrtagrzvaluerDr r r rqs zEmitter.check_empty_documentcCsd}t|jtr"|jjdur"|jdur||jj|_|t|j7}t|jttfrD|jj durD|j dur=| |jj |_ |t|j 7}t|jtr_|j durW| |jj|_ |t|j j7}|dkot|jtpt|jtox|j j ox|j j p|p|S)Nr)rGr% NodeEventrr8prepare_anchorrQrrMrr9 prepare_tagr:analyze_scalarrrrrrrr)rlengthr r r rs0      zEmitter.check_simple_keycCsR|jjdur d|_dS|jdur||jj|_|jr$|||jdd|_dS)NT)r%rr8rre)r indicatorr r r rs   zEmitter.process_anchorcCs|jj}t|jtrF|jdur||_|jr|dur6|jdkr&|jjds1|jdkr6|jjdr6d|_dS|jjdrE|durEd}d|_n|jrM|durV|jjrVd|_dS|dur^t d|jduri| ||_|jrs| |jdd|_dS)Nrrrrztag is not specifiedT) r%rrGrr;choose_scalar_styler2rzr9rrre)rrr r r rs.      zEmitter.process_tagcCs|jdur ||jj|_|jjdks|jrdS|jjs=|jjdr=|jr-|jjs=|jj s=|j r4|jj s;|j s=|jj r=dS|jjrU|jjdvrU|j sU|jsU|jj rU|jjS|jjr_|jjdkrl|jjrl|jrj|jj sldSdS)N"rrz|>')r:rr%rr;r2rzr,rrr(rrrrr>r r r rs@  zEmitter.choose_scalar_stylecCs|jdur ||jj|_|jdur||_|j }|jdkr)||jj|n0|jdkr7| |jj|n"|jdkrD| |jjn|jdkrQ| |jjn| |jj|d|_d|_dS)Nrr>|) r:rr%rr;rr,write_double_quotedrwrite_single_quoted write_folded write_literal write_plain)rsplitr r r rs        zEmitter.process_scalarcCs,|\}}|dkrtd||fd||fS)Nrzunsupported YAML version: %d.%dz%d.%dr)rrcmajorminorr r r rgs zEmitter.prepare_versioncCs|std|ddks|ddkrtd||ddD]/}d|kr*dksMnd |kr5d ksMnd |kr@d ksMn|d vsMtd||fq|S)Nztag handle must not be emptyrrrLz*tag handle must start and end with '!': %rr09AZaz-_z*invalid character %r in the tag handle: %rr)rrvchr r r rm!s BzEmitter.prepare_tag_handlecCs |stdg}d}}|ddkrd}|t|krt||}d|kr(dksCnd|kr3dksCnd |kr>d ksCn|d vrH|d7}n&||krU|||||d}}|d }|D] }|d t|qb|t|ks||kr||||d|S)Nztag prefix must not be emptyrrrrrrrrrz-;/?!:@&=+$,_.~*'()[]utf-8%%%02Xr)rrQrAencodeordjoin)rrwchunksstartendrdatar r r rn-s*  B      zEmitter.prepare_tag_prefixc Cs|std|dkr |Sd}|}t|j}|D] }||r9|dks,t|t|kr9|j|}|t|d}qg}d}}|t|kr||} d| krTdkswnd| kr_dkswnd| krjd kswn| d vsw| dkr||dkr||d 7}n$||kr|||||d }}| d } | D] } |d | q|t|ksF||kr||||d|} |rd|| fSd| S)Nztag must not be emptyrrrrrrrrz-;/?:@&=+$,_.~*'()[]rrrrz%s%sz!<%s>) rrkr7rl startswithrQrArr) rrrvsuffixprefixesrwrrrrr suffix_textr r r rDsD   B       zEmitter.prepare_tagcCst|std|D]/}d|krdks7nd|krdks7nd|kr*dks7n|dvs7td ||fq|S) Nzanchor must not be emptyrrrrrrrz&invalid character %r in the anchor: %rr)rrrr r r rhsBzEmitter.prepare_anchorc Cs |st|ddddddddSd}d}d}d}d}d}d}d} d} d} |ds,|dr0d}d}d} t|dkp=|ddv} d}d}d}|t|kr3||}|dkrp|d vr[d}d}|d vred}| red}|d kro| rod}d}n|d vrvd}|d krd}| rd}|dkr| rd}d}|dvrd}|dksd|krdksn|dksd|krdksnd|krdksnd|krdkrnn |dkrd}|jsd}nd}|dkr|dkrd}|t|dkrd}|rd} d}d}n$|dvr|dkrd}|t|dkrd} |r d} d}d}nd}d}|d7}|dv} |dt|kp,||ddv} |t|ksKd}d}d}d}d}|sI|sI|sI| rMd}}|rRd}| r[d}}}| sa|rid}}}}|rpd}}|rud}|rzd}t|d||||||dS)NTFr rbraru …

rz#,[]{}&*!|>'"%@`z?:rz,?[]{}r# …

r ~… ퟿�u𐀀u􏿿)r rrQr3)rrblock_indicatorsflow_indicators line_breaksspecial_characters leading_space leading_breaktrailing_spacetrailing_break break_space space_breakpreceded_by_whitespacefollowed_by_whitespaceprevious_spaceprevious_breakindexrunicode_charactersrrrrrr r r rrs       G    zEmitter.analyze_scalarcCst|jdr |jdSdS)Nflush)rXrrr>r r r r{s zEmitter.flush_streamcCs2|jr|jdr|jd|jdSdSdS)Nzutf-16r)r rrwriterr>r r r rYszEmitter.write_stream_startcCs |dSr )r{r>r r r rsr`zEmitter.write_stream_endcCsd|js|s|}nd|}||_|jo||_|jt|7_d|_|jr*||j}|j|dS)NrF) r/r0r.rQr1r rrr)rrneed_whitespacer/r0rr r r re s   zEmitter.write_indicatorcCs||jpd}|jr|j|ks|j|kr|js||j|kr|dvr_|||D]}|dkrO|qD||qD|dur]||}n'|dush|dvr|||}|jrw||j}|j ||dur||}|dur|dv}|d7}|t|ks(dSdS) NrTrLrrrrr) r!rer1rrQrfr rrr) rrr rrrrrrr r r rsB        zEmitter.write_literalc Cs|jrd|_|s dS|js'd}|jt|7_|jr!||j}|j|d|_d|_ d}d}d}}|t|krd}|t|krG||}|r|dkr|d|krf|j|j krf|rf| d|_d|_ n|||}|jt|7_|jr~||j}|j||}n\|r|dvr||dkr| |||D]} | dkr| q| | q| d|_d|_ |}n(|dus|dvr|||}|jt|7_|jr||j}|j||}|dur|dk}|dv}|d7}|t|ks;dSdS) NTrFrrrrr) r)r1r/r.rQr rrrr0r5rfr) rrrrrrrrrrr r r r8sr             zEmitter.write_plain)NNNNN)FF)F)FFFFr )T)@rrrrirr?rErBrIrVr"r[rZr_r|rrr~rrrrrrrrrrrrrrrrrrrrrqrrrrrrgrmrnrrrr{rYrsrerfrrhrorrrr!rrrr r r r rs D    $         $ #    7 6 6#N)__all__errorrr$rr rr r r r s