§
    «˜ºhHC  ã                   óÊ  — d dl Z d dlmZmZmZmZmZ d dlmZ d dl	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZ ddlmZmZmZ ee
gdf         Z ed¦  «        Zedee         d	ee         fd
„¦   «         Zeddœded	eee         gee         f         fd„¦   «         Z	 d-ddœdeee                  ded	eee         eee         gee         f         f         fd„Zeedddddfdeee         ef         dee
ef         deeg e
f         ef         dededee         dedee         de
d	e
fd„Zdefd„Z de!de
de
d	dfd„Z"de!de
d ee
d!f         d	dfd"„Z#de!de
d ee
d!f         d	dfd#„Z$de!de
d ee
d!f         d	dfd$„Z%de!de
d ee
d!f         d	dfd%„Z&de!de
d ee
d!f         d	dfd&„Z'de!de
d ee
d!f         d	dfd'„Z(de!de
de)d	dfd(„Z*d)ed	efd*„Z+de
d	efd+„Z,ee#ee$e-e%e.e&e/e'e0e(iZ1g d,¢Z2dS ).é    N)Ú_MISSING_TYPEÚMISSINGÚFieldÚfieldÚfields)Úwraps)ÚAnyÚCallableÚDictÚListÚLiteralÚOptionalÚTupleÚTypeÚTypeVarÚUnionÚget_argsÚ
get_originÚoverloadé   )Ú#StrictDataclassClassValidationErrorÚStrictDataclassDefinitionErrorÚ#StrictDataclassFieldValidationErrorÚTÚclsÚreturnc                 ó   — d S ©N© )r   s    úc/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/huggingface_hub/dataclasses.pyÚstrictr!       s   € Ø%( Só    F©Úaccept_kwargsr$   c                 ó   — d S r   r   r#   s    r    r!   r!   $   s   € ØLOÈCr"   c                óv   ‡— dt           t                   dt           t                   fˆfd„}| � || ¦  «        n|S )a¾  
    Decorator to add strict validation to a dataclass.

    This decorator must be used on top of `@dataclass` to ensure IDEs and static typing tools
    recognize the class as a dataclass.

    Can be used with or without arguments:
    - `@strict`
    - `@strict(accept_kwargs=True)`

    Args:
        cls:
            The class to convert to a strict dataclass.
        accept_kwargs (`bool`, *optional*):
            If True, allows arbitrary keyword arguments in `__init__`. Defaults to False.

    Returns:
        The enhanced dataclass with strict validation on field assignment.

    Example:
    ```py
    >>> from dataclasses import dataclass
    >>> from huggingface_hub.dataclasses import as_validated_field, strict, validated_field

    >>> @as_validated_field
    >>> def positive_int(value: int):
    ...     if not value >= 0:
    ...         raise ValueError(f"Value must be positive, got {value}")

    >>> @strict(accept_kwargs=True)
    ... @dataclass
    ... class User:
    ...     name: str
    ...     age: int = positive_int(default=10)

    # Initialize
    >>> User(name="John")
    User(name='John', age=10)

    # Extra kwargs are accepted
    >>> User(name="John", age=30, lastname="Doe")
    User(name='John', age=30, *lastname='Doe')

    # Invalid type => raises
    >>> User(name="John", age="30")
    huggingface_hub.errors.StrictDataclassFieldValidationError: Validation error for field 'age':
        TypeError: Field 'age' expected int, got str (value: '30')

    # Invalid value => raises
    >>> User(name="John", age=-1)
    huggingface_hub.errors.StrictDataclassFieldValidationError: Validation error for field 'age':
        ValueError: Value must be positive, got -1
    ```
    r   r   c           	      óz  •‡ ‡‡‡‡— t          ‰ d¦  «        st          d‰ j        › d�¦  «        ‚i }t          ‰ ¦  «        D ]¨}g }|                     t          |¦  «        ¦  «         |j                             d¦  «        }|�\t          |t          ¦  «        s|g}|D ],}t          |¦  «        st          d|j        › d|› d�¦  «        ‚Œ-|                     |¦  «         |||j        <   Œ©|‰ _        ‰ j        Šdt          d	t           d
t          dd fˆfd„}|‰ _        ‰rd‰ j        Št%          ‰¦  «        dt          dd fˆ ˆfd„¦   «         }|‰ _        ‰ j        Št%          ‰¦  «        dt           fˆ ˆfd„¦   «         }|‰ _        g }	t)          ‰ ¦  «        D ]’}
|
                     d¦  «        sŒt-          ‰ |
