B `co@s^ddddddgZddlTddlTdd lZdd lZdd lZdd lZdd lZdd l Z dd l Z Gd dde Z Gd ddZ Gd dde Zed ejedejedejedejedejedejedejedejedejedejedejedejed ejGdddeZedejedejedejedejedej edejed ej!ed!ejed"ej"ed#ejed$ej#ed%eje$d&ej%Gd'ddeZ&e&$d(e&j'e&$d)e&j(e&$d*e&j)e&$d+e&j*Gd,dde&Z+d S)-BaseConstructorSafeConstructorFullConstructorUnsafeConstructor ConstructorConstructorError)*Nc@s eZdZdS)rN)__name__ __module__ __qualname__r r 7/tmp/pip-target-ywh1gcq3/lib/python/yaml/constructor.pyrsc@seZdZiZiZddZddZddZddZd d Z d d Z dddZ ddZ dddZ dddZd ddZeddZeddZdS)!rcCsi|_i|_g|_d|_dS)NF)constructed_objectsrecursive_objectsstate_generatorsdeep_construct)selfr r r__init__szBaseConstructor.__init__cCs|S)N) check_node)rr r r check_dataszBaseConstructor.check_datacCs&||r"tddd|fddS)zBlock special attributes/methods from being set in a newly created object, to prevent user-controlled methods from being called during deserializationNz,blacklisted key '%s' in instance state found)get_state_keys_blacklist_regexpmatchr)rkeyr r rcheck_state_key"szBaseConstructor.check_state_keycCs|r||SdS)N)rconstruct_documentZget_node)rr r rget_data*szBaseConstructor.get_datacCs|}|dk r||SdS)N)Zget_single_noder)rnoder r rget_single_data/s zBaseConstructor.get_single_datacCsT||}x2|jr<|j}g|_x|D]}x |D]}q.Wq$Wq Wi|_i|_d|_|S)NF)construct_objectrrrr)rrdatar generatordummyr r rr6s    z"BaseConstructor.construct_documentFc Cs||jkr|j|S|r$|j}d|_||jkr>tddd|jd|j|<d}d}|j|jkrj|j|j}nx|jD]6}|dk rr|j|rr|jt |d}|j|}PqrWd|jkr|j}|jd}nTd|jkr|jd}n>t |t r|j j }n*t |tr|j j}nt |tr|j j}|dkr2|||}n ||||}t |tjr~|}t|}|jrrx|D]} qfWn |j|||j|<|j|=|r||_|S)NTz$found unconstructable recursive node)rrrr start_marktagyaml_constructorsyaml_multi_constructors startswithlen isinstance ScalarNode __class__construct_scalar SequenceNodeconstruct_sequence MappingNodeconstruct_mappingtypes GeneratorTypenextrappend) rrdeepZold_deep constructorZ tag_suffix tag_prefixr r!r"r r rrCsX                       z BaseConstructor.construct_objectcCs&t|ts tddd|j|j|jS)Nz$expected a scalar node, but found %s)r)r*ridr#value)rrr r rr,us  z BaseConstructor.construct_scalarcs6t|ts tddd|j|jfdd|jDS)Nz&expected a sequence node, but found %scsg|]}j|dqS))r5)r).0child)r5rr r sz6BaseConstructor.construct_sequence..)r)r-rr8r#r9)rrr5r )r5rrr.|s   z"BaseConstructor.construct_sequencecCst|ts tddd|j|ji}xV|jD]L\}}|j||d}t|tjj sbtd|jd|j|j||d}|||<q,W|S)Nz%expected a mapping node, but found %s)r5zwhile constructing a mappingzfound unhashable key) r)r/rr8r#r9r collectionsabcHashable)rrr5mappingkey_node value_noderr9r r rr0s   z!BaseConstructor.construct_mappingcCsft|ts tddd|j|jg}x<|jD]2\}}|j||d}|j||d}|||fq,W|S)Nz%expected a mapping node, but found %s)r5)r)r/rr8r#r9rr4)rrr5pairsrArBrr9r r rconstruct_pairss zBaseConstructor.construct_pairscCs$d|jkr|j|_||j|<dS)Nr%)__dict__r%copy)clsr$r6r r radd_constructors  zBaseConstructor.add_constructorcCs$d|jkr|j|_||j|<dS)Nr&)rEr&rF)rGr7Zmulti_constructorr r radd_multi_constructors  z%BaseConstructor.add_multi_constructorN)F)F)F)F)r r r r%r&rrrrrrrr,r.r0rD classmethodrHrIr r r rrs 2   cseZdZfddZddZd(fdd Zdd Zd dd dd dd Zd d ZddZ dZ xe e e krpe e 9Z qZWe e Z ddZ ddZ edejZddZddZddZddZddZd d!Zd"d#Zd$d%Zd&d'ZZS))rcs>t|tr2x&|jD]\}}|jdkr||SqWt|S)Nztag:yaml.org,2002:value)r)r/r9r$r,super)rrrArB)r+r rr,s   z SafeConstructor.construct_scalarc Cs.g}d}x |t|jkr|j|\}}|jdkr|j|=t|tr^||||jnt|trg}xF|jD]<}t|tstd|j d|j |j ||| |jqtW| x0|D]}||qWntd|j d|j |j q |jdkr d|_|d7}q |d7}q W|r*||j|_dS) Nr ztag:yaml.org,2002:mergezwhile constructing a mappingz,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:strr) r(r9r$r)r/flatten_mappingextendr-rr#r8r4reverse) rrmergeindexrArBZsubmergesubnoder9r r rrLs>           zSafeConstructor.flatten_mappingFcs$t|tr||tj||dS)N)r5)r)r/rLrKr0)rrr5)r+r rr0s  z!SafeConstructor.construct_mappingcCs||dS)N)r,)rrr r rconstruct_yaml_nulls z#SafeConstructor.construct_yaml_nullT)yesnotruefalseonoffcCs||}|j|S)N)r, bool_valueslower)rrr9r r rconstruct_yaml_bools z#SafeConstructor.construct_yaml_boolcCs||}|dd}d}|ddkr*d}|ddkrB|dd}|dkrNdS|d rn|t|d dd S|d r|t|d dd S|ddkr|t|d Sd|krdd|dD}|d}d}x |D]}|||7}|d9}qW||S|t|SdS)N_rr -z+-00b0x:cSsg|] }t|qSr )int)r:partr r rr<sz6SafeConstructor.construct_yaml_int..<)r,replacer'rgsplitrN)rrr9signdigitsbasedigitr r rconstruct_yaml_ints2            z"SafeConstructor.construct_yaml_intgu<7~cCs||}|dd}d}|ddkr.d}|ddkrF|dd}|dkrX||jS|d krf|jSd |krd d |d D}|d}d }x |D]}|||7}|d9}qW||S|t|SdS)Nr\r]rr r^r_z+-z.infz.nanrfcSsg|] }t|qSr )float)r:rhr r rr<sz8SafeConstructor.construct_yaml_float..gri)r,rjrZ inf_value nan_valuerkrNrq)rrr9rlrmrnror r rconstruct_yaml_floats*        z$SafeConstructor.construct_yaml_floatc Csy||d}Wn6tk rJ}ztddd||jWdd}~XYnXy"ttdrbt|St|SWn8t j k r}ztddd||jWdd}~XYnXdS)Nasciiz,failed to convert base64 data into ascii: %s decodebytesz failed to decode base64 data: %s) r,encodeUnicodeEncodeErrorrr#hasattrbase64rv decodestringbinasciiError)rrr9excr r rconstruct_yaml_binary&s  z%SafeConstructor.construct_yaml_binarya^(?P[0-9][0-9][0-9][0-9]) -(?P[0-9][0-9]?) -(?P[0-9][0-9]?) (?:(?:[Tt]|[ \t]+) (?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]))?))?)?$c Cs@||}|j|j}|}t|d}t|d}t|d}|dsZt|||St|d}t|d} t|d} d} d} |dr|ddd } xt| d kr| d 7} qWt| } |d rt|d } t|d pd}tj | |d}|d dkr| }t |} n|dr&tj j } tj||||| | | | dS)Nyearmonthdayhourminutesecondr fractionr`Ztz_signtz_hour tz_minute)hoursminutesr^tz)tzinfo) r,timestamp_regexprr9 groupdictrgdatetimedater( timedeltatimezoneutc)rrr9rvaluesrrrrrrrrrrdeltar r rconstruct_yaml_timestampBs:            z(SafeConstructor.construct_yaml_timestampccsg}|Vt|ts,td|jd|j|jx|jD]}t|tsZtd|jd|j|jt|jdkrtd|jdt|j|j|jd\}}||}||}| ||fq4WdS)Nz!while constructing an ordered mapz!expected a sequence, but found %sz,expected a mapping of length 1, but found %srz2expected a single mapping item, but found %d itemsr ) r)r-rr#r8r9r/r(rr4)rrZomaprQrArBrr9r r rconstruct_yaml_omapas$      z#SafeConstructor.construct_yaml_omapccsg}|Vt|ts,td|jd|j|jx|jD]}t|tsZtd|jd|j|jt|jdkrtd|jdt|j|j|jd\}}||}||}| ||fq4WdS)Nzwhile constructing pairsz!expected a sequence, but found %sz,expected a mapping of length 1, but found %srz2expected a single mapping item, but found %d itemsr ) r)r-rr#r8r9r/r(rr4)rrrCrQrArBrr9r r rconstruct_yaml_pairsws$      z$SafeConstructor.construct_yaml_pairsccs$t}|V||}||dS)N)setr0update)rrr r9r r rconstruct_yaml_sets z"SafeConstructor.construct_yaml_setcCs ||S)N)r,)rrr r rconstruct_yaml_strsz"SafeConstructor.construct_yaml_strccsg}|V|||dS)N)rMr.)rrr r r rconstruct_yaml_seqsz"SafeConstructor.construct_yaml_seqccs"i}|V||}||dS)N)r0r)rrr r9r r rconstruct_yaml_maps z"SafeConstructor.construct_yaml_mapccsN||}|Vt|dr4|j|dd}||n||}|j|dS)N __setstate__T)r5)__new__ryr0rrEr)rrrGr stater r rconstruct_yaml_objects    z%SafeConstructor.construct_yaml_objectcCstddd|j|jdS)Nz0could not determine a constructor for the tag %r)rr$r#)rrr r rconstruct_undefinedsz#SafeConstructor.construct_undefined)F)r r r r,rLr0rRrYr[rprrrsrtrrecompileXrrrrrrrrrr __classcell__r r )r+rrs: #    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@seZdZddZddZddZddZd d Zd d Zd dZ ddZ d%ddZ d&ddZ ddZ ddZd'ddZd(ddZdd Zd)d!d"Zd#d$ZdS)*rcCsddgS)Nz^extend$z^__.*__$r )rr r rget_state_keys_blacklistsz(FullConstructor.get_state_keys_blacklistcCs.t|ds(tdd|d|_|jS)Nstate_keys_blacklist_regexp(|))ryrrjoinrr)rr r rrs z/FullConstructor.get_state_keys_blacklist_regexpcCs ||S)N)r,)rrr r rconstruct_python_strsz$FullConstructor.construct_python_strcCs ||S)N)r,)rrr r rconstruct_python_unicodesz(FullConstructor.construct_python_unicodec Csy||d}Wn6tk rJ}ztddd||jWdd}~XYnXy"ttdrbt|St|SWn8t j k r}ztddd||jWdd}~XYnXdS)Nruz,failed to convert base64 data into ascii: %srvz failed to decode base64 data: %s) r,rwrxrr#ryrzrvr{r|r})rrr9r~r r rconstruct_python_bytess  z&FullConstructor.construct_python_bytescCs ||S)N)rp)rrr r rconstruct_python_longsz%FullConstructor.construct_python_longcCst||S)N)complexr,)rrr r rconstruct_python_complexsz(FullConstructor.construct_python_complexcCst||S)N)tupler.)rrr r rconstruct_python_tuple sz&FullConstructor.construct_python_tupleFc Cs|std|d||r\y t|Wn8tk rZ}ztd|d||f|Wdd}~XYnX|tjkrxtd|d||tj|S)Nz"while constructing a Python modulez+expected non-empty name appended to the tagzcannot find module %r (%s)zmodule %r is not imported)r __import__ ImportErrorsysmodules)rnamemarkunsafer~r r rfind_python_module s "  z"FullConstructor.find_python_modulec Cs|std|d|d|kr,|dd\}}nd}|}|r~y t|Wn8tk r|}ztd|d||f|Wdd}~XYnX|tjkrtd|d||tj|}t||std|d||jf|t||S) Nz"while constructing a Python objectz+expected non-empty name appended to the tag.rbuiltinszcannot find module %r (%s)zmodule %r is not importedzcannot find %r in the module %r) rrsplitrrrrryr getattr)rrrr module_nameZ object_namer~moduler r rfind_python_names, "    z FullConstructor.find_python_namecCs2||}|r$td|jd||j|||jS)Nz while constructing a Python namez&expected the empty value, but found %r)r,rr#r)rsuffixrr9r r rconstruct_python_name5s  z%FullConstructor.construct_python_namecCs2||}|r$td|jd||j|||jS)Nz"while constructing a Python modulez&expected the empty value, but found %r)r,rr#r)rrrr9r r rconstruct_python_module<s  z'FullConstructor.construct_python_moduleNcCst|sg}|si}|||j}|sFt|tsFtd|jdt||j|rft|trf|j|f||S|||SdS)Nz$while constructing a Python instancezexpected a class, but found %r)rr#r)typerr)rrrargskwdsnewobjrrGr r rmake_python_instanceCs z$FullConstructor.make_python_instancecCst|dr||ni}t|tr8t|dkr8|\}}t|drt|sf|rfx|D]}||qTW|j|n|r||x.| D]"\}}|s||t |||qWdS)NrrbrE) ryrr)rr(keysrrEritemssetattr)rinstancerr slotstaterr9r r rset_python_instance_stateSs      z)FullConstructor.set_python_instance_stateccs>|j||dd}|Vt|d}|j||d}|||dS)NT)rr)r5)rryr0r)rrrrr5rr r rconstruct_python_objectfs  z'FullConstructor.construct_python_objectc Cst|tr*|j|dd}i}i}g}i}nJ|j|dd} | dg}| di}| di}| dg}| di}||||||} |r|| ||r| ||rx|D]} || | | <qW| S)NT)r5rrr listitems dictitems)r)r-r.r0getrrrM) rrrrrrrrrr9rrr r rconstruct_python_object_applyos*         z-FullConstructor.construct_python_object_applycCs|j||ddS)NT)r)r)rrrr r rconstruct_python_object_newsz+FullConstructor.construct_python_object_new)F)F)NNFF)F)F)r r r rrrrrrrrrrrrrrrrrr r r rrs"     #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:csBeZdZfddZfddZd fdd Zfd d ZZS) rcstt|j||ddS)NT)r)rKrr)rrr)r+r rrsz$UnsafeConstructor.find_python_modulecstt|j||ddS)NT)r)rKrr)rrr)r+r rrsz"UnsafeConstructor.find_python_nameNFcstt|j|||||ddS)NT)r)rKrr)rrrrrr)r+r rrs z&UnsafeConstructor.make_python_instancecstt|j||ddS)NT)r)rKrr)rrr)r+r rrs z+UnsafeConstructor.set_python_instance_state)NNF)r r r rrrrrr r )r+rrs  z tag:yaml.org,2002:python/module:z tag:yaml.org,2002:python/object:z$tag:yaml.org,2002:python/object/new:z&tag:yaml.org,2002:python/object/apply:c@s eZdZdS)rN)r r r r r r rrs),__all__errorZnodescollections.abcr=rrzr|rrr1ZMarkedYAMLErrorrrrrHrRr[rprtrrrrrrrrrrrrrrrrrIrrrrrrrr r r rs84