Ë
    êñiF:  ã                  óP  — d Z ddlmZ ddlmZmZ ddlmZmZ ddl	Z
ddlmZ ddlmZ ddlmZmZ  ed	ee«      Z ed
eed«      Zdd„Zdd„Zdd„Zdd„Zdd„Z	 	 dd„Z	 	 d	 	 	 	 	 	 	 	 	 dd„Zdd„Zd d!d„Zd"d„Zed#d„«       Z ed$d„«       Z 	 	 	 	 d%d„Z d&d„Z!d'd„Z"d(d„Z#dd„Z$y))zV
Module that contains many useful utilities
for validating data or function arguments
é    )Úannotations)ÚIterableÚSequence)ÚTypeVarÚoverloadN)Úlib)ÚNA)Úis_boolÚ
is_integerÚBoolishTÚBoolishNoneTc           
     óÊ   — |dk  rt        d«      ‚t        |«      t        |«      kD  r<t        |«      |z   }t        |«      |z   }|dk(  rdnd}t        | › d|› d|› d|› d	�«      ‚y
)zÀ
    Checks whether 'args' has length of at most 'compat_args'. Raises
    a TypeError if that is not the case, similar to in Python when a
    function is called with too many arguments.
    r   z*'max_fname_arg_count' must be non-negativeé   ÚargumentÚ	argumentsz() takes at most ú z (z given)N)Ú
