ó
    Ú°›jN~  ã                   ó  • S r SSKJr  SSKJr  SSKJr  SSKJr  SSK	J
r
JrJr  SSKJrJrJrJr  \" 5       r " S S	\5      r " S
 S\5      r " S S\5      r " S S\5      r " S S\5      r " S S5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r  " S S\5      r! " S  S!\5      r" " S" S#5      r# " S$ S%5      r$ " S& S'5      r% " S( S)5      r& " S* S+5      r' " S, S-5      r(g.)/z-Abstractions to interact with service models.é    )Údefaultdict)Ú
NamedTuple)Úresolve_auth_type)ÚOrderedDict)ÚMissingServiceIdErrorÚUndefinedModelAttributeErrorÚ UnsupportedServiceProtocolsError)Ú$PRIORITY_ORDERED_SUPPORTED_PROTOCOLSÚCachedPropertyÚhyphenize_service_idÚinstance_cachec                   ó   • \ rS rSrSrg)ÚNoShapeFoundErroré#   © N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__static_attributes__r   ó    ÚK/home/mande/repo/quber/.venv/lib/python3.13/site-packages/botocore/model.pyr   r   #   ó   † Úr   r   c                   ó   • \ rS rSrSrg)ÚInvalidShapeErroré'   r   Nr   r   r   r   r   r   '   r   r   r   c                   ó   • \ rS rSrSrg)ÚOperationNotFoundErroré+   r   Nr   r   r   r   r   r   +   r   r   r   c                   ó   • \ rS rSrSrg)ÚInvalidShapeReferenceErroré/   r   Nr   r   r   r   r"   r"   /   r   r   r"   c                   ó   • \ rS rSrS rSrg)Ú	ServiceIdé3   c                 ó   • [        U 5      $ ©N)r   ©Úselfs    r   Ú	hyphenizeÚServiceId.hyphenize4   s   € Ü# DÓ)Ð)r   r   N)r   r   r   r   r+   r   r   r   r   r%   r%   3   s   † õ*r   r%   c                   ó‚   • \ rS rSrSr/ SQr/ SQr\rSS jr	\
S 5       r\
S 5       r\
S	 5       rS
 rS r\S 5       rSrg)ÚShapeé8   z3Object representing a shape from the service model.)ÚlocationNameÚ	queryNameÚ	flattenedÚlocationÚpayloadÚ	streamingÚtimestampFormatÚxmlNamespaceÚresultWrapperÚxmlAttributeÚeventstreamÚeventÚeventheaderÚeventpayloadÚ	jsonvaluer6   Ú	hostLabel)ÚrequiredÚminÚmaxÚpatternÚ	sensitiveÚenumÚidempotencyTokenÚerrorÚ	exceptionÚendpointdiscoveryidÚ	retryableÚdocumentÚunionÚcontextParamÚclientContextParamsÚrequiresLengthNc                 ó’   • Xl         US   U l        UR                  SS5      U l        X l        Uc
  [        5       nX0l        0 U l        g)a�  

:type shape_name: string
:param shape_name: The name of the shape.

:type shape_model: dict
:param shape_model: The shape model.  This would be the value
    associated with the key in the "shapes" dict of the
    service model (i.e ``model['shapes'][shape_name]``)

:type shape_resolver: botocore.model.ShapeResolver
:param shape_resolver: A shape resolver object.  This is used to
    resolve references to other shapes.  For scalar shape types
    (string, integer, boolean, etc.), this argument is not
    required.  If a shape_resolver is not provided for a complex
    type, then a ``ValueError`` will be raised when an attempt
    to resolve a shape is made.

