
    -Ph+              	         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	m
Z
 d dl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mZ d dlmZmZmZ d dlm Z m!Z! d dl"m#Z# erd dl$m%Z% d dl"m&Z& d dl'm(Z(m)Z)  G d deeeeej*        f                   Z+ G d deeeef                   Z, G d deeeef         e          Z-dS )    )annotationsN)reduce)chain)TYPE_CHECKINGLiteralSequenceArrowDataFrame	ArrowExpr)ArrowSelectorNamespaceArrowSeries)align_series_full_broadcastcast_to_comparable_string_types)CompliantThenEagerNamespace	EagerWhen)combine_alias_output_namescombine_evaluate_output_names)Implementation)
Incomplete)Version)	IntoDTypeNonNestedLiteralc                      e Zd Zed-d            Zed.d            Zed/d            Zd0dZd1dZd2dZ	d3dZ
d3dZd3dZd3dZd3dZd3dZd4dZd4d Zd4d!Zed5d#            Zd6d&Zd7d+Zd,S )8ArrowNamespacereturntype[ArrowDataFrame]c                    t           S Nr	   selfs    Y/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/narwhals/_arrow/namespace.py
_dataframezArrowNamespace._dataframe!   s        type[ArrowExpr]c                    t           S r!   r   r"   s    r$   _exprzArrowNamespace._expr%       r&   type[ArrowSeries]c                    t           S r!   r   r"   s    r$   _serieszArrowNamespace._series)   s    r&   backend_versiontuple[int, ...]versionr   Nonec               D    || _         t          j        | _        || _        d S r!   )_backend_versionr   PYARROW_implementation_version)r#   r.   r0   s      r$   __init__zArrowNamespace.__init__.   s      /-5r&   r   c           	     X                            fdddd d  j         j                  S )Nc                Z    t          j        t          | j                  gd          gS )Nlen)namecontext)r   from_iterabler:   native)dfr#   s    r$   <lambda>z$ArrowNamespace.len.<locals>.<lambda>6   s+    )3ry>>*:PTUUU r&   r   r:   c                    dgS )Nr:    _dfs    r$   r@   z$ArrowNamespace.len.<locals>.<lambda>;   s    ug r&   depthfunction_nameevaluate_output_namesalias_output_namesr.   r0   r)   r3   r6   r"   s   `r$   r:   zArrowNamespace.len3   sN    zz    "5"5# 1M  

 

 
	
r&   valuer   dtypeIntoDType | Nonec           	     n     d fd                      fdddd	 d  j         j        
          S )N_r
   r   r   c                f    t          j        gd          }r|                              S |S )Nliteral)datar;   r<   )r   r=   cast)rO   arrow_seriesrL   r#   rK   s     r$   _lit_arrow_seriesz-ArrowNamespace.lit.<locals>._lit_arrow_seriesB   sG    &4W9d  L  0#((///r&   c                     |           gS r!   rB   )r?   rU   s    r$   r@   z$ArrowNamespace.lit.<locals>.<lambda>K   s    ))"--. r&   r   litc                    dgS )NrQ   rB   rC   s    r$   r@   z$ArrowNamespace.lit.<locals>.<lambda>N   s    yk r&   rE   )rO   r
   r   r   rJ   )r#   rK   rL   rU   s   ```@r$   rW   zArrowNamespace.litA   sq    	  	  	  	  	  	  	  	  zz...."9"9# 1M  
 
 	
