§
    7xÅj=+  ã                   ó  — d dl Z d dlZd dl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  e j        e¦  «        Z G d„ de¦  «        Z G d„ d	e¦  «        Z G d
„ de¦  «        Zd„ Z G d„ d¦  «        Z G d„ d¦  «        Z G d„ d¦  «        ZdS )é    N)Ú
xform_name)ÚBotoCoreErrorÚConnectionErrorÚHTTPClientError)ÚOperationNotFoundError)ÚCachedPropertyc                   ó   — e Zd ZdS )ÚEndpointDiscoveryExceptionN)Ú__name__Ú
__module__Ú__qualname__© ó    úCC:\Projects\Historical\venv\Lib\site-packages\botocore/discovery.pyr
   r
      s   € € € € € Ø€Dr   r
   c                   ó   — e Zd ZdZdZdS )ÚEndpointDiscoveryRequiredzBEndpoint Discovery is disabled but is required for this operation.zAEndpoint Discovery is not enabled but this operation requires it.N©r   r   r   Ú__doc__Úfmtr   r   r   r   r      s   € € € € € ØLÐLà
M€C€C€Cr   r   c                   ó   — e Zd ZdZdZdS )ÚEndpointDiscoveryRefreshFailedz=Endpoint Discovery failed to the refresh the known endpoints.z<Endpoint Discovery failed to refresh the required endpoints.Nr   r   r   r   r   r   #   s   € € € € € ØGÐGà
H€C€C€Cr   r   c                 ób   — | j         }|r#|                     d¦  «        rt          ¦   «         ‚d S d S )NÚrequired)Úendpoint_discoveryÚgetr   )ÚmodelÚkwargsr   s      r   Ú,block_endpoint_discovery_required_operationsr   )   sI   € ØÔ1ÐØð *Ð0×4Ò4°ZÑ@Ô@ð *Ý'Ñ)Ô)Ð)ð*ð *ð *ð *r   c                   óZ   — e Zd Zd„ Zed„ ¦   «         Zed„ ¦   «         Zd„ Zd„ Zd„ Z	d	d„Z
dS )
ÚEndpointDiscoveryModelc                 ó   — || _         d S ©N)Ú_service_model)ÚselfÚservice_models     r   Ú__init__zEndpointDiscoveryModel.__init__0   s   € Ø+ˆÔÐÐr   c                 óB   — | j         j        }t          |j        ¦  «        S r"   )r#   Úendpoint_discovery_operationr   Úname)r$   Údiscovery_operations     r   Údiscovery_operation_namez/EndpointDiscoveryModel.discovery_operation_name3   s    € à"Ô1ÔNÐÝÐ-Ô2Ñ3Ô3Ð3r   c                 ó†   — | j         j        }g }|j        r+t          |j        j                             ¦   «         ¦  «        }|S r"   )r#   r(   Úinput_shapeÚlistÚmembersÚkeys)r$   r*   r0   s      r   Údiscovery_operation_keysz/EndpointDiscoveryModel.discovery_operation_keys8   sD   € à"Ô1ÔNÐØˆØÔ*ð 	HÝÐ+Ô7Ô?×DÒDÑFÔFÑGÔGˆDØˆr   c                 ó�   — 	 | j                              |¦  «        }|j                             dd¦  «        S # t          $ r Y dS w xY w)Nr   F)r#   Úoperation_modelr   r   r   )r$   Úoperation_namer3   s      r   Údiscovery_required_forz-EndpointDiscoveryModel.discovery_required_for@   s_   € ð	Ø"Ô1×AÒAØñô ˆOð #Ô5×9Ò9¸*ÀeÑLÔLÐLøÝ%ð 	ð 	ð 	Ø�5�5ð	øøøs   ‚47 ·
AÁAc                 óÔ   ‡— | j         Š|                     d¦  «        s,|                     dd ¦  «         |                     dd ¦  «         ˆfd„|                     ¦   «         D ¦   «         S )NÚIdentifiersÚ	Operationc                 ó$   •— i | ]\  }}|‰v ¯	||“ŒS r   r   )Ú.0ÚkÚvÚ
input_keyss      €r   ú
<dictcomp>zEEndpointDiscoveryModel.discovery_operation_kwargs.<locals>.<dictcomp>O   s$   ø€ ÐCÐCÐC™˜˜A°1¸
°?°?��1°?°?°?r   )r1   r   ÚpopÚitems)r$   r   r=   s     @r   Údiscovery_operation_kwargsz1EndpointDiscoveryModel.discovery_operation_kwargsI   si   ø€ ØÔ2ˆ
à�zŠz˜-Ñ(Ô(ð 	,Ø�JŠJ�{ DÑ)Ô)Ð)Ø�JŠJ�} dÑ+Ô+Ð+ØCÐCÐCÐC §¢¡¤ÐCÑCÔCÐCr   c                 ó8   — |                       |j        |¦  «        S r"   )Ú_gather_idsr-   ©r$   Ú	operationÚparamss      r   Úgather_identifiersz)EndpointDiscoveryModel.gather_identifiersQ   s   € Ø×Ò 	Ô 5°vÑ>Ô>Ð>r   Nc                 óð   — |€i }|j                              ¦   «         D ]W\  }}|j                             d¦  «        r||         ||<   Œ+|j        dk    r!||v r|                      |||         |¦  «         ŒX|S )NÚendpointdiscoveryidÚ	structure)r/   r@   Úmetadatar   Ú	type_namerC   )r$   ÚshaperF   ÚidsÚmember_nameÚmember_shapes         r   rC   z"EndpointDiscoveryModel._gather_idsT   sš   € ð ˆ;ØˆCØ).¬×)<Ò)<Ñ)>Ô)>ð 	Ið 	IÑ%ˆK˜ØÔ$×(Ò(Ð)>Ñ?Ô?ð IØ#)¨+Ô#6��KÑ Ð àÔ&¨+Ò5Ð5¸+ÈÐ:OÐ:Oà× Ò  ¨v°kÔ/BÀCÑHÔHÐHøØˆ
r   r"   )r   r   r   r&   r   r+   r1   r5   rA   rG   rC   r   r   r   r    r    /   s�   € € € € € ð,ð ,ð ,ð ð4ð 4ñ „^ð4ð ðð ñ „^ððð ð ðDð Dð Dð?ð ?ð ?ðð ð ð ð ð r   r    c                   óZ   — e Zd Z	 d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S )ÚEndpointDiscoveryManagerNTc                 óÐ   — |€i }|| _         i | _        |€t          j        }|| _        || _        t          j        |¦  «        | _        t          |j	        j
        ¦  «        | _        d S r"   )Ú_cacheÚ_failed_attemptsÚtimeÚ_timeÚ_always_discoverÚweakrefÚproxyÚ_clientr    Úmetar%   Ú_model)r$   ÚclientÚcacheÚcurrent_timeÚalways_discovers        r   r&   z!EndpointDiscoveryManager.__init__d   sd   € ð ˆ=ØˆEØˆŒØ "ˆÔØÐÝœ9ˆLØ!ˆŒ
Ø /ˆÔõ ”} VÑ,Ô,ˆŒÝ,¨V¬[Ô-FÑGÔGˆŒˆˆr   c                 óˆ   — |d         }|                       ¦   «         }|D ]"}|                     d¦  «        }||dz  z   |d<   Œ#|S )NÚ	EndpointsÚCachePeriodInMinutesé<   Ú
Expiration)rW   r   )r$   ÚresponseÚ	endpointsr`   ÚendpointÚ
cache_times         r   Ú_parse_endpointsz)EndpointDiscoveryManager._parse_endpointsu   sX   € Ø˜[Ô)ˆ	Ø—z’z‘|”|ˆØ!ð 	Dð 	DˆHØ!ŸšÐ&<Ñ=Ô=ˆJØ%1°JÀ±OÑ%CˆH�\Ñ"Ð"ØÐr   c                 óŒ   — t          |t          ¦  «        r.t          t          |                     ¦   «         ¦  «        ¦  «        S |S r"   )Ú
isinstanceÚdictÚtupleÚsortedr@   )r$   Úvalues     r   Ú_cache_itemz$EndpointDiscoveryManager._cache_item}   s7   € Ý�e�TÑ"Ô"ð 	Ý� §¢¡¤Ñ.Ô.Ñ/Ô/Ð/àˆLr   c                 óœ   ‡ —  ‰ j         j        di |¤Ž}t          ˆ fd„t          |                     ¦   «         ¦  «        D ¦   «         ¦  «        S )Nc              3   óH   •K  — | ]\  }}‰                      |¦  «        V — Œd S r"   )rr   )r:   r;   r<   r$   s      €r   ú	<genexpr>z=EndpointDiscoveryManager._create_cache_key.<locals>.<genexpr>…   s5   øè è € ÐLÐL©T¨Q°�T×%Ò% aÑ(Ô(ÐLÐLÐLÐLÐLÐLr   r   )r]   rA   ro   rp   r@   )r$   r   s   ` r   Ú_create_cache_keyz*EndpointDiscoveryManager._create_cache_keyƒ   sP   ø€ Ø7�”Ô7ÐAÐA¸&ÐAÐAˆÝÐLÐLÐLÐLµV¸F¿LºL¹N¼NÑ5KÔ5KÐLÑLÔLÑLÔLÐLr   c                 ó8   — | j                              ||¦  «        S r"   )r]   rG   rD   s      r   rG   z+EndpointDiscoveryManager.gather_identifiers‡   s   € ØŒ{×-Ò-¨i¸Ñ@Ô@Ð@r   c                 óF   —  | j         di |¤Ž}|| j        v r
| j        |= d S d S )Nr   )rv   rT   )r$   r   Ú	cache_keys      r   Údelete_endpointsz)EndpointDiscoveryManager.delete_endpointsŠ   s?   € Ø*�DÔ*Ð4Ð4¨VÐ4Ð4ˆ	Ø˜œÐ#Ð#Ø”˜IÐ&Ð&Ð&ð $Ð#r   c                 ó®   —  | j         j        di |¤Ž}| j         j        }t          | j        |¦  «        }t
                               d|¦  «          |di |¤ŽS )Nz%Discovering endpoints with kwargs: %sr   )r]   rA   r+   Úgetattrr[   ÚloggerÚdebug)r$   r   r4   r*   s       r   Ú_describe_endpointsz,EndpointDiscoveryManager._describe_endpoints�   sf   € ð 8�”Ô7ÐAÐA¸&ÐAÐAˆØœÔ=ˆÝ% d¤l°NÑCÔCÐÝ�ŠÐ<¸fÑEÔEÐEØ"Ð"Ð,Ð, VÐ,Ð,Ð,r   c                 ót   ‡— || j         vrd S |                      ¦   «         Šˆfd„| j         |         D ¦   «         S )Nc                 ó,   •— g | ]}‰|d          k     ¯|‘ŒS )rf   r   )r:   ÚeÚnows     €r   ú
