
    }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dd2            Zedd5            Zedd7            Zdd:Zedd?            ZeddA            ZeddC            ZeddE            ZeddH            ZeddJ            ZeddM            ZeddO            ZeddR            ZeddT            ZeddU            ZeddV            ZeddX            ZeddY            Zedd\            Zedd]            Zedd_            Zedd`            Zeddd            Zed df            Zeddh            Zeddj            Zedkdlddu            ZdddkdkdkddvddzZed{d|dd            Zed{d|dd            Zed{d|dd            Zedd            Zed{dd	d            Zed{dd
d            Zed{ddd            Zedd            ZdddddZ	 ddddkdkdkddvddZddZddZddZddZddZdddZddZddZddZddZddZddZdkdddZdkdddZddZddZddZddkdddZddZddZddZ G d dej                  Z G d dej        e0          ZŐddZ edæ          	 ddddĜdd̄            Z edæ          dddĜddЄ            Z e            	 ddddĜddՄ            Ze(j        Zded<    edæ          	 ddddĜddڄ            Z edæ          dddĜd dބ            Z edæ          dddĜd!d            Z edæ          dddĜd d            Z edæ          dddĜd!d            ZАd"dZg dZdS (#      )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          dF fd            Ze	dG fd            Z
e		 dHdddI fd            Ze		 dHdJ fd            Ze		 dHdK fd            ZedLd            ZedMd            ZedNd!            ZedOd$            ZedPd'            ZdQ fd*ZdR fd.Z	 dHdd/dS fd4Zed5d6dTd:            ZedUd=            Zed>d6dVdA            Zd>d6dV fdBZdW fdCZdW fdDZdXdEZ xZS )Yr!   dfr   level&Literal['full', 'lazy', 'interchange']returnNonec               x    |j         t          j        u sJ t                                          ||           d S N)r   _versionr   V1super__init__selfr   r   	__class__s      O/home/jrussi/.local/lib/python3.11/site-packages/narwhals/stable/v1/__init__.pyr   zDataFrame.__init__   ;    {gj((((5)))))    native_framere   backendIntoBackend[EagerAllowed]DataFrame[Any]c               j    t                                          ||          }t          d|          S Nr   r   )r   
from_arrowr   )clsr   r   resultr   s       r   r   zDataFrame.from_arrow   s2     ##L'#BB$f---r   Nr   dataMapping[str, Any]schema.IntoSchema | Mapping[str, DType | None] | None IntoBackend[EagerAllowed] | Nonec               l    t                                          |||          }t          d|          S r   )r   	from_dictr   r   r   r   r   r   r   s        r   r   zDataFrame.from_dict   s4     ""4"AA$f---r   Sequence[Any]c               l    t                                          |||          }t          d|          S r   )r   
from_dictsr   r   s        r   r   zDataFrame.from_dicts   4     ##D&'#BB$f---r   r   3Mapping[str, DType] | Schema | Sequence[str] | Nonec               l    t                                          |||          }t          d|          S r   r   
from_numpyr   r   s        r   r   zDataFrame.from_numpy   r   r   type[Series[Any]]c                ,    t          dt                    S )Nr   )r   r*   r   s    r   _serieszDataFrame._series   s    '000r   type[LazyFrame[Any]]c                ,    t          dt                    S )Nr   )r   r"   r   s    r   
_lazyframezDataFrame._lazyframe   s    *I666r   item-tuple[SingleIndexSelector, SingleColSelector]c                    d S N r   r   s     r   __getitem__zDataFrame.__getitem__       WZWZr   2str | tuple[MultiIndexSelector, SingleColSelector]Series[Any]c                    d S r   r   r   s     r   r   zDataFrame.__getitem__   s	     cr   SingleIndexSelector | MultiIndexSelector | MultiColSelector | tuple[SingleIndexSelector, MultiColSelector] | tuple[MultiIndexSelector, MultiColSelector]rZ   c                    d S r   r   r   s     r   r   zDataFrame.__getitem__   s	     sr     SingleIndexSelector | SingleColSelector | MultiColSelector | MultiIndexSelector | tuple[SingleIndexSelector, SingleColSelector] | tuple[SingleIndexSelector, MultiColSelector] | tuple[MultiIndexSelector, SingleColSelector] | tuple[MultiIndexSelector, MultiColSelector]Series[Any] | Self | Anyc                F    t                                          |          S r   )r   r   )r   r   r   s     r   r   zDataFrame.__getitem__   s     ww""4(((r   namestrr*   c                F    t                                          |          S r   )r   
get_column)r   r   r   s     r   r   zDataFrame.get_column   s     ww!!$'''r   )sessionIntoBackend[LazyAllowed] | Noner   
Any | NoneLazyFrame[Any]c               d    t          t                                          ||                    S )N)r   r   )
_stableifyr   lazy)r   r   r   r   s      r   r   zDataFrame.lazy   s'     %'',,w,HHIIIr   .	as_seriesr   Literal[True]dict[str, Series[Any]]c                   d S r   r   r   r   s     r   to_dictzDataFrame.to_dict   s    TWTWr   Literal[False]dict[str, list[Any]]c                   d S r   r   r   s     r   r   zDataFrame.to_dict   s    MPSr   Tbool-dict[str, Series[Any]] | dict[str, list[Any]]c                   d S r   r   r   s     r   r   zDataFrame.to_dict   s	     9<r   c               H    t                                          |          S )Nr   )r   r   )r   r   r   s     r   r   zDataFrame.to_dict   s    
 ww333r   c                ^    t          t                                                                S r   )r   r   is_duplicatedr   r   s    r   r   zDataFrame.is_duplicated   s!    %''//11222r   c                ^    t          t                                                                S r   )r   r   	is_uniquer   s    r   r   zDataFrame.is_unique   s!    %''++--...r   c                h    |                      t                                                                S r   selectall_l1_normr   s    r   r   zDataFrame._l1_norm   "    {{355>>++,,,r   r   r   r   r   r   r   )r   re   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   )r   r   )r   r   r   r   )r   r   r   r   )r   r   r   rZ   )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   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!      s%       zH[* * * * * * . . . . . [.  BF.
 59. . . . . . . [.  BF. . . . . . [.  GK. . . . . . [. 1 1 1 X1 7 7 7 X7 ZZZ XZ   X 	 	 	 X	) ) ) ) ) )( ( ( ( ( ( 48J #	J J J J J J J J 47WWWWW XWPPP XP#'< < < < < X< $(4 4 4 4 4 4 4 43 3 3 3 3 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"   r   r   r   r   r   r   c               x    |j         t          j        u sJ t                                          ||           d S r   r   r   s      r   r   zLazyFrame.__init__  r   r   type[DataFrame[Any]]c                    t           S r   r!   r   s    r   
_dataframezLazyFrame._dataframe      r   metadatar\   c                    d S r   r   )r   r   s     r   _validate_metadatazLazyFrame._validate_metadata  s    r   Nr   +IntoBackend[Polars | Pandas | Arrow] | Nonekwargsr   c                T    t           t                      j        dd|i|          S )Nr   r   )r   r   collect)r   r   r  r   s      r   r  zLazyFrame.collect  s.     /%''/DD'DVDDEEEr   rZ   c                h    |                      t                                                                S r   r   r   s    r   r   zLazyFrame._l1_norm  r   r      nintc                F    t                                          |          S )Get the last `n` rows.)r   tail)r   r  r   s     r   r
  zLazyFrame.tail  s    ww||Ar   r   offsetc                `    |                      | 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  r  )_with_compliant_compliant_framegather_everyr   r  r  s      r   r  zLazyFrame.gather_every!  s5     ##!..6.BB
 
 	
