o .&a @sddlmZddlmZddlZddlmZmZddlmZddZ dd Z d d Z d d Z Gdddej ZddZGdddejZdS))json) OrderedDictN) ScalarNode SequenceNode)sixcCs|jdd}d}|dvrd}||}|dkr)t|jtjr)|jdd}||iSt|tr7||}||iSt|trE| |}||iS| |}||iS)z YAML constructor to parse CloudFormation intrinsics. This will return a dictionary with key being the instrinsic name NzFn::)Ref ConditionGetAtt.) tag isinstancevaluer string_typessplitrconstruct_scalarrconstruct_sequenceconstruct_mapping)loader tag_prefixnoder prefixcfntagrrQ/usr/lib/python3/dist-packages/awscli/customizations/cloudformation/yamlhelper.pyintrinsics_multi_constructors    rcCs||SN)represent_dictitems)dumperdatarrr_dict_representer;sr"cCsttttj|dtdS)zW Dumps the dictionary as a YAML document :param dict_to_dump: :return: F)default_flow_styleDumper)FlattenAliasDumperadd_representerrr"yamldump) dict_to_dumprrr yaml_dump?s r*cCs||t||Sr)flatten_mappingrconstruct_pairs)rrrrr_dict_constructorMs r-c@seZdZdZdS)SafeLoaderWrapperzMIsolated safe loader to allow for customizations without global changes. N)__name__ __module__ __qualname____doc__rrrrr.Ssr.cCsRztj|tdWSty(t}|tjjj t | dt t ||YSw)zParse a yaml string)object_pairs_hook!)rloadsr ValueErrorr.add_constructorr'resolver BaseResolverDEFAULT_MAPPING_TAGr-add_multi_constructorrload)yamlstrrrrr yaml_parseYs   r>c@seZdZddZdS)r%cCsdS)NTr)selfr!rrrignore_aliasesisz!FlattenAliasDumper.ignore_aliasesN)r/r0r1r@rrrrr%hs r%)botocore.compatrrr' yaml.resolverrr awscli.compatrrr"r*r- SafeLoaderr.r> SafeDumperr%rrrrs  %