o
    .&ßa<r  ã                   @   sæ   d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZ d d	lmZmZmZ e  e¡ZG d
d„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZdS )é    N)Ú
xform_name)ÚStringShape)Úis_json_value_header)ÚSCALAR_TYPES)ÚParamShorthandDocGen)Ú
DOC_EVENTS)Ú
TopicTagDB)Ú%find_service_and_method_in_event_nameÚis_document_typeÚoperation_uses_document_typesc                   @   s¬   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)S )*ÚCLIDocumentEventHandlerc                 C   s,   || _ |  |j|j¡ |  |¡| _g | _d S ©N)Úhelp_commandÚregisterÚsessionÚevent_classÚ_build_arg_table_groupsÚ_arg_groupsÚ_documented_arg_groups©Úselfr   © r   ú0/usr/lib/python3/dist-packages/awscli/clidocs.pyÚ__init__!   s   
z CLIDocumentEventHandler.__init__c                 C   s:   i }|j  ¡ D ]\}}|jd ur| |jg ¡ |¡ q|S r   )Ú	arg_tableÚitemsÚ
group_nameÚ
setdefaultÚappend)r   r   Ú
arg_groupsÚnameÚargr   r   r   r   '   s   
€z/CLIDocumentEventHandler._build_arg_table_groupsc                 C   s   t |ƒrdS t|ƒrdS |S )NÚJSONÚdocument)r   r
   )r   ÚshapeÚdefaultr   r   r   Ú_get_argument_type_name.   s
   z/CLIDocumentEventHandler._get_argument_type_namec                 C   sv   t D ]6}| dd¡}t| |ƒr8t| |ƒ}t | }t| d¡ƒd }|fd|  }	|||	  }
|| }||
||ƒ qd S )Nú-Ú_Ú.é   )Ú*)r   ÚreplaceÚhasattrÚgetattrÚlenÚsplit)r   r   r   ÚmapfnÚeventÚevent_handler_nameÚevent_handlerÚformat_stringÚnum_argsÚformat_argsÚevent_stringÚ	unique_idr   r   r   Ú_map_handlers5   s   

€÷z%CLIDocumentEventHandler._map_handlersc                 C   s   |   |||j¡ dS )a:  
        The default register iterates through all of the
        available document events and looks for a corresponding
        handler method defined in the object.  If it's there, that
        handler method will be registered for the all events of
        that type for the specified ``event_class``.
        N)r:   r   )r   r   r   r   r   r   r   A   s   z CLIDocumentEventHandler.registerc                 C   s    |   | jj| jj| jjj¡ dS )a>  
        The default unregister iterates through all of the
        available document events and looks for a corresponding
        handler method defined in the object.  If it's there, that
        handler method will be unregistered for the all events of
        that type for the specified ``event_class``.
        N)r:   r   r   r   Ú
unregister)r   r   r   r   r;   K   s   
þz"CLIDocumentEventHandler.unregisterc                 K   sŠ   |j }|jdkrC|j d¡}| d¡ | d¡ dg}|d d… D ]}| d¡ | |¡ d |¡}| d	||f ¡ q!| d
¡ d S d S )NÚmanr)   ú[ z:ref:`aws <cli:aws>`Úawséÿÿÿÿú . ú z:ref:`%s <cli:%s>`ú ])ÚdocÚtargetr   r0   Úwriter   Újoin)r   r   ÚkwargsrC   Ú	cmd_namesÚfull_cmd_listÚcmdÚfull_cmd_namer   r   r   Údoc_breadcrumbsY   s   





