
    iu;              	      >   d dl mZ d dlmZmZmZ d dlmZmZm	Z	 d dl
mZ erd dlmZmZ i ddddd	d
dd
ddddddddddddddddddddddddd d!d"d#d#d$d$d%d%d&Zd1d'Zd2d(Zd3d)Z ed*       G d+ d,             Z ed-      d4d.       Zd,d/gZy0)5    )annotations)CallableHashableSequence)TYPE_CHECKINGAnyNoReturn)
set_module)	DataFrameSeries__add__+__radd____sub__-__rsub____mul__*__rmul____truediv__/__rtruediv____floordiv__z//__rfloordiv____mod__%__rmod____ge__z>=__gt__>__le__z<=__lt__<__eq__z==z!=&|^)__ne____and____rand____or____ror____xor____rxor__c                ,     t         fd|D              S )Nc              3  d   K   | ]'  }t        |t              r|j                        n| ) y wN)
isinstance
Expression_eval_expression).0xdfs     L/app/cer_product_mecsu/.venv/lib/python3.12/site-packages/pandas/core/col.py	<genexpr>z_parse_args.<locals>.<genexpr>6   s/      GH*Q
";2Bs   -0)tuple)r7   argss   ` r8   _parse_argsr<   4   s     LP      c           	         |j                         D ci c])  \  }}|t        |t              r|j                  |       n|+ c}}S c c}}w r1   )itemsr2   r3   r4   )r7   kwargskeyvals       r8   _parse_kwargsrC   ;   sI     C 	C)DS!!"%#M  s   .Ac                     dj                  d | D              }dj                  d |j                         D              }g }|r|j                  |       |r|j                  |       dj                  |      S )Nz, c              3  2   K   | ]  }t        |        y wr1   )repr)r5   args     r8   r9   z,_pretty_print_args_kwargs.<locals>.<genexpr>D   s     6#DI6s   c              3  0   K   | ]  \  }}| d |  yw)=N )r5   kvs      r8   r9   z,_pretty_print_args_kwargs.<locals>.<genexpr>E   s     DTQqc1%LDs   )joinr?   append)r;   r@   inputs_reprkwargs_reprall_argss        r8   _pretty_print_args_kwargsrR   C   sb    ))666K))DV\\^DDKH$$99Xr=   zpandas.api.typingc                     e Zd ZdZ	 d2	 	 	 	 	 	 	 d3dZd4dZ	 d5	 	 	 	 	 	 	 	 	 d6dZd7dZd8dZd8dZ	d8dZ
d8d	Zd8d
Zd8dZd8dZd8dZd8dZd8dZd8dZd8dZd8dZd8dZd8dZd8dZd8dZd8dZd9dZd9dZd8dZd8dZd8dZd8dZd8dZ d8dZ!d8d Z"d8d!Z#d:d"Z$d:d#Z%d:d$Z&d:d%Z'	 	 	 	 	 	 	 	 	 	 d;d&Z(d<d'Z)d=d(Z*d>d)Z+d?d*Z,d@d+Z-dAd,Z.dBd-Z/dBd.Z0dBd/Z1dCd0Z2y1)Dr3   z
    Class representing a deferred column.

    This is not meant to be instantiated directly. Instead, use :meth:`pandas.col`.
    c                .    || _         || _        || _        y r1   )_func	_repr_str_needs_parentheses)selffuncrepr_strneeds_parentheses       r8   __init__zExpression.__init__X   s     
