o `M@sLddgZddlmZddlTGdddeZGdddZGdddZd S) Scanner ScannerError)MarkedYAMLError)*c@s eZdZdS)rN)__name__ __module__ __qualname__r r ./usr/lib/python3/dist-packages/yaml/scanner.pyr sc@seZdZddZdS) SimpleKeycCs(||_||_||_||_||_||_dSN) token_numberrequiredindexlinecolumnmark)selfr rrrrrr r r __init__&s  zSimpleKey.__init__N)rrrrr r r r r #s r c@seZdZddZddZddZddZd 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@id}d~ddddddddddddddddddddddddddddddddddiZAddddZBddZCddZDddZEddZFddZGddZHddZIddZJddZKdS)rcCs<d|_d|_g|_|d|_d|_g|_d|_i|_dS)zInitialize the scanner.FTN) done flow_leveltokensfetch_stream_start tokens_takenindentindentsallow_simple_keypossible_simple_keysrr r r r0s  zScanner.__init__cGsJ|r ||s|jr#|sdS|D] }t|jd|r"dSqdS)NTrF)need_more_tokensfetch_more_tokensr isinstance)rchoiceschoicer r r check_tokenqszScanner.check_tokencCs,|r ||s|jr|jdSdS)Nr)r!r"rr r r r peek_token}s  zScanner.peek_tokencCs<|r ||s|jr|jd7_|jdSdS)Nrr)r!r"rrpopr r r r get_tokens zScanner.get_tokencCs2|jrdS|js dS|||jkrdSdS)NFT)rrstale_possible_simple_keysnext_possible_simple_keyrr r r r r!szScanner.need_more_tokenscCs||||j|}|dkr|S|dkr&|r&|S|dkr2|r2| S|dkr>| r>| S|dkrF| S|dkrN| S|dkrV|S|dkr^|S|d krf|S|dkrr|rr|S|d kr~|r~|S|d kr|r|S|d kr|S|d kr|S|dkr|S|dkr|js|S|dkr|js|S|dkr|S|dkr|S|r| St!ddd||")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_markrchr r r r"s`  zScanner.fetch_more_tokenscCs6d}|jD]}|j|}|dus|j|kr|j}q|Sr )rr )rmin_token_numberlevelkeyr r r r+s  z Scanner.next_possible_simple_keycCs\t|jD]&}|j|}|j|jks|j|jdkr+|jr'td|jd||j|=qdS)Niwhile scanning a simple keycould not find expected ':')listrrrrrrr[)rr_r`r r r r*s  z"Scanner.stale_possible_simple_keyscCsb|j o |j|jk}|jr/||jt|j}t|||j |j |j| }||j |j<dSdSr ) rrrrremove_possible_simple_keyrlenrr rrr[r)rrr r`r r r save_possible_simple_key'sz Scanner.save_possible_simple_keycCsD|j|jvr |j|j}|jrtd|jd||j|j=dSdS)Nrarb)rrrrrr[)rr`r r r rd8s  z"Scanner.remove_possible_simple_keycCsL|jrdS|j|kr$|}|j|_|jt|||j|ks dSdSr )rrr[rr(rappend BlockEndToken)rrrr r r r>Es  zScanner.unwind_indentcCs&|j|kr|j|j||_dSdS)NTF)rrrg)rrr r r add_indent]s zScanner.add_indentcCs$|}|jt|||jddS)N)encoding)r[rrgStreamStartTokenrjrrr r r rgs  zScanner.fetch_stream_startcCsB|d|d|_i|_|}|jt||d|_dS)NrFT) r>rdrrr[rrgStreamEndTokenrrlr r r r@ss  zScanner.fetch_stream_endcCs,|d|d|_|j|dS)NrF)r>rdrrrgscan_directiver r r r rBs zScanner.fetch_directivecC|tdSr )fetch_document_indicatorDocumentStartTokenr r r r rDzScanner.fetch_document_startcCror )rpDocumentEndTokenr r r r rFrrzScanner.fetch_document_endcCsH|d|d|_|}|d|}|j|||dS)NrF)r>rdrr[forwardrrgr TokenClass start_markend_markr r r rps  z Scanner.fetch_document_indicatorcCror )fetch_flow_collection_startFlowSequenceStartTokenr r r r rGrrz!Scanner.fetch_flow_sequence_startcCror )rzFlowMappingStartTokenr r r r rHrrz Scanner.fetch_flow_mapping_startcCsJ||jd7_d|_|}||}|j|||dS)NrT)rfrrr[rurrgrvr r r rzz#Scanner.fetch_flow_collection_startcCror )fetch_flow_collection_endFlowSequenceEndTokenr r r r rIrrzScanner.fetch_flow_sequence_endcCror )r~FlowMappingEndTokenr r r r rJrrzScanner.fetch_flow_mapping_endcCsJ||jd8_d|_|}||}|j|||dS)NrF)rdrrr[rurrgrvr r r r~r}z!Scanner.fetch_flow_collection_endcCs<d|_||}||}|jt||dSNT)rrdr[rurrgFlowEntryToken)rrxryr r r rKs zScanner.fetch_flow_entrycCs|js#|jstddd|||jr"|}|jt||n d|_| |}| |}|jt ||dS)Nz%sequence entries are not allowed hereT) rrrr[rirrrgBlockSequenceStartTokenrdruBlockEntryTokenrrrxryr r r rMs" zScanner.fetch_block_entrycCs|js"|jstddd|||jr"|}|jt|||j |_| |}| |}|jt ||dS)Nz!mapping keys are not allowed here) rrrr[rirrrgBlockMappingStartTokenrdruKeyTokenrr r r rOs  zScanner.fetch_keycCs|j|jvr>|j|j}|j|j=|j|j|jt|j|j|js:||j r:|j|j|jt |j|jd|_ n.|jsM|j sMt ddd| |jsc||j rc| }|jt |||j |_ || }|| }|jt||dS)NFz#mapping values are not allowed here)rrrinsertr rrrrirrrrr[rgrdru ValueToken)rr`rrxryr r r rQ!s8        zScanner.fetch_valuecC$|d|_|j|tdSNF)rfrrrg scan_anchor AliasTokenr r r r rRYzScanner.fetch_aliascCrr)rfrrrgr AnchorTokenr r r r rSdrzScanner.fetch_anchorcC"|d|_|j|dSr)rfrrrgscan_tagr r r r rToszScanner.fetch_tagcC|jdddS)Nr9stylefetch_block_scalarr r r r rUzzScanner.fetch_literalcCr)Nr:rrr r r r rV}rzScanner.fetch_foldedcCs$d|_||j||dSr)rrdrrgscan_block_scalarrrr r r rszScanner.fetch_block_scalarcCr)Nr;rfetch_flow_scalarr r r r rWrzScanner.fetch_singlecCr)Nr<rrr r r r rXrzScanner.fetch_doublecCs$|d|_|j||dSr)rfrrrgscan_flow_scalarrr r r rrzScanner.fetch_flow_scalarcCrr)rfrrrg scan_plainr r r r rZszScanner.fetch_plaincCs|jdkrdSdS)NrT)rr r r r rAs zScanner.check_directivecC6|jdkr|ddkr|ddvrdSdSdSdS)Nrrt--- …

