
    bio                    ,   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
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/m0Z1 d dl2m3Z3m4Z4m5Z5 d dl6m7Z8 d dl9m:Z; d dl<m=Z=m>Z>m?Z? d dl@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[m\Z\ d dl]m^Z^m_Z_m`Z`maZambZbmcZcmdZdmeZe d dlfmgZgmhZhmiZi erd dljmkZkmlZlmmZm 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+ea         Z* G d% d&e;ec         Z: G d' d(e1      Z0 G d) d*e8      Z7e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                  e0      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       Zg dZy)    )annotationswraps)TYPE_CHECKINGAnyCallable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)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      V/home/cdr/jupyterlab/.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   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   Literal[True]r   zdict[str, Series[Any]])r   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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   NwLazyFramer   r   r   r   r   r   r   r  r  r   r   s   @r   r"   r"     s    * *  
 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__9  s-     '**,,,u-r   Nc               B    t         |   ||||      }t        d|      S Nr   r   r   r   r   valuesdtyper   r   r   s         r   r   zSeries.from_numpyC  s*     #D&%#IM6**r   c               B    t         |   ||||      }t        d|      S r  )r   from_iterabler   r  s         r   r  zSeries.from_iterableO  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_frame_  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_countsb  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.histp  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*   6  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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   r4  z	Expr.head  #      (*G*GST!UVVr   c                X    | j                  t        t        j                  d|            S )r   r   r5  r6  r9  s     r   r   z	Expr.tail  r:  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   r6  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   UserWarningr7  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  rB  )r7  r   r   WINDOW)r   rC  rD  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r7  r   r   ORDERABLE_AGGREGATIONr   s    r   rH  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_minrI  r   s    r   rM  zExpr.arg_min  rK  r   c                T    | j                  t        t        j                  d            S )z/Find elements where boolean expression is True.arg_truer6  r   s    r   rO  zExpr.arg_true  s       (*G*G!TUUr   )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   rP  rQ  rR  )r7  r   r   rA  )r   r   rP  rQ  rR  s        r   rT  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$   r7  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   )rC  r   rD  r   r   rZ   r   )
r   r.  rP  zfloat | NonerQ  r   rR  r.  r   rZ   )r*  r   r   rZ   )r   r   r   r   r4  r   r  r?  r  rH  rM  rO  rT  r,  r   r   s   @r   r%   r%     s    'WW	
 7; J */5 
VVV 
 "&!&

 	

 
 
 

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     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  .  rx  r   c                     y r   r   rk  s     r   rn  rn  2       r   c                     y r   r   rk  s     r   rn  rn  6  r}  r   c                     y r   r   rk  s     r   rn  rn  :       7:r   c                     y r   r   rk  s     r   rn  rn  >  r  r   c                     y r   r   rk  s     r   rn  rn  B  rx  r   c                     y r   r   rk  s     r   rn  rn  F  rx  r   c                     y r   r   rk  s     r   rn  rn  J  s	     SVr   c                     y r   r   rk  s     r   rn  rn  N  s	     SVr   c                     y r   r   rk  s     r   rn  rn  S  s    LOr   c                     y r   r   rk  s     r   rn  rn  U  s    GJr   F)eager_or_interchange_onlyc                    y r   r   )rl  pass_through
eager_onlyr  series_onlyallow_seriess         r   rn  rn  Z  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  f  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  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   argr   valuevbbackendsr(  r   r  r  r  funcr  r  s             r   wrapperz.narwhalify.<locals>.decorator.<locals>.wrapper  s     
  !-).G +!-
D 
* $*<<>
  D% k!-).G +!- 
F 
 342&--/2 $:DAAAA H  !A%w o%4*6*F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  )  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  1  s    bii)**r   c                 8    t        t        j                  |        S r   )r   r  sumr  s    r   r  r  5  r  r   c                 8    t        t        j                  |        S r   )r   r  sum_horizontalexprss    r   r  r  9      b''/00r   r)  c                >    t        t        j                  |d| i      S Nr*  )r   r  all_horizontalr*  r  s     r   r  r  =       b''J\JKKr   c                >    t        t        j                  |d| i      S r  )r   r  any_horizontalr  s     r   r  r  C  r  r   c                 8    t        t        j                  |        S r   )r   r  mean_horizontalr  s    r   r  r  I  s    b((%011r   c                 8    t        t        j                  |        S r   )r   r  min_horizontalr  s    r   r  r  M  r  r   c                 8    t        t        j                  |        S r   )r   r  max_horizontalr  s    r   r  r  Q  r  r    	separatorr*  c               H    t        t        j                  | g|||d      S )Nr  )r   r  
