o
    vy‚i;  ã                   @   s¸   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
mZ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mZ d dlmZ G dd„ deƒZG dd„ deƒZdS )é    N)Ú
xform_name)ÚDocumentStructure)Úget_official_service_name)ÚActionDocumenter)Údocument_attributeÚdocument_identifierÚdocument_reference)ÚBaseDocumenter)ÚCollectionDocumenter)ÚSubResourceDocumenter)Úadd_resource_type_overviewÚ!get_identifier_args_for_signatureÚget_identifier_descriptionÚ!get_identifier_values_for_example)ÚWaiterResourceDocumenterc                       s”   e Zd Z‡ f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‡  ZS )!ÚResourceDocumenterc                    s>   t ƒ  |¡ || _|| _| j ¡ | _| j| jkrd| _d S d S )Nzservice-resource)ÚsuperÚ__init__Ú_botocore_sessionÚ_root_docs_pathÚ_resource_nameÚlowerÚ_resource_sub_pathÚ_service_name)ÚselfÚresourceÚbotocore_sessionÚroot_docs_path©Ú	__class__© úV/home/ubuntu/maya3_transcribe/venv/lib/python3.10/site-packages/boto3/docs/resource.pyr   &   s   
ÿzResourceDocumenter.__init__c                 C   sh   |   |¡ |  |¡ |  |¡ |  |¡ |  |¡ |  |¡ |  |¡ |  |¡ |  |¡ |  	|¡ d S )N)
Ú
_add_titleÚ_add_resource_noteÚ
_add_introÚ_add_identifiersÚ_add_attributesÚ_add_referencesÚ_add_actionsÚ_add_sub_resourcesÚ_add_collectionsÚ_add_waiters©r   Úsectionr    r    r!   Údocument_resource.   s   








z$ResourceDocumenter.document_resourcec                 C   s   |  d¡}|j | j¡ d S )NÚtitle)Úadd_new_sectionÚstyleÚh2r   ©r   r-   Útitle_sectionr    r    r!   r"   :   s   
zResourceDocumenter._add_titlec           
      C   s¬   g }| j jr| j jD ]}| |j¡ q
t|ƒ}| d¡}|jj| j› d|› dd | d¡}|  	|¡ | d¡}|  
||¡ | d¡}|  ||¡ | d¡}	|	j ¡  d S )	NÚstart_classú(ú))Ú
class_nameÚdescriptionÚexampleÚparamsÚ	end_class)Ú_resource_modelÚidentifiersÚappendÚnamer   r0   r1   Ústart_sphinx_py_classr8   Ú_add_descriptionÚ_add_exampleÚ_add_params_descriptionÚend_sphinx_py_class)
r   r-   Úidentifier_namesÚ
identifierÚ
class_argsr5   Údescription_sectionÚexample_sectionÚparam_sectionr<   r    r    r!   r$   >   s"   
ÿ




zResourceDocumenter._add_introc                 C   s&   t | jƒ}| d|› d| j› ¡ d S )NzA resource representing an ú )r   Ú_service_modelÚwriter   ©r   r-   Úofficial_service_namer    r    r!   rB   [   s   
ÿz#ResourceDocumenter._add_descriptionc              
   C   s˜   |j  ¡  |j  ¡  | d¡ |j  ¡  |j  ¡  | | j› d| j› d¡ |j  ¡  t|ƒ}| t| jƒ› d| j› d| j› d|› d¡ |j  ¡  d S )Núimport boto3ú = boto3.resource('ú')z = Ú.r6   r7   )	r1   Ústart_codeblockÚnew_linerN   r   r   r   r   Úend_codeblock)r   r-   rF   Úexample_valuesr    r    r!   rC   a   s   




