B dM@sLddgZddlmZddlTGdddeZGdddZGdddZd S) Scanner ScannerError)MarkedYAMLError)*c@s eZdZdS)rN)__name__ __module__ __qualname__r r 3/tmp/pip-target-jj3kjtpb/lib/python/yaml/scanner.pyr sc@seZdZddZdS) SimpleKeycCs(||_||_||_||_||_||_dS)N) token_numberrequiredindexlinecolumnmark)selfr r rrrrr r r __init__&s zSimpleKey.__init__N)rrrrr r r r r #sr c@szeZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6Zd7d8Zd9d:Zd;d<Z d=d>Z!d?d@Z"dAdBZ#dCdDZ$dEdFZ%dGdHZ&dIdJZ'dKdLZ(dMdNZ)dOdPZ*dQdRZ+dSdTZ,dUdVZ-dWdXZ.dYdZZ/d[d\Z0d]d^Z1d_d`Z2dadbZ3dcddZ4dedfZ5dgdhZ6didjZ7dkdlZ8dmdnZ9dodpZ:dqdrZ;dsdtZdydzZ?d{d|Z@d}d~dddddddddddddddddZAddddZBddZCddZDddZEddZFddZGddZHddZIddZJddZKdS)rcCs<d|_d|_g|_|d|_d|_g|_d|_i|_dS)zInitialize the scanner.FTN) done flow_leveltokensfetch_stream_start tokens_takenindentindentsallow_simple_keypossible_simple_keys)rr r r r0s zScanner.__init__cGsJx|r|qW|jrF|s$dSx |D]}t|jd|r*dSq*WdS)NTrF)need_more_tokensfetch_more_tokensr isinstance)rchoiceschoicer r r check_tokenqs   zScanner.check_tokencCs.x|r|qW|jr&|jdSdSdS)Nr)rr r)rr r r peek_token}s    zScanner.peek_tokencCs:x|r|qW|jr6|jd7_|jdSdS)Nrr)rr rrpop)rr r r get_tokens   zScanner.get_tokencCs2|jr dS|jsdS|||jkr.dSdS)NFT)rrstale_possible_simple_keysnext_possible_simple_keyr)rr r r rszScanner.need_more_tokenscCs||||j|}|dkr4|S|dkrL|rL|S|dkrd|rd| S|dkr|| r|| S|dkr| S|dkr| S|dkr|S|dkr|S|d kr|S|dkr|r|S|d kr|r|S|d kr|r|S|d kr*|S|d kr<|S|dkrN|S|dkrh|jsh|S|dkr|js|S|dkr|S|dkr|S|r| St!ddd||"dS)N%-.[{]},?:r&!|>'"z!while scanning for the next tokenz.found character %r that cannot start any token)#scan_to_next_tokenr( unwind_indentrpeekfetch_stream_endcheck_directivefetch_directivecheck_document_startfetch_document_startcheck_document_endfetch_document_endfetch_flow_sequence_startfetch_flow_mapping_startfetch_flow_sequence_endfetch_flow_mapping_endfetch_flow_entrycheck_block_entryfetch_block_entry check_key fetch_key check_value fetch_value fetch_alias fetch_anchor fetch_tagr fetch_literal fetch_folded fetch_single fetch_double check_plain fetch_plainrget_mark)rchr r r r s^        zScanner.fetch_more_tokenscCs:d}x0|jD]&}|j|}|dks,|j|kr |j}q W|S)N)rr )rZmin_token_numberlevelkeyr r r r)s    z Scanner.next_possible_simple_keycCs`xZt|jD]L}|j|}|j|jks6|j|jdkr |jrPtd|jd||j|=q WdS)Nizwhile scanning a simple keyzcould not find expected ':')listrrrr rrrY)rr[r\r r r r(s   z"Scanner.stale_possible_simple_keyscCs^|j o|j|jk}|jrZ||jt|j}t|||j |j |j| }||j |j<dS)N) rrrrremove_possible_simple_keyrlenrr rrrYr)rr r r\r r r save_possible_simple_key'sz Scanner.save_possible_simple_keycCs@|j|jkr<|j|j}|jr2td|jd||j|j=dS)Nzwhile scanning a simple keyzcould not find expected ':')rrr rrrY)rr\r r r r^8s    z"Scanner.remove_possible_simple_keycCsD|jr dSx4|j|kr>|}|j|_|jt||q WdS)N)rrrYrr&rappendZ BlockEndToken)rrrr r r r<Es   zScanner.unwind_indentcCs&|j|kr"|j|j||_dSdS)NTF)rrra)rrr r r add_indent]s  zScanner.add_indentcCs$|}|jt|||jddS)N)encoding)rYrraZStreamStartTokenrc)rrr r r rgs zScanner.fetch_stream_startcCsB|d|d|_i|_|}|jt||d|_dS)NrFT) r<r^rrrYrraZStreamEndTokenr)rrr r r r>ss zScanner.fetch_stream_endcCs,|d|d|_|j|dS)NrF)r<r^rrrascan_directive)rr r r r@s zScanner.fetch_directivecCs|tdS)N)fetch_document_indicatorZDocumentStartToken)rr r r rBszScanner.fetch_document_startcCs|tdS)N)reZDocumentEndToken)rr r r rDszScanner.fetch_document_endcCsH|d|d|_|}|d|}|j|||dS)NrF)r<r^rrYforwardrra)r TokenClass start_markend_markr r r res  z Scanner.fetch_document_indicatorcCs|tdS)N)fetch_flow_collection_startZFlowSequenceStartToken)rr r r rEsz!Scanner.fetch_flow_sequence_startcCs|tdS)N)rkZFlowMappingStartToken)rr r r rFsz Scanner.fetch_flow_mapping_startcCsJ||jd7_d|_|}||}|j|||dS)NrT)r`rrrYrgrra)rrhrirjr r r rksz#Scanner.fetch_flow_collection_startcCs|tdS)N)fetch_flow_collection_endZFlowSequenceEndToken)rr r r rGszScanner.fetch_flow_sequence_endcCs|tdS)N)rlZFlowMappingEndToken)rr r r rHszScanner.fetch_flow_mapping_endcCsJ||jd8_d|_|}||}|j|||dS)NrF)r^rrrYrgrra)rrhrirjr r r rlsz!Scanner.fetch_flow_collection_endcCs<d|_||}||}|jt||dS)NT)rr^rYrgrraZFlowEntryToken)rrirjr r r rIs zScanner.fetch_flow_entrycCs|jsF|jstddd|||jrF|}|jt||nd|_| |}| |}|jt ||dS)Nz%sequence entries are not allowed hereT) rrrrYrbrrraZBlockSequenceStartTokenr^rgZBlockEntryToken)rrrirjr r r rKs  zScanner.fetch_block_entrycCs|jsD|jstddd|||jrD|}|jt|||j |_| |}| |}|jt ||dS)Nz!mapping keys are not allowed here) rrrrYrbrrraBlockMappingStartTokenr^rgKeyToken)rrrirjr r r rMs   zScanner.fetch_keycCs|j|jkr||j|j}|j|j=|j|j|jt|j|j|jst||j rt|j|j|jt |j|jd|_ n\|js|j st ddd| |js||j r| }|jt |||j |_ || }|| }|jt||dS)NFz#mapping values are not allowed here)rrrinsertr rrnrrbrrmrrrYrar^rgZ ValueToken)rr\rrirjr r r rO!s2       zScanner.fetch_valuecCs$|d|_|j|tdS)NF)r`rrra scan_anchorZ AliasToken)rr r r rPYszScanner.fetch_aliascCs$|d|_|j|tdS)NF)r`rrrarpZ AnchorToken)rr r r rQdszScanner.fetch_anchorcCs"|d|_|j|dS)NF)r`rrrascan_tag)rr r r rRoszScanner.fetch_tagcCs|jdddS)Nr7)style)fetch_block_scalar)rr r r rSzszScanner.fetch_literalcCs|jdddS)Nr8)rr)rs)rr r r rT}szScanner.fetch_foldedcCs$d|_||j||dS)NT)rr^rrascan_block_scalar)rrrr r r rsszScanner.fetch_block_scalarcCs|jdddS)Nr9)rr)fetch_flow_scalar)rr r r rUszScanner.fetch_singlecCs|jdddS)Nr:)rr)ru)rr r r rVszScanner.fetch_doublecCs$|d|_|j||dS)NF)r`rrrascan_flow_scalar)rrrr r r ruszScanner.fetch_flow_scalarcCs"|d|_|j|dS)NF)r`rrra scan_plain)rr r r rXszScanner.fetch_plaincCs|jdkrdSdS)NrT)r)rr r r r?s zScanner.check_directivecCs.|jdkr*|ddkr*|ddkr*dSdS)Nrrfz---u …