Trprefixr?r r r r rC zScanner.check_document_startcCr)Nrrt...rTrr r r r rErzScanner.check_document_endcCs|ddvS)Nrr)r?r r r r rLszScanner.check_block_entrycC|jrdS|ddvSNTrrrr?r r r r rNzScanner.check_keycCrrrr r r r rPrzScanner.check_valuecCs6|}|dvp|ddvo|dkp|j o|dvS)Nu …

-?:,[]{}#&*!|>'"%@`rrr.z?:)r?rr\r r r rYs zScanner.check_plaincCs|jdkr|dkr|d}|sJ|dkr#||dks|dkr9|dvr9||dvs/|rD|jsCd|_nd}|rdSdS)NruF # …

T)rr?ruscan_line_breakrr)rfoundr r r r=s"     zScanner.scan_to_next_tokencCs|}|||}d}|dkr||}|}n"|dkr+||}|}n|}|dvr?||dvs5||t||||S)NYAMLTAGr)r[ruscan_directive_namescan_yaml_directive_valuescan_tag_directive_valuer?scan_directive_ignored_lineDirectiveToken)rrxnamevalueryr r r rns        zScanner.scan_directivecCs d}||}d|krdks,nd|krdks,nd|kr'dks,n|dvrZ|d 7}||}d|kr?dks,nd|krJdks,nd|krUdks,n|dvs,|sgtd |d ||||}|||}|d vrtd |d |||S) Nr09AZaz-_rwhile scanning a directive6expected alphabetic or numeric character, but found %r …

)r?rr[rru)rrxlengthr]rr r r r&s4 B B  zScanner.scan_directive_namecCs|dkr||dks||}|dkr(td|d|||||}|dvrDtd|d||||fS)Nrr/rz%expected a digit or '.', but found %rrz%expected a digit or ' ', but found %r)r?ruscan_yaml_directive_numberrr[)rrxmajorminorr r r r;s"       z!Scanner.scan_yaml_directive_valuecCs|}d|krdksntd|d||d}d||kr)dkr=nn|d7}d||kr', but found %rrr8FrTzwhile scanning a tagr)r[r?rurrrTagToken) rrxr]rsuffixr use_handlerryr r r rsN           zScanner.scan_tagcCs|dkrd}nd}g}|}|||\}}|||jd}|dkr*d}|dur;|\}} } t|| } n ||d} || \}} d} |j| kr| dkr| || dv} d}| |d vrt|d7}| |d vsi| | |||| } || \}} |j| kr| dkr|r| d kr| r| dvr|s| d n| | nn |j| kr| dksU|dur| | |dur| |td|d|| |S) Nr:TFrr, rr r)r[ruscan_block_scalar_indicatorsscan_block_scalar_ignored_linerscan_block_scalar_indentationmaxscan_block_scalar_breaksrr?extendrgrr ScalarTokenjoin)rrfoldedchunksrxchomping increment min_indentbreaks max_indentryr line_breakleading_non_spacerr r r rs\           &  zScanner.scan_block_scalarcCsd}d}|}|dvr7|dkrd}nd}||}|dvr6t|}|dkr2td|d||n.|dvret|}|dkrLtd|d|||}|dvre|dkr_d}nd}||}|d vrxtd|d ||||fS) Nz+-+TF 0123456789rwhile scanning a block scalarz||||||||||ks&||}td|d|||S)Nr<TFr)r[r?rurscan_flow_scalar_non_spacesscan_flow_scalar_spacesrr)rrdoublerrxquoteryr r r rns"  zScanner.scan_flow_scalarrr,rbt nrv f r err<\/N…_ Lu
Pu
r)xuUc Csg} d}||dvr|d7}||dvs |r&||||||}|sB|dkrB|ddkrB|d|dn|rH|dksN|sX|dvrX|||n|r|dkr||}||jvrx||j||n`||jvr|j|}|t|D]}||d vrtd |d |||f|qt ||d }|t |||n|d vr| | | ||n td |d|||Sq)NTru'"\ …

rr;rz"\r0123456789ABCDEFabcdefz%while scanning a double-quoted scalarz?expected escape sequence of %d hexdecimal numbers, but found %rrz!found unknown escape character %r)r?rgrruESCAPE_REPLACEMENTS ESCAPE_CODESrangerr[rchrrrscan_flow_scalar_breaks)rrrxrrr]kcoder r r rsZ              z#Scanner.scan_flow_scalar_non_spacesc Csg}d}||dvr|d7}||dvs ||}|||}|dkr1td|d||dvrW|}|||}|dkrI||n|sP|d |||S|||S) Nrrrr,while scanning a quoted scalarzfound unexpected end of streamrrr) r?rrurr[rrrgr) rrrxrr whitespacesr]rrr r r rs.       zScanner.scan_flow_scalar_spacescCsg} |d}|dks|dkr |ddvr td|d||dvr0||dvs&|d vr>||n|Sq) NTrtrrrrz#found unexpected document separatorrr)rr?rr[rurgr)rrrxrrr r r rs   zScanner.scan_flow_scalar_breakscCsg}|}|}|jd}g} d}|dkrna ||}|dvs>|dkr7||dd|jr3dndvs>|jr?|d vr?n|d7}q|dkrIn1d |_||||||||}| ||}|rx|dksx|jsy|j |krynqt d |d||S) NrTrrrr6z,[]{}rz,?[]{}F) r[rr?rrrrgrruscan_plain_spacesrrr)rrrxryrspacesrr]r r r rsJ         zScanner.scan_plainc Cs8g}d}||dvr|d7}||dvs ||}|||}|dvr|}d|_|d}|dks<|dkrE|dd vrEdSg} |d vr{|dkrX|n| ||d}|dksl|dkru|dd vrudS|d vsM|d kr||n| s|d|| |S|r|||S) NrrrrTrtrrrrr)r?rrurrrgr) rrrxrrrr]rrrr r r rsD            zScanner.scan_plain_spacescCs2|}|dkrtd||d||d}||}|dkrd|kr*dksEnd|kr5d ksEnd |kr@d ksEn|d vrs|d7}||}d|krXdksEnd|krcd ksEnd |krnd ksEn|d vsE|dkr||td||d|||d7}||}|||S) Nr8while scanning a %szexpected '!', but found %rrrrrrrrrr)r?rr[rur)rrrxr]rrr r r rDs.   B B     zScanner.scan_tag_handlecCs<g}d}||}d|krdks.nd|krdks.nd|kr)dks.n|dvry|d krK|||||d}||||n|d 7}||}d|kr^dks.nd|kridks.nd|krtdks.n|dvs.|r|||||d}|std ||d ||d |S)Nrrrrrrrz-;/?:@&=+$,_.!~*'()[]%r-rzwhile parsing a %szexpected URI, but found %rr)r?rgrruscan_uri_escapesrr[r)rrrxrrr]r r r r\s. B  B     zScanner.scan_tag_uric Csg}|}|dkrD|tdD]}||dvr-td||d|||q|t|dd|d|dks z t| d}W|St ye}z td||t ||d}~ww)Nr-rrr!zBexpected URI escape sequence of 2 hexdecimal numbers, but found %rrzutf-8) r[r?rurrrgrrbytesdecodeUnicodeDecodeErrorstr)rrrxcodesrrrexcr r r r"us.      zScanner.scan_uri_escapescCsP|}|dvr|ddkr|ddS|dS|dvr&||SdS)Nu …rz ru

r)r?rrur\r r r rs  zScanner.scan_line_breakN)Lrrrrr&r'r)r!r"r+r*rfrdr>rirr@rBrDrFrprGrHrzrIrJr~rKrMrOrQrRrSrTrUrVrrWrXrrZrArCrErLrNrPrYr=rnrrrrrrrrrrrrrrrrrrrrrrrrr"rr r r r r.sA    l    !8       #    $)L(      +)% N)__all__errorrrrr rr r r r s