ÿ
$ÿzResourceDocumenter._add_examplec                 C   sV   |D ]&}t | j|ƒ}| d|› d¡ |j ¡  | d|› d|› ¡ |j ¡  qd S )Nz:type z: stringz:param z: )r   r   rN   r1   rV   )r   r-   rF   Úidentifier_namer9   r    r    r!   rD   q   s   ÿ
ùz*ResourceDocumenter._add_params_descriptionc                 C   sR   |j  ¡  | d|› d¡ |j  ¡  |j  ¡  | j| D ]	}|j  |› ¡ qd S )Nz#These are the resource's available ú:)r1   rV   rN   ÚtoctreeÚ
member_mapÚtocitem)r   r-   Úresource_member_typeÚmemberr    r    r!   Ú_add_overview_of_member_type{   s   

ÿ

ÿz/ResourceDocumenter._add_overview_of_member_typec           	      C   s   | j jjj}| d¡}g }|r|| jd< t|dddd |D ]U}| |j¡ t	|jdd}| d¡}|j
 | jd	¡ | d
|j› ¡ | |j¡ |j|jd| j› did}t|| j|d tj | j| j› | j› ¡}| ||j¡ q|r~|  |d¡ d S d S )Nr>   ÚIdentifierszYIdentifiers are properties of a resource that are set upon instantiation of the resource.Úidentifiers_attributes_intro©r-   Úresource_typer9   Ú
intro_linkÚhtml©ÚtargetÚ
breadcrumbÚindexz / Identifier / Ú	qualifierrT   ©Úcontext)r-   Úresource_nameÚidentifier_model)Ú	_resourceÚmetaÚresource_modelr>   r0   r\   r   r?   r@   r   r1   ÚrefÚ_resource_class_namerN   Úadd_title_sectionr8   r   r   ÚosÚpathÚjoinr   r   r   Úwrite_to_filer`   )	r   r-   r>   Úmember_listrG   Úidentifier_docÚbreadcrumb_sectionÚidentifier_sectionÚidentifiers_dir_pathr    r    r!   r%   …   sH   

ù	
þýýÿz#ResourceDocumenter._add_identifiersc              	   C   sJ  | j jjjj}i }| j jjjr | | j jjj¡}| j jj |¡}| d¡}g }|r6t	|dddd || j
d< t|ƒD ]^}|| \}}| |¡ t|dd}	|	 d¡}
|
j | jd	¡ |
 d
|› ¡ |	 |¡ |	j|d| j› did}t|| j| j|| j jjjj|d tj | j| j› | j› ¡}|	 ||¡ q:|r£|  |d¡ d S d S )NÚ
attributesÚ
Attributesz”Attributes provide access to the properties of a resource. Attributes are lazy-loaded the first time one is accessed via the :py:meth:`load` method.rb   rc   rf   rg   ri   rj   z / Attribute / rk   rT   rl   )r-   Úservice_namern   Ú	attr_nameÚevent_emitterÚ
attr_model)rp   rq   ÚclientÚservice_modelrr   ÚshapeÚ	shape_forÚget_attributesr0   r   r\   Úsortedr?   r   r1   rs   rt   rN   ru   r8   r   r   r   Úeventsrv   rw   rx   r   r   ry   r`   )r   r-   r†   r   r‡   Úattribute_listr‚   Ú_Ú
attr_shapeÚattribute_docr|   Úattribute_sectionÚattributes_dir_pathr    r    r!   r&   ±   s`   
ÿ
ÿ
÷



þú
ýÿz"ResourceDocumenter._add_attributesc           	      C   sü   |  d¡}| jjjj}g }|rt|dddd || jd< |D ]S}| |j¡ t	|jdd}|  d¡}|j
 | jd	¡ | d
|j› ¡ | |j¡ |j |jd| j› did}t||d tj | j| j› | j› ¡}| ||j¡ q|r||  |d¡ d S d S )NÚ
referencesÚ
ReferenceszNReferences are related resource instances that have a belongs-to relationship.Úreferences_introrc   rf   rg   ri   rj   z / Reference / rk   rT   rl   )r-   Úreference_model)r0   rp   rq   rr   r’   r   r\   r?   r@   r   r1   rs   rt   rN   ru   r8   r   rv   rw   rx   r   r   r   ry   r`   )	r   r-   r’   Úreference_listÚ	referenceÚreference_docr|   Úreference_sectionÚreferences_dir_pathr    r    r!   r'   ê   sF   
ù
	
