+
    LV-j1T  ã                   ó‚  € R t ^ RIt^ RIt^ RIHt ^ RIHt ^RIHtHt ^RI	H
t
HtHtHt ^RIHt ^RIHt . R;OtR tR	 t]R
 4       t]! RRRR7       ! R R4      4       tR t]! RRRR7       ! R R4      4       tR<R lt]! RRRR7       ! R R4      4       tR t]! RRRR7       ! R R4      4       tR t]! RRRR7       ! R R4      4       tR t]! RRRR7       ! R R4      4       t R=R  lt!]! RRRR7       ! R! R"4      4       t"R>R# lt#]! RRRR7       ! R$ R%4      4       t$R& t%R' t&R( t'R) t(]! RRRR7       ! R* R+4      4       t)R, t*]! RRRR7       ! R- R.4      4       t+R/ t,]! RRRR7       ! R0 R14      4       t-R2 t.]! RRRR7       ! R3 R44      4       t/R5RR6]0]13/R7 lt2]! RRRR7       ! R8 R94      4       t3R: t4R# )?z
Commonly useful validators.
N)Úcontextmanager)ÚPattern©Úget_run_validatorsÚset_run_validators)Ú_AndValidatorÚand_ÚattribÚattrs)Údefault_if_none)ÚNotCallableErrorc                ó&   € \        V '       * 4       R# )zá
Globally disable or enable running validators.

By default, they are run.

Args:
    disabled (bool): If `True`, disable running all validators.

.. warning::

    This function is not thread-safe!

.. versionadded:: 21.3.0
N)r   )Údisableds   &Ú`/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/attr/validators.pyÚset_disabledr   *   s   € ô ˜8”|Ö$ó    c                 ó    € \        4       '       * # )z¦
Return a bool indicating whether validators are currently disabled or not.

Returns:
    bool:`True` if validators are currently disabled.

.. versionadded:: 21.3.0
)r   © r   r   Úget_disabledr   <   s   € ô "Ó#Ô#Ð#r   c               #  óx   "  € \        4       p \        R4        Rx € \        V 4       R#   \        T 4       i ; i5i)z×
Context manager that disables running validators within its context.

.. warning::

    This context manager is not thread-safe!

.. versionadded:: 21.3.0
.. versionchanged:: 26.1.0 The contextmanager is nestable.
FNr   )Úprevs    r   r   r   H   s0   é € ô Ó€DÜ�uÔð!Ûä˜4Ö øÔ˜4Õ üs   ‚:™* �:ª7·:FT)ÚreprÚslotsÚunsafe_hashc                   ó:   a € ] tR t^\t o ]! 4       tR tR tRtV t	R# )Ú_InstanceOfValidatorc           	     óÌ   € \        W0P                  4      '       gI   RVP                   RV P                  : RV: RVP                  : R2	p\	        VVV P                  V4      hR# )ú@
We use a callable class to be able to change the ``__repr__``.
Ú'ú
' must be ú (got z that is a ú).N)Ú
isinstanceÚtypeÚnameÚ	__class__Ú	TypeError©ÚselfÚinstÚattrÚvalueÚmsgs   &&&& r   Ú__call__Ú_InstanceOfValidator.__call__`   sf   € ô ˜%§¡×+Ò+Ø�d—i‘i�[ 
¨4¯9©9©-°v¸e¹YÀkÐRW×RaÑRaÑQdÐdfÐgˆCÜØØØ—	‘	Øó	ð ñ ,r   c                ó$   € R V P                   : R2# )z <instance_of validator for type Ú>©r#   ©r(   s   &r   Ú__repr__Ú_InstanceOfValidator.__repr__m   ó   € Ø1°$·)±)±¸aÐ@Ð@r   r   N©
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r	   r#   r-   r3   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r   r   r   \   ó   ø‡ € á‹8€Dò÷Að Ar   r   c                ó   € \        V 4      # )a°  
A validator that raises a `TypeError` if the initializer is called with a
wrong type for this particular attribute (checks are performed using
`isinstance` therefore it's also valid to pass a tuple of types).

Args:
    type (type | tuple[type]): The type to check for.

Raises:
    TypeError:
        With a human readable error message, the attribute (of type
        `attrs.Attribute`), the expected type, and the value it got.
)r   r1   s   &r   Úinstance_ofrA   q   ó   € ô   Ó%Ð%r   )r   Úfrozenr   c                   óH   a € ] tR t^‚t o ]! 4       t]! 4       tR tR tRt	V t
R# )Ú_MatchesReValidatorc                ó¼   € V P                  V4      '       gE   RVP                   RV P                  P                  : RV: R2p\        VVV P                  V4      hR# )r   r   z' must match regex z (z	 doesn't)N)Ú
match_funcr$   ÚpatternÚ
ValueErrorr'   s   &&&& r   r-   Ú_MatchesReValidator.__call__‡   s`   € ð �‰˜u×%Ò%Ø�d—i‘i�[Ð 3°D·L±L×4HÑ4HÑ3KÈ2ÈeÉYÐV_Ð`ˆCÜØØØ—‘Øó	ð ñ &r   c                ó$   € R V P                   : R2# )z"<matches_re validator for pattern r0   )rH   r2   s   &r   r3   Ú_MatchesReValidator.__repr__”   s   € Ø3°D·L±LÑ3CÀ1ÐEÐEr   r   N)r7   r8   r9   r:   r	   rH   rG   r-   r3   r;   r<   r=   s   @r   rE   rE   ‚   s$   ø‡ € á‹h€GÙ“€Jò÷Fð Fr   rE   c           
     ó0  € \         P                  R\         P                  \         P                  3pW#9  dE   RP	                  RP                  \        R \        V4       4       4      4      4      p\        V4      h\        V \        4      '       d   V'       d   Rp\        V4      hT pM\         P                  ! W4      pV\         P                  J d   VP                  pM-V\         P                  J d   VP                  pMVP                  p\        WV4      # )a¦  
