
    ^jx                    T   U d dl mZ d dlmZ d dlmZmZmZmZm	Z	m
Z
 d dlZd dlmZmZ d dlmZ d dlmZmZmZ d dl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$m%Z% d d
l&m'Z(m)Z* d dl+m,Z,m-Z- d dl.m/Z0 d dl1m2Z2m3Z3m4Z4 d dl5m6Z7 d dl8m9Z: d dl;m<Z<m=Z=m>Z> d dl?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[m\Z\ d dl]m^Z^m_Z_m`Z`maZambZbmcZcmdZdmeZe d dlfmgZgmhZhmiZi erd dljmkZkmlZlmmZmmnZn d dlompZp d dlqmrZrmsZsmtZt d dlmuZu d dlvmwZxmyZzm{Z|m}Z~mZmZmZmZmZmZmZmZmZmZmZ d dlmZmZmZmZmZmZmZ d dl&mZmZ d dlmZmZmZmZmZmZmZmZmZmZ  ede      Z erd      Z ed      Z G d  d!e(e_         Z' G d" d#e*ea         Z) G d$ d%e:ec         Z9 G d& d'e0      Z/ G d( d)e7      Z6e
dd*       Ze
dd+       Ze
dd,       Ze
dd-       Z	 	 	 	 dd.Ze
dd/       Ze
dd0       Ze
dd1       Ze
dd2       Ze
	 	 	 	 	 	 dd3       Ze
	 	 	 	 	 	 dd4       Ze
dd5       Ze
	 	 	 	 	 	 dd6       Ze
	 	 	 	 	 	 dd7       Ze
	 	 	 	 	 	 dd8       Ze
	 	 	 	 	 	 dd9       Ze
	 	 	 	 	 	 dd:       Ze
	 	 	 	 	 	 dd;       Ze
	 	 	 	 	 	 dd<       Ze
	 	 	 	 	 	 dd=       Ze
	 	 	 	 	 	 dd>       Ze
	 	 	 	 	 	 dd?       Ze
	 	 	 	 	 	 dd@       Ze
	 	 	 	 	 	 ddA       Ze
	 	 	 	 	 	 ddB       Ze
