o
    ܀c)                     @   s   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 G dd deZ		dd
dZ		dddZ		dddZdS )    )
xform_name)get_instance_public_methods)DocumentedShape)BaseDocumenter)%document_model_driven_resource_method)add_resource_type_overviewget_resource_ignore_paramsc                   @   s   e Zd Zdd Zdd ZdS )CollectionDocumenterc                 C   s\   | j jjj}g }t|dddd || jd< |D ]}||j}||j | 	|| qd S )NCollectionszUCollections provide an interface to iterate over and manipulate groups of resources. guide_collections)sectionresource_typedescription
intro_linkcollections)
	_resourcemetaresource_modelr   r   
member_mapadd_new_sectionnameappend_document_collection)selfr   r   collections_list
collectioncollection_section r   @/usr/local/lib/python3.10/dist-packages/boto3/docs/collection.pydocument_collections   s   
	z)CollectionDocumenter.document_collectionsc              	   C   s   t t| j|j}t|| i }|jD ]}|||j< qt|D ]8}||}||v rBt|| j	| jj
jj
j|| || jj
jj
jd qt|| j	|| jj
jj
j|| jj
jj
jd qd S )N)r   resource_nameevent_emitterbatch_action_modelcollection_modelservice_model)r   r    action_namer!   r#   r$   )r   getattrr   r   document_collection_objectbatch_actionssortedr   document_batch_action_resource_namer   clienteventsr$   document_collection_method)r   r   r   methodsr(   batch_actionmethodmethod_sectionr   r   r   r   ,   s6   


	z)CollectionDocumenter._document_collectionN)__name__
__module____qualname__r   r   r   r   r   r   r	      s    r	   Tc                 C   sB   |r	| j |j | d|jj d | d|jj d dS )a
  Documents a collection resource object

    :param section: The section to write to

    :param collection_model: The model of the collection

    :param include_signature: Whether or not to include the signature.
        It is useful for generating docstrings.
    zA collection of z resources.zA z Collection will include all resources by default, and extreme caution should be taken when performing actions on all resources.N)stylestart_sphinx_py_attrr   include_doc_stringresourcetype)r   r#   include_signaturer   r   r   r'   K   s   r'   c                 C   s|   | |jj}t|jj}d}	|jrt|jj}	t|}
|j|kr#|}
d	|	|
|j
|j
}t| |j
|||j||||d	 dS )ai  Documents a collection's batch action

    :param section: The section to write to

    :param resource_name: The name of the resource

    :param action_name: The name of collection action. Currently only
        can be all, filter, limit, or page_size

    :param event_emitter: The event emitter to use to emit events

    :param batch_action_model: The model of the batch action

    :param collection_model: The model of the collection

    :param service_model: The model of the service

    :param include_signature: Whether or not to include the signature.
        It is useful for generating docstrings.
    responsez{} = {}.{}.{})	r   method_nameoperation_modelr!   method_descriptionexample_prefixexclude_inputresource_action_modelr;   N)r>   request	operationr   paramsr9   r   r:   service_nameformatr   r   documentation)r   r    r!   r"   r$   r#   r;   r>   ignore_paramsexample_return_valueexample_resource_namer@   r   r   r   r*   c   s:   

r*   c              
   C   sF  | |jj}g }|jr|jj}t|}	|j|kr|}	d|jj dd	t|jj|	|j
|dd|jj d|jj dd	t|jj|	|j
t|jjdd|jj dd		t|jj|	|j
td
dddg|dd|jj dd	t|jj|	|j
td
dddg|dd}
||
v r|
| }td| |||||d| dS dS )a#  Documents a collection method

    :param section: The section to write to

    :param resource_name: The name of the resource

    :param action_name: The name of collection action. Currently only
        can be all, filter, limit, or page_size

    :param event_emitter: The event emitter to use to emit events

    :param collection_model: The model of the collection

    :param service_model: The model of the service

    :param include_signature: Whether or not to include the signature.
        It is useful for generating docstrings.
    zCreates an iterable of all z resources in the collection.z{}_iterator = {}.{}.all)r?   r@   rA   zD resources in the collection filtered by kwargs passed to method. A z collection will include all resources by default if no filters are provided, and extreme caution should be taken when performing actions on all resources.z{}_iterator = {}.{}.filterz0Creates an iterable up to a specified amount of z{}_iterator = {}.{}.limitcountintegerz5The limit to the number of resources in the iterable.)r   	type_namerH   )r?   r@   include_inputrA   zs resources in the collection, but limits the number of items returned by each service call by the specified amount.z{}_iterator = {}.{}.page_sizez1The number of items returned by each service call)allfilterlimit	page_size)r   r=   r>   r!   rB   r;   Nr   )r>   rC   rD   input_shapemembersr   rF   r9   r:   rG   r   r   rE   r   r   )r   r    r%   r!   r#   r$   r;   r>   underlying_operation_membersrK   custom_action_info_dictaction_infor   r   r   r.      s   





	L
r.   N)T)botocorer   botocore.docs.methodr   botocore.docs.utilsr   boto3.docs.baser   boto3.docs.methodr   boto3.docs.utilsr   r   r	   r'   r*   r.   r   r   r   r   <module>   s   3

E