403Webshell
Server IP : 172.67.201.108  /  Your IP : 216.73.216.55
Web Server : Apache/2.4.68 (Amazon Linux) OpenSSL/3.5.7
System : Linux ip-172-31-69-123.ec2.internal 6.1.177-224.371.amzn2023.x86_64 #1 SMP PREEMPT_DYNAMIC Mon Jul 27 20:28:29 UTC 2026 x86_64
User : ec2-user ( 1000)
PHP Version : 8.4.24
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /lib/python3.9/site-packages/awscli/botocore/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib/python3.9/site-packages/awscli/botocore/__pycache__/model.cpython-39.pyc
a

wA�iZ~�@s�dZddlmZddlmZmZddlmZddlm	Z	ddl
mZmZm
Z
ddlmZmZmZmZe�ZGdd	�d	e�ZGd
d�de�ZGdd
�d
e�ZGdd�de�ZGdd�de�ZGdd�d�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�Z Gdd�de�Z!Gdd�de�Z"Gd d!�d!e�Z#Gd"d#�d#�Z$Gd$d%�d%�Z%Gd&d'�d'�Z&Gd(d)�d)�Z'Gd*d+�d+�Z(Gd,d-�d-�Z)d.S)/z-Abstractions to interact with service models.�)�defaultdict)�
NamedTuple�Union)�resolve_auth_type)�OrderedDict)�MissingServiceIdError�UndefinedModelAttributeError� UnsupportedServiceProtocolsError)�$PRIORITY_ORDERED_SUPPORTED_PROTOCOLS�CachedProperty�hyphenize_service_id�instance_cachec@seZdZdS)�NoShapeFoundErrorN��__name__�
__module__�__qualname__�rr�9/usr/lib/python3.9/site-packages/awscli/botocore/model.pyr#src@seZdZdS)�InvalidShapeErrorNrrrrrr'src@seZdZdS)�OperationNotFoundErrorNrrrrrr+src@seZdZdS)�InvalidShapeReferenceErrorNrrrrrr/src@seZdZdd�ZdS)�	ServiceIdcCst|�S�N)r��selfrrr�	hyphenize4szServiceId.hyphenizeN)rrrrrrrrr3src@sneZdZdZgd�Zgd�ZeZddd�Ze	dd��Z
e	d	d
��Ze	dd��Zd
d�Z
dd�Zedd��ZdS)�Shapez3Object representing a shape from the service model.)�locationNameZ	queryNameZ	flattened�location�payloadZ	streaming�timestampFormatZxmlNamespaceZ
resultWrapperZxmlAttribute�eventstreamZeventZeventheaderZeventpayloadZ	jsonvaluer!Z	hostLabel)�required�min�maxZ	sensitive�enum�idempotencyToken�error�	exceptionZendpointdiscoveryidZ	retryable�document�union�contextParam�clientContextParamsZrequiresLength�patternNcCsB||_|d|_|�dd�|_||_|dur2t�}||_i|_dS)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�getr0�_shape_model�UnresolvableShapeMap�_shape_resolver�_cache)r�
shape_name�shape_model�shape_resolverrrr�__init__fs
zShape.__init__cCsF|j}i}|jD]}||jvr||||<qd|vrB|�d�|d<|S)aSerialization 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.

        rr2)r5�SERIALIZED_ATTRS�pop)r�model�
serialization�attrrrrr@�s

zShape.serializationcCs0|j}i}|jD]}||jvr||||<q|S)a�Metadata about the shape.

        This requires optional information about the shape, including:

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

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

        )r5�METADATA_ATTRS)rr?�metadatarArrrrC�s

zShape.metadatacCs|j�dg�S)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#�rCr4rrrr�required_members�s	zShape.required_memberscCs|j�|�Sr�r7�resolve_shape_ref�r�	shape_refrrr�_resolve_shape_ref�szShape._resolve_shape_refcCsd|jj�d|j�d�S)N�<�(z)>��	__class__rr2rrrr�__repr__�szShape.__repr__cCsdSrrrrrr�event_stream_name�szShape.event_stream_name)N)rrr�__doc__r=rBr�MAP_TYPEr<rr@rCrErJrO�propertyrPrrrrr8s
"
 