ddC       Ze
ddD       Ze
dEdF	 	 	 	 	 	 	 	 	 	 	 	 	 ddG       ZdddEdEdEddH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddIZe
dJdK	 	 	 	 	 ddL       Ze
dJdK	 	 	 	 	 ddM       Ze
dJdK	 	 	 	 	 ddN       Ze
ddO       Ze
dJdP	 	 	 	 	 ddQ       Ze
dJdP	 	 	 	 	 ddR       Ze
dJdP	 	 	 	 	 ddS       Ze
ddT       ZdddU	 	 	 	 	 	 	 ddVZ	 ddddEdEdEdWdH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddXZddYZddZZdd[Zdd\Zdd]Zddd^Zdd_Zdd`ZddaZddbZddcZdddZdEde	 	 	 	 	 ddfZdEde	 	 	 	 	 ddgZddhZddiZddjZ	 d	 	 	 	 	 	 	 ddkZdldmddnZdodEdp	 	 	 	 	 	 	 	 	 ddqZddrZddsZ	 	 	 	 ddtZ G du dvej                        Z G dw dxej                  e/      ZddyZ edWz      	 dddd{	 	 	 	 	 	 	 	 	 	 	 dd|       Z edWz      ddd{	 	 	 	 	 	 	 dd}       Z e       	 dddd{	 	 	 	 	 	 	 	 	 dd~       Ze'j                  Zded<    edWz      	 dddd{	 	 	 	 	 	 	 	 	 dd       Z edWz      ddd{	 	 	 	 	 	 	 	 	 dd       Z edWz      ddd{	 	 	 	 	 	 	 	 	 dd       Z edWz      ddd{	 	 	 	 	 	 	 	 	 dd       Z edWz      ddd{	 	 	 	 	 	 	 	 	 dd       ZddZg dZy)    )annotationswraps)TYPE_CHECKINGAnyFinalLiteralcastoverloadN)
exceptions	functions)issue_warning)ExprKindExprNodeis_expr)TypeVarassert_never)ImplementationVersiondeprecate_native_namespacegenerate_temporary_column_nameinherit_docis_ordered_categoricalmaybe_align_indexmaybe_convert_dtypesmaybe_get_indexmaybe_reset_indexmaybe_set_indexvalidate_strict_and_pass_though)	DataFrame	LazyFrame)InvalidIntoExprErrorNarwhalsUnstableWarning)Expr)_new_series_implconcatshow_versions)Schema)Series)dependenciesdtypes	selectors)ArrayBinaryBooleanCategoricalDateDatetimeDecimalDurationEnumFieldFloat16Float32Float64Int8Int16Int32Int64Int128ListObjectStringStructTimeUInt8UInt16UInt32UInt64UInt128Unknown)
DataFrameTIntoDataFrameT	IntoFrameIntoLazyFrameT
IntoSeriesIntoSeriesT
LazyFrameTSeriesT)_from_native_implget_native_namespaceto_py_scalar)CallableIterableMappingSequence)
ModuleType)	ParamSpecSelfUnpack)ExprMetadata)AllowAnyStrictV1
AllowAnyV1AllowLazyStrictV1AllowLazyV1AllowSeriesStrictV1AllowSeriesV1ExcludeSeriesStrictV1ExcludeSeriesV1IntoArrowTableOnlyEagerOrInterchangeOnlyEagerOrInterchangeStrictOnlySeriesStrictV1OnlySeriesV1PassThroughUnknownV1StrictUnknownV1)ArrowBackendEagerAllowedIntoBackendLazyAllowedPandasPolars)MultiColSelectorMultiIndexSelector)

FileSource	IntoDTypeIntoExpr
IntoSchemaNonNestedLiteralPythonLiteralSingleColSelectorSingleIndexSelector_1DArray_2DArrayT)defaultPRc                      e Zd Zej                  Z ee      d fd       Ze		 	 	 	 	 	 d fd       Z
e		 ddd	 	 	 	 	 	 	 d fd       Ze		 d	 	 	 	 	 	 	 d fd       Ze		 d	 	 	 	 	 	 	 d  fd       Zed!d       Zed"d	       Zed#d
       Ze	 	 	 	 d$d       Ze	 	 	 	 d%d       Z	 	 	 	 d& fdZd' fdZ	 ddd	 	 	 	 	 d( fdZeddd)d       Zed*d       Zedd	 	 	 d+d       Zdd	 	 	 d+ fdZd, fdZd, fdZd-dZ xZS ).r    c               d    |j                   t        j                  u sJ t        |   ||       y N)level_versionr   V1super__init__selfdfr   	__class__s      T/opt/ringagent/.cad-venv/lib/python3.12/site-packages/narwhals/stable/v1/__init__.pyr   zDataFrame.__init__   +    {{gjj(((5)    c               >    t         |   ||      }t        d|      S NbackendDataFrame[Any])r   
from_arrowr
   )clsnative_framer   resultr   s       r   r   zDataFrame.from_arrow   s'     #L'#B$f--r   Nr   c               @    t         |   |||      }t        d|      S r   )r   	from_dictr
   r   dataschemar   r   r   s        r   r   zDataFrame.from_dict   s)     "4"A$f--r   c               @    t         |   |||      }t        d|      S r   )r   
from_dictsr
   r   s        r   r   zDataFrame.from_dicts   )     #D&'#B$f--r   c               @    t         |   |||      }t        d|      S r   r   
from_numpyr
   r   s        r   r   zDataFrame.from_numpy   r   r   c                "    t        dt              S )Ntype[Series[Any]])r
   r)   r   s    r   _serieszDataFrame._series   s    '00r   c                "    t        dt              S )Ntype[LazyFrame[Any]])r
   r!   r   s    r   
_lazyframezDataFrame._lazyframe   s    *I66r   c                     y N r   items     r   __getitem__zDataFrame.__getitem__       WZr   c                     y r   r   r   s     r   r   zDataFrame.__getitem__   s     r   c                     y r   r   r   s     r   r   zDataFrame.__getitem__   s     r   c                "    t         |   |      S r   )r   r   )r   r   r   s     r   r   zDataFrame.__getitem__   s     w"4((r   c                "    t         |   |      S r   )r   
get_column)r   namer   s     r   r   zDataFrame.get_column   s     w!$''r   )sessionc               8    t        t        | 	  ||            S )N)r   r   )
_stableifyr   lazy)r   r   r   r   s      r   r   zDataFrame.lazy   s     %',w,HIIr   .	as_seriesc                    y r   r   r   r   s     r   to_dictzDataFrame.to_dict   s    TWr   c                    y r   r   r   s     r   r   zDataFrame.to_dict   s    MPr   Tc                    y r   r   r   s     r   r   zDataFrame.to_dict   s     9<r   c               $    t         |   |      S )Nr   )r   r   )r   r   r   s     r   r   zDataFrame.to_dict   s    
 w33r   c                2    t        t        | 	               S r   )r   r   is_duplicatedr   r   s    r   r   zDataFrame.is_duplicated   s    %'/122r   c                2    t        t        | 	               S r   )r   r   	is_uniquer   s    r   r   zDataFrame.is_unique   s    %'+-..r   c                P    | j                  t               j                               S r   selectall_l1_normr   s    r   r   zDataFrame._l1_norm       {{35>>+,,r   r   r   r   &Literal['full', 'lazy', 'interchange']returnNone)r   rf   r   IntoBackend[EagerAllowed]r   r   r   )r   Mapping[str, Any]r   2IntoSchema | Mapping[str, IntoDType | None] | Noner    IntoBackend[EagerAllowed] | Noner   r   )r   zSequence[Any]r   r   r   r   r   r   )r   r   r   !IntoSchema | Sequence[str] | Noner   r   r   r   )r   r   )r   r   )r   z-tuple[SingleIndexSelector, SingleColSelector]r   r   )r   z2str | tuple[MultiIndexSelector, SingleColSelector]r   Series[Any])r   zSingleIndexSelector | MultiIndexSelector | MultiColSelector | tuple[SingleIndexSelector, MultiColSelector] | tuple[MultiIndexSelector, MultiColSelector]r   r[   )r   a  SingleIndexSelector | SingleColSelector | MultiColSelector | MultiIndexSelector | tuple[SingleIndexSelector, SingleColSelector] | tuple[SingleIndexSelector, MultiColSelector] | tuple[MultiIndexSelector, SingleColSelector] | tuple[MultiIndexSelector, MultiColSelector]r   zSeries[Any] | Self | Any)r   strr   r)   )r   zIntoBackend[LazyAllowed] | Noner   z
Any | Noner   LazyFrame[Any])r   zLiteral[True]r   zdict[str, Series[Any]])r   zLiteral[False]r   zdict[str, list[Any]])r   boolr   z-dict[str, Series[Any]] | dict[str, list[Any]])r   r   r   r[   )__name__
__module____qualname__r   r   r   r   NwDataFramer   classmethodr   r   r   r   propertyr   r   r   r   r   r   r   r   r   r   __classcell__r   s   @r   r    r       s`   zzH* * .).7P.	. .  FJ.
 59.. C.
 2. 