ÚtypeÚdocumentationÚ N)ÚnameÚ	type_nameÚgetrR   Ú_shape_modelÚUnresolvableShapeMapÚ_shape_resolverÚ_cache)r*   Ú
shape_nameÚshape_modelÚshape_resolvers       r   Ú__init__ÚShape.__init__f   sK   € ð( Œ	Ø$ VÑ,ˆŒØ(Ÿ_™_¨_¸bÓAˆÔØ'ÔØÑ!ô 2Ó3ˆNØ-ÔØˆ�r   c                 óª   • U R                   n0 nU R                   H  nX0R                   ;   d  M  X   X#'   M     SU;   a  UR                  S5      US'   U$ )a•  Serialization information about the shape.

This contains information that may be needed for input serialization
or response parsing.  This can include:

    * name
    * queryName
    * flattened
    * location
    * payload
    * streaming
    * xmlNamespace
    * resultWrapper
    * xmlAttribute
    * jsonvalue
    * timestampFormat

:rtype: dict
:return: Serialization information about the shape.

r0   rT   )rW   ÚSERIALIZED_ATTRSÚpop)r*   ÚmodelÚserializationÚattrs       r   rd   ÚShape.serializationˆ   s_   € ð. ×!Ñ!ˆØˆØ×)Ô)ˆDØ×(Ñ(Õ(Ø&+¡k�Ó#ñ *ð ˜]Ó*Ø$1×$5Ñ$5°nÓ$EˆM˜&Ñ!ØÐr   c                 óv   • U R                   n0 nU R                   H  nX0R                   ;   d  M  X   X#'   M     U$ )aM  Metadata about the shape.

This requires optional information about the shape, including:

    * min
    * max
    * pattern
    * enum
    * sensitive
    * required
    * idempotencyToken
    * document
    * union
    * contextParam
    * clientContextParams
    * requiresLength

:rtype: dict
:return: Metadata about the shape.

)rW   ÚMETADATA_ATTRS)r*   rc   Úmetadatare   s       r   ri   ÚShape.metadata©   s@   € ð. ×!Ñ!ˆØˆØ×'Ô'ˆDØ×(Ñ(Õ(Ø!&¡�“ñ (ð ˆr   c                 ó:   • U R                   R                  S/ 5      $ )zÏA list of members that are required.

A structure shape can define members that are required.
This value will return a list of required members.  If there
are no required members an empty list is returned.

r@   ©ri   rV   r)   s    r   Úrequired_membersÚShape.required_membersÇ   s   € ð �}‰}× Ñ  ¨RÓ0Ð0r   c                 ó8   • U R                   R                  U5      $ r(   ©rY   Úresolve_shape_ref©r*   Ú	shape_refs     r   Ú_resolve_shape_refÚShape._resolve_shape_refÒ   ó   € Ø×#Ñ#×5Ñ5°iÓ@Ð@r   c                 óP   • SU R                   R                   SU R                   S3$ )NÚ<Ú(z)>©Ú	__class__r   rT   r)   s    r   Ú__repr__ÚShape.__repr__Õ   s&   € Ø�4—>‘>×*Ñ*Ð+¨1¨T¯Y©Y¨K°rÐ:Ð:r   c                 ó   • g r(   r   r)   s    r   Úevent_stream_nameÚShape.event_stream_nameØ   s   € àr   )rZ   rW   rY   rR   rT   rU   r(   )r   r   r   r   Ú__doc__ra   rh   r   ÚMAP_TYPEr^   r   rd   ri   rm   rt   r|   Úpropertyr   r   r   r   r   r.   r.   8   s}   † Ù=òÐò&€Nð$ €Hô ðD ñó ðð@ ñó ðð: ñ1ó ð1òAò;ð ñó ór   r.   c                   ód   • \ rS rSr\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r	Sr
g)	ÚStructureShapeéÝ   c                 óÒ   • U R                   R                  SU R                  5       5      nU R                  5       nUR                  5        H  u  p4U R	                  U5      X#'   M     U$ )NÚmembers)rW   rV   r‚   Úitemsrt   )r*   rˆ   Úshape_membersrT   rs   s        r   rˆ   ÚStructureShape.membersÞ   sX   € à×#Ñ#×'Ñ'¨	°4·=±=³?ÓCˆð Ÿ™›ˆØ&Ÿ}™}ž‰OˆDØ"&×"9Ñ"9¸)Ó"DˆMÓñ  /àÐr   c                 ó’   • U R                   R                  5        H)  u  pUR                  R                  S5      (       d  M'  Us  $    g )Nr:   )rˆ   r‰   rd   rV   )r*   Úmember_nameÚmembers      r   r   Ú StructureShape.event_stream_nameì   s>   € à#'§<¡<×#5Ñ#5Ö#7ÑˆKØ×#Ñ#×'Ñ'¨×6Ó6Ø"Ò"ñ $8ð r   c                 óÊ   • U R                   R                  SS5      (       d  g U R                   R                  S0 5      nUR                  S5      nU(       a  U$ U R                  $ )NrH   FrG   Úcode)ri   rV   rT   )r*   Úerror_metadatar‘   s      r   Ú
error_codeÚStructureShape.error_codeó   sT   € à�}‰}× Ñ  ¨e×4Ñ4ØØŸ™×*Ñ*¨7°BÓ7ˆØ×!Ñ! &Ó)ˆÞØˆKà�y‰yÐr   c                 ó:   • U R                   R                  SS5      $ )NrK   Frl   r)   s    r   Úis_document_typeÚStructureShape.is_document_typeþ   s   € à�}‰}× Ñ  ¨UÓ3Ð3r   c                 ó:   • U R                   R                  SS5      $ )NrL   Frl   r)   s    r   Úis_tagged_unionÚStructureShape.is_tagged_union  s   € à�}‰}× Ñ  ¨%Ó0Ð0r   r   N)r   r   r   r   r   rˆ   r   r“   r–   r™   r   r   r   r   r…   r…   Ý   sd   † Øñó ðð ñó ðð ñó ðð ñ4ó ð4ð ñ1ó ó1r   r…   c                   ó$   • \ rS rSr\S 5       rSrg)Ú	ListShapei  c                 ó>   • U R                  U R                  S   5      $ )NrŽ   ©rt   rW   r)   s    r   rŽ   ÚListShape.member  s   € à×&Ñ& t×'8Ñ'8¸Ñ'BÓCÐCr   r   N)r   r   r   r   r   rŽ   r   r   r   r   rœ   rœ     s   † ØñDó óDr   rœ   c                   ó4   • \ rS rSr\S 5       r\S 5       rSrg)ÚMapShapei  c                 ó>   • U R                  U R                  S   5      $ )NÚkeyrž   r)   s    r   r£   ÚMapShape.key  s   € à×&Ñ& t×'8Ñ'8¸Ñ'?Ó@Ð@r   c                 ó>   • U R                  U R                  S   5      $ )NÚvaluerž   r)   s    r   r¦   ÚMapShape.value  s   € à×&Ñ& t×'8Ñ'8¸Ñ'AÓBÐBr   r   N)r   r   r   r   r   r£   r¦   r   r   r   r   r¡   r¡     s,   † ØñAó ðAð ñCó óCr   r¡   c                   ó$   • \ rS rSr\S 5       rSrg)ÚStringShapei  c                 ó:   • U R                   R                  S/ 5      $ )NrE   rl   r)   s    r   rE   ÚStringShape.enum  s   € à�}‰}× Ñ  ¨Ó,Ð,r   r   N)r   r   r   r   r   rE   r   r   r   r   r©   r©     s   † Øñ-ó ó-r   r©   c                   ó0   • \ rS rSr% \\S'   \\-  \S'   Srg)ÚStaticContextParameteri  rT   r¦   r   N)r   r   r   r   ÚstrÚ__annotations__Úboolr   r   r   r   r­   r­     s   ‡ Ø
ƒIØ�#‰:Ör   r­   c                   ó*   • \ rS rSr% \\S'   \\S'   Srg)ÚContextParameteri"  rT   r�   r   N©r   r   r   r   r®   r¯   r   r   r   r   r²   r²   "  s   ‡ Ø
ƒIØÖr   r²   c                   ó4   • \ rS rSr% \\S'   \\S'   \\S'   Srg)ÚClientContextParameteri'  rT   rQ   rR   r   Nr³   r   r   r   rµ   rµ   '  s   ‡ Ø
ƒIØ
ƒIØÖr   rµ   c                   ó˜  • \ rS rSrSrSS jrSS jrS r\S 5       r	S r
\S	 5       r\S
 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       rS r\S 5       r\R>                  S 5       r\S 5       r S r!Sr"g) ÚServiceModeli-  zI

:ivar service_description: The parsed service description dictionary.

