File: //lib/python3/dist-packages/boto3/resources/__pycache__/action.cpython-312.pyc
�
    ��e�%  �                   ��   � d dl Z d dlmZ d dlmZ d dlmZ ddlmZ ddl	m
Z
 ddlmZm
Z
  e j                  e�      Z G d	� d
�      Z G d� de�      Z G d
� d�      Z G d� d�      Zy)�    N)�
xform_name)�ActionDocstring)�inject_attribute�   )�Action)�create_request_parameters)�
RawHandler�ResourceHandlerc                   �   � e Zd ZdZdd�Zd� Zy)�
ServiceActiona�  
    A class representing a callable action on a resource, for example
    ``sqs.get_queue_by_name(...)`` or ``s3.Bucket('foo').delete()``.
    The action may construct parameters from existing resource identifiers
    and may return either a raw response or a new resource instance.
    :type action_model: :py:class`~boto3.resources.model.Action`
    :param action_model: The action model.
    :type factory: ResourceFactory
    :param factory: The factory that created the resource class to which
                    this action is attached.
    :type service_context: :py:class:`~boto3.utils.ServiceContext`
    :param service_context: Context about the AWS service
    Nc                 ��   � || _         |j                  }|r4t        |j                  ||||j                  j
                  ��      | _        y t        |j                  �      | _        y )N)�search_path�factory�resource_model�service_context�operation_name)�
_action_model�resourcer
   �path�request�	operation�_response_handlerr	   )�self�action_modelr   r   �resource_response_models        �8/usr/lib/python3/dist-packages/boto3/resources/action.py�__init__zServiceAction.__init__.   s^   � �)��� #/�"7�"7��"�%4�3�8�8��6� /�+�3�3�=�=�&�D�"� &0��0A�0A�%B�D�"�    c                 �  � t        | j                  j                  j                  �      }t	        || j                  j                  �      }|j                  |�       t        j                  d|j                  j                  ||�        t        |j                  j                  |�      |i |��}t        j                  d|�       | j                  |||�      S )a�  
        Perform the action's request operation after building operation
        parameters and build any defined resources from the response.
        :type parent: :py:class:`~boto3.resources.base.ServiceResource`
        :param parent: The resource instance to which this action is attached.
        :rtype: dict or ServiceResource or list(ServiceResource)
        :return: The response, either as a raw dict or resource instance(s).
        �Calling %s:%s with %r�Response: %r)
r   r   r   r   r   �update�logger�debug�meta�service_name�getattr�clientr   )r   �parent�args�kwargsr   �params�responses          r   �__call__zServiceAction.__call__?   s�   � � $�D�$6�$6�$>�$>�$H�$H�I��
 +�6�4�3E�3E�3M�3M�N���
�
�f�����#��K�K�$�$���		
� ?�7�6�;�;�-�-�~�>��O��O�����^�X�.��%�%�f�f�h�?�?r   )NN��__name__�
__module__�__qualname__�__doc__r   r.   � r   r   r   r      s   � ��"C�"@r   r   c                   �   � e Zd ZdZd� Zy)�BatchActiona�  
    An action which operates on a batch of items in a collection, typically
    a single page of results from the collection's underlying service
    operation call. For example, this allows you to delete up to 999
    S3 objects in a single operation rather than calling ``.delete()`` on
    each one individually.
    :type action_model: :py:class`~boto3.resources.model.Action`
    :param action_model: The action model.
    :type factory: ResourceFactory
    :param factory: The factory that created the resource class to which
                    this action is attached.
    :type service_context: :py:class:`~boto3.utils.ServiceContext`
    :param service_context: Context about the AWS service
    c                 �N  � d}d}g }t        | j                  j                  j                  �      }|j	                  �       D ]�  }i }	t        |�      D ]X  \  }
}|�|j                  j                  }|�|j                  j                  }t        || j                  j                  |	|
��       �Z |	s |S |	j                  |�       t        j                  d|||	�        t        ||�      |i |	��}t        j                  d|�       |j                  | j                  ||	|�      �       �� |S )a�  
        Perform the batch action's operation on every page of results
        from the collection.
        :type parent:
            :py:class:`~boto3.resources.collection.ResourceCollection`
        :param parent: The collection iterator to which this action
                       is attached.
        :rtype: list(dict)
        :return: A list of low-level response dicts from each call.
        N)r,   �indexr    r!   )r   r   r   r   �pages�	enumerater%   r&