öz'CLIDocumentEventHandler.doc_breadcrumbsc                 K   sN   |j }|j ¡  |j dd¡}|dkrd| }| d| ¡ |j |j¡ d S )Nr)   rA   r>   zaws z.. _cli:%s:)rC   ÚstyleÚnew_paragraphr   r,   ÚwritelnÚh1r    )r   r   rG   rC   Ú	referencer   r   r   Ú	doc_titleg   s   
z!CLIDocumentEventHandler.doc_titlec                 K   s,   |j }|j d¡ | |j¡ |j ¡  d S ©NÚDescription)rC   rM   Úh2Úinclude_doc_stringÚdescriptionrN   ©r   r   rG   rC   r   r   r   Údoc_descriptionp   ó   z'CLIDocumentEventHandler.doc_descriptionc                 K   s6   g | _ |j}|j d¡ |j ¡  | d|j ¡ d S )NÚSynopsisú%s)r   rC   rM   rU   Ústart_codeblockrO   r    rX   r   r   r   Údoc_synopsis_startv   s
   
z*CLIDocumentEventHandler.doc_synopsis_startc                 K   s¦   |j }|j| }|j| jv r,|j| jv rd S d dd„ | j|j D ƒ¡}| j |j¡ n|j d¡r8d|j }nd|j }|j	sJt
|ddƒsJd	| }| d
| ¡ d S )Nú | c                 S   s   g | ]}|j ‘qS r   ©Úcli_name©Ú.0Úar   r   r   Ú
<listcomp>…   s    z?CLIDocumentEventHandler.doc_synopsis_option.<locals>.<listcomp>z--z
%s <value>z<%s>Ú_DOCUMENT_AS_REQUIREDFz[%s]r\   )rC   r   r   r   r   rF   r   ra   Ú
startswithÚrequiredr.   rO   )r   Úarg_namer   rG   rC   ÚargumentÚ
option_strr   r   r   Údoc_synopsis_option}   s&   

ÿÿ

ÿz+CLIDocumentEventHandler.doc_synopsis_optionc                 K   s   |j }|j ¡  g | _d S r   )rC   rM   Úend_codeblockr   rX   r   r   r   Údoc_synopsis_end‘   s   

z(CLIDocumentEventHandler.doc_synopsis_endc                 K   s*   |j }|j d¡ |js| d¡ d S d S )NÚOptionsz*None*
)rC   rM   rU   r   rE   rX   r   r   r   Údoc_options_start™   s
   ÿz)CLIDocumentEventHandler.doc_options_startc                 K   sÔ   |j }|j| }|j| jv r,|j| jv rd S d dd„ | j|j D ƒ¡}| j |j¡ nd|j }| d||  	|j
|j¡f ¡ |j ¡  | |j¡ t|dƒr^|  |j
|¡ |  |j
|¡ |j ¡  |j ¡  d S )Nr_   c                 S   s   g | ]}d |j  ‘qS )ú``%s``r`   rb   r   r   r   re   §   s    z6CLIDocumentEventHandler.doc_option.<locals>.<listcomp>rq   z%s (%s)
Úargument_model)rC   r   r   r   r   rF   r   ra   rE   r&   rr   Úcli_type_namerM   ÚindentrV   Údocumentationr-   Ú_document_enumsÚ_document_nested_structureÚdedentrN   )r   ri   r   rG   rC   rj   r    r   r   r   Ú
doc_optionŸ   s,   

ÿÿ

ÿ


z"CLIDocumentEventHandler.doc_optionc                 K   s    |j r|j}|j d¡ d S d S )NzSee Also)Úrelated_itemsrC   rM   rU   rX   r   r   r   Údoc_relateditems_start¶   s   þz.CLIDocumentEventHandler.doc_relateditems_startc                 K   s2   |j }| d¡ |jjd| |d� | d¡ d S )Nú* zcli:%s©ÚlabelÚtextÚ
)rC   rE   rM   Úsphinx_reference_label)r   r   Úrelated_itemrG   rC   r   r   r   Údoc_relateditem»   s   
þz'CLIDocumentEventHandler.doc_relateditemc                 C   s`   t |tƒr,|jr.|j ¡  | d¡ |j ¡  |jD ]
}|j d| ¡ q|j ¡  dS dS dS )z#Documents top-level parameter enumszPossible values:rq   N)	Ú
isinstancer   ÚenumrM   rN   rE   Ústart_ulÚliÚend_ul)r   ÚmodelrC   r…   r   r   r   rv   Ä   s   