r   index)order_byr   r   r  str | Sequence[str] | Nonec                   t          |t                    r|gn|}|                     | j                            ||                    S )N)r   r  )
isinstancer   r  r  with_row_index)r   r   r  	order_by_s       r   r  zLazyFrame.with_row_index,  sW     #-Xs";";IXJJ	##!00" 1  
 
 	
r   r   r   r   )r   r\   r   r   r   )r   r   r  r   r   r   r   )r  r  r  r   rZ   r   r  r  r  r  r   rZ   )r  )r   r   r  r  r   rZ   )r   r   r   r   r   r   r   NwLazyFramer   r   r   r   r  r   r
  r  r  r   r   s   @r   r"   r"     s9       zH[* * * * * *    X   
 FJF F F F F F F
- - - -      	
 	
 	
 	
 	
 "	
MQ	
 	
 	
 	
 	
 	
 	
 	
 	
 	
r   r"   c                       e Zd Zej        Z ee          d- fd            Ze		 d.d/ fd            Z
e		 d.d0 fd            Zed1d            Zd2 fdZdddddd3 fd Z	 d.dd!d"d4 fd(Zdd)d5 fd,Z xZS )6r*   seriesr   r   r   r   r   c               x    |j         t          j        u sJ t                                          ||           d S r   r   )r   r  r   r   s      r   r   zSeries.__init__;  s=     '*,,,,u-----r   Nr   r   valuesr~   dtypeIntoDType | Noner   r   r   c               n    t                                          ||||          }t          d|          S Nr   r   r   r   r   r!  r"  r   r   r   s         r   r   zSeries.from_numpyE  s5     ##D&%#IIM6***r   Iterable[Any]c               n    t                                          ||||          }t          d|          S r%  )r   from_iterabler   r&  s         r   r)  zSeries.from_iterableQ  s5     &&tVUG&LLM6***r   r   c                    t           S r   r   r   s    r   r   zSeries._dataframe]  r   r   r   c                ^    t          t                                                                S r   )r   r   to_framer   s    r   r,  zSeries.to_framea  s!    %''**,,---r   Fsortparallelr   	normalizer.  r   r/  
str | Noner0  c               h    t          t                                          ||||                    S )Nr-  )r   r   value_counts)r   r.  r/  r   r0  r   s        r   r3  zSeries.value_countsd  s<     GG  H49 !  
 
 	
r   T)	bin_countinclude_breakpointbinslist[float] | Noner4  
int | Noner5  c                   d}t          |t                     t          t                                          |||                    S )NzZ`Series.hist` is being called from the stable API although considered an unstable feature.)r6  r4  r5  )r   r$   r   r   hist)r   r6  r4  r5  msgr   s        r   r:  zSeries.histr  sT    # 	 	c2333GGLLYCU   
 
 	
r   ignore_nullsr=  r{   c               v    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33ww  l ;;;r   )r  r   r   r   r   r   r   )
r   r   r!  r~   r"  r#  r   r   r   r   )
r   r   r!  r'  r"  r#  r   r   r   r   r  )r   r   )
r.  r   r/  r   r   r1  r0  r   r   r   )r6  r7  r4  r8  r5  r   r   r   )r=  r   r   r{   )r   r   r   r   r   r   r   NwSeriesr   r   r   r)  r   r   r,  r3  r:  r?  r   r   s   @r   r*   r*   8  s       zH[. . . . . . 
 #'		+ 	+ 	+ 	+ 	+ 	+ [	+ 
 #'		+ 	+ 	+ 	+ 	+ 	+ [	+    X. . . . . . 
 
 
 
 
 
 
 
  $(
 !%#'
 
 
 
 
 
 
 
$ 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 )0r%   r   rZ   c                D    t                                                      S r   )r   _taxicab_normr   s    r   r   zExpr._l1_norm  s    ww$$&&&r   
   r  r  c                `    |                      t          t          j        d|                    S )zGet the first `n` rows.headr  _append_noder   r   ORDERABLE_FILTRATIONr   r  s     r   rF  z	Expr.head  )      (*GST!U!U!UVVVr   c                `    |                      t          t          j        d|                    S )r	  r
  rG  rH  rK  s     r   r
  z	Expr.tail  rL  r   r   r  c                b    |                      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  rH  r  s      r   r  zExpr.gather_every  s4       X2NaPVWWW
 
 	
