
    ^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d<d-Zd=d0Zd>d2Z ed3           G d4 d5                      Z ed6          d?d9            Zd5d:gZd;S )@    )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__dfr   argsr   returntuple[Any, ...]c                :     t           fd|D                       S )Nc              3  p   K   | ]0}t          |t                    r|                              n|V  1d S N
isinstance
Expression_eval_expression).0xr/   s     :/usr/local/lib/python3.11/dist-packages/pandas/core/col.py	<genexpr>z_parse_args.<locals>.<genexpr>6   sV        GH*Q
";";B2         )tuple)r/   r0   s   ` r<   _parse_argsr@   4   s;        LP     r>   kwargsdict[str, Any]c                D      fd|                                 D             S )Nc                p    i | ]2\  }}|t          |t                    r|                              n|3S  r6   )r:   keyvalr/   s      r<   
<dictcomp>z!_parse_kwargs.<locals>.<dictcomp>=   sQ       C 	C)D)DMS!!"%%%#  r>   )items)r/   rA   s   ` r<   _parse_kwargsrJ   ;   s6          r>   strc                 ,   d                     d | D                       }d                     d |                                D                       }g }|r|                    |           |r|                    |           d                     |          S )Nz, c              3  4   K   | ]}t          |          V  d S r5   )repr)r:   args     r<   r=   z,_pretty_print_args_kwargs.<locals>.<genexpr>D   s(      66#DII666666r>   c              3  *   K   | ]\  }}| d |V  dS )=NrE   )r:   kvs      r<   r=   z,_pretty_print_args_kwargs.<locals>.<genexpr>E   s0      DDTQqLL1LLDDDDDDr>   )joinrI   append)r0   rA   inputs_reprkwargs_reprall_argss        r<   _pretty_print_args_kwargsrY   C   s    ))6666666K))DDV\\^^DDDDDKH %$$$ %$$$99Xr>   zpandas.api.typingc                     e Zd ZdZ	 dRdSdZdTdZ	 dUdVdZdWdZdXdZdXdZ	dXdZ
dXdZdXdZdXdZdXdZdXdZdXdZdXd ZdXd!ZdXd"ZdXd#ZdXd$ZdXd%ZdXd&ZdXd'ZdXd(ZdYd*ZdYd+ZdXd,ZdXd-ZdXd.ZdXd/ZdXd0Z dXd1Z!dXd2Z"dXd3Z#dZd4Z$dZd5Z%dZd6Z&dZd7Z'd[d=Z(d\d?Z)d]dAZ*d^dCZ+d_dEZ,d`dHZ-dadIZ.dbdKZ/dbdLZ0dbdMZ1dcdPZ2dQS )dr8   z
    Class representing a deferred column.

    This is not meant to be instantiated directly. Instead, use :meth:`pandas.col`.
    FfuncCallable[[DataFrame], Any]repr_strrK   needs_parentheseboolr1   Nonec                0    || _         || _        || _        d S r5   )_func	_repr_str_needs_parentheses)selfr[   r]   r^   s       r<   __init__zExpression.__init__X   s      
