
    Dh^                         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y)    N)PaginationError)PageIterator	Paginator)merge_dictsset_value_from_jmespathc                   *    e Zd Zd Zd Zd Zd Zd Zy)AioPageIteratorc                 "    | j                         S N	__anext__selfs    v/var/www/fastuser/data/www/generator.snapmosaic.io/flask_app/venv/lib/python3.12/site-packages/aiobotocore/paginate.py	__aiter__zAioPageIterator.__aiter__	       ~~    c                  K   | j                   }d }| j                  D ci c]  }|d  }}| j                  | j                         d   }d}d}| j                  d   }d}| j                  |       	 | j                  |       d {   }	| j                  |	      }
|r3| j                  | j                  |
||      }d}| j                  |
       nd}|j                  |
      }|g }t        |      }d}| j                  ||z   | j                  z
  }|dkD  r| j                  |
||||       |	 y |	 ||z  }| j                  |
      }t        d |j!                         D              ry | j                  || j                  k(  r|| _        y |||k(  rd| }t%        |      | j'                  ||       |}Nc c}w 7 ?w)Nr   TFc              3   $   K   | ]  }|d u  
 y wr    ).0ts     r   	<genexpr>z,AioPageIterator.__anext__.<locals>.<genexpr>G   s     >QqDy>s   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key
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#    "+/+<+<=Cc4i=
=+
 335a8J!--a0$$^4!//??H228<F ''3*.*D*D 24G+' !&55f=
 '(#188@'#% #&'7#8 O*"66H   "''&#' 33!11&9
>**;*;*=>>OO/#t6 )3D%'3+z9"",/  *'::..~zJ&0#}  > @s   G
F?AGGD?Gc                   K   t        j                  |      }| 2 3 d {   }|j                  |      }t        |t              r|D ]  }| 	 7| =7 86 y wr   )jmespathcompiler%   
isinstancelist)r   
expressioncompiledpageresultselements         r   r%   zAioPageIterator.search]   s`     ##J/ 	 	$ood+G'4(& "G!M" 	$s%   AAAA5AAAc                     t        j                  | t        | j                              }t	        || j                        D cg c]  \  }}t        ||       c}}S c c}}w r   )aioitertoolsteer&   r   zipResultKeyIterator)r   teed_resultsi
result_keys       r   result_key_itersz AioPageIterator.result_key_itersg   sY    #''c$2B2B.CD "%\43C3C!D
: a,
 	
 
s   Ac                 ,  K   i }| 2 3 d {   }|}t        |t              rt        |      dk(  r|d   }| j                  D ]  }|j	                  |      }||j	                  |      }|t        ||j                  |       Bt        |t              r|j                  |       dt        |t        t        t        f      st        ||j                  ||z           7 6 t        || j                         | j                  | j                  |d<   |S w)N      	NextToken)r>   tupler&   r   r%   r   r@   r?   extendintfloatstrr   non_aggregate_partr,   )r   complete_resultr6   rB   result_expressionresult_valueexisting_values          r   build_full_resultz!AioPageIterator.build_full_resultn   s&    " )	 )	(D (E*s8}/A{
 &*%5%5 !  177='!2!9!9/!J!)+')44$
 lD1")),7sE3.?@+')44&51)	dT 	OT%<%<=(+/+<+<OK(s,   DC CC B1DDC  4DN)__name__
__module____qualname__r   r   r%   rM   r\   r   r   r   r	   r	      s     O1b
/r   r	   c                       e Zd ZeZy)AioPaginatorN)r]   r^   r_   r	   PAGE_ITERATOR_CLSr   r   r   ra   ra      s    'r   ra   c                   "    e Zd ZdZd Zd Zd Zy)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                      || _         || _        y r   )_pages_iteratorrL   )r   pages_iteratorrL   s      r   __init__zResultKeyIterator.__init__   s    -$r   c                 "    | j                         S r   r   r   s    r   r   zResultKeyIterator.__aiter__   r   r   c                   K   | j                   2 3 d {   }| j                  j                  |      }|g }|D ]  }| 	 57 06 y wr   )re   rL   r%   )r   rB   rC   results       r   r   zResultKeyIterator.__anext__   sV     .. 	 	$oo,,T2G! 		.s%   AAAA-AAAN)r]   r^   r_   __doc__rg   r   r   r   r   r   rI   rI      s    % r   rI   )rF   r<   botocore.exceptionsr   botocore.paginater   r   botocore.utilsr   r   r	   ra   rI   r   r   r   <module>ro      s9      / 5 ?Ul Up(9 ( r   