r   N)maintain_orderrO  bool | Nonec                   |d}t          |t                     |                     t          t          j        d                    S )z(Return unique values of this expression.Nzx`maintain_order` has no effect and is only kept around for backwards-compatibility. You can safely remove this argument.unique)r   UserWarningrI  r   r   
FILTRATION)r   rO  r;  s      r   rR  zExpr.unique  sE    %7  #{+++  (*=x!H!HIIIr   F
descending
nulls_lastrV  r   rW  c               b    |                      t          t          j        d||                    S )z*Sort this column. Place null values first.r.  rU  )rI  r   r   WINDOW)r   rV  rW  s      r   r.  z	Expr.sort  s7      J:  
 
 	
r   c                \    |                      t          t          j        d                    S )z'Returns the index of the maximum value.arg_maxrI  r   r   ORDERABLE_AGGREGATIONr   s    r   r[  zExpr.arg_max  #      (*H)!T!TUUUr   c                \    |                      t          t          j        d                    S )z'Returns the index of the minimum value.arg_minr\  r   s    r   r`  zExpr.arg_min  r^  r   c                \    |                      t          t          j        d                    S )z/Find elements where boolean expression is True.arg_truerH  r   s    r   rb  zExpr.arg_true  s#      (*G!T!TUUUr   c                \    |                      t          t          j        d                    S )zGet the first value.firstr\  r   s    r   rd  z
Expr.first  s#      (*H'!R!RSSSr   c                \    |                      t          t          j        d                    S )zGet the last value.lastr\  r   s    r   rf  z	Expr.last  s#      (*H&!Q!QRRRr   )fractionwith_replacementseedr8  rg  float | Nonerh  ri  c          
     f    |                      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  rg  rh  ri  )rI  r   r   rT  )r   r  rg  rh  ri  s        r   rl  zExpr.sample  sC    "   #!!1  	
 	
 		
r   r<  r=  c                   d}t          |t                     |                     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$   rI  r   r   AGGREGATION)r   r=  r;  s      r   r?  zExpr.any_value  sL    # 	 	c2333  X);\RRR
 
 	
r   r   )rD  r  r  r  )rO  rP  r   rZ   )rV  r   rW  r   r   rZ   r   )
r  r8  rg  rj  rh  r   ri  r8  r   rZ   )r=  r   r   rZ   )r   r   r   r   rF  r
  r  rR  r.  r[  r`  rb  rd  rf  rl  r?  r   r   s   @r   r%   r%     s       ' ' ' ' ' 'W W W W WW W W W W	
 	
 	
 	
 	
 7; J J J J J J */5 
 
 
 
 
 
