File: //usr/lib/python3.6/site-packages/cloudinit/__pycache__/safeyaml.cpython-36.pyc
3
\�me#) � @ s� d dl mZ d dlmZ d dlmZmZmZmZ d dl Z e j
Z
G dd� d�ZG dd� de j�Z
d d
� Zee d�dd
�Zeee ee d�dd�ZG dd� de j�Ze
jde
j� G dd� de jj�Zeeeeef f d�dd�Zdd� Zddd�ZdS ) � )�defaultdict)�chain)�Any�Dict�List�TupleNc @ s2 e Zd Zeejejd�dd�Zdd� Zdd� ZdS ) �SchemaPathMarks)�path�
start_mark�end_markc C s || _ || _|| _d S )N)r r
r )�selfr r
r � r
�/usr/lib/python3.6/safeyaml.py�__init__ s zSchemaPathMarks.__init__c C sp |j j| j jk s |jj| jjkr$dS |j j| j jkrH|j j| j jk rHdS |jj| jjkrl|jj| jjkrldS dS )z;Return whether other start/end marks are within self marks.FT)r
�liner �column)r �otherr
r
r �__contains__ s zSchemaPathMarks.__contains__c C s@ | j j|j jko>| j j|j jko>| jj|jjko>| jj|jjkS )N)r
r r r )r r r
r
r �__eq__+ s zSchemaPathMarks.__eq__N) �__name__�
__module__�__qualname__�str�yamlZMarkr r r r
r
r
r r s r c s e Zd Z� fdd�Z� ZS )�_CustomSafeLoaderc s t � j|�S )N)�superZconstruct_scalar)r �node)� __class__r
r �construct_python_unicode5 s z*_CustomSafeLoader.construct_python_unicode)r r r r �
__classcell__r
r
)r r r 4 s r c C s2 x,|d d d� D ]}| |kr| |k r|S qW d S )N� ���r
)Z
child_mark�marks�markr
r
r �_find_closest_parent9 s r$ )�
line_marksc C sb x\| D ]T}t || �}|r|jjdd�\}}|j|jksF|jj|j� r|jj||jd�|_qW dS )zP
Update any SchemaPathMarks.path for items not under the proper parent.
�.r N)r$ r �rsplit�
startswith�replace)r% r# �parentZpath_prefixZ _path_idxr
r
r �_reparent_schema_mark_children@ s
r+ )�new_markr"