¦  «        }t/          |¦  «        sŒ8t1          t3          j        |¦  «        j        ¦  «        dk    rt          d‰ j        › d|
› d�¦  «        ‚|	                     |¦  «         Œ“|	‰ _        dt:          dd fˆ fd„}d|_        t          ‰ d¦  «        r.t-          ‰ j        dd¦  «        st          d‰ j        › d�¦  «        ‚|‰ _        ‰ j        Št%          ‰¦  «        dˆ ˆfd„¦   «         }tA          ‰ d|¦  «         ‰ S )NÚ__dataclass_fields__zClass 'z.' must be a dataclass before applying @strict.Ú	validatorzInvalid validator for field 'ú': z.. Must be a callable taking a single argument.ÚselfÚnameÚvaluer   c                 óÌ   •— | j                              |g ¦  «        D ]9}	  ||¦  «         Œ# t          t          f$ r}t	          ||¬¦  «        |‚d}~ww xY w ‰| ||¦  «         dS )z1Custom __setattr__ method for strict dataclasses.)r   ÚcauseN)Ú__validators__ÚgetÚ
ValueErrorÚ	TypeErrorr   )r+   r,   r-   r)   ÚeÚoriginal_setattrs        €r    Ú__strict_setattr__z0strict.<locals>.wrap.<locals>.__strict_setattr__}   sž   ø€ ð "Ô0×4Ò4°T¸2Ñ>Ô>ð Zð Z�	ðZØ�I˜eÑ$Ô$Ð$Ð$øÝ"¥IÐ.ð Zð Zð ZÝ=ÀDÐPQÐRÑRÔRÐXYÐYøøøøðZøøøð Ð˜T 4¨Ñ/Ô/Ð/Ð/Ð/s    ,¬A½AÁAÚkwargsc                 óö   •‡— d„ t          ‰¦  «        D ¦   «         Šˆfd„|                     ¦   «         D ¦   «         } ‰| fi |¤Ž |                     ¦   «         D ]\  }}|‰vr|                      ||¦  «         Œ d S )Nc                 ó   — h | ]	}|j         ’Œ
S r   )r,   )Ú.0Úfs     r    ú	<setcomp>z9strict.<locals>.wrap.<locals>.__init__.<locals>.<setcomp>’   s   € Ð#@Ð#@Ð#@¨q A¤FÐ#@Ð#@Ð#@r"   c                 ó$   •— i | ]\  }}|‰v ¯	||“ŒS r   r   )r:   ÚkÚvÚdataclass_fieldss      €r    ú
<dictcomp>z:strict.<locals>.wrap.<locals>.__init__.<locals>.<dictcomp>“   s*   ø€ Ð"\Ð"\Ð"\©D¨A¨qÀaÐK[ÐF[ÐF[ 1 aÐF[ÐF[ÐF[r"   )r   ÚitemsÚ__setattr__)r+   r7   Ústandard_kwargsr,   r-   r@   r   Úoriginal_inits        @€€r    Ú__init__z&strict.<locals>.wrap.<locals>.__init__�   s¦   øø€ ð $AÐ#@µF¸3±K´KÐ#@Ñ#@Ô#@Ð Ø"\Ð"\Ð"\Ð"\°F·L²L±N´NÐ"\Ñ"\Ô"\�ð �˜dÐ6Ð6 oÐ6Ð6Ð6ð $*§<¢<¡>¤>ð 6ð 6‘K�D˜%ØÐ#3Ð3Ð3Ø×(Ò(¨¨uÑ5Ô5Ð5øð6ð 6r"   c                 ó¶   •—  ‰| ¦  «        }ˆfd„| j                              ¦   «         D ¦   «         }d                     |¦  «        }|r|d d…         › d|› d�n|S )Nc                 ó8   •— g | ]\  }}|‰j         v¯d |› d|›�‘ŒS )Ú*ú=)r(   )r:   r>   r?   r   s      €r    ú
<listcomp>z:strict.<locals>.wrap.<locals>.__repr__.<locals>.<listcomp>¨   sC   ø€ ð %ð %ð %ñ ˜˜1Ø Ô 8Ð8Ð8ð "˜�M�M˜A�M�Mà8Ð8Ð8r"   z, éÿÿÿÿú))Ú__dict__rB   Újoin)r+   Ústandard_reprÚadditional_kwargsÚadditional_reprr   Úoriginal_reprs       €€r    Ú__repr__z&strict.<locals>.wrap.<locals>.__repr__¢   s�   ø€ ð !. ¨dÑ 3Ô 3�ð%ð %ð %ð %ð !%¤× 3Ò 3Ñ 5Ô 5ð%ñ %ô %Ð!ð #'§)¢)Ð,=Ñ">Ô">�ð GXÐj˜-¨¨¨Ô,ÐBÐB°ÐBÐBÐBÐBÐ]jÐjr"   Ú	validate_r   z' has a class validator 'z¤' that takes more than one argument. Class validators must take only 'self' as an argument. Methods starting with 'validate_' are considered to be class validators.c                 ó”   •— ‰j         D ]>}	  || ¦  «         Œ# t          t          f$ r}t          |j        |¬¦  «        |‚d}~ww xY wdS )z%Run class validators on the instance.)r)   r/   N)Ú__class_validators__r2   r3   r   Ú__name__)r+   r)   r4   r   s      €r    Úvalidatez&strict.<locals>.wrap.<locals>.validateÉ   sz   ø€ à Ô5ð lð l�	ðlØ�I˜d‘O”O�O�OøÝ"¥IÐ.ð lð lð lÝ=È	ÔHZÐbcÐdÑdÔdÐjkÐkøøøøðløøøðlð ls   Œ˜A©A Á ATrY   Ú"__is_defined_by_strict_decorator__Fzµ' already implements a method called 'validate'. This method name is reserved when using the @strict decorator on a dataclass. If you want to keep your own method, please rename it.c                 óJ   •—  ‰| g|¢R i |¤Ž ‰                      | ¦  «         dS )z*Run class validators after initialization.N)rY   )r+   Úargsr7   r   Úinitial_inits      €€r    Úinit_with_validatez0strict.<locals>.wrap.<locals>.init_with_validateâ   s=   ø€ ð ˆL˜Ð/ Ð/Ð/Ð/¨Ð/Ð/Ð/Ø�LŠL˜ÑÔÐÐÐr"   rF   )r   N)!Úhasattrr   rX   r   ÚappendÚ_create_type_validatorÚmetadatar1   Ú
isinstanceÚlistÚ_is_validatorr,   Úextendr0   rC   r	   ÚstrrF   r   rT   ÚdirÚ
startswithÚgetattrÚcallableÚlenÚinspectÚ	signatureÚ
parametersrW   r   rZ   rY   Úsetattr)r   Úfield_validatorsr;   Ú
validatorsÚcustom_validatorr)   r6   rF   rT   Úclass_validatorsr,   ÚmethodrY   r^   r]   rE   rS   r5   r$   s   `             @@@@€r    Úwrapzstrict.<locals>.wrapb   s  øøøøøø€ Ý�sÐ2Ñ3Ô3ð 	Ý0ØV˜#œ,ÐVÐVÐVñô ð ð
 :<ÐÝ˜‘”ð 	2ð 	2ˆAØˆJØ×ÒÕ4°QÑ7Ô7Ñ8Ô8Ð8Ø œzŸ~š~¨kÑ:Ô:ÐØÐ+Ý!Ð"2µDÑ9Ô9ð :Ø(8Ð'9Ð$Ø!1ð ð �IÝ(¨Ñ3Ô3ð Ý<ð A¸A¼Fð  Að  AÀyð  Að  Að  Añô ð ðð ×!Ò!Ð"2Ñ3Ô3Ð3Ø'1Ð˜QœVÑ$Ð$Ø-ˆÔð œ?Ðð
	0¥Sð 
	0µð 
	0½Cð 
	0ÀDð 
	0ð 
	0ð 
	0ð 
	0ð 
	0ð 
	0ð -ˆŒàð (	$àœLˆMå�=Ñ!Ô!ð6­ð 6°ð 6ð 6ð 6ð 6ð 6ð 6ñ "Ô!ð6ð $ˆCŒLð  œLˆMå�=Ñ!Ô!ðk¥#ð kð kð kð kð kð kñ "Ô!ðkð  $ˆCŒLð Ðå˜‘H”Hð 	,ð 	,ˆDØ—?’? ;Ñ/Ô/ð ØÝ˜S $Ñ'Ô'ˆFÝ˜FÑ#Ô#ð ØÝ•7Ô$ VÑ,Ô,Ô7Ñ8Ô8¸AÒ=Ð=Ý4ð>˜cœlð >ð >ÀTð >ð >ð >ñô ð ð
 ×#Ò# FÑ+Ô+Ð+Ð+à#3ˆÔ ð	l�1ð 	l ð 	lð 	lð 	lð 	lð 	lð 	lð 7;ˆÔ3å�3˜
Ñ#Ô#ð 	Ý˜3œ<Ð)MÈuÑUÔUð Ý4ðN˜cœlð Nð Nð Nñô ð ð  ˆŒð ”|ˆå	ˆ|Ñ	Ô	ð	ð 	ð 	ð 	ð 	ð 	ñ 
Ô	ð	õ
 	��ZÐ!3Ñ4Ô4Ð4àˆ
r"   )r   r   )r   r$   rv   s    ` r    r!   r!   (   sY   ø€ ðtH•$•q”'ð H�d¥1œgð Hð Hð Hð Hð Hð HðV ˜ˆ4ˆ4�‰9Œ9ˆ9¨TÐ1r"   Tr)   ÚdefaultÚdefault_factoryÚinitÚreprÚhashÚcomparerb   r7   c                 ól   — t          | t          ¦  «        s| g} |€i }| |d<   t          d|||||||dœ|¤ŽS )a<  
    Create a dataclass field with a custom validator.

    Useful to apply several checks to a field. If only applying one rule, check out the [`as_validated_field`] decorator.

    Args:
        validator (`Callable` or `List[Callable]`):
            A method that takes a value as input and raises ValueError/TypeError if the value is invalid.
            Can be a list of validators to apply multiple checks.
        **kwargs:
            Additional arguments to pass to `dataclasses.field()`.

    Returns:
        A field with the validator attached in metadata
    Nr)   ©rw   rx   ry   rz   r{   r|   rb   r   )rc   rd   r   )	r)   rw   rx   ry   rz   r{   r|   rb   r7   s	            r    Úvalidated_fieldr   ð   sm   € õ4 �i¥Ñ&Ô&ð  Ø�Kˆ	ØÐØˆØ%€Hˆ[ÑÝð 	ØØ'ØØØØØð	ð 	ð ð	ð 	ð 	r"   c                 ó6  ‡ — t           t           dddddfdt          t          t          f         dt          t          g t          f         t          f         dt
          dt
          dt          t
                   dt
          d	t          t                   d
t          fˆ fd„}|S )a  
    Decorates a validator function as a [`validated_field`] (i.e. a dataclass field with a custom validator).

    Args:
        validator (`Callable`):
            A method that takes a value as input and raises ValueError/TypeError if the value is invalid.
    TNrw   rx   ry   rz   r{   r|   rb   r7   c                 ó.   •— t          ‰f| ||||||dœ|¤ŽS )Nr~   )r   )	rw   rx   ry   rz   r{   r|   rb   r7   r)   s	           €r    Ú_innerz"as_validated_field.<locals>._inner$  sC   ø€ õ Øð

