+
    ¨Ýim2  ã                   ó¸   € ^ RI t ^ RIHt ^ RIHt ^ RIHtHt ^ RIH	t	H
t
 R t ! R R]4      tR	 t ! R
 R4      t ! R R4      t ! R R4      t ! R R4      tR# )é    N)Úcollections_abc)ÚDocumentModifiedShape)ÚConditionBaseÚConditionExpressionBuilder)ÚTypeDeserializerÚTypeSerializerc                 ó2   € V P                  ^ \        4       R# )r   N)ÚinsertÚDynamoDBHighLevelResource)Úbase_classesÚkwargss   &,Ú:/usr/lib/python3/dist-packages/boto3/dynamodb/transform.pyÚregister_high_level_interfacer      s   € Ø×Ñ˜Ô4Ö5ó    c                   ó*   a € ] tR t^t o RtR tRtV tR# )Ú_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                ó   € R # ©N© )ÚselfÚkeyÚvalues   &&&r   Ú__setitem__Ú_ForgetfulDict.__setitem__   s   € Ùr   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r   r   r      s   ø‡ € ñ÷
ð r   r   c                 óB   € \         P                  ! V \        4       R 7      # ))Úmemo)ÚcopyÚdeepcopyr   )Úparamsr   s   &,r   Úcopy_dynamodb_paramsr)   #   s   € Ü�=Š=˜¤nÓ&6Ô7Ð7r   c                   ó2   a a€ ] tR t^'t oV 3R ltRtVtV ;t# )r   c                ó¤  <€ \         SV `  ! V/ VB  V P                  P                  P                  P                  P                  R \        RR7       \        4       V n        V P                  P                  P                  P                  P                  RV P                  P                  RR7       V P                  P                  P                  P                  P                  RV P                  P                  RR7       V P                  P                  P                  P                  P                  RV P                  P                  RR7       \        RR	R
RR7      p\        RRRRR7      p\        RRRRR7      pV P                  P                  P                  P                  P                  RVP                  RR7       V P                  P                  P                  P                  P                  RVP                  RR7       V P                  P                  P                  P                  P                  RVP                  RR7       R# )z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-docsN)Ú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   r4   Ú"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   r   r4   r    r!   Ú__classcell__)rC   r#   s   @@r   r   r   '   s   ù‡ € ÷`
õ `
r   r   c                   ó@   a € ] tR t^‹t o RtRR ltR tR tR tRt	V t
R# )	r9   z>Injects the transformations into the user provided parameters.Nc                óÒ   € Wn         Vf   \        4       V n         W n        Vf   \        4       V n        W0n        Vf   \        4       V n        W@n        Vf   \        4       V n        R # R # r   )Ú_transformerÚParameterTransformerÚ_condition_builderr   Ú_serializerr   Ú_deserializerr   )r   ÚtransformerÚcondition_builderÚ
serializerÚdeserializers   &&&&&r   r4   ÚTransformationInjector.__init__Ž   se   € ð (ÔØÒÜ 4Ó 6ˆDÔà"3ÔØÒ$Ü&@Ó&BˆDÔ#à%ÔØÒÜ-Ó/ˆDÔà)ÔØÒÜ!1Ó!3ˆDÖñ  r   c                óø  € V P                   P                  4        / p/ p\        V P                   VVRR7      pV P                  P	                  WP
                  VR4       \        V P                   VVRR7      pV P                  P	                  WP
                  VR4       RpRpWq9   d   W,          P                  V4       MV'       d   WAV&   W�9   d   W,          P                  V4       R# V'       d   WQV&   R# R# )	a  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_conditionr2   Tr1   ÚExpressionAttributeNamesÚExpressionAttributeValuesN)rJ   ÚresetÚ!ConditionExpressionTransformationrH   Ú	transformÚinput_shapeÚupdate)	r   r(   Úmodelr   Úgenerated_namesÚgenerated_valuesÚtransformationÚexpr_attr_names_inputÚexpr_attr_values_inputs	   &&&,     r   r;   Ú3TransformationInjector.inject_condition_expressions¥   s   € ð 	×Ñ×%Ñ%Ô'ØˆØÐô ;Ø×#Ñ#Ø-Ø/Ø"ô	
ˆð 	×Ñ×#Ñ#Ø×%Ñ% ~Ð7Lô	
ô
 ;Ø×#Ñ#Ø-Ø/Ø!ô	
ˆð 	×Ñ×#Ñ#Ø×%Ñ% ~°ô	
ð !;ÐØ!<Ðð !Ô*ØÕ)×0Ñ0°ÕAçØ0?Ð,Ñ-à!Ô+ØÕ*×1Ñ1Ð2BÖCçØ1AÐ-Ó.ñ  r   c                ó~   € V P                   P                  VVP                  V P                  P                  R4       R# )z3Injects DynamoDB serialization into parameter inputr-   N)rH   rZ   r[   rK   Ú	serialize)r   r(   r]   r   s   &&&,r   r<   Ú3TransformationInjector.inject_attribute_value_input×   s4   € à×Ñ×#Ñ#ØØ×ÑØ×Ñ×&Ñ&Øö		
r   c                óž   € VP                   e?   V P                  P                  VVP                   V P                  P                  R4       R# R# )z/Injects DynamoDB deserialization into responsesNr-   )Úoutput_shaperH   rZ   rL   Údeserialize)r   Úparsedr]   r   s   &&&,r   r=   Ú4TransformationInjector.inject_attribute_value_outputà   sE   € à×ÑÒ)Ø×Ñ×'Ñ'ØØ×"Ñ"Ø×"Ñ"×.Ñ.Ø ö	ñ *r   )rJ   rL   rK   rH   )NNNN)r   r   r   r   r   r4   r;   r<   r=   r    r!   r"   s   @r   r9   r9   ‹   s#   ø‡ € ÙHô4ò.0Bòd
÷ð r   r9   c                   ó4   a € ] tR t^ët o RtRR ltR tRtV tR# )rY   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                ó6   € Wn         W n        W0n        W@n        R # r   )rJ   Ú_placeholder_namesÚ_placeholder_valuesÚ_is_key_condition)r   rN   rS   rT   rU   s   &&&&&r   r4   Ú*ConditionExpressionTransformation.__init__ò   s   € ð #4ÔØ"3ÔØ#5Ô Ø!1Ör   c                ó*  € \        V\        4      '       d}   V P                  P                  WP                  R 7      pV P
                  P                  VP                  4       V P                  P                  VP                  4       VP                  # V# ))rU   )Ú
isinstancer   rJ   Úbuild_expressionrp   rn   r\   Úattribute_name_placeholdersro   Úattribute_value_placeholdersÚcondition_expression)r   r   Úbuilt_expressions   && r   Ú__call__Ú*ConditionExpressionTransformation.__call__þ   sˆ   € Ü�eœ]×+Ò+ð  $×6Ñ6×GÑGØ×(>Ñ(>ð  Hó  Ðð ×#Ñ#×*Ñ*Ø ×<Ñ<ôð ×$Ñ$×+Ñ+Ø ×=Ñ=ôð $×8Ñ8Ð8àˆr   )rJ   rp   rn   ro   N)F)	r   r   r   r   r   r4   ry   r    r!   r"   s   @r   rY   rY   ë   s   ø‡ € ñô
2÷ð r   rY   c                   óB   a € ] tR tRt o RtR tR tR tR tR t	Rt
V tR	# )
rI   i  z?Transforms the input to and output from botocore based on shapec                ó*   € V P                  W!W44       R# )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(   r]   r`   Útarget_shapes   &&&&&r   rZ   ÚParameterTransformer.transform  s   € ð 	×"Ñ" 5°.ÖOr   c                ó\   € VP                   pVR9   d   \        V RV 24      ! WW44       R# R# )Ú	structureÚ_transform_N)r�   ÚmapÚlist)Ú	type_nameÚgetattr)r   r]   r(   r`   r~   r…   s   &&&&& r   r}   Ú*ParameterTransformer._transform_parameters#  s6   € ð —O‘Oˆ	ØÐ4Ô4Ü�D˜K¨	 {Ð3Ô4Ø˜~öñ 5r   c                ó"  € \        V\        P                  4      '       g   R # V Ff  pWQP                  9   g   K  VP                  V,          pVP                  pWt8X  d   V! W%,          4      W%&   KL  V P                  VW%,          VV4       Kh  	  R # r   )rs   r   ÚMappingÚmembersÚnamer}   )r   r]   r(   r`   r~   ÚparamÚmember_modelÚmember_shapes   &&&&&   r   Ú_transform_structureÚ)ParameterTransformer._transform_structure,  sw   € ô ˜&¤/×"9Ñ"9×:Ò:ÙÛˆEØŸ™Ö%Ø$Ÿ}™}¨UÕ3�Ø+×0Ñ0�ØÔ/Ù$2°6µ=Ó$A�F“Mà×.Ñ.Ø$Ø�Ø&Ø$ö	ó r   c                ó  € \        V\        P                  4      '       g   R # VP                  pVP                  pVP                  4        F0  w  rxWd8X  d   V! V4      W'&   K  V P                  WRV,          W44       K2  	  R # r   )rs   r   r‰   r   r‹   Úitemsr}   )	r   r]   r(   r`   r~   Úvalue_modelÚvalue_shaper   r   s	   &&&&&    r   Ú_transform_mapÚ#ParameterTransformer._transform_map?  sg   € Ü˜&¤/×"9Ñ"9×:Ò:ÙØ—k‘kˆØ!×&Ñ&ˆØ Ÿ,™,ž.‰JˆCØÔ*Ù,¨UÓ3�“à×*Ñ*Ø¨¥¨nöó	 )r   c                óø   € \        V\        P                  4      '       g   R # VP                  pVP                  p\        V4       F0  w  rxWd8X  d   V! V4      W'&   K  V P                  WRV,          W44       K2  	  R # r   )rs   r   ÚMutableSequenceÚmemberr‹   Ú	enumerater}   )	r   r]   r(   r`   r~   r�   rŽ   ÚiÚitems	   &&&&&    r   Ú_transform_listÚ$ParameterTransformer._transform_listL  sf   € Ü˜&¤/×"AÑ"A×BÒBÙØ—|‘|ˆØ#×(Ñ(ˆÜ  Ö(‰GˆAØÔ+Ù*¨4Ó0�“	à×*Ñ*Ø ¨¥)¨^öó	 )r   r   N)r   r   r   r   r   rZ   r}   r�   r•   r�   r    r!   r"   s   @r   rI   rI     s'   ø‡ € ÙIòPòòò&÷ð r   rI   )r&   Úboto3.compatr   Úboto3.docs.utilsr   Úboto3.dynamodb.conditionsr   r   Úboto3.dynamodb.typesr   r   r   Údictr   r)   r   r9   rY   rI   r   r   r   Ú<module>r¤      s]   ðó å (Ý 2ß Oß Aò6ô�Tô ò8÷a
ñ a
÷H]ñ ]÷@$ñ $÷NEó Er   