
    pge^                         d dl Z d dlZd dlmZ d dlmZmZ d dlmZm	Z	  G d de          Z
 G d de          Z G d	 d
          ZdS )    N)PaginationError)PageIterator	Paginator)merge_dictsset_value_from_jmespathc                   ,    e Zd Zd Zd Zd Zd Zd ZdS )AioPageIteratorc                 *    |                                  S N	__anext__selfs    4lib/python3.11/site-packages/aiobotocore/paginate.py	__aiter__zAioPageIterator.__aiter__	       ~~    c                  K   | j         }d }d | j        D             }| j        |                                 d         }d}d}| j        d         }d}|                     |           	 |                     |           d {V }|                     |          }	|r6| j        |                     |	||          }d}| 	                    |	           nd}|
                    |	          }
|
g }
t          |
          }d}| j        ||z   | j        z
  }|dk    r |                     |	||||           |W V  d S |W V  ||z  }|                     |	          }t          d |                                D                       rd S | j        || j        k    r	|| _        d S |||k    rd| }t%          |          |                     ||           |}l)Nc                     i | ]}|d S r    ).0keys     r   
<dictcomp>z-AioPageIterator.__anext__.<locals>.<dictcomp>   s    ===Cc4===r   r   TFc              3      K   | ]}|d u V  	d S r   r   )r   ts     r   	<genexpr>z,AioPageIterator.__anext__.<locals>.<genexpr>G   s&      >>QqDy>>>>>>r   z(The same next token was received twice: )message)
_op_kwargs_input_token_starting_token_parse_starting_tokenresult_keys_inject_starting_params_make_request_extract_parsed_response_handle_first_request _record_non_aggregate_key_valuessearchlen
_max_items_truncate_response_get_next_tokenallvaluesresume_tokenr   _inject_token_into_kwargs)r   current_kwargsprevious_next_token
next_tokentotal_itemsfirst_requestprimary_result_keystarting_truncationresponseparsedcurrent_responsenum_current_responsetruncate_amountr   s                 r   r   zAioPageIterator.__anext__   s     "==4+<===
+
 3355a8J!-a0$$^444>	1!//????????H228<<F ( '3*.*D*D 24G+ +' !&55f====
 '(#188@@'#% #&'7#8#8 O*"66H   ""''&#'   33!11&99
>>**;*;*=*=>>>>> EO/#t66 )3D%E'3+z99/",/ /  *'::::..~zJJJ&0#}>	1r   c                   K   t          j        |          }| 2 3 d {V }|                    |          }t          |t                    r|D ]}|W V  <|W V  B6 d S r   )jmespathcompiler(   
isinstancelist)r   
expressioncompiledpageresultselements         r   r(   zAioPageIterator.search]   s      #J// 	 	 	 	 	 	 	$ood++G'4(( & " "G!MMMMM"  $$s   Ac                     t          j        | t          | j                            }d t	          || j                  D             S )Nc                 4    g | ]\  }}t          ||          S r   )ResultKeyIterator)r   i
result_keys      r   
<listcomp>z4AioPageIterator.result_key_iters.<locals>.<listcomp>i   s6     
 
 
: a,,
 
 
r   )aioitertoolsteer)   r"   zip)r   teed_resultss     r   result_key_itersz AioPageIterator.result_key_itersg   sM    #'c$2B.C.CDD
 
!$\43C!D!D
 
 
 	
r   c                 @  K   i }| 2 3 d {V }|}t          |t                    rt          |          dk    r|d         }| j        D ]}|                    |          }||                    |          }|t          ||j        |           Ht          |t                    r|                    |           st          |t          t          t          f          rt          ||j        ||z              6 t          || j                   | j        
| j        |d<   |S )N      	NextToken)r@   tupler)   r"   r(   r   rB   rA   extendintfloatstrr   non_aggregate_partr/   )r   complete_resultr8   rD   result_expressionresult_valueexisting_values          r   build_full_resultz!AioPageIterator.build_full_resultn   sv     " )	 )	 )	 )	 )	 )	 )	(D (E** #s8}}/A/A{
 &*%5  !  177=='!2!9!9/!J!J!)+')4$  
 lD11 ")),7777sE3.?@@ +')4&5  1 #T 	OT%<===(+/+<OK(s   C7N)__name__
__module____qualname__r   r   r(   rQ   r`   r   r   r   r	   r	      sc             O1 O1 O1b  
 
 
/ / / / /r   r	   c                       e Zd ZeZdS )AioPaginatorN)ra   rb   rc   r	   PAGE_ITERATOR_CLSr   r   r   re   re      s        'r   re   c                   $    e Zd ZdZd Zd Zd ZdS )rI   a  Iterates over the results of paginated responses.

    Each iterator is associated with a single result key.
    Iterating over this object will give you each element in
    the result key list.

    :param pages_iterator: An iterator that will give you
        pages of results (a ``PageIterator`` class).
    :param result_key: The JMESPath expression representing
        the result key.

    c                 "    || _         || _        d S r   )_pages_iteratorrK   )r   pages_iteratorrK   s      r   __init__zResultKeyIterator.__init__   s    -$r   c                 *    |                                  S r   r   r   s    r   r   zResultKeyIterator.__aiter__   r   r   c                z   K   | j         2 3 d {V }| j                            |          }|g }|D ]}|W V  06 d S r   )ri   rK   r(   )r   rD   rE   results       r   r   zResultKeyIterator.__anext__   s|      . 	 	 	 	 	 	 	$o,,T22G!  	 /..s   :N)ra   rb   rc   __doc__rk   r   r   r   r   r   rI   rI      sK         % % %         r   rI   )rM   r>   botocore.exceptionsr   botocore.paginater   r   botocore.utilsr   r   r	   re   rI   r   r   r   <module>rs      s         / / / / / / 5 5 5 5 5 5 5 5 ? ? ? ? ? ? ? ?U U U U Ul U U Up( ( ( ( (9 ( ( (         r   