V V V VV V V VV V V VT T T TS S S S 
 "&!&
 
 
 
 
 
8 16 
 
 
 
 
 
 
 
 
 
r   r%   c                  T     e Zd Zej        Z ee          	 dd fd            Z xZ	S )	r)   Nr   8Mapping[str, DType] | Iterable[tuple[str, DType]] | Noner   r   c                J    t                                          |           d S r   )r   r   )r   r   r   s     r   r   zSchema.__init__  s#     	     r   r   )r   rp  r   r   )
r   r   r   r   r   r   r   NwSchemar   r   r   s   @r   r)   r)     sa        zH[QU! ! ! ! ! ! ! ! ! ! !r   r)   objNwDataFrame[IntoDataFrameT]r   DataFrame[IntoDataFrameT]c                    d S r   r   rs  s    r   r   r         ORsr   NwLazyFrame[IntoLazyFrameT]LazyFrame[IntoLazyFrameT]c                    d S r   r   rw  s    r   r   r     rx  r   NwSeries[IntoSeriesT]Series[IntoSeriesT]c                    d S r   r   rw  s    r   r   r         CF3r   NwExprc                    d S r   r   rw  s    r   r   r     s    %(Sr   ZNwDataFrame[IntoDataFrameT] | NwLazyFrame[IntoLazyFrameT] | NwSeries[IntoSeriesT] | NwExprRDataFrame[IntoDataFrameT] | LazyFrame[IntoLazyFrameT] | Series[IntoSeriesT] | Exprc                8   t          | t                    r8t          | j                            t
          j                  | j                  S t          | t                    r8t          | j                            t
          j                  | j                  S t          | t                    r8t          | j                            t
          j                  | j                  S t          | t                    rt          | j         S t!          |            d S r   )r  r   r!   r  _with_versionr   r   _levelr  r"   r@  r*   _compliant_seriesr  r%   _nodesr   rw  s    r   r   r     s     #{## [-;;GJGGszZZZZ#{## [-;;GJGGszZZZZ#x   Yc+99'*EESZXXXX#v !SZ  r   native_objectrQ   kwdsUnpack[OnlySeries]c                    d S r   r   r  r  s     r   from_nativer    s    PSPSr   Unpack[OnlySeriesStrict]c                    d S r   r   r  s     r   r  r    s    VYVYr   Unpack[AllowSeries]c                    d S r   r   r  s     r   r  r    s    QTQTr   Unpack[AllowSeriesStrict]c                    d S r   r   r  s     r   r  r    r   r   rJ   Unpack[ExcludeSeries]c                    d S r   r   r  s     r   r  r    	     r   Unpack[ExcludeSeriesStrict]c                    d S r   r   r  s     r   r  r  "  r  r   rP   Unpack[AllowLazy]c                    d S r   r   r  s     r   r  r  &  s    UXUXr   Unpack[AllowLazyStrict]c                    d S r   r   r  s     r   r  r  (  r  r   rK   Unpack[OnlyEagerOrInterchange]c                    d S r   r   r  s     r   r  r  ,  	     !$r   $Unpack[OnlyEagerOrInterchangeStrict]c                    d S r   r   r  s     r   r  r  0  r  r   c                    d S r   r   r  s     r   r  r  4  r  r   c                    d S r   r   r  s     r   r  r  8  r  r   rO   c                    d S r   r   r  s     r   r  r  <  	     #r   c                    d S r   r   r  s     r   r  r  @  r  r   IntoDataFrameT | IntoSeriesT/DataFrame[IntoDataFrameT] | Series[IntoSeriesT]c                    d S r   r   r  s     r   r  r  D  	     7:cr   c                    d S r   r   r  s     r   r  r  H  r  r   rM   c                    d S r   r   r  s     r   r  r  L  r  r   c                    d S r   r   r  s     r   r  r  P  r  r   -IntoDataFrameT | IntoLazyFrameT | IntoSeriesTUnpack[AllowAny]KDataFrame[IntoDataFrameT] | LazyFrame[IntoLazyFrameT] | Series[IntoSeriesT]c                    d S r   r   r  s     r   r  r  T  s     SVRUr   Unpack[AllowAnyStrict]c                    d S r   r   r  s     r   r  r  X  s     SVRUr   Unpack[PassThroughUnknown]c                    d S r   r   r  s     r   r  r  ]  s    LOCr   Unpack[StrictUnknown]c                    d S r   r   r  s     r   r  r  _  s    GJsr   F)eager_or_interchange_onlyr   pass_throughr   
eager_onlyr  series_onlyallow_seriesrP  c                   d S r   r   )r  r  r  r  r  r  s         r   r  r  d  s	     #r   )strictr  r  r  r  r  JIntoDataFrameT | IntoLazyFrameT | IntoFrame | IntoSeriesT | IntoSeries | Tr  OLazyFrame[IntoLazyFrameT] | DataFrame[IntoDataFrameT] | Series[IntoSeriesT] | Tc          	     <   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   )	r  r  r  r  r  r  r  r  r;  s	            r   r  r  p  s    . -)Y!788  -(( k \ 25  L  V$tDzzBRBRVVnn!";!
   r   .)r  narwhals_objectr   c                   d S r   r   r  r  s     r   	to_nativer    	     Sr   c                   d S r   r   r  s     r   r  r    r  r   c                   d S r   r   r  s     r   r  r    	     #r   c                   d S r   r   r  s     r   r  r    s    =@Sr   r  r   c                   d S r   r   r  r  s     r   r  r    r  r   c                   d S r   r   r  s     r   r  r    r  r   c                   d S r   r   r  s     r   r  r    r  r   c                   d S r   r   r  s     r   r  r    r  r   )r  r  3IntoLazyFrameT | IntoDataFrameT | IntoSeriesT | Anyc               V    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    sL     @?????225  L <lCCCCr   TfuncCallable[..., Any] | NoneCallable[..., Any]c               b    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  r  r  r   c                J     t                     d fd            }|S )Nargsr   r  r   c                 @   	
