o
    $&]iõ                     @  s  U d dl mZ d dlmZmZmZmZmZmZ d dl	Z
d dlmZ 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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) d dl*m+Z+m,Z,m-Z-m.Z.m/Z/ d dl0m1Z1 d dl2m3Z3m4Z4 erd dl5m6Z6m7Z7m8Z8 d dl9m:Z: d dl;Z<d dl=Z>d dl?m@Z@mAZAmBZB d dlCmDZD d dlEmFZF d dlGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZR d dlSmTZT d dlUmVZV d dl*mWZWmXZX d dlYmZZZ d dl[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZbmcZcmdZdmeZemfZfmgZgmhZh dZidejd< ed5d#d$Zked6d'd$Zked7d*d$Zked8d-d$Zkd9d.d$ZkG d/d0 d0e&d1 ZlG d2d3 d3e'd4 ZmdS ):    )annotations)TYPE_CHECKINGAnyCallableLiteralcastoverloadNArrowSeriesCatNamespaceArrowSeriesDateTimeNamespaceArrowSeriesListNamespaceArrowSeriesStringNamespaceArrowSeriesStructNamespace)arangecast_for_truedivchunked_arrayextract_nativefloordiv_compatis_array_or_scalarlitnarwhals_to_native_dtypenative_to_narwhals_dtype
nulls_like
pad_serieszeros)EagerSeriesEagerSeriesHist)assert_never)Implementationgenerate_temporary_column_name
is_list_of
no_defaultnot_implemented)is_numpy_array_1d)InvalidOperationError
ShapeError)IterableIteratorSequence)
ModuleType)Self	TypeAliasTypeIsArrowDataFrameArrowNamespace)ArrayAnyArrayOrChunkedArrayArrayOrScalarChunkedArrayAny
IncompleteNullPlacementOrder	ScalarAny
TieBreaker	_AsPyType_BasicDataType)HistData)	NoDefault)Version_LimitedContext)DType)ClosedIntervalFillNullStrategyInto1DArray	IntoDTypeModeKeepStrategyNonNestedLiteralPythonLiteral
RankMethodRollingInterpolationMethodSizedMultiIndexSelector_1DArray_2DArray_SliceIndexzHHistData[ChunkedArrayAny, list[ScalarAny] | pa.Int64Array | list[float]]r/   ArrowHistDatavalue$pa.Scalar[_BasicDataType[_AsPyType]]return_py_scalarboolreturnr>   c                 C     d S N rS   rU   rZ   rZ   T/var/www/html/IGF-ODF-V3/venv/lib/python3.10/site-packages/narwhals/_arrow/series.pymaybe_extract_py_scalarY      r]   pa.Scalar[pa.StructType]list[dict[str, Any]]c                 C  rX   rY   rZ   r[   rZ   rZ   r\   r]   `   r^   1pa.Scalar[pa.ListType[_BasicDataType[_AsPyType]]]list[_AsPyType]c                 C  rX   rY   rZ   r[   rZ   rZ   r\   r]   g   r^   pa.Scalar[Any] | Anyr   c                 C  rX   rY   rZ   r[   rZ   rZ   r\   r]   n   r^   c                   s*   t r  S |rt d fdd S  S )Nas_pyc                     s    S rY   rZ   rZ   rS   rZ   r\   <lambda>y   s    z)maybe_extract_py_scalar.<locals>.<lambda>)r   rd   getattrr[   rZ   re   r\   r]   u   s
   c                      s  e Zd ZejZdd	d
ZedddZdddZ	dddddZ
dddZdddZed d!d"dd)d*Zd fd,d-Zedd1d2Zed d3dd4d5Zedd7d8Zedd:d;Zdd=d>Zdd@dAZddBdCZddDdEZddFdGZddHdIZddJdKZddLdMZddNdOZddPdQZddRdSZddTdUZ ddVdWZ!ddXdYZ"ddZd[Z#dd\d]Z$dd^d_Z%dd`daZ&ddbdcZ'ddddeZ(ddfdgZ)ddhdiZ*ddjdkZ+ddldmZ,ddndoZ-ddpdqZ.eddsdtZ/dudvddydzZ0dd}d~Z1dudvdddZ2dudvdddZ3dudvdddZ4dudvdddZ5dudvdddZ6dudvdddZ7dudvdddZ8dudvdddZ9dudvdddZ:dddZ;dddZ<dudvdddZ=dudvdddZ>dudvdddZ?dudvdddZ@dudvdddZAdudvdddZBdddZCedddZDdddZEdddZFdddZGdddZHdd!ddddZIdd!ddddZJdddÄZKedddƄZLdddȄZMddd˄ZNddd΄ZOdddЄZPddd҄ZQdddԄZRdudvdddքZSdudvddd؄ZTdddބZUdddZVdddZWdddZXdudvdddZYdddZZdddZ[dddZ\dddZ]ddddZ^dddZ_dddZ`dddZadddZbdd	d
ZcdddZddddZedddZfdddZgdddZhdddZidddZjduddddZkdd&d'Zldd)d*Zmdd-d.Zndudvdd2d3Zoddd6d7Zpdd8d9Zqdd:d;Zrdd<d=Zsdd?d@ZtdÐdCdDZuddEdFZvddGdHZwddIdJZxddKdLZyddMdNZzdĐdRdSZ{dĐdTdUZ|dŐdVdWZ}dŐdXdYZ~dƐd\d]ZdǐdadbZdȐdddeZdɐdgdhZdʐdidjZdːdldmZddndoZddpdqZddrdsZdudvd̐dudvZed͐dxdyZedΐd{d|Zedϐd~dZedАddZedѐddZe Z  ZS (  ArrowSeriesnative_seriesr8   namestrversionrB   rW   Nonec                C  s   || _ || _|| _d| _d S )NF)_name_native_series_version
_broadcast)selfri   rj   rl   rZ   rZ   r\   __init__   s   
zArrowSeries.__init__c                 C     | j S rY   )ro   rr   rZ   rZ   r\   native      zArrowSeries.nativer.   c                 C  s   | j | j| j|dS N)rj   rl   )	__class__rv   rn   )rr   rl   rZ   rZ   r\   _with_version      zArrowSeries._with_versionFpreserve_broadcastseriesr7   r}   rV   c                C  s&   | j t|| j| d}|r| j|_|S )Nrj   context)from_nativer   rj   rq   )rr   r~   r}   resultrZ   rZ   r\   _with_native   s   zArrowSeries._with_nativeopCallable[..., ArrayOrScalar]otherr   c                 C  s<   t | |\}}| jot|dd}| j||||d| jS Nrq   Tr|   )r   rq   rg   r   aliasrj   )rr   r   r   serother_nativer}   rZ   rZ   r\   _with_binary   s   
zArrowSeries._with_binaryc                   s   |   fdd|| jS )Nc                   s
    || S rY   rZ   xyr   rZ   r\   rf      s   
 z0ArrowSeries._with_binary_right.<locals>.<lambda>)r   r   rj   )rr   r   r   rZ   r   r\   _with_binary_right   s   zArrowSeries._with_binary_right N)rj   dtypedataIterable[Any]r   rC   r   IntoDType | Nonec                C  sd   |j }|d ur%t||}t|r||}d }| |r|nt|g|}nt|g}| j|||dS )N)r   rj   )rp   r   r   r   
