
    g                        d dl mZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dl	mZ erd d	lmZ d d
lmZ d dlmZ d dlmZ d dl	mZ  G d d      Z G d de      Zy)    )annotations)TYPE_CHECKING)Any)NoReturn)Sequence)	ArrowExpr)Implementation)import_dtypes_module)Self)ArrowDataFrame)ArrowSeries)DType)Versionc                  T    e Zd Z	 	 	 	 	 	 	 	 d	dZd
dZddZddZddZddZddZ	y)ArrowSelectorNamespacec               J    || _         t        j                  | _        || _        y N)_backend_versionr	   PYARROW_implementation_version)selfbackend_versionversions      N/var/www/openai/venv/lib/python3.12/site-packages/narwhals/_arrow/selectors.py__init__zArrowSelectorNamespace.__init__   s!     !0-55    c                b    dfd}t        |ddd d | j                  | j                  di      S )Nc                l    | j                   D cg c]  }| j                  |   v s| |    c}S c c}w r   )columnsschema)dfcoldtypess     r   funcz-ArrowSelectorNamespace.by_dtype.<locals>.func   s2    ')zzNzRYYs^v5MBsGzNNNs   11r   type_selectorr$   depthfunction_name
root_namesoutput_namesr   r   kwargsr"   r   returnzlist[ArrowSeries]ArrowSelectorr   r   )r   r$   r%   s    ` r   by_dtypezArrowSelectorNamespace.by_dtype   s?    	O ) 11MMf%	
 		
r   c                *   t        | j                        }| j                  |j                  |j                  |j
                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  g
      S r   )r
   r   r1   Int64Int32Int16Int8UInt64UInt32UInt16UInt8Float64Float32r   r$   s     r   numericzArrowSelectorNamespace.numeric,   sl    %dmm4}}
 	
r   c                d    t        | j                        }| j                  |j                  g      S r   )r
   r   r1   Categoricalr=   s     r   categoricalz"ArrowSelectorNamespace.categorical=   s(    %dmm4}}f00122r   c                d    t        | j                        }| j                  |j                  g      S r   )r
   r   r1   Stringr=   s     r   stringzArrowSelectorNamespace.stringA   s%    %dmm4}}fmm_--r   c                d    t        | j                        }| j                  |j                  g      S r   )r
   r   r1   Booleanr=   s     r   booleanzArrowSelectorNamespace.booleanE   s&    %dmm4}}fnn-..r   c           
     X    dd}t        |ddd d | j                  | j                  i       S )Nc                F    | j                   D cg c]  }| |   	 c}S c c}w r   )r    )r"   r#   s     r   r%   z(ArrowSelectorNamespace.all.<locals>.funcJ   s"    ')zz2zBsGz222s   r   r&   r'   r-   r/   )r   r%   s     r   allzArrowSelectorNamespace.allI   s8    	3 ) 11MM	
 		
r   N)r   r   r   ztuple[int, ...]r   r   r.   None)r   r   r$   zlist[DType | type[DType]]r.   r0   r   r   r.   r0   )
__name__
__module____qualname__r   r1   r>   rA   rD   rG   rJ    r   r   r   r      sE      (7 BI 	 

"3./
r   r   c                  T    e Z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y
)r0   c                n    d| j                    d| j                   d| j                   d| j                   S )NzArrowSelector(depth=z, function_name=z, root_names=z, output_names=)_depth_function_name_root_names_output_namesr   s    r   __repr__zArrowSelector.__repr__Z   sM    [[M "!001 2**+ , ../	1	
r   c           
         t        | j                  | j                  | j                  | j                  | j
                  | j                  | j                  | j                        S )Nr'   )	r   _callrS   rT   rU   rV   r   r   _kwargsrW   s    r   _to_exprzArrowSelector._to_exprc   sO    JJ++--''++ 11MM<<	
 		
r   c                     t        t              r>d fd}t        |ddd d  j                   j                  i  j                  di      S  j                         z
  S )Nc                    j                  |       }j                  |       }|D cg c]+  }|j                  |D ch c]  }|j                   c}vs*- c}S c c}w c c}w r   rZ   namer"   lhsrhsxotherr   s       r   callz#ArrowSelector.__sub__.<locals>.callr   sV    jjnkk"o#&N3a!&&8MA8M*M3NN8MN   A AA A A r   r&   re   r'   r-   
isinstancer0   r   r   r[   r\   r   re   rf   s   `` r   __sub__zArrowSelector.__sub__o   sg    e]+O
 !-! $ 5 57$,,77	 	 ==?U**r   c                     t        t              r>d fd}t        |ddd d  j                   j                  i  j                  di      S  j                         z  S )Nc                D     |       } |       g fd|D        S )Nc              3  z   K   | ]-  }|j                   D ch c]  }|j                    c}vs* / y c c}w wr   )r`   ).0rd   rc   s     r   	<genexpr>z5ArrowSelector.__or__.<locals>.call.<locals>.<genexpr>   s3     PSAFF3:O3a1663:O,O!S:Os   ;6;;rP   )r"   rb   rc   re   r   s     @r   rf   z"ArrowSelector.__or__.<locals>.call   s,    2hBiWPSPWSVWWr   r   r&   re   r'   )r"   r   r.   zSequence[ArrowSeries]rh   rj   s   `` r   __or__zArrowSelector.__or__   sg    e]+X
 !-! $ 5 57$,,77	 	 ==?U**r   c                     t        t              r>d fd}t        |ddd d  j                   j                  i  j                  di      S  j                         z  S )Nc                    j                  |       }j                  |       }|D cg c]+  }|j                  |D ch c]  }|j                   c}v s*- c}S c c}w c c}w r   r_   ra   s       r   rf   z#ArrowSelector.__and__.<locals>.call   sV    jjnkk"o#&J3a!&&S4ISQVVS4I*I3JJ4IJrg   r   r&   re   r'   r-   rh   rj   s   `` r   __and__zArrowSelector.__and__   sg    e]+K
 !-! $ 5 57$,,77	 	 ==?U**r   c                f    t        | j                  | j                        j                         | z
  S )N)r   r   )r   r   r   rJ   rW   s    r   
__invert__zArrowSelector.__invert__   s-    " $ 5 5t}}ce	
r   c                    t         r   NotImplementedErrorr   re   s     r   __rsub__zArrowSelector.__rsub__       !!r   c                    t         r   rx   rz   s     r   __rand__zArrowSelector.__rand__   r|   r   c                    t         r   rx   rz   s     r   __ror__zArrowSelector.__ror__   r|   r   N)r   r   r.   str)r   r   r.   r   )r   r   re   z
Self | Anyr.   zArrowSelector | AnyrL   )r   r   re   r   r.   r   )rM   rN   rO   rX   r\   rk   rq   rt   rv   r{   r~   r   rP   r   r   r0   r0   Y   s/    


+*+*+*
"""r   r0   N)
__future__r   typingr   r   r   r   narwhals._arrow.exprr   narwhals.utilsr	   r
   typing_extensionsr   narwhals._arrow.dataframer   narwhals._arrow.seriesr   narwhals.dtypesr   r   r   r0   rP   r   r   <module>r      sJ    "      * ) /&82%&A
 A
Hd"I d"r   