. .  FJ.. C.
 +. 
. .  59.. 2.
 +. 
. . 1 1 7 7 Z ZF	  	:	 
	 	):) 
")( 48J #	J0J 	J
 
J 47W WP P#'< <	6< < $(4 4	643/-r   r    c                       e Zd Zej                  Z ee      d fd       Ze	dd       Z
ddZ	 d	 	 	 	 	 d fdZddZdd fdZdddZ	 ddd		 	 	 	 	 dd
Z xZS )r!   c               d    |j                   t        j                  u sJ t        |   ||       y r   r   r   s      r   r   zLazyFrame.__init__  r   r   c                    t         S r   r    r   s    r   
_dataframezLazyFrame._dataframe      r   c                     y r   r   )r   metadatas     r   _validate_metadatazLazyFrame._validate_metadata  s    r   Nc                8    t        t        |   dd|i|      S )Nr   r   )r   r   collect)r   r   kwargsr   s      r   r   zLazyFrame.collect  s!     %'/D'DVDEEr   c                P    | j                  t               j                               S r   r   r   s    r   r   zLazyFrame._l1_norm  r   r   c                "    t         |   |      S )Get the last `n` rows.)r   tail)r   nr   s     r   r   zLazyFrame.tail  s    w|Ar   c                Z    | j                  | j                  j                  ||            S )zTake every nth row in the DataFrame and return as a new DataFrame.

        Arguments:
            n: Gather every *n*-th row.
            offset: Starting index.
        r   offset)_with_compliant_compliant_framegather_everyr   r   r   s      r   r   zLazyFrame.gather_every!  s0     ##!!..6.B
 	
r   )order_byc                   t        |t              r|gn|}| j                  | j                  j	                  ||            S )N)r   r  )
isinstancer   r   r   with_row_index)r   r   r  	order_by_s       r   r  zLazyFrame.with_row_index,  sH     #-Xs";XJ	##!!00" 1 
 	
r   r   r   ztype[DataFrame[Any]])r   r]   r   r   r   )r   z+IntoBackend[Polars | Pandas | Arrow] | Noner   r   r   r   r   )   r   intr   r[   r   r   r	  r   r	  r   r[   )index)r   r   r  zstr | Sequence[str] | Noner   r[   )r   r   r   r   r   r   r   NwLazyFramer   r   r   r   r   r   r   r   r  r   r   s   @r   r!   r!     s    zzH* *  
 FJFBFUXF	F
-	
 "	
MQ	
	
0J	
		
r   r!   c                  2    e Zd Zej                  Z ee      	 	 	 	 	 	 d fd       Ze		 d	 	 	 	 	 	 	 	 	 d fd       Z
e		 d	 	 	 	 	 	 	 	 	 d fd       Zedd       Zd fdZddddd	 	 	 	 	 	 	 	 	 d fd	Z	 ddd
d	 	 	 	 	 	 	 d fdZddd fdZ xZS )r)   c               d    |j                   t        j                  u sJ t        |   ||       y r   r   )r   seriesr   r   s      r   r   zSeries.__init__;  s-     '**,,,u-r   Nc               B    t         |   ||||      }t        d|      S Nr   r   r   r   r   valuesdtyper   r   r   s         r   r   zSeries.from_numpyE  s*     #D&%#IM6**r   c               B    t         |   ||||      }t        d|      S r  )r   from_iterabler
   r  s         r   r  zSeries.from_iterableQ  s*     &tVUG&LM6**r   c                    t         S r   r   r   s    r   r   zSeries._dataframe]  r   r   c                2    t        t        | 	               S r   )r   r   to_framer   s    r   r  zSeries.to_framea  s    %'*,--r   Fsortparallelr   	normalizec               <    t        t        | 	  ||||            S )Nr  )r   r   value_counts)r   r  r  r   r  r   s        r   r   zSeries.value_countsd  s-     G H49 ! 
 	
r   T)	bin_countinclude_breakpointc               ^    d}t        |t               t        t        |   |||            S )NzZ`Series.hist` is being called from the stable API although considered an unstable feature.)binsr!  r"  )r   r#   r   r   hist)r   r$  r!  r"  msgr   s        r   r%  zSeries.histr  s@    # 	 	c23GLYCU  
 	