_is_nativer   r   )clsr   r   rj   r   rl   dtype_parv   rZ   rZ   r\   from_iterable   s   	


zArrowSeries.from_iterablerS   c                   s   t |dr	| }t |S )Nrd   )hasattrrd   super_from_scalar)rr   rS   ry   rZ   r\   r      s   
zArrowSeries._from_scalarobjChunkedArrayAny | AnyTypeIs[ChunkedArrayAny]c                 C  s   t | tjS rY   )
isinstancepaChunkedArray)r   rZ   rZ   r\   r      s   zArrowSeries._is_nativerj   c               C  s   | ||j |dS )N)rl   rj   )rp   )r   r   r   rj   rZ   rZ   r\   r      s   zArrowSeries.from_nativerG   c               C  s"   | j t|r||dS |g|dS N)r   )r   r'   )r   r   r   rZ   rZ   r\   
from_numpy   s
   zArrowSeries.from_numpySequence[Self]c           	        s   dd |D }t dd t||D  t fdd|D }|r"|S g }|D ].}|jr8|t|jd  }nt| } krMd  d| d	}t	||}|
| q&|S )
Nc                 S  s   g | ]}t |qS rZ   )len).0srZ   rZ   r\   
<listcomp>   s    z5ArrowSeries._align_full_broadcast.<locals>.<listcomp>c                 s  s    | ]
\}}|j s|V  qd S rY   )rq   )r   lengthr   rZ   rZ   r\   	<genexpr>   s    

z4ArrowSeries._align_full_broadcast.<locals>.<genexpr>c                 3  s    | ]}| kV  qd S rY   rZ   )r   _lentarget_lengthrZ   r\   r      s    r   zExpected object of length z, got .)maxzipallrq   r   r   repeatrv   r   r)   append)	r   r~   lengths	fast_pathreshapedr   	compliant
actual_lenmsgrZ   r   r\   _align_full_broadcast   s"   z!ArrowSeries._align_full_broadcastr4   c                 C  s   ddl m} || jdS )Nr   r3   )rl   )narwhals._arrow.namespacer4   rp   )rr   r4   rZ   rZ   r\   __narwhals_namespace__   s   z"ArrowSeries.__narwhals_namespace__objectc                 C     |  tj|S rY   )r   pcequalrr   r   rZ   rZ   r\   __eq__      zArrowSeries.__eq__c                 C  r   rY   )r   r   	not_equalr   rZ   rZ   r\   __ne__   r   zArrowSeries.__ne__c                 C  r   rY   )r   r   greater_equalr   rZ   rZ   r\   __ge__   r   zArrowSeries.__ge__c                 C  r   rY   )r   r   greaterr   rZ   rZ   r\   __gt__   r   zArrowSeries.__gt__c                 C  r   rY   )r   r   
less_equalr   rZ   rZ   r\   __le__   r   zArrowSeries.__le__c                 C  r   rY   )r   r   lessr   rZ   rZ   r\   __lt__   r   zArrowSeries.__lt__c                 C  r   rY   )r   r   
and_kleener   rZ   rZ   r\   __and__   r   zArrowSeries.__and__c                 C  r   rY   )r   r   r   r   rZ   rZ   r\   __rand__   r   zArrowSeries.__rand__c                 C  r   rY   r   r   	or_kleener   rZ   rZ   r\   __or__   r   zArrowSeries.__or__c                 C  r   rY   r   r   rZ   rZ   r\   __ror__   r   zArrowSeries.__ror__c                 C  r   rY   )r   r   addr   rZ   rZ   r\   __add__  r   zArrowSeries.__add__c                 C  r   rY   )r   r   r   r   rZ   rZ   r\   __radd__  r   zArrowSeries.__radd__c                 C  r   rY   )r   r   subtractr   rZ   rZ   r\   __sub__  r   zArrowSeries.__sub__c                 C  r   rY   )r   r   r   r   rZ   rZ   r\   __rsub__  r   zArrowSeries.__rsub__c                 C  r   rY   )r   r   multiplyr   rZ   rZ   r\   __mul__  r   zArrowSeries.__mul__c                 C  r   rY   )r   r   r   r   rZ   rZ   r\   __rmul__  r   zArrowSeries.__rmul__c                 C  r   rY   )r   r   powerr   rZ   rZ   r\   __pow__  r   zArrowSeries.__pow__c                 C  r   rY   )r   r   r   r   rZ   rZ   r\   __rpow__  r   zArrowSeries.__rpow__c                 C     |  t|S rY   )r   r   r   rZ   rZ   r\   __floordiv__     zArrowSeries.__floordiv__c                 C  r   rY   )r   r   r   rZ   rZ   r\   __rfloordiv__  r   zArrowSeries.__rfloordiv__c                 C     |  dd |S )Nc                 S     t jt| | S rY   r   divider   r   rZ   rZ   r\   rf   !      z)ArrowSeries.__truediv__.<locals>.<lambda>)r   r   rZ   rZ   r\   __truediv__      zArrowSeries.__truediv__c                 C  r   )Nc                 S  r   rY   r   r   rZ   rZ   r\   rf   %  r   z*ArrowSeries.__rtruediv__.<locals>.<lambda>)r   r   rZ   rZ   r\   __rtruediv__#  s   zArrowSeries.__rtruediv__c                 C  sL   | j ot|dd}| | j}t| |\}}t|t||}| j||dS r   rq   rg   rv   r   r   r   r   r   rr   r   r}   	floor_divr   resrZ   rZ   r\   __mod__(  
   
