
    [i+                       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r;d dlmZmZmZmZm Z  d dl!m"Z"m#Z# d d	l$m%Z% d d
lm&Z&m'Z' d dl(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z. eZ/de0d<   g dZ1 G d deee
f         Z2 G d deeef         Z3 G d de2eef   eeef         Z4 G d de2eef   eeeef         Z5 G d de4eef   eeeeeef         Z6y)    )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Sequence)	TypeAliasTypeIs)CompliantSelectorNamespace)ImplementationVersion)ConcatMethodInto1DArray	IntoDType
IntoSchemaNonNestedLiteral_2DArrayr   
Incomplete)CompliantNamespaceDepthTrackingNamespaceEagerNamespaceLazyNamespacec                     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ed"d       ZddZd#dZd$dZy)%r)   r    _implementationr!   _versionc                     y N selfs    n/var/www/html/userprofiledev.eatanceapp.com/venv/lib/python3.12/site-packages/narwhals/_compliant/namespace.py_exprzCompliantNamespace._expr9   s    -0    c                D    | j                   j                  t        |       S Ncontextr6   from_column_namesr   r3   s    r5   allzCompliantNamespace.all<       zz++,<d+KKr7   c                N    | j                   j                  t        |      |       S r9   r6   r=   r   r4   namess     r5   colzCompliantNamespace.col?   #    zz++,DU,KUY+ZZr7   c                Z    | j                   j                  t        t        |      |       S N)rC   r:   r6   r=   r   r   rB   s     r5   excludezCompliantNamespace.excludeB   +    zz++(6 , 
 	