concat_str)r  r  r*  
more_exprss       r   r  r  U  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  e  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  i  s      ::r   c                  2     e Zd Zedd       Zd fdZ xZS )Whenc                &     | |j                         S r   )
_predicate)r   whens     r   	from_whenzWhen.from_when}  s    4??##r   c                H    t         j                  t        |   |            S r   )Then	from_thenr   thenr   r  r   s     r   r  z	When.then  s    ~~egl5122r   )r  z	nw_f.Whenr   r  )r  &IntoExpr | NonNestedLiteral | _1DArrayr   r  )r   r   r   r   r  r  r   r   s   @r   r  r  |  s    $ $3 3r   r  c                  2     e Zd Zedd       Zd fdZ xZS )r  c                      | |j                    S r   )ri  )r   r  s     r   r   zThen.from_then  s    DKK  r   c                4    t        t        | 	  |            S r   )r   r   	otherwiser  s     r   r  zThen.otherwise  s    %'+E233r   )r  z	nw_f.Thenr   r  )r  r  r   r%   )r   r   r   r   r   r  r   r   s   @r   r  r    s    ! !4 4r   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   )Ur.   r/   r0   r1   r!   r2   r3   r4   r5   r6   r%   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   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  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   r  )rl  rK   rm  z$Unpack[OnlyEagerOrInterchangeStrict]r   r  )rl  rK   rm  r%  r   r  )rl  rK   rm  r&  r   r  )rl  rO   rm  r!  r   r   )rl  rO   rm  r"  r   r   )rl  IntoDataFrameT | IntoSeriesTrm  r#  r   /DataFrame[IntoDataFrameT] | Series[IntoSeriesT])rl  r)  rm  r$  r   r*  )rl  rM   rm  r'  r   r  )rl  rM   rm  r(  r   r  )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  rX  r   r   )rl  zJIntoDataFrameT | IntoLazyFrameT | IntoFrame | IntoSeriesT | IntoSeries | Tr  rX  r  rX  r  r   r  r   r  r   r  rX  rm  r   r   zOLazyFrame[IntoLazyFrameT] | DataFrame[IntoDataFrameT] | Series[IntoSeriesT] | T)r  r  r  r   r   rK   )r  r  r  r   r   rM   )r  r   r  r   r   rO   )r  r   r  r   r   r   )r  r  r  r   r   rK   )r  r  r  r   r   rM   )r  r   r  r   r   rO   )r  r   r  r   r   r   )r  r,  r  rX  r  rX  r   z3IntoLazyFrameT | IntoDataFrameT | IntoSeriesT | Anyr   )r  zCallable[..., Any] | Noner  rX  r  rX  r  r   r  r   r  r   r  rX  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  r-  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-  r   r   r  ModuleType | Noner   r   )r   re   r   r   r  r.  r   r   )
r   r   r   z#Mapping[str, DType] | Schema | Noner   r   r  r.  r   r   )
r   r   r   r   r   r   r  r.  r   r   )
r  rv   r   r   r  r.  r   r   r   r   )
r  rv   r   zIntoBackend[Backend] | Noner  r.  r   r   r   r   )
__future__r   	functoolsr   typingr   r   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)   r[  narwhals.seriesr*   r/  narwhals.stable.v1r+   r,   r-   narwhals.stable.v1.dtypesr.   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   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   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   __annotations__r   r  r  r  r  __all__r   r   r   <module>rU     s   "  O O O  2 . D D 9    R M ( F F . . > >       <	 	 	 U T;; 999    "   H%   	S!A#AAA-N+ A-H/
N+ /
dR<Xk" R<jY
6 Y
x!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+\ 
KN.;H 
 
KN.;H 
 
EH(5B 
 
 @ 
 @	RU.AO 
 
RU.AO 
 
LO(;I 
 
 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	>+&3499 34499d 4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"Vr   