o
    !d                     @   s   d dl mZ d dl mZ d dlZd dlmZmZ d dlmZ dd Z	dd	 Z
d
d Zdd ZG dd dejZdd ZG dd dejZdS )    )json)OrderedDictN)
ScalarNodeSequenceNode)sixc                 C   s   |j dd }d}|dv rd}|| }|dkr)t|jtjr)|jdd}||iS t|tr7| |}||iS t|trE| 	|}||iS | 
|}||iS )z
    YAML constructor to parse CloudFormation intrinsics.
    This will return a dictionary with key being the intrinsic name
       NzFn::)ZRef	Condition ZGetAtt.)tag
isinstancevaluer   Zstring_typessplitr   Zconstruct_scalarr   Zconstruct_sequenceZconstruct_mapping)loaderZ
tag_prefixnoder   prefixZcfntagr    r   Susr/lib/python3.10/site-packages/awscli/customizations/cloudformation/yamlhelper.pyintrinsics_multi_constructor   s    





r   c                 C   s   |  | S N)Zrepresent_dictitems)Zdumperdatar   r   r   _dict_representer;   s   r   c                 C   s   t tt tj| dt dS )zW
    Dumps the dictionary as a YAML document
    :param dict_to_dump:
    :return:
    F)Zdefault_flow_styleZDumper)FlattenAliasDumperZadd_representerr   r   yamldump)Zdict_to_dumpr   r   r   	yaml_dump?   s   r   c                 C   s   |  | t| |S r   )Zflatten_mappingr   Zconstruct_pairs)r   r   r   r   r   _dict_constructorM   s   
r   c                   @   s   e Zd ZdZdS )SafeLoaderWrapperzMIsolated safe loader to allow for customizations without global changes.
    N)__name__
__module____qualname____doc__r   r   r   r   r   S   s    r   c                 C   sR   zt j| tdW S  ty(   t}|tjjj	t
 |dt t| | Y S w )zParse a yaml string)object_pairs_hook!)r   loadsr   
ValueErrorr   Zadd_constructorr   resolverZBaseResolverZDEFAULT_MAPPING_TAGr   Zadd_multi_constructorr   load)Zyamlstrr   r   r   r   
yaml_parseY   s   r)   c                   @   s   e Zd Zdd ZdS )r   c                 C   s   dS )NTr   )selfr   r   r   r   ignore_aliasesi   s   z!FlattenAliasDumper.ignore_aliasesN)r   r    r!   r+   r   r   r   r   r   h   s    r   )Zbotocore.compatr   r   r   Zyaml.resolverr   r   Zawscli.compatr   r   r   r   r   Z
SafeLoaderr   r)   Z
SafeDumperr   r   r   r   r   <module>   s   %