zArrowSeries.__mod__c                 C  sL   | j ot|dd}||  j}t| |\}}t|t||}| j||dS r   r   r   rZ   rZ   r\   __rmod__/  r   zArrowSeries.__rmod__c                 C     | j t| jddS NTr|   )r   r   invertrv   ru   rZ   rZ   r\   
__invert__6     zArrowSeries.__invert__pa.DataTypec                 C  s   | j jS rY   )rv   typeru   rZ   rZ   r\   _type9     zArrowSeries._typeT)_return_py_scalarr   intc                C  s   t t| j|S rY   )r]   r   rv   rr   r   rZ   rZ   r\   r   =  r   zArrowSeries.len	predicateArrowSeries | list[bool | None]c                 C  s0   t |tst| |\}}n|}| | j|S rY   )r$   rV   r   r   rv   filter)rr   r  _r   rZ   rZ   r\   r  @  s   
zArrowSeries.filterrK   c                C  s"   t | jr
| jd nd }t||S Nr   )r   rv   r]   )rr   r   r   rZ   rZ   r\   firstH  s   
zArrowSeries.firstc                C  s,   | j }t| }r||d  nd }t||S N   )rv   r   r]   )rr   r   caheightr   rZ   rZ   r\   lastL  s   
zArrowSeries.lastfloatc                C     t t| j|S rY   )r]   r   meanrv   r  rZ   rZ   r\   r  Q     zArrowSeries.meanc                C  s(   | j  sd}t|tt| j|S )Nz<`median` operation not supported for non-numeric input type.)r   
is_numericr(   r]   r   approximate_medianrv   )rr   r   r   rZ   rZ   r\   medianT  s   
zArrowSeries.medianc                C  r  rY   )r]   r   minrv   r  rZ   rZ   r\   r  ]  r  zArrowSeries.minc                C  r  rY   )r]   r   r   rv   r  rZ   rZ   r\   r   `  r  zArrowSeries.maxc                C      t | jt | j}t||S rY   )r   indexrv   r  r]   )rr   r   	index_minrZ   rZ   r\   arg_minc     
zArrowSeries.arg_minc                C  r  rY   )r   r  rv   r   r]   )rr   r   	index_maxrZ   rZ   r\   arg_maxg  r  zArrowSeries.arg_maxc                C     t tj| jdd|S Nr   	min_count)r]   r   sumrv   r  rZ   rZ   r\   r!  k     zArrowSeries.sumc                 C     |  | j S rY   )r   rv   	drop_nullru   rZ   rZ   r\   
drop_nullsp  r   zArrowSeries.drop_nullsnc                 C  sp   |dkrt || g| jd |  j}n|dk r*g | j| d  jt | | }n| | jS | t|S r  )r   rv   chunksr   r   concat_arrays)rr   r&  arraysrZ   rZ   r\   shifts  s    $zArrowSeries.shiftddofc                C     t tj| j|d|S N)r+  )r]   r   stddevrv   rr   r+  r   rZ   rZ   r\   std|  r"  zArrowSeries.stdc                C  r,  r-  )r]   r   variancerv   r/  rZ   rZ   r\   var  r"  zArrowSeries.varfloat | Nonec                C  s   | j  }t|dkrd S t|dkrtdS t|dkrdS t|t|}tt|td}tt|td}t	|t|td}t
||S )Nr   r
  nan   g           g      ?rv   r$  r   r  r   r   r  r   r   r   r]   )rr   r   ser_not_nullmm2m3biased_population_skewnessrZ   rZ   r\   skew  s   

zArrowSeries.skewc             
   C  s   | j  }t|dkrd S t|dkrtdS t|t|}tt|td}tt|td}tt	|t|tdtd}t
||S )Nr   r
  r4  r5     r6  r7  )rr   r   r8  r9  r:  m4krZ   rZ   r\   kurtosis  s   
$
zArrowSeries.kurtosisc                C  r  rY   )r]   r   countrv   r  rZ   rZ   r\   rB    r  zArrowSeries.countc                C  s   t tj| j dd|S )Nr   )mode)r]   r   rB  rv   uniquer  rZ   rZ   r\   n_unique  s   zArrowSeries.n_uniquer-   c                 C  s.   | j tju r| j  S dt| j  }t|)NzExpected pyarrow, got: )_implementationr"   PYARROWto_native_namespacer   AssertionError)rr   r   rZ   rZ   r\   __native_namespace__  s   
z ArrowSeries.__native_namespace__c                 C  rt   rY   )rn   ru   rZ   rZ   r\   rj     rw   zArrowSeries.namerows(SizedMultiIndexSelector[ChunkedArrayAny]c                 C  sN   t |dkr| | jddS | jdk rt|trt|}| | j|S )Nr   )   )	r   r   rv   slice_backend_versionr   tuplelisttake)rr   rK  rZ   rZ   r\   _gather  s
   zArrowSeries._gather_SliceIndex | rangec                 C  s   |j pd}|jd ur|jnt| j}|dk rt| j| }|dk r(t| j| }|jd ur8|jdkr8d}t|| | j||| S )Nr   r
  z4Slicing with step is not supported on PyArrow tables)startstopr   rv   stepNotImplementedErrorr   rN  )rr   rK  rU  rV  r   rZ   rZ   r\   _gather_slice  s   
zArrowSeries._gather_sliceindicesint | Sequence[int]valuesc           
      C  s   dd l }t|trt|g}t|g}nt|}t|| jr'|j }ntj}||}t	|}|
|}|
|}|j|  td}d||< tj}	| |	| j||S )Nr   )r   T)numpyr   r  r   arrayry   rv   combine_chunksr   sort_indicesrR  r   r   rV   replace_with_maskr   )
rr   rZ  r\  npindices_nativevalues_nativepa_arraysorting_indicesmaskpc_replace_with_maskrZ   rZ   r\   scatter  s    




zArrowSeries.scatter	list[Any]c                 C  
   | j  S rY   )rv   	to_pylistru   rZ   rZ   r\   to_list     
zArrowSeries.to_list)copyro  bool | NonerO   c                C  s   | j j||dS )N)r   ro  )rv   	__array__rr   r   ro  rZ   rZ   r\   rq    r   zArrowSeries.__array__c                C  rk  rY   )rv   to_numpyrr  rZ   rZ   r\   rs    rn  zArrowSeries.to_numpyc                 C  s    | j | j|| jd}| j|_|S rx   )ry   rv   rp   rq   )rr   rj   retrZ   rZ   r\   r     s   zArrowSeries.aliasrD   c                 C  s   t | jj| jS rY   )r   rv   r   rp   ru   rZ   rZ   r\   r        zArrowSeries.dtypec                 C     |  t| jS rY   )r   r   absrv   ru   rZ   rZ   r\   rw    r  zArrowSeries.absreversec                C  sD   t j}|s|| jddn|| jd d d ddd d d }| |S NT)
skip_nulls)r   cumulative_sumrv   r   )rr   rx  cum_sumr   rZ   rZ   r\   r}    s    
zArrowSeries.cum_sumdecimalsc                 C  s   |  tj| j|ddS )Nhalf_towards_infinity)
round_mode)r   r   roundrv   )rr   r~  rZ   rZ   r\   r    s   zArrowSeries.roundc                 C  rv  rY   )r   r   floorrv   ru   rZ   rZ   r\   r  	  r  zArrowSeries.floorc                 C  rv  rY   )r   r   ceilrv   ru   rZ   rZ   r\   r    r  zArrowSeries.ceilc                 C  s   |  t| j S rY   )r   r   pairwise_diffrv   r_  ru   rZ   rZ   r\   diff  r   zArrowSeries.diffc                C  r  r  )r]   r   anyrv   r  rZ   rZ   r\   r    r"  zArrowSeries.anyc                C  r  r  )r]   r   r   rv   r  rZ   rZ   r\   r     r"  zArrowSeries.alllower_boundupper_boundclosedrE   c           
      C  s   t | |\}}t | |\}}|dkr't| j|}t| j|}t||}nO|dkr@t| j|}t| j|}	t||	}n6|dkrYt| j|}t| j|}t||}n|dkrrt| j|}t| j|}	t||	}nt| | 	|S )Nleftrightnoneboth)
r   r   r   rv   r   r   r   r   r!   r   )
rr   r  r  r  r  geltr   gtlerZ   rZ   r\   
is_between  s(   
zArrowSeries.is_betweenc                 C  s   | j | j ddS r   )r   rv   is_nullru   rZ   rZ   r\   r  5  r{   zArrowSeries.is_nullc                 C  r   r   )r   r   is_nanrv   ru   rZ   rZ   r\   r  8  r   zArrowSeries.is_nanrH   c                 C  s$   t || j}| jt| j|ddS r   )r   rp   r   r   r   rv   )rr   r   	data_typerZ   rZ   r\   r   ;  s   zArrowSeries.castc                C  s   t | jj|S rY   )r]   rv   
null_countr  rZ   rZ   r\   r  ?  r   zArrowSeries.null_countc              	   C  sB   |dkr|  | jd|S t| }|  | jdtd|| S r  )r   rv   rN  r   r   rr   r&  num_rowsrZ   rZ   r\   headB  s   zArrowSeries.headc                 C  sB   |dkrt | }| | jtd|| S | | jt|S r  )r   r   rv   rN  r   rw  r  rZ   rZ   r\   tailH  s   zArrowSeries.tailc                 C  s0   |  |r|}nt|}| tj| j|dS )N)	value_set)r   r   r^  r   r   is_inrv   )rr   r   r  rZ   rZ   r\   r  N  s   

zArrowSeries.is_inc                 C  s&   dd l }|| j}| j|| j| dS )Nr   r   )r]  flatnonzerorv   r   rj   )rr   rb  r   rZ   rZ   r\   arg_trueU  s   zArrowSeries.arg_truer  
int | Nonec                 C  sP   |d u rt | dkrdt |  d}t|t| jd ddS t| j| ddS )Nr
  zlcan only call '.item()' if the Series is of length 1, or an explicit index is provided (Series is of length )r   TrU   )r   
ValueErrorr]   rv   )rr   r  r   rZ   rZ   r\   item[  s   zArrowSeries.itemsortparallel
str | None	normalizer2   c                C  s   ddl m} | jdu rdn| j}|p|rdnd}t| j}|d}	td|d	}
|r;|	tjt	|
t
|
 g}n|	|
g}tjj|||gd
}|rS||dfg}||| jddS )z-Parallel is unused, exists for compatibility.r   r1   Nr  
proportionrB  r\  r8   countsnames
descendingTrl   validate_column_names)narwhals._arrow.dataframer2   rn   r   value_countsrv   fieldr   r   r   r!  r   Tablefrom_arrayssort_byrp   )rr   r  r  rj   r  r2   index_name_value_name_
val_countsr\  r  r)  	val_countrZ   rZ   r\   r  f  s   
zArrowSeries.value_countsrg  c                 C  s"   |j  }| t|| j |j S rY   )rv   r_  r   r   if_else)rr   rg  r   condrZ   rZ   r\   zip_with  s   
zArrowSeries.zip_withfractionwith_replacementseedc          
      C  sf   dd l }t| }|d u r|d urt|| }|jj|d}||}|j|||d}	| | j	|	S )Nr   )r  )sizereplace)
r]  r   r  randomdefault_rngr   choicer   rv   rR  )
rr   r&  r  r  r  rb  r  rngidxrg  rZ   rZ   r\   sample  s   
zArrowSeries.samplec                 C  s&   t t | j|| j}| j|ddS r   )r   r  r  rv   r   )rr   rS   r   rZ   rZ   r\   fill_nan  s   zArrowSeries.fill_nanSelf | NonNestedLiteralstrategyFillNullStrategy | Nonelimitc           	      C  s   ddd}| j }|d urt| |\}}t||}n+|d u r-|d	kr't|nt|}n|d	kr6|||n||d d d
 |d d d
 }| j|ddS )Narrr8   r  r  rW   r5   c                 S  s   t d}t| }tdt| d}tt|||}t||}t||d }tt	||t |}tt
||| | |S )Nr{  r   r
  )r   r   is_validr   r   cumulative_maxr  r   r   r   or_rR  )r  r  sentinelis_not_nullr  index_not_nullnot_oobbeyond_limitrZ   rZ   r\   fill_null_forward_limit  s   
z6ArrowSeries.fill_null.<locals>.fill_null_forward_limitforwardr{  Tr|   )r  r8   r  r  rW   r5   )rv   r   r   	fill_nullfill_null_forwardfill_null_backwardr   )	rr   rS   r  r  r  rv   r  native_valuer~   rZ   rZ   r\   r    s   


zArrowSeries.fill_nullc                 C  s4   ddl m} tjj| jg| jgd}||| jddS )Nr   r1   r  Fr  )r  r2   r   r  r  rv   rj   rp   )rr   r2   dfrZ   rZ   r\   to_frame  s   zArrowSeries.to_framepd.Series[Any]c                 C  s   dd l }|j| j| jdS )Nr   r   )pandasSeriesrv   rj   )rr   pdrZ   rZ   r\   	to_pandas     zArrowSeries.to_pandas	pl.Seriesc                 C  s   dd l }td|| jS )Nr   r  )polarsr   
from_arrowrv   )rr   plrZ   rZ   r\   	to_polars  r  zArrowSeries.to_polarsc                 C  s   |    | jS rY   )r  	is_uniquer   rj   ru   rZ   rZ   r\   r    r{   zArrowSeries.is_uniquec                 C  ~   dd l }t|t| }td| jgd}tjj| j	g| jgd
||| j|dfg| d}| t||S )Nr      n_bytescolumnsr  r  _minr]  r   r^  r   r   r#   rj   r  r  rv   append_columngroup_by	aggregatecolumnr   r   r  )rr   rb  
row_number	col_tokenfirst_distinct_indexrZ   rZ   r\   is_first_distinct     zArrowSeries.is_first_distinctc                 C  r  )Nr   r  r  r  r   _maxr  )rr   rb  r  r  last_distinct_indexrZ   rZ   r\   is_last_distinct  r  zArrowSeries.is_last_distinctr  c                C  s~   t |tsdt| }t||r&tt| jd d | jdd  }ntt| jd d | jdd  }t	|ddS )Nz/argument 'descending' should be boolean, found r{  r
  Tr  )
r   rV   r   	TypeErrorr   r   r   rv   r   r]   )rr   r  r   r   rZ   rZ   r\   	is_sorted  s   
(&zArrowSeries.is_sortedmaintain_orderr  c                C  r#  rY   )r   rv   rD  )rr   r  rZ   rZ   r\   rD     ru  zArrowSeries.uniquedefaultAny | NoDefaultoldSequence[Any]newreturn_dtypec                C  s   t | jt|}t |}t t||}|d ur%|t|| j	}| 
|}|tu r_t t | jt |}	tt j|	ddddr]| | 
|	jdd }
d|
 }t||S t||\}}| 
t ||j|}|S )Nr   r  Tr  Fr  zYreplace_strict did not replace all non-null values.

The following did not get replaced: )r   index_inrv   r   r^  r  rR  r   r   rp   r   r%   and_r   r]   r  r  rD  rm  r(   r   r  )rr   r   r  r  r  idxswas_matchedresult_nativer   unmatched_maskunmatched_valuesr   rZ   rZ   r\   replace_strict  s6   	


zArrowSeries.replace_strict
nulls_lastc                C  s<   |rdnd}|r
dnd}t j| j||d}| | j|S )Nr  	ascendingat_endat_start)ordernull_placement)r   array_sort_indicesrv   r   rR  )rr   r  r  r  r  sorted_indicesrZ   rZ   r\   r  .  s   zArrowSeries.sort	separator
drop_firstc          	        s   dd l }ddlm} | j | j d}|t|j	t|f|j
}d||j|t|f<    d   d fdd|j	D }|v rcgtfd	d|D t|d  n	t|t|d  }|tjj||d
| jddj| S )Nr   r1   encoder
  rm   nullc                   s4   g | ]}i    |    | qS rZ   )get)r   vrj   null_col_panull_col_plr  rZ   r\   r   B  s    z*ArrowSeries.to_dummies.<locals>.<listcomp>c                   s   g | ]}| kr|qS rZ   rZ   )r   c)r  rZ   r\   r   L  s    r  Tr  )r]  r  r2   rn   rv   r_  dictionary_encoder   r   
dictionaryint8rZ  r   sortedr  r   r  r  rp   simple_select)	rr   r  r  rb  r2   dar  colsoutput_orderrZ   r  r\   
to_dummies6  s0    zArrowSeries.to_dummiesquantileinterpolationrM   c                C  s   t tj| j||dd |S )N)qr*  r   )r]   r   r)  rv   )rr   r)  r*  r   rZ   rZ   r\   r)  W  s   zArrowSeries.quantiler   offsetc                 C  s   |  | j|d | S rY   )r   rv   )rr   r&  r,  rZ   rZ   r\   gather_everyc  r   zArrowSeries.gather_everyc                 C  s8   t | |\}}t | |\}}| tt| j||S rY   )r   r   r   max_element_wisemin_element_wiserv   )rr   r  r  r  lowerupperrZ   rZ   r\   clipf  s
   zArrowSeries.clipc                 C  "   t | |\}}| t| j|S rY   )r   r   r   r.  rv   )rr   r  r  r0  rZ   rZ   r\   
clip_lowerm     zArrowSeries.clip_lowerc                 C  r3  rY   )r   r   r   r/  rv   )rr   r  r  r1  rZ   rZ   r\   
clip_upperq  r5  zArrowSeries.clip_upperr5   c                 C  rk  rY   )rv   r_  ru   rZ   rZ   r\   to_arrowu  rn  zArrowSeries.to_arrowkeeprI   c                C  sj   |   }td| jgd}| j|dddd}|||||  k| j}|dkr3|	dS |S )Nr  r  F)rj   r  r  r  r  r
  )
r   r#   rj   r  r  colr   	broadcast
get_columnr  )rr   r8  plxr  r  r   rZ   rZ   r\   rC  x  s   zArrowSeries.modec                 C  rv  rY   )r   r   	is_finiterv   ru   rZ   rZ   r\   r=    r  zArrowSeries.is_finitec                C  s$   | j j}|   | j|dS )Nrx  )rp   dtypesr  r   UInt32r}  )rr   rx  r?  rZ   rZ   r\   	cum_count  s   zArrowSeries.cum_countc                C  B   |s
t j| jddnt j| jd d d ddd d d }| |S ry  )r   cumulative_minrv   r   rr   rx  r   rZ   rZ   r\   cum_min  
   "
zArrowSeries.cum_minc                C  rB  ry  )r   r  rv   r   rD  rZ   rZ   r\   cum_max  rF  zArrowSeries.cum_maxc                C  rB  ry  )r   cumulative_prodrv   r   rD  rZ   rZ   r\   cum_prod  rF  zArrowSeries.cum_prodwindow_sizemin_samplescenterc                C  s   |d ur|n|}t | ||d\}}|jddjd dd d}|dkr.|||jdd d d n|}|jdd}|||jdd d d }	| t|	|kj|jd }
|
	t
|d S NrJ  rL  Fr>  r  rS   r  r  r   r   r}  r  r*  rA  r   r   r  rv   rY  rN  rr   rJ  rK  rL  padded_seriesr,  r}  rolling_sumvalid_countcount_in_windowr   rZ   rZ   r\   rS    s&   zArrowSeries.rolling_sumc                C  s   |d ur|n|}t | ||d\}}|jddjd dd d}|dkr.|||jdd d d n|}|jdd}|||jdd d d }	| t|	|kj|jd |	 }
|
	t
|d S rM  rP  rQ  rZ   rZ   r\   rolling_mean  s0   zArrowSeries.rolling_meanc                C  s  |d ur|n|}t | ||d\}}|jddjd dd d}|dkr.|||jdd d d n|}t|djddjd dd d}	|dkrP|	|	|jdd d d n|	}
|jdd}|||jdd d d }| t||kj	|
|d |  j	d | t
|| j	d }|t|d d S )NrN  Fr>  r  rO  r   r5  )r   r}  r  r*  powrA  r   r   r  rv   r.  rY  rN  )rr   rJ  rK  rL  r+  rR  r,  r}  rS  
cum_sum_sqrolling_sum_sqrT  rU  r   rZ   rZ   r\   rolling_var  sJ   zArrowSeries.rolling_varc                C  s   | j ||||dd S )N)rJ  rK  rL  r+        ?)rZ  )rr   rJ  rK  rL  r+  rZ   rZ   r\   rolling_std  s   zArrowSeries.rolling_stdmethodrL   c          
      C  s   |dkr
d}t ||rdnd}|dkrdn|}| jdk r#| j }n| j}t|}tj|||d}t|td |j	|}	| 
|	S )	Naveragez`rank` with `method='average' is not supported for pyarrow backend. The available methods are {'min', 'max', 'dense', 'ordinal'}.r  r  ordinalr  )   r   r   )	sort_keys
tiebreaker)r  rO  rv   r_  r   r  rankr  r   r   r   )
rr   r]  r  r   ra  rb  ri   	null_maskrc  r   rZ   rZ   r\   rc    s   


