Ë
    £ªðim2  ã                   ó¶   — d dl Z d dlmZ d dlmZ d dlmZmZ d dlm	Z	m
Z
 d„ Z G d„ de«      Zd	„ Z G d
„ d«      Z G d„ d«      Z G d„ d«      Z G d„ d«      Zy)é    N)Úcollections_abc)ÚDocumentModifiedShape)ÚConditionBaseÚConditionExpressionBuilder)ÚTypeDeserializerÚTypeSerializerc                 ó0   — | j                  dt        «       y )Nr   )ÚinsertÚDynamoDBHighLevelResource)Úbase_classesÚkwargss     úo/var/www/acinvestment.org/public_html/aci/backend/venv/lib/python3.12/site-packages/boto3/dynamodb/transform.pyÚregister_high_level_interfacer      s   € Ø×Ñ˜Ô4Õ5ó    c                   ó   — e Zd ZdZd„ Zy)Ú_ForgetfulDictzÏA dictionary that discards any items set on it. For use as `memo` in
    `copy.deepcopy()` when every instance of a repeated object in the deepcopied
    data structure should result in a separate copy.
    c                  ó   — y ©N© )ÚselfÚkeyÚvalues      r   Ú__setitem__z_ForgetfulDict.__setitem__   s   € Ør   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r      s   „ ñó