Nc                 ó®   • Xl         UR                  S0 5      U l        [        UR                  S0 5      5      U l        [
        U l        X l        0 U l        g)a  

:type service_description: dict
:param service_description: The service description model.  This value
    is obtained from a botocore.loader.Loader, or from directly loading
    the file yourself::

        service_description = json.load(
            open('/path/to/service-description-model.json'))
        model = ServiceModel(service_description)

:type service_name: str
:param service_name: The name of the service.  Normally this is
    the endpoint prefix defined in the service_description.  However,
    you can override this value to provide a more convenient name.
    This is done in a few places in botocore (ses instead of email,
    emr instead of elasticmapreduce).  If this value is not provided,
    it will default to the endpointPrefix defined in the model.

ri   ÚshapesN)	Ú_service_descriptionrV   ri   ÚShapeResolverrY   ÚNOT_SETÚ_signature_versionÚ_service_nameÚ_instance_cache)r*   Úservice_descriptionÚservice_names      r   r^   ÚServiceModel.__init__4  sS   € ð* %8Ô!à+×/Ñ/°
¸BÓ?ˆŒÜ,Ø×#Ñ# H¨bÓ1ó 
ˆÔô #*ˆÔØ)ÔØ!ˆÕr   c                 ó8   • U R                   R                  X5      $ r(   )rY   Úget_shape_by_name©r*   r[   Úmember_traitss      r   Ú	shape_forÚServiceModel.shape_forS  s   € Ø×#Ñ#×5Ñ5Øó
ð 	
r   c                 ó:   • U R                   R                  US 5      $ r(   )Ú_error_code_cacherV   )r*   r“   s     r   Úshape_for_error_codeÚ!ServiceModel.shape_for_error_codeX  s   € Ø×%Ñ%×)Ñ)¨*°dÓ;Ð;r   c                 óP   • 0 nU R                    H  nUR                  nX!U'   M     U$ r(   )Úerror_shapesr“   )r*   Úerror_code_cacheÚerror_shaper‘   s       r   rÊ   ÚServiceModel._error_code_cache[  s3   € àÐØ×,Ô,ˆKØ×)Ñ)ˆDØ%0˜TÓ"ñ -ð  Ðr   c                 ó8   • U R                   R                  U5      $ r(   rp   rr   s     r   rq   ÚServiceModel.resolve_shape_refc  rv   r   c                 óL   • [        U R                  R                  S0 5      5      $ )Nr¹   ©Úlistrº   rV   r)   s    r   Úshape_namesÚServiceModel.shape_namesf  s    € ä�D×-Ñ-×1Ñ1°(¸BÓ?Ó@Ð@r   c                 óº   • / nU R                    HH  nU R                  U5      nUR                  R                  SS5      (       d  M7  UR	                  U5        MJ     U$ )NrH   F)r×   rÇ   ri   rV   Úappend)r*   rÎ   r[   rÐ   s       r   rÎ   ÚServiceModel.error_shapesj  sT   € àˆØ×*Ô*ˆJØŸ.™.¨Ó4ˆKØ×#Ñ#×'Ñ'¨°U×;Ó;Ø×#Ñ# KÖ0ñ +ð Ðr   c                 ór   •  U R                   S   U   n[        X U5      $ ! [         a    [        U5      ef = f©NÚ
operations)rº   ÚKeyErrorr   ÚOperationModel)r*   Úoperation_namerc   s      r   Úoperation_modelÚServiceModel.operation_models  sG   € ð	9Ø×-Ñ-¨lÑ;¸NÑKˆEô ˜e¨>Ó:Ð:øô ó 	9Ü(¨Ó8Ð8ð	9ús   ‚   6c                 ó:   • U R                   R                  SS5      $ ©NrR   rS   )rº   rV   r)   s    r   rR   ÚServiceModel.documentation{  s   € à×(Ñ(×,Ñ,¨_¸bÓAÐAr   c                 óL   • [        U R                  R                  S/ 5      5      $ rÝ   rÕ   r)   s    r   Úoperation_namesÚServiceModel.operation_names  s    € ä�D×-Ñ-×1Ñ1°,ÀÓCÓDÐDr   c                 óL   • U R                   b  U R                   $ U R                  $ )as  The name of the service.

This defaults to the endpointPrefix defined in the service model.
However, this value can be overriden when a ``ServiceModel`` is
created.  If a service_name was not provided when the ``ServiceModel``
was created and if there is no endpointPrefix defined in the
service model, then an ``UndefinedModelAttributeError`` exception
will be raised.

)r¾   Úendpoint_prefixr)   s    r   rÁ   ÚServiceModel.service_nameƒ  s(   € ð ×ÑÑ)Ø×%Ñ%Ð%à×'Ñ'Ð'r   c                 óz   •  [        U R                  S5      5      $ ! [         a    [        U R                  S9ef = f)NÚ	serviceId)rÁ   )r%   Ú_get_metadata_propertyr   r   r¾   r)   s    r   Ú
service_idÚServiceModel.service_id”  s@   € ð	IÜ˜T×8Ñ8¸ÓEÓFÐFøÜ+ó 	IÜ'°T×5GÑ5GÑHÐHð	Iús   ‚ œ:c                 óZ   • U R                   R                  S5      nUc  U R                  nU$ )z–The name to use when computing signatures.