!"2r>   r/   r   r   c                ,    |                      |          S r5   )rb   )re   r/   s     r<   r9   zExpression._eval_expressionb   s    zz"~~r>   Topotherneeds_parenthesesc                     t          t                    rt           fd||          S t           fd||          S )Nc                     t                              |                                         |                     S r5   getattrr9   r/   rh   ri   re   s    r<   <lambda>z%Expression._with_op.<locals>.<lambda>j   s=    A74#8#8#<#<bAA**2..  r>   r^   c                \     t                              |                               S r5   rm   ro   s    r<   rp   z%Expression._with_op.<locals>.<lambda>r   s*    A74#8#8#<#<bAA%HH r>   )r7   r8   )re   rh   ri   r]   rj   s   ```  r<   _with_opzExpression._with_ope   s     eZ(( 	      !2    HHHHHH!2   r>   tuple[str, str]c                x    | j         rd| d}n| }t          |t                    r|j         rd|d}n|}||fS )N())rd   r7   r8   re   ri   	self_repr
other_reprs       r<   _maybe_wrap_parenthesesz"Expression._maybe_wrap_parenthesesw   s`    " 	$%DIIIeZ(( 	&U-E 	&'UJJ!J*$$r>   c                j    |                      |          \  }}|                     d|| d|           S )Nr    + r{   rs   rx   s       r<   r   zExpression.__add__   >     $ < <U C C	:}}Y)/L/L
/L/LMMMr>   c                j    |                      |          \  }}|                     d|| d|           S )Nr   r}   r~   rx   s       r<   r   zExpression.__radd__   >     $ < <U C C	:}}Z:0M0M)0M0MNNNr>   c                j    |                      |          \  }}|                     d|| d|           S )Nr    - r~   rx   s       r<   r   zExpression.__sub__   r   r>   c                j    |                      |          \  }}|                     d|| d|           S )Nr   r   r~   rx   s       r<   r   zExpression.__rsub__   r   r>   c                j    |                      |          \  }}|                     d|| d|           S )Nr    * r~   rx   s       r<   r   zExpression.__mul__   r   r>   c                j    |                      |          \  }}|                     d|| d|           S )Nr   r   r~   rx   s       r<   r   zExpression.__rmul__   r   r>   c                j    |                      |          \  }}|                     d|| d|           S )N
__matmul__ @ r~   rx   s       r<   r   zExpression.__matmul__   s>     $ < <U C C	:}}\5Y2O2O:2O2OPPPr>   c                j    |                      |          \  }}|                     d|| d|           S )N__rmatmul__r   r~   rx   s       r<   r   zExpression.__rmatmul__   s>     $ < <U C C	:}}]Ej3P3PY3P3PQQQr>   c                j    |                      |          \  }}|                     d|| d|           S )N__pow__ ** r~   rx   s       r<   r   zExpression.__pow__   s>     $ < <U C C	:}}Y)/M/M/M/MNNNr>   c                j    |                      |          \  }}|                     d|| d|           S )N__rpow__r   r~   rx   s       r<   r   zExpression.__rpow__   s>     $ < <U C C	:}}Z:0N0N90N0NOOOr>   c                j    |                      |          \  }}|                     d|| d|           S )Nr    / r~   rx   s       r<   r   zExpression.__truediv__   s>     $ < <U C C	:}}]Ei3P3PJ3P3PQQQr>   c                j    |                      |          \  }}|                     d|| d|           S )Nr   r   r~   rx   s       r<   r   zExpression.__rtruediv__   s>     $ < <U C C	:}}^Uz4Q4Qi4Q4QRRRr>   c                j    |                      |          \  }}|                     d|| d|           S )Nr    // r~   rx   s       r<   r   zExpression.__floordiv__   s>     $ < <U C C	:}}^Uy4R4Rj4R4RSSSr>   c                j    |                      |          \  }}|                     d|| d|           S )Nr   r   r~   rx   s       r<   r   zExpression.__rfloordiv__   s>     $ < <U C C	:}}_e
5S5S	5S5STTTr>   c                j    |                      |          \  }}|                     d|| d|           S )Nr   z >= r~   rx   s       r<   r   zExpression.__ge__   >     $ < <U C C	:}}Xu.L.L
.L.LMMMr>   c                j    |                      |          \  }}|                     d|| d|           S )Nr   z > r~   rx   s       r<   r   zExpression.__gt__   >     $ < <U C C	:}}Xu.K.Kz.K.KLLLr>   c                j    |                      |          \  }}|                     d|| d|           S )Nr!   z <= r~   rx   s       r<   r!   zExpression.__le__   r   r>   c                j    |                      |          \  }}|                     d|| d|           S )Nr"   z < r~   rx   s       r<   r"   zExpression.__lt__   r   r>   objectc                j    |                      |          \  }}|                     d|| d|           S )Nr$   z == r~   rx   s       r<   r$   zExpression.__eq__   r   r>   c                j    |                      |          \  }}|                     d|| d|           S )Nr(   z != r~   rx   s       r<   r(   zExpression.__ne__   r   r>   c                j    |                      |          \  }}|                     d|| d|           S )Nr    % r~   rx   s       r<   r   zExpression.__mod__   r   r>   c                j    |                      |          \  }}|                     d|| d|           S )Nr   r   r~   rx   s       r<   r   zExpression.__rmod__   r   r>   c                j    |                      |          \  }}|                     d|| d|           S )Nr)    & r~   rx   s       r<   r)   zExpression.__and__   r   r>   c                j    |                      |          \  }}|                     d|| d|           S )Nr*   r   r~   rx   s       r<   r*   zExpression.__rand__   r   r>   c                j    |                      |          \  }}|                     d|| d|           S )Nr+    | r~   rx   s       r<   r+   zExpression.__or__   r   r>   c                j    |                      |          \  }}|                     d|| d|           S )Nr,   r   r~   rx   s       r<   r,   zExpression.__ror__   s>     $ < <U C C	:}}Y*/L/L/L/LMMMr>   c                j    |                      |          \  }}|                     d|| d|           S )Nr-    ^ r~   rx   s       r<   r-   zExpression.__xor__   r   r>   c                j    |                      |          \  }}|                     d|| d|           S )Nr.   r   r~   rx   s       r<   r.   zExpression.__rxor__   r   r>   c                >     t           fdd j         d          S )Nc                0                         |            S r5   r9   r/   re   s    r<   rp   z'Expression.__invert__.<locals>.<lambda>       --b111 r>   ~Trq   r8   rc   re   s   `r<   
__invert__zExpression.__invert__   s6    1111   !
 
 
 	