zArrowSeries.rankbinslist[float]include_breakpointc                C     t j| |d| S N)rg  )
_ArrowHistfrom_series	with_binsr  )rr   re  rg  rZ   rZ   r\   hist_from_bins$     zArrowSeries.hist_from_bins	bin_countc                C  rh  ri  )rj  rk  with_bin_countr  )rr   ro  rg  rZ   rZ   r\   hist_from_bin_count-  rn  zArrowSeries.hist_from_bin_countIterator[Any]c                 c  s     | j D ]	}t|ddV  qd S )NTr  )rv   r]   )rr   r   rZ   rZ   r\   __iter__6  s   
zArrowSeries.__iter__c              
   C  s   ddl m}m}m} z|d urt|ntd | jd}tt|| j	ddW S  |||fyE } zdt
| d| j d}t||d }~ww )	Nr   )ArrowInvalidArrowNotImplementedErrorArrowTypeError)r   Tr  z Unable to compare other of type z with series of type r   )pyarrowrt  ru  rv  r   r   r]   r   r  rv   r   r   r(   )rr   r   rt  ru  rv  other_excr   rZ   rZ   r\   __contains__:  s   
zArrowSeries.__contains__basec                 C  s   |  t| jt|S rY   )r   r   logbrv   r   )rr   r{  rZ   rZ   r\   logJ  s   zArrowSeries.logc                 C  rv  rY   )r   r   exprv   ru   rZ   rZ   r\   r~  M  r  zArrowSeries.expc                 C  rv  rY   )r   r   sqrtrv   ru   rZ   rZ   r\   r  P  r  zArrowSeries.sqrtc                 C  rv  rY   )r   r   sinrv   ru   rZ   rZ   r\   r  S  r  zArrowSeries.sinignore_nullsc                C  s   |r|    S |  S rY   )r%  r  )rr   r  r   rZ   rZ   r\   	any_valueV  s   zArrowSeries.any_valuer   c                 C     t | S rY   r   ru   rZ   rZ   r\   dt[  r   zArrowSeries.dtr
   c                 C  r  rY   r	   ru   rZ   rZ   r\   cat_  r   zArrowSeries.catr   c                 C  r  rY   r   ru   rZ   rZ   r\   rk   c  r   zArrowSeries.strr   c                 C  r  rY   r   ru   rZ   rZ   r\   rQ  g  r   zArrowSeries.listr   c                 C  r  rY   r   ru   rZ   rZ   r\   structk  r   zArrowSeries.struct)ri   r8   rj   rk   rl   rB   rW   rm   )rW   r8   )rl   rB   rW   r.   )r~   r7   r}   rV   rW   r.   )r   r   r   r   rW   r.   )