If the model does not define a signing name, this
value will be the endpoint prefix defined in the model.
ÚsigningName)ri   rV   rë   )r*   Úsigning_names     r   rô   ÚServiceModel.signing_name›  s/   € ð —}‘}×(Ñ(¨Ó7ˆØÑØ×/Ñ/ˆLØÐr   c                 ó$   • U R                  S5      $ )NÚ
apiVersion©rï   r)   s    r   Úapi_versionÚServiceModel.api_version§  s   € à×*Ñ*¨<Ó8Ð8r   c                 ó$   • U R                  S5      $ )NÚprotocolrø   r)   s    r   rü   ÚServiceModel.protocol«  s   € à×*Ñ*¨:Ó6Ð6r   c                 ó$   • U R                  S5      $ )NÚ	protocolsrø   r)   s    r   rÿ   ÚServiceModel.protocols¯  s   € à×*Ñ*¨;Ó7Ð7r   c                 óà   • U R                   R                  S5      (       aC  [         H  nXR                  ;   d  M  Us  $    [	        [        U R                  U R
                  S9eU R                  $ )Nrÿ   )Úbotocore_supported_protocolsÚservice_supported_protocolsÚservice)ri   rV   r
   rÿ   r	   rÁ   rü   )r*   rü   s     r   Úresolved_protocolÚServiceModel.resolved_protocol³  sa   € ð
 �=‰=×Ñ˜[×)Ñ)ß@�ØŸ~™~Õ-Ø#’Oñ Aô 3Ü-QØ,0¯N©NØ×)Ñ)ñð ð �}‰}Ðr   c                 ó$   • U R                  S5      $ )NÚendpointPrefixrø   r)   s    r   rë   ÚServiceModel.endpoint_prefixÅ  s   € à×*Ñ*Ð+;Ó<Ð<r   c                 óv   • U R                    H)  nU R                  U5      nUR                  (       d  M'  Us  $    g r(   )rè   râ   Úis_endpoint_discovery_operation©r*   Ú	operationrc   s      r   Úendpoint_discovery_operationÚ)ServiceModel.endpoint_discovery_operationÉ  s3   € à×-Ô-ˆIØ×(Ñ(¨Ó3ˆEØ×4×4Ñ4Ø’ò .r   c                 ó®   • U R                    HE  nU R                  U5      nUR                  c  M#  UR                  R                  S5      (       d  ME    g   g)Nr@   TF)rè   râ   Úendpoint_discoveryrV   r  s      r   Úendpoint_discovery_requiredÚ(ServiceModel.endpoint_discovery_requiredÐ  sM   € à×-Ô-ˆIØ×(Ñ(¨Ó3ˆEà×(Ñ(Ó4Ø×,Ñ,×0Ñ0°×<Ó<áñ .ð r   c           
      ó®   • U R                   R                  S0 5      nUR                  5        VVs/ s H  u  p#[        UUS   US   S9PM     snn$ s  snnf )NrN   rQ   rR   )rT   rQ   rR   )rº   rV   r‰   rµ   )r*   ÚparamsÚ
param_nameÚ	param_vals       r   Úclient_context_parametersÚ&ServiceModel.client_context_parametersÛ  sg   € à×*Ñ*×.Ñ.Ð/DÀbÓIˆð *0¯©¬ô
ò *8Ñ%�
ô #ØØ˜vÑ&Ø'¨Ñ8ôñ
 *8ò