þþýÿz"ResourceDocumenter._add_referencesc                 C   óN   |  d¡}| jjjj}|r%t| j| jƒ}| j|_| |¡ |  	|d¡ d S d S )NÚactions)
r0   rp   rq   rr   rœ   r   r   r\   Údocument_actionsr`   )r   r-   rœ   Ú
documenterr    r    r!   r(     s   

üzResourceDocumenter._add_actionsc                 C   r›   )Nzsub-resources)
r0   rp   rq   rr   Úsubresourcesr   r   r\   Údocument_sub_resourcesr`   )r   r-   Úsub_resourcesrž   r    r    r!   r)     ó   
ÿ
úz%ResourceDocumenter._add_sub_resourcesc                 C   r›   )NÚcollections)
r0   rp   rq   rr   r£   r
   r   r\   Údocument_collectionsr`   )r   r-   r£   rž   r    r    r!   r*   (  r¢   z#ResourceDocumenter._add_collectionsc                 C   s^   |  d¡}| jjjj}|r-| j | j¡}t| j|| j	ƒ}| j
|_
| |¡ |  |d¡ d S d S )NÚwaiters)r0   rp   rq   rr   r¥   r   Úget_waiter_modelr   r   r   r\   Údocument_resource_waitersr`   )r   r-   r¥   Úservice_waiter_modelrž   r    r    r!   r+   3  s   
ÿ
ÿ
÷zResourceDocumenter._add_waitersc                 C   s,   |  d¡}|j ¡  | d¡ |j ¡  d S )Nzfeature-freezez¢Before using anything on this page, please refer to the resources :doc:`user guide <../../../../guide/resources>` for the most recent guidance on using resources.)r0   r1   Ú
start_noterN   Úend_noter,   r    r    r!   r#   A  s   

ÿz%ResourceDocumenter._add_resource_note)Ú__name__Ú
__module__Ú__qualname__r   r.   r"   r$   rB   rC   rD   r`   r%   r&   r'   r(   r)   r*   r+   r#   Ú__classcell__r    r    r   r!   r   %   s"    

,9*	r   c                   @   s0   e Zd Zedd„ ƒZdd„ Zdd„ Zdd„ Zd	S )
ÚServiceResourceDocumenterc                 C   s   | j › dS )Nz.ServiceResource)Ú_service_docs_name)r   r    r    r!   r8   M  s   z$ServiceResourceDocumenter.class_namec                 C   s   |  d¡}|j d¡ d S )Nr/   zService Resource)r0   r1   r2   r3   r    r    r!   r"   Q  s   
z$ServiceResourceDocumenter._add_titlec                 C   s   t | jƒ}| d|› ¡ d S )NzA resource representing )r   rM   rN   rO   r    r    r!   rB   U  s   
z*ServiceResourceDocumenter._add_descriptionc                 C   sZ   |j  ¡  |j  ¡  | d¡ |j  ¡  |j  ¡  | | j› d| j› d¡ |j  ¡  d S )NrQ   rR   rS   )r1   rU   rV   rN   r   rW   )r   r-   rF   r    r    r!   rC   Y  s   




ÿz&ServiceResourceDocumenter._add_exampleN)r«   r¬   r­   Úpropertyr8   r"   rB   rC   r    r    r    r!   r¯   L  s    
r¯   )rv   Úbotocorer   Úbotocore.docs.bcdoc.restdocr   Úbotocore.docs.utilsr   Úboto3.docs.actionr   Úboto3.docs.attrr   r   r   Úboto3.docs.baser	   Úboto3.docs.collectionr
   Úboto3.docs.subresourcer   Úboto3.docs.utilsr   r   r   r   Úboto3.docs.waiterr   r   r¯   r    r    r    r!   Ú<module>   s     )