T)rprefixr=)rr r r rAs zScanner.check_document_startcCs.|jdkr*|ddkr*|ddkr*dSdS)Nrrfz...u …

T)rrxr=)rr r r rCs zScanner.check_document_endcCs|ddkS)Nru …

)r=)rr r r rJszScanner.check_block_entrycCs|jr dS|ddkSdS)NTru …

)rr=)rr r r rLszScanner.check_keycCs|jr dS|ddkSdS)NTru …

)rr=)rr r r rNszScanner.check_valuecCs6|}|dkp4|ddko4|dkp4|j o4|dkS)Nu …

-?:,[]{}#&*!|>'"%@`ru …

r,z?:)r=r)rrZr r r rWszScanner.check_plaincCs|jdkr|dkr|d}xb|sx|dkr@|q*W|dkrhx|dkrf|qPW|r~|jsd|_q$d}q$WdS)NruF #u …

T)rr=rgscan_line_breakrr)rfoundr r r r;s   zScanner.scan_to_next_tokencCs|}|||}d}|dkr:||}|}n>|dkrV||}|}n"|}x|dkrv|q`W||t||||S)NYAMLZTAGu …

)rYrgscan_directive_namescan_yaml_directive_valuescan_tag_directive_valuer=scan_directive_ignored_lineZDirectiveToken)rrinamevaluerjr r r rds       zScanner.scan_directivecCsd}||}x`d|kr$dksZnd|kr:dksZnd|krPdksZn|dkrn|d 7}||}qW|std |d ||||}|||}|d krtd |d |||S) Nr09AZazz-_rzwhile scanning a directivez6expected alphabetic or numeric character, but found %ru …

)r=rrYrxrg)rrilengthrZrr r r r~&s$ D  zScanner.scan_directive_namecCsx|dkr|qW||}|dkrJtd|d|||||}|dkrtd|d||||fS)Nryr-zwhile scanning a directivez%expected a digit or '.', but found %ru …

z%expected a digit or ' ', but found %r)r=rgscan_yaml_directive_numberrrY)rrimajorminorr r r r;s         z!Scanner.scan_yaml_directive_valuecCs|}d|krdks4ntd|d||d}x*d||krTdkrbnn |d7}q:Wt||}|||S)Nrrzwhile scanning a directivezexpected a digit, but found %rrr)r=rrYintrxrg)rrirZrrr r r rLs   z"Scanner.scan_yaml_directive_numbercCsPx|dkr|qW||}x|dkr<|q&W||}||fS)Nry)r=rgscan_tag_directive_handlescan_tag_directive_prefix)rrihandlerxr r r rYs    z Scanner.scan_tag_directive_valuecCs6|d|}|}|dkr2td|d|||S)N directiveryzwhile scanning a directivezexpected ' ', but found %r)scan_tag_handler=rrY)rrirrZr r r rcs  z!Scanner.scan_tag_directive_handlecCs6|d|}|}|dkr2td|d|||S)Nru …

zwhile scanning a directivezexpected ' ', but found %r) scan_tag_urir=rrY)rrirrZr r r rls  z!Scanner.scan_tag_directive_prefixcCsrx|dkr|qW|dkr@x|dkr>|q(W|}|dkrftd|d|||dS)Nryrzu …

zwhile scanning a directivez0expected a comment or a line break, but found %r)r=rgrrYr{)rrirZr r r rus   z#Scanner.scan_directive_ignored_linec Cs |}|}|dkrd}nd}|d}||}x`d|krNdksnd|krddksnd |krzd ksn|d kr|d 7}||}q:W|std ||d||||}|||}|dkrtd ||d|||}||||S)Nraliasanchorrrrrrrrz-_rzwhile scanning an %sz6expected alphabetic or numeric character, but found %ru …

