
    g+j                       d dl mZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dlm
Z
 d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ erBd dl m!Z! d dl"Z#d dl$Z%d dl&Z'd dl(m)Z) d dl*m+Z+ d dl,m-Z- d dl.m/Z/ d dl0m1Z1 d d l2m3Z3 d d!l4m5Z5 d d"lm6Z6 d d#l4m7Z7 d d$l4m8Z8  G d% d&e7e8      Z9y)'    )annotations)chain)TYPE_CHECKING)Any)Iterable)Iterator)Literal)Sequence)overload)broadcast_series)convert_str_slice_to_int_slice)native_to_narwhals_dtype)select_rows)validate_dataframe_comparand)evaluate_into_exprs)is_numpy_array)ColumnNotFoundError)Implementation)flatten)generate_temporary_column_name)is_sequence_but_not_str)parse_columns_to_drop)scale_bytes)validate_backend_version)
ModuleTypeN)SelfArrowGroupByArrowNamespaceArrowSeries)IntoArrowExpr)DType)SizeUnit)Version)CompliantDataFrame)CompliantLazyFramec                     e Zd Z	 	 	 	 	 	 	 	 	 	 d@dZdAdZdBdZdCdZdCdZdDdZdEdZ	e
dFd       ZdGd	ZdHd
Ze	 	 	 	 	 	 dId       Ze	 	 	 	 	 	 dJd       Ze	 	 	 	 	 	 dKd       ZdKdZ	 	 	 	 	 	 	 	 dLdZdMdZdNdZedOd       ZedPd       ZedQd       ZedRd       ZedSd       Z	 	 	 	 	 	 dTdZe
dUd       ZdUdZdVdZe
dWd       Z	 	 	 	 	 	 	 	 dXdZ	 	 	 	 	 	 	 	 dXdZdYdZ	 	 	 	 	 	 	 	 	 	 	 	 	 	 dZdZ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d[d Zd\d!Zd]d"Z	 	 	 	 	 	 	 	 	 	 	 	 d^d#Zd_d$Z d`d%Z!edad&       Z"edbd'       Z"	 	 	 	 	 	 dcd(Z"ddd)Z#ded*Z$dCd+Z%dfd,Z&dfd-Z'dCd.Z(dgd/Z)dCd0Z*dhd1Z+did2Z,djd3Z-dkd4Z.dld5Z/dmd6Z0dmd7Z1d8d9	 	 	 	 	 	 	 	 	 dnd:Z2dodpd;Z3dqd<Z4	 	 	 	 	 	 	 	 	 	 	 	 drd=Z5	 	 	 	 	 	 	 	 	 	 	 	 dsd>Z6y?)tArrowDataFramec                   || _         t        j                  | _        || _        || _        t        | j                  | j                         y N)_native_framer   PYARROW_implementation_backend_version_versionr   )selfnative_dataframebackend_versionversions       N/var/www/openai/venv/lib/python3.12/site-packages/narwhals/_arrow/dataframe.py__init__zArrowDataFrame.__init__2   s?     .-55 / !5!5t7L7LM    c                J    ddl m}  || j                  | j                        S )Nr   r   r4   r5   )narwhals._arrow.namespacer    r0   r1   )r2   r    s     r6   __narwhals_namespace__z%ArrowDataFrame.__narwhals_namespace__?   s!    < 114==
 	
r8   c                    | j                   t        j                  u r| j                   j                         S dt	        | j                          }t        |      )NzExpected pyarrow, got: )r/   r   r.   to_native_namespacetypeAssertionErrorr2   msgs     r6   __native_namespace__z#ArrowDataFrame.__native_namespace__F   sN    >#9#99'';;=='T-A-A(B'CDS!!r8   c                    | S r,    r2   s    r6   __narwhals_dataframe__z%ArrowDataFrame.__narwhals_dataframe__M       r8   c                    | S r,   rE   rF   s    r6   __narwhals_lazyframe__z%ArrowDataFrame.__narwhals_lazyframe__P   rH   r8   c                R    | j                  | j                  | j                  |      S Nr:   )	__class__r-   r0   )r2   r5   s     r6   _change_versionzArrowDataFrame._change_versionS   s+    ~~0E0Ew  
 	