r&   exprsc           	         d
fd}| j                             |t          d D                       dz   dt           t	           | 	          S )Nr?   r
   r   list[ArrowSeries]c                     t          j         fdD                       }t          t          j        t          |           gS )Nc              3  .   K   | ]} |          V  d S r!   rB   .0exprr?   s     r$   	<genexpr>z>ArrowNamespace.all_horizontal.<locals>.func.<locals>.<genexpr>V   +      (D(Ddb(D(D(D(D(D(Dr&   )r   r=   r   operatorand_r   r?   seriesrY   s   ` r$   funcz+ArrowNamespace.all_horizontal.<locals>.funcU   sD    ((D(D(D(De(D(D(DDDF8=*Ev*NOOPPr&   c              3  $   K   | ]}|j         V  d S r!   _depthr_   xs     r$   ra   z0ArrowNamespace.all_horizontal.<locals>.<genexpr>[   $      ..1ah......r&      all_horizontalrg   rF   rG   rH   rI   r<   r?   r
   r   r[   r)   _from_callablemaxr   r   r#   rY   rg   s    ` r$   ro   zArrowNamespace.all_horizontalT   s    	Q 	Q 	Q 	Q 	Q 	Q z((.......2*"?"G95A ) 
 
 	
r&   c           	         d
fd}| j                             |t          d D                       dz   dt           t	           | 	          S )Nr?   r
   r   r[   c                     t          j         fdD                       }t          t          j        t          |           gS )Nc              3  .   K   | ]} |          V  d S r!   rB   r^   s     r$   ra   z>ArrowNamespace.any_horizontal.<locals>.func.<locals>.<genexpr>d   rb   r&   )r   r=   r   rc   or_r   re   s   ` r$   rg   z+ArrowNamespace.any_horizontal.<locals>.funcc   sD    ((D(D(D(De(D(D(DDDF8<)Df)MNNOOr&   c              3  $   K   | ]}|j         V  d S r!   ri   rk   s     r$   ra   z0ArrowNamespace.any_horizontal.<locals>.<genexpr>i   rm   r&   rn   any_horizontalrp   rq   rr   ru   s    ` r$   r{   zArrowNamespace.any_horizontalb   s    	P 	P 	P 	P 	P 	P z((.......2*"?"G95A ) 
 
 	
r&   c           	         d
fd}| j                             |t          d D                       dz   dt           t	           | 	          S )Nr?   r
   r   r[   c                     t          j         fdD                       }d |D             }t          t          j        t          |           gS )Nc              3  .   K   | ]} |          V  d S r!   rB   r^   s     r$   ra   z>ArrowNamespace.sum_horizontal.<locals>.func.<locals>.<genexpr>r   s+      $@$@$TT"XX$@$@$@$@$@$@r&   c              3  F   K   | ]}|                     d dd          V  dS r   N)strategylimit	fill_nullr_   ss     r$   ra   z>ArrowNamespace.sum_horizontal.<locals>.func.<locals>.<genexpr>s   s4      LLAakk!d$k??LLLLLLr&   )r   r=   r   rc   addr   )r?   itrf   rY   s   `  r$   rg   z+ArrowNamespace.sum_horizontal.<locals>.funcq   sW    $$@$@$@$@%$@$@$@@@BLLLLLF8<)Df)MNNOOr&   c              3  $   K   | ]}|j         V  d S r!   ri   rk   s     r$   ra   z0ArrowNamespace.sum_horizontal.<locals>.<genexpr>x   rm   r&   rn   sum_horizontalrp   rq   rr   ru   s    ` r$   r   zArrowNamespace.sum_horizontalp   s    	P 	P 	P 	P 	P 	P
 z((.......2*"?"G95A ) 
 
 	
r&   c           	         | j         j                                        d
fd}| j                            |t          d D                       dz   dt           t           | 	          S )Nr?   r
   r   r[   c                    t          t          j         fdD                                 }t          d |D              }t          fd|D              }t	          t
          j        |          t	          t
          j        |          z  gS )Nc              3  .   K   | ]} |          V  d S r!   rB   r^   s     r$   ra   z?ArrowNamespace.mean_horizontal.<locals>.func.<locals>.<genexpr>   s+      3O3ODDHH3O3O3O3O3O3Or&   c              3  F   K   | ]}|                     d dd          V  dS r   r   r   s     r$   ra   z?ArrowNamespace.mean_horizontal.<locals>.func.<locals>.<genexpr>   s4      RR!++a$d+;;RRRRRRr&   c              3  l   K   | ].}d |                                                               z
  V  /dS )rn   N)is_nullrS   )r_   r   int_64s     r$   ra   z?ArrowNamespace.mean_horizontal.<locals>.func.<locals>.<genexpr>   s>      EE1!aiikk&&v...EEEEEEr&   )listr   r=   r   r   rc   r   )r?   expr_resultsrf   non_narY   r   s   `   r$   rg   z,ArrowNamespace.mean_horizontal.<locals>.func   s     33O3O3O3O3O3O3O O OPPL0RR\RRRF 1EEEEEEEF 8<006(,3O3OOPPr&   c              3  $   K   | ]}|j         V  d S r!   ri   rk   s     r$   ra   z1ArrowNamespace.mean_horizontal.<locals>.<genexpr>   rm   r&   rn   mean_horizontalrp   rq   )r6   dtypesInt64r)   rs   rt   r   r   )r#   rY   rg   r   s    ` @r$   r   zArrowNamespace.mean_horizontal   s    %++--	Q 	Q 	Q 	Q 	Q 	Q 	Q z((.......2+"?"G95A ) 
 
 	
r&   c           	          d
 fd} j                             |t          d D                       dz   dt           t	            	          S )Nr?   r
   r   r[   c                    t          t          j         fdD                                 ^}}t          |g|R  ^}}t	          t
          j        d |D             |j                  }t          ||j	        j
        j                  gS )Nc              3  .   K   | ]} |          V  d S r!   rB   r^   s     r$   ra   z>ArrowNamespace.min_horizontal.<locals>.func.<locals>.<genexpr>   +      ;W;WDDHH;W;W;W;W;W;Wr&   c                    g | ]	}|j         
