o
    $&]i                     @  s
  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  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rud dl m!Z!m"Z" d dlm#Z# d dl$m%Z%m&Z&m'Z' G dd deeeddf 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)Implementation)IterableSequence)Version)ConcatMethod	IntoDTypePythonLiteralc                   @  s   e Zd ZU ejZded< d;ddZed<d
dZ	ed=ddZ
ed>ddZd?ddZd@ddZ	dAdBd!d"ZdCd$d%ZdDd+d,ZdEd1d2ZdFd3d4ZdGd7d8ZdHd9d:ZdS )IIbisNamespacer   _implementationversionr   returnNonec                C  s
   || _ d S N)_version)selfr    r!   V/var/www/html/IGF-ODF-V3/venv/lib/python3.10/site-packages/narwhals/_ibis/namespace.py__init__       
zIbisNamespace.__init__r   c                 C  s
   t | S r   )r   from_namespacer    r!   r!   r"   	selectors#   s   
zIbisNamespace.selectorstype[IbisExpr]c                 C     t S r   r   r&   r!   r!   r"   _expr'      zIbisNamespace._exprtype[IbisLazyFrame]c                 C  r)   r   r	   r&   r!   r!   r"   
_lazyframe+   r+   zIbisNamespace._lazyframenamestrargsir.Value | PythonLiteralir.Valuec                 G  s   t |g|R  S r   )r   )r    r.   r0   r!   r!   r"   	_function/   s   zIbisNamespace._functionvaluer   c                 C  s   t |S r   )r   )r    r4   r!   r!   r"   _lit2   s   zIbisNamespace._litN	condition	otherwiseir.Expr | Nonec                 C  s(   |d u rt ||fS t j||f|dS )N)else_)ibiscases)r    r6   r4   r7   r!   r!   r"   _when5   s   zIbisNamespace._whenexprsc                 G  s
   t j| S r   )r:   coalesce)r    r=   r!   r!   r"   	_coalesce<   r$   zIbisNamespace._coalesceitemsIterable[IbisLazyFrame]howr   r
   c                  st   |dkr
d}t |t|}dd |D }|d j t fdd|dd  D s/d	}t|| jjtj| | d
S )Ndiagonalz<diagonal concat not supported for Ibis. Please join instead.c                 S  s   g | ]}|j qS r!   )native).0itemr!   r!   r"   
<listcomp>G   s    z(IbisNamespace.concat.<locals>.<listcomp>r   c                 3  s    | ]}|j  kV  qd S r   schema)rE   xrH   r!   r"   	<genexpr>I   s    z'IbisNamespace.concat.<locals>.<genexpr>   z&inputs should all have the same schema)context)	NotImplementedErrorlistrI   all	TypeErrorr-   from_nativer:   union)r    r@   rB   msgnative_itemsr!   rH   r"   concat?   s   
zIbisNamespace.concatr   	separatorignore_nullsboolc                  s.   d fdd}| j |t  t  | jdS )	Ndfr
   r   list[ir.Value]c                   sd   t  fddD }dd |D }rt|}|gS tfdd|dd  |d }|gS )	Nc                 3  s    | ]}| V  qd S r   r!   )rE   exprrZ   r!   r"   rK   R   s    z9IbisNamespace.concat_str.<locals>.func.<locals>.<genexpr>c                 S  s   g | ]}| d qS )string)cast)rE   sr!   r!   r"   rG   S   s    z:IbisNamespace.concat_str.<locals>.func.<locals>.<listcomp>c                   s   |   |S r   )rV   )acccol)rW   r!   r"   <lambda>Y   s    z8IbisNamespace.concat_str.<locals>.func.<locals>.<lambda>rL   r   )r   from_iterabler   joinr   )rZ   colscols_castedresultr=   rX   rW   r]   r"   funcQ   s   

z&IbisNamespace.concat_str.<locals>.funccallevaluate_output_namesalias_output_namesr   )rZ   r
   r   r[   )r*   r   r   r   )r    rW   rX   r=   rj   r!   ri   r"   
concat_strN   s   zIbisNamespace.concat_strc                 G  s   ddd}| j j|g|R  S )Nrf   Iterable[ir.Value]r   r2   c                 S  s4   t | } ttjdd | D ttjdd | D  S )Nc                 s  s    | ]
}| td V  qdS )r   N)	fill_nullr   rE   rb   r!   r!   r"   rK   j   s    z>IbisNamespace.mean_horizontal.<locals>.func.<locals>.<genexpr>c                 s  s(    | ]}|  td tdV  qdS )r   rL   N)isnullifelser   rr   r!   r!   r"   rK   k   s   & )rO   r   operatoradd)rf   r!   r!   r"   rj   h   s   z+IbisNamespace.mean_horizontal.<locals>.func)rf   rp   r   r2   )r*   _from_elementwise_horizontal_op)r    r=   rj   r!   r!   r"   mean_horizontalg   s   
zIbisNamespace.mean_horizontaldtypeIntoDType | Nonec                   s*   d
 fdd}j |dd d jd	S )N_dfr
   r   Sequence[ir.Value]c                   s     rt  jnd }t|gS r   )r   r   r   )r{   
ibis_dtypery   r    r4   r!   r"   rj   q   s   zIbisNamespace.lit.<locals>.funcc                 S     dgS )Nliteralr!   r{   r!   r!   r"   rc   w       z#IbisNamespace.lit.<locals>.<lambda>)rm   rn   r   )r{   r
   r   r|   r*   r   )r    r4   ry   rj   r!   r~   r"   r   p   s   zIbisNamespace.litc                 C  s"   d
dd}| j |dd d | jd	S )Nr{   r
   r   r[   c                 S  s   | j  gS r   )rD   countr   r!   r!   r"   rj   }   s   zIbisNamespace.len.<locals>.funcc                 S  r   )Nlenr!   r   r!   r!   r"   rc      r   z#IbisNamespace.len.<locals>.<lambda>rk   )r{   r
   r   r[   r   )r    rj   r!   r!   r"   r   |   s   
zIbisNamespace.len)r   r   r   r   )r   r   )r   r(   )r   r,   )r.   r/   r0   r1   r   r2   )r4   r   r   r2   r   )r6   r2   r4   r2   r7   r8   r   r2   )r=   r2   r   r2   )r@   rA   rB   r   r   r
   )r=   r   rW   r/   rX   rY   r   r   )r=   r   r   r   )r4   r   ry   rz   r   r   )r   r   )__name__
__module____qualname__r   IBISr   __annotations__r#   propertyr'   r*   r-   r3   r5   r<   r?   rV   ro   rx   r   r   r!   r!   r!   r"   r      s&   
 







	r   zir.Tabler2   ))
__future__r   ru   	functoolsr   	itertoolsr   typingr   r   r:   ibis.expr.typesr\   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   r!   r!   r!   r"   <module>   s&     