ùz'CLIDocumentEventHandler._document_enumsc           
      C   sÊ   t |ddƒ}|dkr!|j ¡ D ]\}}| j||||jgd� qdS |dkr3| j|d|j|jgd� dS |dkrc|j}|j dd	¡}| j||||jgd� |j	}|j dd
¡}	| j||	||jgd� dS dS )z5Recursively documents parameters in nested structuresÚ	type_nameNÚ	structure©ÚstackÚlistÚ Úmapr    ÚkeyÚvalue)
r.   Úmembersr   Ú_doc_memberr    Úmemberr‘   ÚserializationÚgetr’   )
r   r‰   rC   Úmember_type_nameÚmember_nameÚmember_shapeÚ	key_shapeÚkey_nameÚvalue_shapeÚ
value_namer   r   r   rw   Ï   s"   
ÿÿúz2CLIDocumentEventHandler._document_nested_structurec                 C   sh   |j |v r| |j ¡dkr|jdkr| d¡ d S | |j ¡ z|  ||||¡ W | ¡  d S | ¡  w )Né   r‹   z( ... recursive ... ))r    ÚcountrŠ   rE   r   Ú_do_doc_memberÚpop)r   rC   r™   rš   r�   r   r   r   r”   à   s   


ÿz#CLIDocumentEventHandler._doc_memberc                 C   s  |j }|  ||j¡}|r| d||f ¡ n| d| ¡ |j ¡  |j ¡  | |¡ |j ¡  |j}|dkrK|j 	¡ D ]\}}	|  
|||	|¡ q=n6|dkrt|j}
|
j dd¡}|  
|||
|¡ |j}|j dd¡}|  
||||¡ n|dkr�|  
|d	|j|¡ |j ¡  |j ¡  d S )
Nz
%s -> (%s)z(%s)r‹   r�   r    r‘   r’   rŽ   r�   )ru   r&   rŠ   rE   rM   rt   rN   rV   r“   r   r”   r‘   r–   r—   r’   r•   rx   )r   rC   r™   rš   r�   ÚdocsrŠ   r˜   Úsub_nameÚ	sub_shaper›   rœ   r�   rž   r   r   r   r¡   ï   s6   ÿ



ÿ
z&CLIDocumentEventHandler._do_doc_memberN)Ú__name__Ú
__module__Ú__qualname__r   r   r&   r:   r   r;   rL   rR   rY   r^   rl   rn   rp   ry   r{   rƒ   rv   rw   r”   r¡   r   r   r   r   r      s*    
		r   c                   @   sL   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dS )ÚProviderDocumentEventHandlerc                 K   ó   d S r   r   )r   r   Ú
event_namerG   r   r   r   rL     ó   z,ProviderDocumentEventHandler.doc_breadcrumbsc                 K   s0   |j }|j d¡ |j |j¡ | |j¡ d S )Nr[   )rC   rM   rU   Ú	codeblockÚsynopsisrV   Ú
help_usagerX   r   r   r   r^     s   z/ProviderDocumentEventHandler.doc_synopsis_startc                 K   rª   r   r   ©r   ri   r   rG   r   r   r   rl     r¬   z0ProviderDocumentEventHandler.doc_synopsis_optionc                 K   s   |j }|j ¡  d S r   )rC   rM   rN   rX   r   r   r   rn     s   z-ProviderDocumentEventHandler.doc_synopsis_endc                 K   s   |j }|j d¡ d S )Nro   )rC   rM   rU   rX   r   r   r   rp     s   z.ProviderDocumentEventHandler.doc_options_startc                 K   sl   |j }|j| }| d|j|jf ¡ | |j¡ |jr4|j 	¡  |jD ]}|j 
|¡ q$|j ¡  d S d S )Nz``%s`` (%s))rC   r   rO   ra   rs   rV   ru   ÚchoicesrM   r†   r‡   rˆ   )r   ri   r   rG   rC   rj   Úchoicer   r   r   ry   "  s   

ÿ

