3 +'\@sddlmZmZddlZddlZddlmZmZmZm Z ddl m Z ddl m Z ernddlmZmZmZmZnddlmZmZmZmZddd d d d d gZdZdZdZdZdZGdddeZddZGdddeZGdddeZGdddeZGdddeZ Gddde e!e Z"Gd dde#e Z$Gd!d"d"eZ%Gd#d$d$e%eZ&Gd%d&d&e%eZ'Gd'd(d(e%Z(Gd)d d ee Z)e*d*d+Z+Gd,d-d-e eZ,Gd.d d e)Z-Gd/d d ee Z.Gd0d1d1e Z/d2d3ej0fd4d5Z1dS)6)absolute_importprint_functionN) ordereddictPY2 string_typesMutableSliceableSequence) ScalarString)Anchor) MutableSetSizedSetMapping CommentedSeqCommentedKeySeq CommentedMapCommentedOrderedMap CommentedSetcomment_attrib merge_attribZ _yaml_commentZ _yaml_formatZ_yaml_line_colZ _yaml_mergeZ _yaml_tagc@sdeZdZdZeZddZddZed d Z ed d Z e j d d Z eddZ e j ddZ dS)Commentcomment_items_end_startcCsd|_i|_g|_dS)N)rrr)selfro/private/var/folders/pf/wv4htv3x0qs2c2mp0dnn0kchsvlck3/T/pip-build-2dxytl9p/ruamel.yaml/ruamel/yaml/comments.py__init__.szComment.__init__cCs0t|jrdt|j}nd}dj|j|j|S)Nz, end=z$Comment(comment={0}, items={1}{2}))boolrstrformatrr)rendrrr__str__8s zComment.__str__cCs|jS)N)r)rrrritems@sz Comment.itemscCs|jS)N)r)rrrrr"Esz Comment.endcCs ||_dS)N)r)rvaluerrrr"JscCs|jS)N)r)rrrrstartOsz Comment.startcCs ||_dS)N)r)rr%rrrr&TsN)rrrr) __name__ __module__ __qualname__ __slots__rattribrr#propertyr$r"setterr&rrrrr(s    rcCsdS)Nrrrrr NoComment[sr.c@s6eZdZd ZeZddZddZddZd d d Z dS) Format _flow_stylecCs d|_dS)N)r0)rrrrrdszFormat.__init__cCs d|_dS)NT)r0)rrrrset_flow_stylehszFormat.set_flow_stylecCs d|_dS)NF)r0)rrrrset_block_stylelszFormat.set_block_styleNcCs|jdkr|S|jS)aif default (the flow_style) is None, the flow style tacked on to the object explicitly will be taken. If that is None as well the default flow style rules the format down the line, or the type of the constituent values (simple -> flow, map/list -> block)N)r0)rdefaultrrr flow_styleps zFormat.flow_style)r0)N) r'r(r)r* format_attribr+rr1r2r4rrrrr/`s r/c@sHeZdZeZddZddZddZddZd d Z d d Z d dZ dS)LineColcCsd|_d|_d|_dS)N)linecoldata)rrrrr~szLineCol.__init__cCs|jdkri|_||j|<dS)N)r9)rkeyr9rrradd_kv_line_cols zLineCol.add_kv_line_colcCs|j|ddS)Nr)_kv)rkrrrr:sz LineCol.keycCs|j|ddS)N)r=)rr>rrrr%sz LineCol.valuecCs(|jdkrdS|j|}||||fS)N)r9)rr>Zx0Zx1r9rrrr=s  z LineCol._kvcCs*|jdkrdS|j|d|j|dfS)Nrr<)r9)ridxrrritems z LineCol.itemcCs|jdkri|_||j|<dS)N)r9)rr:r9rrradd_idx_line_cols zLineCol.add_idx_line_colN) r'r(r)line_col_attribr+rr;r:r%r=rBrCrrrrr6{sr6c@s(eZdZdZdZeZddZddZdS) Tagz'store tag information for roundtrippingr%cCs d|_dS)N)r%)rrrrrsz Tag.__init__cCs dj|S)Nz#{0.__class__.__name__}({0.value!r}))r!)rrrr__repr__sz Tag.__repr__N)r%) r'r(r)__doc__r* tag_attribr+rrFrrrrrEs rEc@seZdZeddZd.ddZd/ddZd0dd Zd1d d Zd2ddZ eddZ e d fddZ eddZ ddZddZddZeddZddZd3d d!Zed"d#Zd$d%Zd4d&d'Zd(d)Zd*d+Zd,d-Zd S)5 CommentedBasecCs(t|tjst|tjtt|tjS)N)hasattrrr+setattrgetattr)rrrrcas zCommentedBase.caFcCs6|dkr dS|s|jjdkr$g|j_|jjj|dS)N)rMr"extend)rrclearrrryaml_end_comment_extends z%CommentedBase.yaml_end_comment_extendcCsv|jjj|ddddg}|s(|ddkrT|ddk rFt|dtsFt|d|d<n|dj|d|d|d<dS)Nr<r)rMr setdefault isinstancelistAssertionErrorrN)rr:rrOrrrryaml_key_comment_extends z%CommentedBase.yaml_key_comment_extendcCsv|jjj|ddddg}|s(|ddkrT|ddk rFt|dtsFt|d|d<n|dj|d|d|d<dS)Nr@r<rr?)rMrrQrRrSrTrN)rr:rrOrUrrryaml_value_comment_extends z'CommentedBase.yaml_value_comment_extendrcCsrddlm}ddlm}|j}|ddkr8|dd}||}x,|jdD]}|j|d|d|dqLWdS) zoverwrites any preceding comment lines on an object expects comment to be without `#` and possible have multiple lines r<) CommentMark) CommentToken Nz# r[)errorrXtokensrY_yaml_get_pre_commentsplitappend)rrindentrXrY pre_comments start_markcomrrryaml_set_start_comments    z$CommentedBase.yaml_set_start_commentNc s4ddlm}ddlmfdd}|dkr4|d}|r\t|dkr\|d d kr\|dd }|rx|dd krx|dd}||}|jjj|dgddg} |d kr| dj|d |n,|rx&|j d D]} | dj|| |qW|r0||}| d dkrg| d <x(|j d D]} | d j|| |qWdS)zc expects comment (before/after) to be without `#` and possible have multiple lines r)rX)rYcs|r dnd|d|dS)Nz# rrZr)smark)rYrr comment_tokenszFCommentedBase.yaml_set_comment_before_after_key..comment_tokenNr?r<rZrr@r[r[r[r[) Zruamel.yaml.errorrXZruamel.yaml.tokensrYlenrMr$rQr`r_) rr:ZbeforeraafterZ after_indentrXrhrccrdr)rYr!yaml_set_comment_before_after_keys,     z/CommentedBase.yaml_set_comment_before_after_keycCs(t|tjst|tjtt|tjS)z}t||r|rHt||t j t ||qt||t ||qWdS)N) rr+r/r6r rErrJrKcopydeepcopyrL)rtdeeparrrcopy_attributesas  zCommentedBase.copy_attributescCstdS)N)NotImplementedError)rrr:rrrrrmsz#CommentedBase._yaml_add_eol_commentcCstdS)N)r)rrrrr^qsz#CommentedBase._yaml_get_pre_commentcCstdS)N)r)rr:rrrrpuszCommentedBase._yaml_get_column)F)F)F)r)NrNN)F)F)r'r(r)r,rMrPrVrWrerlrmr.rurvrwrxryrzr{r}r~rrrrr^rprrrrrIs*    "      rIc@seZdZejdfZddZddZddZd&d d Z d d Z d dZ ddZ ddZ efddZddZddZddZddZddZdd Zd'd"d#Zd$d%ZdS)(rZ_lstcOstj|f||dS)N)rSr)rargskwrrrr}szCommentedSeq.__init__cCs tj||S)N)rS __getitem__)rrArrr__getsingleitem__szCommentedSeq.__getsingleitem__cCsR|t|kr@t|tr@t|t r@t||tr@t|||}tj|||dS)N)rirRrrtyperS __setitem__)rrAr%rrr__setsingleitem__s    zCommentedSeq.__setsingleitem__NcCsZtj|||jjj|dx8t|jjD](}||kr8q*|jjj||jj|d<q*WdS)Nr<)rS __delitem__rMr$popsorted)rrA list_indexrrr__delsingleitem__s  zCommentedSeq.__delsingleitem__cCs tj|S)N)rS__len__)rrrrrszCommentedSeq.__len__cCsPtj|||x|}n2x0t|D]$\}}||krZP||jjkrhqH|}qHW|dk r|j|}|S)Nr<)rMr$ enumerater)rr:rssel_idxprepostrow_idx_k1rrrrps     zCommentedSeq._yaml_get_columncCs.g}|jjdkrd|g|j_n ||jjd<|S)Nr<)rMr)rrbrrrr^s   z"CommentedSeq._yaml_get_pre_commentcCsD|j}||t|<x*|D]"}|jtj||j|ddqW|S)NT)r) __class__idr`rrr)rmemoresr>rrr __deepcopy__s   zCommentedSeq.__deepcopy__cCs tj||S)N)rS__add__)rrrrrrszCommentedSeq.__add__Fcs|dkr:tttt|d}tjdd|Dn@ttt|tjtt|d}tjfdd|Djj }ij_ x4t |D](\}}|d}||kr||jj |<qWdS)N)rcSsg|] }|dqS)rr).0xrrr sz%CommentedSeq.sort..csg|]}tj|dqS)r<)rSr)rr)rrrrsr<) rziprangerirSrmap__iter__rMr$rr)rr:rZtmp_lstZitmrArZ old_indexr)rrsorts$zCommentedSeq.sortcCs tj|S)N)rSrF)rrrrrFszCommentedSeq.__repr__)N)NF)r'r(r)rr+r*rrrrrrrNrr.rrrrrpr^rrrrFrrrrrzs$       c@s<eZdZdZefddZddZddZdd Zd d Z d S) rzEThis primarily exists to be able to roundtrip keys that are sequencescCs"|tk r|j||n||j_dS)N)r.rVrMr)rrr:rrrrsz!CommentedKeySeq._yaml_add_commentcCs|j||ddS)N)r:)r)rrr:rrrrr sz%CommentedKeySeq._yaml_add_eol_commentcCs|jj|djjS)Nr)rMr$rcrs)rr:rrrr sz!CommentedKeySeq._yaml_get_columnXcCsd}d}|d|d}}||jjkr,|}nD||jjkr>|}n2x0t|D]$\}}||krZP||jjkrhqH|}qHW|dk r|j|}|S)Nr<)rMr$rr)rr:rsrrrrrrrrrps     z CommentedKeySeq._yaml_get_columncCs.g}|jjdkrd|g|j_n ||jjd<|S)Nr<)rMr)rrbrrrr^&s   z%CommentedKeySeq._yaml_get_pre_commentN) r'r(r)rGr.rrrrrpr^rrrrrs  c@s eZdZdZddZddZdS)CommentedMapView_mappingcCs ||_dS)N)r)rmappingrrrr3szCommentedMapView.__init__cCst|j}|S)N)rir)rcountrrrr7s zCommentedMapView.__len__N)r)r'r(r)r*rrrrrrr0src@s,eZdZfZeddZddZddZdS)CommentedMapKeysViewcCst|S)N)set)ritrrr_from_iterable@sz#CommentedMapKeysView._from_iterablecCs ||jkS)N)r)rr:rrr __contains__Esz!CommentedMapKeysView.__contains__ccsx|jD] }|VqWdS)N)r)rrrrrrIs zCommentedMapKeysView.__iter__N)r'r(r)r* classmethodrrrrrrrr=s rc@s,eZdZfZeddZddZddZdS)CommentedMapItemsViewcCst|S)N)r)rrrrrrSsz$CommentedMapItemsView._from_iterablec Cs8|\}}y|j|}Wntk r*dSX||kSdS)NF)rKeyError)rrBr:r%vrrrrXs z"CommentedMapItemsView.__contains__ccs(x"|jjD]}||j|fVq WdS)N)r_keys)rr:rrrrbszCommentedMapItemsView.__iter__N)r'r(r)r*rrrrrrrrrPs  rc@s eZdZfZddZddZdS)CommentedMapValuesViewcCs&x |jD]}||j|krdSqWdS)NTF)r)rr%r:rrrrks z#CommentedMapValuesView.__contains__ccs$x|jjD]}|j|Vq WdS)N)rr)rr:rrrrrszCommentedMapValuesView.__iter__N)r'r(r)r*rrrrrrrhsrc@seZdZejddfZddZeefddZddZ d d Z d d Z d dZ ddZ dTddZdUddZddZddZddZddZdVdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zerd/d0Zd1d2Zd3d4Znd5d0Zerd6d7Z d8d9Z!d:d;Z"dd9Z!d?d@Z$erFdAdBZ%dCdDZ&dEdFZ'ndGdBZ%e(dHdIZ)dJdKZ*dLdMZ+dNdOZ,dPdQZ-dRdSZ.dS)Wr_ok_refcOs$t|_g|_tj|f||dS)N)rrrrr)rrrrrrr{szCommentedMap.__init__cCs:|tk r|j||dS|tk r.|j||n||j_dS)z>values is set to key to indicate a value attachment of commentN)r.rVrWrMr)rrr:r%rrrrs  zCommentedMap._yaml_add_commentcCs|j||ddS)z6add on the value line, with value specified by the key)r%N)r)rrr:rrrrrsz"CommentedMap._yaml_add_eol_commentcCs|jj|djjS)Nr?)rMr$rcrs)rr:rrrrszCommentedMap._yaml_get_columnXc Csd}d}d\}}}x2|D]*}|dk r2||kr2|}P||kr>|}|}qW||jjkrX|}n<||jjkrj|}n*x(|D] }||kr~P||jjkrqp|}qpW|dk r|j|}|S)N)NNN)rMr$r) rr:rsrrrlastrZk1rrrrps.       zCommentedMap._yaml_get_columncCs.g}|jjdkrd|g|j_n ||jjd<|S)Nr<)rMr)rrbrrrr^s   z"CommentedMap._yaml_get_pre_commentcCsytj||Wn.tk r>x|D]}||||<q&WYnXy|jj|jWn2tk rx|D]}|jj|dqjWYnXdS)Nr)rupdate TypeErrorrkeysrqadd)rvalsrrrrrs  zCommentedMap.updateNcCs6tj|||||jj||dk r2|j||ddS)zPinsert key value into given position attach comment if provided N)r:)rrrrru)rposr:r%rrrrrs zCommentedMap.insertFc sft|ts|j||Sfddy |d|Stk rD|Sttfk r`s\|SXdS)z/multi-level get that expects dicts within dictscsZst|tst|t|kr>|t|kr.t|||dS||d|||dS)Nr<)rRdictrTri IndexError)Zkey_listleveld) get_one_levellist_okrrrs  z)CommentedMap.mlget..get_one_levelr<N)rRrSgetrrr)rr:r3rr)rrrmlgets    zCommentedMap.mlgetc CsVy tj||Stk rPx,t|tgD]}||dkr*|d|Sq*WYnXdS)Nr<)rrrrLr)rr:Zmergedrrrrs  zCommentedMap.__getitem__cCsZ||krrrrrrs    zCommentedMap.copycCs||jkr|jj|dS)N)rr`)rcmrrr add_referents zCommentedMap.add_referentcCsbxP|D]H}|dj|x4|djD]$\}}tj||rrrradd_yaml_merges  zCommentedMap.add_yaml_mergecCsT||jkrdSx4|jD]*}||dkrtj|||d|dSqWtj||dS)Nr<)rrrrr)rr:rrrrrs   zCommentedMap.update_key_valuecCsF|j}||t|<x|D]}tj||||<qW|j|dd|S)NT)r)rrrrr)rrrr>rrrrs   zCommentedMap.__deepcopy__)N)NF)N)/r'r(r)rr+r*rr.rrrrrpr^rrrrrrrrrFrrrrrrrrrrrrrrrr$rrr,rrrrrrrrrrrxsZ             cOstdj|jdS)Nz{} objects are immutable)rr!r')clsrkwargsrrrraise_immutablesrc@seZdZejdfZddZeZZ Z Z Z Z ZddZddZdd Zd d Zd d ZedddZefddZddZddZddZddZdS)CommentedKeyMap_odc OsVt|drt|yt|||_Wn.tk rPtrJt|dj|_nYnXdS)Nrr)rJrrrrrr$)rrrrrrrs zCommentedKeyMap.__init__cCs |j|S)N)r)rindexrrrrszCommentedKeyMap.__getitem__ccsx|jjD] }|Vq WdS)N)rr)rrrrrrszCommentedKeyMap.__iter__cCs t|jS)N)rir)rrrrrszCommentedKeyMap.__len__cCstt|jS)N)hashtupler$)rrrr__hash__szCommentedKeyMap.__hash__cCs.t|ts|jjSdtt|jjdS)Nz ordereddict())rJrrrFreprrSr$)rrrrrFs  zCommentedKeyMap.__repr__NcCsttj||S)N)rrfromkeys)rrrrrrszCommentedKeyMap.fromkeyscCs"|tk r|j||n||j_dS)N)r.rVrMr)rrr:rrrrsz!CommentedKeyMap._yaml_add_commentcCs|j||ddS)N)r:)r)rrr:rrrrrsz%CommentedKeyMap._yaml_add_eol_commentcCs|jj|djjS)Nr)rMr$rcrs)rr:rrrrsz!CommentedKeyMap._yaml_get_columnXcCsd}d}|d|d}}||jjkr,|}nD||jjkr>|}n2x0t|D]$\}}||krZP||jjkrhqH|}qHW|dk r|j|}|S)Nr<)rMr$rr)rr:rsrrrrrrrrrps     z CommentedKeyMap._yaml_get_columncCs.g}|jjdkrd|g|j_n ||jjd<|S)Nr<)rMr)rrbrrrr^s   z%CommentedKeyMap._yaml_get_pre_comment)N)r'r(r)rr+r*rrrrrOrpopitemrQrrrrrrFrrr.rrrrrpr^rrrrrs    rc@seZdZejfZdS)rN)r'r(r)rr+r*rrrrr!sc@sfeZdZejdfZdddZeefddZddZ d d Z d d Z d dZ ddZ ddZddZdS)rodictNcCs&t|_tj||dk r"||O}dS)N)rrr r)rrrrrr(s zCommentedSet.__init__cCs:|tk r|j||dS|tk r.|j||n||j_dS)z>values is set to key to indicate a value attachment of commentN)r.rVrWrMr)rrr:r%rrrr/s  zCommentedSet._yaml_add_commentcCs|j||ddS)z6add on the value line, with value specified by the key)r%N)r)rrr:rrrrr:sz"CommentedSet._yaml_add_eol_commentcCsd|j|<dS)zAdd an element.N)r)rr%rrrr?szCommentedSet.addcCs |j|=dS)z8Remove an element. Do not raise an exception if absent.N)r)rr%rrrrDszCommentedSet.discardcCs ||jkS)N)r)rrrrrrIszCommentedSet.__contains__ccsx|jD] }|VqWdS)N)r)rrrrrrMs zCommentedSet.__iter__cCs t|jS)N)rir)rrrrrRszCommentedSet.__len__cCsdj|jjS)Nz set({0!r}))r!rr)rrrrrFVszCommentedSet.__repr__)N)r'r(r)rr+r*rr.rrrrrrrrrFrrrrr%s   c@seZdZddZddZdS) TaggedScalarcCsd|_d|_dS)N)r%style)rrrrr]szTaggedScalar.__init__cCs|jS)N)r%)rrrrr#bszTaggedScalar.__str__N)r'r(r)rr#rrrrr[srr.cCst|trpt|drp|r*tjjdj||jdj|jx|D](}t|||r^|||n|||dqBWnzt|t rt|dr|rtjjdj||jdj|jxrArrrrgs *r)2 __future__rrrrZruamel.yaml.compatrrrrZruamel.yaml.scalarstringrZruamel.yaml.anchorr collectionsr r r r collections.abc__all__rr5rDrrHobjectrr.r/r6rErIrSrrrrrrrrrrrrrrrrrrrrsN   3+F1 H ]6