%PDF- %PDF-
| Direktori : /lib/python3/dist-packages/cloudinit/__pycache__/ | 
| Current File : //lib/python3/dist-packages/cloudinit/__pycache__/safeyaml.cpython-312.pyc | 
�
    x[hm(  �                   �  � d dl Z d dlmZ d dlmZ d dlmZmZmZm	Z	 d dl
Z
d dlmZ  e j                  e�      Z G d� d�      Zd� Zd	ee   fd
�Zdedee   d
ee   fd�Z G d� de
j(                  �      Z G d� de
j,                  j.                  �      Z ej2                  d�      d
e	eeeef   f   fd��       Z ej2                  d�      dd��       Zy)�    N)�defaultdict)�chain)�Any�Dict�List�Tuple)�performancec                   �T   � e Zd Zdedej
                  dej
                  fd�Zd� Zd� Zy)�SchemaPathMarks�path�
start_mark�end_markc                 �.   � || _         || _        || _        y �N)r   r
   r   )�selfr   r
   r   s       �4/usr/lib/python3/dist-packages/cloudinit/safeyaml.py�__init__zSchemaPathMarks.__init__   s   � ���	�$��� ��
�    c                 �&  � |j                   j                  | j                   j                  k  s-|j                  j                  | j                  j                  kD  ry|j                   j                  | j                   j                  k(  r.|j                   j                  | j                   j                  k  ry|j                  j                  | j                  j                  k(  r.|j                  j                  | j                  j                  kD  ryy)z;Return whether other start/end marks are within self marks.FT)r
   �liner   �column�r   �others     r   �__contains__zSchemaPathMarks.__contains__   s�   � � 
���!�!�D�O�O�$8�$8�8��~�~�"�"�T�]�]�%7�%7�7�����!�!�T�_�_�%9�%9�9�� � �'�'�$�/�/�*@�*@�@���N�N���4�=�=�#5�#5�5����%�%��
�
�(<�(<�<��r   c                 �v  � | j                   j                  |j                   j                  k(  xr� | j                   j                  |j                   j                  k(  xr\ | j                  j                  |j                  j                  k(  xr- | j                  j                  |j                  j                  k(  S r   )r
   r   r   r   r   s     r   �__eq__zSchemaPathMarks.__eq__/   s�   � ��O�O� � �E�$4�$4�$9�$9�9� 
>����&�&�%�*:�*:�*A�*A�A�
>��
�
�"�"�e�n�n�&9�&9�9�
>� �
�
�$�$����(=�(=�=�		
r   N)	�__name__�
__module__�__qualname__�str�yaml�Markr   r   r   � r   r   r   r      s.   � �!�S� !�d�i�i� !�4�9�9� !�
�&
r   r   c                 �:   � |d d d�   D ]  }| |v s�| |k(  r�|c S  y )N���r#   )�
child_mark�marks�marks      r   �_find_closest_parentr)   8   s2   � ��d��d�� �����j�D�&8��K�� r   �
line_marksc                 �D  � | D ]�  }t        || �      }|s�|j                  j                  dd�      \  }}|j                  |j                  k(  s&|j                  j                  |j                  �      r�p|j                  j	                  ||j                  d�      |_        �� y)zP
    Update any SchemaPathMarks.path for items not under the proper parent.
    �.�   N)r)   r   �rsplit�
startswith�replace)r*   r(   �parent�path_prefix�	_path_idxs        r   �_reparent_schema_mark_childrenr4   ?   s�   � � � K��%�d�J�7���%)�Y�Y�%5�%5�c�1�%=�"�K���y�y�F�K�K�'�t�y�y�/C�/C����0� !�I�I�-�-�k�6�;�;��J��	�Kr   �new_markr'