
    hh              	         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m Z  d dl!m"Z"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, G d de ddef                   Z- G d deddef         e          Z.dS )    )annotationsN)reduce)chain)TYPE_CHECKINGAny)combine_alias_output_namescombine_evaluate_output_namesIbisLazyFrameIbisExpr)IbisSelectorNamespace)functionlitnarwhals_to_native_dtype)SQLNamespace)SQLThenSQLWhen)Implementationrequires)IterableSequence)Version)ConcatMethod	IntoDTypePythonLiteralc                      e Zd ZU ej        Zded<   d2dZed3d	            Z	ed4d            Z
ed5d            Zd6dZd7dZ	 d8d9dZd:dZd;d#Zd<d(Zd=d)Z ej        d*          d>d-            Zd?d0Zd@d1ZdS )AIbisNamespacer   _implementationversionr   returnNonec                   || _         d S N)_version)selfr    s     O/var/www/histauto/venv/lib/python3.11/site-packages/narwhals/_ibis/namespace.py__init__zIbisNamespace.__init__!   s        r   c                *    t          j        |           S r$   )r   from_namespacer&   s    r'   	selectorszIbisNamespace.selectors$   s    $3D999r)   type[IbisExpr]c                    t           S r$   r   r,   s    r'   _exprzIbisNamespace._expr(       r)   type[IbisLazyFrame]c                    t           S r$   r
   r,   s    r'   
_lazyframezIbisNamespace._lazyframe,   s    r)   namestrargsir.Value | PythonLiteralir.Valuec                    t          |g|R  S r$   )r   )r&   r5   r7   s      r'   	_functionzIbisNamespace._function0   s    $t$$$$r)   valuer   c                     t          |          S r$   )r   )r&   r<   s     r'   _litzIbisNamespace._lit3   s    5zzr)   N	condition	otherwiseir.Expr | Nonec                b    |t          j        ||f          S t          j        ||f|          S N)else_)ibiscases)r&   r?   r<   r@   s       r'   _whenzIbisNamespace._when6   s9     :y%0111z9e,I>>>>r)   exprsc                    t          j        | S r$   )rE   coalesce)r&   rH   s     r'   	_coalescezIbisNamespace._coalesce=   s    }e$$r)   itemsIterable[IbisLazyFrame]howr   r   c               :   |dk    rd}t          |          t          |          }d |D             }|d         j        t          fd|dd          D                       sd}t	          |          | j                            t          j        | |           S )	Ndiagonalz<diagonal concat not supported for Ibis. Please join instead.c                    g | ]	}|j         
S  )native).0items     r'   
<listcomp>z(IbisNamespace.concat.<locals>.<listcomp>H   s    666666r)   r   c              3  .   K   | ]}|j         k    V  d S r$   )schema)rT   xrX   s     r'   	<genexpr>z'IbisNamespace.concat.<locals>.<genexpr>J   s*      99!18v%999999r)      z&inputs should all have the same schemacontext)	NotImplementedErrorlistrX   all	TypeErrorr4   from_nativerE   union)r&   rL   rN   msgnative_itemsrX   s        @r'   concatzIbisNamespace.concat@   s     *PC%c***U66666q9999uQRRy99999 	!:CC.. **4:|+Dd*SSSr)   r   	separatorignore_nullsboolc               p    dfd}|                      |t           t           | j                  S )Ndfr   r!   list[ir.Value]c                     t          j         fdD                       }d |D             }s|d         }|dd          D ]
}|z   |z   }n"t                                        |          }|gS )Nc              3  .   K   | ]} |          V  d S r$   rR   )rT   exprrk   s     r'   rZ   z9IbisNamespace.concat_str.<locals>.func.<locals>.<genexpr>S   s+      &B&BDttBxx&B&B&B&B&B&Br)   c                8    g | ]}|                     d           S )string)cast)rT   ss     r'   rV   z:IbisNamespace.concat_str.<locals>.func.<locals>.<listcomp>T   s$    :::166(++:::r)   r   r[   )r   from_iterabler   join)rk   colscols_castedresultcolrH   rh   rg   s   `    r'   funcz&IbisNamespace.concat_str.<locals>.funcR   s    &&B&B&B&BE&B&B&BBBD::T:::K :$Q&qrr? 6 6C#i/#5FF6 Y,,[998Or)   callevaluate_output_namesalias_output_namesr    )rk   r   r!   rl   )r0   r	   r   r%   )r&   rg   rh   rH   rz   s    ``` r'   
concat_strzIbisNamespace.concat_strO   sb    	 	 	 	 	 	 	 	 zz"?"G95AM	  
 
 	
r)   c                0    dd} | j         j        |g|R  S )Nrv   Iterable[ir.Value]r!   r9   c                    t          |           } t          t          j        d | D                       t          t          j        d | D                       z  S )Nc              3  Z   K   | ]&}|                     t          d                     V  'dS )r   N)	fill_nullr   rT   ry   s     r'   rZ   z>IbisNamespace.mean_horizontal.<locals>.func.<locals>.<genexpr>i   s4      (O(O3s1vv)>)>(O(O(O(O(O(Or)   c              3     K   | ]F}|                                                     t          d           t          d                    V  GdS )r   r[   N)isnullifelser   r   s     r'   rZ   z>IbisNamespace.mean_horizontal.<locals>.func.<locals>.<genexpr>j   sF      SSsszz||223q663q66BBSSSSSSr)   )r_   r   operatoradd)rv   s    r'   rz   z+IbisNamespace.mean_horizontal.<locals>.funcg   sZ    ::D(,(O(O$(O(O(OPPSYSSdSSST T  r)   )rv   r   r!   r9   )r0   _from_elementwise_horizontal_op)r&   rH   rz   s      r'   mean_horizontalzIbisNamespace.mean_horizontalf   s5    	 	 	 	 :tz9$GGGGGr)   )
   r   	predicateIbisWhenc                :    t                               ||           S )Nr\   )r   	from_expr)r&   r   s     r'   whenzIbisNamespace.wheno   s    !!)T!:::r)   dtypeIntoDType | Nonec                V     d fd}                      |d d  j                  S )	N_dfr   r!   Sequence[ir.Value]c                X    rt          j                  nd }t          |          gS r$   )r   r%   r   )r   
ibis_dtyper   r&   r<   s     r'   rz   zIbisNamespace.lit.<locals>.funct   s3    KPZ1%GGGVZJz**++r)   c                    dgS )NliteralrR   r   s    r'   <lambda>z#IbisNamespace.lit.<locals>.<lambda>z   s    yk r)   )r}   r~   r    )r   r   r!   r   r0   r%   )r&   r<   r   rz   s   ``` r'   r   zIbisNamespace.lits   s[    	, 	, 	, 	, 	, 	, 	, 	, zz"9"9#M	  
 
 	
r)   c                H    dd}|                      |d d | j                  S )	Nr   r   r!   rl   c                6    | j                                         gS r$   )rS   countr   s    r'   rz   zIbisNamespace.len.<locals>.func   s    J$$&&''r)   c                    dgS )NlenrR   r   s    r'   r   z#IbisNamespace.len.<locals>.<lambda>   s    ug r)   r{   )r   r   r!   rl   r   )r&   rz   s     r'   r   zIbisNamespace.len   sD    	( 	( 	( 	( zz"5"5#M	  
 
 	
r)   )r    r   r!   r"   )r!   r   )r!   r.   )r!   r2   )r5   r6   r7   r8   r!   r9   )r<   r   r!   r9   r$   )r?   r9   r<   r9   r@   rA   r!   r9   )rH   r9   r!   r9   )rL   rM   rN   r   r!   r   )rH   r   rg   r6   rh   ri   r!   r   )rH   r   r!   r   )r   r   r!   r   )r<   r   r   r   r!   r   )r!   r   )__name__
__module____qualname__r   IBISr   __annotations__r(   propertyr-   r0   r4   r;   r>   rG   rK   rf   r   r   r   backend_versionr   r   r   rR   r)   r'   r   r      s        &4&9O9999        : : : X:    X    X% % % %    QU? ? ? ? ?% % % %T T T T
 
 
 