rc@sHeZdZedd��Zedd��Zedd��Zedd��Zed	d
��ZdS)�StructureShapecCs>|j�d|���}|��}|��D]\}}|�|�||<q"|S)N�members)r5r4rR�itemsrJ)rrUZ
shape_membersr2rIrrrrU�s
zStructureShape.memberscCs,|j��D]\}}|j�d�r
|Sq
dS)Nr")rUrVr@r4)r�member_name�memberrrrrP�s
z StructureShape.event_stream_namecCs8|j�dd�sdS|j�di�}|�d�}|r2|S|jS)Nr)Fr(�code)rCr4r2)rZerror_metadatarYrrr�
error_code�s
zStructureShape.error_codecCs|j�dd�S)Nr*FrDrrrr�is_document_type�szStructureShape.is_document_typecCs|j�dd�S)Nr+FrDrrrr�is_tagged_unionszStructureShape.is_tagged_unionN)	rrrrrUrPrZr[r\rrrrrT�s





rTc@seZdZedd��ZdS)�	ListShapecCs|�|jd�S)NrX�rJr5rrrrrXszListShape.memberN)rrrrrXrrrrr]sr]c@s$eZdZedd��Zedd��ZdS)�MapShapecCs|�|jd�S)N�keyr^rrrrr`
szMapShape.keycCs|�|jd�S)N�valuer^rrrrraszMapShape.valueN)rrrrr`rarrrrr_s
r_c@seZdZedd��ZdS)�StringShapecCs|j�dg�S)Nr&rDrrrrr&szStringShape.enumN)rrrrr&rrrrrbsrbc@s&eZdZUeed<eeefed<dS)�StaticContextParameterr2raN)rrr�str�__annotations__r�boolrrrrrcs
rcc@seZdZUeed<eed<dS)�ContextParameterr2rWN�rrrrdrerrrrrg!s
rgc@s&eZdZUeed<eed<eed<dS)�ClientContextParameterr2r/r0Nrhrrrrri&s
ric@s6eZdZdZd6dd�Zd7dd�Zdd�Zed	d
��Zdd�Z	ed
d��Z
edd��Zedd��Z
edd��Zedd��Zedd��Zedd��Zedd��Zedd��Zedd ��Zed!d"��Zed#d$��Zed%d&��Zed'd(��Zed)d*��Zed+d,��Zd-d.�Zed/d0��Zejd1d0��Zed2d3��Zd4d5�Z dS)8�ServiceModelzQ

    :ivar service_description: The parsed service description dictionary.

    NcCs<||_|�di�|_t|�di��|_t|_||_i|_dS)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.

        rC�shapesN)	�_service_descriptionr4rC�
ShapeResolverr7�NOT_SET�_signature_version�
_service_nameZ_instance_cache)rZservice_description�service_namerrrr<3s
�zServiceModel.__init__cCs|j�||�Sr)r7�get_shape_by_name�rr9�
member_traitsrrr�	shape_forRs�zServiceModel.shape_forcCs|j�|d�Sr)�_error_code_cacher4)rrZrrr�shape_for_error_codeWsz!ServiceModel.shape_for_error_codecCs"i}|jD]}|j}|||<q
|Sr)�error_shapesrZ)rZerror_code_cache�error_shaperYrrrrvZs


zServiceModel._error_code_cachecCs|j�|�SrrFrHrrrrGbszServiceModel.resolve_shape_refcCst|j�di��S)Nrk��listrlr4rrrr�shape_nameseszServiceModel.shape_namescCs6g}|jD]&}|�|�}|j�dd�r
|�|�q
|S)Nr)F)r|rurCr4�append)rrxr9ryrrrrxis

zServiceModel.error_shapescCs:z|jd|}Wnty,t|��Yn0t|||�S�NZ
operations)rl�KeyErrorr�OperationModel)rZoperation_namer?rrr�operation_modelrs
zServiceModel.operation_modelcCs|j�dd�S�Nr0r1)rlr4rrrrr0zszServiceModel.documentationcCst|j�dg��Sr~rzrrrr�operation_names~szServiceModel.operation_namescCs|jdur|jS|jSdS)a�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.

        N)rp�endpoint_prefixrrrrrq�s
zServiceModel.service_namecCs4zt|�d��WSty.t|jd��Yn0dS)NZ	serviceId)rq)r�_get_metadata_propertyrrrprrrr�
service_id�szServiceModel.service_idcCs|j�d�}|dur|j}|S)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.
        ZsigningNameN)rCr4r�)r�signing_namerrrr��szServiceModel.signing_namecCs