S rB   r>   r   s     r$   
<listcomp>z?ArrowNamespace.min_horizontal.<locals>.func.<locals>.<listcomp>       %?%?%?1ah%?%?%?r&   r;   r.   r0   )r   r   r=   r   r   pcmin_element_wiser>   r   r;   r3   r6   r?   init_seriesrf   native_seriesrY   r#   s   `   r$   rg   z+ArrowNamespace.min_horizontal.<locals>.func       #'(;;W;W;W;WQV;W;W;W(W(W#X#X K&#>{#TV#T#T#T K&"#%?%?%?%?%?AS M !$)$($9 M	   r&   c              3  $   K   | ]}|j         V  d S r!   ri   rk   s     r$   ra   z0ArrowNamespace.min_horizontal.<locals>.<genexpr>   rm   r&   rn   min_horizontalrp   rq   rr   ru   s   `` r$   r   zArrowNamespace.min_horizontal       	 	 	 	 	 	 	 z((.......2*"?"G95A ) 
 
 	
r&   c           	          d
 fd} j                             |t          d D                       dz   dt           t	            	          S )Nr?   r
   r   r[   c                    t          t          j         fdD                                 ^}}t          |g|R  ^}}t	          t
          j        d |D             |j                  }t          ||j	        j
        j                  gS )Nc              3  .   K   | ]} |          V  d S r!   rB   r^   s     r$   ra   z>ArrowNamespace.max_horizontal.<locals>.func.<locals>.<genexpr>   r   r&   c                    g | ]	}|j         
