
    ^j.                       U d dl mZ d dlmZ d dlmZmZmZmZ d dl	m
Z
mZmZmZmZmZmZmZmZmZmZ d dlmZmZmZ d dlmZ erGd dlmZmZmZmZ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( d dl)m*Z* d dl+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1 eZ2de3d<   g dZ4 G d deee
f         Z5 G d deeef         Z6 G d de5eef   eeef         Z7 G d de5eef   eeeef         Z8 G d de7eef   eeeeeef         Z9y)    )annotations)partial)TYPE_CHECKINGAnyProtocoloverload)CompliantExprTCompliantExprT_coCompliantFrameTCompliantLazyFrameTDepthTrackingExprTEagerDataFrameT
EagerExprTEagerSeriesT_co	LazyExprTNativeFrameTNativeSeriesT)exclude_column_namesget_column_namespassthrough_column_names)is_numpy_array_2d)
CollectionIterableIteratorKeysViewMappingSequence)	TypeAlias)TypeIs)CompliantSelectorNamespace)ImplementationVersion)DType)ConcatMethodCorrelationMethodInto1DArray	IntoDTypeNonNestedLiteral_2DArrayr   
Incomplete)CompliantNamespaceDepthTrackingNamespaceEagerNamespaceLazyNamespacec                  B   e Zd ZU ded<   ded<   e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	 	 	 	 	 	 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ed(d       Zd%dZd%dZd)dZd*dZy)+r+   r!   _implementationr"   _versionc                     y N selfs    V/opt/ringagent/.cad-venv/lib/python3.12/site-packages/narwhals/_compliant/namespace.py_exprzCompliantNamespace._exprB   s    -0    c                D    | j                   j                  t        |       S Ncontextr8   from_column_namesr   r5   s    r7   allzCompliantNamespace.allE       zz++,<d+KKr9   c                N    | j                   j                  t        |      |       S r;   r8   r?   r   r6   namess     r7   colzCompliantNamespace.colH   #    zz++,DU,KUY+ZZr9   c                Z    | j                   j                  t        t        |      |       S N)rE   r<   r8   r?   r   r   rD   s     r7   excludezCompliantNamespace.excludeK   +    zz++(6 , 
 	