<listcomp>zCEndpointDiscoveryManager._get_current_endpoints.<locals>.<listcomp>œ   s'   ø€ ÐEÐEÐE�a¨s°Q°|´_Ò/DÐ/D�Ð/DÐ/DÐ/Dr   )rT   rW   )r$   Úkeyrƒ   s     @r   Ú_get_current_endpointsz/EndpointDiscoveryManager._get_current_endpoints˜   sC   ø€ Ø�d”kÐ!Ð!Ø�4Ø�jŠj‰lŒlˆØEÐEÐEÐE˜4œ; sÔ+ÐEÑEÔEÐEr   c                 ó  —  | j         di |¤Ž}	  | j        di |¤Ž}|                      |¦  «        }|| j        |<   | j                             |d ¦  «         |S # t          t          f$ r# |                      ¦   «         dz   | j        |<   Y d S w xY w)Nre   r   )	rv   r   rk   rT   rU   r?   r   r   rW   )r$   r   ry   rg   rh   s        r   Ú_refresh_current_endpointsz3EndpointDiscoveryManager._refresh_current_endpointsž   s¶   € Ø*�DÔ*Ð4Ð4¨VÐ4Ð4ˆ	ð	Ø/�tÔ/Ð9Ð9°&Ð9Ð9ˆHØ×-Ò-¨hÑ7Ô7ˆIØ%.ˆDŒK˜	Ñ"ØÔ!×%Ò% i°Ñ6Ô6Ð6ØÐøÝ¥Ð1ð 	ð 	ð 	Ø/3¯zªz©|¬|¸bÑ/@ˆDÔ! )Ñ,Ø�4�4ð	øøøs   �AA Á0BÂBc                 óv   — || j         v r/|                      ¦   «         }|| j         |         k     rdS | j         |= dS )NTF)rU   rW   )r$   ry   rƒ   s      r   Ú_recently_failedz)EndpointDiscoveryManager._recently_failedª   sE   € Ø˜Ô-Ð-Ð-Ø—*’*‘,”,ˆCØ�TÔ*¨9Ô5Ò5Ð5Ø�tØÔ% iÐ0Øˆur   c                 ó   — |d         d         S )Nr   ÚAddressr   )r$   rh   s     r   Ú_select_endpointz)EndpointDiscoveryManager._select_endpoint²   s   € Ø˜Œ|˜IÔ&Ð&r   c                 ó„  — |d         }| j                              |¦  «        }| j        s|st                               d|¦  «         d S  | j        di |¤Ž}|                      |¦  «        }|r|                      |¦  «        S |                      |¦  «        }|s$ | j	        di |¤Ž}|r|                      |¦  «        S t                               d|¦  «         | j
                             |d ¦  «        }|r|                      |¦  «        S |r4|r$ | j	        di |¤Ž}|r|                      |¦  «        S t          ¦   «         ‚d S )Nr8   zAOptional discovery disabled. Skipping discovery for Operation: %sz%Endpoint Discovery has failed for: %sr   )r]   r5   rX   r}   r~   rv   r†   r�   rŠ   rˆ   rT   r   r   )r$   r   rE   Údiscovery_requiredry   rh   Úrecently_failedÚstale_entriess           r   Údescribe_endpointz*EndpointDiscoveryManager.describe_endpointµ   s�  € Ø˜;Ô'ˆ	Ø!œ[×?Ò?À	ÑJÔJÐàÔ$ð 	Ð-?ð 	å�LŠLØSØñô ð ð �4ð +�DÔ*Ð4Ð4¨VÐ4Ð4ˆ	Ø×/Ò/°	Ñ:Ô:ˆ	Øð 	4Ø×(Ò(¨Ñ3Ô3Ð3à×/Ò/°	Ñ:Ô:ˆØð 	8à7˜Ô7ÐAÐA¸&ÐAÐAˆIØð 8Ø×,Ò,¨YÑ7Ô7Ð7å�ŠÐ<¸fÑEÔEÐEØœŸš¨	°4Ñ8Ô8ˆØð 	8à×(Ò(¨Ñ7Ô7Ð7Øð 		3ð ð <à;˜DÔ;ÐEÐE¸fÐEÐE�	Øð <Ø×0Ò0°Ñ;Ô;Ð;å0Ñ2Ô2Ð2àˆtr   )NNT)r   r   r   r&   rk   rr   rv   rG   rz   r   r†   rˆ   rŠ   r�   r’   r   r   r   rR   rR   c   sÝ   € € € € € àEIðHð Hð Hð Hð"ð ð ðð ð ðMð Mð MðAð Að Að'ð 'ð 'ð