üz'ProviderDocumentEventHandler.doc_optionc                 K   ó    |j }|j d¡ |j ¡  d S )NzAvailable Services©rC   rM   rU   ÚtoctreerX   r   r   r   Údoc_subitems_start.  ó   z/ProviderDocumentEventHandler.doc_subitems_startc                 K   s"   |j }d| }|jj||d� d S )Nú%s/index©Ú	file_name)rC   rM   Útocitem)r   Úcommand_namer   rG   rC   rº   r   r   r   Údoc_subitem3  s   z(ProviderDocumentEventHandler.doc_subitemN)r¦   r§   r¨   rL   r^   rl   rn   rp   ry   r¶   r½   r   r   r   r   r©     s    r©   c                   @   s\   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ ZdS )ÚServiceDocumentEventHandlerc                 K   rª   r   r   ©r   r   rG   r   r   r   r^   <  r¬   z.ServiceDocumentEventHandler.doc_synopsis_startc                 K   rª   r   r   r°   r   r   r   rl   ?  r¬   z/ServiceDocumentEventHandler.doc_synopsis_optionc                 K   rª   r   r   r¿   r   r   r   rn   B  r¬   z,ServiceDocumentEventHandler.doc_synopsis_endc                 K   rª   r   r   r¿   r   r   r   rp   F  r¬   z-ServiceDocumentEventHandler.doc_options_startc                 K   rª   r   r   r°   r   r   r   ry   I  r¬   z&ServiceDocumentEventHandler.doc_optionc                 K   rª   r   r   r°   r   r   r   Údoc_option_exampleL  r¬   z.ServiceDocumentEventHandler.doc_option_examplec                 K   rª   r   r   r¿   r   r   r   Údoc_options_endO  r¬   z+ServiceDocumentEventHandler.doc_options_endc                 K   s(   |j }|j}|j d¡ | |j¡ d S rS   )rC   ÚobjrM   rU   rV   ru   )r   r   rG   rC   Úservice_modelr   r   r   rY   R  s   z+ServiceDocumentEventHandler.doc_descriptionc                 K   r³   )NzAvailable Commandsr´   rX   r   r   r   r¶   Y  r·   z.ServiceDocumentEventHandler.doc_subitems_startc                 K   sT   |j }|j| }t|di ƒ}t|ƒdkr"d| }|jj||d� d S |j |¡ d S )NÚsubcommand_tabler   r¸   r¹   )rC   Úcommand_tabler.   r/   rM   r»   )r   r¼   r   rG   rC   Ú
subcommandrÄ   rº   r   r   r   r½   ^  s   
z'ServiceDocumentEventHandler.doc_subitemN)r¦   r§   r¨   r^   rl   rn   rp   ry   rÀ   rÁ   rY   r¶   r½   r   r   r   r   r¾   9  s    r¾   c                   @   sz   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zddd„Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚOperationDocumentEventHandlerz'https://docs.aws.amazon.com/goto/WebAPIc                 K   sF   |j }|j}|j d¡ | |j¡ |  |¡ |  |¡ |  |¡ d S rS   )	rC   rÂ   rM   rU   rV   ru   Ú_add_webapi_crosslinkÚ_add_top_level_args_referenceÚ$_add_note_for_document_types_if_used)r   r   rG   rC   Úoperation_modelr   r   r   rY   p  s   

z-OperationDocumentEventHandler.doc_descriptionc                 C   s:   |j  d¡ |j  d¡ |j jjddd� |j  d¡ d S )Nr�   zSee z
'aws help'z/reference/index)ÚtitleÚpagez' for descriptions of global parameters.)rC   rO   rE   rM   Úinternal_linkr   r   r   r   rÉ   y  s   þz;OperationDocumentEventHandler._add_top_level_args_referencec                 C   sn   |j }|j}|j}|j d¡}|d u rd S |j ¡  | d¡ d| j||j	f }|jj
d|d� | d¡ d S )NÚuidz
See also: z%s/%s/%szAWS API Documentation)rÌ   Úlinkr�   )rC   rÂ   rÃ   Úmetadatar—   rM   rN   rE   ÚAWS_DOC_BASEr    Úexternal_linkrO   )r   r   rC   rË   rÃ   Úservice_uidrÐ   r   r   r   rÈ   ‚  s   