ð 	
ùó 
s   °Ac                 ó`   •  U R                   U   $ ! [         a    [        SU SU  35      ef = f)NÚ"z," not defined in the metadata of the model: )ri   rß   r   ©r*   rT   s     r   rï   Ú#ServiceModel._get_metadata_propertyç  sC   € ð	Ø—=‘= Ñ&Ð&øÜó 	Ü.Ø�D�6ÐEÀdÀVÐLóð ð	ús   ‚ ‘-c                 ó‚   • U R                   [        L a!  U R                  R                  S5      nXl         U R                   $ )NÚsignatureVersion)r½   r¼   ri   rV   )r*   Úsignature_versions     r   r   ÚServiceModel.signature_versionò  s8   € à×"Ñ"¤gÒ-Ø $§¡× 1Ñ 1Ð2DÓ EÐØ&7Ô#Ø×&Ñ&Ð&r   c                 ó   • Xl         g r(   )r½   )r*   r¦   s     r   r   r!  ù  s   € à"'Õr   c                 ó    • SU R                   ;   $ )NÚawsQueryCompatible)ri   r)   s    r   Úis_query_compatibleÚ ServiceModel.is_query_compatibleý  s   € à# t§}¡}Ñ4Ð4r   c                 óN   • U R                   R                   SU R                   S3$ )Nry   Ú))r{   r   rÁ   r)   s    r   r|   ÚServiceModel.__repr__  s'   € Ø—.‘.×)Ñ)Ð*¨!¨D×,=Ñ,=Ð+>¸aÐ@Ð@r   )r¿   rº   r¾   rY   r½   ri   r(   )#r   r   r   r   r�   r^   rÇ   rË   r   rÊ   rq   r×   rÎ   r   râ   rR   rè   rÁ   rð   rô   rù   rü   rÿ   r  rë   r  r  r  rï   rƒ   r   Úsetterr%  r|   r   r   r   r   r·   r·   -  sÅ  † ñô"ô>
ò
<ð ñ ó ð òAð ñAó ðAð ñó ðð ñ;ó ð;ð ñBó ðBð ñEó ðEð ñ(ó ð(ð  ñIó ðIð ñ	ó ð	ð ñ9ó ð9ð ñ7ó ð7ð ñ8ó ð8ð ñó ðð" ñ=ó ð=ð ñó ðð ñó ðð ñ	
ó ð	
òð ñ'ó ð'ð ×Ññ(ó ð(ð ñ5ó ð5õAr   r·   c                   óè  • \ rS rSrS&S jr\S 5       r\S 5       r\S 5       r	\S 5       r
\S 5       r\S	 5       r\S
 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       rS rS r S r!\S 5       r"\S  5       r#S! r$S" r%S# r&S$ r'S%r(g)'rà   i  Nc                 ó¤   • Xl         X l        X0l        UR                  S5      U l        UR
                  U l        UR                  S0 5      U l        g)aæ  

:type operation_model: dict
:param operation_model: The operation model.  This comes from the
    service model, and is the value associated with the operation
    name in the service model (i.e ``model['operations'][op_name]``).

:type service_model: botocore.model.ServiceModel
:param service_model: The service model associated with the operation.

:type name: string
:param name: The operation name.  This is the operation name exposed to
    the users of this model.  This can potentially be different from
    the "wire_name", which is the operation name that *must* by
    provided over the wire.  For example, given::

       "CreateCloudFrontOriginAccessIdentity":{
         "name":"CreateCloudFrontOriginAccessIdentity2014_11_06",
          ...
      }

   The ``name`` would be ``CreateCloudFrontOriginAccessIdentity``,
   but the ``self.wire_name`` would be
   ``CreateCloudFrontOriginAccessIdentity2014_11_06``, which is the
   value we must send in the corresponding HTTP request.

rT   ÚhttpN)Ú_operation_modelÚ_service_modelÚ	_api_namerV   Ú
_wire_nameri   r-  )r*   râ   Úservice_modelrT   s       r   r^   ÚOperationModel.__init__  sJ   € ð8 !0ÔØ+ÔØŒð *×-Ñ-¨fÓ5ˆŒØ%×.Ñ.ˆŒØ#×'Ñ'¨°Ó3ˆ�	r   c                 óL   • U R                   b  U R                   $ U R                  $ r(   )r0  Ú	wire_namer)   s    r   rT   ÚOperationModel.name+  s    € à�>‰>Ñ%Ø—>‘>Ð!à—>‘>Ð!r   c                 ó8   • U R                   R                  S5      $ )a"  The wire name of the operation.

In many situations this is the same value as the
``name``, value, but in some services, the operation name
exposed to the user is different from the operation name
we send across the wire (e.g cloudfront).

Any serialization code should use ``wire_name``.

rT   ©r.  rV   r)   s    r   r5  ÚOperationModel.wire_name2  s   € ð ×$Ñ$×(Ñ(¨Ó0Ð0r   c                 ó   • U R                   $ r(   )r/  r)   s    r   r2  ÚOperationModel.service_model@  s   € à×"Ñ"Ð"r   c                 ó:   • U R                   R                  SS5      $ rå   r8  r)   s    r   rR   ÚOperationModel.documentationD  s   € à×$Ñ$×(Ñ(¨¸"Ó=Ð=r   c                 ó:   • U R                   R                  SS5      $ )NÚ
deprecatedFr8  r)   s    r   r?  ÚOperationModel.deprecatedH  s   € à×$Ñ$×(Ñ(¨°uÓ=Ð=r   c                 ó:   • U R                   R                  SS 5      $ )NÚendpointdiscoveryr8  r)   s    r   r  Ú!OperationModel.endpoint_discoveryL  s   € ð ×$Ñ$×(Ñ(Ð)<¸dÓCÐCr   c                 ó:   • U R                   R                  SS5      $ )NÚendpointoperationFr8  r)   s    r   r  Ú.OperationModel.is_endpoint_discovery_operationR  s   € à×$Ñ$×(Ñ(Ð)<¸eÓDÐDr   c                 ót   • SU R                   ;  a  g U R                  R                  U R                   S   5      $ )NÚinput©r.  r/  rq   r)   s    r   Úinput_shapeÚOperationModel.input_shapeV  s<   € à˜$×/Ñ/Ó/ð Ø×"Ñ"×4Ñ4Ø×!Ñ! 'Ñ*ó
ð 	
r   c                 ót   • SU R                   ;  a  g U R                  R                  U R                   S   5      $ )NÚoutputrI  r)   s    r   Úoutput_shapeÚOperationModel.output_shape`  s<   € à˜4×0Ñ0Ó0ð Ø×"Ñ"×4Ñ4Ø×!Ñ! (Ñ+ó
ð 	
r   c                 óæ   • U R                   nU(       d  / $ UR                  R                  5        VVs/ s H/  u  p#SUR                  ;   d  M  UR                  S   (       d  M-  UPM1     snn$ s  snnf )NrF   )rJ  rˆ   r‰   ri   )r*   rJ  rT   Úshapes       r   Úidempotent_membersÚ!OperationModel.idempotent_membersk  sm   € à×&Ñ&ˆÞØˆIð "-×!4Ñ!4×!:Ñ!:Ô!<ô
â!<‘�Ø! U§^¡^Ñ3ó ð —‘Ð1Õ2÷ Ù!<ò
ð 	
ùó 
s   ³A-ÁA-Á#A-c           
      ó¼   • U R                   R                  S0 5      nUR                  5        VVs/ s H  u  p#[        X#R                  S5      S9PM     snn$ s  snnf )NÚstaticContextParamsr¦   )rT   r¦   )r.  rV   r‰   r­   )r*   r  rT   Úpropss       r   Ústatic_context_parametersÚ(OperationModel.static_context_parametersx  sX   € à×&Ñ&×*Ñ*Ð+@À"ÓEˆð  &Ÿ|™|œ~ô
â-‘�ô #¨·I±I¸gÓ4FÔGÙ-ò
ð 	
ùó 
s   °$Ac           	      ó$  • U R                   (       d  / $ U R                   R                  R                  5        VVs/ s HF  u  pSUR                  ;   d  M  SUR                  S   ;   d  M,  [	        UR                  S   S   US9PMH     snn$ s  snnf )NrM   rT   )rT   r�   )rJ  rˆ   r‰   ri   r²   )r*   rT   rQ  s      r   Úcontext_parametersÚ!OperationModel.context_parameters€  s”   € à××ØˆIð  $×/Ñ/×7Ñ7×=Ñ=Ô?ô
ò
  @‘�Ø §¡Ñ/óð ˜%Ÿ.™.¨Ñ8Ñ8óÔØ—^‘^ NÑ3°FÑ;Ø ôñ  @ò
