ó
    Ú°›j<  ã                   óŽ   • S r SSKrSSKrSSKJr  SSKJr  SSKJrJr  S r	S r
S r " S	 S
5      r " S S5      r " S S5      rg)aQ  User input parameter validation.

This module handles user input parameter validation
against a provided input model.

Note that the objects in this module do *not* mutate any
arguments.  No type version happens here.  It is up to another
layer to properly convert arguments to any required types.

Validation Errors
-----------------


é    N)Údatetime)ÚParamValidationError)Úis_json_value_headerÚparse_to_aware_datetimec                 ó’   • [        5       nUR                  X5      nUR                  5       (       a  [        UR	                  5       S9eg)aF  Validates input parameters against a schema.

This is a convenience function that validates parameters against a schema.
You can also instantiate and use the ParamValidator class directly if you
want more control.

If there are any validation errors then a ParamValidationError
will be raised.  If there are no validation errors than no exception
is raised and a value of None is returned.

:param params: The user provided input parameters.

:type shape: botocore.model.Shape
:param shape: The schema which the input parameters should
    adhere to.

:raise: ParamValidationError

©ÚreportN)ÚParamValidatorÚvalidateÚ
has_errorsr   Úgenerate_report)ÚparamsÚshapeÚ	validatorr	   s       ÚN/home/mande/repo/quber/.venv/lib/python3.13/site-packages/botocore/validate.pyÚvalidate_parametersr      sD   € ô( Ó €IØ×Ñ Ó.€FØ×Ñ×ÑÜ"¨&×*@Ñ*@Ó*BÑCÐCð ó    c                 ó   ^ • U 4S jnU$ )Nc                 ó&   >^ ^• UU 4S jnU4S jmU$ )Nc                 ó6   >• T" XU5      (       a
  T" XX#U5      $ g ©N© )ÚselfÚparamr   ÚerrorsÚnameÚ_type_checkÚfuncs        €€r   Ú_on_passes_type_checkÚKtype_check.<locals>._create_type_check_guard.<locals>._on_passes_type_check4   s$   ø€ Ù˜5¨$×/Ñ/Ù˜D¨¸Ó=Ð=ð 0r   c                 óŽ   >• [        U T5      (       d.  T Vs/ s H  n[        U5      PM     nnUR                  USU US9  ggs  snf )Núinvalid type©r   Úvalid_typesFT)Ú
isinstanceÚstrr	   )r   r   r   ÚtÚvalid_type_namesr$   s        €r   r   ÚAtype_check.<locals>._create_type_check_guard.<locals>._type_check8   sT   ø€ Ü˜e [×1Ñ1Ù4?Ó#@²K¨q¤C¨¦F±KÐ Ð#@Ø—‘ØØ"ØØ 0ð	 ñ ð Øùò $As   —Ar   )r   r   r   r$   s   ` @€r   Ú_create_type_check_guardÚ,type_check.<locals>._create_type_check_guard3   s   ú€ ö	>õ
	ð %Ð$r   r   )r$   r*   s   ` r   Ú
type_checkr,   2   s   ø€ õ%ð& $Ð#r   c                 ó  • Sn[        S5      nSUR                  ;   a  UR                  S   nX:  a  SnO:[        US5      (       a)  UR                  R	                  S5      (       a	  SnX:  a  SnU(       a  UR                  XXS9  g g )	NFz-infÚminTÚserializationÚ	hostLabelé   )r   Úmin_allowed)ÚfloatÚmetadataÚhasattrr/   Úgetr	   )r   Úvaluer   Ú
error_typer   Úfailedr2   s          r   Úrange_checkr:   I   s‚   € Ø€FÜ˜“-€KØ�—‘ÓØ—n‘n UÑ+ˆØÓØˆFøÜ	�˜×	(Ñ	(à×Ñ×"Ñ" ;×/Ñ/ØˆKØÓ"Ø�ÞØ�‰�d¨eˆÒMð r   c                   ó8   • \ rS rSrS rS rS rS rS rS r	Sr
g	)
ÚValidationErrorséZ   c                 ó   • / U l         g r   ©Ú_errors©r   s    r   Ú__init__ÚValidationErrors.__init__[   s	   € Øˆ�r   c                 ó(   • U R                   (       a  gg©NTFr?   rA   s    r   r   ÚValidationErrors.has_errors^   s   € Ø�<�<ØØr   c                 óŽ   • / nU R                    H#  nUR                  U R                  U5      5        M%     SR                  U5      $ )NÚ
)r@   ÚappendÚ_format_errorÚjoin)r   Úerror_messagesÚerrors      r   r   Ú ValidationErrors.generate_reportc   s=   € ØˆØ—\”\ˆEØ×!Ñ! $×"4Ñ"4°UÓ";Ö<ñ "à�y‰y˜Ó(Ð(r   c                 ó¶  • Uu  p#nU R                  U5      nUS:X  a  SU SUS    S3$ US:X  a$  US   nSR                  US	   5      nS
U SU SU 3$ US:X  a2  US   n[        U5      nSR                  US   5      n	SU SU SU SU	 3$ US:X  a  US   nUS   n
SU SU SU
 3$ US:X  a  US   nUS   n
SU SU SU
 3$ US:X  a  SR                  UUS   5      $ US:X  a2  US   n[        U5      nSR                  US   5      n	SU SU SU SU	 3$ US:X  a  SR                  US    5      nS!U S"U S#3$ US$:X  a  SR                  US    5      nS%U S&U S#3$ g )'Númissing required fieldzMissing required parameter in z: "Úrequired_nameÚ"úunknown fieldÚunknown_paramz, Úvalid_nameszUnknown parameter in z", must be one of: r"   r   r$   zInvalid type for parameter z	, value: z, type: z, valid types: úinvalid ranger2   zInvalid value for parameter z, valid min value: úinvalid lengthzInvalid length for parameter z, valid min length: úunable to encode to jsonz2Invalid parameter {} must be json serializable: {}Ú
type_errorúinvalid type for documentz$Invalid type for document parameter úmore than one inputÚmembersz<Invalid number of parameters set for tagged union structure z*. Can only set one of the following keys: Ú.úempty inputz=Must set one of the following keys for tagged unionstructure z: )Ú	_get_namerK   ÚtypeÚformat)r   rM   r8   r   Ú
additionalrT   rU   r   Ú
param_typer$   r2   r\   s               r   rJ   ÚValidationErrors._format_errori   sd  € Ø',Ñ$ˆ
˜*Ø�~‰~˜dÓ#ˆØÐ1Ó1à0°°ð 7Ø Ñ0Ð1°ð5ðð ˜?Ó*Ø& Ñ7ˆMØŸ)™) J¨}Ñ$=Ó>ˆKà'¨ v¨S°°ð @#Ø#. -ð1ðð ˜>Ó)Ø˜wÑ'ˆEÜ˜e›ˆJØŸ)™) J¨}Ñ$=Ó>ˆKà-¨d¨V°9¸U¸Gð DØ#˜ O°K°=ðBðð ˜?Ó*Ø˜wÑ'ˆEØ$ ]Ñ3ˆKà.¨t¨f°I¸e¸Wð E$Ø$/ =ð2ðð Ð+Ó+Ø˜wÑ'ˆEØ$ ]Ñ3ˆKà/°¨v°Y¸u¸gð F%Ø%0 Mð3ðð Ð5Ó5ØG×NÑNØØ˜<Ñ(óð ð Ð6Ó6Ø˜wÑ'ˆEÜ˜e›ˆJØŸ)™) J¨}Ñ$=Ó>ˆKà6°t°f¸IÀeÀWð MØ#˜ O°K°=ðBðð Ð0Ó0Ø—i‘i 
¨9Ñ 5Ó6ˆGàNØ�&ÐBØ�)˜1ððð
 ˜=Ó(Ø—i‘i 
¨9Ñ 5Ó6ˆGðØ!˜F " W I¨Qð0ðð )r   c                 óL   • U(       d  gUR                  S5      (       a  USS  $ U$ )NÚinputr]   r1   )Ú
startswith)r   r   s     r   r_   ÚValidationErrors._get_name©   s'   € ÞØØ�_‰_˜S×!Ñ!Ø˜˜�8ˆOàˆKr   c                 ó>   • U R                   R                  X!U45        g r   )r@   rI   )r   r   ÚreasonÚkwargss       r   r	   ÚValidationErrors.report±   s   € Ø�‰×Ñ˜V¨6Ð2Õ3r   r?   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__rB   r   r   rJ   r_   r	   Ú__static_attributes__r   r   r   r<   r<   Z   s!   † òòò
)ò>ò@õ4r   r<   c                   ó¬  • \ rS rSrSr\\R                  \4\\R                  \4\4\4\	4\
4S.r\4\4\\4S.r1 SkrS rS rS rS	 rS
 rS r\" \S   S9S 5       r\" \S   S9S 5       r\" \S   S9S 5       r\" \S   S9S 5       r\" \S   S9S 5       rS r\" \S   S9S 5       r\" \S   S9S 5       r\r \" \S   S9S 5       r!S r"S r#S r$g!)"r
   éµ   z+Validates parameters against a shape model.)r3   ÚdoubleÚintegerÚlongÚbooleanÚstring)Ú	structureÚmapÚlist>   r.   ÚunionÚdocumentÚrequiredc                 ót   • [        U R                  [        UR                  R	                  5       5      -  5      $ )zAWhether the shape has validated constraints beyond type checking.)ÚboolÚVALIDATED_METADATA_ATTRSÚsetr4   Úkeys©r   r   s     r   Ú_shape_has_constraintsÚ%ParamValidator._shape_has_constraintsÌ   s*   € ä�D×1Ñ1´C¸¿¹×8KÑ8KÓ8MÓ4NÑNÓOÐOr   c                 ó<   • [        5       nU R                  XUSS9  U$ )až  Validate parameters against a shape model.

This method will validate the parameters against a provided shape model.
All errors will be collected before returning to the caller.  This means
that this method will not stop at the first error, it will return all
possible errors.

:param params: User provided dict of parameters
:param shape: A shape model describing the expected input.

:return: A list of errors.

Ú )r   )r<   Ú	_validate)r   r   r   r   s       r   r   ÚParamValidator.validateÐ   s#   € ô "Ó#ˆØ�‰�v f°2ˆÑ6Øˆr   c                 ó˜   • [        U5      (       a  U R                  $ UR                  S:X  a  UR                  (       a  U R                  $ g g )Nry   )r   Ú_validate_jsonvalue_stringÚ	type_nameÚis_document_typeÚ_validate_documentr„   s     r   Ú_check_special_validation_casesÚ.ParamValidator._check_special_validation_casesâ   sB   € Ü ×&Ñ&Ø×2Ñ2Ð2Ø�?‰?˜kÓ)¨e×.D×.DØ×*Ñ*Ð*ð /EÐ)r   c                 óˆ   • U R                  U5      nU(       a
  U" XX45        g [        U SUR                   35      " XX45        g )NÚ
_validate_)r�   Úgetattrr�   )r   r   r   r   r   Úspecial_validators         r   r‰   ÚParamValidator._validateè   s@   € Ø ×@Ñ@ÀÓGÐÞÙ˜f¨VÕ:ä�D˜J u§¡Ð&7Ð8Ô9Ø˜võr   c                 óŽ   •  [         R                  " U5        g ! [        [        4 a  nUR	                  USUS9   S nAg S nAff = f)NrX   )rY   )ÚjsonÚdumpsÚ
ValueErrorÚ	TypeErrorr	   )r   r   r   r   r   Úes         r   rŒ   Ú)ParamValidator._validate_jsonvalue_stringñ   s>   € ð	JÜ�JŠJ�vÕøÜœIÐ&ó 	JØ�M‰M˜$Ð :ÀqˆMÖIûð	Jús   ‚ ™A©?¿Ac           
      óþ  • Uc  g [        U[        5      (       a  U H  nU R                  X   X#U5        M     g [        U[        5      (       a-  [	        U5       H  u  pgU R                  XrX4 SU S35        M     g [        U[
        4[        [        [        45      (       dX  [
        [        [        [        [        [        4nU V	s/ s H  n	[        U	5      PM     n
n	UR                  USU[        U5      U
S9  g g s  sn	f )NÚ[Ú]rZ   )r   rc   r$   )r%   Údictr�   r{   Ú	enumerater&   Úintr€   r3   r	   r`   )r   r   r   r   r   ÚkeyÚindexÚentityr$   r'   r(   s              r   r�   Ú!ParamValidator._validate_documentù   så   € Ø‰>Øä�fœd×#Ñ#Û�Ø×'Ñ'¨©°UÀCÖHò ä˜¤×%Ñ%Ü!*¨6Ö!2‘�Ø×'Ñ'Ø 6¨V°1°U°G¸1Ð+=öò "3ô ˜F¤c V¬S´$¼Ð$>×?Ñ?Ü¤¤T¬5´$¼Ð=ˆKÙ0;Ó<²¨1¤ A¦±ÐÐ<Ø�M‰MØØ+ØÜ ›<Ø,ð ò ð @ùâ<s   ÃC:ry   )r$   c           	      ó>  • UR                   (       aU  [        U5      S:X  a  UR                  USUR                  S9  O*[        U5      S:”  a  UR                  USUR                  S9  UR                  R                  S/ 5       H  nXQ;  d  M
  UR                  USUUS9  M     UR                  n/ nU H6  nX†;  a  UR                  US	U[        U5      S
9  M%  UR                  U5        M8     U H+  nU R                  X   UR                  U   UU SU 35        M-     g )Nr   r^   )r\   r1   r[   r~   rP   )rQ   Úuser_paramsrS   )rT   rU   r]   )	Úis_tagged_unionÚlenr	   r\   r4   r6   r{   rI   r‰   )	r   r   r   r   r   Úrequired_memberr\   Úknown_paramsr   s	            r   Ú_validate_structureÚ"ParamValidator._validate_structure  s!  € à× × Ü�6‹{˜aÓØ—‘˜d M¸5¿=¹=�ÒIÜ�V“˜q“Ø—‘ØÐ/¸¿¹ð ñ ð
  %Ÿ~™~×1Ñ1°*¸bÖAˆOØÕ,Ø—‘ØØ,Ø"1Ø &ð	 ó ñ  Bð —-‘-ˆØˆãˆEØÓ#Ø—‘ØØ#Ø"'Ü $ W£ð	 ó ð ×#Ñ# EÖ*ñ ó "ˆEØ�N‰NØ‘Ø—‘˜eÑ$ØØ�&˜˜%˜Ð!ö	ò "r   rx   c                 ó4   • [        U[        U5      USU5        g )NrW   )r:   r«   ©r   r   r   r   r   s        r   Ú_validate_stringÚParamValidator._validate_string9  s   € ô 	�Dœ#˜e›* eÐ-=¸vÕFr   r{   c           
      óâ  • UR                   n[        U[        U5      USU5        UR                  nX`R                  ;   a  U R                  U5      (       di  U R                  U   n[        U5       HJ  u  p‰[        X—5      (       a  M  U V
s/ s H  n
[        U
5      PM     nn
UR                  U SU S3SU	US9  ML     g [        U5       H  u  p‰U R                  X•X4 SU S35        M     g s  sn
f )NrW   rŸ   r    r"   r#   )Úmemberr:   r«   r�   ÚSCALAR_TYPESr…   r¢   r%   r&   r	   r‰   )r   r   r   r   r   Úmember_shapeÚmember_typer$   ÚiÚitemr'   r(   s               r   Ú_validate_listÚParamValidator._validate_listE  sî   € à—|‘|ˆÜ�Dœ#˜e›* eÐ-=¸vÔFð #×,Ñ,ˆà×,Ñ,Ó,Ø×/Ñ/°×=Ñ=à×+Ñ+¨KÑ8ˆKÜ$ UÖ+‘�Ü! $×4Ó4Ù8CÓ'Dº°1¬¨A®¹Ð$Ð'DØ—M‘MØ˜&  !  A˜Ø&Ø"Ø$4ð	 "ó ñ ,ð ä  Ö'‰GˆAØ�N‰N˜4¨v¸¸qÀÀÀ1°~ÖFò (ùò (Es   ÂC,rz   c           
      óÄ   • UR                   nUR                  nUR                  5        H4  u  pxU R                  XuX4 SU S35        U R                  X†X4 SU 35        M6     g )Nz (key: Ú)r]   )r¤   r7   Úitemsr‰   )	r   r   r   r   r   Ú	key_shapeÚvalue_shaper¤   r7   s	            r   Ú_validate_mapÚParamValidator._validate_map_  sY   € à—I‘Iˆ	Ø—k‘kˆØŸ+™+ž-‰JˆCØ�N‰N˜3¨6°V¸7À3À%ÀqÐ3IÔJØ�N‰N˜5¨v¸¸qÀÀ°ÖGò (r   ru   c                 ó    • [        XAUSU5        g ©NrV   ©r:   r±   s        r   Ú_validate_integerÚ ParamValidator._validate_integerg  ó   € ä�D ¨¸Õ@r   c           	      óÈ   • [        U[        [        [        45      (       a  g [	        US5      (       a  g UR                  USU[        [        5      [        [        5      S/S9  g )NÚreadr"   zfile-like objectr#   )r%   ÚbytesÚ	bytearrayr&   r5   r	   r±   s        r   Ú_validate_blobÚParamValidator._validate_blobk  sV   € Ü�eœe¤Y´Ð4×5Ñ5ØÜ�U˜F×#Ñ#àà�M‰MØØØÜ ¤›Z¬¬Y«Ð9KÐLð	 ò r   rw   c                 ó   • g r   r   r±   s        r   Ú_validate_booleanÚ ParamValidator._validate_booleany  s   € àr   rt   c                 ó    • [        XAUSU5        g rÅ   rÆ   r±   s        r   Ú_validate_doubleÚParamValidator._validate_double}  rÉ   r   rv   c                 ó    • [        XAUSU5        g rÅ   rÆ   r±   s        r   Ú_validate_longÚParamValidator._validate_longƒ  rÉ   r   c                 óz   • U R                  U5      nU(       d#  [        [        5      S/nUR                  USXS9  g g )Nztimestamp-stringr"   r#   )Ú_type_check_datetimer&   r   r	   )r   r   r   r   r   Úis_valid_typer(   s          r   Ú_validate_timestampÚ"ParamValidator._validate_timestamp‡  sD   € ð ×1Ñ1°%Ó8ˆÞÜ #¤H£Ð/AÐBÐØ�M‰MØ�n¨Eð ò ð r   c                 óR   •  [        U5        g! [        [        [        4 a     gf = frE   )r   r›   rš   ÚAttributeError)r   r7   s     r   rÚ   Ú#ParamValidator._type_check_datetime’  s-   € ð	Ü# EÔ*ØøÜœ:¤~Ð6ó 	ñ ð	ús   ‚ Ž&¥&r   N)%rm   rn   ro   rp   Ú__doc__r3   ÚdecimalÚDecimalr£   r€   r&   r¶   r¡   r{   ÚtupleÚCONTAINER_TYPESr�   r…   r   r�   r‰   rŒ   r�   r,   r®   r²   r»   rÂ   rÇ   rÎ   rÑ   rÔ   Ú_validate_floatr×   rÜ   rÚ   rq   r   r   r   r
   r
   µ   s’  † Ù5ð ˜Ÿ™¨#Ð.Ø˜'Ÿ/™/¨3Ð/Ø�6Ø�Ø�7Ø�&ñ€Lð �WØˆwØ�u�ñ€Oò  HÐòPòò$+òòJòñ. ˜O¨KÑ8Ñ9ñ&ó :ð&ñP ˜L¨Ñ2Ñ3ñ	Gó 4ð	Gñ ˜O¨FÑ3Ñ4ñGó 5ðGñ2 ˜O¨EÑ2Ñ3ñHó 4ðHñ ˜L¨Ñ3Ñ4ñAó 5ðAòñ ˜L¨Ñ3Ñ4ñó 5ðñ ˜L¨Ñ2Ñ3ñAó 4ðAð '€Oá˜L¨Ñ0Ñ1ñAó 2ðAò	õr   r
   c                   ó    • \ rS rSrS rS rSrg)ÚParamValidationDecoratoriœ  c                 ó   • Xl         X l        g r   ©Ú_param_validatorÚ_serializer)r   Úparam_validatorÚ
serializers      r   rB   Ú!ParamValidationDecorator.__init__�  s   € Ø /ÔØ%Õr   c                 óø   • UR                   nUbQ  U R                  R                  XR                   5      nUR                  5       (       a  [	        UR                  5       S9eU R                  R                  X5      $ )Nr   )Úinput_shaperë   r   r   r   r   rì   Úserialize_to_request)r   Ú
parametersÚoperation_modelrñ   r	   s        r   rò   Ú-ParamValidationDecorator.serialize_to_request¡  ss   € Ø%×1Ñ1ˆØÑ"Ø×*Ñ*×3Ñ3Ø×7Ñ7óˆFð × Ñ ×"Ñ"Ü*°&×2HÑ2HÓ2JÑKÐKØ×Ñ×4Ñ4Øó
ð 	
r   rê   N)rm   rn   ro   rp   rB   rò   rq   r   r   r   rè   rè   œ  s   † ò&õ

r   rè   )rá   râ   r˜   r   Úbotocore.exceptionsr   Úbotocore.utilsr   r   r   r,   r:   r<   r
   rè   r   r   r   Ú<module>rø      sP   ðñó Û Ý å 4ß HòDò4$ò.N÷"X4ñ X4÷vdñ d÷N
ò 
r   