ÿz3OperationDocumentEventHandler._add_webapi_crosslinkc                 C   s0   t |jƒr|jj ¡  |j d|j ¡ d S d S )NaC  ``%s`` uses document type values. Document types follow the JSON data model where valid values are: strings, numbers, booleans, null, arrays, and objects. For command input, options and nested parameters that are labeled with the type ``document`` must be provided as JSON. Shorthand syntax does not support document types.)r   rÂ   rC   rM   rN   rO   r    r   r   r   r   rÊ   “  s   
ûÿþzBOperationDocumentEventHandler._add_note_for_document_types_if_usedTc                 C   sJ   t |tƒr|jr|r|j}d dd„ |D ƒ¡S dS |jdkr dS d|j S )Nú|c                 S   s   g | ]}d | ‘qS )z"%s"r   )rc   Úcr   r   r   re   ¥  s    zJOperationDocumentEventHandler._json_example_value_name.<locals>.<listcomp>z"string"Úbooleanz
true|falser\   )r„   r   r…   rF   rŠ   )r   rr   Úinclude_enum_valuesr±   r   r   r   Ú_json_example_value_nameŸ  s   



z6OperationDocumentEventHandler._json_example_value_namec                 C   sf   |j |v r| |j ¡dkr|jdkr| d¡ d S | |j ¡ z|  |||¡ W | ¡  d S | ¡  w )NrŸ   r‹   z{ ... recursive ... })r    r    rŠ   rE   r   Ú_do_json_exampler¢   )r   rC   rr   r�   r   r   r   Ú_json_example­  s   


z+OperationDocumentEventHandler._json_examplec                 C   sn  |j dkrI| d¡ |jj tv r| d|  |j¡ ¡ n&|j ¡  |j ¡  |  ||j|¡ |j ¡  | d¡ |j 	¡  |j ¡  | d¡ d S |j dkr�| d¡ |j ¡  |  |j
¡}| d| ¡ |jj tv ru| |  |j¡¡ n|j ¡  |  ||j|¡ |j 	¡  |j ¡  | d¡ |j 	¡  | d	¡ d S |j d
krµ|jr¬|  |¡ d S |  |||¡ d S d S )NrŽ   ú[z%s, ...z...ú]r�   ú{z%s: ú}r‹   )rŠ   rE   r•   r   rÙ   rM   rt   Únew_linerÛ   rx   r‘   r’   r
   Ú_doc_document_memberÚ_doc_input_structure_members)r   rC   rr   r�   Ú
key_stringr   r   r   rÚ   »  s>   
















üz.OperationDocumentEventHandler._do_json_examplec                 C   s   |  d¡ d S )Nz{...})rE   )r   rC   r   r   r   rá   Þ  ó   z2OperationDocumentEventHandler._doc_document_memberc           	      C   s  |  d¡ |j ¡  |j ¡  |j}t|ƒD ]f\}}|| }|j}|tv r2|  d||  |¡f ¡ n8|dkrE|  d| ¡ |  	|||¡ n%|dkrX|  d| ¡ |  	|||¡ n|dkrj|  d| ¡ |  	|||¡ |t
|ƒd k r||  d¡ |j ¡  q|j ¡  |j ¡  |  d	¡ d S )
NrÞ   z"%s": %sr‹   z"%s": r�   rŽ   rŸ   ú,rß   )rE   rM   rt   rà   r“   Ú	enumeraterŠ   r   rÙ   rÛ   r/   rx   )	r   rC   rr   r�   r“   Úir™   Úmember_modelr˜   r   r   r   râ   á  s6   



ÿ

€