àØ+ØØØØØð

ð 

ð ð

ð 

ð 
	
r"   )r   r   r	   r   r
   Úboolr   r   )r)   r‚   s   ` r    Úas_validated_fieldr„     sµ   ø€ õ .5ÝCJØØØ#ØØ#'ð
ð 
Ý•s�MÐ)Ô*ð
å�x¨­C¨Ô0µ-Ð?Ô@ð
õ ð
õ ð	
õ
 •tŒnð
õ ð
õ �4”.ð
õ ð
ð 
ð 
ð 
ð 
ð 
ð, €Mr"   r,   r-   Úexpected_typec                 ó$  — t          |¦  «        }t          |¦  «        }|t          u rdS t                               |¦  «        x}r || ||¦  «         dS t          |t          ¦  «        rt          | ||¦  «         dS t          d| › d|› �¦  «        ‚)z.Validate that 'value' matches 'expected_type'.NzUnsupported type for field 'r*   )	r   r   r	   Ú_BASIC_TYPE_VALIDATORSr1   rc   ÚtypeÚ_validate_simple_typer3   )r,   r-   r…   Úoriginr\   r)   s         r    Útype_validatorr‹   =  s¬   € å˜Ñ&Ô&€FÝ�MÑ"Ô"€Dà�ÐÐØˆÝ,×0Ò0°Ñ8Ô8Ð	8ˆð QØˆ	�$˜˜tÑ$Ô$Ð$Ð$Ð$Ý	�M¥4Ñ	(Ô	(ð QÝ˜d E¨=Ñ9Ô9Ð9Ð9Ð9åÐO°tÐOÐOÀÐOÐOÑPÔPÐPr"   r\   .c                 ó   — g }|D ]O}	 t          | ||¦  «          dS # t          $ r,}|                     t          |¦  «        ¦  «         Y d}~ŒHd}~ww xY wt          d| › dt	          |¦  «        › d|› dd                     |¦  «        › �¦  «        ‚)z8Validate that value matches one of the types in a Union.NúField 'z' with value z doesn't match any type in z
. Errors: z; )r‹   r3   r`   rg   rz   rO   )r,   r-   r\   ÚerrorsÚtr4   s         r    Ú_validate_unionr�   L  sÇ   € à€FØð "ð "ˆð	"Ý˜4 ¨Ñ*Ô*Ð*ØˆFˆFøÝð 	"ð 	"ð 	"Ø�MŠM�#˜a™&œ&Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!øøøøð	"øøøõ Øp�$ÐpÐp¥T¨%¡[¤[ÐpÐpÈTÐpÐpÐ]a×]fÒ]fÐgmÑ]nÔ]nÐpÐpñô ð s   ˆœ
A¦"AÁAc                 ó>   — ||vrt          d| › d|› d|› �¦  «        ‚dS )zValidate Literal type.r�   z' expected one of ú, got N)r3   )r,   r-   r\   s      r    Ú_validate_literalr“   [  s<   € à�DÐÐÝÐM $ÐMÐM¸$ÐMÐMÀeÐMÐMÑNÔNÐNð Ðr"   c           	      ó:  — t          |t          ¦  «        s't          d| › dt          |¦  «        j        › �¦  «        ‚|d         }t          |¦  «        D ]F\  }}	 t          | › d|› d�||¦  «         Œ# t          $ r}t          d|› d| › d�¦  «        |‚d	}~ww xY wd	S )
zValidate List[T] type.r�   z' expected a list, got r   ú[ú]úInvalid item at index z
 in list 'ú'N)rc   rd   r3   rˆ   rX   Ú	enumerater‹   ©r,   r-   r\   Ú	item_typeÚiÚitemr4   s          r    Ú_validate_listrž   a  sà   € å�e�TÑ"Ô"ð WÝÐU $ÐUÐU½tÀE¹{¼{Ô?SÐUÐUÑVÔVÐVð �Q”€IÝ˜UÑ#Ô#ð Rð R‰ˆˆ4ð	RÝ˜d˜>˜> Q˜>˜>˜>¨4°Ñ;Ô;Ð;Ð;øÝð 	Rð 	Rð 	RÝÐI°QÐIÐIÀ$ÐIÐIÐIÑJÔJÐPQÐQøøøøð	RøøøðRð Rs   ÁA2Á2
BÁ<BÂBc                 ó`  — t          |t          ¦  «        s't          d| › dt          |¦  «        j        › �¦  «        ‚|\  }}|                     ¦   «         D ]W\  }}	 t          | › d�||¦  «         t          | › d|›d�||¦  «         Œ2# t          $ r}t          d| › d�¦  «        |‚d}~ww xY wdS )	zValidate Dict[K, V] type.r�   z' expected a dict, got z.keyr•   r–   zInvalid key or value in dict 'r˜   N)rc   Údictr3   rˆ   rX   rB   r‹   )r,   r-   r\   Úkey_typeÚ
value_typer>   r?   r4   s           r    Ú_validate_dictr£   o  sõ   € å�e�TÑ"Ô"ð WÝÐU $ÐUÐU½tÀE¹{¼{Ô?SÐUÐUÑVÔVÐVð  Ñ€HˆjØ—’‘”ð Mð M‰ˆˆ1ð	MÝ˜d˜=˜=˜=¨!¨XÑ6Ô6Ð6Ý˜dÐ+Ð+ QÐ+Ð+Ð+¨Q°
Ñ;Ô;Ð;Ð;øÝð 	Mð 	Mð 	MÝÐD¸TÐDÐDÐDÑEÔEÈ1ÐLøøøøð	Møøøð	Mð Ms   Á+BÂ
B+ÂB&Â&B+c           
      óð  — t          |t          ¦  «        s't          d| › dt          |¦  «        j        › �¦  «        ‚t          |¦  «        dk    rm|d         t          u r^t          |¦  «        D ]L\  }}	 t          | › d|› d�||d         ¦  «         Œ$# t          $ r}t          d|› d	| › d
�¦  «        |‚d}~ww xY wdS t          |¦  «        t          |¦  «        k    r2t          d| › dt          |¦  «        › dt          |¦  «        › �¦  «        ‚t          t          ||¦  «        ¦  «        D ]I\  }\  }}	 t          | › d|› d�||¦  «         Œ!# t          $ r}t          d|› d	| › d
�¦  «        |‚d}~ww xY wdS )zValidate Tuple type.r�   z' expected a tuple, got é   r   r•   r–   r   r—   z in tuple 'r˜   Nz' expected a tuple of length r’   )
rc   Útupler3   rˆ   rX   rl   ÚEllipsisr™   r‹   Úzip)r,   r-   r\   rœ   r�   r4   Úexpecteds          r    Ú_validate_tuplerª   ~  sð  € å�e�UÑ#Ô#ð XÝÐV $ÐVÐVÅÀUÁÄÔ@TÐVÐVÑWÔWÐWõ ˆ4�y„y�A‚~€~˜$˜qœ'¥XÐ-Ð-Ý  Ñ'Ô'ð 	Wð 	W‰GˆAˆtðWÝ $˜~˜~¨˜~˜~˜~¨t°T¸!´WÑ=Ô=Ð=Ð=øÝð Wð Wð WÝÐ N¸Ð NÐ NÀtÐ NÐ NÐ NÑOÔOÐUVÐVøøøøðWøøøð	Wð 	Wõ 
ˆT‰Œ•c˜%‘j”jÒ	 Ð	 ÝÐb $ÐbÐbÅSÈÁYÄYÐbÐbÕVYÐZ_ÑV`ÔV`ÐbÐbÑcÔcÐcå#,­S°¸Ñ-=Ô-=Ñ#>Ô#>ð 	Wð 	WÑˆAÑ��hðWÝ $˜~˜~¨˜~˜~˜~¨t°XÑ>Ô>Ð>Ð>øÝð Wð Wð WÝÐ N¸Ð NÐ NÀtÐ NÐ NÐ NÑOÔOÐUVÐVøøøøðWøøøð	Wð 	Ws0   Á4BÂ
B8ÂB3Â3B8Ä5EÅ
E3ÅE.Å.E3c                 ó.  — t          |t          ¦  «        s't          d| › dt          |¦  «        j        › �¦  «        ‚|d         }t          |¦  «        D ]@\  }}	 t          | › d�||¦  «         Œ# t          $ r}t          d| › d�¦  «        |‚d}~ww xY wdS )zValidate Set[T] type.r�   z' expected a set, got r   z itemzInvalid item in set 'r˜   N)rc   Úsetr3   rˆ   rX   r™   r‹   rš   s          r    Ú_validate_setr­   •  sÑ   € å�e�SÑ!Ô!ð VÝÐT $ÐTÐT½dÀ5¹k¼kÔ>RÐTÐTÑUÔUÐUð �Q”€IÝ˜UÑ#Ô#ð Dð D‰ˆˆ4ð	DÝ˜d˜>˜>˜>¨4°Ñ;Ô;Ð;Ð;øÝð 	Dð 	Dð 	DÝÐ;°DÐ;Ð;Ð;Ñ<Ô<À!ÐCøøøøð	DøøøðDð Ds   ÁA/Á/
BÁ9BÂBc                 ó¦   — t          ||¦  «        s@t          d| › d|j        › dt          |¦  «        j        › dt	          |¦  «        › d�	¦  «        ‚dS )z&Validate simple type (int, str, etc.).r�   z' expected r’   z	 (value: rM   N)rc   r3   rX   rˆ   rz   )r,   r-   r…   s      r    r‰   r‰   £  sl   € å�e˜]Ñ+Ô+ð 
ÝØr�dÐrÐr }Ô'=ÐrÐrÅTÈ%Á[Ä[ÔEYÐrÐrÕdhÐinÑdoÔdoÐrÐrÐrñ
ô 
ð 	
ð
ð 
r"   r   c                 ó&   ‡ — dt           ddfˆ fd„}|S )z-Create a type validator function for a field.r-   r   Nc                 ó>   •— t          ‰j        | ‰j        ¦  «         d S r   )r‹   r,   rˆ   )r-   r   s    €r    r)   z)_create_type_validator.<locals>.validator¯  s   ø€ Ý�u”z 5¨%¬*Ñ5Ô5Ð5Ð5Ð5r"   )r	   )r   r)   s   ` r    ra   ra   «  s7   ø€ ð6�ð 6 ð 6ð 6ð 6ð 6ð 6ð 6ð Ðr"   c                 óœ  — t          | ¦  «        sdS t          j        | ¦  «        }t          |j                             ¦   «         ¦  «        }t          |¦  «        dk    rdS |d         j        t          j        j	        t          j        j
        t          j        j        fvrdS |dd…         D ]}|j        t          j        j        k    r dS Œ dS )züCheck if a function is a validator.

    A validator is a Callable that can be called with a single positional argument.
    The validator can have more arguments with default values.

    Basically, returns True if `validator(value)` is possible.
    Fr   r   NT)rk   rm   rn   rd   ro   Úvaluesrl   ÚkindÚ	ParameterÚPOSITIONAL_OR_KEYWORDÚPOSITIONAL_ONLYÚVAR_POSITIONALrw   Úempty)r)   rn   ro   Ú	parameters       r    re   re   µ  sÒ   € õ �IÑÔð ØˆuåÔ! )Ñ,Ô,€IÝ�iÔ*×1Ò1Ñ3Ô3Ñ4Ô4€JÝ
