
    O3j                    4   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[ d dl\m]Z]m^Z^m_Z_m`Z`maZambZbmcZcmdZd d dlemfZfmgZgmhZh erd dlimjZjmkZkmlZlmmZm d dlnmoZo d dlpmqZqmrZrmsZs d dlmtZt d dlumvZwmxZymzZ{m|Z}m~ZmZmZmZmZmZmZmZmZmZmZ d dlmZmZmZmZmZmZmZ d dl&mZmZ d dlmZ d dlmZmZmZmZmZmZmZmZmZmZ  ede      Z eqd      Z ed       Z G d! d"e(e^         Z' G d# d$e*e`         Z) G d% d&e:eb         Z9 G d' d(e0      Z/ G d) d*e7      Z6e
dd+       Ze
dd,       Ze
dd-       Ze
dd.       Z	 	 	 	 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
ddE       Ze
dFdG	 	 	 	 	 	 	 	 	 	 	 	 	 ddH       ZdddFdFdFddI	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddJZe
dKdL	 	 	 	 	 ddM       Ze
dKdL	 	 	 	 	 ddN       Ze
dKdL	 	 	 	 	 ddO       Ze
ddP       Ze
dKdQ	 	 	 	 	 ddR       Ze
dKdQ	 	 	 	 	 ddS       Ze
dKdQ	 	 	 	 	 ddT       Ze
ddU       ZdddV	 	 	 	 	 	 	 ddWZ	 ddddFdFdFdXdI	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddYZddZZdd[Zdd\Zdd]Zdd^Zddd_Zdd`ZddaZddbZddcZdddZddeZdFdf	 	 	 	 	 ddgZdFdf	 	 	 	 	 ddhZddiZddjZddkZdldFdm	 	 	 	 	 	 	 	 	 ddnZddoZddpZ	 	 	 	 ddqZ G dr dsej                        Z G dt duej                  e/      ZddvZ edXw      	 ddddx	 	 	 	 	 	 	 	 	 	 	 ddy       Z edXw      dddx	 	 	 	 	 	 	 ddz       Z e       	 ddddx	 	 	 	 	 	 	 	 	 dd{       Ze'j                  Zd|ed}<    edXw      	 ddddx	 	 	 	 	 	 	 	 	 dd~       Z edXw      dddx	 	 	 	 	 	 	 	 	 dd       Z edXw      dddx	 	 	 	 	 	 	 	 	 dd       Z edXw      dddx	 	 	 	 	 	 	 	 	 dd       Z edXw      dddx	 	 	 	 	 	 	 	 	 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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)DType)

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      H/DATA/.local/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   re   r   IntoBackend[EagerAllowed]r   r   r   )r   Mapping[str, Any]r   .IntoSchema | Mapping[str, DType | None] | Noner    IntoBackend[EagerAllowed] | Noner   r   )r   zSequence[Any]r   r   r   r   r   r   )r   r   r   3Mapping[str, DType] | Schema | 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   rZ   )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   rZ   )__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       sa   zzH* * .).7P.	. .  BF.
 59.. ?.
 2. 
. .  BF.. ?.
 +. 
. .  GK.. D.
 +. 
. . 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   rZ   r   r   r	  r   r	  r   rZ   )index)r   r   r  zstr | Sequence[str] | Noner   rZ   )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   rZ   )rA  r   rB  r   r   rZ   r   )
r   r,  rR  zfloat | NonerS  r   rT  r,  r   rZ   )r(  r   r   rZ   )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                  X     e Zd Zej                  Z ee      	 d	 	 	 d fd       Z xZ	S )r(   c                $    t         |   |       y r   )r   r   )r   r   r   s     r   r   zSchema.__init__  s     	 r   r   )r   z8Mapping[str, DType] | Iterable[tuple[str, DType]] | Noner   r   )
r   r   r   r   r   r   r   NwSchemar   r   r   s   @r   r(   r(     s6    zzHQU!N!	! !r   r(   c                     y r   r   objs    r   r   r         ORr   c                     y r   r   r_  s    r   r   r     ra  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_nativerp    s    PSr   c                     y r   r   rm  s     r   rp  rp    s    VYr   c                     y r   r   rm  s     r   rp  rp    s    QTr   c                     y r   r   rm  s     r   rp  rp    r   r   c                     y r   r   rm  s     r   rp  rp         r   c                     y r   r   rm  s     r   rp  rp  "  ru  r   c                     y r   r   rm  s     r   rp  rp  &  s    UXr   c                     y r   r   rm  s     r   rp  rp  (  ru  r   c                     y r   r   rm  s     r   rp  rp  ,       !$r   c                     y r   r   rm  s     r   rp  rp  0  rz  r   c                     y r   r   rm  s     r   rp  rp  4  rz  r   c                     y r   r   rm  s     r   rp  rp  8  rz  r   c                     y r   r   rm  s     r   rp  rp  <       r   c                     y r   r   rm  s     r   rp  rp  @  r  r   c                     y r   r   rm  s     r   rp  rp  D       7:r   c                     y r   r   rm  s     r   rp  rp  H  r  r   c                     y r   r   rm  s     r   rp  rp  L  rz  r   c                     y r   r   rm  s     r   rp  rp  P  rz  r   c                     y r   r   rm  s     r   rp  rp  T  s	     SVr   c                     y r   r   rm  s     r   rp  rp  X  s	     SVr   c                     y r   r   rm  s     r   rp  rp  ]  s    LOr   c                     y r   r   rm  s     r   rp  rp  _  s    GJr   F)eager_or_interchange_onlyc                    y r   r   )rn  pass_through
eager_onlyr  series_onlyallow_seriess         r   rp  rp  d  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	TypeErrorrQ   r   r   )	rn  r  r  r  r  r  r  ro  r&  s	            r   rp  rp  p  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    rd  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  )rp  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(     
  C !-).G +!-    
* $*<<>
 $2KD% k!-).G +!-  $2  
 978Y%5%5%788A $:DAAAA 8   !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  3  r  r   c                 8    t        t        j                  |        S r   )r   r  maxr  s    r   r  r  7  r  r   c                 8    t        t        j                  |        S r   )r   r  meanr  s    r   r  r  ;  s    bggw'((r   c                 8    t        t        j                  |        S r   )r   r  medianr  s    r   r  r  ?  s    bii)**r   c                 8    t        t        j                  |        S r   )r   r  sumr  s    r   r  r  C  r  r   c                 8    t        t        j                  |        S r   )r   r  sum_horizontalexprss    r   r  r  G      b''/00r   r'  c                >    t        t        j                  |d| i      S Nr(  )r   r  all_horizontalr(  r  s     r   r  r  K       b''J\JKKr   c                >    t        t        j                  |d| i      S r  )r   r  any_horizontalr  s     r   r  r  Q  r  r   c                 8    t        t        j                  |        S r   )r   r  mean_horizontalr  s    r   r  r  W  s    b((%011r   c                 8    t        t        j                  |        S r   )r   r  min_horizontalr  s    r   r  r  [  r  r   c                 8    t        t        j                  |        S r   )r   r  max_horizontalr  s    r   r  r  _  r  r    	separatorr(  c               H    t        t        j                  | g|||d      S )Nr  )r   r  
concat_str)r  r  r(  
more_exprss       r   r  r  c  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  n  s    bii04011r   c                @    t        t        j                  | g|       S r   )r   r  coalesce)r  r  s     r   r  r  s  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`)
    )rh  r_  s    r   	get_levelr  w  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y)r  N)r   r   r   r   r   r   r  r    s    r   r  c                 L    t         j                  t        j                  |        S r   )r  r  nw_fr  )