ValueErrorÚlenÚ	TypeError)ÚfnameÚargsÚmax_fname_arg_countÚcompat_argsÚmax_arg_countÚactual_arg_countr   s          úY/var/www/pod-logistic/pod-ai/venv/lib/python3.12/site-packages/pandas/util/_validators.pyÚ_check_arg_lengthr      sŽ   € ð ˜QÒÜÐEÓFÐFä
ˆ4ƒy”3�{Ó#Ò#Ü˜KÓ(Ð+>Ñ>ˆÜ˜t›9Ð':Ñ:ÐØ!.°!Ò!3‘:¸ˆäØˆgÐ& } o°Q°x°jð AØ Ð! ð*ó
ð 	
ð $ó    c                óÐ   — |D ]H  }	 ||   }||   }|�|�|€|�d}n||k(  }t        |«      st        d«      ‚	 |rŒ8t        d|› d| › d�«      ‚ y# t        $ r ||   ||   u }Y Œ,w xY w)zø
    Check that the keys in `arg_val_dict` are mapped to their
    default values as specified in `compat_args`.

    Note that this function is to be called only when it has been
    checked that arg_val_dict.keys() is a subset of compat_args
    NFz'match' is not a booleanzthe 'z=' parameter is not supported in the pandas implementation of z())r
   r   )r   Úarg_val_dictr   ÚkeyÚv1Úv2Úmatchs          r   Ú_check_for_default_valuesr%   3   s´   € ð ò ˆð	:Ø˜cÑ"ˆBØ˜SÑ!ˆBð � 2 :°2°:À"À.Ø‘à˜b™�ä˜5”>Ü Ð!;Ó<Ð<ð "ò ÜØ˜�uð 0Ø05¨w°bð:óð ñ1øô( ò 	:Ø  Ñ%¨°SÑ)9Ð9ŠEð	:ús   ‡0AÁA%Á$A%c                óh   — t        | |||«       t        t        ||d¬«      «      }t        | ||«       y)a  
    Checks whether the length of the `*args` argument passed into a function
    has at most `len(compat_args)` arguments and whether or not all of these
    elements in `args` are set to their default values.

    Parameters
    ----------
    fname : str
        The name of the function being passed the `*args` parameter
    args : tuple
        The `*args` parameter passed into a function
    max_fname_arg_count : int
        The maximum number of arguments that the function `fname`
        can accept, excluding those in `args`. Used for displaying
        appropriate error messages. Must be non-negative.
    compat_args : dict
        A dictionary of keys and their associated default values.
        In order to accommodate buggy behaviour in some versions of `numpy`,
        where a signature displayed keyword arguments but then passed those
        arguments **positionally** internally when calling downstream
        implementations, a dict ensures that the original
        order of the keyword arguments is enforced.

    Raises
    ------
    TypeError
        If `args` contains more values than there are `compat_args`
    ValueError
        If `args` contains values that do not correspond to those
        of the default values specified in `compat_args`
    F©ÚstrictN)r   ÚdictÚzipr%   )r   r   r   r   Úkwargss        r   Úvalidate_argsr,   Y   s5   € ô@ �e˜TÐ#6¸ÔDô
 ”#�k 4°Ô6Ó7€FÜ˜e V¨[Õ9r   c                ó€   — t        |«      t        |«      z
  }|r%t        t        |«      «      }t        | › d|› d�«      ‚y)z}
    Checks whether 'kwargs' contains any keys that are not
    in 'compat_args' and raises a TypeError if there is one.
    z'() got an unexpected keyword argument 'ú'N)ÚsetÚnextÚiterr   )r   r+   r   ÚdiffÚbad_args        r   Ú_check_for_invalid_keysr4   ‚   sG   € ô ˆv‹;œ˜[Ó)Ñ)€DáÜ”t˜D“zÓ"ˆÜ˜5˜'Ð!HÈÈ	ÐQRÐSÓTÐTð r   c                óX   — |j                  «       }t        | ||«       t        | ||«       y)aÞ  
    Checks whether parameters passed to the **kwargs argument in a
    function `fname` are valid parameters as specified in `*compat_args`
    and whether or not they are set to their default values.

    Parameters
    ----------
    fname : str
        The name of the function being passed the `**kwargs` parameter
    kwargs : dict
        The `**kwargs` parameter passed into `fname`
    compat_args: dict
        A dictionary of keys that `kwargs` is allowed to have and their
        associated default values

    Raises
    ------
    TypeError if `kwargs` contains keys not in `compat_args`
    ValueError if `kwargs` contains keys in `compat_args` that do not
    map to the default values specified in `compat_args`
    N)Úcopyr4   r%   )r   r+   r   Úkwdss       r   Úvalidate_kwargsr8   �   s'   € ð, �;‰;‹=€DÜ˜E 6¨;Ô7Ü˜e T¨;Õ7r   c                óö   — t        | |t        |j                  «       «      z   ||«       t        t	        ||d¬«      «      }|D ]  }||v sŒt        | › d|› d�«      ‚ |j                  |«       t        | ||«       y)aý  
    Checks whether parameters passed to the *args and **kwargs argument in a
    function `fname` are valid parameters as specified in `*compat_args`
    and whether or not they are set to their default values.

    Parameters
    ----------
    fname: str
        The name of the function being passed the `**kwargs` parameter
    args: tuple
        The `*args` parameter passed into a function
    kwargs: dict
        The `**kwargs` parameter passed into `fname`
    max_fname_arg_count: int
        The minimum number of arguments that the function `fname`
        requires, excluding those in `args`. Used for displaying
        appropriate error messages. Must be non-negative.
    compat_args: dict
        A dictionary of keys that `kwargs` is allowed to
        have and their associated default values.

    Raises
    ------
    TypeError if `args` contains more values than there are
    `compat_args` OR `kwargs` contains keys not in `compat_args`
    ValueError if `args` contains values not at the default value (`None`)
    `kwargs` contains keys in `compat_args` that do not map to the default
    value as specified in `compat_args`

    See Also
    --------
    validate_args : Purely args validation.
    validate_kwargs : Purely kwargs validation.

    Fr'   z-() got multiple values for keyword argument 'r.   N)r   ÚtupleÚvaluesr)   r*   r   Úupdater8   )r   r   r+   r   r   Ú	args_dictr!   s          r   Úvalidate_args_and_kwargsr>   ª   sŠ   € ôP Øˆt”e˜FŸM™M›OÓ,Ñ,Ð.AÀ;ôô ”S˜ d°5Ô9Ó:€Iàò ˆØ�&Š=ÜØ�'ÐFÀsÀeÈ1ÐMóð ðð ‡M�M�)ÔÜ�E˜6 ;Õ/r   c                óª   — t        | «      }|r|xs | du }|r|xs t        | t        «      }|s%t        d|› dt	        | «      j
                  › d�«      ‚| S )aR  
    Ensure that argument passed in arg_name can be interpreted as boolean.

    Parameters
    ----------
    value : bool
        Value to be validated.
    arg_name : str
        Name of the argument. To be reflected in the error message.
    none_allowed : bool, default True
        Whether to consider None to be a valid boolean.
    int_allowed : bool, default False
        Whether to consider integer value to be a valid boolean.

    Returns
    -------
    value
        The same value as input.

    Raises
    ------
    ValueError
        If the value is not a valid boolean.
    NzFor argument "z$" expected type bool, received type ú.)r
   Ú