r   ignore_nullsc               H    d}t        |t               t        |   |      S )Nz_`Series.any_value` is being called from the stable API although considered an unstable feature.r'  )r   r#   r   	any_value)r   r(  r&  r   s      r   r*  zSeries.any_value  s-    # 	 	c23w l ;;r   )r  r   r   r   r   r   r   )
r   r   r  r~   r  IntoDType | Noner   r   r   r   )
r   r   r  zIterable[Any]r  r+  r   r   r   r   r  )r   r   )
r  r   r  r   r   z
str | Noner  r   r   r   )r$  zlist[float] | Noner!  
int | Noner"  r   r   r   )r(  r   r   r{   )r   r   r   r   r   r   r   NwSeriesr   r   r   r  r   r   r  r   r%  r*  r   r   s   @r   r)   r)   8  sw   zzH..%K.	. . 
 #'		+	+ 	+  		+ +	+ 
	+ 	+ 
 #'		+	+ 	+  		+ +	+ 
	+ 	+  . 
 
 	

 
 
 

  $(
 !%#'
 
 	

 !
 

$ 16 < <r   r)   c                       e Zd Zd fdZdddZdddZdddZddddZddd	dd
ZddZ	ddZ
ddZddZddZ	 ddddd	 	 	 	 	 	 	 	 	 ddZddddZ xZS )r$   c                     t         |          S r   )r   _taxicab_normr   s    r   r   zExpr._l1_norm  s    w$&&r   c                X    | j                  t        t        j                  d|            S )zGet the first `n` rows.headr   _append_noder   r   ORDERABLE_FILTRATIONr   r   s     r   r2  z	Expr.head  #      (*G*GST!UVVr   c                X    | j                  t        t        j                  d|            S )r   r   r3  r4  r7  s     r   r   z	Expr.tail  r8  r   c                Z    | j                  t        t        j                  d||            S )zTake every nth value in the Series and return as new Series.

        Arguments:
            n: Gather every *n*-th row.
            offset: Starting index.
        r   r   r4  r   s      r   r   zExpr.gather_every  s,       X22NaPVW
 	
r   N)maintain_orderc               |    |d}t        |t               | j                  t        t        j
                  d            S )z(Return unique values of this expression.zx`maintain_order` has no effect and is only kept around for backwards-compatibility. You can safely remove this argument.unique)r   UserWarningr5  r   r   
FILTRATION)r   r;  r&  s      r   r=  zExpr.unique  s<    %7  #{+  (*=*=x!HIIr   F
descending
nulls_lastc               Z    | j                  t        t        j                  d||            S )z*Sort this column. Place null values first.r  r@  )r5  r   r   WINDOW)r   rA  rB  s      r   r  z	Expr.sort  s*      J:
 	
r   c                T    | j                  t        t        j                  d            S )z'Returns the index of the maximum value.arg_maxr5  r   r   ORDERABLE_AGGREGATIONr   s    r   rF  zExpr.arg_max         (*H*H)!TUUr   c                T    | j                  t        t        j                  d            S )z'Returns the index of the minimum value.arg_minrG  r   s    r   rK  zExpr.arg_min  rI  r   c                T    | j                  t        t        j                  d            S )z/Find elements where boolean expression is True.arg_truer4  r   s    r   rM  zExpr.arg_true  s       (*G*G!TUUr   c                T    | j                  t        t        j                  d            S )zGet the first value.firstrG  r   s    r   rO  z
Expr.first  s       (*H*H'!RSSr   c                T    | j                  t        t        j                  d            S )zGet the last value.lastrG  r   s    r   rQ  z	Expr.last  s       (*H*H&!QRRr   )fractionwith_replacementseedc          
     ^    | j                  t        t        j                  d||||            S )a  Sample randomly from this expression.

        Arguments:
            n: Number of items to return. Cannot be used with fraction.
            fraction: Fraction of items to return. Cannot be used with n.
            with_replacement: Allow values to be sampled more than once.
            seed: Seed for the random number generator. If set to None (default), a random
                seed is generated for each sample operation.
        sample)r   rR  rS  rT  )r5  r   r   r?  )r   r   rR  rS  rT  s        r   rV  zExpr.sample  s7    "   ##!!1	
 		
r   r'  c               |    d}t        |t               | j                  t        t        j
                  d|            S )Nz]`Expr.any_value` is being called from the stable API although considered an unstable feature.r*  r'  )r   r#   r5  r   r   AGGREGATION)r   r(  r&  s      r   r*  zExpr.any_value  s>    # 	 	c23  X));\R
 	
r   r   )
   r  r
  r  )r;  bool | Noner   r[   )rA  r   rB  r   r   r[   r   )
r   r,  rR  zfloat | NonerS  r   rT  r,  r   r[   )r(  r   r   r[   )r   r   r   r   r2  r   r   r=  r  rF  rK  rM  rO  rQ  rV  r*  r   r   s   @r   r$   r$     s    'WW	
 7; J */5 
VVVTS 
 "&!&

 	

 
 
 

8 16 
 
r   r$   c                  $    e Zd Zej                  Zy)r(   N)r   r   r   r   r   r   r   r   r   r(   r(     s    zzHr   r(   c                     y r   r   objs    r   r   r         ORr   c                     y r   r   r]  s    r   r   r     r_  r   c                     y r   r   r]  s    r   r   r         CFr   c                     y r   r   r]  s    r   r   r     s    %(r   c                2   t        | t              r>t        | j                  j	                  t
        j                        | j                        S t        | t              r>t        | j                  j	                  t
        j                        | j                        S t        | t              r>t        | j                  j	                  t
        j                        | j                        S t        | t              rt        | j                   S t!        |        y r   )r  r   r    r   _with_versionr   r   _levelr  r!   r-  r)   _compliant_seriesNwExprr$   _nodesr   r]  s    r   r   r     s     #{#--;;GJJGszzZZ#{#--;;GJJGszzZZ#x c++99'**ESZZXX#vSZZ  r   c                     y r   r   native_objectkwdss     r   from_nativern    s    PSr   c                     y r   r   rk  s     r   rn  rn    s    VYr   c                     y r   r   rk  s     r   rn  rn    s    QTr   c                     y r   r   rk  s     r   rn  rn    r   r   c                     y r   r   rk  s     r   rn  rn         r   c                     y r   r   rk  s     r   rn  rn    rs  r   c                     y r   r   rk  s     r   rn  rn     s    UXr   c                     y r   r   rk  s     r   rn  rn  "  rs  r   c                     y r   r   rk  s     r   rn  rn  &       !$r   c                     y r   r   rk  s     r   rn  rn  *  rx  r   c                     y r   r   rk  s     r   rn  rn  .  rx  r   c                     y r   r   rk  s     r   rn  rn  2  rx  r   c                     y r   r   rk  s     r   rn  rn  6       r   c                     y r   r   rk  s     r   rn  rn  :  r}  r   c                     y r   r   rk  s     r   rn  rn  >       7:r   c                     y r   r   rk  s     r   rn  rn  B  r  r   c                     y r   r   rk  s     r   rn  rn  F  rx  r   c                     y r   r   rk  s     r   rn  rn  J  rx  r   c                     y r   r   rk  s     r   rn  rn  N  s	     SVr   c                     y r   r   rk  s     r   rn  rn  R  s	     SVr   c                     y r   r   rk  s     r   rn  rn  W  s    LOr   c                     y r   r   rk  s     r   rn  rn  Y  s    GJr   F)eager_or_interchange_onlyc                    y r   r   )rl  pass_through
