3 +'\:@sddlmZddlmZddlTddlTddlmZmZm Z ddl m Z m Z m Z dddgZGd ddeZGd ddeZGd ddeZd S) )absolute_import)MarkedYAMLError)*)ScannerRoundTripScanner ScannerError)utf8nprintnprintfParserRoundTripParser ParserErrorc@s eZdZdS)r N)__name__ __module__ __qualname__rrm/private/var/folders/pf/wv4htv3x0qs2c2mp0dnn0kchsvlck3/T/pip-build-2dxytl9p/ruamel.yaml/ruamel/yaml/parser.pyr [sc@s>eZdZdddZddZddZdd Zed d Zed d Z ddZ ddZ ddZ ddZ ddZddZddZddZddZd d!Zd"d#Zd$d%Zd&d'ZdLd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6Zd7d8ZdMd9d:Zd;d<Z d=d>Z!d?d@Z"dAdBZ#dNdCdDZ$dEdFZ%dGdHZ&dOdJdKZ'dIS)Pr !ztag:yaml.org,2002:)rz!!cCs6||_|jdk r*t|jdddkr*||j_|jdS)N_parser)loadergetattrr reset_parser)selfrrrr__init__eszParser.__init__cCs*d|_d|_i|_g|_g|_|j|_dS)N) current_event yaml_version tag_handlesstatesmarksparse_stream_startstate)rrrrrls zParser.reset_parsercCs |jdS)N)r)rrrrdisposevszParser.disposecCst|jdr|jjS|jjS)Ntyp)hasattrrscannerZ_scanner)rrrrr$zs zParser.scannercCst|jdr|jjS|jjS)Nr")r#rresolverZ _resolver)rrrrr%s zParser.resolvercGsN|jdkr|jr|j|_|jdk rJ|s,dSx|D]}t|j|r2dSq2WdS)NTF)rr isinstance)rchoiceschoicerrr check_events     zParser.check_eventcCs |jdkr|jr|j|_|jS)N)rr )rrrr peek_events  zParser.peek_eventcCs*|jdkr|jr|j|_|j}d|_|S)N)rr )rvaluerrr get_events   zParser.get_eventcCs:|jj}|j|jjt|j|j|jd}|j|_ |S)N)encoding) r$ get_token move_comment peek_tokenZStreamStartEvent start_markend_markr-parse_implicit_document_startr )rtokeneventrrrrs  zParser.parse_stream_startcCs`|jjtttsT|j|_|jj}|j}}t ||dd}|j j |j |j |_|S|jSdS)NF)explicit)r$ check_tokenDirectiveTokenDocumentStartTokenStreamEndToken DEFAULT_TAGSrr0r1DocumentStartEventrappendparse_document_endparse_block_noder parse_document_start)rr4r1r2r5rrrr3s  z$Parser.parse_implicit_document_startcCsx|jjtr|jjqW|jjts|jj}|j}|j\}}|jjtsrt ddd|jjj |jjj|jj}|j }t ||d||d}|j j|j|j|_n<|jj}t|j|j |jd}|j st|j std|_|S)Nz)expected '', but found %rT)r6versiontags)comment)r$r7DocumentEndTokenr.r:r0r1process_directivesr9r idr2r<rr=r>parse_document_contentr ZStreamEndEventrCAssertionErrorr)rr4r1rArBr2r5rrrr@s0         zParser.parse_document_startcCsh|jj}|j}}d}|jjtr8|jj}|j}d}t|||d}|jj dkr\|j |_ n|j |_ |S)NFT)r6)rIrI) r$r0r1r7rDr.r2ZDocumentEndEventr%processing_versionr@r r3)rr4r1r2r6r5rrrr>s      zParser.parse_document_endcCs@|jjttttr4|j|jjj}|j j |_ |S|j SdS)N) r$r7r8r9rDr:process_empty_scalarr0r1rpopr r?)rr5rrrrGs   zParser.parse_document_contentcCs d|_i|_x|jjtr|jj}|jdkrt|jdk rHtddd|j|j \}}|dkrjtddd|j|j |_q|jdkr|j \}}||jkrtdddt ||j||j|<qWt |jr|j|jj f}n |jdf}x(|j D]}||jkr|j ||j|<qW|S)NZYAMLzfound duplicate YAML directiverIz:found incompatible YAML document (version 1.* is required)ZTAGzduplicate tag handle %r)rrr$r7r8r.namer r1r+rboolcopyr;)rr4majorminorhandleprefixr+keyrrrrE s:            zParser.process_directivescCs |jddS)NT)block) parse_node)rrrrr??szParser.parse_block_nodecCs|jS)N)rV)rrrrparse_flow_nodeCszParser.parse_flow_nodecCs|jdddS)NT)rUindentless_sequence)rV)rrrr'parse_block_node_or_indentless_sequenceGsz.Parser.parse_block_node_or_indentless_sequencecCs|j||S)N)r)rrRsuffixrrr transform_tagKszParser.transform_tagFc Cs$|jjtr8|jj}t|j|j|j}|jj |_ |Sd}d}d}}} |jjt r|jj}|j}|j}|j}|jjt r|jj}|j} |j}|j}nX|jjt r|jj}|j}} |j}|j}|jjt r|jj}|j}} |j}|j}|dk rF|\} } | dk rB| |j kr4td|dt| | |j| | }n| }|dkr`|jjj}}d}|dkpt|dk} |r|jjtrd} |jj}|jr|jdr|jdgg} d|jd<|jjj}t||| ||d| d}|j|_ |S|jjtrt|jj}|j}|jr"|dks,|dkr2d} n|dkrBd} nd} t||| |j|||j|jd}|jj |_ n|jjtr|jj}|j}t||| ||d|jd}|j|_ nj|jjtr|jj}|j}t||| ||d|jd}|j|_ n(|rh|jjtrh|jjj}|jj}|j} | dks@| d dkrH|j } t||| ||d| d}|j!|_ n|r|jjt"r|jjj}|jjj} t||| ||d| d}|j#|_ nl|dk s|dk rt||| dfd ||}|jj |_ n4|rd }nd }|jj}td ||d|j$|j|S)Nzwhile parsing a nodezfound undefined tag handle %rrrF) flow_stylerCT)stylerCrIrUZflowzwhile parsing a %s nodez'expected the node content, but found %r)TF)FT)FF)%r$r7Z AliasTokenr.Z AliasEventr+r1r2rrLr Z AnchorTokenZTagTokenrr rr[r0BlockEntryTokenrCZSequenceStartEventparse_indentless_sequence_entryZ ScalarTokenplain ScalarEventr]ZFlowSequenceStartTokenparse_flow_sequence_first_entryZFlowMappingStartTokenMappingStartEventparse_flow_mapping_first_keyZBlockSequenceStartTokenZ split_comment parse_block_sequence_first_entryZBlockMappingStartTokenparse_block_mapping_first_keyrF)rrUrXr4r5anchortagr1r2Ztag_markrRrZZimplicitrCptnoderrrrVOs                                      zParser.parse_nodecCs |jj}|jj|j|jS)N)r$r.rr=r1parse_block_sequence_entry)rr4rrrrfs z'Parser.parse_block_sequence_first_entrycCs|jjtr^|jj}|j|jj|jjttsJ|jj|j |j S|j |_ |j |j S|jjts|jj}td|jdd|j|j|jj}t|j|j |jd}|jj|_ |jj|S)Nz while parsing a block collectionrIz"expected , but found %r)rC)r$r7r_r.r/r0 BlockEndTokenrr=rlr?r rKr2r rrFr1SequenceEndEventrCrL)rr4r5rrrrls(        z!Parser.parse_block_sequence_entrycCs|jjtrb|jj}|j|jj|jjttttsN|j j |j |j S|j |_ |j|jS|jj}t|j|j|jd}|j j|_ |S)N)rC)r$r7r_r.r/r0KeyToken ValueTokenrnrr=r`r?r rKr2ror1rCrL)rr4r5rrrr`s      z&Parser.parse_indentless_sequence_entrycCs |jj}|jj|j|jS)N)r$r.rr=r1parse_block_mapping_key)rr4rrrrg+s z$Parser.parse_block_mapping_first_keycCs |jjtr`|jj}|j|jj|jjtttsL|jj |j |j S|j |_ |j |jS|jjdkr|jjtr|j |_ |j |jjjS|jjts|jj}td|jdd|j|j|jj}|j|jjt|j|j|jd}|jj|_ |jj|S)NrIzwhile parsing a block mappingz"expected , but found %r)rC)rIrIrm)r$r7rpr.r/r0rqrnrr=parse_block_mapping_valuerYr rKr2r%rJr1r rrFMappingEndEventrCrL)rr4r5rrrrr1s0        zParser.parse_block_mapping_keycCs|jjtr|jj}|jjtr4|j|jjn |jjtsT|j|jjdd|jjtttsz|jj |j |j S|j |_ |j }|dkr|jj}|j }|rd|dg|_|ddg}|j|j|dSn|j |_ |jj}|j|jSdS)NT)emptyrIr)rC)r$r7rqr.r/r0rprnrr=rrrYr rC_commentrKr2r1)rr4rCrrrrsNs*       z Parser.parse_block_mapping_valuecCs$|jj}|jj|j|jddS)NT)first)r$r.rr=r1parse_flow_sequence_entry)rr4rrrrcvs z&Parser.parse_flow_sequence_first_entrycCs|jjts|sN|jjtr(|jjn&|jj}td|jdd|j|j |jjt r|jj}t ddd|j |j dd}|j |_|S|jjts|jj|j|jS|jj}t|j |j |jd}|jj|_|jj|S)Nzwhile parsing a flow sequencerIzexpected ',' or ']', but got %rT)r\)rCrm)r$r7FlowSequenceEndTokenFlowEntryTokenr.r0r rrFr1rprdr2%parse_flow_sequence_entry_mapping_keyr rr=rxrWrorCrL)rrwr4r5rrrrx|s0          z Parser.parse_flow_sequence_entrycCsH|jj}|jjttts0|jj|j|j S|j|_ |j |j SdS)N) r$r.r7rqrzryrr='parse_flow_sequence_entry_mapping_valuerWr rKr2)rr4rrrr{s  z,Parser.parse_flow_sequence_entry_mapping_keycCsr|jjtrP|jj}|jjtts:|jj|j|j S|j|_ |j |j Sn|j|_ |jj }|j |jSdS)N)r$r7rqr.rzryrr=%parse_flow_sequence_entry_mapping_endrWr rKr2r0r1)rr4rrrr|s   z.Parser.parse_flow_sequence_entry_mapping_valuecCs |j|_|jj}t|j|jS)N)rxr r$r0rtr1)rr4rrrr}s z,Parser.parse_flow_sequence_entry_mapping_endcCs$|jj}|jj|j|jddS)NT)rw)r$r.rr=r1parse_flow_mapping_key)rr4rrrres z#Parser.parse_flow_mapping_first_keycCs0|jjts|sP|jjtr*|jjn&|jj}td|jdd|j|j |jjt r|jj}|jjt tts|j j |j|jS|j|_|j|jSnV|jjdkr|jjt r|j|_|j|jjjS|jjts|j j |j|jS|jj}t|j |j|jd}|j j|_|jj|S)Nzwhile parsing a flow mappingrIzexpected ',' or '}', but got %r)rCrm)rIrI)r$r7FlowMappingEndTokenrzr.r0r rrFr1rprqrr=parse_flow_mapping_valuerWr rKr2r%rJparse_flow_mapping_empty_valuertrCrL)rrwr4r5rrrr~s<         zParser.parse_flow_mapping_keycCsr|jjtrP|jj}|jjtts:|jj|j|j S|j|_ |j |j Sn|j|_ |jj }|j |jSdS)N)r$r7rqr.rzrrr=r~rWr rKr2r0r1)rr4rrrrs   zParser.parse_flow_mapping_valuecCs|j|_|j|jjjS)N)r~r rKr$r0r1)rrrrrsz%Parser.parse_flow_mapping_empty_valueNc Cstdddd|||dS)NTFr^)rC)TF)rb)rmarkrCrrrrKszParser.process_empty_scalar)FF)F)F)N)(rrrr;rrr!propertyr$r%r)r*r,rr3r@r>rGrEr?rWrYr[rVrfrlr`rgrrrsrcrxr{r|r}rer~rrrKrrrrr _sJ     ! 4  (    &c@seZdZdZddZdS)r z?roundtrip is a safe loader, that wants to see the unmangled tagc Cs&|dkr|dkrtj|||S||S)Nz!!nullrNintfloatbinary timestampomappairssetstrseqmap) rrNrrrrrrrrrr)r r[)rrRrZrrrr[s zRoundTripParser.transform_tagN)rrr__doc__r[rrrrr sN) __future__rZruamel.yaml.errorrZruamel.yaml.tokensZruamel.yaml.eventsZruamel.yaml.scannerrrrZruamel.yaml.compatrr r __all__r objectr r rrrrs L  +