|�d�S)NZ
apiVersion�r�rrrr�api_version�szServiceModel.api_versioncCs
|�d�S)N�protocolr�rrrrr��szServiceModel.protocolcCs
|�d�S)N�	protocolsr�rrrrr��szServiceModel.protocolscCs@|j�d�r:tD]}||jvr|Sqtt|j|jd��|jS)Nr�)Zbotocore_supported_protocolsZservice_supported_protocolsZservice)rCr4r
r�r	rqr�)rr�rrr�resolved_protocol�s

�zServiceModel.resolved_protocolcCs
|�d�S)NZendpointPrefixr�rrrrr��szServiceModel.endpoint_prefixcCs(|jD]}|�|�}|jr|SqdSr)r�r��is_endpoint_discovery_operation�rZ	operationr?rrr�endpoint_discovery_operation�s

z)ServiceModel.endpoint_discovery_operationcCs6|jD]*}|�|�}|jdur|j�d�rdSqdS)Nr#TF)r�r��endpoint_discoveryr4r�rrr�endpoint_discovery_required�s

�
�z(ServiceModel.endpoint_discovery_requiredcCs |j�di�}dd�|��D�S)Nr-cSs&g|]\}}t||d|dd��qS)r/r0)r2r/r0)ri)�.0Z
param_nameZ	param_valrrr�
<listcomp>�s��z:ServiceModel.client_context_parameters.<locals>.<listcomp>)rlr4rV�r�paramsrrr�client_context_parameters�s�z&ServiceModel.client_context_parameterscCs8z|j|WSty2td|�d|����Yn0dS)N�"z," not defined in the metadata of the model: )rCrr�rr2rrrr��s�z#ServiceModel._get_metadata_propertycCs"|jtur|j�d�}||_|jS)NZsignatureVersion)rornrCr4)r�signature_versionrrrr��s
zServiceModel.signature_versioncCs
||_dSr)ro)rrarrrr��scCs
d|jvS)NZawsQueryCompatible�rCrrrr�is_query_compatible�sz ServiceModel.is_query_compatiblecCs|jj�d|j�d�S)NrL�))rNrrqrrrrrOszServiceModel.__repr__)N)N)!rrrrQr<rurwrrvrGr|rxr
r�r0r�rqr�r�r�r�r�r�r�r�r�r�r�rSr��setterr�rOrrrrrj,s^






















rjc@s�eZdZdFdd�Zedd��Zedd��Zedd	��Zed
d��Z	edd
��Z
edd��Zedd��Zedd��Z
edd��Zedd��Zedd��Zedd��Zedd��Zedd��Zed d!��Zed"d#��Zed$d%��Zed&d'��Zed(d)��Zed*d+��Zed,d-��Zed.d/��Zed0d1��Zed2d3��Zd4d5�Zd6d7�Zd8d9�Z ed:d;��Z!ed<d=��Z"d>d?�Z#d@dA�Z$dBdC�Z%dDdE�Z&dS)Gr�NcCs8||_||_||_|�d�|_|j|_|�di�|_dS)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.

        r2�httpN)�_operation_model�_service_model�	_api_namer4Z
_wire_namerCr�)rr��
service_modelr2rrrr<szOperationModel.__init__cCs|jdur|jS|jSdSr)r��	wire_namerrrrr2*s
zOperationModel.namecCs|j�d�S)aRThe 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 operaiton name
        we send across the wire (e.g cloudfront).

        Any serialization code should use ``wire_name``.

        r2�r�r4rrrrr�1szOperationModel.wire_namecCs|jSr)r�rrrrr�?szOperationModel.service_modelcCs|j�dd�Sr�r�rrrrr0CszOperationModel.documentationcCs|j�dd�S)N�
deprecatedFr�rrrrr�GszOperationModel.deprecatedcCs|j�dd�S)NZendpointdiscoveryr�rrrrr�Ksz!OperationModel.endpoint_discoverycCs|j�dd�S)NZendpointoperationFr�rrrrr�Qsz.OperationModel.is_endpoint_discovery_operationcCs d|jvrdS|j�|jd�S)N�input�r�r�rGrrrr�input_shapeUs

�zOperationModel.input_shapecCs d|jvrdS|j�|jd�S)N�outputr�rrrr�output_shape_s

�zOperationModel.output_shapecCs"|j}|sgSdd�|j��D�S)NcSs(g|] \}}d|jvr|jdr|�qS)r'r��r�r2�shaperrrr�ps