ð 	
ùó 
s   »BÁBÁ*Bc                 ó:   • U R                   R                  S/ 5      $ )NÚoperationContextParamsr8  r)   s    r   Úoperation_context_parametersÚ+OperationModel.operation_context_parameters�  s   € à×$Ñ$×(Ñ(Ð)AÀ2ÓFÐFr   c                 ó8   • U R                   R                  S5      $ )NÚrequestcompressionr8  r)   s    r   Úrequest_compressionÚ"OperationModel.request_compression“  s   € à×$Ñ$×(Ñ(Ð)=Ó>Ð>r   c                 ó8   • U R                   R                  S5      $ )NÚauthr8  r)   s    r   re  ÚOperationModel.auth—  s   € à×$Ñ$×(Ñ(¨Ó0Ð0r   c                 ó8   • U R                   R                  S5      $ )NÚauthtyper8  r)   s    r   Ú	auth_typeÚOperationModel.auth_type›  ó   € à×$Ñ$×(Ñ(¨Ó4Ð4r   c                 óf   • U R                   (       a  [        U R                   5      $ U R                  $ r(   )re  r   ri  r)   s    r   Úresolved_auth_typeÚ!OperationModel.resolved_auth_typeŸ  s"   € à�9�9Ü$ T§Y¡YÓ/Ð/Ø�~‰~Ðr   c                 ó8   • U R                   R                  S5      $ )NÚunsignedPayloadr8  r)   s    r   Úunsigned_payloadÚOperationModel.unsigned_payload¥  s   € à×$Ñ$×(Ñ(Ð):Ó;Ð;r   c                 óf   ^ • T R                   R                  S/ 5      n[        U 4S jU 5       5      $ )NÚerrorsc              3   óZ   >#   • U  H   nTR                   R                  U5      v •  M"     g 7fr(   )r/  rq   )Ú.0Úsr*   s     €r   Ú	<genexpr>Ú.OperationModel.error_shapes.<locals>.<genexpr>¬  s%   øé € ÐMÂfÀ�D×'Ñ'×9Ñ9¸!×<Ð<Âfùs   ƒ(+)r.  rV   rÖ   )r*   r¹   s   ` r   rÎ   ÚOperationModel.error_shapes©  s,   ø€ à×&Ñ&×*Ñ*¨8°RÓ8ˆÜÔMÁfÓMÓMÐMr   c                 ó8   • U R                   R                  S5      $ )NÚendpointr8  r)   s    r   r|  ÚOperationModel.endpoint®  rk  r   c                 ó:   • U R                   R                  SS5      $ )NÚhttpChecksumRequiredFr8  r)   s    r   Úhttp_checksum_requiredÚ%OperationModel.http_checksum_required²  s   € à×$Ñ$×(Ñ(Ð)?ÀÓGÐGr   c                 ó:   • U R                   R                  S0 5      $ )NÚhttpChecksumr8  r)   s    r   Úhttp_checksumÚOperationModel.http_checksum¶  s   € à×$Ñ$×(Ñ(¨¸Ó<Ð<r   c                 ó&   • U R                  5       S L$ r(   )Úget_event_stream_inputr)   s    r   Úhas_event_stream_inputÚ%OperationModel.has_event_stream_inputº  s   € à×*Ñ*Ó,°DÐ8Ð8r   c                 ó&   • U R                  5       S L$ r(   )Úget_event_stream_outputr)   s    r   Úhas_event_stream_outputÚ&OperationModel.has_event_stream_output¾  s   € à×+Ñ+Ó-°TÐ9Ð9r   c                 ó8   • U R                  U R                  5      $ r(   )Ú_get_event_streamrJ  r)   s    r   r‡  Ú%OperationModel.get_event_stream_inputÂ  s   € Ø×%Ñ% d×&6Ñ&6Ó7Ð7r   c                 ó8   • U R                  U R                  5      $ r(   )r�  rN  r)   s    r   r‹  Ú&OperationModel.get_event_stream_outputÅ  s   € Ø×%Ñ% d×&7Ñ&7Ó8Ð8r   c                 óP   • Uc  gUR                   nU(       a  UR                  U   $ g)zAReturns the event stream member's shape if any or None otherwise.N)r   rˆ   )r*   rQ  Ú
event_names      r   r�  Ú OperationModel._get_event_streamÈ  s*   € à‰=ØØ×,Ñ,ˆ
ÞØ—=‘= Ñ,Ð,Ør   c                 ó&   • U R                  5       S L$ r(   )Úget_streaming_inputr)   s    r   Úhas_streaming_inputÚ"OperationModel.has_streaming_inputÑ  s   € à×'Ñ'Ó)°Ð5Ð5r   c                 ó&   • U R                  5       S L$ r(   )Úget_streaming_outputr)   s    r   Úhas_streaming_outputÚ#OperationModel.has_streaming_outputÕ  s   € à×(Ñ(Ó*°$Ð6Ð6r   c                 ó8   • U R                  U R                  5      $ r(   )Ú_get_streaming_bodyrJ  r)   s    r   r—  Ú"OperationModel.get_streaming_inputÙ  s   € Ø×'Ñ'¨×(8Ñ(8Ó9Ð9r   c                 ó8   • U R                  U R                  5      $ r(   )rŸ  rN  r)   s    r   r›  Ú#OperationModel.get_streaming_outputÜ  s   € Ø×'Ñ'¨×(9Ñ(9Ó:Ð:r   c                 óŠ   • Uc  gUR                   R                  S5      nUb!  UR                  U   nUR                  S:X  a  U$ g)z?Returns the streaming member's shape if any; or None otherwise.Nr4   Úblob)rd   rV   rˆ   rU   )r*   rQ  r4   Úpayload_shapes       r   rŸ  Ú"OperationModel._get_streaming_bodyß  sK   € à‰=ØØ×%Ñ%×)Ñ)¨)Ó4ˆØÑØ!ŸM™M¨'Ñ2ˆMØ×&Ñ&¨&Ó0Ø$Ð$Ør   c                 óN   • U R                   R                   SU R                   S3$ )Nz(name=r(  rz   r)   s    r   r|   ÚOperationModel.__repr__ê  s$   € Ø—.‘.×)Ñ)Ð*¨&°·±°¸1Ð=Ð=r   )r0  r.  r/  r1  r-  ri   r(   ))r   r   r   r   r^   r   rT   rƒ   r5  r2  rR   r?  r  r  rJ  rN  rR  rW  rZ  r^  rb  re  ri  rm  rq  rÎ   r|  r€  r„  rˆ  rŒ  r‡  r‹  r�  r˜  rœ  r—  r›  rŸ  r|   r   r   r   r   rà   rà     s=  † ô#4ðJ ñ"ó ð"ð ñ1ó ð1ð ñ#ó ð#ð ñ>ó ð>ð ñ>ó ð>ð ñDó ðDð
 ñEó ðEð ñ
ó ð
ð ñ
ó ð
ð ñ

ó ð

ð ñ
ó ð
ð ñ
ó ð
ð ñGó ðGð ñ?ó ð?ð ñ1ó ð1ð ñ5ó ð5ð ñó ðð
 ñ<ó ð<ð ñNó ðNð ñ5ó ð5ð ñHó ðHð ñ=ó ð=ð ñ9ó ð9ð ñ:ó ð:ò8ò9òð ñ6ó ð6ð ñ7ó ð7ò:ò;ò	õ>r   rà   c                   ó<   • \ rS rSrSr\\\\S.r	S r
S	S jrS rSrg)
r»   iî  zResolves shape references.)Ú	structurerÖ   ÚmapÚstringc                 ó   • Xl         0 U l        g r(   )Ú
_shape_mapÚ_shape_cache)r*   Ú	shape_maps     r   r^   ÚShapeResolver.__init__ù  s   € Ø#ŒØˆÕr   Nc                 ó:  •  U R                   U   n U R                  R	                  US   [
        5      nU(       a!  UR                  5       nUR                  U5        U" XU 5      nU$ ! [         a    [        U5      ef = f! [         a    [        SU 35      ef = f)NrQ   z&Shape is missing required key 'type': )	r®  rß   r   ÚSHAPE_CLASSESrV   r.   r   ÚcopyÚupdate)r*   r[   rÆ   r\   Ú	shape_clsÚresults         r   rÄ   ÚShapeResolver.get_shape_by_nameý  s¬   € ð	0ØŸ/™/¨*Ñ5ˆKð	Ø×*Ñ*×.Ñ.¨{¸6Ñ/BÄEÓJˆIö
 Ø%×*Ñ*Ó,ˆKØ×Ñ˜}Ô-Ù˜:°DÓ9ˆØˆøô ó 	0Ü# JÓ/Ð/ð	0ûô ó 	Ü#Ø8¸¸ÐFóð ð	ús   ‚A( ’#B Á(A>ÂBc                 óò   • [        U5      S:X  a  SU;   a  U R                  US   5      $ UR                  5       n UR                  S5      nU R                  X25      $ ! [         a    [        SU 35      ef = f)Né   rQ  z(Invalid model, missing shape reference: )ÚlenrÄ   r´  rb   rß   r"   )r*   rs   rÆ   r[   s       r   rq   ÚShapeResolver.resolve_shape_ref  s‹   € ô ˆy‹>˜QÓ 7¨iÓ#7ð ×)Ñ)¨)°GÑ*<Ó=Ð=à%ŸN™NÓ,ˆMðØ*×.Ñ.¨wÓ7�
ð
 ×)Ñ)¨*ÓDÐDøô	 ó Ü0Ø>¸y¸kÐJóð ðús   »A ÁA6)r¯  r®  r(   )r   r   r   r   r�   r…   rœ   r¡   r©   r³  r^   rÄ   rq   r   r   r   r   r»   r»   î  s*   † Ù$ð $ØØØñ	€Mòôõ"Er   r»   c                   ó(   • \ rS rSrSrSS jrS rSrg)rX   i$  zEA ShapeResolver that will throw ValueErrors when shapes are resolved.Nc                 ó    • [        SU S35      e)NzAttempted to lookup shape 'ú!', but no shape map was provided.©Ú
ValueErrorrÅ   s      r   rÄ   Ú&UnresolvableShapeMap.get_shape_by_name'  s   € ÜØ)¨*¨Ð5VÐWó
ð 	
r   c                 ó    • [        SU S35      e)NzAttempted to resolve shape 'r¿  rÀ  rr   s     r   rq   Ú&UnresolvableShapeMap.resolve_shape_ref,  s    € ÜØ*¨9¨+ð 6 ð !ó
ð 	
r   r   r(   )r   r   r   r   r�   rÄ   rq   r   r   r   r   rX   rX   $  s   † ÙOô
õ

r   rX   c                   ó\   • \ rS rSrSrSrSS jrS rS rS r	S	 r
S
 rS rS rS rS rSrg)ÚDenormalizedStructureBuilderi3  aZ  Build a StructureShape from a denormalized model.

This is a convenience builder class that makes it easy to construct
``StructureShape``s based on a denormalized model.

It will handle the details of creating unique shape names and creating
the appropriate shape map needed by the ``StructureShape`` class.

Example usage::

    builder = DenormalizedStructureBuilder()
    shape = builder.with_members({
        'A': {
            'type': 'structure',
            'members': {
                'B': {
                    'type': 'structure',
                    'members': {
                        'C': {
                            'type': 'string',
                        }
                    }
                }
            }
        }
    }).build_model()
    # ``shape`` is now an instance of botocore.model.StructureShape

:type dict_type: class
:param dict_type: The dictionary type to use, allowing you to opt-in
                  to using OrderedDict or another dict type. This can
                  be particularly useful for testing when order
                  matters, such as for documentation.

)	r¬  ÚintegerÚbooleanr¤  ÚfloatÚ	timestampÚlongÚdoubleÚcharNc                 óˆ   • [        5       U l        [        5       U l        Uc!  U R                  R	                  S5      U l        g g )Nrª  )r   rˆ   ÚShapeNameGeneratorÚ_name_generatorÚnew_shape_namerT   r  s     r   r^   Ú%DenormalizedStructureBuilder.__init__d  s8   € Ü"“}ˆŒÜ1Ó3ˆÔØ‰<Ø×,Ñ,×;Ñ;¸KÓHˆD�Ið r   c                 ó   • Xl         U $ )zP

:type members: dict
:param members: The denormalized members.

