
    Mh7                    `   S r SSKJr  SSKJrJr  SSKJrJr  SSK	r
SSKJr  SSKJrJr  \" S\\5      r\" S	\\S5      rSS
 jrSS jrSS jrSS jrSS jr  SS jr  S         SS jjrSSS jjrSS jr\S S j5       r\S!S j5       r    S"S jrS#S jrS$S jrS%S jr SS jr!g)&zV
Module that contains many useful utilities
for validating data or function arguments
    )annotations)IterableSequence)TypeVaroverloadN)lib)is_bool
is_integerBoolishTBoolishNoneTc           
         US:  a  [        S5      e[        U5      [        U5      :  a=  [        U5      U-   n[        U5      U-   nUS:X  a  SOSn[        U  SU SU SU S	35      eg
)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          I/var/www/html/env/lib/python3.13/site-packages/pandas/util/_validators.py_check_arg_lengthr      s     QEFF
4y3{##K(+>>t9'::!.!!3:g&}oQxj A !*
 	
 $    c                    U HT  n X   nX#   nUb  Ub  Uc  Ub  SnOXE:H  n[        U5      (       d  [        S5      e U(       a  MD  [        SU SU  S35      e   g! [         a    X   X#   L n N2f = f)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$   1   s     	:"B!B 2:2:".5>> !;<< " uu 005wb: 1 (  	: %)99E	:s   6AA10A1c                \    [        XX#5        [        [        X15      5      n[        XU5        g)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`
N)r   dictzipr$   )r   r   r   r   kwargss        r   validate_argsr)   W   s+    @ e#6D
 #k()Fe[9r   c                    [        U5      [        U5      -
  nU(       a%  [        [        U5      5      n[        U  SU S35      eg)zq
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_keysr1      sG     v;[))DtDz"5'!H	QRSTT r   c                T    UR                  5       n[        XU5        [        XU5        g)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)copyr1   r$   )r   r(   r   kwdss       r   validate_kwargsr5      s#    , ;;=DE;7e;7r   c                    [        X[        UR                  5       5      -   X45        [        [	        XA5      5      nU H  nXb;   d  M
  [        U  SU S35      e   UR                  U5        [        XU5        g)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.

z-() got multiple values for keyword argument 'r+   N)r   tuplevaluesr&   r'   r   updater5   )r   r   r(   r   r   	args_dictr    s          r   validate_args_and_kwargsr;      sy    P eFMMO,,.A S+,I='Fse1M   MM)E;/r   c                    [        U 5      nU(       a  U=(       d    U SL nU(       a  U=(       d    [        U [        5      nU(       d%  [        SU S[	        U 5      R
                   S35      eU $ )a  
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_kwargrG      sl    < J2ETM
9:eS#9
XJ 'K((),
 	
 Lr   c                   SSK Jn  U c  Uc  [        S5      eU c  Ub  U" U5      nX4$ U bJ  UcG  U(       a=  [        U [        [
        45      (       a"  [        S[        U 5      R                   S35      eX4$ U b  Ub  [        S5      eX4$ )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.missingrI   r   r>   listr7   r   r@   rA   )rB   methodvalidate_scalar_dict_valuerI   s       r   validate_fillna_kwargsrO     s    & 6}CDD}+"6* = 
	v~%*UT5M*J*J!!%e!5!5 6a9  = 
	v1DEE=r   c                    [         R                  " U 5      nSnUR                  S:X  a  SUs=::  a  S::  d  O  [        U5      e U$ [	        S U 5       5      (       d  [        U5      eU$ )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  L   #    U  H  nS Us=:*  =(       a    S:*  Os  v   M     g7f)r   r   N ).0qss     r   	<genexpr>&validate_percentile.<locals>.<genexpr>S  s     0%B1<<a<<%s   "$)npasarrayndimr   all)qq_arrmsgs      r   validate_percentiler^   6  sf    * JJqME =CzzQEQS/! 
 L 0%000S/!Lr   c                    g NrR   	ascendings    r   validate_ascendingrc   X      r   c                    g r`   rR   ra   s    r   rc   rc   ]  rd   r   c                    SSS.n[        U [        5      (       d  [        U S40 UD6$ U  Vs/ s H  n[        US40 UD6PM     sn$ s  snf )z8Validate ``ascending`` kwargs for ``sort_index`` method.FT)rD   rE   rb   )r>   r   rG   )rb   r(   items      r   rc   rc   b  sR     $D9Fi**"9kDVDDIRSk<V<SSSs   Ac                `    SnSnU c  SnSnX4$ U S:X  a  SnX4$ U S:X  a  SnX4$ [        S5      e)z
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_endpointsrn   m  sj    " KL~ $$ 
6	 $$ 
7	 $$ JKKr   c                |    Sn[        U [        5      (       a  SSSSS.R                  U 5      nUc  [        S5      eU$ )a  
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)bothri   rj   neitherz?Inclusive has to be either 'both', 'neither', 'left' or 'right')r>   strgetr   )	inclusiveleft_right_inclusives     r   validate_inclusiverw     sX      6:)S!! !"%	 

 #i. 	 #M
 	
  r   c                    [        U 5      (       d  [        SU SU 35      eU S:  a  X-  n SU s=::  a  U::  d  O  [        SU SU 35      eU $ )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
Qwv;F85QRRJr   c                V    U [         R                  La  U S;  a  [        SU  S35      eg g )N)numpy_nullablepyarrowzdtype_backend z= is invalid, only 'numpy_nullable' and 'pyarrow' are allowed.)r   
no_defaultr   )dtype_backends    r   check_dtype_backendr     s?    CNN* ==  0) *  > +r   )returnNonerp   )
rB   r   rC   rs   rD   boolrE   r   r   r   )T)rN   r   )r[   zfloat | Iterable[float]r   z
np.ndarray)rb   r   r   r   )rb   zSequence[BoolishT]r   zlist[BoolishT])rb   zbool | int | Sequence[BoolishT]r   zbool | int | list[BoolishT])rk   
str | Noner   tuple[bool, bool])ru   r   r   r   )rz   r?   r{   r?   r   r?   )"__doc__
__future__r   collections.abcr   r   typingr   r   numpyrW   pandas._libsr   pandas.core.dtypes.commonr	   r
   r   r?   r   r   r   r$   r)   r1   r5   r;   rG   rO   r^   rc   rn   rw   r|   r   rR   r   r   <module>r      s   #
  
 :tS)~tS$7
(#L&:R
U8670	70z 	*** * 	*
 *Z$ND 
 
 
 
T.T T%B D$r   