fd| D             }	
fd|                                 D             }fdg ||                                R D             }|                                dk    rd}t          |           |i |}t	          |          S )Nc           
     :    g | ]}t          |           S )r  r  r  r  r  r  ).0argr  r  r  r  r  s     r   
<listcomp>zBnarwhalify.<locals>.decorator.<locals>.wrapper.<locals>.<listcomp>  sL     
 
 
  !-).G +!-  
 
 
r   c                B    i | ]\  }}|t          |           S r  r  )r  r   valuer  r  r  r  r  s      r   
<dictcomp>zBnarwhalify.<locals>.decorator.<locals>.wrapper.<locals>.<dictcomp>  sR     
 
 
  D% k!-).G +!-  
 
 
r   c                J    h | ]}t          |d d          x              S )__native_namespace__N)getattr)r  vbs     r   	<setcomp>zAnarwhalify.<locals>.decorator.<locals>.wrapper.<locals>.<setcomp>  sG        $:DAAAA  r      z_Found multiple backends. Make sure that all dataframe/series inputs come from the same backend.r  )itemsr!  __len__
ValueErrorr  )r  r  args_nw	kwargs_nwbackendsr;  r   r  r  r  r  r  r  r  s          @r   wrapperz.narwhalify.<locals>.decorator.<locals>.wrapper  s   
 
 
 
 
 
 
 
  
 
 
G
 
 
 
 
 
 
 
 $*<<>>
 
 
