3 +'\@sFddlmZmZmZddlZddlZddlZddlZddlZddl Z ddl Z ddl m Z m Z mZddlTddlmZmZmZddlmZmZmZmZmZmZmZmZmZmZmZmZm Z ddl!Tddl!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(ddl)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/dd l0m1Z1m2Z2m3Z3m4Z4m5Z5dd l6m7Z7dd l8m9Z9dd l:m;Z;dd lGddde Z?Gddde Z@Gddde ZAGdddeBZCGdddeCZDeDjEdeDjFeDjEdeDjGeDjEdeDjHeDjEdeDjIeDjEdeDjJeDjEdeDjKeDjEd eDjLeDjEd!eDjMeDjEd"eDjNeDjEd#eDjOeDjEd$eDjPeDjEd%eDjQeDjEdeDjRerxGd&d'd'ZSGd(ddeDZTeTjEd)eTjFeTjEd*eTjGeTjEd+eTjUeTjEd,eTjVereTjEd-eTjWeTjEd.eTjHeTjEd/eTjXeTjEd0eTjIeTjEd1eTjYeTjEd2eTjPeTjEd3eTjZeTjEd4eTjQeTj[d5eTj\eTj[d6eTj]eTj[d7eTj^eTj[d8eTj_eTj[d9eTj`Gd:ddeDZaeajEdeajFeajEdeajGeajEdeajHeajEdeajIeajEdeajJeajEdeajKeajEd eajLeajEd!eajMeajEd"eajNeajEd#eajOeajEd$eajPeajEd%eajQeajEdeajRdS);)print_functionabsolute_importdivisionN)MarkedYAMLErrorMarkedYAMLFutureWarningMantissaNoDotYAML1_1Warning)*) SequenceNode MappingNode ScalarNode) utf8builtins_moduleto_strPY2PY3 ordereddict text_typenprintnprintf version_tnfHashableMutableSequenceMutableMapping) CommentedMapCommentedOrderedMap CommentedSetCommentedKeySeq CommentedSeq TaggedScalarCommentedKeyMap)SingleQuotedScalarStringDoubleQuotedScalarStringLiteralScalarStringFoldedScalarStringPlainScalarString ScalarString) ScalarInt BinaryIntOctalIntHexInt HexCapsInt) ScalarFloat) ScalarBoolean) TimeStamp)RegExpBaseConstructorSafeConstructor ConstructorConstructorErrorRoundTripConstructorc@s eZdZdS)r2N)__name__ __module__ __qualname__r7r7r/private/var/folders/pf/wv4htv3x0qs2c2mp0dnn0kchsvlck3/T/pip-build-2dxytl9p/ruamel.yaml/ruamel/yaml/constructor.pyr2+sc@s eZdZdS)DuplicateKeyFutureWarningN)r4r5r6r7r7r7r8r9/sr9c@s eZdZdS)DuplicateKeyErrorN)r4r5r6r7r7r7r8r:3sr:c@seZdZiZiZd#ddZeddZeddZdd Z d d Z d d Z ddZ d$ddZ ddZd%ddZd&ddZddZddZd'ddZedd Zed!d"ZdS)(r/NcCsj||_|jdk r*t|jdddkr*||j_||_t|_t|_i|_i|_g|_ d|_ ||_ t dd|_ dS) N _constructorFr)rr<r=)rr>)loadergetattrr;dictyaml_base_dict_typelistyaml_base_list_typeconstructed_objectsrecursive_objectsstate_generatorsdeep_construct_preserve_quotesrallow_duplicate_keys)selfZpreserve_quotesr?r7r7r8__init__<szBaseConstructor.__init__c Cszt|jdr|jjSy|jjStk rttjjdjt |tjjdj|jjtjjdjt |YnXdS)Ntypzslt {} zslc {} z{} ) hasattrr?composerZ _composerAttributeErrorsysstdoutwriteformattypedir)rKr7r7r8rOKs zBaseConstructor.composercCst|jdr|jjS|jjS)NrM)rNr?resolverZ _resolver)rKr7r7r8rWXs zBaseConstructor.resolvercCs |jjS)N)rO check_node)rKr7r7r8 check_data_szBaseConstructor.check_datacCs|jjr|j|jjSdS)N)rOrXconstruct_documentZget_node)rKr7r7r8get_datads zBaseConstructor.get_datacCs |jj}|dk r|j|SdS)N)rOZget_single_noderZ)rKnoder7r7r8get_single_datajs  zBaseConstructor.get_single_datacCsX|j|}x6t|jr@|j}g|_x|D]}x |D]}q2Wq(Wq Wi|_i|_d|_|S)NF)construct_objectboolrGrErFrH)rKr\datarG generator_dummyr7r7r8rZrs     z"BaseConstructor.construct_documentFc Cs||jkr|j|S|r$|j}d|_||jkr8|j|Sd|j|<d}d}|j|jkrd|j|j}nx|jD].}|jj|rl|jt|d}|j|}PqlWd|jkr|j}|jd}nRd|jkr|jd}nsz6BaseConstructor.construct_sequence..)rhr r2rtrurv)rKr\rqr7)rqrKr8rks z"BaseConstructor.construct_sequencec Csdt|ts tddd|j|j|j}t|dddk rN|jdf|jdfg}n |jdfg}x|D]\}}|j}x|D]\}} |j |dd} t| t st| t rt | } t ry t| Wn8tk r} ztd|jd| |jWYdd} ~ XnXnt| t std|jd |j|j | |d} |rF|j|||| | rN| || <qx| || <qxW|j|qbW|S) zdeep is True when creating an object/mapping recursively, in that case want the underlying elements available during construction Nz%expected a mapping node, but found %smergeFT)rqzwhile constructing a mappingzfound unacceptable key (%s)zfound unhashable key)rhr r2rtrurBr@rzrvr^rrCtuplerhash TypeErrorcheck_mapping_keyupdate) rKr\rqZ total_mappingtodovaluescheckmappingkey_node value_nodekeyexcrvr7r7r8rlsH        z!BaseConstructor.construct_mappingcCs||kr|js|j|}trXt|tr0|jd}t|trD|jd}t|trX|jd}d|jdj||||jddg}|jdkrtj t |nt |dSdS) zreturn True if key is uniquezutf-8zwhile constructing a mappingz?found duplicate key "{}" with value "{}" (original value: "{}")z To suppress this check see: http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys z Duplicate keys will become an error in future releases, and are errors by default when using the new API. NFT) rJgetrrhunicodeencoderurTwarningswarnr9r:)rKr\rrrrvmkargsr7r7r8r~s,        z!BaseConstructor.check_mapping_keycCsf||krb|jsbtr&t|tr&|jd}d|jdj||jddg}|jdkrZtjt |nt |dS)Nzutf-8zwhile constructing a setzfound duplicate key "{}"z To suppress this check see: http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys z Duplicate keys will become an error in future releases, and are errors by default when using the new API. ) rJrrhrrrurTrrr9r:)rKr\rZsettingrrr7r7r8 check_set_key!s   zBaseConstructor.check_set_keycCsft|ts tddd|j|jg}x<|jD]2\}}|j||d}|j||d}|j||fq,W|S)Nz%expected a mapping node, but found %s)rq)rhr r2rtrurvr^rp)rKr\rqpairsrrrrvr7r7r8construct_pairs;s zBaseConstructor.construct_pairscCs$d|jkr|jj|_||j|<dS)Nrd)__dict__rdcopy)clsrcrrr7r7r8add_constructorHs  zBaseConstructor.add_constructorcCs$d|jkr|jj|_||j|<dS)Nre)rrer)rrsZmulti_constructorr7r7r8add_multi_constructorOs  z%BaseConstructor.add_multi_constructor)NN)F)F)F)F)r4r5r6rdrerLpropertyrOrWrYr[r]rZr^rjrkrlr~rr classmethodrrr7r7r7r8r/7s$   8 3# c @seZdZddZddZd*ddZdd Zd dd dd dd dd Zd d ZddZ dZ xe e e krle e 9Z qVWe e Z ddZ e rddZnddZedejZd+ddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)ZdS),r0cCs>t|tr2x&|jD]\}}|jdkr|j|SqWtj||S)Nztag:yaml.org,2002:value)rhr rvrcrjr/)rKr\rrr7r7r8rjXs   z SafeConstructor.construct_scalarc Csg}d}xl|t|jkrv|j|\}}|jdkrP|r|jrR|j|=|d7}q d|jdj|j|jddg}|jdkrtjt|nt ||j|=t |t r|j ||j |jnt |tr6g}xF|jD]<}t |t std|jd |j|j|j ||j|jqW|jx2|D]} |j | q Wntd|jd |j|jq |jd krld |_|d7}q |d7}q Wt|r||_||j|_dS) z This implements the merge key feature http://yaml.org/type/merge.html by inserting keys from the merge dict/list of dicts if not yet available in this node rztag:yaml.org,2002:merger=zwhile constructing a mappingzfound duplicate key "{}"z To suppress this check see: http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys z Duplicate keys will become an error in future releases, and are errors by default when using the new API. Nz,expected a mapping for merging, but found %sz@expected a mapping or list of mappings for merging, but found %sztag:yaml.org,2002:valueztag:yaml.org,2002:str)rgrvrcrJrurTrrr9r:rhr flatten_mappingextendr r2rtrpreverser_rz) rKr\rzindexrrrZsubmergesubnodervr7r7r8r`sd               zSafeConstructor.flatten_mappingFcCs$t|tr|j|tj|||dS)zdeep is True when creating an object/mapping recursively, in that case want the underlying elements available during construction )rq)rhr rr/rl)rKr\rqr7r7r8rls  z!SafeConstructor.construct_mappingcCs|j|dS)N)rj)rKr\r7r7r8construct_yaml_nulls z#SafeConstructor.construct_yaml_nullT)yesnoyntruefalseonoffcCs|j|}|j|jS)N)rj bool_valueslower)rKr\rvr7r7r8construct_yaml_bools z#SafeConstructor.construct_yaml_boolcCsPt|j|}|jdd}d}|ddkr.d}|ddkrF|dd}|dkrRdS|jdrr|t|d dd S|jd r|t|d dd S|jd r|t|d dd S|jjdkr|ddkr|t|d S|jjdkr@d|kr@dd|jdD}|jd}d}x"|D]}|||7}|d9}qW||S|t|SdS)N_r=r-z+-00b0xr>0o:cSsg|] }t|qSr7)int)rwpartr7r7r8rysz6SafeConstructor.construct_yaml_int..<r=)r=r=)r=r=) rrjreplacerfrrWprocessing_versionsplitr)rKr\value_ssigndigitsbaservdigitr7r7r8construct_yaml_ints6         z"SafeConstructor.construct_yaml_intgu<7~c Cst|j|}|jddj}d}|ddkr2d}|ddkrJ|dd}|dkr\||jS|dkrj|jS|jjdkrd |krd d |jd D}|j d}d }x |D]}|||7}|d9}qW||S|jjdkod|kr |jd\} } d| kr t j t |||t |SdS)Nrrr=rrz+-z.infz.nanrrcSsg|] }t|qSr7)float)rwrr7r7r8rysz8SafeConstructor.construct_yaml_float..gre.r=r)r=r)r=r)rrjrr inf_value nan_valuerWrrrrrrr) rKr\value_sorrrrrvrmantissaexponentr7r7r8construct_yaml_floats2        z$SafeConstructor.construct_yaml_floatcCsy|j|jd}Wn6tk rJ}ztddd||jWYdd}~XnXy"ttdrbtj|Stj|SWn8t j k r}ztddd||jWYdd}~XnXdS)Nasciiz,failed to convert base64 data into ascii: %s decodebytesz failed to decode base64 data: %s) rjrUnicodeEncodeErrorr2rurNbase64r decodestringbinasciiError)rKr\rvrr7r7r8construct_yaml_binary s  z%SafeConstructor.construct_yaml_binarycCsZ|j|}yt|jdStjtfk rT}ztddd||jWYdd}~XnXdS)Nrz failed to decode base64 data: %s)rjrdecoderrrr2ru)rKr\rvrr7r7r8r!s  a^(?P[0-9][0-9][0-9][0-9]) -(?P[0-9][0-9]?) -(?P[0-9][0-9]?) (?:((?P[Tt])|[ \t]+) # explictly not retaining extra spaces (?P[0-9][0-9]?) :(?P[0-9][0-9]) :(?P[0-9][0-9]) (?:\.(?P[0-9]*))? (?:[ \t]*(?PZ|(?P[-+])(?P[0-9][0-9]?) (?::(?P[0-9][0-9]))?))?)?$NcCs|dkr\y|jj|j}Wntk r2d}YnX|dkrTtdddj|j|j|j}t|d}t|d}t|d}|dst j |||St|d}t|d}t|d} d} |d r*|d dd } xt | d kr| d 7} qWt| } t |d d kr*t|d d d kr*| d 7} d} |drt|d} |d}|rZt|nd}t j | |d} |ddkr| } t j |||||| | }| r|| 8}|S)Nz'failed to construct timestamp from "{}"yearmonthdayhourminutesecondrfractionrr=tz_signtz_hour tz_minute)hoursminutesr) timestamp_regexpmatchrvr}r2rTru groupdictrdatetimedaterg timedelta)rKr\rrrrrrrrr fraction_sdeltarrrr`r7r7r8construct_yaml_timestamp9sP          (   z(SafeConstructor.construct_yaml_timestampccst}|Vt|ts.td|jd|j|jx|jD]}t|ts\td|jd|j|jt|jdkrtd|jdt|j|j|jd\}}|j |}||kst |j |}|||<q6WdS)Nz!while constructing an ordered mapz!expected a sequence, but found %sz,expected a mapping of length 1, but found %sr=z2expected a single mapping item, but found %d itemsr) rrhr r2rurtrvr rgr^AssertionError)rKr\omaprrrrrvr7r7r8construct_yaml_omapms4       z#SafeConstructor.construct_yaml_omapccsg}|Vt|ts,td|jd|j|jx|jD]}t|tsZtd|jd|j|jt|jdkrtd|jdt|j|j|jd\}}|j|}|j|}|j ||fq4WdS)Nzwhile constructing pairsz!expected a sequence, but found %sz,expected a mapping of length 1, but found %sr=z2expected a single mapping item, but found %d itemsr) rhr r2rurtrvr rgr^rp)rKr\rrrrrrvr7r7r8construct_yaml_pairss2      z$SafeConstructor.construct_yaml_pairsccs$t}|V|j|}|j|dS)N)setrlr)rKr\r`rvr7r7r8construct_yaml_sets z"SafeConstructor.construct_yaml_setc Cs6|j|}tr|Sy |jdStk r0|SXdS)Nr)rjrrr)rKr\rvr7r7r8construct_yaml_strs  z"SafeConstructor.construct_yaml_strccs"|j}|V|j|j|dS)N)rDrrk)rKr\r`r7r7r8construct_yaml_seqsz"SafeConstructor.construct_yaml_seqccs&|j}|V|j|}|j|dS)N)rBrlr)rKr\r`rvr7r7r8construct_yaml_maps z"SafeConstructor.construct_yaml_mapccsN|j|}|Vt|dr4|j|dd}|j|n|j|}|jj|dS)N __setstate__T)rq)__new__rNrlrrr)rKr\rr`stater7r7r8construct_yaml_objects    z%SafeConstructor.construct_yaml_objectcCstdddt|j|jdS)Nz0could not determine a constructor for the tag %r)r2r rcru)rKr\r7r7r8construct_undefineds  z#SafeConstructor.construct_undefined)F)N)r4r5r6rjrrlrrrrrrrrrr.reXrrrrrrrrrrr7r7r7r8r0WsDG       4!   ztag:yaml.org,2002:nullztag:yaml.org,2002:boolztag:yaml.org,2002:intztag:yaml.org,2002:floatztag:yaml.org,2002:binaryztag:yaml.org,2002:timestampztag:yaml.org,2002:omapztag:yaml.org,2002:pairsztag:yaml.org,2002:setztag:yaml.org,2002:strztag:yaml.org,2002:seqztag:yaml.org,2002:mapc@s eZdZdS)classobjN)r4r5r6r7r7r7r8rsrc@seZdZddZddZer$ddZddZd d Zd d Z d dZ ddZ ddZ ddZ d!ddZddZddZd"ddZdd ZdS)#r1cCst|j|S)N)r rj)rKr\r7r7r8construct_python_str sz Constructor.construct_python_strcCs |j|S)N)rj)rKr\r7r7r8construct_python_unicodesz$Constructor.construct_python_unicodecCsy|j|jd}Wn6tk rJ}ztddd||jWYdd}~XnXy"ttdrbtj|Stj|SWn8t j k r}ztddd||jWYdd}~XnXdS)Nrz,failed to convert base64 data into ascii: %srz failed to decode base64 data: %s) rjrrr2rurNrrrrr)rKr\rvrr7r7r8construct_python_bytess  z"Constructor.construct_python_bytescCs|j|}tr|St|S)N)rrr)rKr\valr7r7r8construct_python_long)s z!Constructor.construct_python_longcCst|j|S)N)complexrj)rKr\r7r7r8construct_python_complex0sz$Constructor.construct_python_complexcCst|j|S)N)r{rk)rKr\r7r7r8construct_python_tuple4sz"Constructor.construct_python_tuplecCsf|std|d|y t|Wn<tk rZ}z td|dt||f|WYdd}~XnXtj|S)Nz"while constructing a Python modulez+expected non-empty name appended to the tagzcannot find module %r (%s))r2 __import__ ImportErrorr rQmodules)rKnamemarkrr7r7r8find_python_module8s zConstructor.find_python_modulec Cs8|std|d|d|kr|jd}|}g}x\t|dkr||jd|jdj|}yt|PWq.tk rxw.Yq.Xq.Wn t}|g}y t|Wn<tk r}z td|dt ||f|WYdd}~XnXt j |}dj|} |} xF|r2t | |ds td|dt | |j f|t| |jd} qW| S)Nz"while constructing a Python objectz+expected non-empty name appended to the tagrr=rzcannot find module %r (%s)zcannot find %r in the module %r)r2rrginsertpopjoinrrr r rQrrNr4r@) rKrrlnameZ lmodule_nameZ lobject_name module_namermoduleZ object_nameobjr7r7r8find_python_nameLsP     zConstructor.find_python_namecCs6|j|}|r(td|jdt||j|j||jS)Nz while constructing a Python namez&expected the empty value, but found %r)rjr2rur r)rKsuffixr\rvr7r7r8construct_python_name}s  z!Constructor.construct_python_namecCs6|j|}|r(td|jdt||j|j||jS)Nz"while constructing a Python modulez&expected the empty value, but found %r)rjr2rur r)rKrr\rvr7r7r8construct_python_modules  z#Constructor.construct_python_moduleNFcCs|sg}|si}|j||j}trN|rBt|trB|j|f||S|||SnX|r|t|ttr|| r|| r|t}||_|S|rt|tr|j|f||S|||SdS)N)rrurrhrUrrri)rKrr\rkwdsnewobjrinstancer7r7r8make_python_instances  z Constructor.make_python_instancecCst|dr|j|nji}t|tr8t|dkr8|\}}t|drP|jj|n|r^|j|x |jD]\}}tt ||qhWdS)Nrrr) rNrrhr{rgrritemssetattrobject)rKrr slotstaterrvr7r7r8set_python_instance_states    z%Constructor.set_python_instance_stateccsH|j||dd}||j|<|Vt|d}|j||d}|j||dS)NT)rr)rq)rrFrNrlr)rKrr\rrqrr7r7r8construct_python_objects   z#Constructor.construct_python_objectc Cst|tr*|j|dd}i}i}g}i}nJ|j|dd} | jdg}| jdi}| jdi}| jdg}| jdi}|j|||||} t|r|j| |t|r| j|t|rx|D]} || | | <qW| S)NT)rqrrr listitems dictitems) rhr rkrlrrr_rr) rKrr\rrrrrrrvrrr7r7r8construct_python_object_applys*         z)Constructor.construct_python_object_applycCs|j||ddS)NT)r)r )rKrr\r7r7r8construct_python_object_newsz'Constructor.construct_python_object_new)NNF)F)r4r5r6rrrrrrrrrrrrrrr r!r7r7r7r8r1 s 1   $ztag:yaml.org,2002:python/noneztag:yaml.org,2002:python/boolztag:yaml.org,2002:python/strz tag:yaml.org,2002:python/unicodeztag:yaml.org,2002:python/bytesztag:yaml.org,2002:python/intztag:yaml.org,2002:python/longztag:yaml.org,2002:python/floatz tag:yaml.org,2002:python/complexztag:yaml.org,2002:python/listztag:yaml.org,2002:python/tupleztag:yaml.org,2002:python/dictztag:yaml.org,2002:python/name:z tag:yaml.org,2002:python/module:z tag:yaml.org,2002:python/object:z&tag:yaml.org,2002:python/object/apply:z$tag:yaml.org,2002:python/object/new:c@seZdZdZddZddZddZdd Zd(d d Zd dZ ddZ d)ddZ d*ddZ ddZ ddZddZddZddZdd Zd!d"Zd+d$d%Zd&d'Zd#S),r3zOneed to store the comments on the node itself, as well as on the items cCsvt|ts tddd|j|j|jdkrjt|jtrjt|j|j d}|j rf|j drf|j dd|_ |S|jdko~t|jtrg}d }x2|jj d|d}|dkrP|j |t |qWt|jjdd|j d}|j r|j dr|j dd|_ |r||_|St|jrXt|jtrX|jd krr'"r)rhr r2rtrustylervrr"r#commentfindrprgr#rZfold_posr_rIr r!r$)rKr\ZlssZfold_positionsidxZfssr7r7r8rj-s<   z%RoundTripConstructor.construct_scalarcCsd}t|j|}y*|jd}t||jddddg}Wn.tk rTd}Yntk rjd}YnX|jdd}d}|ddkrd}|ddkr|dd}|dkrdS|jd rH|j j dkr|d dkrt|d d}|dk r$|d dk|d<t|d ddko|ddk|d <t |t |d dd |||j d S|jd r|j j dkr|d dkrt|d d}t}x2|d dD]"} | d krt}P| dkrPqW|dk r|d dk|d<t|d ddko|ddk|d <||t |d dd|||j d S|jdr|j j dkrT|d dkrTt|d d}|dk r|d dk|d<t|d ddko|ddk|d <t|t |d dd|||j d S|j j d kr|ddkr|t |dS|j j d!krJd|krJdd|jdD} | jd} d} x"| D]} | | | 7} | d9} q$W|| S|j j d"kr|ddkr|dk rt|dko|d#dk|d <t|t |t||dS|rt|dko|d$dk|d <t|t |d||j d S|j rt|t |d|j dS|t |SdS)%Nrr=Frrrz+-rrr)width underscorer#rZABCDEFZabcdefr>rrrcSsg|] }t|qSr7)r)rwrr7r7r8rysz;RoundTripConstructor.construct_yaml_int..r)r,r-)r,r#r=r)r=r=r)r=r=r)r=r=r)r=r)r=r)r=r=rr)rrjrstriprgrindex ValueError IndexErrorrrfrWrr'rr#r)r*r(rrr&)rKr\r,Zvalue_suZsxr-rrZhex_funchrrrvrr7r7r8rPs         &     &   &    z'RoundTripConstructor.construct_yaml_intcCsdd}d}t|j|}|jddj}d}|ddkr>d}|dd kr^|d}|dd}|d krp||jS|d kr~|jS|jjdkrd |krdd|jd D}|j d}d} x |D]} | | |7} |d9}qW|| Sd|kry|jd\} } d} Wn(t k r(|jd\} } d} YnX|jjdkrRd| krRt j t |||| }t| }| jd}|rz|d8}t| }| dd k}t|t|||||| |||jd St|}|jd}||}t|t||||||jdS)NcSsFd}d}x8|t|kr@||dkr@||dkr6|d7}|d7}q W|S)Nrz0.rr=)rg)vlead0r+r7r7r8 leading_zeross  z@RoundTripConstructor.construct_yaml_float..leading_zerosFrrr=rrz+-z.infz.nanrrcSsg|] }t|qSr7)r)rwrr7r7r8rysz=RoundTripConstructor.construct_yaml_float..grrEr)r,precm_signm_lead0expe_widthe_signr#)r,r7r8r9r#r=r)r=r)r=r)rrjrrrrrWrrrr0rrrrgr*r+rr#r)rKr\r5r8rrrrrrvrrrr:r4r,r7r;r<r7r7r8rsx                 z)RoundTripConstructor.construct_yaml_floatc CsV|j|}t|tr|Str |Sy |jdStk r>|Stk rP|SXdS)Nr)rjrhr%rrrPr)rKr\rvr7r7r8rs   z'RoundTripConstructor.construct_yaml_strFcCst|ts tddd|j|jg}|jr`|j|jddt|jdkr`|j|jddd|j rddl m }||j s|j |j xXt |jD]J\}}|j|j||d|jr|j|j|d|j||jj|jjgqW|S) Nz&expected a sequence node, but found %srT)clearr) templated_id)rq)r)rhr r2rtrur)_yaml_add_commentrgyaml_end_comment_extendr#ruamel.yaml.serializerr>yaml_set_anchor enumeratervrpr^Z_yaml_set_idx_line_collinecolumn)rKr\ZseqtyprqZret_valr>r+rxr7r7r8construct_rt_sequences&    z*RoundTripConstructor.construct_rt_sequencec sZfdd}g}d}x>|t|jkrT|j|\}}|jdkr.|rjr^|j|=|d7}qd|jdj|j|jdd g}jd krtjt|nt ||j|=t |t r|j |||fnjt |t rx\|jD]8}t |t std|jd |j|j|j |||fqWntd|jd |j|jq|jd krJd|_|d7}q|d7}qW|S)z This implements the merge key feature http://yaml.org/type/merge.html by inserting keys from the merge dict/list of dicts if not yet available in this node cs(|jkrj|}nj|dd}|S)NF)rq)rEr^)rrv)rKr7r8 constructed(s  z9RoundTripConstructor.flatten_mapping..constructedrztag:yaml.org,2002:merger=zwhile constructing a mappingzfound duplicate key "{}"z To suppress this check see: http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys z Duplicate keys will become an error in future releases, and are errors by default when using the new API. Nz,expected a mapping for merging, but found %sz@expected a mapping or list of mappings for merging, but found %sztag:yaml.org,2002:valueztag:yaml.org,2002:str)rgrvrcrJrurTrrr9r:rhr rpr r2rt) rKr\rGZmerge_map_listrrrrrr7)rKr8r sV            z$RoundTripConstructor.flatten_mappingcCsdS)Nr7)rKr7r7r8 _sentinelwszRoundTripConstructor._sentinelcCst|ts tddd|j|j|j|}|jrf|j|jddt|jdkrf|j |jddd|j rddl m }||j s|j |j d|j}}x(|jD]\}} |j|dd} t| tsTt| trt| } |jdkr| jjn|jdkr| jj| } nFt| trTt| } |jdkr:| jjn|jdkrP| jj| } try t| Wn:tk r} ztd |jd | |jWYdd} ~ XnXnt| tstd |jd |j|j| |d}|j|||| |r|jr\t|jd kr\|jd r\|dkr4|jjd |jd<|j|j|d n"|jjd |jd<|j|j| dd|_|jrt|j|j| d| jr|j| j| d |j| |jj |jj!| jj | jj!g||| <| |}}qW|r|j"|dS)Nz%expected a mapping node, but found %srT)r=r)r>)rqFzwhile constructing a mappingzfound unacceptable key (%s)zfound unhashable keyr)rv)r)#rhr r2rtrurr)r?rgr@r#rAr>rBrHrvr^rrr flow_stylefaset_flow_styleset_block_stylerrrr|r}r~r Z_yaml_set_kv_line_colrDrEZadd_yaml_merge)rKr\ZmaptyprqZ merge_mapr>Zlast_key last_valuerrrZkey_sZkey_mrrvr7r7r8rl{s                   $  z&RoundTripConstructor.construct_mappingc Cst|ts tddd|j|j|jr\|j|jddt|jdkr\|j|jddd|j rddl m }||j s|j |j x|j D]\}}|j|dd}t|tst|trt|}try t|Wn:tk r }ztd|jd ||jWYdd}~XnXnt|ts.td|jd |j|j||d} |j|||||jrd|j|j|d |jr||j|j|d |j|qWdS) Nz%expected a mapping node, but found %srT)r=r)r>)rqzwhile constructing a mappingzfound unacceptable key (%s)zfound unhashable key)r)rv)rhr r2rtrur)r?rgr@r#rAr>rBrvr^rrCr{rr|r}radd) rKr\rMrqr>rrrrrvr7r7r8construct_settingsL        z&RoundTripConstructor.construct_settingccsTt}|j|jj|jj|jr,|j|j|V|j|j|||j ||dS)N) r_yaml_set_line_colrurDrEr)r?rrFset_collection_style)rKr\r`r7r7r8rs z'RoundTripConstructor.construct_yaml_seqccs@t}|j|jj|jj|V|j||dd|j||dS)NT)rq)rrPrurDrErlrQ)rKr\r`r7r7r8r s z'RoundTripConstructor.construct_yaml_mapcCs>t|dkrdS|jdkr&|jjn|jdkr:|jjdS)NrTF)rgrIrJrKrL)rKr`r\r7r7r8rQs     z)RoundTripConstructor.set_collection_styleccsR|j|}|Vt|dr6tj||dd}|j|ntj||}|jj|dS)NrT)rq)rrNr0rlrrr)rKr\rr`rr7r7r8rs    z*RoundTripConstructor.construct_yaml_objectccst}|j|jj|jj|jdkr0|jjn|jdkrD|jj|V|j r|j |j ddt |j dkr|j |j dddt |tstd|jd|j|jx|jD]}t |tstd|jd|j|jt |jdkrtd|jd t |j|j|jd \}}|j|}||ks(t|j|}|j rJ|j |j |d |j rb|j |j |d |j rz|j |j |d |||<qWdS) NTFr)r=z!while constructing an ordered mapz!expected a sequence, but found %sz,expected a mapping of length 1, but found %sr=z2expected a single mapping item, but found %d itemsr)r)rv)rrPrurDrErIrJrKrLr)r?rgr@rhr r2rtrvr r^r)rKr\rrrrrrvr7r7r8r(sR          z(RoundTripConstructor.construct_yaml_omapccs0t}|j|jj|jj|V|j||dS)N)rrPrurDrErO)rKr\r`r7r7r8rXsz'RoundTripConstructor.construct_yaml_setc csydt|trt}|j|jj|jj|jdkr>|jj n|jdkrR|jj |j |j |V|j rv|j|j |j||dSt|trt}|j||_|j|_|j |j |V|j r|j|j dddSt|trdt}|j|jj|jj|jdkr|jj n|jdkr*|jj |j |j |V|j rP|j|j |j|j|dSWn YnXtdddt|j |jdS)NTF)Z always_dumpz0could not determine a constructor for the tag %r)rhr rrPrurDrErIrJrKrLZ yaml_set_tagrcr#rBrlr rrjrvr(r rrrkr2r )rKr\r`Zdata2Zdata3r7r7r8r_sV                   z(RoundTripConstructor.construct_undefinedNcCsdy|jj|j}Wntk r*d}YnX|dkrLtdddj|j|j|j}|dsjtj |||Sx$dD]}||rpPqpWtj |||St |d}t |d}t |d }t |d}t |d } t |d } d } |d rL|d dd} xt | dkr| d7} qWt | } t |d dkrLt |d ddkrL| d7} d} |drt |d}|d}|r|t |nd }t j ||d} |ddkr| } | r t j ||||| }|| 8}t|j|j|j|j|j| | }| |jd<|d|d}|dr|d|d7}||jd<n,t||||| | | }|drL|d|jd<|dr`d|jd<|S)Nz'failed to construct timestamp from "{}"rtrrrrrrrrrrrrrr=)rrrrrtzT)rRrrr)rrrvr}r2rTrurr0rrrgrrr-rrrrrZ_yaml)rKr\rrrrrrrrrrrrrrrdtr`rSr7r7r8rsl          (        z-RoundTripConstructor.construct_yaml_timestampcCs$tj||}|jr t||jdS|S)N)r#)r0rr#r,)rKr\br7r7r8rs z(RoundTripConstructor.construct_yaml_bool)F)F)F)N)r4r5r6__doc__rjrrrrFrrHrlrOrrrQrrrrrrr7r7r7r8r3(s&#[M W V 1   0/ =)b __future__rrrrrrrrQrmrZruamel.yaml.errorrrrZruamel.yaml.nodesr r r Zruamel.yaml.compatr r rrrrrrrrrrrZruamel.yaml.commentsrrrrrrrZruamel.yaml.scalarstringr r!r"r#r$r%Zruamel.yaml.scalarintr&r'r(r)r*Zruamel.yaml.scalarfloatr+Zruamel.yaml.scalarboolr,Zruamel.yaml.timestampr-Zruamel.yaml.utilr.__all__r2r9r:rr/r0rrrrrrrrrrrrrrrr1rrrrrrrrrrr r!r3r7r7r7r8s<$     "     f           0