!"2r=   c                $    | j                  |      S r1   )rU   )rX   r7   s     r8   r4   zExpression._eval_expressionb   s    zz"~r=   c                t     t        t              rt         fd||      S t         fd||      S )Nc                d     t        j                  |             j                  |             S r1   getattrr4   r7   opotherrX   s    r8   <lambda>z%Expression._with_op.<locals>.<lambda>j   s/    A74#8#8#<bA**2. r=   r[   c                F     t        j                  |                   S r1   r`   rb   s    r8   re   z%Expression._with_op.<locals>.<lambda>r   s!    A74#8#8#<bA%H r=   )r2   r3   )rX   rc   rd   rZ   needs_parenthesess   ```  r8   _with_opzExpression._with_ope   sA     eZ( !2  H!2 r=   c                    | j                   rd| d}n| }t        |t              r|j                   r
d|d}||fS |}||fS )N())rW   r2   r3   rX   rd   	self_repr
other_reprs       r8   _maybe_wrap_parenthesesz"Expression._maybe_wrap_parenthesesw   s_    ""D81I(IeZ(U-E-EUIQJ *$$ "9J*$$r=   c                Z    | j                  |      \  }}| j                  d|| d|       S )Nr    + rp   ri   rm   s       r8   r   zExpression.__add__   5     $ < <U C	:}}Y)C
|/LMMr=   c                Z    | j                  |      \  }}| j                  d|| d|       S )Nr   rr   rs   rm   s       r8   r   zExpression.__radd__   5     $ < <U C	:}}Z:,c)0MNNr=   c                Z    | j                  |      \  }}| j                  d|| d|       S )Nr    - rs   rm   s       r8   r   zExpression.__sub__   rt   r=   c                Z    | j                  |      \  }}| j                  d|| d|       S )Nr   rx   rs   rm   s       r8   r   zExpression.__rsub__   rv   r=   c                Z    | j                  |      \  }}| j                  d|| d|       S )Nr    * rs   rm   s       r8   r   zExpression.__mul__   rt   r=   c                Z    | j                  |      \  }}| j                  d|| d|       S )Nr   r{   rs   rm   s       r8   r   zExpression.__rmul__   rv   r=   c                Z    | j                  |      \  }}| j                  d|| d|       S )N
__matmul__ @ rs   rm   s       r8   r~   zExpression.__matmul__   s5     $ < <U C	:}}\5YKs:,2OPPr=   c                Z    | j                  |      \  }}| j                  d|| d|       S )N__rmatmul__r   rs   rm   s       r8   r   zExpression.__rmatmul__   s5     $ < <U C	:}}]Ej\YK3PQQr=   c                Z    | j                  |      \  }}| j                  d|| d|       S )N__pow__ ** rs   rm   s       r8   r   zExpression.__pow__   s5     $ < <U C	:}}Y)D/MNNr=   c                Z    | j                  |      \  }}| j                  d|| d|       S )N__rpow__r   rs   rm   s       r8   r   zExpression.__rpow__   s5     $ < <U C	:}}Z:,d9+0NOOr=   c                Z    | j                  |      \  }}| j                  d|| d|       S )Nr    / rs   rm   s       r8   r   zExpression.__truediv__   s5     $ < <U C	:}}]Ei[J<3PQQr=   c                Z    | j                  |      \  }}| j                  d|| d|       S )Nr   r   rs   rm   s       r8   r   zExpression.__rtruediv__   s5     $ < <U C	:}}^Uzl#i[4QRRr=   c                Z    | j                  |      \  }}| j                  d|| d|       S )Nr    // rs   rm   s       r8   r   zExpression.__floordiv__   s5     $ < <U C	:}}^Uykj\4RSSr=   c                Z    | j                  |      \  }}| j                  d|| d|       S )Nr   r   rs   rm   s       r8   r   zExpression.__rfloordiv__   s5     $ < <U C	:}}_e
|4	{5STTr=   c                Z    | j                  |      \  }}| j                  d|| d|       S )Nr   z >= rs   rm   s       r8   r   zExpression.__ge__   5     $ < <U C	:}}Xu4
|.LMMr=   c                Z    | j                  |      \  }}| j                  d|| d|       S )Nr   z > rs   rm   s       r8   r   zExpression.__gt__   5     $ < <U C	:}}Xu3zl.KLLr=   c                Z    | j                  |      \  }}| j                  d|| d|       S )Nr!   z <= rs   rm   s       r8   r!   zExpression.__le__   r   r=   c                Z    | j                  |      \  }}| j                  d|| d|       S )Nr"   z < rs   rm   s       r8   r"   zExpression.__lt__   r   r=   c                Z    | j                  |      \  }}| j                  d|| d|       S )Nr$   z == rs   rm   s       r8   r$   zExpression.__eq__   r   r=   c                Z    | j                  |      \  }}| j                  d|| d|       S )Nr(   z != rs   rm   s       r8   r(   zExpression.__ne__   r   r=   c                Z    | j                  |      \  }}| j                  d|| d|       S )Nr    % rs   rm   s       r8   r   zExpression.__mod__   rt   r=   c                Z    | j                  |      \  }}| j                  d|| d|       S )Nr   r   rs   rm   s       r8   r   zExpression.__rmod__   rv   r=   c                Z    | j                  |      \  }}| j                  d|| d|       S )Nr)    & rs   rm   s       r8   r)   zExpression.__and__   rt   r=   c                Z    | j                  |      \  }}| j                  d|| d|       S )Nr*   r   rs   rm   s       r8   r*   zExpression.__rand__   rv   r=   c                Z    | j                  |      \  }}| j                  d|| d|       S )Nr+    | rs   rm   s       r8   r+   zExpression.__or__   r   r=   c                Z    | j                  |      \  }}| j                  d|| d|       S )Nr,   r   rs   rm   s       r8   r,   zExpression.__ror__   s5     $ < <U C	:}}Y*S/LMMr=   c                Z    | j                  |      \  }}| j                  d|| d|       S )Nr-    ^ rs   rm   s       r8   r-   zExpression.__xor__   rt   r=   c                Z    | j                  |      \  }}| j                  d|| d|       S )Nr.   r   rs   rm   s       r8   r.   zExpression.__rxor__   rv   r=   c                @     t         fdd j                   d      S )Nc                (    j                  |        S r1   r4   r7   rX   s    r8   re   z'Expression.__invert__.<locals>.<lambda>       --b11 r=   ~Trf   r3   rV   rX   s   `r8   
__invert__zExpression.__invert__   s%    1 !
 	
r=   c                ~      j                   rd j                   d}nd j                   }t         fd|d      S )Nz-(rl   r   c                (    j                  |        S r1   r   r   s    r8   re   z$Expression.__neg__.<locals>.<lambda>  r   r=   Trf   rW   rV   r3   rX   rZ   s   ` r8   __neg__zExpression.__neg__   F    ""DNN+1-H4>>*+H1!
 	
r=   c                ~      j                   rd j                   d}nd j                   }t         fd|d      S )Nz+(rl   r   c                (    j                  |       S r1   r   r   s    r8   re   z$Expression.__pos__.<locals>.<lambda>  r   r=   Trf   r   r   s   ` r8   __pos__zExpression.__pos__  r   r=   c                B     t         fdd j                   dd      S )Nc                8    t        j                  |             S r1   )absr4   r   s    r8   re   z$Expression.__abs__.<locals>.<lambda>  s    s40045 r=   zabs(rl   Trf   r   r   s   `r8   __abs__zExpression.__abs__  s'    54>>"!$!
 	
r=   c                j    dfd}t        i }j                   d| d}t        ||      S )Nc                D    t        | g }t        | g } |i |S r1   )r<   rC   )r7   parsed_inputsparsed_kwargsinputsr@   ufuncs      r8   rY   z(Expression.__array_ufunc__.<locals>.func  s1    '4V4M)"6v6M-9=99r=   rk   rl   r7   r   returnr   rR   __name__r3   )rX   r   methodr   r@   rY   args_strrZ   s    ` ``   r8   __array_ufunc__zExpression.__array_ufunc__  s=    	:
 -f??nn%Qxj2$))r=   c                8    | j                  d|| d|dd      S )N__getitem__[]T)rh   )ri   )rX   items     r8   r   zExpression.__getitem__%  s.    }}4D81THA!6$  
 	