r8   c                R    | j                  || j                  | j                        S rL   )rM   r0   r1   )r2   dfs     r6   _from_native_framez!ArrowDataFrame._from_native_frameX   s)    ~~ 5 5t}}  
 	
r8   c                .    | j                   j                  S r,   )r-   shaperF   s    r6   rS   zArrowDataFrame.shape]   s    !!'''r8   c                ,    t        | j                        S r,   )lenr-   rF   s    r6   __len__zArrowDataFrame.__len__a   s    4%%&&r8   c                @    t        fd| j                  D              S )Nc              3  (   K   | ]	  }|     y wr,   rE   ).0colindexs     r6   	<genexpr>z%ArrowDataFrame.row.<locals>.<genexpr>e   s     >+=CSZ+=s   )tupler-   )r2   r[   s    `r6   rowzArrowDataFrame.rowd   s    >4+=+=>>>r8   c                    y r,   rE   r2   nameds     r6   rowszArrowDataFrame.rowsg   s    
  #r8   c                    y r,   rE   r`   s     r6   rb   zArrowDataFrame.rowsn   s    
 !$r8   c                    y r,   rE   r`   s     r6   rb   zArrowDataFrame.rowst   s    
 8;r8   c               r    |st        | j                  dd            S | j                  j                         S )NFi   )ra   buffer_size)list	iter_rowsr-   	to_pylistr`   s     r6   rb   zArrowDataFrame.rows{   s2    UDEE!!++--r8   c             #  6  K   | j                   }|j                  }|sGt        d||      D ]6  }||||z    j                         j	                         }t        | E d {    8 y t        d||      D ]   }||||z    j                         E d {    " y 7 87 	wNr   )r-   num_rowsrange	to_pydictvalueszipri   )r2   ra   rf   rP   rl   irb   s          r6   rh   zArrowDataFrame.iter_rows   s      ;;1h4!a+o.88:AAC:%% 5 1h4a!k/2<<>>> 5 & ?s$   ABB0BBBBc                    ddl m} t        |t              sdt	        |       }t        |       || j                  |   || j                  | j                        S )Nr   r!   zExpected str, got: namer4   r5   )	narwhals._arrow.seriesr"   
isinstancestrr?   	TypeErrorr-   r0   r1   )r2   rt   r"   rB   s       r6   
get_columnzArrowDataFrame.get_column   sW    6$$'T
|4CC. t$ 11MM	
 	
r8   c                <    | j                   j                  ||      S )N)copy)r-   	__array__)r2   dtyper{   s      r6   r|   zArrowDataFrame.__array__   s    !!++E+==r8   c                     y r,   rE   r2   items     r6   __getitem__zArrowDataFrame.__getitem__   s    WZr8   c                     y r,   rE   r   s     r6   r   zArrowDataFrame.__getitem__   s    HKr8   c                     y r,   rE   r   s     r6   r   zArrowDataFrame.__getitem__   s    ;>r8   c                     y r,   rE   r   s     r6   r   zArrowDataFrame.__getitem__   s    @Cr8   c                     y r,   rE   r   s     r6   r   zArrowDataFrame.__getitem__   s    NQr8   c           	        t        |t              rt        d |D              }t        |t              r3ddlm}  || j
                  |   || j                  | j                        S t        |t              rt        |      dk(  rt        |d         rt        |d         dk(  r:| j                  | j
                  j                  dd      j                  g             S t        | j
                  |d         }| j                  |j                  |d               S t        |t              rt        |      dk(  rt        |d   t              r| j                  }|d   t        d       k(  r|t        |d   t              r<t        |d         dk(  r+| j                  | j
                  j                  dd            S | j                  | j
                  j!                  |d               S t        |d   j"                  t              st        |d   j$                  t              rUt'        |d   |      \  }}}| j                  | j
                  j!                  |d         j                  ||||               S t        |d   j"                  t(              st        |d   j$                  t(              ri| j                  | j
                  j!                  |d         j                  ||d   j"                  |d   j$                  |d   j*                                 S dt-        |d          }t/        |      ddlm} t        |d   t              r|d   n| j                  |d      }	t        |d   t              rd}t/        |      t        |d   t              r>|d   t        d       k(  r- || j
                  |	   |	| j                  | j                        S t        | j
                  |d         } |||	   |	| j                  | j                        S t        |t              r|j*                  |j*                  dk7  rd	}t1        |      | j                  }t        |j"                  t              st        |j$                  t              r@t'        ||      \  }}}| j                  | j
                  j                  ||||               S |j"                  xs d}|j$                  |j$                  nt        | j
                        }| j                  | j
                  j                  |||z
              S t        |t              st3        |      r|j4                  dk(  rt        |t              rJt7        d
 |D              r8t        |      dkD  r*| j                  | j
                  j                  |            S t        |t              r9t        |      dk(  r+| j                  | j
                  j                  dd            S | j                  | j
                  j!                  |            S dt-        |       }t/        |      )Nc              3  L   K   | ]  }t        |      rt        |      n|  y wr,   )r   rg   )rY   rq   s     r6   r\   z-ArrowDataFrame.__getitem__.<locals>.<genexpr>   s"     Tt!$;A$>aAEts   "$r   r!   rs         z,Expected slice of integers or strings, got: z8Can not slice with tuple with the first element as a strz4Slicing with step is not supported on PyArrow tablesc              3  <   K   | ]  }t        |t                y wr,   )rv   rw   rY   xs     r6   r\   z-ArrowDataFrame.__getitem__.<locals>.<genexpr>  s     9Dq
1c*D   zExpected str or slice, got: )rv   r]   rw   ru   r"   r-   r0   r1   rU   r   rQ   sliceselectr   columnsr
   takestartstopr   intstepr?   rx   NotImplementedErrorr   ndimall)
r2   r   r"   selected_rowsr   r   r   r   rB   col_names
             r6   r   zArrowDataFrame.__getitem__   sW    dE"TtTTDdC :""4( $ 5 5	  tU#D	Q'Q047|q ..t/A/A/G/G1/M/T/TUW/XYY'(:(:DGDM**=+?+?Q+HIIe$Ta$q'5),,7eDk)!$q'84T!W9J#66t7I7I7O7OPQST7UVV2243E3E3J3J4PQ73STTd1gmmS1ZQc5R(FtAwPW(X%E422**//Q8??dSW@XY  d1gmmS1ZQc5R22**//Q8??#DGMMDGLL47<<$OP 
 ET$q']OTn$: #-T!Wc":tAwTRSW@UH$q'3'Pn$47E*aE$K1G"&&x0!$($9$9 MM	  ((:(:DGDMh' $ 5 5	  e$yy$aL)#..llG$**c*jC.H$B4$Q!tT..&&--geDo.FG  JJO!E $		 54993t?Q?Q;RD**""((u=  h'N4,@TYYRS^4*9D99IM..t/A/A/H/H/NOO$)c$i1n..t/A/A/G/G1/MNN**4+=+=+B+B4+HII 1d=CC. r8   c           	         | j                   j                  }t        |j                  |j                        D ci c]  \  }}|t        || j                         c}}S c c}}w r,   )r-   schemarp   namestypesr   r1   )r2   r   rt   r}   s       r6   r   zArrowDataFrame.schema  s^    ##**  #6<<>
>e *5$--@@>
 	
 
s   !Ac                    | j                   S r,   )r   rF   s    r6   collect_schemazArrowDataFrame.collect_schema%  s    {{r8   c                F    | j                   j                  }t        ||      S r,   )r-   nbytesr   )r2   unitszs      r6   estimated_sizezArrowDataFrame.estimated_size(  s     &&2t$$r8   c                B    | j                   j                  j                  S r,   )r-   r   r   rF   s    r6   r   zArrowDataFrame.columns,  s    !!((...r8   c                >   dd l }t        | g|i |}|s4| j                  | j                  j                  j                  g             S |D cg c]  }|j                   }}|j                  j                  t        |      |      }| j                  |      S c c}w )Nr   r   )	pyarrowr   rQ   r-   rM   from_arraysrt   Tabler   )r2   exprsnamed_exprspa
new_seriessr   rP   s           r6   r   zArrowDataFrame.select0  s    
 	(EEE
**4+=+=+G+G+S+STV+WXX!+,A,XX!!Z( " 
 &&r** -s   Bc                R   | j                   }t        | g|i |}t        |       }| j                  }|D ]`  }|j                  }t        ||| j                        }	||v r#|j                  |j                  |      ||	      n|j                  ||	      }b | j                  |      S )N)lengthotherr4   )field_column)r-   r   rU   r   rt   r   r0   
set_columnr[   append_columnrQ   )
r2   r   r   native_framenew_columnsr   r   	col_valuer   r   s
             r6   with_columnszArrowDataFrame.with_columnsB  s    
 )))$FF+FT,,$I ~~H1 $ 5 5F w& ''MM(+HV (  "//x/O  %" &&|44r8   c               6    ddl m}  || t        |      |      S )Nr   r   )drop_null_keys)narwhals._arrow.group_byr   rg   )r2   r   keysr   s       r6   group_byzArrowDataFrame.group_by`  s    9D$t*^LLr8   c                  ddddd}|dk(  r| j                         }t        dg | j                  |j                        }| j                   | j                  di ||j                  d	d       ij                  j                   |j                  di ||j                  d	d       ij                  ||d|
      j                  |g            S | j                  | j                  j                  |j                  ||||   |
            S )Nz	left antiz	left semiinner
left outer)antisemir   leftcross   n_bytesr   r   )r   
right_keys	join_typeright_suffixrE   )	r<   r   r   rQ   r   litr-   joindrop)	r2   r   howleft_onright_onsuffixhow_to_join_mapplx	key_tokens	            r6   r   zArrowDataFrame.joine  s&      	
 '>--/C6#BT\\#BEMM#BI **!!!BY40@$ABtt&E&&G)SWWQ5E)FGUU"(%!'  $   yk"
 
 &&#####)#.# $ 
 	
r8   c                   d}	t        |	      )Nz0join_asof is not yet supported on PyArrow tablesr   )
r2   r   r   r   onby_leftby_rightbystrategyrB   s
             r6   	join_asofzArrowDataFrame.join_asof  s     A!#&&r8   c                r    t        | ||      }| j                  | j                  j                  |            S )N)compliant_framer   strict)r   rQ   r-   r   )r2   r   r   to_drops       r6   r   zArrowDataFrame.drop  s7    ' '&
 &&t'9'9'>'>w'GHHr8   c                   |)| j                  | j                  j                               S t        |t              r|gn|}| j                         }| j                  |j                   |j                  | j                                      S r,   )
rQ   r-   	drop_nullrv   rw   r<   filterany_horizontalrZ   is_null)r2   subsetr   s      r6   
drop_nullszArrowDataFrame.drop_nulls  sx    >**4+=+=+G+G+IJJ'4&&))+{{C..wsww/?/G/G/IJJKKr8   c               J   t        g t        |g      |      }| j                  }t        |t              r|rdnd}|D cg c]  }||f }	}n$t	        ||      D 
cg c]  \  }}
||
rdndf }	}}
|rdnd}| j                  |j                  |	|            S c c}w c c}
}w )N
descending	ascendingat_endat_start)null_placement)r   r-   rv   boolrp   rQ   sort_by)r2   r   r   
nulls_lastmore_by	flat_keysrP   orderkeysortingis_descendingr   s               r6   sortzArrowDataFrame.sort  s     6grdm6g67	j$'$.LKE/89yU|yG9 +.i*D*D&C mlE*D  
 &0Z&&rzz'.z'YZZ :s    BBc                6    | j                   j                         S r,   )r-   	to_pandasrF   s    r6   r   zArrowDataFrame.to_pandas  s    !!++--r8   c                    dd l } |j                  | j                  j                  D cg c]  }|j	                          c}      S c c}w rk   )numpycolumn_stackr-   r   to_numpy)r2   nprZ   s      r6   r   zArrowDataFrame.to_numpy  s<    r$:L:L:T:TU:T3:TUVVUs   Ac                    y r,   rE   r2   	as_seriess     r6   to_dictzArrowDataFrame.to_dict  s    TWr8   c                    y r,   rE   r  s     r6   r  zArrowDataFrame.to_dict  s    SVr8   c               2   | j                   }t        |j                  |j                        }|r:ddlm} |D ci c]&  \  }}| |||| j                  | j                        ( c}}S |D ci c]  \  }}||j                          c}}S c c}}w c c}}w )Nr   r!   rs   )	r-   rp   column_namesr   ru   r"   r0   r1   ri   )r2   r  rP   names_and_valuesr"   rt   rZ   s          r6   r  zArrowDataFrame.to_dict  s     r

;: "2 "2ID# k$($9$9 MM	  "2  <LL;KidCD#--/);KLL Ms   +B.Bc                    dd l }| j                  }| j                  } |j                  t	        |j
                              }| j                  |j                  ||      j                  |g|            S rk   )	r   r-   r   arrayrm   rl   rQ   r   r   )r2   rt   r   rP   colsrow_indicess         r6   with_row_indexzArrowDataFrame.with_row_index  sf    ||bhhuR[[12&&T;/66}t}E
 	
r8   c                   t        |      dk(  r0t        |d   t              rt        d |d   D              r|s|d   }n^| j	                          j
                  t        |fd|j                         D               }|j                  |       d   j                  }| j                  | j                  j                  |            S )Nr   r   c              3  <   K   | ]  }t        |t                y wr,   )rv   r   r   s     r6   r\   z(ArrowDataFrame.filter.<locals>.<genexpr>  s     ?AJq$'r   c              3  L   K   | ]  \  }}j                  |      |k(    y wr,   )rZ   )rY   rt   vr   s      r6   r\   z(ArrowDataFrame.filter.<locals>.<genexpr>  s%      WCVa!!3CVs   !$)rU   rv   rg   r   r<   all_horizontalr   items_call_native_seriesrQ   r-   r   )r2   
predicatesconstraintsmaskexprr   s        @r6   r   zArrowDataFrame.filter  s    
Oq :a=$/?A??a=D--/C%3%% W;CTCTCV WD ::d#A&55D&&t'9'9'@'@'FGGr8   c           
         dd l }| j                  }t        |j                  |j                        }| j                   |j                  |D ci c]  \  }}||j                  g c}}            S c c}}w rk   )r   r-   rp   r  r   rQ   table
null_count)r2   r   rP   r	  rt   rZ   s         r6   r  zArrowDataFrame.null_count  sk    r

;&&BHH>NO>NsdS^^,,>NOP
 	
Os   A1c           
         | j                   }|dk\  r!| j                  |j                  d|            S |j                  }| j                  |j                  dt	        d||z                     S rk   )r-   rQ   r   rl   maxr2   nrP   rl   s       r6   headzArrowDataFrame.head  s_    6**288Aq>::{{H**288As1hl7K+LMMr8   c           	         | j                   }|dk\  r9|j                  }| j                  |j                  t	        d||z
                    S | j                  |j                  t        |                  S rk   )r-   rl   rQ   r   r  absr   s       r6   tailzArrowDataFrame.tail  s`    6{{H**288C8a<4H+IJJ**288CF+;<<r8   c                    | S r,   rE   rF   s    r6   lazyzArrowDataFrame.lazy  rH   r8   c                Z    t        | j                  | j                  | j                        S rL   )r*   r-   r0   r1   rF   s    r6   collectzArrowDataFrame.collect"  s(     11MM
 	
r8   c                    d}t        |      )Nz,clone is not yet supported on PyArrow tablesr   rA   s     r6   clonezArrowDataFrame.clone)  s    <!#&&r8   c                &    | j                   d   dk(  S rk   )rS   rF   s    r6   is_emptyzArrowDataFrame.is_empty-  s    zz!}!!r8   c                L   ddl m} |E|C| j                  dk7  rd| j                  }t        |       || j                  d   d   d      S ||d}t        |      t        |t              r| j                  j                  |      n|} || j                  |   |   d      S )Nr   )maybe_extract_py_scalar)r   r   zycan only call `.item()` if the dataframe is of shape (1, 1), or if explicit row/col values are provided; frame has shape T)return_py_scalarz8cannot call `.item()` with only one of `row` or `column`)	ru   r/  rS   
ValueErrorr-   rv   rw   r   r[   )r2   r^   r   r/  rB   _cols         r6   r   zArrowDataFrame.item0  s    B;6>zzV#((,

~7 
 !o%*""1%a(4  [FNLCS/!-7-Dt||!!&)&&t$S)D
 	
r8   c                    | j                   }|j                  D cg c]  }|j                  ||       }}| j                  |j	                  |            S c c}w r,   )r-   r  getrQ   rename_columns)r2   mappingrP   cnew_colss        r6   renamezArrowDataFrame.renameH  sR    /1?!GKK1%?&&r'8'8'BCC @s   Ac                H    dd l m} |j                  | j                  |       y rk   )pyarrow.parquetparquetwrite_tabler-   )r2   filepps      r6   write_parquetzArrowDataFrame.write_parquetM  s    $
t))40r8   c                    dd l }dd lm} | j                  }|O |j                         }|j                  ||       |j                         j                         j                         S |j                  ||      S rk   )	r   pyarrow.csvcsvr-   BufferOutputStream	write_csvgetvalue
to_pybytesdecode)r2   r>  r   pa_csvpa_table
csv_buffers         r6   rE  zArrowDataFrame.write_csvR  sl    $%%<...0JXz2&&(335<<>>$//r8   c           	     ~   dd l }dd lm} ddlm} | j
                  }t        d|      }t        dg ||      }| j                  |      j                  }|j                  | |j                   |j                  d      t        |                   j                  |      j                  |dfg      }|j                  |j!                  |||dd	      j#                  |      j%                  | d
      d      }	 ||	d| j&                  | j(                        }
|
j+                  |
j-                         dkD  d d       S )Nr   r!   r   r   r   sumr   F)r   r   r   use_threads_sum rs   )r   limit)r   pyarrow.computecomputeru   r"   r   r   r  r-   r   repeatscalarrU   r   	aggregategreaterr   r   r   r0   r1   	fill_nullr  )r2   r   pcr"   r   index_token	col_tokenrP   	row_countis_duplicatedress              r6   r]  zArrowDataFrame.is_duplicated]  s5   $6,,4QP2+g+{+
	
   -;; Y			)"))A,D	(JKXgYE*+, 	
 

GG"&!   W[!Vyk&'
  11MM	
 }}S^^-1D}MMr8   c                    dd l m} ddlm} | j	                         j
                  } ||j                  |      d| j                  | j                        S )Nr   r!   rP  rs   )	rR  rS  ru   r"   r]  r  invertr0   r1   )r2   rY  r"   r]  s       r6   	is_uniquezArrowDataFrame.is_unique  sH    $6**,;;IIm$ 11MM	
 	
r8   F)maintain_orderc          
         dd l }dd l}dd lm}  j                  }|1t         fd|D              rd| d j                   }t        |      |xs  j                  }|dv rdddd}	|	|   }
t        d	 j                  
      }|j                  | |j                   |j                  t                                 j                  |      j                  ||
fg      j                  | d|
       } j!                  |j#                  ||            S   j$                  | j'                         } j)                  |      S )Nr   c              3  :   K   | ]  }|j                   v  y wr,   )r   )rY   r   r2   s     r6   r\   z(ArrowDataFrame.unique.<locals>.<genexpr>  s     %LVat||&;Vs   z
Column(s) z not found in >   anylastfirstminr  )re  rg  rf  r   r   _)r   r   rR  rS  r-   re  r   r   r   r   r  arangerU   r   rV  r   rQ   r   r   ra  r   )r2   r   keeprb  r  r   rY  rP   rB   agg_func_mapagg_funcr[  keep_idxs   `            r6   uniquezArrowDataFrame.unique  s0    	$#%LV%L"LvhnT\\NCC%c**'4<<++#(5%HL#D)H6q$,,WI  HBHHYRYYs4y5I,JK&!Y1239+Qxj12	  **2772x+@AA4;;'113{{8$$r8   c                D    | j                  | j                  |d |         S r,   )rQ   r-   )r2   r!  offsets      r6   gather_everyzArrowDataFrame.gather_every  s$    &&t'9'9&)!)'DEEr8   c                    | j                   S r,   )r-   rF   s    r6   to_arrowzArrowDataFrame.to_arrow  s    !!!r8   c               0   dd l }dd lm} | j                  }t	        |       }||t        ||z        }|j                  j                  |      }	 |j                  d|      }
|	j                  |
||      }| j                  |j                  ||            S )Nr   )seed)sizereplace)r   rR  rS  r-   rU   r   randomdefault_rngrj  choicerQ   r   )r2   r!  fractionwith_replacementrv  r  rY  framerl   rngidxr  s               r6   samplezArrowDataFrame.sample  s     	$""t99-Hx'(Aii###.bii8$zz#A/?z@&&rwwud';<<r8   c                   dd l }| j                  }||nd}||nd}|g nt        |t              r|gn|}|| j                  D cg c]	  }||vs| c}nt        |t              r|gn|}	t        |       }
| j                  dk\  rddini }| j                   |j                  |	D cg c]{  }|j                  j                  g |D cg c]  }|j                  |       c} |j                  |g|
z   |j                               |j                  |      g |||      } c}}fi |      S c c}w c c}w c c}}w )Nr   variablevalue)   r   r   promote_options
permissiver   )r   r-   rv   rw   r   rU   r0   rQ   concat_tablesr   r   r   r  string)r2   r   r[   variable_name
value_namer   r   index_r7  on_n_rowspromote_kwargson_colidx_cols                 r6   unpivotzArrowDataFrame.unpivot  s    	)))6)B
#-#9Zw
 -B
5#0FeWE 	
 z 81Q8 "c"  	 T $$
2 - 	
 &&B #&
 #& HH((JPQ&wl11':&Q$BHHfX%6			D )//7
 CBBzB )  #&
 !
 	
 9& R
s%   	D5D5(D?D:A	D?:D?N)
r2   r   r3   pa.Tabler4   ztuple[int, ...]r5   r&   returnNone)r2   r   r  r    )r2   r   r  r   )r2   r   r  r   )r2   r   r5   r&   r  r   )r2   r   rP   r  r  r   )r2   r   r  ztuple[int, int])r2   r   r  r   )r2   r   r[   r   r  ztuple[Any, ...])r2   r   ra   Literal[True]r  zlist[dict[str, Any]])r2   r   ra   Literal[False]r  zlist[tuple[Any, ...]])r2   r   ra   r   r  z,list[tuple[Any, ...]] | list[dict[str, Any]])r2   r   ra   r   rf   r   r  z4Iterator[tuple[Any, ...]] | Iterator[dict[str, Any]])r2   r   rt   rw   r  r"   )r2   r   r}   r   r{   zbool | Noner  
np.ndarray)r2   r   r   ztuple[Sequence[int], str | int]r  r"   )r2   r   r   zSequence[int]r  r*   )r2   r   r   rw   r  r"   )r2   r   r   r   r  r*   )r2   r   r   ztuple[slice, slice]r  r*   )r2   r   r   z}str | slice | Sequence[int] | Sequence[str] | tuple[Sequence[int], str | int] | tuple[slice, str | int] | tuple[slice, slice]r  zArrowSeries | ArrowDataFrame)r2   r   r  zdict[str, DType])r2   r   r   r%   r  zint | float)r2   r   r  	list[str])r2   r   r   r#   r   r#   r  r   )r2   r   r   rw   r   r   r  r   )r2   r   r   r   r   z:Literal['left', 'inner', 'outer', 'cross', 'anti', 'semi']r   str | list[str] | Noner   r  r   rw   r  r   )r2   r   r   r   r   
str | Noner   r  r   r  r   r  r   r  r   r  r   z)Literal['backward', 'forward', 'nearest']r  r   )r2   r   r   r  r   r   r  r   )r2   r   r   r  r  r   )r2   r   r   zstr | Iterable[str]r   rw   r   zbool | Sequence[bool]r   r   r  r   )r2   r   r  zpd.DataFrame)r2   r   r  r  )r2   r   r  r  r  zdict[str, ArrowSeries])r2   r   r  r  r  zdict[str, list[Any]])r2   r   r  r   r  z-dict[str, ArrowSeries] | dict[str, list[Any]])r2   r   rt   rw   r  r   )r2   r   r  r#   r  r   r  r   )r2   r   r!  r   r  r   )r2   r   r  r*   )r2   r   r  r   )r2   r   r^   
int | Noner   zint | str | Noner  r   )r2   r   r6  zdict[str, str]r  r   )r2   r   r>  r   r  r  )r2   r   r>  r   r  r   )r2   r   r  r"   )
r2   r   r   zlist[str] | Nonerk  z'Literal['any', 'first', 'last', 'none']rb  r   r  r   )r   )r2   r   r!  r   rq  r   r  r   )r2   r   r  r  )r2   r   r!  r  r|  zfloat | Noner}  r   rv  r  r  r   )r2   r   r   r  r[   r  r  r  r  r  r  r   )7__name__
__module____qualname__r7   r<   rC   rG   rJ   rN   rQ   propertyrS   rV   r^   r   rb   rh   ry   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   r9  r@  rE  r]  ra  ro  rr  rt  r  r  rE   r8   r6   r*   r*   0   s   NN"N )	N
 N 
N
"



 ( ('? ## # 
	# # $$ $ 
	$ $
 ;; ; 
6	; ;.
?? ? 	?
 
>?"
> Z ZK K> >C CQ Qj!j!"j! 
&j!X 
 
% / /+++ %+ 
	+$555 %5 
	5<M
*
*
*
 H	*

 (*
 )*
 *
 
*
X''' 	'
 ' ' (' )' #' <' 
'IL[[[ [ *	[
 [ 
[..W
 W WV VMM"&M	6M*	
H&
N=
'"
0D
1
	0&NP
&  %"%"% "% 6	"%
 "% 
"%HF"=== 	=
 = = 
=,.
.
".
 &.
 "	.

 .
 
.
r8   r*   ):
__future__r   	itertoolsr   typingr   r   r   r   r	   r
   r   narwhals._arrow.utilsr   r   r   r   r   narwhals._expression_parsingr   narwhals.dependenciesr   narwhals.exceptionsr   narwhals.utilsr   r   r   r   r   r   r   r   r   r   r  pandaspdr   r   typing_extensionsr   r   r   r;   r    ru   r"   narwhals._arrow.typingr#   narwhals.dtypesr$   narwhals.typingr%   r&   r'   r(   r*   rE   r8   r6   <module>r     s    "          2 @ : - > < 0 3 ) " 9 2 0 & 3 &5824%(& . .Q
'); Q
r8   