�z5OperationModel.idempotent_members.<locals>.<listcomp>�r�rUrV)rr�rrr�idempotent_membersjs�z!OperationModel.idempotent_memberscCs |j�di�}dd�|��D�S)NZstaticContextParamscSs"g|]\}}t||�d�d��qS)ra)r2ra)rcr4)r�r2Zpropsrrrr�zs�z<OperationModel.static_context_parameters.<locals>.<listcomp>)r�r4rVr�rrr�static_context_parametersws�z(OperationModel.static_context_parameterscCs |js
gSdd�|jj��D�S)NcSs>g|]6\}}d|jvrd|jdvrt|jdd|d��qS)r,r2)r2rW)rCrgr�rrrr��s
��z5OperationModel.context_parameters.<locals>.<listcomp>r�rrrr�context_parameterss

�z!OperationModel.context_parameterscCs|j�dg�S)NZoperationContextParamsr�rrrr�operation_context_parameters�sz+OperationModel.operation_context_parameterscCs|j�d�S)NZrequestcompressionr�rrrr�request_compression�sz"OperationModel.request_compressioncCs|j�d�S)N�authr�rrrrr��szOperationModel.authcCs|j�d�S)NZauthtyper�rrrr�	auth_type�szOperationModel.auth_typecCs|jrt|j�S|jSr)r�rr�rrrr�resolved_auth_type�s
z!OperationModel.resolved_auth_typecCs|j�d�S)NZunsignedPayloadr�rrrr�unsigned_payload�szOperationModel.unsigned_payloadcs$�j�dg�}t�fdd�|D��S)N�errorsc3s|]}�j�|�VqdSr)r�rG)r��srrr�	<genexpr>��z.OperationModel.error_shapes.<locals>.<genexpr>)r�r4r{)rrkrrrrx�szOperationModel.error_shapescCs|j�d�S)N�endpointr�rrrrr��szOperationModel.endpointcCs|j�dd�S)NZhttpChecksumRequiredFr�rrrr�http_checksum_required�sz%OperationModel.http_checksum_requiredcCs|j�di�S)NZhttpChecksumr�rrrr�
http_checksum�szOperationModel.http_checksumcCs|��duSr)�get_event_stream_inputrrrr�has_event_stream_input�sz%OperationModel.has_event_stream_inputcCs|��duSr)�get_event_stream_outputrrrr�has_event_stream_output�sz&OperationModel.has_event_stream_outputcCs|�|j�Sr)�_get_event_streamr�rrrrr��sz%OperationModel.get_event_stream_inputcCs|�|j�Sr)r�r�rrrrr��sz&OperationModel.get_event_stream_outputcCs$|durdS|j}|r |j|SdS)zAReturns the event stream member's shape if any or None otherwise.N)rPrU)rr�Z
event_namerrrr��s
z OperationModel._get_event_streamcCs|��duSr)�get_streaming_inputrrrr�has_streaming_input�sz"OperationModel.has_streaming_inputcCs|��duSr)�get_streaming_outputrrrr�has_streaming_output�sz#OperationModel.has_streaming_outputcCs|�|j�Sr)�_get_streaming_bodyr�rrrrr��sz"OperationModel.get_streaming_inputcCs|�|j�Sr)r�r�rrrrr��sz#OperationModel.get_streaming_outputcCs<|durdS|j�d�}|dur8|j|}|jdkr8|SdS)z?Returns the streaming member's shape if any; or None otherwise.Nr �blob)r@r4rUr3)rr�r Z
payload_shaperrrr��s

z"OperationModel._get_streaming_bodycCs|jj�d|j�d�S)Nz(name=r�rMrrrrrO�szOperationModel.__repr__)N)'rrrr<rr2rSr�r�r0r�r�r�r�r�r�r�r�r�r�r�r�r�r�rxr�r�r�r�r�r�r�r�r�r�r�r�r�rOrrrrr�sx
%








	
















	