eager_onlyr  series_onlyallow_seriess         r   rn  rn  ^  s     r   )strictr  r  r  r  r  c          	        t        | t        t        f      r|s| S t        | t              r|s|r| S t	        ||d      }|r"dt        t        |            }t        |      t        | |||||t        j                        S )aC  Convert `native_object` to Narwhals Dataframe, Lazyframe, or Series.

    See `narwhals.from_native` for full docstring. Note that `native_namespace` is
    an is the same as `backend` but only accepts module types - for new code, we
    recommend using `backend`, as that's available beyond just `narwhals.stable.v1`.
    Fpass_through_defaultz1from_native() got an unexpected keyword argument )r  r  r  r  r  version)r  r    r!   r)   r   nextiter	TypeErrorrR   r   r   )	rl  r  r  r  r  r  r  rm  r&  s	            r   rn  rn  j  s    . -)Y!78-(k\25L A$tDzBRAUVn!";!

 r   .)r  c                    y r   r   narwhals_objectr  s     r   	to_nativer         r   c                    y r   r   r  s     r   r  r    r  r   c                    y r   r   r  s     r   r  r         r   c                    y r   r   r  s     r   r  r    s    =@r   r  c                    y r   r   r  r  s     r   r  r        
 r   c                    y r   r   r  s     r   r  r    r  r   c                    y r   r   r  s     r   r  r    r  r   c                    y r   r   r  s     r   r  r    rb  r   )r  r  c               R    ddl m}  |||d      }t        j                  | |      S )a#  Convert Narwhals object to native one.

    See `narwhals.to_native` for full docstring. Note that `native_namespace` is
    an is the same as `backend` but only accepts module types - for new code, we
    recommend using `backend`, as that's available beyond just `narwhals.stable.v1`.
    r   r   Fr  r  )narwhals._utilsr   nwr  )r  r  r  r   s       r   r  r    s,     @25L <<lCCr   Tc               T    t        |d      dfd}| |S  ||       S )a1  Decorate function so it becomes dataframe-agnostic.

    See `narwhals.narwhalify` for full docstring. Note that `native_namespace` is
    an is the same as `backend` but only accepts module types - for new code, we
    recommend using `backend`, as that's available beyond just `narwhals.stable.v1`.
    Tr  c                <     t               d fd       }|S )Nc                    | D cg c]  }t        |       }}|j                         D ci c]  \  }}|t        |       }}}g ||j                         D ch c]  }t        |dd       x}r |        }	}|	j	                         dkD  rd}
t        |
       |i |}t        |      S c c}w c c}}w c c}w )N)r  r  r  r  r  __native_namespace__   z_Found multiple backends. Make sure that all dataframe/series inputs come from the same backend.r  )rn  itemsr  getattr__len__
ValueErrorr  )argsr   argargs_nwr   value	kwargs_nwvbbackendsr&  r   r  r  r  funcr  r  s               r   wrapperz.narwhalify.<locals>.decorator.<locals>.wrapper  s     
  !-).G +!-
G 
* $*<<>
  D% k!-).G +!- 
I 
 978Y%5%5%78 $:DAAAA H  !A%w o%70i0FV,??I