r   r   r   rC   rj   rk   r   r   rW   r.   )rS   r   rW   r.   )r   r   rW   r   )r   r8   r   rC   rj   rk   rW   r.   )r   rG   r   rC   rW   r.   )r~   r.   rW   r   )rW   r4   )r   r   rW   r.   )r   r   rW   r.   )rW   r.   )rW   r   )r   rV   rW   r  )r  r  rW   r.   )r   rV   rW   rK   )r   rV   rW   r  )r   rV   rW   r   )r&  r  rW   r.   )r+  r  r   rV   rW   r  )r   rV   rW   r3  )rW   r-   )rW   rk   )rK  rL  rW   r.   )rK  rT  rW   r.   )rZ  r[  r\  r   rW   r.   )rW   rj  rY   )r   r   ro  rp  rW   rO   )rj   rk   rW   r.   )rW   rD   )rx  rV   rW   r.   )r~  r  rW   r.   )r   rV   rW   rV   )r  r   r  r   r  rE   rW   r.   )r   rH   rW   r.   )r  r  rW   r   )
r  rV   r  rV   rj   r  r  rV   rW   r2   )rg  r.   r   r.   rW   r.   )
r&  r  r  r3  r  rV   r  r  rW   r.   )rS   r3  rW   r.   )rS   r  r  r  r  r  rW   r.   rW   r2   )rW   r  )rW   r  )rW   rh   )r  rV   rW   rV   )r  rV   rW   r.   )
r   r  r  r  r  r  r  r   rW   r.   )r  rV   r  rV   rW   r.   )r  rk   r  rV   rW   r2   )r)  r  r*  rM   r   rV   rW   r  )r   )r&  r  r,  r  rW   r.   )r  r.   r  r.   rW   r.   )r  r.   rW   r.   )r  r.   rW   r.   )rW   r5   )r8  rI   rW   rh   )rJ  r  rK  r  rL  rV   rW   r.   )
rJ  r  rK  r  rL  rV   r+  r  rW   r.   )r]  rL   r  rV   rW   r.   )re  rf  rg  rV   rW   r2   )ro  r  rg  rV   rW   r2   )rW   rr  )r   r   rW   rV   )r{  r  rW   r.   )r  rV   r   rV   rW   rK   )rW   r   )rW   r
   )rW   r   )rW   r   )rW   r   )__name__
