B 劇cU+ã@s¤ddlmZddlmZddlmZddlmZmZm Z ddl m Z ddl m Z ddlmZddlmZmZmZmZdd lmZGd d „d e ƒZGd d „d eƒZdS)é)Ú xform_name)Ú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)ÚWaiterResourceDocumentercsŒeZdZ‡fdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Z‡ZS)ÚResourceDocumentercstƒ |¡||_dS)N)ÚsuperÚ__init__Ú_botocore_session)ÚselfÚresourceZbotocore_session)Ú __class__©ún/private/var/folders/8c/hx9_v10d5x38qmnzt13b7b8j1k3n5b/T/pip-target-x6xd5gna/lib/python/boto3/docs/resource.pyr#s zResourceDocumenter.__init__cCsr| |¡| |¡| d¡}| |¡| |¡| |¡| |¡| |¡| |¡|  |¡|  |¡dS)Nzmember-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ÚsectionZoverview_sectionrrrÚdocument_resource's          z$ResourceDocumenter.document_resourcecCs|j |j¡dS)N)ÚstyleÚh2Ú_resource_name)rr$rrrr4szResourceDocumenter._add_titlecCs’g}|jjr*x|jjD]}| |j¡qWt|ƒ}|jj|j›d|›dd| d¡}|  |¡| d¡}|  ||¡| d¡}|  ||¡dS)Nú(ú))Ú class_nameÚ descriptionZexampleÚparams) Z_resource_modelÚ identifiersÚappendÚnamer r&Zstart_sphinx_py_classr+rÚ_add_descriptionÚ _add_exampleÚ_add_params_description)rr$Úidentifier_namesÚ identifierZ class_argsZdescription_sectionZexample_sectionZ param_sectionrrrr7s     zResourceDocumenter._add_introcCs"t|jƒ}| d ||j¡¡dS)Nz A resource representing an {} {})rÚ_service_modelÚwriteÚformatr()rr$Úofficial_service_namerrrr1Ps z#ResourceDocumenter._add_descriptioncCsˆ|j ¡|j ¡| d¡|j ¡|j ¡| d |j|j¡¡|j ¡t|ƒ}| d t|jƒ|j|j|¡¡|j  ¡dS)Nz import boto3z{} = boto3.resource('{}')z{} = {}.{}({})) r&Ústart_codeblockÚnew_liner7r8Ú _service_namerrr(Ú end_codeblock)rr$r4Zexample_valuesrrrr2Xs"      zResourceDocumenter._add_examplecCsZxT|D]L}t|j|ƒ}| d|›d¡|j ¡| d|›d|›¡|j ¡qWdS)Nz:type z: stringz:param z: )r r(r7r&r;)rr$r4Zidentifier_namer,rrrr3os   z*ResourceDocumenter._add_params_descriptioncCs€xz|jD]p}|j ¡| d|›d¡|j ¡xD|j|D]6}|dkr`|j d|›d¡q>|j d|›d¡q>WqWdS)Nz#These are the resource's available ú:)Ú attributesÚ collectionsr.Ú referencesz :py:attr:`ú`z :py:meth:`z()`)Ú member_mapr&r;r7Zli)rr$Zresource_member_typeÚmemberrrrr#ys   z+ResourceDocumenter._add_overview_of_memberscCsr|jjjj}| d¡}g}|r8||jd<t|ddddx4|D],}| |j¡}| |j¡t ||j |dq>WdS)Nr.Z IdentifierszYIdentifiers are properties of a resource that are set upon instantiation of the resource.Úidentifiers_attributes_intro)r$Ú resource_typer,Ú intro_link)r$Ú resource_nameZidentifier_model) Ú _resourceÚmetaÚresource_modelr.rrCr r0r/rr()rr$r.Z member_listr5Zidentifier_sectionrrrr‹s"      z#ResourceDocumenter._add_identifiersc CsÄ|jjjjj}i}|jjjjr@| |jjjj¡}|jjj |¡}| d¡}g}|rlt |dddd||j d<xRt |ƒD]F}||\}}| |¡} |  |¡t | |j|j||jjjjj|dqvWdS)Nr?Z 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.rE)r$rFr,rG)r$Ú service_namerHÚ attr_nameZ event_emitterZ attr_model)rIrJÚclientÚ service_modelrKÚshapeZ shape_forÚget_attributesrr rCÚsortedr/rr<r(Úevents) rr$rOr?rPZattribute_listrMÚ_Z attr_shapeZattribute_sectionrrrr£s6        z"ResourceDocumenter._add_attributescCsn| d¡}|jjjj}g}|r8t|dddd||jd<x0|D](}| |j¡}| |j¡t ||dq>WdS)NrAZ ReferenceszNReferences are related resource instances that have a belongs-to relationship.Zreferences_intro)r$rFr,rG)r$Zreference_model) rrIrJrKrAr rCr0r/r)rr$rAZreference_listÚ referenceZreference_sectionrrrrÉs      z"ResourceDocumenter._add_referencescCs:| d¡}|jjjj}|r6t|jƒ}|j|_| |¡dS)NÚactions)rrIrJrKrVrrCZdocument_actions)rr$rVÚ documenterrrrrßs    zResourceDocumenter._add_actionscCs:| d¡}|jjjj}|r6t|jƒ}|j|_| |¡dS)Nz sub-resources)rrIrJrKZ subresourcesr rCZdocument_sub_resources)rr$Z sub_resourcesrWrrrr çs    z%ResourceDocumenter._add_sub_resourcescCs:| d¡}|jjjj}|r6t|jƒ}|j|_| |¡dS)Nr@)rrIrJrKr@r rCZdocument_collections)rr$r@rWrrrr!ïs    z#ResourceDocumenter._add_collectionscCsJ| d¡}|jjjj}|rF|j |j¡}t|j|ƒ}|j |_ |  |¡dS)NÚwaiters) rrIrJrKrXrZget_waiter_modelr<rrCZdocument_resource_waiters)rr$rXZservice_waiter_modelrWrrrr"÷s   zResourceDocumenter._add_waiters)Ú__name__Ú __module__Ú __qualname__rr%rrr1r2r3r#rrrrr r!r"Ú __classcell__rr)rrr"s   &rc@s0eZdZedd„ƒZdd„Zdd„Zdd„Zd S) ÚServiceResourceDocumentercCs |j›dS)Nz.ServiceResource)Z_service_docs_name)rrrrr+sz$ServiceResourceDocumenter.class_namecCs|j d¡dS)NzService Resource)r&r')rr$rrrr sz$ServiceResourceDocumenter._add_titlecCst|jƒ}| d|›¡dS)NzA resource representing )rr6r7)rr$r9rrrr1 s z*ServiceResourceDocumenter._add_descriptioncCsZ|j ¡|j ¡| d¡|j ¡|j ¡| |j›d|j›d¡|j ¡dS)Nz import boto3z = boto3.resource('z'))r&r:r;r7r<r=)rr$r4rrrr2s     z&ServiceResourceDocumenter._add_exampleN)rYrZr[Úpropertyr+rr1r2rrrrr]s r]N)ZbotocorerZbotocore.docs.utilsrZboto3.docs.actionrZboto3.docs.attrrrrZboto3.docs.baserZboto3.docs.collectionr Zboto3.docs.subresourcer Zboto3.docs.utilsr r r rZboto3.docs.waiterrrr]rrrrÚ s       d