predicatess    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     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"  -  s     dkk58K899r   )Vr-   r.   r/   r0   r    r1   r2   r3   r4   r5   r$   r6   r7   r8   r   r9   r:   r;   r<   r=   r"   r!   r>   r?   r(   r)   r@   rA   rB   rC   rD   rE   rF   rG   rH   r   r  r  r  r  r&   r  r*   r+   r   r  r  r   r   r   rp  r   r   r  rR   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  rS   r  )r`  zNwDataFrame[IntoDataFrameT]r   DataFrame[IntoDataFrameT])r`  zNwLazyFrame[IntoLazyFrameT]r   LazyFrame[IntoLazyFrameT])r`  zNwSeries[IntoSeriesT]r   Series[IntoSeriesT])r`  rj  r   r$   )r`  zZNwDataFrame[IntoDataFrameT] | NwLazyFrame[IntoLazyFrameT] | NwSeries[IntoSeriesT] | NwExprr   zRDataFrame[IntoDataFrameT] | LazyFrame[IntoLazyFrameT] | Series[IntoSeriesT] | Expr)rn  rP   ro  Unpack[OnlySeries]r   rP   )rn  rP   ro  Unpack[OnlySeriesStrict]r   rP   )rn  rP   ro  Unpack[AllowSeries]r   rP   )rn  rP   ro  Unpack[AllowSeriesStrict]r   rP   )rn  rI   ro  Unpack[ExcludeSeries]r   rI   )rn  rI   ro  Unpack[ExcludeSeriesStrict]r   rI   )rn  rO   ro  Unpack[AllowLazy]r   rO   )rn  rO   ro  Unpack[AllowLazyStrict]r   rO   )rn  rJ   ro  zUnpack[OnlyEagerOrInterchange]r   r$  )rn  rJ   ro  z$Unpack[OnlyEagerOrInterchangeStrict]r   r$  )rn  rJ   ro  r+  r   r$  )rn  rJ   ro  r,  r   r$  )rn  rN   ro  r'  r   r&  )rn  rN   ro  r(  r   r&  )rn  IntoDataFrameT | IntoSeriesTro  r)  r   /DataFrame[IntoDataFrameT] | Series[IntoSeriesT])rn  r/  ro  r*  r   r0  )rn  rL   ro  r-  r   r%  )rn  rL   ro  r.  r   r%  )rn  -IntoDataFrameT | IntoLazyFrameT | IntoSeriesTro  zUnpack[AllowAny]r   KDataFrame[IntoDataFrameT] | LazyFrame[IntoLazyFrameT] | Series[IntoSeriesT])rn  r1  ro  zUnpack[AllowAnyStrict]r   r2  )rn  r   ro  zUnpack[PassThroughUnknown]r   r   )rn  r   ro  zUnpack[StrictUnknown]r   r   )rn  r   r  r   r  r   r  r   r  r   r  rZ  r   r   )rn  zJIntoDataFrameT | IntoLazyFrameT | IntoFrame | IntoSeriesT | IntoSeries | Tr  rZ  r  rZ  r  r   r  r   r  r   r  rZ  ro  r   r   zOLazyFrame[IntoLazyFrameT] | DataFrame[IntoDataFrameT] | Series[IntoSeriesT] | T)r  r$  r  Literal[True] | Noner   rJ   )r  r%  r  r3  r   rL   )r  r&  r  r3  r   rN   )r  r   r  r   r   r   )r  r$  r  Literal[False] | Noner   rJ   )r  r%  r  r4  r   rL   )r  r&  r  r4  r   rN   )r  r   r  r   r   r   )r  r2  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  IntoExpr | Iterable[IntoExpr]r   r$   )r  r5  r(  r   r   r$   )
r  r5  r  rx   r  r   r(  r   r   r$   )r  r   r  rx   r   r$   )r  r5  r  rx   r   r$   )r`  z5DataFrame[Any] | LazyFrame[Any] | Series[IntoSeriesT]r   r   )r  r5  r   r  )r   r   r  r   r  r+  r   r   r  ModuleType | Noner   r   )r   re   r   r   r  r6  r   r   )
r   r   r   z#Mapping[str, DType] | Schema | Noner   r   r  r6  r   r   )
r   r   r   r   r   r   r  r6  r   r   )
r  rv   r   r   r  r6  r   r   r   r   )
r  rv   r   zIntoBackend[Backend] | Noner  r6  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$   rj  narwhals.functionsr%   r&   r'   narwhals.schemar(   r]  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   narwhals.stable.v1.typingrI   rJ   rK   rL   rM   rN   rO   rP   narwhals.translaterQ   rR   rS   collections.abcrT   rU   rV   rW   typesrX   typing_extensionsrY   rZ   r[   r\   narwhals._translater]   AllowAnyStrictr^   AllowAnyr_   AllowLazyStrictr`   	AllowLazyra   AllowSeriesStrictrb   AllowSeriesrc   ExcludeSeriesStrictrd   ExcludeSeriesre   rf   rg   rh   OnlySeriesStrictri   
OnlySeriesrj   PassThroughUnknownrk   StrictUnknownnarwhals._typingrl   rm   rn   ro   rp   rq   rr   rs   rt   narwhals.dtypesru   narwhals.typingrv   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r   r   r   rp  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>r]     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 	(  	
 
2
7	>+&+499 + !499d  2 T* #N
 15*.N
NN N
 .N (N N +N$ T* 15*.	F F .F (	F
 F +F   37E 15*.E
E/E .	E
 (E E E  ((
E ( T* CG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":Wr   