S rB   r   r   s     r$   r   z?ArrowNamespace.max_horizontal.<locals>.func.<locals>.<listcomp>   r   r&   r   )r   r   r=   r   r   r   max_element_wiser>   r   r;   r3   r6   r   s   `   r$   rg   z+ArrowNamespace.max_horizontal.<locals>.func   r   r&   c              3  $   K   | ]}|j         V  d S r!   ri   rk   s     r$   ra   z0ArrowNamespace.max_horizontal.<locals>.<genexpr>   rm   r&   rn   max_horizontalrp   rq   rr   ru   s   `` r$   r   zArrowNamespace.max_horizontal   r   r&   dfsSequence[pa.Table]pa.Tablec               p    | j         dk    rt          j        |d          S t          j        |d          S )N)   default)promote_optionsT)promote)r3   paconcat_tables)r#   r   s     r$   _concat_diagonalzArrowNamespace._concat_diagonal   s<     E))#CCCCCT2222r&   c                   t          t          j        d |D                                 }t          t          j        d |D                                 }t          j                            ||          S )Nc              3  $   K   | ]}|j         V  d S r!   )column_namesr_   r?   s     r$   ra   z4ArrowNamespace._concat_horizontal.<locals>.<genexpr>   s$      (G(GR(G(G(G(G(G(Gr&   c              3  >   K   | ]}|                                 V  d S r!   )itercolumnsr   s     r$   ra   z4ArrowNamespace._concat_horizontal.<locals>.<genexpr>   s,      )I)Ir"..*:*:)I)I)I)I)I)Ir&   )names)r   r   r=   r   Tablefrom_arrays)r#   r   r   arrayss       r$   _concat_horizontalz!ArrowNamespace._concat_horizontal   sk    U((G(G3(G(G(GGGHHe))I)IS)I)I)IIIJJx##F%#888r&   c                   |d         j         }t          |dd          d          D ]-\  }}|j         }||k    rd| d| d| d}t          |          .t          j        |          S )Nr   rn   )startz>unable to vstack, column names don't match:
   - dataframe 0: z
   - dataframe z: 
)r   	enumerate	TypeErrorr   r   )r#   r   cols_0ir?   cols_currentmsgs          r$   _concat_verticalzArrowNamespace._concat_vertical   s    Q$s122wa000 	% 	%EAr?Lv%%<)/< <&'< <+7< < < 
  nn$ & $$$r&   r   c                *    t          j        |           S r!   )r   from_namespacer"   s    r$   	selectorszArrowNamespace.selectors   s    %4T:::r&   	predicate	ArrowWhenc                :    t                               ||           S )N)r<   )r   	from_expr)r#   r   s     r$   whenzArrowNamespace.when   s    ""9d";;;r&   	separatorstrignore_nullsboolc          	          d
 fd} j                             |t          d D                       dz   dt           t	            	          S )Nr?   r
   r   r[   c                &    t          t          j         fdD                        }|d         j        }	rdnd}t	          d |D             di\  }}t
          j        }
                     |g ||R d|i|
j        
j	                  }|gS )	Nc              3  .   K   | ]} |          V  d S r!   rB   r^   s     r$   ra   z:ArrowNamespace.concat_str.<locals>.func.<locals>.<genexpr>   s+      %A%A4dd2hh%A%A%A%A%A%Ar&   r   skip	emit_nullc              3  $   K   | ]}|j         V  d S r!   r   r   s     r$   ra   z:ArrowNamespace.concat_str.<locals>.func.<locals>.<genexpr>   s$      ::q!(::::::r&   r   null_handlingr   )
r   r   r=   r;   r   r   binary_join_element_wiser-   r3   r6   )r?   compliant_series_listr;   r   r   separator_scalar
concat_str	compliantrY   r   r#   r   s   `       r$   rg   z'ArrowNamespace.concat_str.<locals>.func   s    $?%%A%A%A%A5%A%A%AAA%! )+0D&7K  $C::$9:::$FO$ $ B 
 &(%@J
NBN 0NNNNN $ 5	 %  I ;r&   c              3  $   K   | ]}|j         V  d S r!   ri   rk   s     r$   ra   z,ArrowNamespace.concat_str.<locals>.<genexpr>   rm   r&   rn   r   rp   rq   rr   )r#   r   r   rY   rg   s   ```` r$   r   zArrowNamespace.concat_str   s    	 	 	 	 	 	 	 	 	, z((.......2&"?"G95A ) 
 
 	
r&   N)r   r   )r   r'   )r   r+   )r.   r/   r0   r   r   r1   )r   r   )rK   r   rL   rM   r   r   )rY   r   r   r   )r   r   r   r   )r   r   )r   r   r   r   )rY   r   r   r   r   r   r   r   )__name__
__module____qualname__propertyr%   r)   r-   r7   r:   rW   ro   r{   r   r   r   r   r   r   r   r   r   r   rB   r&   r$   r   r       s          X    X    X       

 
 
 

 
 
 
&
 
 
 

 
 
 

 
 
 

 
 
 
,
 
 
 
2
 
 
 
23 3 3 3
9 9 9 9
% % % % ; ; ; X;< < < < 
  
  
  
  
  
r&   r   c                  .    e Zd Zedd            Zdd	Zd
S )r   r   type[ArrowThen]c                    t           S r!   )	ArrowThenr"   s    r$   _thenzArrowWhen._then	  r*   r&   r   r   then	otherwiseArrowSeries | Nonec          	     j   |ct          ||          \  }}t          j        |j        |j        t	          j        t          |j                  |j        j                            }n:t          |||          \  }}}t          j        |j        |j        |j                  }|                    |          S r!   )	r   r   if_elser>   r   nullsr:   type_with_native)r#   r   r   r   
res_natives        r$   _if_then_elsezArrowWhen._if_then_else  s     4T4@@JD$T["(3t{3C3CT[EU*V*V JJ %@dI$V$V!D$	DKi>NOOJ  ,,,r&   N)r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   rB   r&   r$   r   r     sF           X- - - - - -r&   r   c                      e Zd ZdS )r   N)r   r   r   rB   r&   r$   r   r     s          r&   r   ).
__future__r   rc   	functoolsr   	itertoolsr   typingr   r   r   pyarrowr   pyarrow.computecomputer   narwhals._arrow.dataframer
   narwhals._arrow.exprr   narwhals._arrow.selectorsr   narwhals._arrow.seriesr   narwhals._arrow.utilsr   r   narwhals._compliantr   r   r   narwhals._expression_parsingr   r   narwhals._utilsr   narwhals._arrow.typingr   r   narwhals.typingr   r   r   r   r   r   rB   r&   r$   <module>r     s;   " " " " " "              3 3 3 3 3 3 3 3 3 3           4 4 4 4 4 4 * * * * * * < < < < < < . . . . . .        I H H H H H H H H H        + * * * * * <111111'''''';;;;;;;;e
 e
 e
 e
 e
^NKBH$TU e
 e
 e
P- - - - -	.+y@A - - -& W V V V Vnk9DEy V V V V Vr&   