I   878Y%5%5%7%788  H !!A%%w oo%T70i00FV,????r   )r  r   r  r   r   r   r   )r  r  r  r  r  r  r  s   ` r   	decoratorznarwhalify.<locals>.decorator  s^    	t%	@ %	@ %	@ %	@ %	@ %	@ %	@ %	@ %	@ %	@ 
%	@N r   N)r  r  r   r  r  )r  r  r  r  r  r  r  r  s     ````` r   
narwhalifyr    sr      34  L) ) ) ) ) ) ) ) ) )V |9T??r   c                 B    t          t          j                              S r   )r   r  r   r   r   r   r   r         bfhhr   namesstr | Iterable[str]c                 8    t          t          j        |            S r   )r   r  colr  s    r   r  r    s    bfen%%%r   c                 8    t          t          j        |            S r   )r   r  excluder  s    r   r  r    s    bj%()))r   indicesint | Sequence[int]c                 8    t          t          j        |            S r   )r   r  nth)r  s    r   r	  r	  #      bfg&'''r   c                 B    t          t          j                              S r   )r   r  lenr   r   r   r  r  '  r  r   r  rz   r"  r#  c                F    t          t          j        | |                    S r   )r   r  lit)r  r"  s     r   r  r  +  s    bfUE**+++r   columnsr   c                 8    t          t          j        |            S r   )r   r  minr  s    r   r  r  /  r
  r   c                 8    t          t          j        |            S r   )r   r  maxr  s    r   r  r  3  r
  r   c                 8    t          t          j        |            S r   )r   r  meanr  s    r   r  r  7  s    bgw'(((r   c                 8    t          t          j        |            S r   )r   r  medianr  s    r   r  r  ;  s    bi)***r   c                 8    t          t          j        |            S r   )r   r  sumr  s    r   r  r  ?  r
  r   exprsIntoExpr | Iterable[IntoExpr]c                 8    t          t          j        |            S r   )r   r  sum_horizontalr  s    r   r  r  C      b'/000r   r<  r=  c                >    t          t          j        |d| i          S Nr=  )r   r  all_horizontalr=  r  s     r   r#  r#  G  "     b'J\JJKKKr   c                >    t          t          j        |d| i          S r"  )r   r  any_horizontalr$  s     r   r'  r'  M  r%  r   c                 8    t          t          j        |            S r   )r   r  mean_horizontalr  s    r   r)  r)  S  s    b(%0111r   c                 8    t          t          j        |            S r   )r   r  min_horizontalr  s    r   r+  r+  W  r   r   c                 8    t          t          j        |            S r   )r   r  max_horizontalr  s    r   r-  r-  [  r   r    	separatorr=  