r>   c                h      j         rd j         d}n
d j         }t           fd|d          S )Nz-(rw   r   c                0                         |            S r5   r   r   s    r<   rp   z$Expression.__neg__.<locals>.<lambda>  r   r>   Trq   rd   rc   r8   re   r]   s   ` r<   __neg__zExpression.__neg__   Z    " 	,-DN---HH+4>++H1111!
 
 
 	
r>   c                h      j         rd j         d}n
d j         }t           fd|d          S )Nz+(rw   r   c                0                         |           
 S r5   r   r   s    r<   rp   z$Expression.__pos__.<locals>.<lambda>  r   r>   Trq   r   r   s   ` r<   __pos__zExpression.__pos__  r   r>   c                @     t           fdd j         dd          S )Nc                H    t                              |                     S r5   )absr9   r   s    r<   rp   z$Expression.__abs__.<locals>.<lambda>  s    s4004455 r>   zabs(rw   Trq   r   r   s   `r<   __abs__zExpression.__abs__  s9    5555$4>$$$!
 
 
 	
r>   ufuncCallable[..., Any]methodinputsrA   c                j    dfd}t          i }j         d| d}t          ||          S )	Nr/   r   r1   r   c                H    t          | gR  }t          | gR  } |i |S r5   )r@   rJ   )r/   parsed_inputsparsed_kwargsr   rA   r   s      r<   r[   z(Expression.__array_ufunc__.<locals>.func  sB    '4V444M)"6v666M5-9=999r>   rv   rw   r/   r   r1   r   rY   __name__r8   )re   r   r   r   rA   r[   args_strr]   s    ` ``   r<   __array_ufunc__zExpression.__array_ufunc__  si    	: 	: 	: 	: 	: 	: 	: 	:
 -f???n22x222$)))r>   itemc                @    |                      d|| d|dd          S )N__getitem__[]T)rj   )rs   )re   r   s     r<   r   zExpression.__getitem__%  s7    }}4D!6!6T!6!6!6$  
 
 	
