
    DhU+                         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e      Z G d de      Zy)    )
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)WaiterResourceDocumenterc                   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                 2    t         |   |       || _        y N)super__init___botocore_session)selfresourcebotocore_session	__class__s      u/var/www/fastuser/data/www/generator.snapmosaic.io/flask_app/venv/lib/python3.12/site-packages/boto3/docs/resource.pyr   zResourceDocumenter.__init__#   s    "!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_title4   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_intro7   s    ++"22>> 9
 ''
89 77GH
++//*!J<q9 	, 	

 &55mD12 "11)</+;<  //9$$]4DEr   c                     t        | j                        }|j                  dj                  || j                               y )Nz A resource representing an {} {})r   _service_modelwriteformatr0   r   r*   official_service_names      r   r>   z#ResourceDocumenter._add_descriptionP   s8     9$:M:M N.55%t':':	
r   c                 r   |j                   j                          |j                   j                          |j                  d       |j                   j                          |j                   j                          |j                  dj	                  | j
                  | j
                               |j                   j                          t        |      }|j                  dj	                  t        | j                        | j
                  | j                  |             |j                   j                          y )Nimport boto3z{} = boto3.resource('{}')z{} = {}.{}({}))
r.   start_codeblocknew_linerI   rJ   _service_namer   r   r0   end_codeblock)r   r*   rA   example_valuess       r   r?   zResourceDocumenter._add_exampleX   s    %%' n%  )00""D$6$6	

 	 :;KL##4../""##		
 	##%r   c                     |D ]x  }t        | j                  |      }|j                  d| d       |j                  j	                          |j                  d| d|        |j                  j	                          z y )Nz:type z: stringz:param z: )r   r0   rI   r.   rP   )r   r*   rA   identifier_namer6   s        r   r@   z*ResourceDocumenter._add_params_descriptiono   sx    / 	%O4##_K MMF?"38<=MM""$MMGO#4B{mDEMM""$	%r   c                 f   | j                   D ]  }|j                  j                          |j                  d| d       |j                  j                          | j                   |   D ]E  }|dv r |j                  j	                  d| d       '|j                  j	                  d| d       G  y )Nz#These are the resource's available :)
attributescollectionsr:   
referencesz
:py:attr:``z
:py:meth:`z()`)
member_mapr.   rP   rI   li)r   r*   resource_member_typemembers       r   r)   z+ResourceDocumenter._add_overview_of_membersy   s    $(OO 	? MM""$MM67K6LAN MM""$//*>? 	?' ,  MM$$z&%;<MM$$z&%=>	?	?r   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:   IdentifierszYIdentifiers are properties of a resource that are set upon instantiation 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*&+> : & 	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 )NrX   
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.rb   rc   )r*   service_namerf   	attr_nameevent_emitter
attr_model)rh   ri   clientservice_modelrj   shape	shape_forget_attributesr!   r   r\   sortedr;   r   rQ   r0   events)
r   r*   rt   rX   ru   attribute_listrp   _
attr_shapeattribute_sections
             r   r#   z"ResourceDocumenter._add_attributes   sT   ++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 )NrZ   
ReferenceszNReferences are related resource instances that have a belongs-to relationship.references_introrc   )r*   reference_model)
r!   rh   ri   rj   rZ   r   r\   r<   r;   r   )r   r*   rZ   reference_list	referencereference_sections         r   r$   z"ResourceDocumenter._add_references   s    )),7^^((77BB
&*1 . -;DOOL)# 	I ' 7 7	 G!!)..1)9	r   c                     |j                  d      }| j                  j                  j                  j                  }|r8t        | j                        }| j                  |_        |j                  |       y y )Nactions)r!   rh   ri   rj   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!   rh   ri   rj   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 )NrY   )r!   rh   ri   rj   rY   r
   r\   document_collections)r   r*   rY   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!   rh   ri   rj   r   r   get_waiter_modelrQ   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""$  2 4J %)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   "   sP    28.F2
&.%?$0$L,175:r   r   c                   .    e Zd Zed        Zd Zd Zd Zy)ServiceResourceDocumenterc                      | j                    dS )Nz.ServiceResource)_service_docs_name)r   s    r   r5   z$ServiceResourceDocumenter.class_name  s    ))**:;;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|        y )NzA resource representing )r   rH   rI   rK   s      r   r>   z*ServiceResourceDocumenter._add_description  s)     9$:M:M N01F0GHIr   c                    |j                   j                          |j                   j                          |j                  d       |j                   j                          |j                   j                          |j                  | j                   d| j                   d       |j                   j                          y )NrN   z = boto3.resource('z'))r.   rO   rP   rI   rQ   rR   )r   r*   rA   s      r   r?   z&ServiceResourceDocumenter._add_example  s    %%' n%  !!""6t7I7I6J#N	
 	##%r   N)r   r   r   propertyr5   r   r>   r?    r   r   r   r     s$    < <-J	&r   r   N)botocorer   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   <module>r      sP      9 . 
 + 6 8  7`: `:F& 2 &r   