isinstanceÚintr   ÚtypeÚ__name__)ÚvalueÚarg_nameÚnone_allowedÚint_allowedÚ
good_values        r   Úvalidate_bool_kwargrJ   ä   sl   € ô< ˜“€JÙØÒ2 E¨T Mˆ
áØÒ9¤:¨e´SÓ#9ˆ
áÜØ˜X˜Jð 'Ü˜“K×(Ñ(Ð)¨ð,ó
ð 	
ð €Lr   c                óÐ   — | t         j                  u sDt        | t        «      s4| �2| t        u s*t        j
                  | «      rt        j                  | «      ryt        |› d| › �«      ‚)a   
    Validate na arguments.

    Parameters
    ----------
    value : object
        Value to validate.
    name : str
        Name of the argument, used to raise an informative error message.

    Raises
    ______
    ValueError
        When ``value`` is determined to be invalid.
    Nz2 must be None, pd.NA, np.nan, True, or False; got )	r   Ú
no_defaultrA   Úboolr	   Úis_floatÚnpÚisnanr   )rE   Únames     r   Úvalidate_na_argrR     sW   € ð" 	”—‘ÑÜ�eœTÔ"Øˆ=Ø”B‰;Ü�L‰L˜Ô¤B§H¡H¨U¤OàÜ
˜�vÐOÐPUÈwÐWÓ
XÐXr   c                óö   — ddl m} | €|€t        d«      ‚| €|� ||«      }| |fS | �@|€>|r8t        | t        t
        f«      r"t        dt        | «      j                  › d�«      ‚| |fS | �|�t        d«      ‚| |fS )a$  
    Validate the keyword arguments to 'fillna'.

    This checks that exactly one of 'value' and 'method' is specified.
    If 'method' is specified, this validates that it's a valid method.

    Parameters
    ----------
    value, method : object
        The 'value' and 'method' keyword arguments for 'fillna'.
    validate_scalar_dict_value : bool, default True
        Whether to validate that 'value' is a scalar or dict. Specifically,
        validate that it is not a list or tuple.

    Returns
    -------
    value, method : object
    r   )Úclean_fill_methodz(Must specify a fill 'value' or 'method'.z>"value" parameter must be a scalar or dict, but you passed a "ú"z)Cannot specify both 'value' and 'method'.)	Úpandas.core.missingrT   r   rA   Úlistr:   r   rC   rD   )rE   ÚmethodÚvalidate_scalar_dict_valuerT   s       r   Úvalidate_fillna_kwargsrZ   ,  s°   € õ& 6à€}˜˜ÜÐCÓDÐDØ€}˜Ð+Ù" 6Ó*ˆð �&ˆ=Ðð 
