a
    ܌xd	                     @   s   d dl mZ d dlmZmZmZmZ d dlmZ g dZ	G dd de
ZG dd deZeZG d	d
 d
eZG dd deZG dd deZG dd deZeedddZdeeddddZdS )    )Anchor)TextAnyDictList)SupportsIndex)ScalarStringLiteralScalarStringFoldedScalarStringSingleQuotedScalarStringDoubleQuotedScalarStringPlainScalarStringPreservedScalarStringc                   @   sr   e Zd ZejZeeedddZdeeeedddZ	e
edd	d
ZdeedddZdeeddddZdS )r   )argskwreturnc                 O   s>   | dd }tj| g|R i |}|d ur:|j|dd |S )NanchorT)always_dump)popstr__new__yaml_set_anchor)clsr   r   r   Zret_val r   P/var/www/html/Ranjet/env/lib/python3.9/site-packages/ruamel/yaml/scalarstring.pyr      s
    zScalarString.__new__)oldnew
maxreplacer   c                 C   s   t | t| |||S N)typer   replace)selfr   r   r   r   r   r   r!      s    zScalarString.replace)r   c                 C   s(   t | tjst| tjt  t| tjS r   )hasattrr   attribsetattrgetattr)r"   r   r   r   r   "   s    zScalarString.anchorF)anyr   c                 C   s&   t | tjsd S |s| jjr"| jS d S r   )r#   r   r$   r   r   )r"   r'   r   r   r   yaml_anchor(   s
    zScalarString.yaml_anchorN)valuer   r   c                 C   s   || j _|| j _d S r   )r   r)   r   )r"   r)   r   r   r   r   r   /   s    zScalarString.yaml_set_anchor)r   )F)F)__name__
__module____qualname__r   r$   	__slots__r   r   r   r!   propertyr   boolr(   r   r   r   r   r   r      s   r   c                   @   s(   e Zd ZdZdZdeeedddZdS )r	   comment|Nr)   r   r   c                 C   s   t j| ||dS N)r   r   r   r   r)   r   r   r   r   r   9   s    zLiteralScalarString.__new__)Nr*   r+   r,   r-   styler   r   r   r   r   r   r   r	   4   s   r	   c                   @   s(   e Zd ZdZdZdeeedddZdS )r
   )Zfold_posr0   >Nr2   c                 C   s   t j| ||dS r3   r4   r5   r   r   r   r   E   s    zFoldedScalarString.__new__)Nr6   r   r   r   r   r
   @   s   r
   c                   @   s(   e Zd ZdZdZdeeedddZdS )r   r   'Nr2   c                 C   s   t j| ||dS r3   r4   r5   r   r   r   r   N   s    z SingleQuotedScalarString.__new__)Nr6   r   r   r   r   r   I   s   r   c                   @   s(   e Zd ZdZdZdeeedddZdS )r   r   "Nr2   c                 C   s   t j| ||dS r3   r4   r5   r   r   r   r   W   s    z DoubleQuotedScalarString.__new__)Nr6   r   r   r   r   r   R   s   r   c                   @   s(   e Zd ZdZdZdeeedddZdS )r   r    Nr2   c                 C   s   t j| ||dS r3   r4   r5   r   r   r   r   `   s    zPlainScalarString.__new__)Nr6   r   r   r   r   r   [   s   r   )sr   c                 C   s   t | ddddS )Nz

)r	   r!   )r<   r   r   r   preserve_literald   s    r?   N)basemapr   c           	      C   s   ddl m}m} |du r dti}t| |r|| D ]J}| | }t|trl|D ] }||v rH|| || |<  qxqHq.t||d q.nZt| |rt| D ]F\}}t|tr|D ] }||v r|| || |<  qqqt||d qdS )a  
    the routine here walks over a simple yaml tree (recursing in
    dict values and list items) and converts strings that
    have multiple lines to literal scalars

    You can also provide an explicit (ordered) mapping for multiple transforms
    (first of which is executed):
        map = ruamel.yaml.compat.ordereddict
        map['
'] = preserve_literal
        map[':'] = SingleQuotedScalarString
        walk_tree(data, map=map)
    r   )MutableMappingMutableSequenceNr=   )rA   )collections.abcrB   rC   r?   
isinstancer   	walk_tree	enumerate)	r@   rA   rB   rC   kvchidxelemr   r   r   rF   h   s(    



rF   )N)Zruamel.yaml.anchorr   typingr   r   r   r   Zruamel.yaml.compatr   __all__r   r   r	   r   r
   r   r   r   r?   rF   r   r   r   r   <module>   s   					