
    *                         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 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  G d de      Z G d de      Zy)    )
xform_name)get_official_service_name)BaseDocumenter)ActionDocumenter)WaiterResourceDocumenter)CollectionDocumenter)SubResourceDocumenter)document_attribute)document_identifier)document_reference)!get_identifier_args_for_signature)!get_identifier_values_for_example)get_identifier_description)add_resource_type_overviewc                   r     e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Z xZS )ResourceDocumenterc                 :    t         t        |   |       || _        y N)superr   __init___botocore_session)selfresourcebotocore_session	__class__s      &lib/third_party/boto3/docs/resource.pyr   zResourceDocumenter.__init__   s     $0:!1    c                 z   | j                  |       | j                  |       |j                  d      }| j                  |       | j	                  |       | j                  |       | j                  |       | j                  |       | j                  |       | j                  |       | j                  |       y )Nzmember-overview)
_add_title
_add_introadd_new_section_add_identifiers_add_attributes_add_references_add_actions_add_sub_resources_add_collections_add_waiters_add_overview_of_members)r   sectionoverview_sections      r   document_resourcez$ResourceDocumenter.document_resource#   s      "223DEg&W%W%'"(g&'"%%&67r   c                 N    |j                   j                  | j                         y r   )styleh2_resource_namer   r*   s     r   r   zResourceDocumenter._add_title0   s    ,,-r   c                    g }| j                   j                  r6| j                   j                  D ]  }|j                  |j                          t	        |      }|j
                  j                  | j                  d|d       |j                  d      }| j                  |       |j                  d      }| j                  ||       |j                  d      }| j                  ||       y )N())
class_namedescriptionexampleparams)_resource_modelidentifiersappendnamer   r.   start_sphinx_py_classr5   r!   _add_description_add_example_add_params_description)r   r*   identifier_names
identifier
class_argsdescription_sectionexample_sectionparam_sections           r   r    zResourceDocumenter._add_intro3   s    ++"22>>
 ''
8 ? 77GH
++#'??J? 	, 	A &55mD12 "11)</+;<  //9$$]4DEr   c                 p    t        | j                        }|j                  d|d| j                         y )NzA resource representing an  )r   _service_modelwriter0   r   r*   official_service_names      r   r>   z#ResourceDocumenter._add_descriptionK   s2     9!!%t':':<	=r   c           
      R   |j                   j                          |j                   j                          |j                  d       |j                   j                          |j                   j                          |j                  | j                  d| j                  d       |j                   j                          t        |      }|j                  t        | j                        d| j                  d| j                  d|d       |j                   j                          y )Nimport boto3 = boto3.resource('')z = .r3   r4   )	r.   start_codeblocknew_linerJ   _service_namer   r   r0   end_codeblock)r   r*   rA   example_valuess       r   r?   zResourceDocumenter._add_exampleR   s    %%' n%  ""D$6$68	
 	 :;KL4../1C1C##^5	6 	##%r   c                     |D ]w  }t        | j                  |      }|j                  d|z         |j                  j	                          |j                  d|d|       |j                  j	                          y y )Nz:type %s: stringz:param z: )r   r0   rJ   r.   rS   )r   r*   rA   identifier_namer6   s        r   r@   z*ResourceDocumenter._add_params_descriptiond   si    /O4##_6KMM,>?MM""$MM. /MM""$  0r   c                 `   | j                   D ]  }|j                  j                          |j                  d|z         |j                  j                          | j                   |   D ]C  }|dv r|j                  j	                  d|z         &|j                  j	                  d|z         E  y )Nz&These are the resource's available %s:)r:   
attributes
referencescollectionsz:py:attr:`%s`z:py:meth:`%s()`)
member_mapr.   rS   rJ   li)r   r*   resource_member_typemembers       r   r)   z+ResourceDocumenter._add_overview_of_membersn   s    $(OO MM""$MMC$& 'MM""$//*>?' ,I IMM$$_v%=>MM$$%6%?@ @ %4r   c                 h   | j                   j                  j                  j                  }|j	                  d      }g }|r|| j
                  d<   t        |ddd       |D ]P  }|j	                  |j                        }|j                  |j                         t        || j                  |       R y )Nr:   IdentifierszXIdentifiers are properties of a resource that are set upon instantation of the resource.identifiers_attributes_intror*   resource_typer6   
intro_link)r*   resource_nameidentifier_model)	_resourcemetaresource_modelr:   r!   r]   r   r<   r;   r   r0   )r   r*   r:   member_listrB   identifier_sections         r   r"   z#ResourceDocumenter._add_identifiers{   s    nn))88DD))-8-8DOOM*&+=9; &J!(!8!8!Iz/*"11!+ &r   c           	         | j                   j                  j                  j                  j                  }i }| j                   j                  j                  j
                  rh|j                  | j                   j                  j                  j
                        }| j                   j                  j                  j                  |      }|j                  d      }g }|rt        |ddd       || j                  d<   t        |      D ]  }||   \  }}|j                  |      }	|j                  |       t        |	| j                  | j                  || j                   j                  j                  j                  j                   |        y )NrZ   