-ð -ð -ðFð Fð Fð
ð 
ð 
ðð ð ð'ð 'ð 'ð)ð )ð )ð )ð )r   rR   c                   ó,   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚEndpointDiscoveryHandlerc                 ó   — || _         d S r"   )Ú_manager)r$   Úmanagers     r   r&   z!EndpointDiscoveryHandler.__init__â   s   € ØˆŒˆˆr   c                 óº   — |                      d|› �| j        ¦  «         |                     d|› �| j        ¦  «         |                      d|› �| j        ¦  «         d S )Nzbefore-parameter-build.zrequest-created.zneeds-retry.)ÚregisterrG   Úregister_firstÚdiscover_endpointÚhandle_retries)r$   ÚeventsÚ
service_ids      r   r™   z!EndpointDiscoveryHandler.registerå   sz   € Ø�ŠØ2 jÐ2Ð2°DÔ4Kñ	
ô 	
ð 	
ð 	×ÒØ+˜zÐ+Ð+¨TÔ-Cñ	
ô 	
ð 	
ð 	�ŠÐ3 zÐ3Ð3°TÔ5HÑIÔIÐIÐIÐIr   c                 ó`   — |j         }|€d S | j                             ||¦  «        }d|i|d<   d S )NÚidentifiersÚ	discovery)r   r–   rG   )r$   rF   r   Úcontextr   r   rN   s          r   rG   z+EndpointDiscoveryHandler.gather_identifiersî   sB   € Ø"Ô5ÐàÐ%ØˆFØŒm×.Ò.¨u°fÑ=Ô=ˆØ -¨sÐ3ˆ�ÑÐÐr   c                 óV  — |j                              di ¦  «                             d¦  «        }|€d S | j                             ||¬¦  «        }|€t                               d¦  «         d S |                     d¦  «        sd|z   }t                               d|¦  «         ||_        d S )Nr¡   r    ©r8   r7   z&Failed to discover and inject endpointÚhttpzhttps://z!Injecting discovered endpoint: %s)r¢   r   r–   r’   r}   r~   Ú
startswithÚurl)r$   Úrequestr4   r   rN   ri   s         r   r›   z*EndpointDiscoveryHandler.discover_endpointö   s²   € ØŒo×!Ò! +¨rÑ2Ô2×6Ò6°}ÑEÔEˆØˆ;ØˆFØ”=×2Ò2Ø$°#ð 3ñ 
ô 
ˆð ÐÝ�LŠLÐAÑBÔBÐBØˆFØ×"Ò" 6Ñ*Ô*ð 	-Ø! HÑ,ˆHÝ�ŠÐ8¸(ÑCÔCÐCØˆŒˆˆr   c                 ó   — |€d S |\  }}|                      di ¦  «                              d¦  «        }|                      di ¦  «                              d¦  «        }|dk    r|dk    rd S |                      di ¦  «        }|                      di ¦  «                              d	¦  «        }	|	€d S | j                             |j        |	¬
¦  «         dS )NÚResponseMetadataÚHTTPStatusCodeÚErrorÚCodei¥  ÚInvalidEndpointExceptionr¢   r¡   r    r¤   r   )r   r–   rz   r)   )
r$   Úrequest_dictrg   rE   r   Ú_ÚstatusÚ
error_coder¢   rN   s
             r   rœ   z'EndpointDiscoveryHandler.handle_retries  sâ   € ØÐØ�4à‰ˆˆ8Ø—’Ð0°"Ñ5Ô5×9Ò9Ð:JÑKÔKˆØ—\’\ '¨2Ñ.Ô.×2Ò2°6Ñ:Ô:ˆ
Ø�SŠ=ˆ=˜ZÐ+EÒEÐEØ�4à×"Ò" 9¨bÑ1Ô1ˆØ�kŠk˜+ rÑ*Ô*×.Ò.¨}Ñ=Ô=ˆØˆ;Ø�4ð
 	Œ×&Ò&Ø”n°#ð 	'ñ 	
ô 	
ð 	
ð ˆqr   N)r   r   r   r&   r™   rG   r›   rœ   r   r   r   r”   r”   á   sb   € € € € € ð ð  ð  ðJð Jð Jð4ð 4ð 4ðð ð ðð ð ð ð r   r”   )ÚloggingrV   rY   Úbotocorer   Úbotocore.exceptionsr   r   r   Úbotocore.modelr   Úbotocore.utilsr   Ú	getLoggerr   r}   r
   r   r   r   r    rR   r”   r   r   r   ú<module>r¹      s³  ðð €€€Ø €€€Ø €€€à Ð Ð Ð Ð Ð Ø OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OØ 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø )Ð )Ð )Ð )Ð )Ð )à	ˆÔ	˜8Ñ	$Ô	$€ð	ð 	ð 	ð 	ð 	 ñ 	ô 	ð 	ðNð Nð Nð Nð NÐ :ñ Nô Nð NðIð Ið Ið Ið IÐ%?ñ Iô Ið Ið*ð *ð *ð1ð 1ð 1ð 1ð 1ñ 1ô 1ð 1ðh{ð {ð {ð {ð {ñ {ô {ð {ð|9ð 9ð 9ð 9ð 9ñ 9ô 9ð 9ð 9ð 9r   