.H H H H Xg&&; ; ; '&;

 

 

 

	
 	
 	
 	
 	
 	
r)   r   zir.Tabler9   c                  2    e Zd ZeZed	d            Zd
dZdS )r   r!   type[IbisThen]c                    t           S r$   )IbisThenr,   s    r'   _thenzIbisWhen._then   r1   r)   rk   r   r   c                   | j         j        }|                    | j                   }| j        } ||          r|                    |          nt	          |          }| j        }|t          j        ||f          }nG ||          r|                    |          nt	          |          }t          j        ||f|          }|gS rC   )
_condition_is_expr_evaluate_expr_then_valuer   _otherwise_valuerE   rF   )	r&   rk   is_exprr?   then_thenother_rx   r@   s	            r'   __call__zIbisWhen.__call__   s    /*%%do66	 +275>>Ir  '''s5zz&>ZD 122FF5<WV__U))&111#f++IZD 1CCCFxr)   N)r!   r   )rk   r   r!   r   )r   r   r   r   r   r   r   rR   r)   r'   r   r      sK        
C   X     r)   r   r   c                      e Zd ZdS )r   N)r   r   r   rR   r)   r'   r   r      s          r)   r   )/
__future__r   r   	functoolsr   	itertoolsr   typingr   r   rE   ibis.expr.typesro   typesirnarwhals._expression_parsingr   r	   narwhals._ibis.dataframer   narwhals._ibis.exprr   narwhals._ibis.selectorsr   narwhals._ibis.utilsr   r   r   narwhals._sql.namespacer   narwhals._sql.when_thenr   r   narwhals._utilsr   r   collections.abcr   r   r   narwhals.typingr   r   r   r   r   r   rR   r)   r'   <module>r      s9   " " " " " "              % % % % % % % %                  3 2 2 2 2 2 ( ( ( ( ( ( : : : : : : H H H H H H H H H H 0 0 0 0 0 0 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 G22222222''''''FFFFFFFFFFj
 j
 j
 j
 j
L*j!PQ j
 j
 j
Z    w
H<=   * N M M M Mw
H<=x M M M M Mr)   