r9   c                :     | j                   j                  |d| iS )Nr=   )r8   from_column_indices)r6   indicess     r7   nthzCompliantNamespace.nthP   s    -tzz--wEEEr9   c                    y r3   r4   )r6   abmethods       r7   corrzCompliantNamespace.corrS       r9   c                    y r3   r4   )r6   rR   rS   ddofs       r7   covzCompliantNamespace.covV   rV   r9   c                     y r3   r4   r5   s    r7   lenzCompliantNamespace.lenY       r9   c                     y r3   r4   r6   valuedtypes      r7   litzCompliantNamespace.litZ   r\   r9   c                    y r3   r4   r6   ignore_nullsexprss      r7   all_horizontalz!CompliantNamespace.all_horizontal[   rV   r9   c                    y r3   r4   rc   s      r7   any_horizontalz!CompliantNamespace.any_horizontal^   rV   r9   c                     y r3   r4   r6   re   s     r7   sum_horizontalz!CompliantNamespace.sum_horizontala   r\   r9   c                     y r3   r4   rj   s     r7   mean_horizontalz"CompliantNamespace.mean_horizontalb   r\   r9   c                     y r3   r4   rj   s     r7   min_horizontalz!CompliantNamespace.min_horizontalc   r\   r9   c                     y r3   r4   rj   s     r7   max_horizontalz!CompliantNamespace.max_horizontald   r\   r9   c                    y r3   r4   )r6   itemshows      r7   concatzCompliantNamespace.concate   s    r9   c                    y r3   r4   )r6   	separatorrd   re   s       r7   
concat_strzCompliantNamespace.concat_strh   rV   r9   c                     y r3   r4   rj   s     r7   listzCompliantNamespace.listk   r\   r9   c                     y r3   r4   r5   s    r7   	selectorszCompliantNamespace.selectorsl   s    ADr9   c                     y r3   r4   rj   s     r7   structzCompliantNamespace.structn   r\   r9   c                     y r3   r4   rj   s     r7   coalescezCompliantNamespace.coalesceo   r\   r9   c                    y r3   r4   r6   datas     r7   from_nativezCompliantNamespace.from_nativeq   r\   r9   c                    y)z6Return `True` if `obj` can be passed to `from_native`.Nr4   r6   objs     r7   	is_nativezCompliantNamespace.is_nativer   s    r9   N)returnztype[CompliantExprT])r   r	   )rE   strr   r	   )rO   zSequence[int]r   r	   )rR   r	   rS   r	   rT   r%   r   r	   )rR   r	   rS   r	   rX   intr   r	   )r_   r(   r`   IntoDType | Noner   r	   )re   r	   rd   boolr   r	   )re   r	   r   r	   )rs   Iterable[CompliantFrameT]rt   r$   r   r   )re   r	   rw   r   rd   r   r   r	   )r   z$CompliantSelectorNamespace[Any, Any])r   r   r   r   )r   r   r   zTypeIs[Any])__name__
__module____qualname____annotations__propertyr8   r@   rF   rK   rP   rU   rY   r[   ra   rf   rh   rk   rm   ro   rq   ru   rx   rz   r|   r~   r   r   r   r4   r9   r7   r+   r+   =   s2   ##0 0L[

F$2?P	$2=@	 )Z$48	$48	 LLKK.8D	$14DH	 BD DCE3r9   r+   c                  L    e Zd ZdZ	 	 	 	 	 	 ddZ	 	 	 	 ddZ	 	 	 	 	 	 	 	 ddZy)	AlignDiagonalz2Mixin to help support `"diagonal*"` concatenation.c                     y r3   r4   r^   s      r7   ra   zAlignDiagonal.litz   s    r9   c               *   |D cg c]  }|j                          }}t        |      }t        t        |            }|j	                         |D ]*  }|j                  fd|j                         D               , | j                  |||      S c c}w )a7  Prepare frames with differing schemas for vertical concatenation.

        Adapted from [`convert_diagonal_concat`].

        [`convert_diagonal_concat`]: https://github.com/pola-rs/polars/blob/c2412600210a21143835c9dfcb0a9182f462b619/crates/polars-plan/src/plans/conversion/dsl_to_ir/concat.rs#L10-L68
        c              3  6   K   | ]  \  }}|vs||f  y wr3   r4   ).0nmr`   seens      r7   	<genexpr>z/AlignDiagonal.align_diagonal.<locals>.<genexpr>   s      WURV"eWs   	)collect_schemaiterdictnextkeysupdaters   _align_diagonal)r6   framesframeschemas
it_schemasunionschemar   s          @r7   align_diagonalzAlignDiagonal.align_diagonal}   s     8>>e5'')>> ']
T*%&zz|  	XFLLWfllnWW	X##FGU;; ?s   Bc           	         	 j                         	i d fdd	fd}t        ||d      D cg c]  \  }} |||j                                c}}S c c}}w )Nc              3     K   | D ]D  }j                  |      x}+|   }j                  d |      j                  |      x}|<   | F y wr3   )getra   alias)missingnameexprr`   
null_exprsr6   union_schemas       r7   iter_missing_exprsz9AlignDiagonal._align_diagonal.<locals>.iter_missing_exprs   s^      &NN400D9(.E.2hhtU.C.I.I$.OOD:d+
	s   AAc                Z    |z
  x}r | j                    |       }  | j                   S r3   )with_columnssimple_select)dfcolumnsr   r   union_namess      r7   alignz,AlignDiagonal._align_diagonal.<locals>.align   s<    %//w/$R__&8&AB#2##[11r9   F)strict)r   zIterable[str]r   zIterator[CompliantExprT_co])r   r   r   zKeysView[str]r   r   )r   zip)
r6   r   r   r   r   r   r   r   r   r   s
   `  `   @@@r7   r   zAlignDiagonal._align_diagonal   s^     #'')35
		2 "%VWU!C