z:OperationDocumentEventHandler._doc_input_structure_membersc                 K   sš  t |ƒ\}}|j}|j| }|j| jv r|j| jv rd S |j}	tƒ }
|
 |j¡rW|
 	|||¡}|d u r5d S |rW|j
 ¡  | d¡ |j
 ¡  | ¡ D ]}| |¡ qJ|j
 ¡  |	d ur£|	jdkr£|	jjtv r£|	j}|j
 ¡  | d¡ |j
 ¡  | j|dd�}| d||f ¡ t|tƒr—|jr—|  ||j¡ |j
 ¡  |j
 ¡  d S |jtvrË|j
 ¡  | d¡ |j
 ¡  | j||	g d� |j
 ¡  |j
 ¡  d S d S )	NzShorthand SyntaxrŽ   ÚSyntaxF)rØ   z	%s %s ...zJSON SyntaxrŒ   )r	   rC   r   r   r   r   rr   r   Úsupports_shorthandÚgenerate_shorthand_examplerM   rN   rE   r]   Ú
splitlinesrO   rm   rŠ   r•   r   rÙ   r„   r   r…   Ú_write_valid_enumsrs   rÛ   )r   ri   r   r«   rG   Ú
service_idÚoperation_namerC   Úcli_argumentrr   ÚdocgenÚexample_shorthand_syntaxÚexample_liner•   Úexample_typer   r   r   rÀ   ü  sX   ÿ
ÿ






ÿ





úz0OperationDocumentEventHandler.doc_option_examplec                 C   s:   |j  ¡  | d¡ |D ]	}| d| ¡ q| d¡ d S )NzWhere valid values are:
z    %s
r€   )rM   rN   rE   )r   rC   Úenum_valuesr’   r   r   r   rí   4  s
   

z0OperationDocumentEventHandler._write_valid_enumsc           	      K   sd   |j }|j d¡ |j}|j}|d u s|js| d¡ d S |j ¡ D ]\}}| j|||g d� q"d S )NÚOutputÚNonerŒ   )	rC   rM   rU   rÂ   Úoutput_shaper“   rE   r   r”   )	r   r   r«   rG   rC   rË   rø   r™   rš   r   r   r   Ú
doc_output;  s   ÿz(OperationDocumentEventHandler.doc_outputc                 K   s   |   |¡ d S r   )rÉ   r¿   r   r   r   rÁ   F  rä   z-OperationDocumentEventHandler.doc_options_endN)T)r¦   r§   r¨   rÒ   rY   rÉ   rÈ   rÊ   rÙ   rÛ   rÚ   rá   râ   rÀ   rí   rù   rÁ   r   r   r   r   rÇ   l  s    		
#8rÇ   c                   @   sX   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Zdd„ ZdS )ÚTopicListerDocumentEventHandleras  This is the AWS CLI Topic Guide. It gives access to a set of topics that provide a deeper understanding of the CLI. To access the list of topics from the command line, run ``aws help topics``. To access a specific topic from the command line, run ``aws help [topicname]``, where ``topicname`` is the name of the topic as it appears in the output from ``aws help topics``.c                 C   s,   || _ |  |j|j¡ tƒ | _| j ¡  d S r   )r   r   r   r   r   Ú_topic_tag_dbÚload_json_indexr   r   r   r   r   S  s   z(TopicListerDocumentEventHandler.__init__c                 K   s<   |j }|jdkr| d¡ |jjddd� | d¡ d S d S )Nr<   r=   úcli:awsr>   r}   rB   ©rC   rD   rE   rM   r�   rX   r   r   r   rL   Y  s   

