a )g'@s:ddlmZmZmZeZddlZddlZddlZddl m Z m Z ddl m Z ddlmZddlmZddlmZmZddlmZmZdd lmZmZdd lmZed Zd Zda d e!ddZ"de#deddZ$ddZ%ddZ&d$ddZ'd%ddZ(ddZ)ddZ*dd Z+d!d"Z,er,e+Z-ne,Z-d#e-_.dS)&)absolute_importdivisionprint_functionN)MutableMappingMutableSequence)dumps) constants)context) AnsibleErrorAnsibleOptionsError) string_typesPY3) to_nativeto_text)parse_kv)TrueFalseNonel%012x z%08xc CsHtd7adtddtddtddtdddtddgS)N-rrrr)cur_idjoinnode_mac random_intrr6/usr/lib/python3.9/site-packages/ansible/utils/vars.py get_unique_id-s    r c Cst|trt|ts~g}||fD]8}z|t|Wq tyV|t|Yq 0q td|jj |jj |d|ddS)z Internal convenience function to ensure arguments are MutableMappings This checks that all arguments are MutableMappings or raises an error :raises AnsibleError: if one of the arguments is not a MutableMapping zQfailed to combine variables, expected dicts but got a '{0}' and a '{1}': {2} {3}rrN) isinstancerappendr Exceptionrr format __class____name__)abZmyvarsxrrr_validate_mutable_mappings9s   r*cCs:|s|dur tjdkr t||St||||B}|SdS)zV Return a copy of dictionaries of variables based on configured hash behavior Nmerge)CZDEFAULT_HASH_BEHAVIOUR merge_hashr*)r'r(r+resultrrr combine_varsQs   r/Treplacecsf|dvrtdt|||iks*||kr2|S|}|sT|dkrT|||S|D]\}||vrx||<q\||}t|trttr|rt|||||<q\||<q\t|trXttrX|dkr||<q\|dkr|||<q\|dkr|||<q\|dkr4fdd|D||<q\|d kr\fd d|D||<q\||<q\|S) z Return a new dictionary result of the merges of y into x, so that keys from y take precedence over keys from x. (x and y aren't modified) )r0Zkeepr"prepend append_rp prepend_rpzzmerge_hash: 'list_merge' argument can only be equal to 'replace', 'keep', 'append', 'prepend', 'append_rp' or 'prepend_rp'r0r"r1r2csg|]}|vr|qSrr.0zZy_valuerr zmerge_hash..r3csg|]}|vr|qSrrr4r7rrr8r9) r r*copyupdateitemsr!rr-r)r)y recursiveZ list_mergekeyZx_valuerr7rr-_sB       r-cCsi}tjdtD]}d}t|dd}|dus|s6q|drT||dd}n:|ddvrntd|n |dd vr||}nt |}t |t rt ||}qtd |q|S) N extra_varsZsurrogate_or_strict)errors@rr)/.z0Please prepend extra_vars filename '%s' with '@')[{zJInvalid extra vars data supplied. '%s' could not be made into a dictionary) r CLIARGSgettupler startswithZload_from_filer loadrr!rr/)loaderr@Zextra_vars_optdatarrrload_extra_varss"        rNc Cs`|dur d}d|i}ddddddd d d }|D](\}}tj|}|dur2||d |<q2|S) NZUnknownZansible_versionZ check_modeZ diff_modeforksZinventory_sources skip_tagslimitZrun_tags verbosity)checkdiffrOZ inventoryrPZsubsettagsrRz ansible_%s)r<r rGrH)versionZ options_varsattrsattraliasoptrrrload_options_varss"  r[cCsPt|tsdSz|dWnty0YdS0|s>dSt|rLdSdS)NFasciiT)r!r encodeUnicodeEncodeError isidentifierkeyword iskeywordidentrrr_isidentifier_PY3s   rdcCs@t|tsdS|sdStj|r&dSt|s8|tvrs:       X