__module____qualname__r"   rG  rF  rs   propertyrv   rz   r   r   r   classmethodr   r   staticmethodr   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*  r0  r2  r=  rA  rB  rE  rJ  rj   rS  rY  ri  rm  rq  rs  r   r   rw  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  rD  r  r  r(  r)  r-  r2  r4  r6  r7  rC  r=  rA  rE  rG  rI  rS  rV  rZ  r\  rc  rm  rq  rs  rz  r}  r~  r  r  r  r  r  rk   rQ  r  r&   ewm_mean__classcell__rZ   rZ   r   r\   rh   }   s8   		 	)
*&+
		rh   r8   c                   @  sb   e Zd ZU ded< d&ddZd'dd	Zd(ddZd)ddZddd*ddZd+dd Z	d,d#d$Z
d%S )-rj  rh   _seriesrW   r2   c                 C  s*   t jj}| j jj}||| j| jdS r   )r   r  from_pydictr  r   
_dataframer   _data)rr   tabler   rZ   rZ   r\   r  w  s   z_ArrowHist.to_framerV   c                 C  s&   | j jdd}td| }|jdkS )NT)nan_is_nullzpa.BooleanArrayr   )rv   r  r   r_  false_count)rr   r  r  rZ   rZ   r\   is_empty_series~  s   
z_ArrowHist.is_empty_seriesargint | list[float]rR   c                C  s(   |  |}| jr| ||dS d|iS )N
breakpointrB  rB  )_zeros_breakpoint_calculate_breakpoint)rr   r  rB  rZ   rZ   r\   series_empty  s   
z_ArrowHist.series_emptypa.Int64Arrayc                C  s"   t |tr	t|S tt|d S r	  )r   r  r   r   )rr   r  rZ   rZ   r\   r    s   "z_ArrowHist._zerosr  )r  rU  r  endnum_samplesr  r  Literal['both', 'none']rO   c                C  s    ddl m} |||||dkdS )Nr   )linspacer  )rU  rV  numendpoint)r]  r  )rr   rU  r  r  r  r  rZ   rZ   r\   _linear_space  s   z_ArrowHist._linear_spacero  c                 C  sP   t | j}|d  |d  }}||kr|d8 }|d7 }| |||d S )z6Prepare bins for histogram calculation from bin_count.r  r   r[  r
  )r   min_maxrv   rd   r  )rr   ro  dr0  r1  rZ   rZ   r\   _calculate_bins  s   z_ArrowHist._calculate_binsre  list[float] | _1DArrayc              	   C  s  | j }td|}t|dkr?tt|t|d t|t|d }t|t	
 }| jr:|d g|gdS d|giS dd l}|j||dd	}tt|t|d d|}|j|d