s   B=C)C)r  r   r   r   r   r   r   )r  r  r  r  r  r  r  s   ` r   	decoratorznarwhalify.<locals>.decorator  s)    	t%	@ %	@ 
%	@N r   )r  Callable[..., Any]r   r  r  )r  r  r  r  r  r  r  r  s     ````` r   
narwhalifyr    s8      34L) )V |T?r   c                 <    t        t        j                               S r   )r   r  r   r   r   r   r   r         bffhr   c                 8    t        t        j                  |        S r   )r   r  colnamess    r   r  r    s    bffen%%r   c                 8    t        t        j                  |        S r   )r   r  excluder  s    r   r  r    s    bjj%())r   c                 8    t        t        j                  |        S r   )r   r  nth)indicess    r   r  r  !      bffg&''r   c                 <    t        t        j                               S r   )r   r  lenr   r   r   r  r  %  r  r   c                @    t        t        j                  | |            S r   )r   r  lit)r  r  s     r   r  r  )  s    bffUE*++r   c                 8    t        t        j                  |        S r   )r   r  mincolumnss    r   r  r  -  r  r   c                 8    t        t        j                  |        S r   )r   r  maxr  s    r   r  r  1  r  r   c                 8    t        t        j                  |        S r   )r   r  meanr  s    r   r  r  5  s    bggw'((r   c                 8    t        t        j                  |        S r   )r   r  medianr  s    r   r  r  9  s    bii)**r   c                 8    t        t        j                  |        S r   )r   r  sumr  s    r   r  r  =  r  r   c                 8    t        t        j                  |        S r   )r   r  sum_horizontalexprss    r   r  r  A      b''/00r   r'  c                >    t        t        j                  |d| i      S Nr(  )r   r  all_horizontalr(  r  s     r   r  r  E       b''J\JKKr   c                >    t        t        j                  |d| i      S r  )r   r  any_horizontalr  s     r   r  r  K  r  r   c                 8    t        t        j                  |        S r   )r   r  mean_horizontalr  s    r   r  r  Q  s    b((%011r   c                 8    t        t        j                  |        S r   )r   r  min_horizontalr  s    r   r  r  U  r  r   c                 8    t        t        j                  |        S r   )r   r  max_horizontalr  s    r   r  r  Y  r  r   c                D    t        t        j                  | ||            S )zCompute the Pearson's or Spearman rank correlation between two columns.

    Arguments:
        a: Column name or Expression
        b: Column name or Expression
        method: Correlation method ('pearson' or 'spearman')
    )method)r   r  corr)ar  r  s      r   r  r  ]  s     bgga6233r   r  ddofc               D    t        t        j                  | ||            S )a2  Compute the covariance between two columns.

    Arguments:
        a: Column name or Expression
        b: Column name or Expression
        ddof: "Delta Degrees of Freedom": the divisor used in the calculation is N - ddof,
            where N represents the number of elements. By default ddof is 1.
    r  )r   r  cov)r  r  r  s      r   r  r  j  s     bffQ-..r    	separatorr(  c               H    t        t        j                  | g|||d      S )Nr  )r   r  
concat_str)r  r  r(  
more_exprss       r   r  r  v  s)     
eYjYILY r   c                @    t        t        j                  | g|       S )zFormat expressions as a string.)r   r  format)f_stringr  s     r   r  r    s    bii04011r   c                @    t        t        j                  | g|       S r   )r   r  coalesce)r  r  s     r   r   r     s    bkk%5*566r   c                    | j                   S )a  Level of support Narwhals has for current object.

    Arguments:
        obj: Dataframe or Series.

    Returns:
        This can be one of

            - 'full': full Narwhals API support
            - 'lazy': only lazy operations are supported. This excludes anything
              which involves iterating over rows in Python.
            - 'interchange': only metadata operations are supported (`df.schema`)
    )rf  r]  s    r   	get_levelr    s      ::r   c                  &    e Zd Zedd       ZddZy)Whenc                *     | |j                   d      S )Nr   )chain)
_predicate)r   whens     r   	from_whenzWhen.from_when  s    4??"--r   c                f    g | j                   | j                  |f}t        j                  |      S r   )_chainr  Then_from_chain)r   r  	new_chains      r   thenz	When.then  s/    <dkk<DOOU#;<		**r   N)r  z	nw_f.Whenr   r  )r  z&IntoExpr | NonNestedLiteral | _1DArrayr   r  )r   r   r   r   r	  r  r   r   r   r  r    s    . .+r   r  c                  (     e Zd ZddZd fdZ xZS )r  c                ,    t        |d| j                  iS )Nr  )r  r  )r   
predicatess     r   r  z	Then.when  s    Z3t{{33r   c                4    t        t        | 	  |            S r   )r   r   	otherwise)r   otherwise_valuer   s     r   r  zThen.otherwise  s    %'+O<==r   r  IntoExpr | Iterable[IntoExpr]r   r  )r  zIntoExpr | NonNestedLiteralr   r$   )r   r   r   r  r  r   r   s   @r   r  r    s    4> >r   r  c                 L    t         j                  t        j                  |        S r   )r  r	  nw_fr  )r  s    r   r  r    s    >>$))Z011r   )required)r   native_namespacec               J    t        d|      }t        t        | |||            S )a=  Instantiate Narwhals Series from iterable (e.g. list or array).

    See `narwhals.new_series` for full docstring. Note that `native_namespace` is
    an is the same as `backend` but only accepts module types - for new code, we
    recommend using `backend`, as that's available beyond just `narwhals.stable.v1`.
    r   r   )r
   r   r%   )r   r  r  r   r  s        r   