ˆ:�„˜!ÒÐØˆuØ�!„}ÔÝÔÔ/ÝÔÔ)ÝÔÔ(ð"ð ð ð
 ˆuØ   ”^ð ð ˆ	ØÔ¥Ô 1Ô 7Ò7Ð7Ø�5�5ð 8àˆ4r"   )r!   r   ÚValidator_Tr   r   r   r   )3rm   Údataclassesr   r   r   r   r   Ú	functoolsr   Útypingr	   r
   r   r   r   r   r   r   r   r   r   r   r   rŽ   r   r   r   rº   r   r!   rƒ   r   r„   rg   r‹   r�   r“   rž   r£   rª   r­   rˆ   r‰   ra   re   rd   r    r¦   r¬   r‡   Ú__all__r   r"   r    ú<module>r¿      sV  ðØ €€€Ø DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DØ Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ˜�u˜d�{Ô#€Ø€GˆC�L„L€ð 
Ø (��Q”Ð (˜D œGÐ (Ð (Ð (ñ 
„Ø (ð 
Ø$)Ð OÐ OÐ O˜TÐ O¨h¸¸Q¼°yÀ$ÀqÄ'Ð7IÔ.JÐ OÐ OÐ Oñ 
„Ø Oð "ðE2Ø<AðE2ð E2ð E2Ø	�$�q”'Ô	ðE2Ø59ðE2à
ˆ4�Œ7�H˜d 1œg˜Y¨¨Q¬Ð/Ô0Ð0Ô1ðE2ð E2ð E2ð E2ðT *1Ø?FØØØØØ#ð(ð (Ø�T˜+Ô&¨Ð3Ô4ð(à�3˜Ð%Ô&ð(ð ˜8 B¨ GÔ,¨mÐ;Ô<ð(ð ð	(ð
 ð(ð �4Œ.ð(ð ð(ð �tŒnð(ð ð(ð 	ð(ð (ð (ð (ðV +ð ð ð ð ðDQ˜ð Q Sð Q¸ð QÀð Qð Qð Qð Qð˜#ð  cð °°s¸C°x´ð ÀTð ð ð ð ðO˜Cð O¨ð O°5¸¸c¸´?ð OÀtð Oð Oð Oð OðR˜ð R Sð R°°c¸3°h´ð RÀDð Rð Rð Rð RðM˜ð M Sð M°°c¸3°h´ð MÀDð Mð Mð Mð MðW˜#ð W cð W°°s¸C°x´ð WÀTð Wð Wð Wð Wð.D˜ð D Cð D¨u°S¸#°X¬ð DÀ4ð Dð Dð Dð Dð
 ð 
¨Cð 
Àð 
Èð 
ð 
ð 
ð 
ð %ð ¨Kð ð ð ð ð˜Sð  Tð ð ð ð ð8 
ˆ?ØÐØˆ.Øˆ.Ø	ˆ?ØˆðÐ ðð ð €€€r"   