AttributeszAttributes provide access to the properties of a resource. Attributes are lazy-loaded the first time one is accessed via the :py:meth:`load` method.rc   rd   )r*   service_namerg   	attr_nameevent_emitter
attr_model)ri   rj   clientservice_modelrk   shape	shape_forget_attributesr!   r   r]   sortedr;   r
   rT   r0   events)
r   r*   ru   rZ   rv   attribute_listrq   _
attr_shapeattribute_sections
             r   r#   z"ResourceDocumenter._add_attributes   sK   ++2277EE
>>--33!++##2288:E,,;;JJJ)),7&*/ :; -;DOOL)
+I&y1MAz ' 7 7	 B!!),)!//"11#"nn1188==DD%	 ,r   c                 R   |j                  d      }| j                  j                  j                  j                  }g }|rt        |ddd       || j                  d<   |D ]E  }|j                  |j                        }|j                  |j                         t        ||       G y )Nr[   
ReferenceszNReferences are related resource instances that have a belongs-to relationship.references_intrord   )r*   reference_model)
r!   ri   rj   rk   r[   r   r]   r<   r;   r   )r   r*   r[   reference_list	referencereference_sections         r   r$   z"ResourceDocumenter._add_references   s    )),7^^((77BB
&*1-/ -;DOOL)#I ' 7 7	 G!!)..1) ) $r   c                     |j                  d      }| j                  j                  j                  j                  }|r8t        | j                        }| j                  |_        |j                  |       y y )Nactions)r!   ri   rj   rk   r   r   r]   document_actions)r   r*   r   
documenters       r   r%   zResourceDocumenter._add_actions   s]    )))4..%%44<<)$..9J$(OOJ!''0 r   c                     |j                  d      }| j                  j                  j                  j                  }|r8t        | j                        }| j                  |_        |j                  |       y y )Nzsub-resources)r!   ri   rj   rk   subresourcesr	   r]   document_sub_resources)r   r*   sub_resourcesr   s       r   r&   z%ResourceDocumenter._add_sub_resources   s]    ))/:++::GG.t~~>J$(OOJ!--g6 r   c                     |j                  d      }| j                  j                  j                  j                  }|r8t        | j                        }| j                  |_        |j                  |       y y )Nr\   )r!   ri   rj   rk   r\   r   r]   document_collections)r   r*   r\   r   s       r   r'   z#ResourceDocumenter._add_collections   s]    ))-8nn))88DD-dnn=J$(OOJ!++G4 r   c                 :   |j                  d      }| j                  j                  j                  j                  }|r^| j
                  j                  | j                        }t        | j                  |      }| j                  |_	        |j                  |       y y )Nwaiters)r!   ri   rj   rk   r   r   get_waiter_modelrT   r   r]   document_resource_waiters)r   r*   r   service_waiter_modelr   s        r   r(   zResourceDocumenter._add_waiters   s    )))4..%%44<<#'#9#9#J#J""$$ 1 46J$(OOJ!009 r   )__name__
__module____qualname__r   r,   r   r    r>   r?   r@   r)   r"   r#   r$   r%   r&   r'   r(   __classcell__)r   s   @r   r   r      sQ    28.F0=&$%A, D*175	:r   r   c                   .    e Zd Zed        Zd Zd Zd Zy)ServiceResourceDocumenterc                      d| j                   z  S )Nz%s.ServiceResource)_service_docs_name)r   s    r   r5   z$ServiceResourceDocumenter.class_name   s    #d&=&===r   c                 :    |j                   j                  d       y )NzService Resource)r.   r/   r1   s     r   r   z$ServiceResourceDocumenter._add_title   s    +,r   c                 V    t        | j                        }|j                  d|z         y )NzA resource representing %s)r   rI   rJ   rK   s      r   r>   z*ServiceResourceDocumenter._add_description   s,     9!!(+@@	Br   c                    |j                   j                          |j                   j                          |j                  d       |j                   j                          |j                   j                          |j                  | j                  d| j                  d       |j                   j                          y )NrN   rO   rP   )r.   rR   rS   rJ   rT   rU   )r   r*   rA   s      r   r?   z&ServiceResourceDocumenter._add_example   s    %%' n%  ""D$6$68	9 	##%r   N)r   r   r   propertyr5   r   r>   r?    r   r   r   r      s$    > >-B	&r   r   N)botocorer   botocore.docs.utilsr   boto3.docs.baser   boto3.docs.actionr   boto3.docs.waiterr   boto3.docs.collectionr   boto3.docs.subresourcer	   boto3.docs.attrr
   r   r   boto3.docs.utilsr   r   r   r   r   r   r   r   r   <module>r      sM      9 * . 6 6 8 . / . > > 7 7K: K:\& 2 &r   