new_seriesr    s(     .8G&tVUGLMMr   c               Z    t        d|      }t        t        j                  | |            S )aJ  Construct a DataFrame from an object which supports the PyCapsule Interface.

    See `narwhals.from_arrow` for full docstring. Note that `native_namespace` is
    an is the same as `backend` but only accepts module types - for new code, we
    recommend using `backend`, as that's available beyond just `narwhals.stable.v1`.
    r   r   )r
   r   r  r   )r   r   r  s      r   r   r     s'     .8GdoolGDEEr   c               D    t        t        j                  | ||            S )a#  Instantiate DataFrame from dictionary.

    See `narwhals.from_dict` for full docstring. Note that `native_namespace` is
    an is the same as `backend` but only accepts module types - for new code, we
    recommend using `backend`, as that's available beyond just `narwhals.stable.v1`.
    r   )r   r  r   r   r   r   r  s       r   r   r     s     dnnT67CDDr   r   r   c               \    t        d|      }t        t        j                  | ||            S )a)  Construct a DataFrame from a NumPy ndarray.

    See `narwhals.from_numpy` for full docstring. Note that `native_namespace` is
    an is the same as `backend` but only accepts module types - for new code, we
    recommend using `backend`, as that's available beyond just `narwhals.stable.v1`.
    r   r   )r
   r   r  r   r   s       r   r   r     s)     .8GdoodFGDEEr   c               \    t        d|      }t        t        j                  | fd|i|      S )a  Read a CSV file into a DataFrame.

    See `narwhals.read_csv` for full docstring. Note that `native_namespace` is
    an is the same as `backend` but only accepts module types - for new code, we
    recommend using `backend`, as that's available beyond just `narwhals.stable.v1`.
    r   r   )r
   r   r  read_csvsourcer   r  r   s       r   r#  r#    s/     .8GdmmFFGFvFGGr   c               \    t        d|      }t        t        j                  | fd|i|      S )a  Lazily read from a CSV file.

    See `narwhals.scan_csv` for full docstring. Note that `native_namespace` is
    an is the same as `backend` but only accepts module types - for new code, we
    recommend using `backend`, as that's available beyond just `narwhals.stable.v1`.
    IntoBackend[Backend]r   )r
   r   r  scan_csvr$  s       r   r(  r(    s/     )73GdmmFFGFvFGGr   c               \    t        d|      }t        t        j                  | fd|i|      S )a*  Read into a DataFrame from a parquet file.

    See `narwhals.read_parquet` for full docstring. Note that `native_namespace` is
    an is the same as `backend` but only accepts module types - for new code, we
    recommend using `backend`, as that's available beyond just `narwhals.stable.v1`.
    r   r   )r
   r   r  read_parquetr$  s       r   r*  r*  !  s1     .8Gd''JJ6JKKr   c               \    t        d|      }t        t        j                  | fd|i|      S )a   Lazily read from a parquet file.

    See `narwhals.scan_parquet` for full docstring. Note that `native_namespace` is
    an is the same as `backend` but only accepts module types - for new code, we
    recommend using `backend`, as that's available beyond just `narwhals.stable.v1`.
    r'  r   )r
   r   r  scan_parquetr$  s       r   r,  r,  3  s1     )73Gd''JJ6JKKr   c                 >    t        t        j                  | i |      S )a  Collect columns into a struct column.

    Arguments:
        *exprs: Column(s) to collect into a struct column, specified as
            positional arguments. Accepts only expression input. Strings are parsed
            as column names, other non-expression inputs are not allowed.
        **named_exprs: Additional columns to collect into the struct column,
            specified as keyword arguments. The columns will be renamed to the
            keyword used.
    )r   r  struct)r  named_exprss     r   r.  r.  E  s     dkk58K899r   )Yr-   r.   r/   r0   r    r1   r2   r3   r4   r5   r$   r6   r7   r8   r9   r   r:   r;   r<   r=   r>   r"   r!   r?   r@   r(   r)   rA   rB   rC   rD   rE   rF   rG   rH   rI   r   r  r  r   r  r&   r  r  r  r*   r+   r   r  r  r   r   r   rn  r   r   r  rS   r   r   r  r  r  r  r   r   r   r   r   r  r  r  r  r  r  r  r  r#  r*  r(  r,  r,   r'   r.  r  r  r  rT   r  )r^  zNwDataFrame[IntoDataFrameT]r   DataFrame[IntoDataFrameT])r^  zNwLazyFrame[IntoLazyFrameT]r   LazyFrame[IntoLazyFrameT])r^  zNwSeries[IntoSeriesT]r   Series[IntoSeriesT])r^  rh  r   r$   )r^  zZNwDataFrame[IntoDataFrameT] | NwLazyFrame[IntoLazyFrameT] | NwSeries[IntoSeriesT] | NwExprr   zRDataFrame[IntoDataFrameT] | LazyFrame[IntoLazyFrameT] | Series[IntoSeriesT] | Expr)rl  rQ   rm  Unpack[OnlySeries]r   rQ   )rl  rQ   rm  Unpack[OnlySeriesStrict]r   rQ   )rl  rQ   rm  Unpack[AllowSeries]r   rQ   )rl  rQ   rm  Unpack[AllowSeriesStrict]r   rQ   )rl  rJ   rm  Unpack[ExcludeSeries]r   rJ   )rl  rJ   rm  Unpack[ExcludeSeriesStrict]r   rJ   )rl  rP   rm  Unpack[AllowLazy]r   rP   )rl  rP   rm  Unpack[AllowLazyStrict]r   rP   )rl  rK   rm  zUnpack[OnlyEagerOrInterchange]r   r0  )rl  rK   rm  z$Unpack[OnlyEagerOrInterchangeStrict]r   r0  )rl  rK   rm  r7  r   r0  )rl  rK   rm  r8  r   r0  )rl  rO   rm  r3  r   r2  )rl  rO   rm  r4  r   r2  )rl  IntoDataFrameT | IntoSeriesTrm  r5  r   /DataFrame[IntoDataFrameT] | Series[IntoSeriesT])rl  r;  rm  r6  r   r<  )rl  rM   rm  r9  r   r1  )rl  rM   rm  r:  r   r1  )rl  -IntoDataFrameT | IntoLazyFrameT | IntoSeriesTrm  zUnpack[AllowAny]r   KDataFrame[IntoDataFrameT] | LazyFrame[IntoLazyFrameT] | Series[IntoSeriesT])rl  r=  rm  zUnpack[AllowAnyStrict]r   r>  )rl  r   rm  zUnpack[PassThroughUnknown]r   r   )rl  r   rm  zUnpack[StrictUnknown]r   r   )rl  r   r  r   r  r   r  r   r  r   r  rZ  r   r   )rl  zJIntoDataFrameT | IntoLazyFrameT | IntoFrame | IntoSeriesT | IntoSeries | Tr  rZ  r  rZ  r  r   r  r   r  r   r  rZ  rm  r   r   zOLazyFrame[IntoLazyFrameT] | DataFrame[IntoDataFrameT] | Series[IntoSeriesT] | T)r  r0  r  Literal[True] | Noner   rK   )r  r1  r  r?  r   rM   )r  r2  r  r?  r   rO   )r  r   r  r   r   r   )r  r0  r  Literal[False] | Noner   rK   )r  r1  r  r@  r   rM   )r  r2  r  r@  r   rO   )r  r   r  r   r   r   )r  r>  r  rZ  r  rZ  r   z3IntoLazyFrameT | IntoDataFrameT | IntoSeriesT | Anyr   )r  zCallable[..., Any] | Noner  rZ  r  rZ  r  r   r  r   r  r   r  rZ  r   r  )r   r$   )r  zstr | Iterable[str]r   r$   )r  zint | Sequence[int]r   r$   )r  rz   r  r+  r   r$   )r  r   r   r$   )r  r  r   r$   )r  r  r(  r   r   r$   )pearson)r  rx   r  rx   r  zLiteral['pearson', 'spearman']r   r$   )r  rx   r  rx   r  r	  r   r$   )