r�c@s8eZdZdZeeeed�Zdd�Z	d
dd�Z
dd	�ZdS)rmzResolves shape references.)�	structurer{�map�stringcCs||_i|_dSr)�
_shape_mapZ_shape_cache)r�	shape_maprrrr<�szShapeResolver.__init__NcCs�z|j|}Wnty(t|��Yn0z|j�|dt�}Wn ty`td|����Yn0|rx|��}|�|�||||�}|S)Nr/z&Shape is missing required key 'type': )	r�rr�
SHAPE_CLASSESr4rr�copy�update)rr9rtr:Z	shape_cls�resultrrrrr�s�

zShapeResolver.get_shape_by_namecCsjt|�dkr"d|vr"|�|d�S|��}z|�d�}Wn tyXtd|����Yn0|�||�SdS)N�r�z(Invalid model, missing shape reference: )�lenrrr�r>rr)rrIrtr9rrrrG
s�
zShapeResolver.resolve_shape_ref)N)rrrrQrTr]r_rbr�r<rrrGrrrrrm�s�
rmc@s"eZdZdZddd�Zdd�ZdS)r6zEA ShapeResolver that will throw ValueErrors when shapes are resolved.NcCstd��dS)Nz>Attempted to lookup shape '%s', but no shape map was provided.��
ValueErrorrsrrrrr&s�z&UnresolvableShapeMap.get_shape_by_namecCstd��dS)Nz?Attempted to resolve shape '%s', but no shape map was provided.r�rHrrrrG+s�z&UnresolvableShapeMap.resolve_shape_ref)N)rrrrQrrrGrrrrr6#s
r6c@sbeZdZdZddd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dS)�DenormalizedStructureBuildera�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.

    NcCs*t�|_t�|_|dur&|j�d�|_dS)Nr�)rrU�ShapeNameGenerator�_name_generator�new_shape_namer2r�rrrr<Wsz%DenormalizedStructureBuilder.__init__cCs
||_|S)zp

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

        :return: self

        )�_members)rrUrrr�with_members]s	z)DenormalizedStructureBuilder.with_memberscCsBt�}d|jd�}|�|||j�t|d�}t|j||j|d�S)z�Build the model based on the provided members.

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

        r�)r/rU)r�)r9r:r;)rr��_build_modelr2rmrT)rrkZdenormalizedZresolverrrr�build_modelis�
�z(DenormalizedStructureBuilder.build_modelcCs�|ddkr|�||�||<nj|ddkr<|�||�||<nL|ddkrZ|�||�||<n.|ddvrv|�|�||<ntd�|d���dS)Nr/r�r{r�)	r�ZintegerZbooleanr��floatZ	timestampZlongZdouble�charzUnknown shape type: {})�_build_structure�_build_list�
_build_map�
_build_scalarr�format)rr?rkr9rrrr�}s�z)DenormalizedStructureBuilder._build_modelcCs\t�}|�|�}||d<|�dt����D],\}}|�|�}d|i||<|�|||�q*|S)NrUr�)r�_build_initial_shaper4rV�_get_shape_namer�)rr?rkrUr�r2Zmember_model�member_shape_namerrrr��s

z-DenormalizedStructureBuilder._build_structurecCs6|�|�}|�|�}d|i|d<|�|d||�|S)Nr�rX�r�r�r�)rr?rkr�r�rrrr��s


z(DenormalizedStructureBuilder._build_listcCsf|�|d�}|�|d�}|�|�}d|i|d<d|i|d<|�|d||�|�|d||�|S)Nr`rar�r�)rr?rkZkey_shape_nameZvalue_shape_namer�rrrr��s
z'DenormalizedStructureBuilder._build_mapcCsDd|di}d|vr |d|d<tjD]}||vr&||||<q&|S)Nr/r0)rrB)rr?r�rArrrr��s�
z1DenormalizedStructureBuilder._build_initial_shapecCs
|�|�Sr)r��rr?rrrr��sz*DenormalizedStructureBuilder._build_scalarcCs$d|vr|dS|j�|d�SdS)Nr9r/)r�r�r�rrrr��sz,DenormalizedStructureBuilder._get_shape_name)N)rrrrQr<r�r�r�r�r�r�r�r�r�rrrrr�2s$

r�c@s eZdZdZdd�Zdd�ZdS)r�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.

    cCstt�|_dSr)r�int�_name_cacherrrrr<�szShapeNameGenerator.__init__cCs.|j|d7<|j|}|���d|��S)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)rr3Z
current_indexrrrr��s
z!ShapeNameGenerator.new_shape_nameN)rrrrQr<r�rrrrr��sr�N)*rQ�collectionsr�typingrrZ
botocore.authrZbotocore.compatrZbotocore.exceptionsrrr	Zbotocore.utilsr
rrr
�objectrn�	ExceptionrrrrrdrrrTr]r_rbrcrgrirjr�rmr6r�r�rrrr�<module>
s<%*
Yj6

Youez - 2016 - github.com/yon3zu
LinuXploit