d\}}|dt|}	||	}
||||	 |
||	|< | jr|dd  |
dS d|
iS )Nrf  r5  r   r
  r{  r  rB  r  )sideT)return_counts)rv   r   r   r   r  r   r   r   r!  r   uint8r  r]  searchsortedr  r   rD  r   
zeros_likeisin)rr   re  r   is_between_binsrB  rb  bin_indicesobs_cats
obs_countsobj_catsr  rZ   rZ   r\   _calculate_hist  s(   
$

z_ArrowHist._calculate_histNr  )rW   rV   )r  r  rW   rR   )r  r  rW   r  )
rU  r  r  r  r  r  r  r  rW   rO   )ro  r  rW   rO   )re  r  rW   rR   )r  r  r  __annotations__r  r  r  r  r  r  r  rZ   rZ   rZ   r\   rj  r  s   
 




	
	rj  )r8   z-list[ScalarAny] | pa.Int64Array | list[float])rS   rT   rU   rV   rW   r>   )rS   r_   rU   rV   rW   r`   )rS   ra   rU   rV   rW   rb   )rS   rc   rU   rV   rW   r   )rS   r   rU   rV   rW   r   )n
__future__r   typingr   r   r   r   r   r   rw  r   pyarrow.computecomputer   narwhals._arrow.series_catr
   narwhals._arrow.series_dtr   narwhals._arrow.series_listr   narwhals._arrow.series_strr   narwhals._arrow.series_structr   narwhals._arrow.utilsr   r   r   r   r   r   r   r   r   r   r   r   narwhals._compliantr   r    narwhals._typing_compatr!   narwhals._utilsr"   r#   r$   r%   r&   narwhals.dependenciesr'   narwhals.exceptionsr(   r)   collections.abcr*   r+   r,   typesr-   r  r  r  r  typing_extensionsr.   r/   r0   r  r2   r   r4   narwhals._arrow.typingr5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   narwhals._compliant.seriesr@   narwhals._typingrA   rB   rC   narwhals.dtypesrD   narwhals.typingrE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   r  r]   rh   rj  rZ   rZ   rZ   r\   <module>   sf     84<

       
|