A validator that raises `ValueError` if the initializer is called with a
string that doesn't match *regex*.

Args:
    regex (str, re.Pattern):
        A regex string or precompiled pattern to match against

    flags (int):
        Flags that will be passed to the underlying re function (default 0)

    func (typing.Callable):
        Which underlying `re` function to call. Valid options are
        `re.fullmatch`, `re.search`, and `re.match`; the default `None`
        means `re.fullmatch`. For performance reasons, the pattern is
        always precompiled using `re.compile`.

.. versionadded:: 19.2.0
.. versionchanged:: 21.3.0 *regex* can be a pre-compiled pattern.
Nz'func' must be one of {}.z, c              3   ó`   "  € T F$  q;'       d    VP                   ;'       g    R x € K&  	  R# 5i)ÚNoneN)r7   )Ú.0Úes   & r   Ú	<genexpr>Úmatches_re.<locals>.<genexpr>±   s'   é € ÐNÑ=M¸×(Ð(˜aŸj™j×3Ð3¨VÔ3Ó=Mùs   ‚.�.£.zR'flags' can only be used with a string pattern; pass flags to re.compile() instead)ÚreÚ	fullmatchÚsearchÚmatchÚformatÚjoinÚsortedÚsetrI   r"   r   r&   ÚcompilerE   )ÚregexÚflagsÚfuncÚvalid_funcsr,   rH   rG   s   &&&    r   Ú
matches_rera   ˜   sÑ   € ô* —<‘< ¤r§y¡y´"·(±(Ð;€KØÔØ)×0Ñ0Ø�I‰IÜÑN¼SÀÔ=MÓNÓNóó
ˆô
 ˜‹oÐä�%œ×!Ò!ßØfˆCÜ˜C“.Ð Ø‰ä—*’*˜UÓ*ˆàŒr�x‰xÓØ—]‘]‰
Ø	”—‘Ó	Ø—^‘^‰
à×&Ñ&ˆ
ä˜wÓ3Ð3r   c                   ó:   a € ] tR t^Èt o ]! 4       tR tR tRtV t	R# )Ú_OptionalValidatorc                ó6   € Vf   R # V P                  WV4       R # ©N©Ú	validator©r(   r)   r*   r+   s   &&&&r   r-   Ú_OptionalValidator.__call__Ì   s   € ØŠ=Ùà�‰�t 5Ö)r   c                ó$   € R V P                   : R2# )z<optional validator for z	 or None>rf   r2   s   &r   r3   Ú_OptionalValidator.__repr__Ò   s   € Ø)¨$¯.©.Ñ);¸9ÐEÐEr   r   N)
r7   r8   r9   r:   r	   rg   r-   r3   r;   r<   r=   s   @r   rc   rc   È   s   ø‡ € á“€Iò*÷Fð Fr   rc   c                óx   € \        V \        \        34      '       d   \        \	        V 4      4      # \        V 4      # )aú  
A validator that makes an attribute optional.  An optional attribute is one
which can be set to `None` in addition to satisfying the requirements of
the sub-validator.

Args:
    validator
        (typing.Callable | tuple[typing.Callable] | list[typing.Callable]):
        A validator (or validators) that is used for non-`None` values.

.. versionadded:: 15.1.0
.. versionchanged:: 17.1.0 *validator* can be a list of validators.
.. versionchanged:: 23.1.0 *validator* can also be a tuple of validators.
)r"   ÚlistÚtuplerc   r   rf   s   &r   Úoptionalro   Ö   s0   € ô �)œd¤E˜]×+Ò+Ü!¤-°	Ó":Ó;Ð;ä˜iÓ(Ð(r   c                   óL   a € ] tR t^ët o ]! 4       t]! RR7      tR tR tRt	V t
R# )Ú_InValidatorF)Úhashc                óÎ   €  W0P                   9   pV'       g;   RVP                   RV P                  : RV: R2p\	        VVV P                  V4      hR#   \         d    R p LSi ; i)Fr   z' must be in r    Ú)N)Úoptionsr&   r$   Ú_original_optionsrI   )r(   r)   r*   r+   Ú
in_optionsr,   s   &&&&  r   r-   Ú_InValidator.__call__ð   sx   € ð	Ø§,¡,Ñ.ˆJ÷ Ø�d—i‘i�[ ¨d×.DÑ.DÑ-GÀvÈeÉYÐVWÐXˆCÜØØØ×&Ñ&Øó	ð ñ øô ô 	ØŠJð	ús   ‚A ÁA$Á#A$c                ó$   € R V P                   : R2# )z<in_ validator with options r0   )rv   r2   s   &r   r3   Ú_InValidator.__repr__ÿ   s   € Ø-¨d×.DÑ.DÑ-GÀqÐIÐIr   r   N)r7   r8   r9   r:   r	   ru   rv   r-   r3   r;   r<   r=   s   @r   rq   rq   ë   s(   ø‡ € á‹h€GÙ EÔ*Ðò÷Jð Jr   rq   c                ót   € T p\        V \        \        \        34      '       d   \	        V 4      p \        W4      # )a‚  
A validator that raises a `ValueError` if the initializer is called with a
value that does not belong in the *options* provided.

The check is performed using ``value in options``, so *options* has to
support that operation.

To keep the validator hashable, dicts, lists, and sets are transparently
transformed into a `tuple`.

Args:
    options: Allowed options.

Raises:
    ValueError:
        With a human readable error message, the attribute (of type
        `attrs.Attribute`), the expected options, and the value it got.

.. versionadded:: 17.1.0
.. versionchanged:: 22.1.0
   The ValueError was incomplete until now and only contained the human
   readable error message. Now it contains all the information that has
   been promised since 17.1.0.
.. versionchanged:: 24.1.0
   *options* that are a list, dict, or a set are now transformed into a
   tuple to keep the validator hashable.
)r"   rm   Údictr[   rn   rq   )ru   Úrepr_optionss   & r   Úin_r~     s1   € ð8 €LÜ�'œD¤$¬Ð,×-Ò-Ü˜“.ˆä˜Ó.Ð.r   c                   ó,   a € ] tR tRt o R tR tRtV tR# )Ú_IsCallableValidatori&  c                ó�   € \        V4      '       g5   Rp\        VP                  VP                  W3P                  R7      VR7      hR# )r   z?'{name}' must be callable (got {value!r} that is a {actual!r}).)r$   r+   Úactual)r,   r+   N)Úcallabler   rX   r$   r%   )r(   r)   r*   r+   Úmessages   &&&& r   r-   Ú_IsCallableValidator.__call__(  sN   € ô ˜�Šð8ð ô #Ø—N‘NØŸ™¨%¿¹ð #ó ð ô	ð ñ r   c                ó   € R # )z<is_callable validator>r   r2   s   &r   r3   Ú_IsCallableValidator.__repr__8  s   € Ù(r   r   N)r7   r8   r9   r:   r-   r3   r;   r<   r=   s   @r   r€   r€   &  s   ø‡ € ò÷ )ð )r   r€   c                 ó   € \        4       # )ad  
A validator that raises a `attrs.exceptions.NotCallableError` if the
initializer is called with a value for this particular attribute that is
not callable.

.. versionadded:: 19.1.0

Raises:
    attrs.exceptions.NotCallableError:
        With a human readable error message containing the attribute
        (`attrs.Attribute`) name, and the value it got.
)r€   r   r   r   Úis_callabler‰   <  s   € ô  Ó!Ð!r   c                   ór   a € ] tR tRt o ]! ]! 4       R7      t]! R]! ]! 4       4      R7      tR t	R t
RtV tR# )Ú_DeepIterableiL  rf   N)Údefaultrg   c                ó|   € V P                   e   V P                  WV4       V F  pV P                  WV4       K  	  R# ©r   N©Úiterable_validatorÚmember_validator)r(   r)   r*   r+   Úmembers   &&&& r   r-   Ú_DeepIterable.__call__S  s:   € ð ×"Ñ"Ò.Ø×#Ñ# D°Ô6ãˆFØ×!Ñ! $¨fÖ5ó r   c                ój   € V P                   f   RMRV P                   : 2pRV RV P                  : R2# )NÚ Ú z<deep_iterable validator forz iterables of r0   r�   )r(   Úiterable_identifiers   & r   r3   Ú_DeepIterable.__repr__]  sP   € ð ×&Ñ&Ò.ñ à�T×,Ñ,Ñ/Ð0ð 	ð +Ð+>Ð*?Ø˜T×2Ñ2Ñ5°Qð8ð	
r   r   )r7   r8   r9   r:   r	   r‰   r‘   ro   r�   r-   r3   r;   r<   r=   s   @r   r‹   r‹   L  s8   ø‡ € á©«Ô6ÐÙØ¡©«Ó 7ôÐò6÷	
ð 	
r   r‹   c                ó¬   € \        V \        \        34      '       d
   \        V !  p \        V\        \        34      '       d
   \        V!  p\	        W4      # )a�  
A validator that performs deep validation of an iterable.

Args:
    member_validator: Validator(s) to apply to iterable members.

    iterable_validator:
        Validator(s) to apply to iterable itself (optional).

Raises
    TypeError: if any sub-validators fail

.. versionadded:: 19.1.0

.. versionchanged:: 25.4.0
   *member_validator* and *iterable_validator* can now be a list or tuple
   of validators.
)r"   rm   rn   r   r‹   ©r‘   r�   s   &&r   Údeep_iterabler›   i  sL   € ô& Ð"¤T¬5 M×2Ò2ÜÐ!1Ñ2ÐÜÐ$¤t¬U m×4Ò4Ü!Ð#5Ñ6ÐÜÐ)Ó>Ð>r   c                   ó¤   a € ] tR tRt o ]! ]! ]! 4       4      R7      t]! ]! ]! 4       4      R7      t]! ]! ]! 4       4      R7      t	R t
R tRtV tR# )Ú_DeepMappingiƒ  rf   c                óè   € V P                   e   V P                  WV4       V FK  pV P                  e   V P                  WV4       V P                  f   K3  V P                  WW4,          4       KM  	  R# rŽ   )Úmapping_validatorÚkey_validatorÚvalue_validator)r(   r)   r*   r+   Úkeys   &&&& r   r-   Ú_DeepMapping.__call__‰  sd   € ð ×!Ñ!Ò-Ø×"Ñ" 4¨uÔ5ãˆCØ×!Ñ!Ò-Ø×"Ñ" 4¨sÔ3Ø×#Ñ#Ô/Ø×$Ñ$ T°µÖ<ó	 r   c                ó@   € R V P                   : RV P                  : R2# )z,<deep_mapping validator for objects mapping z to r0   )r    r¡   r2   s   &r   r3   Ú_DeepMapping.__repr__–  s(   € Ø=¸d×>PÑ>PÑ=SÐSWÐX\×XlÑXlÑWoÐopÐqÐqr   r   N)r7   r8   r9   r:   r	   ro   r‰   r    r¡   rŸ   r-   r3   r;   r<   r=   s   @r   r�   r�   ƒ  sJ   ø‡ € á¡X©k«mÓ%<Ô=€MÙ¡x±³Ó'>Ô?€OÙ©±+³-Ó)@ÔAÐò=÷rð rr   r�   c                ó"  € V f   Vf   Rp\        V4      h\        V \        \        34      '       d
   \	        V !  p \        V\        \        34      '       d
   \	        V!  p\        V\        \        34      '       d
   \	        V!  p\        WV4      # )aZ  
A validator that performs deep validation of a dictionary.

All validators are optional, but at least one of *key_validator* or
*value_validator* must be provided.

Args:
    key_validator: Validator(s) to apply to dictionary keys.

    value_validator: Validator(s) to apply to dictionary values.

    mapping_validator:
        Validator(s) to apply to top-level mapping attribute.

.. versionadded:: 19.1.0

.. versionchanged:: 25.4.0
   *key_validator* and *value_validator* are now optional, but at least one
   of them must be provided.

.. versionchanged:: 25.4.0
   *key_validator*, *value_validator*, and *mapping_validator* can now be a
   list or tuple of validators.

Raises:
    TypeError: If any sub-validator fails on validation.

    ValueError:
        If neither *key_validator* nor *value_validator* is provided on
        instantiation.
zAAt least one of key_validator or value_validator must be provided)rI   r"   rm   rn   r   r�   )r    r¡   rŸ   r,   s   &&& r   Údeep_mappingr§   š  s†   € ðD Ò Ò!8àOð 	ô ˜‹oÐä�-¤$¬ ×/Ò/Ü˜mÑ,ˆÜ�/¤D¬% =×1Ò1Ü Ñ0ˆÜÐ#¤d¬E ]×3Ò3Ü Ð"3Ñ4Ðä˜Ð8IÓJÐJr   c                   óV   a € ] tR tRt o ]! 4       t]! 4       t]! 4       tR tR t	Rt
V tR# )Ú_NumberValidatoriÌ  c                ó¶   € V P                  W0P                  4      '       g8   RVP                   RV P                   RV P                   RV 2p\	        V4      hR# )r   r   r   r–   ú: N)Úcompare_funcÚboundr$   Ú
compare_oprI   r'   s   &&&& r   r-   Ú_NumberValidator.__call__Ò  sS   € ð × Ñ  ¯
©
×3Ò3Ø�d—i‘i�[ 
¨4¯?©?Ð*;¸1¸T¿Z¹Z¸LÈÈ5È'ÐRˆCÜ˜S“/Ð!ñ 4r   c                ó<   € R V P                    RV P                   R2# )z<Validator for x r–   r0   )r®   r­   r2   s   &r   r3   Ú_NumberValidator.__repr__Ú  s    € Ø" 4§?¡?Ð"3°1°T·Z±Z°LÀÐBÐBr   r   N)r7   r8   r9   r:   r	   r­   r®   r¬   r-   r3   r;   r<   r=   s   @r   r©   r©   Ì  s+   ø‡ € á‹H€EÙ“€JÙ“8€Lò"÷Cð Cr   r©   c                ó8   € \        V R\        P                  4      # )zð
A validator that raises `ValueError` if the initializer is called with a
number larger or equal to *val*.

The validator uses `operator.lt` to compare the values.

Args:
    val: Exclusive upper bound for values.

.. versionadded:: 21.3.0
Ú<)r©   ÚoperatorÚlt©Úvals   &r   rµ   rµ   Þ  ó   € ô ˜C ¤h§k¡kÓ2Ð2r   c                ó8   € \        V R\        P                  4      # )zê
A validator that raises `ValueError` if the initializer is called with a
number greater than *val*.

The validator uses `operator.le` to compare the values.

Args:
    val: Inclusive upper bound for values.

.. versionadded:: 21.3.0
z<=)r©   r´   Úler¶   s   &r   rº   rº   í  ó   € ô ˜C ¤x§{¡{Ó3Ð3r   c                ó8   € \        V R\        P                  4      # )zé
A validator that raises `ValueError` if the initializer is called with a
number smaller than *val*.

The validator uses `operator.ge` to compare the values.

Args:
    val: Inclusive lower bound for values

.. versionadded:: 21.3.0
z>=)r©   r´   Úger¶   s   &r   r½   r½   ü  r»   r   c                ó8   € \        V R\        P                  4      # )zï
A validator that raises `ValueError` if the initializer is called with a
number smaller or equal to *val*.

The validator uses `operator.gt` to compare the values.

Args:
   val: Exclusive lower bound for values

.. versionadded:: 21.3.0
r0   )r©   r´   Úgtr¶   s   &r   r¿   r¿     r¸   r   c                   ó:   a € ] tR tRt o ]! 4       tR tR tRtV t	R# )Ú_MaxLengthValidatori  c                ó    € \        V4      V P                  8”  d4   RVP                   RV P                   R\        V4       2p\        V4      hR# )r   úLength of 'z' must be <= r«   N)ÚlenÚ
max_lengthr$   rI   r'   s   &&&& r   r-   Ú_MaxLengthValidator.__call__  óH   € ô ˆu‹:˜Ÿ™Ô'Ø §	¡	˜{¨-¸¿¹Ð7HÈÌ3ÈuË:È,ÐWˆCÜ˜S“/Ð!ñ (r   c                ó"   € R V P                    R2# )z<max_len validator for r0   )rÅ   r2   s   &r   r3   Ú_MaxLengthValidator.__repr__&  ó   € Ø(¨¯©Ð(9¸Ð;Ð;r   r   N)
r7   r8   r9   r:   r	   rÅ   r-   r3   r;   r<   r=   s   @r   rÁ   rÁ     ó   ø‡ € á“€Jò"÷<ð <r   rÁ   c                ó   € \        V 4      # )z×
A validator that raises `ValueError` if the initializer is called
with a string or iterable that is longer than *length*.

Args:
    length (int): Maximum length of the string or iterable

.. versionadded:: 21.3.0
)rÁ   ©Úlengths   &r   Úmax_lenrÏ   *  ó   € ô ˜vÓ&Ð&r   c                   ó:   a € ] tR tRt o ]! 4       tR tR tRtV t	R# )Ú_MinLengthValidatori7  c                ó    € \        V4      V P                  8  d4   RVP                   RV P                   R\        V4       2p\        V4      hR# )r   rÃ   z' must be >= r«   N)rÄ   Ú
min_lengthr$   rI   r'   s   &&&& r   r-   Ú_MinLengthValidator.__call__;  rÇ   r   c                ó"   € R V P                    R2# )z<min_len validator for r0   )rÔ   r2   s   &r   r3   Ú_MinLengthValidator.__repr__C  rÊ   r   r   N)
r7   r8   r9   r:   r	   rÔ   r-   r3   r;   r<   r=   s   @r   rÒ   rÒ   7  rË   r   rÒ   c                ó   € \        V 4      # )zØ
A validator that raises `ValueError` if the initializer is called
with a string or iterable that is shorter than *length*.

Args:
    length (int): Minimum length of the string or iterable

.. versionadded:: 22.1.0
)rÒ   rÍ   s   &r   Úmin_lenrÙ   G  rÐ   r   c                   ó:   a € ] tR tRt o ]! 4       tR tR tRtV t	R# )Ú_SubclassOfValidatoriT  c                ó°   € \        W0P                  4      '       g;   RVP                   RV P                  : RV: R2p\        VVV P                  V4      hR# )r   r   z' must be a subclass of r    r!   N)Ú
issubclassr#   r$   r&   r'   s   &&&& r   r-   Ú_SubclassOfValidator.__call__X  sY   € ô ˜%§¡×+Ò+Ø�d—i‘i�[Ð 8¸¿¹¹ÀVÈEÉ9ÐTVÐWˆCÜØØØ—	‘	Øó	ð ñ ,r   c                ó$   € R V P                   : R2# )z <subclass_of validator for type r0   r1   r2   s   &r   r3   Ú_SubclassOfValidator.__repr__e  r5   r   r   Nr6   r=   s   @r   rÛ   rÛ   T  r?   r   rÛ   c                ó   € \        V 4      # )a¸  
A validator that raises a `TypeError` if the initializer is called with a
wrong type for this particular attribute (checks are performed using
`issubclass` therefore it's also valid to pass a tuple of types).

Args:
    type (type | tuple[type, ...]): The type(s) to check for.

Raises:
    TypeError:
        With a human readable error message, the attribute (of type
        `attrs.Attribute`), the expected type, and the value it got.
)rÛ   r1   s   &r   Ú_subclass_ofrâ   i  rB   r   c                   ó’   a € ] tR tRt o ]! 4       t]! ]! R4      R7      t]! ]! ]	! ]
4      ]! ]4      R7      R7      tR tR tRtV tR	# )
Ú_NotValidatoriz  zCnot_ validator child '{validator!r}' did not raise a captured error)Ú	converterrš   rf   c                óü   €  V P                  WV4       \        V P                  P                  V P                   V P                  R 7      VV P                   VV P                  4      h  T P                   d     R# i ; i)©rg   Ú	exc_typesN)rg   rI   r,   rX   rè   rh   s   &&&&r   r-   Ú_NotValidator.__call__Š  su   € ð	Ø�N‰N˜4 uÔ-ô Ø—‘—‘Ø"Ÿn™nØ"Ÿn™nð  ó ð Ø—‘ØØ—‘ó	ð 	øð �~‰~ô 	Úð	ús   ‚A& Á&A;Á:A;c                ó@   € R V P                   : RV P                  : R2# )z<not_ validator wrapping z, capturing r0   rç   r2   s   &r   r3   Ú_NotValidator.__repr__›  s"   € Ø*¨4¯>©>Ñ*<¸LÈÏÉÑHZÐZ[Ð\Ð\r   r   N)r7   r8   r9   r:   r	   rg   r   r,   r›   râ   Ú	ExceptionrA   rn   rè   r-   r3   r;   r<   r=   s   @r   rä   rä   z  sX   ø‡ € á“€IÙ
Ù!ð-ó
ô€Cñ ÙÙ)¨)Ó4Ù*¨5Ó1ô
ô€Iò÷"]ð ]r   rä   r,   rè   c               óZ   €  \        V4      p\        WV4      #   \         d    T3p Li ; i)aæ  
A validator that wraps and logically 'inverts' the validator passed to it.
It will raise a `ValueError` if the provided validator *doesn't* raise a
`ValueError` or `TypeError` (by default), and will suppress the exception
if the provided validator *does*.

Intended to be used with existing validators to compose logic without
needing to create inverted variants, for example, ``not_(in_(...))``.

Args:
    validator: A validator to be logically inverted.

    msg (str):
        Message to raise if validator fails. Formatted with keys
        ``exc_types`` and ``validator``.

    exc_types (tuple[type, ...]):
        Exception type(s) to capture. Other types raised by child
        validators will not be intercepted and pass through.

Raises:
    ValueError:
        With a human readable error message, the attribute (of type
        `attrs.Attribute`), the validator that failed to raise an
        exception, the value it got, and the expected exception types.

.. versionadded:: 22.2.0
)rn   r&   rä   )rg   r,   rè   s   &$$r   Únot_rî   Ÿ  s8   € ð:!Ü˜)Ó$ˆ	ô ˜¨Ó3Ð3øô ô !Ø�LŠ	ð!ús   ‚ ™*©*c                   ó:   a € ] tR tRt o ]! 4       tR tR tRtV t	R# )Ú_OrValidatoriÃ  c                ó    € V P                    F  p V! WV4        R # 	  RV P                   : RV: 2p\        V4      h  \         d     K?  i ; i)NzNone of z satisfied for value )Ú
validatorsrì   rI   )r(   r)   r*   r+   Úvr,   s   &&&&  r   r-   Ú_OrValidator.__call__Ç  s\   € Ø—”ˆAðÙ�$˜eÔ$ò ñ !ð ˜Ÿ™Ñ+Ð+@ÀÁ	ÐJˆÜ˜‹oÐøô ô Úðús   ‘	>¾AÁAc                ó$   € R V P                   : R2# )z<or validator wrapping r0   )rò   r2   s   &r   r3   Ú_OrValidator.__repr__Ó  s   € Ø(¨¯©Ñ(;¸1Ð=Ð=r   r   N)
r7   r8   r9   r:   r	   rò   r-   r3   r;   r<   r=   s   @r   rð   rð   Ã  s   ø‡ € á“€Jò
÷>ð >r   rð   c                 ó¨   € . pV  F7  pTP                  \        V\        4      '       d   VP                  MV.4       K9  	  \        \	        V4      4      # )aÛ  
A validator that composes multiple validators into one.

When called on a value, it runs all wrapped validators until one of them is
satisfied.

Args:
    validators (~collections.abc.Iterable[typing.Callable]):
        Arbitrary number of validators.

Raises:
    ValueError:
        If no validator is satisfied. Raised with a human-readable error
        message listing all the wrapped validators and the value that
        failed all of them.

.. versionadded:: 24.1.0
)Úextendr"   rð   rò   rn   )rò   Úvalsró   s   *  r   Úor_rú   ×  sD   € ð& €DÛˆØ�‰¤J¨q´,×$?Ò$?�A—L’LÀaÀSÖIñ ô œ˜d›Ó$Ð$r   )r   r›   r§   r   r½   r   r¿   r~   rA   r‰   rº   rµ   ra   rÏ   rÙ   rî   ro   rú   r   )é    Nre   )NNN)5Ú__doc__r´   rT   Ú
contextlibr   r   Ú_configr   r   Ú_maker   r   r	   r
   Ú
convertersr   Ú
exceptionsr   Ú__all__r   r   r   r   rA   rE   ra   rc   ro   rq   r~   r€   r‰   r‹   r›   r�   r§   r©   rµ   rº   r½   r¿   rÁ   rÏ   rÒ   rÙ   rÛ   râ   rä   rI   r&   rî   rð   rú   r   r   r   Ú<module>r     s‡  ðñó Û 	å %Ý ç ;ß 5Ó 5Ý 'Ý (ò€ò.%ò$	$ð ñ!ó ð!ñ& ˆE˜¨4Ô0÷Að Aó 1ðAò(&ñ" ˆE˜$ dÔ+÷Fð Fó ,ðFô*-4ñ` ˆE˜¨4Ô0÷
Fð 
Fó 1ð
Fò)ñ* ˆE˜¨4Ô0÷Jð Jó 1ðJò. /ñF ˆE˜¨DÔ1÷)ð )ó 2ð)ò*"ñ  ˆE˜¨4Ô0÷
ð 
ó 1ð
ô8?ñ4 ˆE˜¨4Ô0÷rð ró 1ðrô,/Kñd ˆE˜$ dÔ+÷Cð Có ,ðCò"3ò4ò4ò3ñ ˆE˜$ dÔ+÷<ð <ó ,ð<ò
'ñ ˆE˜$ dÔ+÷<ð <ó ,ð<ò
'ñ ˆE˜¨4Ô0÷Að Aó 1ðAò(&ñ" ˆE˜¨4Ô0÷!]ð !]ó 1ð!]ðH!4˜4ð !4¨J¸	Ð+Bô !4ñH ˆE˜¨4Ô0÷>ð >ó 1ð>ô&%r   