r=   c                l    dfd}t        di }j                  dz   |z   dz   }t        ||      S )Nc                ,    t        | fi } di |S )NrJ   )rC   )r7   r   rY   r@   s     r8   wrappedz+Expression._call_with_func.<locals>.wrapped+  s     )"77M(-((r=   rk   rl   r   rJ   r   )rX   rY   r@   r   r   rZ   s    ``   r8   _call_with_funczExpression._call_with_func*  s<    	) -6v6==3&1C7'8,,r=   c                r     d fdt        i } j                   d| d}t        fd|      S )Nc                b    t        | g| }t        | fi |} j                  |       |i |S r1   )r<   rC   r4   )r7   r;   r@   parsed_argsr   rX   s        r8   rY   z!Expression.__call__.<locals>.func5  s>    %b040K)"77M,4((,kK]KKr=   rk   rl   c                     | gi S r1   rJ   )r7   r;   rY   r@   s    r8   re   z%Expression.__call__.<locals>.<lambda><  s    T"%>t%>v%> r=   )r7   r   r;   r   r@   r   r   r   )rR   rV   r3   )rX   r;   r@   r   rZ   rY   s   ```  @r8   __call__zExpression.__call__4  s?    	L
 -d=f=nn%Qxj2>IIr=   c               `      } j                   rd| d}|d z  }t         fd|      S )Nrk   rl   .c                :    t        j                  |             S r1   r`   )r7   namerX   s    r8   re   z(Expression.__getattr__.<locals>.<lambda>C  s    WT-B-B2-F%M r=   )rW   r3   )rX   r   rZ   s   `` r8   __getattr__zExpression.__getattr__>  s>    X""8*AHavJMxXXr=   c                6     d fd} d}t        ||      S )aB  
        Create an expression that evaluates :meth:`Series.case_when` in a DataFrame
        context.

        This is intended to enable patterns like::

            df.assign(result=pd.col("a").case_when([(pd.col("b") > 0, 1)]))

        where conditions/replacements may reference other columns via ``pd.col``.
        c                
   j                  |       }g }D ]Z  \  }}t        |t              r|j                  |       }t        |t              r|j                  |       }|j                  ||f       \ |j	                  |      S r1   )r4   r2   r3   rN   	case_when)r7   ser	evaluated	conditionreplacementcaselistrX   s        r8   rY   z"Expression.case_when.<locals>.funcQ  s    ''+CI*2 ;&	;i4 ) : :2 >Ik:6"-">">r"BK  )[!9:; ==++r=   z.case_when(...)r   )r3   )rX   r   rY   rZ   s   ``  r8   r   zExpression.case_whenE  s#    		, X_-$))r=   c                "    | j                   xs dS )Nz	Expr(...))rV   r   s    r8   __repr__zExpression.__repr__`  s    ~~,,r=   c                    t        d      )Nz+boolean value of an expression is ambiguous	TypeErrorr   s    r8   __bool__zExpression.__bool__d  s    EFFr=   c                    t        d      )Nz#Expression objects are not iterabler   r   s    r8   __iter__zExpression.__iter__g      =>>r=   c                    t        d      Nz#Expression objects are not copiabler   r   s    r8   __copy__zExpression.__copy__j  r   r=   c                    t        d      r   r   )rX   memos     r8   __deepcopy__zExpression.__deepcopy__m  r   r=   N)F)rY   zCallable[[DataFrame], Any]rZ   strr[   boolr   Noner   )T)
rc   r   rd   r   rZ   r   rh   r   r   r3   )rd   r   r   ztuple[str, str])rd   r   r   r3   )rd   objectr   r3   )r   r3   )
r   zCallable[..., Any]r   r   r   r   r@   r   r   r3   )r   r   r   r3   )rY   r   r@   r   r   r3   )r;   r   r@   r   r   r3   )r   r   r   r   )r   zSequence[tuple[Any, Any]]r   r3   )r   r   )r   r	   )r   zdict[int, Any] | Noner   r	   )3r   
__module____qualname____doc__r\   r4   ri   rp   r   r   r   r   r   r   r~   r   r   r   r   r   r   r   r   r   r!   r"   r$   r(   r   r   r)   r*   r+   r,   r-   r.   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rJ   r=   r8   r3   r3   P   s    "'	3(3 3 	3
 
3 MQ!-0EI	$	%NONONOQROPRSTUNMNMNNNO
NOMNNO
	
	

*'*14*?B*NQ*	*

-JY*6-G???r=   r3   pandasc                     t         t              sdt                }t        |      d fd}t	        |d d      S )a  
    Generate deferred object representing a column of a DataFrame.

    Any place which accepts ``lambda df: df[col_name]``, such as
    :meth:`DataFrame.assign` or :meth:`DataFrame.loc`, can also accept
    ``pd.col(col_name)``.

    .. versionadded:: 3.0.0

    Parameters
    ----------
    col_name : Hashable
        Column name.

    Returns
    -------
    `pandas.api.typing.Expression`
        A deferred object representing a column of a DataFrame.

    See Also
    --------
    DataFrame.query : Query columns of a dataframe using string expressions.

    Examples
    --------

    You can use `col` in `assign`.

    >>> df = pd.DataFrame({"name": ["beluga", "narwhal"], "speed": [100, 110]})
    >>> df.assign(name_titlecase=pd.col("name").str.title())
          name  speed name_titlecase
    0   beluga    100         Beluga
    1  narwhal    110        Narwhal

    You can also use it for filtering.

    >>> df.loc[pd.col("speed") > 105]
          name  speed
    1  narwhal    110
    zExpected Hashable, got: c                    | j                   vrOt        | j                   j                               }d}t        |      |kD  r|d | dz   }d d| d}t	        |      |    S )NZ   z...]zColumn 'z;' not found in given DataFrame.

Hint: did you mean one of z	 instead?)columnsr   tolistlen
ValueError)r7   columns_strmax_lenmsgcol_names       r8   rY   zcol.<locals>.func  s    2::%bjj//12KG;'))(73f< 8* %--8MD  S/!(|r=   zcol(rl   )r7   r   r   r   )r2   r   typer   r3   )r   r   rY   s   `  r8   colr  q  sH    T h)(h(89n dd8,a011r=   r  N)r7   r   r;   r   r   ztuple[Any, ...])r7   r   r@   r   r   zdict[str, Any])r;   r   r@   r   r   r   )r   r   r   r3   )
__future__r   collections.abcr   r   r   typingr   r   r	   pandas.util._decoratorsr
   r   r   r   _OP_SYMBOLSr<   rC   rR   r3   r  __all__rJ   r=   r8   <module>r	     sl   " 
  /s s 	
 s  3 C D T s  d c d  c!" d#$ 18
  ]? ]? !]?@	 H;2 ;2| 
r=   