r>   r   c                l    dfd}t          d	i }j        dz   |z   dz   }t          ||          S )
Nr/   r   r1   r   c                .    t          | fi } di |S )NrE   )rJ   )r/   r   r[   rA   s     r<   wrappedz+Expression._call_with_func.<locals>.wrapped+  s.    )"7777M4((-(((r>   rv   rw   r   rE   r   )re   r[   rA   r   r   r]   s    ``   r<   _call_with_funczExpression._call_with_func*  sb    	) 	) 	) 	) 	) 	) 	) -66v66=3&1C7'8,,,r>   r0   c                r     d fdt          i } j         d| d	}t          fd
|          S )Nr/   r   r0   r   rA   r1   c                n    t          | g|R  }t          | fi |}                     |           |i |S r5   )r@   rJ   r9   )r/   r0   rA   parsed_argsr   re   s        r<   r[   z!Expression.__call__.<locals>.func5  sP    %b04000K)"7777M,4((,,kK]KKKr>   rv   rw   c                     | gR i S r5   rE   )r/   r0   r[   rA   s    r<   rp   z%Expression.__call__.<locals>.<lambda><  s!    TT"%>t%>%>%>v%>%> r>   )r/   r   r0   r   rA   r   r1   r   )rY   rc   r8   )re   r0   rA   r   r]   r[   s   ```  @r<   __call__zExpression.__call__4  sv    	L 	L 	L 	L 	L 	L
 -d=f==n22x222>>>>>>IIIr>   namec               ^      } j         rd| d}|d z  }t           fd|          S )Nrv   rw   .c                J    t                              |                     S r5   rm   )r/   r   re   s    r<   rp   z(Expression.__getattr__.<locals>.<lambda>C  s    WT-B-B2-F-F%M%M r>   )rd   r8   )re   r   r]   s   `` r<   __getattr__zExpression.__getattr__>  sP    ;" 	'&8HJJJMMMMMxXXXr>   caselistSequence[tuple[Any, Any]]c                >     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``.
        r/   r   r1   r   c                B                        |           }g }D ]p\  }}t          |t                    r|                     |           }t          |t                    r|                     |           }|                    ||f           q|                    |          S r5   )r9   r7   r8   rU   	case_when)r/   ser	evaluated	conditionreplacementr   re   s        r<   r[   z"Expression.case_when.<locals>.funcQ  s    ''++CI*2 ; ;&	;i44 ? ) : :2 > >Ik:66 C"-">">r"B"BK  )[!9::::==+++r>   z.case_when(...)r   )r8   )re   r   r[   r]   s   ``  r<   r   zExpression.case_whenE  sG    		, 		, 		, 		, 		, 		, 		, ---$)))r>   c                    | j         pdS )Nz	Expr(...))rc   r   s    r<   __repr__zExpression.__repr__`  s    ~,,r>   r	   c                     t          d          )Nz+boolean value of an expression is ambiguous	TypeErrorr   s    r<   __bool__zExpression.__bool__d  s    EFFFr>   c                     t          d          )Nz#Expression objects are not iterabler   r   s    r<   __iter__zExpression.__iter__g      =>>>r>   c                     t          d          Nz#Expression objects are not copiabler   r   s    r<   __copy__zExpression.__copy__j  r   r>   memodict[int, Any] | Nonec                     t          d          r   r   )re   r   s     r<   __deepcopy__zExpression.__deepcopy__m  r   r>   N)F)r[   r\   r]   rK   r^   r_   r1   r`   r   )T)
rh   rK   ri   r   r]   rK   rj   r_   r1   r8   )ri   r   r1   rt   )ri   r   r1   r8   )ri   r   r1   r8   )r1   r8   )
r   r   r   rK   r   r   rA   r   r1   r8   )r   r   r1   r8   )r[   r   rA   r   r1   r8   )r0   r   rA   r   r1   r8   )r   rK   r1   r   )r   r   r1   r8   )r1   rK   )r1   r	   )r   r   r1   r	   )3r   
__module____qualname____doc__rf   r9   rs   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   r   rE   r>   r<   r8   r8   P   s\         "'	3 3 3 3 3    MQ    $	% 	% 	% 	%N N N NO O O ON N N NO O O ON N N NO O O OQ Q Q QR R R RO O O OP P P PR R R RS S S ST T T TU U U UN N N NM M M MN N N NM M M MN N N NN N N NN N N NO O O O
N N N NO O O OM M M MN N N NN N N NO O O O
 
 
 
	
 	
 	
 	
	
 	
 	
 	

 
 
 
* * * *
 
 
 

- - - -J J J JY Y Y Y* * * *6- - - -G G G G? ? ? ?? ? ? ?? ? ? ? ? ?r>   r8   pandascol_namer   c                     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: r/   r   r1   r   c                    | j         vr`t          | j                                                   }d}t          |          |k    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?)columnsrK   tolistlen
ValueError)r/   columns_strmax_lenmsgr   s       r<   r[   zcol.<locals>.func  s    2:%%bj//1122KG;')))(7(3f<D8 D D-8D D D  S//!(|r>   zcol(rw   )r/   r   r1   r   )r7   r   typer   r8   )r   r
  r[   s   `  r<   colr  q  ss    T h)) 9h99nn      d08000111r>   r  N)r/   r   r0   r   r1   r2   )r/   r   rA   r   r1   rB   )r0   r   rA   r   r1   rK   )r   r   r1   r8   )
__future__r   collections.abcr   r   r   typingr   r   r	   pandas.util._decoratorsr
   r   r   r   _OP_SYMBOLSr@   rJ   rY   r8   r  __all__rE   r>   r<   <module>r     su   " " " " " "         
          / . . . . .        s s 	
 s  3 C D T s  d c d  c!" d#$ 1  8      
 
 
 
   ]? ]? ]? ]? ]? ]? ]? ! ]?@	 H;2 ;2 ;2 ;2| 
r>   