
    /_i              	         d dl mZ d dlZd dlmZ d dlmZ d dlmZm	Z	 d dl
Z
d dlmc mZ d dlmZmZ d dlmZ d dlmZ d d	lmZ d d
lmZmZmZ d dlmZ d dlmZ erd dl m!Z!m"Z" d dlm#Z# d dl$m%Z%m&Z&m'Z'  G d deeeddf         Z(y)    )annotationsN)reduce)chain)TYPE_CHECKINGAny)combine_alias_output_namescombine_evaluate_output_namesIbisLazyFrameIbisExpr)IbisSelectorNamespace)functionlitnarwhals_to_native_dtype)SQLNamespace)Implementation)IterableSequence)Version)ConcatMethod	IntoDTypePythonLiteralc                      e Zd ZU ej                  Zded<   ddZedd       Z	edd       Z
edd       ZddZddZ	 d	 	 	 	 	 	 	 dd
ZddZ	 	 	 	 	 	 ddZ	 	 	 	 	 	 	 	 ddZddZddZddZy	)IbisNamespacer   _implementationc                   || _         y N)_version)selfversions     W/var/www/html/land_sniper/venv/lib/python3.12/site-packages/narwhals/_ibis/namespace.py__init__zIbisNamespace.__init__    s	        c                ,    t        j                  |       S r   )r   from_namespacer    s    r"   	selectorszIbisNamespace.selectors#   s    $33D99r$   c                    t         S r   r   r'   s    r"   _exprzIbisNamespace._expr'   s    r$   c                    t         S r   r
   r'   s    r"   
_lazyframezIbisNamespace._lazyframe+   s    r$   c                    t        |g| S r   )r   )r    nameargss      r"   	_functionzIbisNamespace._function/   s    $t$$r$   c                    t        |      S r   )r   )r    values     r"   _litzIbisNamespace._lit2   s    5zr$   Nc                f    |t        j                  ||f      S t        j                  ||f|      S )N)else_)ibiscases)r    	conditionr2   	otherwises       r"   _whenzIbisNamespace._when5   s4     ::y%011zz9e,I>>r$   c                &    t        j                  | S r   )r6   coalesce)r    exprss     r"   	_coalescezIbisNamespace._coalesce<   s    }}e$$r$   c               :   |dk(  rd}t        |      t        |      }|D cg c]  }|j                   }}|d   j                  t	        fd|dd  D              sd}t        |      | j                  j                  t        j                  | |       S c c}w )Ndiagonalz<diagonal concat not supported for Ibis. Please join instead.r   c              3  <   K   | ]  }|j                   k(    y wr   )schema).0xrB   s     r"   	<genexpr>z'IbisNamespace.concat.<locals>.<genexpr>I   s     9!188v%9s      z&inputs should all have the same schema)context)
NotImplementedErrorlistnativerB   all	TypeErrorr,   from_nativer6   union)r    itemshowmsgitemnative_itemsrB   s         @r"   concatzIbisNamespace.concat?   s     *PC%c**U05666q9uQRy99:CC. **4::|+Dd*SS 7s   Bc               n    dfd}| j                  |t         t         | j                        S )Nc                     t        j                   fdD              }|D cg c]  }|j                  d       }}rt              j	                  |      }|gS t        fd|dd  |d         }|gS c c}w )Nc              3  .   K   | ]  } |        y wr    )rC   exprdfs     r"   rE   z9IbisNamespace.concat_str.<locals>.func.<locals>.<genexpr>R   s     &BDtBx&Bs   stringc                (    | j                  |      S r   )rT   )acccol	separators     r"   <lambda>z8IbisNamespace.concat_str.<locals>.func.<locals>.<lambda>Y   s    SZZ	3%? r$   rF   r   )r   from_iterablecastr   joinr   )rZ   colsscols_castedresultr=   ignore_nullsr_   s   `    r"   funcz&IbisNamespace.concat_str.<locals>.funcQ   s    &&&BE&BBD59:166(+:K:Y,,[9 8O  ?ON 8O ;s   A7callevaluate_output_namesalias_output_namesr!   )rZ   r   returnlist[ir.Value])r*   r	   r   r   )r    r_   rh   r=   ri   s    ``` r"   
concat_strzIbisNamespace.concat_strN   s:    	 zz"?"G95AMM	  
 	
r$   c                D    dd} | j                   j                  |g| S )Nc                    t        |       } t        t        j                  d | D              t        t        j                  d | D              z  S )Nc              3  P   K   | ]  }|j                  t        d                yw)r   N)	fill_nullr   rC   r^   s     r"   rE   z>IbisNamespace.mean_horizontal.<locals>.func.<locals>.<genexpr>j   s     (O3s1v)>(Os   $&c              3     K   | ]6  }|j                         j                  t        d       t        d             8 yw)r   rF   N)isnullifelser   ru   s     r"   rE   z>IbisNamespace.mean_horizontal.<locals>.func.<locals>.<genexpr>k   s+     Ssszz|223q63q6BSs   <>)rI   r   operatoradd)rd   s    r"   ri   z+IbisNamespace.mean_horizontal.<locals>.funch   sA    :D(,,(O$(OPSYSdST  r$   )rd   zIterable[ir.Value]rn   ir.Value)r*   _from_elementwise_horizontal_op)r    r=   ri   s      r"   mean_horizontalzIbisNamespace.mean_horizontalg   s%    	 :tzz99$GGGr$   c                X     d fd} j                  |d d  j                        S )Nc                R    rt        j                        nd }t        |      gS r   )r   r   r   )_df
ibis_dtypedtyper    r2   s     r"   ri   zIbisNamespace.lit.<locals>.funcq   s)    KP1%GVZJz*++r$   c                    dgS )NliteralrX   r   s    r"   r`   z#IbisNamespace.lit.<locals>.<lambda>w   s    yk r$   )rl   rm   r!   )r   r   rn   zSequence[ir.Value]r*   r   )r    r2   r   ri   s   ``` r"   r   zIbisNamespace.litp   s0    	, zz"9#MM	  
 	