r   r   c                 ó@   — t        j                  | t        «       ¬«      S )N)Úmemo)ÚcopyÚdeepcopyr   )Úparamsr   s     r   Úcopy_dynamodb_paramsr#   #   s   € Ü�=‰=˜¤nÓ&6Ô7Ð7r   c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )r   c                 ó   •— t        ‰| �  |i |¤Ž | j                  j                  j                  j                  j                  dt        d¬«       t        «       | _        | j                  j                  j                  j                  j                  d| j                  j                  d¬«       | j                  j                  j                  j                  j                  d| j                  j                  d¬«       | j                  j                  j                  j                  j                  d| j                  j                  d¬«       t        d	d
dd¬«      }t        dddd¬«      }t        dddd¬«      }| j                  j                  j                  j                  j                  d|j                  d¬«       | j                  j                  j                  j                  j                  d|j                  d¬«       | j                  j                  j                  j                  j                  d|j                  d¬«       y )Nzprovide-client-params.dynamodbzdynamodb-create-params-copy)Ú	unique_idzbefore-parameter-build.dynamodbzdynamodb-condition-expressionzdynamodb-attr-value-inputzafter-call.dynamodbzdynamodb-attr-value-outputÚAttributeValuezvalid DynamoDB typez€- The value of the attribute. The valid value types are listed in the :ref:`DynamoDB Reference Guide<ref_valid_dynamodb_types>`.z`'string'|123|Binary(b'bytes')|True|None|set(['string'])|set([123])|set([Binary(b'bytes')])|[]|{})Únew_typeÚnew_descriptionÚnew_example_valueÚKeyExpressionz?condition from :py:class:`boto3.dynamodb.conditions.Key` methodz�The condition(s) a key(s) must meet. Valid conditions are listed in the :ref:`DynamoDB Reference Guide<ref_dynamodb_conditions>`.zKey('mykey').eq('myvalue')ÚConditionExpressionz@condition from :py:class:`boto3.dynamodb.conditions.Attr` methodzˆThe condition(s) an attribute(s) must meet. Valid conditions are listed in the :ref:`DynamoDB Reference Guide<ref_dynamodb_conditions>`.z!Attr('myattribute').eq('myvalue')z"docs.*.dynamodb.*.complete-sectionzdynamodb-attr-value-docszdynamodb-key-expression-docszdynamodb-cond-expression-docs)ÚsuperÚ__init__ÚmetaÚclientÚeventsÚregisterr#   ÚTransformationInjectorÚ	_injectorÚinject_condition_expressionsÚinject_attribute_value_inputÚinject_attribute_value_outputr   Ú(replace_documentation_for_matching_shape)r   Úargsr   Úattr_value_shape_docsÚkey_expression_shape_docsÚcon_expression_shape_docsÚ	__class__s         €r   r.   z"DynamoDBHighLevelResource.__init__(   s  ø€ Ü‰Ñ˜$Ð) &Ò)ð 	�	‰	×Ñ×Ñ×$Ñ$×-Ñ-Ø,Ü Ø3ð 	.ô 	
ô 0Ó1ˆŒð 	�	‰	×Ñ×Ñ×$Ñ$×-Ñ-Ø-Ø�N‰N×7Ñ7Ø5ð 	.ô 	
ð 	�	‰	×Ñ×Ñ×$Ñ$×-Ñ-Ø-Ø�N‰N×7Ñ7Ø1ð 	.ô 	
ð 	�	‰	×Ñ×Ñ×$Ñ$×-Ñ-Ø!Ø�N‰N×8Ñ8Ø2ð 	.ô 	
ô !6ØØ*ðMð
>ô!
Ðô %:ØððLð ?ô%
Ð!ô %:Ø!ððLð Fô%
Ð!ð 	�	‰	×Ñ×Ñ×$Ñ$×-Ñ-Ø0Ø!×JÑJØ0ð 	.ô 	
ð 	�	‰	×Ñ×Ñ×$Ñ$×-Ñ-Ø0Ø%×NÑNØ4ð 	.ô 	
ð 	�	‰	×Ñ×Ñ×$Ñ$×-Ñ-Ø0Ø%×NÑNØ5ð 	.õ 	
r   )r   r   r   r.   Ú__classcell__)r=   s   @r   r   r   '   s   ø„ ÷`
ð `
r   r   c                   ó2   — e Zd ZdZ	 	 	 	 dd„Zd„ Zd„ Zd„ Zy)r3   z>Injects the transformations into the user provided parameters.Nc                 óÆ   — || _         |€t        «       | _         || _        |€t        «       | _        || _        |€t        «       | _        || _        |€t        «       | _        y y r   )Ú_transformerÚParameterTransformerÚ_condition_builderr   Ú_serializerr   Ú_deserializerr   )r   ÚtransformerÚcondition_builderÚ
serializerÚdeserializers        r   r.   zTransformationInjector.__init__Ž   sm   € ð (ˆÔØÐÜ 4Ó 6ˆDÔà"3ˆÔØÐ$Ü&@Ó&BˆDÔ#à%ˆÔØÐÜ-Ó/ˆDÔà)ˆÔØÐÜ!1Ó!3ˆDÕð  r   c                 óÎ  — | j                   j                  «        i }i }t        | j                   ||d¬«      }| j                  j	                  ||j
                  |d«       t        | j                   ||d¬«      }| j                  j	                  ||j
                  |d«       d}d}||v r||   j                  |«       n|r|||<   ||v r||   j                  |«       y|r|||<   yy)	a7  Injects the condition expression transformation into the parameters

        This injection includes transformations for ConditionExpression shapes
        and KeyExpression shapes. It also handles any placeholder names and
        values that are generated when transforming the condition expressions.
        F)Úplaceholder_namesÚplaceholder_valuesÚis_key_conditionr,   Tr+   ÚExpressionAttributeNamesÚExpressionAttributeValuesN)rC   ÚresetÚ!ConditionExpressionTransformationrA   Ú	transformÚinput_shapeÚupdate)	r   r"   Úmodelr   Úgenerated_namesÚgenerated_valuesÚtransformationÚexpr_attr_names_inputÚexpr_attr_values_inputs	            r   r5   z3TransformationInjector.inject_condition_expressions¥   s  € ð 	×Ñ×%Ñ%Ô'ØˆØÐô ;Ø×#Ñ#Ø-Ø/Ø"ô	
ˆð 	×Ñ×#Ñ#Ø�E×%Ñ% ~Ð7Lô	
ô
 ;Ø×#Ñ#Ø-Ø/Ø!ô	
ˆð 	×Ñ×#Ñ#Ø�E×%Ñ% ~°ô	
ð !;ÐØ!<Ðð ! FÑ*ØÐ(Ñ)×0Ñ0°ÕAáØ0?�Ð,Ñ-à! VÑ+ØÐ)Ñ*×1Ñ1Ð2BÕCáØ1A�Ð-Ò.ð  r   c                 ó|   — | j                   j                  ||j                  | j                  j                  d«       y)z3Injects DynamoDB serialization into parameter inputr'   N)rA   rR   rS   rD   Ú	serialize)r   r"   rU   r   s       r   r6   z3TransformationInjector.inject_attribute_value_input×   s4   € à×Ñ×#Ñ#ØØ×ÑØ×Ñ×&Ñ&Øõ		
r   c                 ó–   — |j                   �=| j                  j                  ||j                   | j                  j                  d«       yy)z/Injects DynamoDB deserialization into responsesNr'   )Úoutput_shaperA   rR   rE   Údeserialize)r   ÚparsedrU   r   s       r   r7   z4TransformationInjector.inject_attribute_value_outputà   sE   € à×ÑÐ)Ø×Ñ×'Ñ'ØØ×"Ñ"Ø×"Ñ"×.Ñ.Ø õ	ð *r   )NNNN)r   r   r   r   r.   r5   r6   r7   r   r   r   r3   r3   ‹   s)   „ ÙHð ØØØó4ò.0Bòd
ór   r3   c                   ó    — e Zd ZdZ	 dd„Zd„ Zy)rQ   zÄProvides a transformation for condition expressions

    The ``ParameterTransformer`` class can call this class directly
    to transform the condition expressions in the parameters provided.
    c                 ó<   — || _         || _        || _        || _        y r   )rC   Ú_placeholder_namesÚ_placeholder_valuesÚ_is_key_condition)r   rG   rK   rL   rM   s        r   r.   z*ConditionExpressionTransformation.__init__ò   s$   € ð #4ˆÔØ"3ˆÔØ#5ˆÔ Ø!1ˆÕr   c                 ó   — t        |t        «      r}| j                  j                  || j                  ¬«      }| j
                  j                  |j                  «       | j                  j                  |j                  «       |j                  S |S )N)rM   )Ú
isinstancer   rC   Úbuild_expressionre   rc   rT   Úattribute_name_placeholdersrd   Úattribute_value_placeholdersÚcondition_expression)r   r   Úbuilt_expressions      r   Ú__call__z*ConditionExpressionTransformation.__call__þ   s‡   € Ü�eœ]Ô+ð  $×6Ñ6×GÑGØ¨×(>Ñ(>ð  Hó  Ðð ×#Ñ#×*Ñ*Ø ×<Ñ<ôð ×$Ñ$×+Ñ+Ø ×=Ñ=ôð $×8Ñ8Ð8àˆr   N)F)r   r   r   r   r.   rm   r   r   r   rQ   rQ   ë   s   „ ñð ó
2ór   rQ   c                   ó.   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zy)rB   z?Transforms the input to and output from botocore based on shapec                 ó,   — | j                  ||||«       y)aä  Transforms the dynamodb input to or output from botocore

        It applies a specified transformation whenever a specific shape name
        is encountered while traversing the parameters in the dictionary.

        :param params: The parameters structure to transform.
        :param model: The operation model.
        :param transformation: The function to apply the parameter
        :param target_shape: The name of the shape to apply the
            transformation to
        N)Ú_transform_parameters)r   r"   rU   rX   Útarget_shapes        r   rR   zParameterTransformer.transform  s   € ð 	×"Ñ" 5¨&°.À,ÕOr   c                 óV   — |j                   }|dv r t        | d|› �«      ||||«       y y )N)Ú	structureÚmapÚlistÚ_transform_)Ú	type_nameÚgetattr)r   rU   r"   rX   rq   rw   s         r   rp   z*ParameterTransformer._transform_parameters#  s<   € ð —O‘Oˆ	ØÐ4Ñ4Ø4ŒG�D˜K¨	 {Ð3Ó4Ø�v˜~¨|õð 5r   c                 óò   — t        |t        j                  «      sy |D ]W  }||j                  v sŒ|j                  |   }|j                  }||k(  r |||   «      ||<   ŒA| j                  |||   ||«       ŒY y r   )rg   r   ÚMappingÚmembersÚnamerp   )r   rU   r"   rX   rq   ÚparamÚmember_modelÚmember_shapes           r   Ú_transform_structurez)ParameterTransformer._transform_structure,  sƒ   € ô ˜&¤/×"9Ñ"9Ô:ØØò 	ˆEØ˜Ÿ™Ò%Ø$Ÿ}™}¨UÑ3�Ø+×0Ñ0�Ø <Ò/Ù$2°6¸%±=Ó$A�F˜5’Mà×.Ñ.Ø$Ø˜u™Ø&Ø$õ	ñ	r   c                 óê   — t        |t        j                  «      sy |j                  }|j                  }|j                  «       D ]-  \  }}||k(  r ||«      ||<   Œ| j                  |||   ||«       Œ/ y r   )rg   r   rz   r   r|   Úitemsrp   )	r   rU   r"   rX   rq   Úvalue_modelÚvalue_shaper   r   s	            r   Ú_transform_mapz#ParameterTransformer._transform_map?  ss   € Ü˜&¤/×"9Ñ"9Ô:ØØ—k‘kˆØ!×&Ñ&ˆØ Ÿ,™,›.ò 	‰JˆC�Ø˜lÒ*Ù,¨UÓ3��s’à×*Ñ*Ø ¨¡¨n¸lõñ		r   c                 óà   — t        |t        j                  «      sy |j                  }|j                  }t        |«      D ]-  \  }}||k(  r ||«      ||<   Œ| j                  |||   ||«       Œ/ y r   )rg   r   ÚMutableSequenceÚmemberr|   Ú	enumeraterp   )	r   rU   r"   rX   rq   r~   r   ÚiÚitems	            r   Ú_transform_listz$ParameterTransformer._transform_listL  sr   € Ü˜&¤/×"AÑ"AÔBØØ—|‘|ˆØ#×(Ñ(ˆÜ  Ó(ò 	‰GˆAˆtØ˜|Ò+Ù*¨4Ó0��q’	à×*Ñ*Ø  &¨¡)¨^¸\õñ		r   N)	r   r   r   r   rR   rp   r€   r…   rŒ   r   r   r   rB   rB     s   „ ÙIòPòòò&ór   rB   )r    Úboto3.compatr   Úboto3.docs.utilsr   Úboto3.dynamodb.conditionsr   r   Úboto3.dynamodb.typesr   r   r   Údictr   r#   r   r3   rQ   rB   r   r   r   ú<module>r’      s]   ðó å (Ý 2ß Oß Aò6ô�Tô ò8÷a
ñ a
÷H]ñ ]÷@$ñ $÷NEò Er   