?:,]}%@`)rYr=rgrrx) rrhriZ indicatorrrrZrrjr r r rps2  D    zScanner.scan_anchorc Cs&|}|d}|dkrdd}|d|d|}|dkrZtd|d|||n~|dkr~d}d }|ndd}d }x,|d kr|d krd }P|d7}||}qWd }|r|d|}n d }||d|}|}|d kr td |d||||f}|}t|||S)Nr<tagr8zwhile parsing a tagzexpected '>', but found %ru …

r6Fu …

Tzwhile scanning a tagzexpected ' ', but found %r)rYr=rgrrrZTagToken) rrirZrsuffixrZ use_handlerrjr r r rqsH           zScanner.scan_tagcCs|dkrd}nd}g}|}|||\}}|||jd}|dkrTd}|dkrv|\}} } t|| } n||d} || \}} d} x|j| krv| dkrv| || dk} d}x| |d kr|d7}qW| | |||| } || \}} |j| krr| dkrr|rf| d krf| rf| dkrf|sp| d n | | qPqW|dk r| | |dkr| |td|d|| |S) Nr8TFrr*z ru …

 ry)rYrgscan_block_scalar_indicatorsscan_block_scalar_ignored_linerscan_block_scalar_indentationmaxscan_block_scalar_breaksrr=extendrarxr{ ScalarTokenjoin)rrrfoldedchunksrichomping incrementZ min_indentbreaks max_indentrjr line_breakZleading_non_spacerr r r rtsP              zScanner.scan_block_scalarcCsd}d}|}|dkrn|dkr&d}nd}||}|dkrt|}|dkrdtd|d||n\|dkrt|}|dkrtd|d|||}|dkr|dkrd}nd}||}|d krtd|d ||||fS) Nz+-+TF 0123456789rzwhile scanning a block scalarz|q(W|}|dkrftd|d|||dS)Nryrzu …

zwhile scanning a block scalarz0expected a comment or a line break, but found %r)r=rgrrYr{)rrirZr r r rDs    z&Scanner.scan_block_scalar_ignored_linecCshg}d}|}xL|dkr\|dkrB|||}q||j|kr|j}qW|||fS)Nru …

ry)rYr=rar{rgr)rrrrjr r r rRs    z%Scanner.scan_block_scalar_indentationcCsg}|}x"|j|kr.|dkr.|qWxJ|dkrz|||}x"|j|krv|dkrv|qVWq2W||fS)Nryu …

)rYrr=rgrar{)rrrrjr r r ras z Scanner.scan_block_scalar_breakscCs|dkrd}nd}g}|}|}|||||x4||krt||||||||qBW||}td|d|||S)Nr:TFr)rYr=rgrscan_flow_scalar_non_spacesscan_flow_scalar_spacesrr)rrrdoublerriquoterjr r r rvnszScanner.scan_flow_scalarr* r   ryr:\/… u
u
)rrbtrnvfreryr:rrN_LPr)xuUc Csg}xd}x||dkr&|d7}qW|rF||||||}|s~|dkr~|ddkr~|d|dq|r|dks|s|dkr|||q|r|dkr||}||jkr||j||n||jkrz|j|}|xBt|D]6}||dkrtd |d |||f|qWt ||d }|t |||n<|d kr| | | ||ntd |d ||q|SqWdS)Nru'"\ …

rr9rz"\r0123456789ABCDEFabcdefz%while scanning a double-quoted scalarz?expected escape sequence of %d hexdecimal numbers, but found %ru …

z!found unknown escape character %r)r=rarxrgESCAPE_REPLACEMENTS ESCAPE_CODESrangerrYrchrr{rscan_flow_scalar_breaks)rrrirrrZkcoder r r rsL            z#Scanner.scan_flow_scalar_non_spacesc Csg}d}x||dkr"|d7}q W||}|||}|dkr\td|d|nT|dkr|}|||}|dkr||n|s|d ||n |||S) Nrz rr*zwhile scanning a quoted scalarzfound unexpected end of streamu …

rry) r=rxrgrrYr{rrar) rrrirr whitespacesrZrrr r r rs(        zScanner.scan_flow_scalar_spacescCsg}xx|d}|dks |dkr@|ddkr@td|d|x|dkrX|qBW|dkrv||q|SqWdS) Nrfz---z...u …

zwhile scanning a quoted scalarz#found unexpected document separatorz u …

)rxr=rrYrgrar{)rrrirrxr r r rs    zScanner.scan_flow_scalar_breakscCs g}|}|}|jd}g}xd}|dkr2PxV||}|dks||dkrn||dd|jrfdndks||jr~|dkr~P|d7}q4W|dkrPd |_||||||||}| ||}|r|dks|js |j |kr Pq Wt d |d ||S) Nrrrzu …

r4z,[]{}rz,?[]{}FT) rYrr=rrrrarxrgscan_plain_spacesrrr)rrrirjrspacesrrZr r r rws<       zScanner.scan_plainc Cs.g}d}x||dkr"|d7}q W||}|||}|dkr|}d|_|d}|dksr|dkr|dd krdSg} x`|d kr|dkr|q| ||d}|dks|dkr|dd krdSqW|d kr||n| s|d|| n|r*|||S) Nrryru …