r7   c                :     | j                   j                  |d| iS )Nr;   )r6   from_column_indices)r4   indicess     r5   nthzCompliantNamespace.nthG   s    -tzz--wEEEr7   c                     y r1   r2   r3   s    r5   lenzCompliantNamespace.lenJ   s    Sr7   c                     y r1   r2   r4   valuedtypes      r5   litzCompliantNamespace.litK   s    WZr7   c                    y r1   r2   r4   ignore_nullsexprss      r5   all_horizontalz!CompliantNamespace.all_horizontalL       r7   c                    y r1   r2   rW   s      r5   any_horizontalz!CompliantNamespace.any_horizontalO   r[   r7   c                     y r1   r2   r4   rY   s     r5   sum_horizontalz!CompliantNamespace.sum_horizontalR       r7   c                     y r1   r2   r_   s     r5   mean_horizontalz"CompliantNamespace.mean_horizontalS   s    r7   c                     y r1   r2   r_   s     r5   min_horizontalz!CompliantNamespace.min_horizontalT   ra   r7   c                     y r1   r2   r_   s     r5   max_horizontalz!CompliantNamespace.max_horizontalU   ra   r7   c                    y r1   r2   )r4   itemshows      r5   concatzCompliantNamespace.concatV   s    r7   c                    y r1   r2   )r4   	separatorrX   rY   s       r5   
concat_strzCompliantNamespace.concat_strY   r[   r7   c                     y r1   r2   r3   s    r5   	selectorszCompliantNamespace.selectors\   s    ADr7   c                     y r1   r2   r_   s     r5   coalescezCompliantNamespace.coalesce^   s    #r7   c                    y r1   r2   r4   datas     r5   from_nativezCompliantNamespace.from_native`   s    r7   c                    y)z6Return `True` if `obj` can be passed to `from_native`.Nr2   r4   objs     r5   	is_nativezCompliantNamespace.is_nativea   s    r7   N)returnztype[CompliantExprT])r{   r	   )rC   strr{   r	   )rM   zSequence[int]r{   r	   )rS   r&   rT   IntoDType | Noner{   r	   )rY   r	   rX   boolr{   r	   )rY   r	   r{   r	   )ri   Iterable[CompliantFrameT]rj   r"   r{   r   )rY   r	   rm   r|   rX   r~   r{   r	   )r{   z$CompliantSelectorNamespace[Any, Any])ru   r   r{   r   )ry   r   r{   zTypeIs[Any])__name__
__module____qualname____annotations__propertyr6   r>   rD   rI   rN   rP   rU   rZ   r]   r`   rc   re   rg   rk   rn   rp   rr   rv   rz   r2   r7   r5   r)   r)   4   s    ##0 0L[

F )Z$48	$48	 LLKK.8D	$14DH	 D DE3r7   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 r1   r2   rR   s      r5   rU   zAlignDiagonal.liti   s    r7   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r1   r2   ).0nmrT   seens      r5   	<genexpr>z/AlignDiagonal.align_diagonal.<locals>.<genexpr>|   s!     WnURV"ens   	)collect_schemaiterdictnextkeysupdateri   _align_diagonal)r4   framesframeschemas
it_schemasunionschemar   s          @r5   align_diagonalzAlignDiagonal.align_diagonall   s     8>>ve5'')v> ']
T*%&zz| FLLWfllnWW !##FGU;; ?s   Bc           	         	 j                         	i d fdd	fd}t        ||      D cg c]  \  }} |||j                                c}}S c c}}w )Nc              3     K   | D ]D  }j                  |      x}+|   }j                  d |      j                  |      x}|<   | F y wr1   )getrU   alias)missingnameexprrT   
null_exprsr4   union_schemas       r5   iter_missing_exprsz9AlignDiagonal._align_diagonal.<locals>.iter_missing_exprs   sY     &NN400D9(.E.2hhtU.C.I.I$.OOD:d+
	  s   AAc                Z    |z
  x}r | j                    |       }  | j                   S r1   )with_columnssimple_select)dfcolumnsr   r   union_namess      r5   alignz,AlignDiagonal._align_diagonal.<locals>.align   s<    %//w/$R__&8&AB#2##[11r7   )r   zIterable[str]r{   zIterator[CompliantExprT_co])r   r   r   zKeysView[str]r{   r   )r   zip)
r4   r   r   r   r   r   r   r   r   r   s
   `  `   @@@r5   r   zAlignDiagonal._align_diagonal   sX     #'')35
		2 BEVWAUVAUveV[[]+AUVVVs   !AN)rS   r&   rT   r}   r{   r
   )r   zCollection[CompliantFrameT]r{   Sequence[CompliantFrameT])r   r   r   zIterable[IntoSchema]r   r%   r{   r   )r   r   r   __doc__rU   r   r   r2   r7   r5   r   r   f   sg    < % .> 	 <1<	"<&W)W &W !	W
 
#Wr7   r   c                  $    e Zd ZddZddZddZy)r*   c                D    | j                   j                  t        |       S r9   r<   r3   s    r5   r>   zDepthTrackingNamespace.all   r?   r7   c                N    | j                   j                  t        |      |       S r9   rA   rB   s     r5   rD   zDepthTrackingNamespace.col   rE   r7   c                Z    | j                   j                  t        t        |      |       S rG   rH   rB   s     r5   rI   zDepthTrackingNamespace.exclude   rJ   r7   N)r{   r   )rC   r|   r{   r   )r   r   r   r>   rD   rI   r2   r7   r5   r*   r*      s    L[
r7   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 r1   r.   _backend_versionr3   s    r5   r   zLazyNamespace._backend_version       ##4466r7   c                     y r1   r2   r3   s    r5   
_lazyframezLazyNamespace._lazyframe   s    7:r7   c               8    | j                   j                  |      S r1   )r   
_is_nativerx   s     r5   rz   zLazyNamespace.is_native   s    ))#..r7   c                   | j                   j                  |      r| j                   j                  ||       S dt        |      j                  }t        |      Nr:   zUnsupported type: )r   r   rv   typer   	TypeErrorr4   ru   msgs      r5   rv   zLazyNamespace.from_native   sO    ??%%d+??..tT.BB"4:#6#6"9:nr7   Nr{   ztuple[int, ...])r{   ztype[CompliantLazyFrameT])ry   r   r{   zTypeIs[NativeFrameT])ru   zNativeFrameT | Anyr{   r   )r   r   r   r   r   r   rz   rv   r2   r7   r5   r,   r,      s0     7 7 : :/r7   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 r1   r   r3   s    r5   r   zEagerNamespace._backend_version   r   r7   c                     y r1   r2   r3   s    r5   
_dataframezEagerNamespace._dataframe   s    36r7   c                     y r1   r2   r3   s    r5   _serieszEagerNamespace._series   s    03r7   Nc                     y r1   r2   )r4   whenthen	otherwises       r5   _if_then_elsezEagerNamespace._if_then_else   s    
 r7   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 r1   )_evaluate_single_output_expr_align_full_broadcastr   native_with_native)
r   predicate_sr   then_sresultotherwise_sr   	predicater4   r   s
         r5   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0r7   _evaluate_output_namesc                    dgS )Nliteralr2   )_dfs    r5   <lambda>z*EagerNamespace.when_then.<locals>.<lambda>   s    YKr7   _alias_output_names)r   evaluate_output_namesalias_output_namesr;   )r   r   r{   zSequence[EagerSeriesT_co])r6   _from_callablegetattr)r4   r   r   r   r   s   ```` r5   	when_thenzEagerNamespace.when_then   sQ    	1 	1( zz((").0G#  't-BDI ) 
 	
r7   c               r    | j                   j                  |      xs | j                  j                  |      S r1   )r   r   r   rx   s     r5   rz   zEagerNamespace.is_native   s+    ))#.N$,,2I2I#2NNr7   c                    y r1   r2   rt   s     r5   rv   zEagerNamespace.from_native   s    EHr7   c                    y r1   r2   rt   s     r5   rv   zEagerNamespace.from_native   s    FIr7   c               (   | j                   j                  |      r| j                   j                  ||       S | j                  j                  |      r| j                  j                  ||       S dt	        |      j
                  }t        |      r   )r   r   rv   r   r   r   r   r   s      r5   rv   zEagerNamespace.from_native   s}     ??%%d+??..tT.BB<<""4(<<++D$+??"4:#6#6"9:nr7   c                    y r1   r2   r4   ru   r   s      r5   
from_numpyzEagerNamespace.from_numpy  s    WZr7   c                    y r1   r2   r   s      r5   r   zEagerNamespace.from_numpy  s     r7   c                   t        |      r| j                  j                  |||       S | j                  j                  ||       S )N)r   r;   r:   )r   r   r   r   r   s      r5   r   zEagerNamespace.from_numpy	  sB     T"??--d64-PP||&&tT&::r7   c                    y r1   r2   r4   dfss     r5   _concat_diagonalzEagerNamespace._concat_diagonal      PSr7   c                    y r1   r2   r   s     r5   _concat_horizontalz!EagerNamespace._concat_horizontal  s    r7   c                    y r1   r2   r   s     r5   _concat_verticalzEagerNamespace._concat_vertical  r   r7   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   rv   )r4   ri   rj   itemr   r   s         r5   rk   zEagerNamespace.concat  s     (--utt{{u-,,,S1FJ**3/FJ**3/F%%**64*@@ .s   Br   )r{   ztype[EagerDataFrameT])r{   ztype[EagerSeriesT_co]r1   )r   r   r   r   r   zNativeSeriesT | Noner{   r   )r   r   r   r   r   zEagerExprT | Noner{   r   )ry   r   r{   z$TypeIs[NativeFrameT | NativeSeriesT])ru   r   r{   r   )ru   r   r{   r   )ru   z"NativeFrameT | NativeSeriesT | Anyr{   !EagerDataFrameT | EagerSeriesT_co).)r   Noneru   r#   r{   r   )r   !IntoSchema | Sequence[str] | Noneru   r'   r{   r   )r   r   ru   zInto1DArray | _2DArrayr{   r   )r   zSequence[NativeFrameT]r{   r   )r   zSequence[NativeFrameT | Any]r{   r   )ri   zIterable[EagerDataFrameT]rj   r"   r{   r   )r   r   r   r   r   r   r   r   r   rz   r   rv   r   r   r   r   rk   r2   r7   r5   r+   r+      sl    7 7 6 63 3
 +/	  (	
 
 W[
#
+5
BS
	
@O H HI I6	* Z Z)J	  59	; 2	;$;
 
+; T/	 TA.A8DA	Ar7   r+   N)7
__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   typing_extensionsr   r   narwhals._compliant.selectorsr   r    r!   narwhals.typingr"   r#   r$   r%   r&   r'   r(   r   __all__r)   r   r*   r,   r+   r2   r7   r5   <module>r     s   "  9 9    
 4RR3H7   J	//>"AB /d1WH_.??@ 1Wh
(::;_001
 *I56 )\9:(fA?J67_oz<VWfAr7   