a )g!@sddlmZmZmZeZddlZddlZddlm Z ddl m Z m Z ddlmZmZddlmZddlmZeZdd d d d Zd dZddZdddZdddZdddZdddZddZdS) )absolute_importdivisionprint_functionN) constants) AnsibleErrorAnsibleParserError)to_text to_native) AnsibleLoader)Displaydoc plainexamplesZ returndocsmetadata) DOCUMENTATIONEXAMPLESZRETURNZANSIBLE_METADATAcCs&tD]\}}||kr|SqdS)z" reverse lookup of the dict above N)string_to_varsitems)valuekvr?/usr/lib/python3.9/site-packages/ansible/parsing/plugin_docs.py _var2stringsrcCsddtDS)z? initialize a return dict for docs with the expected structure cSsi|] }|dqS)Nr).0rrrr $z"_init_doc_dict..)rvaluesrrrr_init_doc_dict"srTc Cst}i}zBt|d$}t||d}Wdn1s@0YWnTty}zs>          & rHc Cslt}zt|d}t|}Wdn1s80Y|jD]}t|tjrH|jD]}z |j }Wn(t yt d||fYq^Yn0|t vr^t |} t|jtjrt|j|| <n2|dkrt|jj|| <nt|jj|d|| <t d| q^qHWnZtyf} z@d|t| f} |sBt| | dn|rRt | WYd} ~ n d} ~ 00|S) z Use ast to search for assignment of the DOCUMENTATION and EXAMPLES variables in the given file. Parse DOCUMENTATION from YAML and return the YAML doc or None together with EXAMPLES, as plain text. rNzBBuilding documentation, failed to assign id for %s on %s, skippingrrzDocumentation assigned: %sz5Unable to parse documentation in python file '%s': %sr!)rr"astparser#body isinstanceZAssigntargetsidAttributeErrorr&ZwarningrrDictZ literal_evalrsr r$debugr%r rr') r)r*r+r,Z b_module_dataMchildtZtheidZvarkeyr-r.rrrrC|s6 ,       rCcCsp|tjrt|||d}n0|tjr8t|||d}n|sLtdt||sd|sdtdt|d|d<|S)zC returns a documentation dictionary from Ansible plugin docstrings )r*r+z Unknown documentation format: %sz%Unable to parse documentation for: %sNZseealso)endswithCZYAML_DOC_EXTENSIONSr0ZPYTHON_DOC_EXTENSIONSrHrr )r)r*r+Z docstringrrrread_docstrings  rXc Csd}d}d}g}t|d}|D]}|r|rB||rB||q|rV||sVqq|drd}dt|t|d}||q |dr d |vsd |vr d}q Wd n1s0Yd|d }t||d  }|S)z Quickly find short_description using string methods instead of node parsing. This does not return a full set of documentation strings and is intended for operations like ansible-doc -l. Fr2zshort_description:T r1r=:N.r) r"r@appendrAlenjoinrBrstripr r$) r)Zin_documentationZ capturingZindent_detectionZdoc_stubZ t_module_datalineZshort_descriptionr,rrr read_docstubs(   $rc)TT)TT)TT)TT)Z __future__rrrr:Z __metaclass__rIr7ZansiblerrWZansible.errorsrrZansible.module_utils._textrr Zansible.parsing.yaml.loaderr Zansible.utils.displayr r&rrrr0rHrCrXrcrrrrs*     > /