B b�`�o�@s^ddddddgZddlTddlTdd lZdd lZdd lZdd lZdd lZdd l Z dd l Z Gd d�de �Z Gd d�d�Z Gd d�de �Ze�d ej�e�dej�e�dej�e�dej�e�dej�e�dej�e�dej�e�dej�e�dej�e�dej�e�dej�e�dej�e�d ej�Gdd�de�Ze�dej�e�dej�e�dej�e�dej�e�dej �e�dej�e�d ej!�e�d!ej�e�d"ej"�e�d#ej�e�d$ej#�e�d%ej�e�$d&ej%�Gd'd�de�Z&e&�$d(e&j'�e&�$d)e&j(�e&�$d*e&j)�e&�$d+e&j*�Gd,d�de&�Z+d S)-�BaseConstructor�SafeConstructor�FullConstructor�UnsafeConstructor� Constructor�ConstructorError�)�*�Nc@s eZdZdS)rN)�__name__� __module__� __qualname__�r r �C/opt/alt/python37/lib64/python3.7/site-packages/yaml/constructor.pyrsc@s�eZdZiZiZdd�Zdd�Zdd�Zdd�Zd d �Z d d �Z ddd�Z dd�Z ddd�Z ddd�Zd dd�Zedd��Zedd��ZdS)!rcCsi|_i|_g|_d|_dS)NF)�constructed_objects�recursive_objects�state_generators�deep_construct)�selfr r r�__init__szBaseConstructor.__init__cCs|��S)N)� check_node)rr r r� check_dataszBaseConstructor.check_datacCs&|���|�r"tddd|fd��dS)z�Block 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_regexp�matchr)r�keyr r r�check_state_key"szBaseConstructor.check_state_keycCs|��r|�|���SdS)N)r�construct_documentZget_node)rr r r�get_data*szBaseConstructor.get_datacCs|��}|dk r|�|�SdS)N)Zget_single_noder)r�noder r r�get_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)rr�datar� generator�dummyr r rr6s    z"BaseConstructor.construct_documentFc Cs�||jkr|j|S|r$|j}d|_||jkr>tddd|j��d|j|<d}d}|j|jkrj|j|j}n�x�|jD]6}|dk rr|j�|�rr|jt |�d�}|j|}PqrWd|jkr�|j}|jd}nTd|jkr�|jd}n>t |t �r�|j j }n*t |t��r|j j}nt |t��r|j j}|dk�r2|||�}n ||||�}t |tj��r~|}t|�}|j�rrx|D]} �qfWn |j�|�||j|<|j|=|�r�||_|S)NTz$found unconstructable recursive node)rrrr� start_mark�tag�yaml_constructors�yaml_multi_constructors� startswith�len� isinstance� ScalarNode� __class__�construct_scalar� SequenceNode�construct_sequence� MappingNode�construct_mapping�types� GeneratorType�nextr�append) rr�deepZold_deep� constructorZ tag_suffix� tag_prefixr r!r"r r rrCsX                       z BaseConstructor.construct_objectcCs&t|t�s tddd|j|j��|jS)Nz$expected a scalar node, but found %s)r)r*r�idr#�value)rrr r rr,us  z BaseConstructor.construct_scalarcs6t|t�s tddd|j|j����fdd�|jD�S)Nz&expected a sequence node, but found %scsg|]}�j|�d��qS))r5)r)�.0�child)r5rr r� �sz6BaseConstructor.construct_sequence..)r)r-rr8r#r9)rrr5r )r5rrr.|s   z"BaseConstructor.construct_sequencecCs�t|t�s tddd|j|j��i}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� collections�abc�Hashable)rrr5�mapping�key_node� value_noderr9r r rr0�s   z!BaseConstructor.construct_mappingcCsft|t�s tddd|j|j��g}x<|jD]2\}}|j||d�}|j||d�}|�||f�q,W|S)Nz%expected a mapping node, but found %s)r5)r)r/rr8r#r9rr4)rrr5�pairsrArBrr9r r r�construct_pairs�s zBaseConstructor.construct_pairscCs$d|jkr|j��|_||j|<dS)Nr%)�__dict__r%�copy)�clsr$r6r r r�add_constructor�s  zBaseConstructor.add_constructorcCs$d|jkr|j��|_||j|<dS)Nr&)rEr&rF)rGr7Zmulti_constructorr r r�add_multi_constructor�s  z%BaseConstructor.add_multi_constructorN)F)F)F)F)r r r r%r&rrrrrrrr,r.r0rD� classmethodrHrIr r r rrs 2   cs�eZdZ�fdd�Zdd�Zd(�fdd� Zdd �Zd dd dd dd �Zd d �Zdd�Z dZ xe e e krpe e 9Z qZWe e Z dd�Z dd�Z e�dej�Zdd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Z�ZS))rcs>t|t�r2x&|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|j�k�r|j|\}}|jdkr�|j|=t|t�r^|�|�|�|j�n�t|t�r�g}xF|jD]<}t|t�s�td|j d|j |j ��|�|�|� |j�qtW|� �x0|D]}|�|�q�Wntd|j d|j |j ��q |jdk�r 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_mapping�extendr-rr#r8r4�reverse) rr�merge�indexrArBZsubmerge�subnoder9r r rrL�s>           zSafeConstructor.flatten_mappingFcs$t|t�r|�|�t�j||d�S)N)r5)r)r/rLrKr0)rrr5)r+r rr0�s  z!SafeConstructor.construct_mappingcCs|�|�dS)N)r,)rrr r r�construct_yaml_null�s z#SafeConstructor.construct_yaml_nullT)�yes�no�true�false�on�offcCs|�|�}|j|��S)N)r,� bool_values�lower)rrr9r r r�construct_yaml_bool�s z#SafeConstructor.construct_yaml_boolcCs|�|�}|�dd�}d}|ddkr*d}|ddkrB|dd�}|dkrNdS|�d �rn|t|d d�d �S|�d �r�|t|d d�d �S|ddkr�|t|d �Sd|k�rdd�|�d�D�}|��d}d}x |D]}|||7}|d9}q�W||S|t|�SdS)N�_�rr �-�����z+-�0Z0b��0x���:cSsg|] }t|��qSr )�int)r:�partr r rr<�sz6SafeConstructor.construct_yaml_int..�<)r,�replacer'rf�splitrN)rrr9�sign�digits�base�digitr r r�construct_yaml_int�s2            z"SafeConstructor.construct_yaml_intg�u�<�7~cCs�|�|�}|�dd���}d}|ddkr.d}|ddkrF|dd�}|dkrX||jS|d krf|jSd |kr�d d �|�d �D�}|��d}d }x |D]}|||7}|d9}q�W||S|t|�SdS)Nr\r]rr r^r_z+-z.infz.nanrecSsg|] }t|��qSr )�float)r:rgr r rr<sz8SafeConstructor.construct_yaml_float..grh)r,rirZ� inf_value� nan_valuerjrNrp)rrr9rkrlrmrnr r r�construct_yaml_floats*        z$SafeConstructor.construct_yaml_floatc Cs�y|�|��d�}Wn6tk rJ}ztddd||j��Wdd}~XYnXy"ttd�rbt�|�St�|�SWn8t j k r�}ztddd||j��Wdd}~XYnXdS)N�asciiz,failed to convert base64 data into ascii: %s� decodebytesz failed to decode base64 data: %s) r,�encode�UnicodeEncodeErrorrr#�hasattr�base64ru� decodestring�binascii�Error)rrr9�excr r r�construct_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} q�Wt| �} |d �rt|d �} t|d p�d�}tj | |d�}|d dk�r| }t� |�} n|d�r&tj j } tj||||| | | | d�S)N�year�month�day�hour�minute�secondr �fraction�r`Ztz_sign�tz_hour� tz_minute)�hours�minutesr^�tz)�tzinfo) r,�timestamp_regexprr9� groupdictrf�datetime�dater(� timedelta�timezone�utc)rrr9r�valuesrr�r�r�r�r�r�r�r�r��deltar r r�construct_yaml_timestampBs:            z(SafeConstructor.construct_yaml_timestampccs�g}|Vt|t�s,td|jd|j|j��x�|jD]�}t|t�sZtd|jd|j|j��t|j�dkr�td|jdt|j�|j��|jd\}}|�|�}|�|�}|� ||f�q4WdS)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 r�construct_yaml_omapas$      z#SafeConstructor.construct_yaml_omapccs�g}|Vt|t�s,td|jd|j|j��x�|jD]�}t|t�sZtd|jd|j|j��t|j�dkr�td|jdt|j�|j��|jd\}}|�|�}|�|�}|� ||f�q4WdS)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 r�construct_yaml_pairsws$      z$SafeConstructor.construct_yaml_pairsccs$t�}|V|�|�}|�|�dS)N)�setr0�update)rrr r9r r r�construct_yaml_set�s z"SafeConstructor.construct_yaml_setcCs |�|�S)N)r,)rrr r r�construct_yaml_str�sz"SafeConstructor.construct_yaml_strccsg}|V|�|�|��dS)N)rMr.)rrr r r r�construct_yaml_seq�sz"SafeConstructor.construct_yaml_seqccs"i}|V|�|�}|�|�dS)N)r0r�)rrr r9r r r�construct_yaml_map�s z"SafeConstructor.construct_yaml_mapccsN|�|�}|Vt|d�r4|j|dd�}|�|�n|�|�}|j�|�dS)N� __setstate__T)r5)�__new__rxr0r�rEr�)rrrGr �stater r r�construct_yaml_object�s    z%SafeConstructor.construct_yaml_objectcCstddd|j|j��dS)Nz0could not determine a constructor for the tag %r)rr$r#)rrr r r�construct_undefined�sz#SafeConstructor.construct_undefined)F)r r r r,rLr0rRrYr[rorqrrrsr~�re�compile�Xr�r�r�r�r�r�r�r�r�r�� __classcell__r r )r+rr�s: #    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�eZdZdd�Zdd�Zdd�Zdd�Zd d �Zd d �Zd d�Z dd�Z d%dd�Z d&dd�Z dd�Z dd�Zd'dd�Zd(dd�Zdd �Zd)d!d"�Zd#d$�ZdS)*rcCsddgS)Nz^extend$z^__.*__$r )rr r r�get_state_keys_blacklist�sz(FullConstructor.get_state_keys_blacklistcCs.t|d�s(t�dd�|���d�|_|jS)N�state_keys_blacklist_regexp�(�|�))rxr�r��joinr�r�)rr r rr�s z/FullConstructor.get_state_keys_blacklist_regexpcCs |�|�S)N)r,)rrr r r�construct_python_str�sz$FullConstructor.construct_python_strcCs |�|�S)N)r,)rrr r r�construct_python_unicode�sz(FullConstructor.construct_python_unicodec Cs�y|�|��d�}Wn6tk rJ}ztddd||j��Wdd}~XYnXy"ttd�rbt�|�St�|�SWn8t j k r�}ztddd||j��Wdd}~XYnXdS)Nrtz,failed to convert base64 data into ascii: %sruz failed to decode base64 data: %s) r,rvrwrr#rxryrurzr{r|)rrr9r}r r r�construct_python_bytes�s  z&FullConstructor.construct_python_bytescCs |�|�S)N)ro)rrr r r�construct_python_longsz%FullConstructor.construct_python_longcCst|�|��S)N)�complexr,)rrr r r�construct_python_complexsz(FullConstructor.construct_python_complexcCst|�|��S)N)�tupler.)rrr r r�construct_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__� ImportError�sys�modules)r�name�mark�unsafer}r r r�find_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|tjkr�td|d||��tj|}t||�s�td|d||jf|��t||�S) Nz"while constructing a Python objectz+expected non-empty name appended to the tag�.r�builtinszcannot find module %r (%s)zmodule %r is not importedzcannot find %r in the module %r) r�rsplitr�r�r�r�rxr �getattr)rr�r�r�� module_nameZ object_namer}�moduler r r�find_python_names, "    z FullConstructor.find_python_namecCs2|�|�}|r$td|jd||j��|�||j�S)Nz while constructing a Python namez&expected the empty value, but found %r)r,rr#r�)r�suffixrr9r r r�construct_python_name5s  z%FullConstructor.construct_python_namecCs2|�|�}|r$td|jd||j��|�||j�S)Nz"while constructing a Python modulez&expected the empty value, but found %r)r,rr#r�)rr�rr9r r r�construct_python_module<s  z'FullConstructor.construct_python_moduleNcCst|sg}|si}|�||j�}|sFt|t�sFtd|jdt|�|j��|rft|t�rf|j|f|�|�S|||�SdS)Nz$while constructing a Python instancezexpected a class, but found %r)r�r#r)�typerr�)rr�r�args�kwds�newobjr�rGr r r�make_python_instanceCs z$FullConstructor.make_python_instancecCs�t|d�r|�|�n�i}t|t�r8t|�dkr8|\}}t|d�rt|sf|rfx|��D]}|�|�qTW|j�|�n|r�|�|�x.|� �D]"\}}|s�|�|�t |||�q�WdS)Nr�rarE) rxr�r)r�r(�keysrrEr��items�setattr)r�instancer�r�� slotstaterr9r r r�set_python_instance_stateSs      z)FullConstructor.set_python_instance_stateccs>|j||dd�}|Vt|d�}|j||d�}|�||�dS)NT)r�r�)r5)r�rxr0r�)rr�rr�r5r�r r r�construct_python_objectfs  z'FullConstructor.construct_python_objectc Cs�t|t�r*|j|dd�}i}i}g}i}nJ|j|dd�} | �dg�}| �di�}| �di�}| �dg�}| �di�}|�|||||�} |r�|�| |�|r�| �|�|r�x|D]} || | | <q�W| S)NT)r5r�r�r�� listitems� dictitems)r)r-r.r0�getr�r�rM) rr�rr�r�r�r�r�r�r9r�rr r r�construct_python_object_applyos*         z-FullConstructor.construct_python_object_applycCs|j||dd�S)NT)r�)r�)rr�rr r r�construct_python_object_new�sz+FullConstructor.construct_python_object_new)F)F)NNFF)F)F)r r r r�rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r r r rr�s"     #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:csBeZdZ�fdd�Z�fdd�Zd �fdd� Z�fd d �Z�ZS) rcstt|�j||dd�S)NT)r�)rKrr�)rr�r�)r+r rr��sz$UnsafeConstructor.find_python_modulecstt|�j||dd�S)NT)r�)rKrr�)rr�r�)r+r rr��sz"UnsafeConstructor.find_python_nameNFcstt|�j|||||dd�S)NT)r�)rKrr�)rr�rr�r�r�)r+r rr��s z&UnsafeConstructor.make_python_instancecstt|�j||dd�S)NT)r�)rKrr�)rr�r�)r+r rr��s z+UnsafeConstructor.set_python_instance_state)NNF)r r r r�r�r�r�r�r r )r+rr�s  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 rr�s),�__all__�error�nodes�collections.abcr=r�ryr{r�r�r1ZMarkedYAMLErrorrrrrHrRr[rorsr~r�r�r�r�r�r�r�r�rr�r�r�r�r�r�rIr�rr�r�r�r�rr r r r�s�84