o
    wi7                     @  s   d dl 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dddZd d!ddZdS )"    )annotations)AnchorF)TextAnyDictList)SupportsIndex)ScalarStringLiteralScalarStringFoldedScalarStringSingleQuotedScalarStringDoubleQuotedScalarStringPlainScalarStringPreservedScalarStringc                   @  sN   e Zd ZejZdddZddddZedddZ	dd ddZ
dd!ddZdS )"r	   argsr   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   ret_val r   U/home/ubuntu/sommelier/.venv/lib/python3.10/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#   !      zScalarString.replacec                 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anyboolc                 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_anchorvaluer   Nonec                 C  s   || j _|| j _d S r!   )r   r-   r   )r$   r-   r   r   r   r   r   1   s   zScalarString.yaml_set_anchorN)r   r   r   r   r   r   )r   )r   r   r   r   r    r   r   r   )r   r   )F)r*   r+   r   r   )r-   r   r   r+   r   r.   )__name__
__module____qualname__r   r'   	__slots__r   r#   propertyr   r,   r   r   r   r   r   r	      s    
r	   c                   @      e Zd ZdZdZddd	d
ZdS )r
   comment|Nr-   r   r   r   r   c                 C     t j| ||dS N)r   r	   r   r   r-   r   r   r   r   r   ;      zLiteralScalarString.__new__r!   r-   r   r   r   r   r   r/   r0   r1   r2   styler   r   r   r   r   r
   6       r
   c                   @  r4   )r   )fold_posr5   >Nr-   r   r   r   r   c                 C  r7   r8   r9   r:   r   r   r   r   G   r;   zFoldedScalarString.__new__r!   r<   r=   r   r   r   r   r   B   r?   r   c                   @  r4   )r   r   'Nr-   r   r   r   r   c                 C  r7   r8   r9   r:   r   r   r   r   P   r;   z SingleQuotedScalarString.__new__r!   r<   r=   r   r   r   r   r   K   r?   r   c                   @  r4   )r   r   "Nr-   r   r   r   r   c                 C  r7   r8   r9   r:   r   r   r   r   Y   r;   z DoubleQuotedScalarString.__new__r!   r<   r=   r   r   r   r   r   T   r?   r   c                   @  r4   )r   r    Nr-   r   r   r   r   c                 C  r7   r8   r9   r:   r   r   r   r   b   r;   zPlainScalarString.__new__r!   r<   r=   r   r   r   r   r   ]   r?   r   sr   r   c                 C  s   t | ddddS )Nz

)r
   r#   )rE   r   r   r   preserve_literalf   r%   rH   Nbaser   mapr.   c           	      C  s   ddl m}m} |du rdti}t| |r?| D ]%}| | }t|tr6|D ]}||v r4|| || |<  nq$qt||d qdS t| |rlt| D ]%\}}t|tre|D ]}||v rc|| || |<  nqSqHt||d qHdS d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MutableSequenceNrF   )rJ   )collections.abcrK   rL   rH   
isinstancer   	walk_tree	enumerate)	rI   rJ   rK   rL   kvchidxelemr   r   r   rO   j   s6   


	
rO   )rE   r   r   r   r!   )rI   r   rJ   r   r   r.   )
__future__r   ruamel.yaml.anchorr   typingr   r   r   r   ruamel.yaml.compatr   __all__r   r	   r
   r   r   r   r   r   rH   rO   r   r   r   r   <module>   s   				
	