more_exprsrx   r0  c               H    t          t          j        | g|R ||d          S )Nr/  )r   r  
concat_str)r  r0  r=  r1  s       r   r3  r3  _  s5     
eYjYYILYYY  r   f_stringr  c                @    t          t          j        | g|R            S )zFormat expressions as a string.)r   r  format)r4  r  s     r   r6  r6  j  s"    bi04000111r   c                @    t          t          j        | g|R            S r   )r   r  coalesce)r  r1  s     r   r8  r8  o  s"    bk%5*555666r   5DataFrame[Any] | LazyFrame[Any] | Series[IntoSeriesT]r   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`)
    )r  rw  s    r   	get_levelr;  s  s      :r   c                  .    e Zd Zed
d            ZddZd	S )Whenwhen	nw_f.Whenr   c                &     | |j         d          S )Nr   )chain)
_predicate)r   r>  s     r   	from_whenzWhen.from_when  s    s4?"----r   r  &IntoExpr | NonNestedLiteral | _1DArrayThenc                \    g | j         | j        |fR }t                              |          S r   )_chainrB  rE  _from_chain)r   r  	new_chains      r   thenz	When.then  s1    <dk<DOU#;<<		***r   N)r>  r?  r   r=  )r  rD  r   rE  )r   r   r   r   rC  rJ  r   r   r   r=  r=    sF        . . . [.+ + + + + +r   r=  c                      e Zd ZdS )rE  N)r   r   r   r   r   r   rE  rE    s          r   rE  
predicatesc                 N    t                               t          j        |            S r   )r=  rC  nw_fr>  )rL  s    r   r>  r>    s    >>$)Z0111r   )required)r   native_namespacer   r!  r   r   rP  ModuleType | Noner   c               b    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   rP  s        r   
new_seriesrS    s4     .88G&tVUGLLLMMMr   r   re   r   c               h    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   rN  r   )r   r   rP  s      r   r   r     s1     .88GdolGDDDEEEr   r   r   r   #Mapping[str, DType] | Schema | Nonec               J    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   rN  r   r   r   r   rP  s       r   r   r     s#     dnT67CCCDDDr   r	   r   r   r   c               j    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   rN  r   rW  s       r   r   r     s3     .88GdodFGDDDEEEr   sourcerv   r  c               d    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   rN  read_csvrY  r   rP  r  s       r   r[  r[    s9     .88GdmFFFGFvFFGGGr   IntoBackend[Backend] | Noner   c               d    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   rN  scan_csvr\  s       r   r`  r`    s9     )733GdmFFFGFvFFGGGr   c               d    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   rN  read_parquetr\  s       r   rb  rb    s:     .88Gd'JJJ6JJKKKr   c               d    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   rN  scan_parquetr\  s       r   rd  rd    s:     )733Gd'JJJ6JJKKKr   IntoExpr | Sequence[IntoExpr]named_exprsc                 >    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   rN  struct)r  rf  s     r   rh  rh  )  s!     dk58K88999r   )Vr.   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'  r8  r  r'   r3  r+   r,   r   r  r6  r   r   r   r  r   r   r;  rS   r   r   r  r  r  r-  r   r   r   r   r   r  r)  r  r  r+  r  rS  r	  r[  rb  r`  rd  r-   r(   rh  r  r  r  rT   r>  )rs  rt  r   ru  )rs  ry  r   rz  )rs  r|  r   r}  )rs  r  r   r%   )rs  r  r   r  )r  rQ   r  r  r   rQ   )r  rQ   r  r  r   rQ   )r  rQ   r  r  r   rQ   )r  rQ   r  r  r   rQ   )r  rJ   r  r  r   rJ   )r  rJ   r  r  r   rJ   )r  rP   r  r  r   rP   )r  rP   r  r  r   rP   )r  rK   r  r  r   ru  )r  rK   r  r  r   ru  )r  rK   r  r  r   ru  )r  rK   r  r  r   ru  )r  rO   r  r  r   r}  )r  rO   r  r  r   r}  )r  r  r  r  r   r  )r  r  r  r  r   r  )r  rM   r  r  r   rz  )r  rM   r  r  r   rz  )r  r  r  r  r   r  )r  r  r  r  r   r  )r  r   r  r  r   r   )r  r   r  r  r   r   )r  r   r  r   r  r   r  r   r  r   r  rP  r   r   )r  r  r  rP  r  rP  r  r   r  r   r  r   r  rP  r  r   r   r  )r  ru  r  r   r   rK   )r  rz  r  r   r   rM   )r  r}  r  r   r   rO   )r  r   r  r   r   r   )r  ru  r  r   r   rK   )r  rz  r  r   r   rM   )r  r}  r  r   r   rO   )r  r   r  r   r   r   )r  r  r  rP  r  rP  r   r  r   )r  r  r  rP  r  rP  r  r   r  r   r  r   r  rP  r   r  )r   r%   )r  r   r   r%   )r  r  r   r%   )r  rz   r"  r#  r   r%   )r  r   r   r%   )r  r  r   r%   )r  r  r=  r   r   r%   )
r  r  r1  rx   r0  r   r=  r   r   r%   )r4  r   r  rx   r   r%   )r  r  r1  rx   r   r%   )rs  r9  r   r   )rL  r  r   r=  )r   r   r!  r   r"  r#  r   r   rP  rQ  r   r   )r   re   r   r   rP  rQ  r   r   )
r   r   r   rU  r   r   rP  rQ  r   r   )
r   r   r   r   r   r   rP  rQ  r   r   )
rY  rv   r   r   rP  rQ  r  r   r   r   )
rY  rv   r   r]  rP  rQ  r  r   r   r   )r  re  rf  rx   r   r%   )
__future__r   	functoolsr   typingr   r   r   r	   r
   r   r   narwhalsr  r   r   rN  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%   r  narwhals.functionsr&   r'   r(   narwhals.schemar)   rr  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   r  r  r  r   r  r  r	  r  r  r  r  r  r  r  r  r#  r'  r)  r+  r-  r3  r6  r8  r;  r=  rE  r>  rS  r   r   r   __annotations__r   r[  r`  rb  rd  rh  __all__r   r   r   <module>r     s   " " " " " " "       O O O O O O O O O O O O O O O O O O     2 2 2 2 2 2 2 2 . . . . . . D D D D D D D D D D 9 9 9 9 9 9 9 9                            R Q Q Q Q Q Q Q M M M M M M M M ( ( ( ( ( ( F F F F F F F F F F . . . . . . . . . . . . > > > > > > > > > >                                                           <	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 U T T T T T T T T T 2;;;;;;;;;;      9999999999999999                                 "                  HGGGGGGG%%%%%%                        	S!!!A	#AAA- A- A- A- A-N+ A- A- A-H1
 1
 1
 1
 1
N+ 1
 1
 1
hR< R< R< R< R<Xk" R< R< R<ja
 a
 a
 a
 a
6 a
 a
 a
H! ! ! ! !X ! ! ! 
 R R R 
 R	 R R R 
 R	 F F F 
 F	 ( ( ( 
 (   " 
 S S S 
 S	 Y Y Y 
 Y	 T T T 
 T	 Z Z Z 
 Z	   
 
   
 
 X X X 
 X	   
 
$ $ $ 
$ 
$ $ $ 
$ 
$ $ $ 
$ 
$ $ $ 
$ 
   
 
   
 
: : : 
: 
: : : 
: 
$ $ $ 
$ 
$ $ $ 
$ 
V V V 
V 
V V V 
V 
 O O O 
 O	 J J J 
 J 
 ',     
&  $&+ $+ + + + + +\ 
KN     
 
KN     
 
EH     
 
 @ @ @ 
 @	RU     
 
RU     
 
LO     
 
 F F F 
 F  $D D D D D D. '+B  $&+ $B B B B B BJ       & & & &* * * *( ( ( (       , , , , ,( ( ( (( ( ( () ) ) )+ + + +( ( ( (1 1 1 1
 AFL L L L L L AFL L L L L L2 2 2 21 1 1 11 1 1 1 	     2 2 2 2
7 7 7 7   &+ + + + +49 + + + !        49d      2 2 2 2 T*** #N
 15*.N N N N N +*N$ T*** 15*.	F F F F F +*F   37E 15*.E E E E E E  (
 ( ( ( ( T*** CGF 15*.F F F F F +*F" T*** 15*.	H H H H H +*H" T*** ,0*.	H H H H H +*H" T*** 15*.	L L L L L +*L" T*** ,0*.	L L L L L +*L": : : :W W Wr   