
    [iʎ                    ,   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      l/var/www/html/userprofiledev.eatanceapp.com/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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   c                T    | j                  t        t        j                  d            S )zGet the first value.firstrI  r   s    r   rQ  z
Expr.first  s       (*H*H'!RSSr   c                T    | j                  t        t        j                  d            S )zGet the last value.lastrI  r   s    r   rS  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   rT  rU  rV  )r7  r   r   rA  )r   r   rT  rU  rV  s        r   rX  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.  rT  zfloat | NonerU  r   rV  r.  r   rZ   )r*  r   r   rZ   )r   r   r   r   r4  r   r  r?  r  rH  rM  rO  rQ  rS  rX  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   ra  s    r   r   r     rc  r   c                     y r   r   ra  s    r   r   r         CFr   c                     y r   r   ra  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   ra  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_nativerr    s    PSr   c                     y r   r   ro  s     r   rr  rr    s    VYr   c                     y r   r   ro  s     r   rr  rr    s    QTr   c                     y r   r   ro  s     r   rr  rr    r   r   c                     y r   r   ro  s     r   rr  rr         r   c                     y r   r   ro  s     r   rr  rr     rw  r   c                     y r   r   ro  s     r   rr  rr  $  s    UXr   c                     y r   r   ro  s     r   rr  rr  &  rw  r   c                     y r   r   ro  s     r   rr  rr  *       !$r   c                     y r   r   ro  s     r   rr  rr  .  r|  r   c                     y r   r   ro  s     r   rr  rr  2  r|  r   c                     y r   r   ro  s     r   rr  rr  6  r|  r   c                     y r   r   ro  s     r   rr  rr  :       r   c                     y r   r   ro  s     r   rr  rr  >  r  r   c                     y r   r   ro  s     r   rr  rr  B       7:r   c                     y r   r   ro  s     r   rr  rr  F  r  r   c                     y r   r   ro  s     r   rr  rr  J  r|  r   c                     y r   r   ro  s     r   rr  rr  N  r|  r   c                     y r   r   ro  s     r   rr  rr  R  s	     SVr   c                     y r   r   ro  s     r   rr  rr  V  s	     SVr   c                     y r   r   ro  s     r   rr  rr  [  s    LOr   c                     y r   r   ro  s     r   rr  rr  ]  s    GJr   F)eager_or_interchange_onlyc                    y r   r   )rp  pass_through
eager_onlyr  series_onlyallow_seriess         r   rr  rr  b  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   )	rp  r  r  r  r  r  r  rq  r(  s	            r   rr  rr  n  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    rf  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  )rr  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%     
  C !-).G +!-    
* $*<<>
 $2KD% k!-).G +!-  $2  
 342&--/22A $:DAAAA 2   !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  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    	separatorr*  c               H    t        t        j                  | g|||d      S )Nr  )r   r  
concat_str)r  r  r*  
more_exprss       r   r  r  ]  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  h  s    bii04011r   c                @    t        t        j                  | g|       S r   )r   r  coalesce)r  r  s     r   r  r  m  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`)
    )rj  ra  s    r   	get_levelr  q  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   )rm  )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   rr  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   )rb  zNwDataFrame[IntoDataFrameT]r   DataFrame[IntoDataFrameT])rb  zNwLazyFrame[IntoLazyFrameT]r   LazyFrame[IntoLazyFrameT])rb  zNwSeries[IntoSeriesT]r   Series[IntoSeriesT])rb  rl  r   r%   )rb  zZNwDataFrame[IntoDataFrameT] | NwLazyFrame[IntoLazyFrameT] | NwSeries[IntoSeriesT] | NwExprr   zRDataFrame[IntoDataFrameT] | LazyFrame[IntoLazyFrameT] | Series[IntoSeriesT] | Expr)rp  rQ   rq  Unpack[OnlySeries]r   rQ   )rp  rQ   rq  Unpack[OnlySeriesStrict]r   rQ   )rp  rQ   rq  Unpack[AllowSeries]r   rQ   )rp  rQ   rq  Unpack[AllowSeriesStrict]r   rQ   )rp  rJ   rq  Unpack[ExcludeSeries]r   rJ   )rp  rJ   rq  Unpack[ExcludeSeriesStrict]r   rJ   )rp  rP   rq  Unpack[AllowLazy]r   rP   )rp  rP   rq  Unpack[AllowLazyStrict]r   rP   )rp  rK   rq  zUnpack[OnlyEagerOrInterchange]r   r"  )rp  rK   rq  z$Unpack[OnlyEagerOrInterchangeStrict]r   r"  )rp  rK   rq  r)  r   r"  )rp  rK   rq  r*  r   r"  )rp  rO   rq  r%  r   r$  )rp  rO   rq  r&  r   r$  )rp  IntoDataFrameT | IntoSeriesTrq  r'  r   /DataFrame[IntoDataFrameT] | Series[IntoSeriesT])rp  r-  rq  r(  r   r.  )rp  rM   rq  r+  r   r#  )rp  rM   rq  r,  r   r#  )rp  -IntoDataFrameT | IntoLazyFrameT | IntoSeriesTrq  zUnpack[AllowAny]r   KDataFrame[IntoDataFrameT] | LazyFrame[IntoLazyFrameT] | Series[IntoSeriesT])rp  r/  rq  zUnpack[AllowAnyStrict]r   r0  )rp  r   rq  zUnpack[PassThroughUnknown]r   r   )rp  r   rq  zUnpack[StrictUnknown]r   r   )rp  r   r  r   r  r   r  r   r  r   r  r\  r   r   )rp  zJIntoDataFrameT | IntoLazyFrameT | IntoFrame | IntoSeriesT | IntoSeries | Tr  r\  r  r\  r  r   r  r   r  r   r  r\  rq  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  r0  r  r\  r  r\  r   z3IntoLazyFrameT | IntoDataFrameT | IntoSeriesT | Anyr   )r  zCallable[..., Any] | Noner  r\  r  r\  r  r   r  r   r  r   r  r\  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  r1  r*  r   r   r%   )
r  r1  r  rx   r  r   r*  r   r   r%   )r  r   r  rx   r   r%   )r  r1  r  rx   r   r%   )rb  z5DataFrame[Any] | LazyFrame[Any] | Series[IntoSeriesT]r   r   )r  r1  r   r  )r   r   r  r   r  r-  r   r   r  ModuleType | Noner   r   )r   re   r   r   r  r2  r   r   )
r   r   r   z#Mapping[str, DType] | Schema | Noner   r   r  r2  r   r   )
r   r   r   r   r   r   r  r2  r   r   )
r  rv   r   r   r  r2  r   r   r   r   )
r  rv   r   zIntoBackend[Backend] | Noner  r2  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%   rl  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   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   r   __annotations__r   r  r  r  r!  __all__r   r   r   <module>rY     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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+\ 
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   