
    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	 erd dl
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)DaskExpr)import_dtypes_moduleN)Self)DaskLazyFrame)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)DaskSelectorNamespacec                    || _         || _        y N)_backend_version_version)selfbackend_versionversions      M/var/www/openai/venv/lib/python3.12/site-packages/narwhals/_dask/selectors.py__init__zDaskSelectorNamespace.__init__   s     !0    c                `    dfd}t        |ddd d | j                  d| j                  i 	      S )Nc                    | j                   D cg c]#  }| j                  |   v s| j                  |   % c}S c c}w r   )columnsschema_native_frame)dfcoldtypess     r   funcz,DaskSelectorNamespace.by_dtype.<locals>.func   sC    131;#ryy~QW?W  %  s   ;;r   type_selectorFdepthfunction_name
root_namesoutput_namesr   returns_scalarr   kwargsr   r
   returnz	list[Any]DaskSelectorr   r   )r   r    r!   s    ` r   by_dtypezDaskSelectorNamespace.by_dtype   s<    	
 ) 11 MM

 
	
r   c                *   t        | j                        }| j                  |j                  |j                  |j
                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  g
      S r   )r   r   r.   Int64Int32Int16Int8UInt64UInt32UInt16UInt8Float64Float32r   r    s     r   numericzDaskSelectorNamespace.numeric,   sl    %dmm4}}
 	
r   c                d    t        | j                        }| j                  |j                  g      S r   )r   r   r.   Categoricalr:   s     r   categoricalz!DaskSelectorNamespace.categorical=   s(    %dmm4}}f00122r   c                d    t        | j                        }| j                  |j                  g      S r   )r   r   r.   Stringr:   s     r   stringzDaskSelectorNamespace.stringA   s%    %dmm4}}fmm_--r   c                d    t        | j                        }| j                  |j                  g      S r   )r   r   r.   Booleanr:   s     r   booleanzDaskSelectorNamespace.booleanE   s&    %dmm4}}fnn-..r   c                Z    dd}t        |ddd d | j                  d| j                  i 	      S )Nc                Z    | j                   D cg c]  }| j                  |    c}S c c}w r   )r   r   )r   r   s     r   r!   z'DaskSelectorNamespace.all.<locals>.funcJ   s)    57ZZ@ZcB$$S)Z@@@s   (r   r"   Fr#   r*   r,   )r   r!   s     r   allzDaskSelectorNamespace.allI   s<    	A ) 11 MM

 
	
r   N)r   r	   r   ztuple[int, ...]r   r   r+   None)r   r	   r    zlist[DType | type[DType]]r+   r-   r   r	   r+   r-   )
__name__
__module____qualname__r   r.   r;   r>   rA   rD   rG    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
)r-   c                n    d| j                    d| j                   d| j                   d| j                   S )NzDaskSelector(depth=z, function_name=z, root_names=z, output_names=)_depth_function_name_root_names_output_namesr   s    r   __repr__zDaskSelector.__repr__[   sM    [[M "!001 2**+ , ../	1	
r   c                    t        | j                  | j                  | j                  | j                  | j
                  | j                  | j                  | j                  i 	      S )Nr#   )	r   _callrP   rQ   rR   rS   r   _returns_scalarr   rT   s    r   _to_exprzDaskSelector._to_exprd   sT    JJ++--''++ 11//MM

 
	
r   c                     t        t              r9d fd}t        |ddd d  j                   j                   j                  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   rW   namer   lhsrhsxotherr   s       r   callz"DaskSelector.__sub__.<locals>.callt   sV    jjnkk"o#&N3a!&&8MA8M*M3NN8MN   A AA A A r   r"   r#   r*   
isinstancer-   r   rX   r   rY   r   rb   rc   s   `` r   __sub__zDaskSelector.__sub__q   s`    e\*O
  -! $ 5 5#33
 
 ==?U**r   c                     t        t              r9d fd}t        |ddd d  j                   j                   j                  i 	      S  j                         z  S )Nc                h    j                  |       }j                  |       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]   ).0ra   r`   s     r   	<genexpr>z4DaskSelector.__or__.<locals>.call.<locals>.<genexpr>   s3     PSAFF3:O3a1663:O,O!S:Os   ;6;;)rW   )r   r_   r`   rb   r   s     @r   rc   z!DaskSelector.__or__.<locals>.call   s4    jjnkk"oWPSPWSVWWr   r   r"   r#   )r   r
   r+   zlist[dask_expr.Series]re   rg   s   `` r   __or__zDaskSelector.__or__   s`    e\*X
  -! $ 5 5#33
 
 ==?U**r   c                     t        t              r9d fd}t        |ddd d  j                   j                   j                  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\   r^   s       r   rc   z"DaskSelector.__and__.<locals>.call   sV    jjnkk"o#&J3a!&&S4ISQVVS4I*I3JJ4IJrd   r   r"   r#   r*   re   rg   s   `` r   __and__zDaskSelector.__and__   s`    e\*K
  -! $ 5 5#33
 
 ==?U**r   c                f    t        | j                  | j                        j                         | z
  S )N)r   r   )r   r   r   rG   rT   s    r   
__invert__zDaskSelector.__invert__   s-    ! $ 5 5t}}ce	
r   c                    t         r   NotImplementedErrorr   rb   s     r   __rsub__zDaskSelector.__rsub__       !!r   c                    t         r   ru   rw   s     r   __rand__zDaskSelector.__rand__   ry   r   c                    t         r   ru   rw   s     r   __ror__zDaskSelector.__ror__   ry   r   N)r   r	   r+   str)r   r	   r+   r   )r   r	   rb   DaskSelector | Anyr+   r   rI   )r   r	   rb   r   r+   r   )rJ   rK   rL   rU   rY   rh   rn   rq   rs   rx   r{   r}   rM   r   r   r-   r-   Z   s/    

+,+,+,
"""r   r-   )
__future__r   typingr   r   r   narwhals._dask.exprr   narwhals.utilsr   	dask_exprtyping_extensionsr	   narwhals._dask.dataframer
   narwhals.dtypesr   r   r   r-   rM   r   r   <module>r      sD    "     ( /&6%&D
 D
Nh"8 h"r   