Trfz---z...u …

u …

r)r=rxrgr{rrar) rrrirrrrZrrxrr r r rs>            zScanner.scan_plain_spacescCs|}|dkr*td||d||d}||}|dkrx`d|krVdksnd|krld ksnd |krd ksn|d kr|d7}||}qBW|dkr||td||d|||d7}||}|||S) Nr6zwhile scanning a %szexpected '!', but found %rrryrrrrrrz-_)r=rrYrgrx)rrrirZrrr r r rDs&  D    zScanner.scan_tag_handlecCsg}d}||}xd|kr(dks^nd|kr>dks^nd|krTdks^n|dkr|d kr|||||d}||||n|d 7}||}qW|r|||||d}|std ||d ||d |S)Nrrrrrrrz-;/?:@&=+$,_.!~*'()[]%r+rzwhile parsing a %szexpected URI, but found %rr)r=rarxrgscan_uri_escapesrrYr)rrrirrrZr r r r\s( D   zScanner.scan_tag_uric Csg}|}xx|dkr|x>tdD]2}||dkr,td||d|||q,W|t|dd|dqWyt| d}Wn8t k r}ztd||t ||Wdd}~XYnX|S)Nr+rrzwhile scanning a %szBexpected URI escape sequence of 2 hexdecimal numbers, but found %rrzutf-8) rYr=rgrrrarrxbytesdecodeUnicodeDecodeErrorstr)rrricodesrrrexcr r r rus  (zScanner.scan_uri_escapescCsN|}|dkr6|ddkr*|dn|dS|dkrJ||SdS)Nu …rz ru

r)r=rxrg)rrZr r r r{s  zScanner.scan_line_breakN)Lrrrrr$r%r'rr r)r(r`r^r<rbrr>r@rBrDrerErFrkrGrHrlrIrKrMrOrPrQrRrSrTrsrUrVrurXr?rArCrJrLrNrWr;rdr~rrrrrrrprqrtrrrrrvrrrrrrwrrrrr{r r r r r.sA    l    !8       #    $)L( +)%N)__all__errorrrrr rr r r r s