Ð	˜v˜~Ù%¬*°U¼TÄ5¸MÔ*JÜð!Ü!% e£×!5Ñ!5Ð 6°að9óð ð �&ˆ=Ðð 
Ð	˜vÐ1ÜÐDÓEÐEà�&ˆ=Ðr   c                óÔ   — t        j                  | «      }d}|j                  dk(  r$d|cxk  rdk  st        |«      ‚ t        |«      ‚|S t	        d„ |D «       «      st        |«      ‚|S )aå  
    Validate percentiles (used by describe and quantile).

    This function checks if the given float or iterable of floats is a valid percentile
    otherwise raises a ValueError.

    Parameters
    ----------
    q: float or iterable of floats
        A single percentile or an iterable of percentiles.

    Returns
    -------
    ndarray
        An ndarray of the percentiles if valid.

    Raises
    ------
    ValueError if percentiles are not in given interval([0, 1]).
    z0percentiles should all be in the interval [0, 1]r   r   c              3  ó<   K  — | ]  }d |cxk  xr dk  nc –— Œ y­w)r   r   N© )Ú.0Úqss     r   ú	<genexpr>z&validate_percentile.<locals>.<genexpr>o  s   è ø€ Ò. "��b–˜A—�Ñ.ùs   ‚)rO   ÚasarrayÚndimr   Úall)ÚqÚq_arrÚmsgs      r   Úvalidate_percentilerg   S  sm   € ô* �J‰J�q‹M€Eð =€CØ‡z�z�Q‚Ø�EŒ˜QŠÜ˜S“/Ð!ð Ü˜S“/Ð!ð €Lô Ñ.¨Ô.Ô.Ü˜‹oÐØ€Lr   c                 ó   — y ©Nr]   ©Ú	ascendings    r   Úvalidate_ascendingrl   t  s   € Ø9<r   c                 ó   — y ri   r]   rj   s    r   rl   rl   x  s   € ØILr   c                ó†   — dddœ}t        | t        «      st        | dfi |¤ŽS | D �cg c]  }t        |dfi |¤Ž‘Œ c}S c c}w )z8Validate ``ascending`` kwargs for ``sort_index`` method.FT)rG   rH   rk   )rA   r   rJ   )rk   r+   Úitems      r   rl   rl   |  sK   € ð $°DÑ9€FÜ�i¤Ô*Ü" 9¨kÑD¸VÑDÐDàIRÖSÀÔ  kÑ<°VÓ<ÒSÐSùÒSs   §>c                ó`   — d}d}| €d}d}||fS | dk(  rd}||fS | dk(  rd}||fS t        d«      ‚)a%  
    Check that the `closed` argument is among [None, "left", "right"]

    Parameters
    ----------
    closed : {None, "left", "right"}

    Returns
    -------
    left_closed : bool
    right_closed : bool

    Raises
    ------
    ValueError : if argument is not among valid values
    FTÚleftÚrightz/Closed has to be either 'left', 'right' or None)r   )ÚclosedÚleft_closedÚright_closeds      r   Úvalidate_endpointsrv   ‡  sp   € ð" €KØ€Là€~ØˆØˆð ˜Ð$Ð$ð 
�6Ò	Øˆð ˜Ð$Ð$ð 
�7Ò	Øˆð ˜Ð$Ð$ô ÐJÓKÐKr   c                óp   — d}t        | t        «      rdddddœj                  | «      }|€t        d«      ‚|S )aD  
    Check that the `inclusive` argument is among {"both", "neither", "left", "right"}.

    Parameters
    ----------
    inclusive : {"both", "neither", "left", "right"}

    Returns
    -------
    left_right_inclusive : tuple[bool, bool]

    Raises
    ------
    ValueError : if argument is not among valid values
    N)TT©TF)FT)FF)Úbothrq   rr   Úneitherz?Inclusive has to be either 'both', 'neither', 'left' or 'right')rA   ÚstrÚgetr   )Ú	inclusiveÚleft_right_inclusives     r   Úvalidate_inclusiver   ¨  sU   € ð  6:Ðä�)œSÔ!à Ø!Ø"Ø%ñ	 
÷
 ‰#ˆi‹.ð 	ð Ð#ÜØMó
ð 	
ð  Ðr   c                óŽ   — t        | «      st        d|› d|› �«      ‚| dk  r| |z  } d| cxk  r|k  sn t        d|› d|› �«      ‚| S )z¼
    Check that we have an integer between -length and length, inclusive.

    Standardize negative loc to within [0, length].

    The exceptions we raise on failure match np.insert.
    z loc must be an integer between -z and r   )r   r   Ú
IndexError)ÚlocÚlengths     r   Úvalidate_insert_locr„   Ê  s_   € ô �cŒ?ÜÐ:¸6¸(À%ÈÀxÐPÓQÐQà
ˆQ‚wØˆv‰ˆØ�Ô�vÔÜÐ;¸F¸8À5ÈÈÐQÓRÐRØ€Jr   c                óP   — | t         j                  ur| dvrt        d| › d�«      ‚y y )N)Únumpy_nullableÚpyarrowzdtype_backend z= is invalid, only 'numpy_nullable' and 'pyarrow' are allowed.)r   rL   r   )Údtype_backends    r   Úcheck_dtype_backendr‰   Ü  s?   € ØœCŸN™NÑ*ØÐ =Ñ=ÜØ   ð 0)ð *óð ð >ð +r   )ÚreturnÚNonerx   )
rE   r   rF   r{   rG   rM   rH   rM   rŠ   r   )rQ   r{   )T)rY   rM   )rd   zfloat | Iterable[float]rŠ   z
np.ndarray)rk   r   rŠ   r   )rk   zSequence[BoolishT]rŠ   zlist[BoolishT])rk   zbool | int | Sequence[BoolishT]rŠ   zbool | int | list[BoolishT])rs   ú
str | NonerŠ   útuple[bool, bool])r}   rŒ   rŠ   r�   )r‚   rB   rƒ   rB   rŠ   rB   )%Ú__doc__Ú
__future__r   Úcollections.abcr   r   Útypingr   r   ÚnumpyrO   Úpandas._libsr   Úpandas._libs.missingr	   Úpandas.core.dtypes.commonr
   r   rM   rB   r   r   r   r%   r,   r4   r8   r>   rJ   rR   rZ   rg   rl   rv   r   r„   r‰   r]   r   r   ú<module>r–      s  ðñõ
 #÷÷ó
 å Ý #÷ñ
 �:˜t SÓ)€Ù�~ t¨S°$Ó7€ó
ó(#óL&:óR
Uó8ð670à	ó70ðz Øð	*Øð*àð*ð ð*ð ð	*ð
 ó*óZYô6$óNðB 
Ú <ó 
Ø <ð 
Ú Ló 
Ø LðTØ.ðTà óTó%óB óDô$r   