ýz/TopicListerDocumentEventHandler.doc_breadcrumbsc                 K   s8   |j }|j ¡  |jjd| jj dd� |j d¡ d S )Núcli:aws help %sr�   ©ÚrefnamerÐ   zAWS CLI Topic Guide)rC   rM   rN   Úlink_target_definitionr   r    rP   rX   r   r   r   rR   `  s   

þz)TopicListerDocumentEventHandler.doc_titlec                 K   s,   |j }|j d¡ | | j¡ |j ¡  d S rS   )rC   rM   rU   rV   ÚDESCRIPTIONrN   rX   r   r   r   rY   h  rZ   z/TopicListerDocumentEventHandler.doc_descriptionc                 K   rª   r   r   r¿   r   r   r   r^   n  r¬   z2TopicListerDocumentEventHandler.doc_synopsis_startc                 K   rª   r   r   r¿   r   r   r   rn   q  r¬   z0TopicListerDocumentEventHandler.doc_synopsis_endc                 K   rª   r   r   r¿   r   r   r   rp   t  r¬   z1TopicListerDocumentEventHandler.doc_options_startc                 K   rª   r   r   r¿   r   r   r   rÁ   w  r¬   z/TopicListerDocumentEventHandler.doc_options_endc           
      K   sÄ   |j }|j d¡ | j d¡}| j ¡ }t| ¡ ƒ}|D ]3}|j |¡ |j 	¡  t|| ƒD ]}| j 
|d¡}	| d¡ |jjd| |d� | d|	 ¡ q/q|j ¡  |D ]}|j |¡ qWd S )NzAvailable TopicsÚcategoryrW   r|   rÿ   r}   z: %s
)rC   rM   rU   rû   ÚqueryÚget_all_topic_namesÚsortedÚkeysÚh3rN   Úget_tag_single_valuerE   r�   Úhidden_toctreeÚhidden_tocitem)
r   r   rG   rC   Ú
categoriesÚtopic_namesÚcategory_namesÚcategory_nameÚ
topic_namerW   r   r   r   r¶   z  s.   

ÿ
þø
ÿz2TopicListerDocumentEventHandler.doc_subitems_startN)r¦   r§   r¨   r  r   rL   rR   rY   r^   rn   rp   rÁ   r¶   r   r   r   r   rú   J  s    ÿrú   c                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚTopicDocumentEventHandlerc                 K   sV   |j }|jdkr)| d¡ |jjddd� | d¡ |jjddd� | d	¡ d S d S )
Nr<   r=   rý   r>   r}   r@   zcli:aws help topicsÚtopicsrB   rþ   rX   r   r   r   rL   š  s   


þøz)TopicDocumentEventHandler.doc_breadcrumbsc                 K   sH   |j }|j ¡  |jjd| jj dd� | j |jd¡}|j |¡ d S )Nrÿ   r�   r   rÌ   )	rC   rM   rN   r  r   r    rû   r
  rP   )r   r   rG   rC   rÌ   r   r   r   rR   ¦  s   

þÿz#TopicDocumentEventHandler.doc_titlec                 K   s@   |j }tj | jj|jd ¡}|  |¡}| |¡ |j	 
¡  d S )Nz.rst)rC   ÚosÚpathrF   rû   Ú	topic_dirr    Ú_remove_tags_from_contentrO   rM   rN   )r   r   rG   rC   Útopic_filenameÚcontentsr   r   r   rY   °  s   ÿ

z)TopicDocumentEventHandler.doc_descriptionc                 C   sl   t |dƒ�}| ¡ }W d   ƒ n1 sw   Y  d}t|ƒD ]\}}|  |¡s,|} nqd ||d … ¡S )NÚrr   r�   )ÚopenÚ	readlinesræ   Ú_line_has_tagrF   )r   ÚfilenameÚfÚlinesÚcontent_begin_indexrç   Úliner   r   r   r  ¸  s   
ÿ
þz3TopicDocumentEventHandler._remove_tags_from_contentc                 C   s*   | j jD ]}| d| d ¡r dS qdS )Nú:TF)rû   Ú
valid_tagsrg   )r   r"  Útagr   r   r   r  Ç  s
   ÿz'TopicDocumentEventHandler._line_has_tagc                 K   rª   r   r   r¿   r   r   r   r¶   Í  r¬   z,TopicDocumentEventHandler.doc_subitems_startN)	r¦   r§   r¨   rL   rR   rY   r  r  r¶   r   r   r   r   r  ˜  s    
r  )Úloggingr  Úbotocorer   Úbotocore.modelr   Úbotocore.utilsr   Úawsclir   Úawscli.argprocessr   Úawscli.bcdoc.doceventsr   Úawscli.topictagsr   Úawscli.utilsr	   r
   r   Ú	getLoggerr¦   ÚLOGÚobjectr   r©   r¾   rÇ   rú   r  r   r   r   r   Ú<module>   s&   
 n-3 _N