r  r  r  rx   r  r   r(  r   r   r$   )r  r   r  rx   r   r$   )r  r  r  rx   r   r$   )r^  z5DataFrame[Any] | LazyFrame[Any] | Series[IntoSeriesT]r   r   r  )r   r   r  r   r  r+  r   r   r  ModuleType | Noner   r   )r   rf   r   r   r  rB  r   r   )
r   r   r   r   r   r   r  rB  r   r   )
r   r   r   r   r   r   r  rB  r   r   )
r%  rv   r   r   r  rB  r   r   r   r   )
r%  rv   r   zIntoBackend[Backend] | Noner  rB  r   r   r   r   )r  zIntoExpr | Sequence[IntoExpr]r/  rx   r   r$   )
__future__r   	functoolsr   typingr   r   r   r	   r
   r   narwhalsr  r   r   r  narwhals._exceptionsr   narwhals._expression_parsingr   r   r   narwhals._typing_compatr   r   r  r   r   r   r   r   r   r   r   r   r   r   r   narwhals.dataframer    r   r!   r  narwhals.exceptionsr"   r#   narwhals.exprr$   rh  narwhals.functionsr%   r&   r'   narwhals.schemar(   NwSchemanarwhals.seriesr)   r-  narwhals.stable.v1r*   r+   r,   narwhals.stable.v1.dtypesr-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   narwhals.stable.v1.typingrJ   rK   rL   rM   rN   rO   rP   rQ   narwhals.translaterR   rS   rT   collections.abcrU   rV   rW   rX   typesrY   typing_extensionsrZ   r[   r\   r]   narwhals._translater^   AllowAnyStrictr_   AllowAnyr`   AllowLazyStrictra   	AllowLazyrb   AllowSeriesStrictrc   AllowSeriesrd   ExcludeSeriesStrictre   ExcludeSeriesrf   rg   rh   ri   OnlySeriesStrictrj   
OnlySeriesrk   PassThroughUnknownrl   StrictUnknownnarwhals._typingrm   rn   ro   rp   rq   rr   rs   rt   ru   narwhals.typingrv   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r   r   r   rn  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r   r   r   __annotations__r   r#  r(  r*  r,  r.  __all__r   r   r   <module>ri     s   "  E E  2 . D D 9    R M ( F F . . > >       >	 	 	 U TEE 999    "   H   	S!A#AAA-N+ A-H1
N+ 1
hR<Xk" R<ja
6 a
HX  
 R 
 R	 R 
 R	 F 
 F	 ( 
 (

 X" 
 S 
 S	 Y 
 Y	 T 
 T	 Z 
 Z	'< 
 
'B 
 
 X 
 X	'> 
 
$!$+I$$ 
$ 
$!$+O$$ 
$ 
$!$+@$$ 
$ 
$!$+F$$ 
$ 
(: 
 
(@ 
 
:/:9L:4: 
: 
:/:9R:4: 
: 
$!$+<$$ 
$ 
$!$+B$$ 
$ 
V@VJZVPV 
V 
V@V"V QV 
V 
 O 
 O	 J 
 J 
 ',  	
  $   	 
&  $&+ $++ + + +  $+ + + + U+\ 
RU.;O 
 
RU.;O 
 
LO(5I 
 
 @ 
 @	 +.. ( 	 

 
 +.. ( 	 

 
SV(;P 
 
 F 
 F  $DD
 D D 9D. '+B  $&+ $B
#B B 	B
 B  $B B B BJ &*( ,(()+(1
 AFL)L9=L	L AFL)L9=L	L211
 HQ
4
4
4&D
4	
4 23 	/ 	(  	
 
2
7	>+&+499 +>499d >2 T* #N
 15*.N
NN N
 .N (N N +N$ T* 15*.	F F .F (	F
 F +F   BFE 15*.E
E>E .	E
 (E E E  ((
E ( T* 15F 15*.F
F-F .	F
 (F F +F" T* 15*.	HH .H (	H
 H H +H" T* ,0*.	HH )H (	H
 H H +H" T* 15*.	LL .L (	L
 L L +L" T* ,0*.	LL )L (	L
 L L +L":Zr   