r$   c                J    dd}| j                  |d d | j                        S )Nc                8    | j                   j                         gS r   )rJ   countr   s    r"   ri   zIbisNamespace.len.<locals>.func}   s    JJ$$&''r$   c                    dgS )NlenrX   r   s    r"   r`   z#IbisNamespace.len.<locals>.<lambda>   s    ug r$   rj   )r   r   rn   ro   r   )r    ri   s     r"   r   zIbisNamespace.len|   s/    	( zz"5#MM	  
 	
r$   )r!   r   rn   None)rn   r   )rn   ztype[IbisExpr])rn   ztype[IbisLazyFrame])r.   strr/   zir.Value | PythonLiteralrn   r{   )r2   r   rn   r{   r   )r8   r{   r2   r{   r9   zir.Expr | Nonern   r{   )r=   r{   rn   r{   )rO   zIterable[IbisLazyFrame]rP   r   rn   r   )r=   r   r_   r   rh   boolrn   r   )r=   r   rn   r   )r2   r   r   zIntoDType | Nonern   r   )rn   r   )__name__
__module____qualname__r   IBISr   __annotations__r#   propertyr(   r*   r,   r0   r3   r:   r>   rT   rp   r}   r   r   rX   r$   r"   r   r      s    &4&9&9O^9  : :    % QU?!?*2??M?	?%T,T6BT	T

+.
>B
	
2H

	
r$   r   zir.Tabler{   ))
__future__r   ry   	functoolsr   	itertoolsr   typingr   r   r6   ibis.expr.typesrY   typesirnarwhals._expression_parsingr   r	   narwhals._ibis.dataframer   narwhals._ibis.exprr   narwhals._ibis.selectorsr   narwhals._ibis.utilsr   r   r   narwhals._sql.namespacer   narwhals._utilsr   collections.abcr   r   r   narwhals.typingr   r   r   r   rX   r$   r"   <module>r      sd    "    %    3 ( : H H 0 *2'FFh
L*j!PQ h
r$   