:return: self

)Ú_members)r*   rˆ   s     r   Úwith_membersÚ)DenormalizedStructureBuilder.with_membersj  s   € ð  ŒØˆr   c                 óÀ   • [        5       nSU R                  S.nU R                  X!U R                  5        [	        US9n[        U R                  XR                     US9$ )z�Build the model based on the provided members.

:rtype: botocore.model.StructureShape
:return: The built StructureShape object.

rª  )rQ   rˆ   )r°  )r[   r\   r]   )r   rÔ  Ú_build_modelrT   r»   r…   )r*   r¹   ÚdenormalizedÚresolvers       r   Úbuild_modelÚ(DenormalizedStructureBuilder.build_modelv  s]   € ô “ˆàØ—}‘}ñ
ˆð 	×Ñ˜,°·	±	Ô:Ü ¨6Ñ2ˆÜØ—y‘yØŸy™yÑ)Ø#ñ
ð 	
r   c                 ó   • US   S:X  a  U R                  X5      X#'   g US   S:X  a  U R                  X5      X#'   g US   S:X  a  U R                  X5      X#'   g US   U R                  ;   a  U R	                  U5      X#'   g [        SUS    35      e)NrQ   rª  rÖ   r«  zUnknown shape type: )Ú_build_structureÚ_build_listÚ
_build_mapÚSCALAR_TYPESÚ_build_scalarr   )r*   rc   r¹   r[   s       r   rØ  Ú)DenormalizedStructureBuilder._build_modelŠ  s™   € Ø�‰=˜KÓ'Ø!%×!6Ñ!6°uÓ!EˆFÒØ�6‰]˜fÓ$Ø!%×!1Ñ!1°%Ó!@ˆFÒØ�6‰]˜eÓ#Ø!%§¡°Ó!?ˆFÒØ�6‰]˜d×/Ñ/Ó/Ø!%×!3Ñ!3°EÓ!:ˆFÒä#Ð&:¸5À¹=¸/Ð$JÓKÐKr   c                 óø   • [        5       nU R                  U5      nX4S'   UR                  S[        5       5      R                  5        H.  u  pVU R	                  U5      nSU0X5'   U R                  XbU5        M0     U$ )Nrˆ   rQ  )r   Ú_build_initial_shaperV   r‰   Ú_get_shape_namerØ  )r*   rc   r¹   rˆ   rQ  rT   Úmember_modelÚmember_shape_names           r   rÞ  Ú-DenormalizedStructureBuilder._build_structure–  s{   € Ü“-ˆØ×)Ñ)¨%Ó0ˆØ"ˆiÑà"'§)¡)¨I´{³}Ó"E×"KÑ"KÖ"MÑˆDØ $× 4Ñ 4°\Ó BÐØ$Ð&7Ð8ˆG‰MØ×Ñ˜lÐ4EÖFñ #Nð ˆr   c                 ó‚   • U R                  U5      nU R                  U5      nSU0US'   U R                  US   X#5        U$ )NrQ  rŽ   ©ræ  rå  rØ  )r*   rc   r¹   rè  rQ  s        r   rß  Ú(DenormalizedStructureBuilder._build_list¡  sK   € Ø ×0Ñ0°Ó7ÐØ×)Ñ)¨%Ó0ˆØ"Ð$5Ð6ˆˆh‰Ø×Ñ˜% ™/¨6ÔEØˆr   c                 óè   • U R                  US   5      nU R                  US   5      nU R                  U5      nSU0US'   SU0US'   U R                  US   X#5        U R                  US   X$5        U$ )Nr£   r¦   rQ  rë  )r*   rc   r¹   Úkey_shape_nameÚvalue_shape_namerQ  s         r   rà  Ú'DenormalizedStructureBuilder._build_map¨  s…   € Ø×-Ñ-¨e°E©lÓ;ˆØ×/Ñ/°°g±Ó?ÐØ×)Ñ)¨%Ó0ˆØ Ð0ˆˆe‰Ø!Ð#3Ð4ˆˆg‰Ø×Ñ˜% ™,¨Ô?Ø×Ñ˜% ™.¨&ÔCØˆr   c                 óx   • SUS   0nSU;   a  US   US'   [         R                   H  nX1;   d  M
  X   X#'   M     U$ )NrQ   rR   )r.   rh   )r*   rc   rQ  re   s       r   rå  Ú1DenormalizedStructureBuilder._build_initial_shape²  sP   € à�E˜&‘Mð
ˆð ˜eÓ#Ø%*¨?Ñ%;ˆE�/Ñ"Ü×(Ô(ˆDØ�}Ø#™k�“ñ )ð ˆr   c                 ó$   • U R                  U5      $ r(   )rå  ©r*   rc   s     r   râ  Ú*DenormalizedStructureBuilder._build_scalar½  s   € Ø×(Ñ(¨Ó/Ð/r   c                 óT   • SU;   a  US   $ U R                   R                  US   5      $ )Nr[   rQ   )rÐ  rÑ  rô  s     r   ræ  Ú,DenormalizedStructureBuilder._get_shape_nameÀ  s0   € Ø˜5Ó Ø˜Ñ&Ð&à×'Ñ'×6Ñ6°u¸V±}ÓEÐEr   )rÔ  rÐ  rˆ   rT   r(   )r   r   r   r   r�   rá  r^   rÕ  rÛ  rØ  rÞ  rß  rà  rå  râ  ræ  r   r   r   r   rÆ  rÆ  3  sD   † ñ"ðH
€LôIò
ò
ò(
Lò	òòò	ò0õFr   rÆ  c                   ó$   • \ rS rSrSrS rS rSrg)rÏ  iÇ  z§Generate unique shape names for a type.

This class can be used in conjunction with the DenormalizedStructureBuilder
to generate unique shape names for a given type.

c                 ó,   • [        [        5      U l        g r(   )r   ÚintÚ_name_cacher)   s    r   r^   ÚShapeNameGenerator.__init__Ï  s   € Ü&¤sÓ+ˆÕr   c                 óx   • U R                   U==   S-  ss'   U R                   U   nUR                  5        SU 3$ )a  Generate a unique shape name.

This method will guarantee a unique shape name each time it is
called with the same type.

::

    >>> s = ShapeNameGenerator()
    >>> s.new_shape_name('structure')
    'StructureType1'
    >>> s.new_shape_name('structure')
    'StructureType2'
    >>> s.new_shape_name('list')
    'ListType1'
    >>> s.new_shape_name('list')
    'ListType2'


:type type_name: string
:param type_name: The type name (structure, list, map, string, etc.)

:rtype: string
:return: A unique shape name for the given type

rº  ÚType)rû  Ú
capitalize)r*   rU   Úcurrent_indexs      r   rÑ  Ú!ShapeNameGenerator.new_shape_nameÒ  sE   € ð4 	×Ñ˜Ó# qÑ(Ó#Ø×(Ñ(¨Ñ3ˆØ×&Ñ&Ó(Ð)¨¨m¨_Ð=Ð=r   )rû  N)r   r   r   r   r�   r^   rÑ  r   r   r   r   rÏ  rÏ  Ç  s   † ñò,õ>r   rÏ  N))r�   Úcollectionsr   Útypingr   Úbotocore.authr   Úbotocore.compatr   Úbotocore.exceptionsr   r   r	   Úbotocore.utilsr
   r   r   r   Úobjectr¼   Ú	Exceptionr   r   r   r"   r®   r%   r.   r…   rœ   r¡   r©   r­   r²   rµ   r·   rà   r»   rX   rÆ  rÏ  r   r   r   Ú<module>r
     s!  ðñ 4å #Ý å +Ý '÷ñ ÷
ó ñ ‹(€ô	˜	ô 	ô	˜	ô 	ô	˜Yô 	ô	 ô 	ô*�ô *÷
bñ bôJ'1�Uô '1ôTD�ô DôCˆuô Cô-�%ô -ô˜Zô ô
�zô ô
˜Zô ÷UAñ UA÷pf>ñ f>÷R3Eñ 3E÷l
ñ 
÷QFñ QF÷h'>ò '>r   