v %'
 	
 
s   !AN)r_   r(   r`   r   r   r
   )r   zCollection[CompliantFrameT]r   Sequence[CompliantFrameT])r   r   r   zIterable[Mapping[str, DType]]r   zMapping[str, DType]r   r   )r   r   r   __doc__ra   r   r   r4   r9   r7   r   r   w   sb    < % .> 	 <1<	"<&
)
 /
 *	

 
#
r9   r   c                  $    e Zd ZddZddZddZy)r,   c                D    | j                   j                  t        |       S r;   r>   r5   s    r7   r@   zDepthTrackingNamespace.all   rA   r9   c                N    | j                   j                  t        |      |       S r;   rC   rD   s     r7   rF   zDepthTrackingNamespace.col   rG   r9   c                Z    | j                   j                  t        t        |      |       S rI   rJ   rD   s     r7   rK   zDepthTrackingNamespace.exclude   rL   r9   N)r   r   )rE   r   r   r   )r   r   r   r@   rF   rK   r4   r9   r7   r,   r,      s    L[
r9   r,   c                  @    e Zd Zedd       Zedd       ZddZd	dZy)
r.   c                6    | j                   j                         S r3   r0   _backend_versionr5   s    r7   r   zLazyNamespace._backend_version       ##4466r9   c                     y r3   r4   r5   s    r7   
_lazyframezLazyNamespace._lazyframe   s    7:r9   c               8    | j                   j                  |      S r3   )r   
_is_nativer   s     r7   r   zLazyNamespace.is_native   s    ))#..r9   c                   | j                   j                  |      r| j                   j                  ||       S dt        |      j                  }t        |      Nr<   zUnsupported type: )r   r   r   typer   	TypeErrorr6   r   msgs      r7   r   zLazyNamespace.from_native   sO    ??%%d+??..tT.BB"4:#6#6"9:nr9   Nr   ztuple[int, ...])r   ztype[CompliantLazyFrameT])r   r   r   zTypeIs[NativeFrameT])r   zNativeFrameT | Anyr   r   )r   r   r   r   r   r   r   r   r4   r9   r7   r.   r.      s0     7 7 : :/r9   r.   c                  .   e Zd Zedd       Zedd       Zedd       Z	 d	 	 	 	 	 	 	 ddZ	 d	 	 	 	 	 	 	 ddZddZ	e
dd       Ze
dd	       Z	 	 	 	 dd
Ze
ddd       Ze
	 	 	 	 	 	 dd       Z	 d	 	 	 	 	 ddZd dZ	 	 	 	 d!dZd dZ	 	 	 	 	 	 d"dZy)#r-   c                6    | j                   j                         S r3   r   r5   s    r7   r   zEagerNamespace._backend_version   r   r9   c                     y r3   r4   r5   s    r7   
_dataframezEagerNamespace._dataframe   s    36r9   c                     y r3   r4   r5   s    r7   _serieszEagerNamespace._series   s    03r9   Nc                     y r3   r4   )r6   whenthen	otherwises       r7   _if_then_elsezEagerNamespace._if_then_else   s    
 r9   c           	          d fd} j                   j                  |t        dd       t        dd             S )Nc                   | j                        }|j                  }| j                  	      }2 |||      \  }}j                  |j                  |j                        }3 |||      \  }}j                  |j                  |j                        }nP| j                        } ||||      \  }}}j                  |j                  |j                  |j                        }|j	                  |      gS r3   )_evaluate_single_output_expr_align_full_broadcastr   native_with_native)
r   predicate_sr   then_sresultotherwise_sr   	predicater6   r   s
         r7   funcz&EagerNamespace.when_then.<locals>.func   s    99)DK55E44T:F &+K&@#V++K,>,>N &+K&@#V++K,>,>N ==iH38fk3Z0V[++&&{7I7I ''/00r9   _evaluate_output_namesc                    dgS )Nliteralr4   )_dfs    r7   <lambda>z*EagerNamespace.when_then.<locals>.<lambda>   s    YK r9   _alias_output_names)r   evaluate_output_namesalias_output_namesr=   )r   r   r   zSequence[EagerSeriesT_co])r8   _from_callablegetattr)r6   r   r   r   r   s   ```` r7   	when_thenzEagerNamespace.when_then   sQ    	1 	1( zz((").0G#  't-BDI ) 
 	
r9   c               r    | j                   j                  |      xs | j                  j                  |      S r3   )r   r   r   r   s     r7   r   zEagerNamespace.is_native  s+    ))#.N$,,2I2I#2NNr9   c                    y r3   r4   r   s     r7   r   zEagerNamespace.from_native  s    EHr9   c                    y r3   r4   r   s     r7   r   zEagerNamespace.from_native	  s    FIr9   c               (   | j                   j                  |      r| j                   j                  ||       S | j                  j                  |      r| j                  j                  ||       S dt	        |      j
                  }t        |      r   )r   r   r   r   r   r   r   r   s      r7   r   zEagerNamespace.from_native  s}     ??%%d+??..tT.BB<<""4(<<++D$+??"4:#6#6"9:nr9   c                    y r3   r4   r6   r   r   s      r7   
from_numpyzEagerNamespace.from_numpy  s    WZr9   c                    y r3   r4   r   s      r7   r   zEagerNamespace.from_numpy  s     r9   c                   t        |      r| j                  j                  |||       S | j                  j                  ||       S )N)r   r=   r<   )r   r   r   r   r   s      r7   r   zEagerNamespace.from_numpy  sB     T"??--d64-PP||&&tT&::r9   c                    y r3   r4   r6   dfss     r7   _concat_diagonalzEagerNamespace._concat_diagonal'  r\   r9   c                    y r3   r4   r   s     r7   _concat_horizontalz!EagerNamespace._concat_horizontal(  s    r9   c                    y r3   r4   r   s     r7   _concat_verticalzEagerNamespace._concat_vertical+  r\   r9   c                  |D cg c]  }|j                    }}|dk(  r| j                  |      }n4|dk(  r| j                  |      }n|dk(  r| j                  |      }nt        | j
                  j                  ||       S c c}w )N
horizontalverticaldiagonalr<   )r   r  r  r  NotImplementedErrorr   r   )r6   rs   rt   itemr  r   s         r7   ru   zEagerNamespace.concat,  s     (--tt{{--,,,S1FJ**3/FJ**3/F%%**64*@@ .s   Br   )r   ztype[EagerDataFrameT])r   ztype[EagerSeriesT_co]r3   )r   r   r   r   r   zNativeSeriesT | Noner   r   )r   r   r   r   r   zEagerExprT | Noner   r   )r   r   r   z$TypeIs[NativeFrameT | NativeSeriesT])r   r   r   r   )r   r   r   r   )r   z"NativeFrameT | NativeSeriesT | Anyr   !EagerDataFrameT | EagerSeriesT_co).)r   Noner   r&   r   r   )r   .Mapping[str, IntoDType] | Sequence[str] | Noner   r)   r   r   )r   r  r   zInto1DArray | _2DArrayr   r  )r  zSequence[NativeFrameT]r   r   )r  zSequence[NativeFrameT | Any]r   r   )rs   zIterable[EagerDataFrameT]rt   r$   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  ru   r4   r9   r7   r-   r-      sn    7 7 6 63 3
 +/	  (	
 
 W[
#
+5
BS
	
@O H HI I6	* Z Z)W	  BF	; ?	;$;
 
+; T/	 TA.A8DA	Ar9   r-   N):
__future__r   	functoolsr   typingr   r   r   r   narwhals._compliant.typingr	   r
   r   r   r   r   r   r   r   r   r   narwhals._utilsr   r   r   narwhals.dependenciesr   collections.abcr   r   r   r   r   r   r   typing_extensionsr   narwhals._compliant.selectorsr    r!   r"   narwhals.dtypesr#   narwhals.typingr$   r%   r&   r'   r(   r)   r*   r   __all__r+   r   r,   r.   r-   r4   r9   r7   <module>r     s   "  9 9    
 4  !(H7%   J	7/>"AB 7t4
H_.??@ 4
n
(::;_001
 *I56 )\9:(fA?J67_oz<VWfAr9   