
    g                       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r0d 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lm'Z' d dl(m)Z) d'dZ* G d de)      Z+ G d d       Z, G d! d"      Z- G d# d$      Z. G d% d&      Z/y)(    )annotations)TYPE_CHECKING)Any)Iterable)Iterator)Literal)Sequence)overload)broadcast_and_extract_native)cast_for_truediv)floordiv_compat)narwhals_to_native_dtype)native_to_narwhals_dtype)
pad_series)parse_datetime_format)Implementation)generate_temporary_column_name)import_dtypes_module)validate_backend_version)
ModuleTypeN)SelfArrowDataFrameArrowNamespace)DType)Version)CompliantSeriesc                6     |r t         d fd             S  S )Nas_pyc                      S N )values   K/var/www/openai/venv/lib/python3.12/site-packages/narwhals/_arrow/series.py<lambda>z)maybe_extract_py_scalar.<locals>.<lambda>(   s    u    )getattr)r$   return_py_scalars   ` r%   maybe_extract_py_scalarr*   &   s    5wug}577Lr'   c                     e Zd Z	 	 	 	 	 	 	 	 	 	 	 	 dwdZdxdZdydZe	 	 	 	 	 	 	 	 	 	 	 	 dzd       Zd{dZd|dZ	d}dZ
d}dZd~d	Zd~d
Zd~dZd~dZd~dZd~dZd~dZd~dZd~dZd~dZd~dZd~dZd~dZd~dZd~dZd~dZd~dZd~dZd~dZd~dZd~dZ d~dZ!ddZ"d d!dd"Z#d~d#Z$d d!dd$Z%d d!dd%Z&d d!dd&Z'd d!dd'Z(d d!dd(Z)d d!dd)Z*d d!dd*Z+dd+Z,dd,Z-d d!dd-Z.d d!dd.Z/d d!dd/Z0d d!dd0Z1d d!dd1Z2dd2Z3e4dd3       Z5dd4Z6e7dd5       Z8e7dd6       Z8dd7Z8dd8Z9dd9Z:ddd;Z;dd<Z<dd=Z=e4dd>       Z>dd?Z?dd@Z@ddAZAddBZBd d!ddCZCd d!ddDZD	 d	 	 	 	 	 	 	 ddEZEddFZFddGZGddHZHddIZId d!ddJZJddKZKddLZLd~dMZMddNZNdddOZOdPdPd:dPdQ	 	 	 	 	 	 	 	 	 	 	 ddRZPddSZQ	 	 	 	 	 	 	 	 	 	 	 	 ddTZR	 	 	 	 	 	 	 	 	 	 ddUZSddVZTddWZUddXZVddYZWddZZXdd[ZYdd\ZZdd]Z[	 	 	 	 	 	 	 	 dd^Z\dd_Z]dd`Z^d d!	 	 	 	 	 	 	 	 	 ddaZ_dddbZ`	 	 	 	 	 	 	 	 ddcZadddZbddeZcddfZdddgZeddhZfddiZgddjZh	 	 	 	 	 	 	 	 	 	 ddkZi	 	 	 	 	 	 	 	 	 	 ddlZj	 	 	 	 	 	 	 	 	 	 	 	 ddmZk	 	 	 	 	 	 	 	 	 	 	 	 ddnZl	 	 	 	 	 	 	 	 ddoZmddpZnddqZoe4ddr       Zpe4dds       Zqe4ddt       Zre4ddu       Zse4ddv       Zty:)ArrowSeriesc                   || _         || _        t        j                  | _        || _        || _        t        | j                  | j
                         y r"   )_name_native_seriesr   PYARROW_implementation_backend_version_versionr   )selfnative_seriesnamebackend_versionversions        r%   __init__zArrowSeries.__init__-   sF     
+-55 / !5!5t7L7LMr'   c                h    | j                  | j                  | j                  | j                  |      S Nr6   r7   r8   )	__class__r/   r.   r2   )r4   r8   s     r%   _change_versionzArrowSeries._change_version<   s4    ~~ 11	  
 	
r'   c                    dd l }t        ||j                        r |j                  |g      }| j	                  || j
                  | j                  | j                        S Nr   r<   )pyarrow
isinstanceArraychunked_arrayr=   r.   r2   r3   )r4   seriespas      r%   _from_native_serieszArrowSeries._from_native_seriesD   sW    fbhh'%R%%vh/F~~ 11MM	  
 	
r'   c               D    dd l } |  |j                  |g      |||      S r@   )rA   rD   )clsdatar6   r7   r8   rF   s         r%   _from_iterablezArrowSeries._from_iterableP   s/     	BdV$+	
 	
r'   c                J    ddl m}  || j                  | j                        S )Nr   r   r7   r8   )narwhals._arrow.namespacer   r2   r3   )r4   r   s     r%   __narwhals_namespace__z"ArrowSeries.__narwhals_namespace__b   s!    < 114==
 	
r'   c                ,    t        | j                        S r"   lenr/   r4   s    r%   __len__zArrowSeries.__len__i   s    4&&''r'   c                    dd l m} t        | || j                        \  }}| j	                  |j                  ||            S Nr   )pyarrow.computecomputer   r2   rG   equalr4   otherpcsers       r%   __eq__zArrowSeries.__eq__l   9    $1$t?T?TU
U''e(<==r'   c                    dd l m} t        | || j                        \  }}| j	                  |j                  ||            S rV   )rW   rX   r   r2   rG   	not_equalrZ   s       r%   __ne__zArrowSeries.__ne__r   9    $1$t?T?TU
U''S%(@AAr'   c                    dd l m} t        | || j                        \  }}| j	                  |j                  ||            S rV   )rW   rX   r   r2   rG   greater_equalrZ   s       r%   __ge__zArrowSeries.__ge__x   s;    $1$t?T?TU
U''(8(8e(DEEr'   c                    dd l m} t        | || j                        \  }}| j	                  |j                  ||            S rV   )rW   rX   r   r2   rG   greaterrZ   s       r%   __gt__zArrowSeries.__gt__~   s9    $1$t?T?TU
U''

3(>??r'   c                    dd l m} t        | || j                        \  }}| j	                  |j                  ||            S rV   )rW   rX   r   r2   rG   
less_equalrZ   s       r%   __le__zArrowSeries.__le__   9    $1$t?T?TU
U''c5(ABBr'   c                    dd l m} t        | || j                        \  }}| j	                  |j                  ||            S rV   )rW   rX   r   r2   rG   lessrZ   s       r%   __lt__zArrowSeries.__lt__   s9    $1$t?T?TU
U''U(;<<r'   c                    dd l m} t        | || j                        \  }}| j	                  |j                  ||            S rV   rW   rX   r   r2   rG   
and_kleenerZ   s       r%   __and__zArrowSeries.__and__   rm   r'   c                    dd l m} t        | || j                        \  }}| j	                  |j                  ||            S rV   rr   rZ   s       r%   __rand__zArrowSeries.__rand__   s9    $1$t?T?TU
U''eS(ABBr'   c                    dd l m} t        | || j                        \  }}| j	                  |j                  ||            S rV   rW   rX   r   r2   rG   	or_kleenerZ   s       r%   __or__zArrowSeries.__or__   rc   r'   c                    dd l m} t        | || j                        \  }}| j	                  |j                  ||            S rV   rx   rZ   s       r%   __ror__zArrowSeries.__ror__   s9    $1$t?T?TU
U''UC(@AAr'   c                    dd l m} t        | || j                        \  }}| j	                  |j                  ||            S rV   )rW   rX   r   r2   rG   addrZ   s       r%   __add__zArrowSeries.__add__   s9    $1$t?T?TU
U''sE(:;;r'   c                    | |z   S r"   r#   r4   r[   s     r%   __radd__zArrowSeries.__radd__       e|r'   c                    dd l m} t        | || j                        \  }}| j	                  |j                  ||            S rV   )rW   rX   r   r2   rG   subtractrZ   s       r%   __sub__zArrowSeries.__sub__   9    $1$t?T?TU
U''C(?@@r'   c                    | |z
  dz  S )Nr#   r   s     r%   __rsub__zArrowSeries.__rsub__   s    u$$r'   c                    dd l m} t        | || j                        \  }}| j	                  |j                  ||            S rV   )rW   rX   r   r2   rG   multiplyrZ   s       r%   __mul__zArrowSeries.__mul__   r   r'   c                    | |z  S r"   r#   r   s     r%   __rmul__zArrowSeries.__rmul__   r   r'   c                    dd l m} t        | || j                        \  }}| j	                  |j                  ||            S rV   rW   rX   r   r2   rG   powerrZ   s       r%   __pow__zArrowSeries.__pow__   r_   r'   c                    dd l m} t        | || j                        \  }}| j	                  |j                  ||            S rV   r   rZ   s       r%   __rpow__zArrowSeries.__rpow__   s9    $1$t?T?TU
U''(<==r'   c                l    t        | || j                        \  }}| j                  t        ||            S r"   r   r2   rG   r   r4   r[   r]   s      r%   __floordiv__zArrowSeries.__floordiv__   s2    1$t?T?TU
U''U(CDDr'   c                l    t        | || j                        \  }}| j                  t        ||            S r"   r   r   s      r%   __rfloordiv__zArrowSeries.__rfloordiv__   s2    1$t?T?TU
U''s(CDDr'   c                   dd l }dd lm} t        | || j                        \  }}t        ||j                  |j                  f      s |j                  |      }| j                   |j                  t        ||             S rV   rA   rW   rX   r   r2   rB   rC   ChunkedArrayscalarrG   divider   r4   r[   rF   r\   r]   s        r%   __truediv__zArrowSeries.__truediv__   sk    $1$t?T?TU
U%"((BOO!<=BIIe$E''			3CC3O(PQQr'   c                   dd l }dd lm} t        | || j                        \  }}t        ||j                  |j                  f      s |j                  |      }| j                   |j                  t        ||             S rV   r   r   s        r%   __rtruediv__zArrowSeries.__rtruediv__   sk    $1$t?T?TU
U%"((BOO!<=BIIe$E''			3CE33O(PQQr'   c                    dd l m} | |z  j                  }t        | || j                        \  }}|j                  ||j                  ||            }| j                  |      S rV   rW   rX   r/   r   r2   r   r   rG   r4   r[   r\   	floor_divr]   ress         r%   __mod__zArrowSeries.__mod__   sX    $U]22	1$t?T?TU
Ukk#r{{9e<='',,r'   c                    dd l m} || z  j                  }t        | || j                        \  }}|j                  ||j                  ||            }| j                  |      S rV   r   r   s         r%   __rmod__zArrowSeries.__rmod__   sX    $d]22	1$t?T?TU
Ukk%Y!<='',,r'   c                b    dd l m} | j                  |j                  | j                              S rV   )rW   rX   rG   invertr/   r4   r\   s     r%   
__invert__zArrowSeries.__invert__   %    $''		$2E2E(FGGr'   T)_return_py_scalarc               @    t        t        | j                        |      S r"   )r*   rR   r/   r4   r   s     r%   rR   zArrowSeries.len   s    &s4+>+>'?ARSSr'   c                    t        |t              rt        d |D              st        | || j                        \  }}n| j
                  }| j                  |j                  |            S )Nc              3  <   K   | ]  }t        |t                y wr"   )rB   bool.0xs     r%   	<genexpr>z%ArrowSeries.filter.<locals>.<genexpr>  s     /SU
1d0CUs   )rB   listallr   r2   r/   rG   filterr   s      r%   r   zArrowSeries.filter  sV    5$'C/SU/S,S5dE4CXCXYJC%%C''

5(9::r'   c               X    dd l m} t        |j                  | j                        |      S rV   )rW   rX   r*   meanr/   r4   r   r\   s      r%   r   zArrowSeries.mean
  s"    $&rwwt/B/B'CEVWWr'   c                   dd l m} ddlm} | j                  j                         s
d} ||      t        |j                  | j                        |      S )Nr   InvalidOperationErrorz<`median` operation not supported for non-numeric input type.)	rW   rX   narwhals.exceptionsr   dtype
is_numericr*   approximate_medianr/   )r4   r   r\   r   msgs        r%   medianzArrowSeries.median  sL    $=zz$$&PC',,&!!$"5"568I
 	
r'   c               X    dd l m} t        |j                  | j                        |      S rV   )rW   rX   r*   minr/   r   s      r%   r   zArrowSeries.min  "    $&rvvd.A.A'BDUVVr'   c               X    dd l m} t        |j                  | j                        |      S rV   )rW   rX   r*   maxr/   r   s      r%   r   zArrowSeries.max!  r   r'   c                   dd l m} |j                  | j                  |j	                  | j                              }t        ||      S rV   )rW   rX   indexr/   r   r*   )r4   r   r\   	index_mins       r%   arg_minzArrowSeries.arg_min&  8    $HHT00"&&9L9L2MN	&y2CDDr'   c                   dd l m} |j                  | j                  |j	                  | j                              }t        ||      S rV   )rW   rX   r   r/   r   r*   )r4   r   r\   	index_maxs       r%   arg_maxzArrowSeries.arg_max,  r   r'   c               \    dd l m} t        |j                  | j                  d      |      S Nr   )	min_count)rW   rX   r*   sumr/   r   s      r%   r   zArrowSeries.sum2  +    $&FF4&&!F46G
 	
r'   c                b    dd l m} | j                  |j                  | j                              S rV   )rW   rX   rG   	drop_nullr/   r   s     r%   
drop_nullszArrowSeries.drop_nulls9  %    $''T5H5H(IJJr'   c                \   dd l }| j                  }|dkD  r? |j                   |j                  ||j                        g|d |  j
                        }nH|dk  rA |j                  g || d  j
                   |j                  | |j                              }n|}| j                  |      S rV   )rA   r/   concat_arraysnullstypechunksrG   )r4   nrF   caresults        r%   shiftzArrowSeries.shift>  s      q5%R%%xrxx277';&Mb1"gnn&MNFU%R%%&NA23&N!RWW8M&NOFF''//r'   c               \    dd l m} t        |j                  | j                  |      |      S Nr   )ddof)rW   rX   r*   stddevr/   r4   r   r   r\   s       r%   stdzArrowSeries.stdK  s+    $&IId))I57H
 	
r'   c               \    dd l m} t        |j                  | j                  |      |      S r   )rW   rX   r*   variancer/   r   s       r%   varzArrowSeries.varR  s+    $&KK++$K79J
 	
r'   c          	        dd l m} | j                  }|j                  |      }t	        |      dk(  ry t	        |      dk(  rt        d      S t	        |      dk(  ry|j                  ||j                  |            }|j                  |j                  |d            }|j                  |j                  |d            }t        |j                  ||j                  |d            |      S )Nr      nan   g           g      ?)rW   rX   r/   r   rR   floatr   r   r   r*   r   )r4   r   r\   r]   ser_not_nullmm2m3s           r%   skewzArrowSeries.skewY  s    $!!||C(|!!#<!#L"'',*?@A!Q(B!Q(B*		"bhhr3/02C r'   c               X    dd l m} t        |j                  | j                        |      S rV   )rW   rX   r*   countr/   r   s      r%   r   zArrowSeries.countm  s"    $&rxx0C0C'DFWXXr'   c               ~    dd l m} |j                  | j                        }t	        |j                  |d      |      S )Nr   r   )mode)rW   rX   uniquer/   r*   r   )r4   r   r\   unique_valuess       r%   n_uniquezArrowSeries.n_uniquer  s9    $		$"5"56&HH]H/1B
 	
r'   c                    | j                   t        j                  u r| j                   j                         S dt	        | j                          }t        |      )NzExpected pyarrow, got: )r1   r   r0   to_native_namespacer   AssertionError)r4   r   s     r%   __native_namespace__z ArrowSeries.__native_namespace__z  sN    >#9#99'';;=='T-A-A(B'CDS!!r'   c                    | j                   S r"   )r.   rS   s    r%   r6   zArrowSeries.name  s    zzr'   c                    | S r"   r#   rS   s    r%   __narwhals_series__zArrowSeries.__narwhals_series__  s    r'   c                     y r"   r#   r4   idxs     r%   __getitem__zArrowSeries.__getitem__  s    25r'   c                     y r"   r#   r  s     r%   r  zArrowSeries.__getitem__  s    EHr'   c                   t        |t              rt        | j                  |   d      S t        |t              r*| j                  | j                  j                  |            S | j                  | j                  |         S )NTr)   )rB   intr*   r/   r	   rG   taker  s     r%   r  zArrowSeries.__getitem__  ss    c3*##C(4  c8$++D,?,?,D,DS,IJJ''(;(;C(@AAr'   c                   dd l }dd l}dd lm}  |j                  | j                         t              }d||<   t        || j                        rt        | || j                        \  }}n| j                  }t        ||j                        r|j                         }t        ||j                        s |j                  |      }|j!                  |||j#                  |            }| j%                  |      S )Nr   )r   T)numpyrA   rW   rX   zerosrR   r   rB   r=   r   r2   r/   r   combine_chunksrC   arrayreplace_with_maskr  rG   )	r4   indicesvaluesnprF   r\   maskr]   r   s	            r%   scatterzArrowSeries.scatter  s    $rxx
$/Wfdnn-6fd33KC %%Cfboo.**,F&"((+RXXf%F%%c4W1EF''//r'   c                6    | j                   j                         S r"   )r/   	to_pylistrS   s    r%   to_listzArrowSeries.to_list  s    "",,..r'   Nc                <    | j                   j                  ||      S )N)r   copy)r/   	__array__)r4   r   r$  s      r%   r%  zArrowSeries.__array__  s    "",,5t,DDr'   c                6    | j                   j                         S r"   )r/   to_numpyrS   s    r%   r'  zArrowSeries.to_numpy  s    ""++--r'   c                h    | j                  | j                  || j                  | j                        S r;   )r=   r/   r2   r3   )r4   r6   s     r%   aliaszArrowSeries.alias  s4    ~~ 11MM	  
 	
r'   c                V    t        | j                  j                  | j                        S r"   )r   r/   r   r3   rS   s    r%   r   zArrowSeries.dtype  s    '(;(;(@(@$--PPr'   c                b    dd l m} | j                  |j                  | j                              S rV   )rW   rX   rG   absr/   r   s     r%   r,  zArrowSeries.abs  s%    $''t/B/B(CDDr'   c                   dd l m} | j                  }|s|j                  |d      n|j                  |d d d   d      d d d   }| j	                  |      S )Nr   T
skip_nullsr   )rW   rX   r/   cumulative_sumrG   )r4   reverser\   r5   r   s        r%   cum_sumzArrowSeries.cum_sum  sg    $++  m=""=2#64"H2N 	
 ''//r'   c                h    dd l m} | j                  |j                  | j                  |d            S )Nr   half_towards_infinity)
round_mode)rW   rX   rG   roundr/   )r4   decimalsr\   s      r%   r6  zArrowSeries.round  s1    $''HHT(((?VHW
 	
r'   c                ~    dd l m} | j                  |j                  | j                  j                                     S rV   )rW   rX   rG   pairwise_diffr/   r  r   s     r%   diffzArrowSeries.diff  s5    $''T00??AB
 	
r'   c               \    dd l m} t        |j                  | j                  d      |      S r   )rW   rX   r*   anyr/   r   s      r%   r<  zArrowSeries.any  r   r'   c               \    dd l m} t        |j                  | j                  d      |      S r   )rW   rX   r*   r   r/   r   s      r%   r   zArrowSeries.all  r   r'   c                   dd l m} | j                  }t        | || j                        \  }}t        | || j                        \  }}|dk(  r7|j                  ||      }|j                  ||      }|j                  ||      }	n|dk(  r7|j                  ||      }
|j                  ||      }|j                  |
|      }	n~|dk(  r7|j                  ||      }
|j                  ||      }|j                  |
|      }	nB|dk(  r7|j                  ||      }|j                  ||      }|j                  ||      }	nt        | j                  |	      S )Nr   leftrightnoneboth)rW   rX   r/   r   r2   re   ro   rs   rh   rk   r  rG   )r4   lower_boundupper_boundclosedr\   r]   _geltr   gtles               r%   
is_betweenzArrowSeries.is_between  sG    	%!!5+t44
; 6+t44
; V!!#{3Bk*B--B'CwC-BsK0B--B'CvC-Bk*B--B'Cv!!#{3BsK0B--B'C  '',,r'   c                    t        |       dk(  S rV   )rR   rS   s    r%   is_emptyzArrowSeries.is_empty  s    4yA~r'   c                X    | j                   }| j                  |j                               S r"   )r/   rG   is_null)r4   r]   s     r%   rO  zArrowSeries.is_null  s$    !!''66r'   c                b    dd l m} | j                  |j                  | j                              S rV   )rW   rX   rG   is_nanr/   r   s     r%   rQ  zArrowSeries.is_nan  r   r'   c                    dd l m} | j                  }t        || j                        }| j                  |j                  ||            S rV   )rW   rX   r/   r   r3   rG   cast)r4   r   r\   r]   s       r%   rS  zArrowSeries.cast  s<    $!!(>''U(;<<r'   c               B    t        | j                  j                  |      S r"   )r*   r/   
null_countr   s     r%   rU  zArrowSeries.null_count  s    &t':':'E'EGXYYr'   c           
         | j                   }|dk\  r!| j                  |j                  d|            S t        |      }| j                  |j                  dt	        d||z                     S rV   )r/   rG   slicerR   r   r4   r   r]   num_rowss       r%   headzArrowSeries.head"  s_    !!6++CIIaO<<3xH++CIIaQ19M,NOOr'   c           	         | j                   }|dk\  r8t        |      }| j                  |j                  t	        d||z
                    S | j                  |j                  t        |                  S rV   )r/   rR   rG   rW  r   r,  rX  s       r%   tailzArrowSeries.tail*  s`    !!63xH++CIIc!X\6J,KLL++CIIc!f,=>>r'   c                    dd l }dd lm}  |j                  |      }| j                  }| j                  |j                  ||            S )Nr   )	value_set)rA   rW   rX   r  r/   rG   is_in)r4   r[   rF   r\   r^  r]   s         r%   r_  zArrowSeries.is_in2  s@    $BHHUO	!!''	(JKKr'   c                    dd l }| j                  } |j                  |      }| j                  || j                  | j
                  | j                        S r@   )r  r/   flatnonzerorK   r6   r2   r3   )r4   r  r]   r   s       r%   arg_truezArrowSeries.arg_true:  sR    !!bnnS!"" 11MM	 # 
 	
r'   c                    |Bt        |       dk7  rdt        |        d}t        |      t        | j                  d   d      S t        | j                  |   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   Tr  )rR   
ValueErrorr*   r/   )r4   r   r   s      r%   itemzArrowSeries.itemF  sn    =4yA~NNQRVi[XY[  !o%*4+>+>q+ATXYY&t':':5'ATXYYr'   F)sortparallelr6   	normalizec                  ddl }ddlm} ddlm} | j
                  dn| j
                  }|xs |rdnd}	|j                  | j                        }
|
j                  d      }|
j                  d      }|r( |j                  t        ||j                  |             }|j                  j                  ||g||	g	      }
|r|
j                  |	d
fg      }
 ||
| j                  | j                         S )z-Parallel is unused, exists for compatibility.r   Nr   r   
proportionr   r  countsnames
descendingrM   )rA   rW   rX   narwhals._arrow.dataframer   r.   value_countsr/   fieldr   r   r   Tablefrom_arrayssort_byr2   r3   )r4   rg  rh  r6   ri  rF   r\   r   index_name_value_name_	val_countr  rl  s                r%   rq  zArrowSeries.value_countsQ  s     	$<!%!3gFy|gOOD$7$78	**RYY 0 HIFHH((V[+$> ) 
	 !))K+F*GHIt'<'<dmm
 	
r'   c                    dd l m} |j                  j                         }| j	                  |j                  || j                  |j                              S rV   )rW   rX   r/   r  rG   if_else)r4   r  r[   r\   s       r%   zip_withzArrowSeries.zip_witht  sM    $""113''JJ##$$
 	
r'   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  rW   rX   r/   rR   r  randomdefault_rngarangechoicerG   r  )r4   r   fractionwith_replacementr}  r  r\   r]   rY  rngr  r  s               r%   samplezArrowSeries.sample  s     	$!!t99-Hx'(Aii###.bii8$zz#A/?z@''T(:;;r'   c           	       	
 dd l 	dd l
dd lm 	 d	 	 	 	 	 	 	 d	
fd}| j                  }|j
                  }|4| j                  j                  | 
j                  ||                  }|S |6|dk(  rj                  nj                  }| j                   ||            }|S | j                   ||||            }|S )Nr   c                j   	j                  |       } j                   j                  t        |              j                               }|dk(  r3j
                  j                   j                  ||d            }||z
  }nMj                  j                   j                  |d d d   |d d d   t        |                   d d d   }||z
  }	j                  	j                  	j                  |       	j                  | j                  |                  | j                  |      |       S )Nr   forwardr   )is_validr  r  rR   int64maximum
accumulatewhereminimumrz  and_rO  rk   r   r  )
arrlimit	direction
valid_maskr  valid_indexdistancer  rF   r\   s
          r%   fill_auxz'ArrowSeries.fill_null.<locals>.fill_aux  s    S)JbhhyryyS2DGI% jj33HBHHZRT4UV"[0 jj33BHHZ"-wtt}c#hGB$ '0::JJsOMM(IBIIe,<= % r'   r  r"   )r  pa.Arrayr  r  r  %Literal['forward', 'backward'] | Nonereturnr  )r  rA   rW   rX   r/   r   rG   	fill_nullr   fill_null_forwardfill_null_backward)r4   r$   strategyr  r  r]   r   res_ser	fill_funcr  rF   r\   s            @@@r%   r  zArrowSeries.fill_null  s     	$
 @D			 =	 		6 !!..r||C5RWAX/YZG  ](0I(=$$2CXCX  ..y~>G  ..xUH/MNGr'   c                    dd l }ddlm} |j                  j	                  | j
                  g| j                  g      } ||| j                  | j                        S )Nr   r   rm  rM   )	rA   rp  r   rs  rt  r/   r6   r2   r3   )r4   rF   r   dfs       r%   to_framezArrowSeries.to_frame  sN    <XX!!4#6#6"7		{!K 5 5t}}
 	
r'   c                Z    dd l } |j                  | j                  | j                        S )Nr   )r6   )pandasSeriesr/   r6   )r4   pds     r%   	to_pandaszArrowSeries.to_pandas  s"    ryy,,499==r'   c                p    | j                         j                         j                  | j                        S r"   )r  is_duplicatedr)  r6   rS   s    r%   r  zArrowSeries.is_duplicated  s&    }},,.44TYY??r'   c                p    | j                         j                         j                  | j                        S r"   )r  	is_uniquer)  r6   rS   s    r%   r  zArrowSeries.is_unique  s&    }}((*00;;r'   c                   dd l }dd l}dd lm}  |j                   |j
                  t        |                   }t        d| j                  g      }|j                  j                  | j                  g| j                  g      j                  ||      j                  | j                        j                  |dfg      j                  | d      }| j!                  |j#                  ||            S )Nr      n_bytescolumnsrm  r   _minr  rA   rW   rX   r  r  rR   r   r6   rs  rt  r/   append_columngroup_by	aggregatecolumnrG   r_  )r4   r  rF   r\   
row_number	col_tokenfirst_distinct_indexs          r%   is_first_distinctzArrowSeries.is_first_distinct  s    $RXXibiiD	23
21tyykR	HH  $"5"5!6tyyk J]9j1Xdii YE*+,Vyk&' 	 ''=Q(RSSr'   c                   dd l }dd l}dd lm}  |j                   |j
                  t        |                   }t        d| j                  g      }|j                  j                  | j                  g| j                  g      j                  ||      j                  | j                        j                  |dfg      j                  | d      }| j!                  |j#                  ||            S )Nr   r  r  rm  r   _maxr  )r4   r  rF   r\   r  r  last_distinct_indexs          r%   is_last_distinctzArrowSeries.is_last_distinct  s    $RXXibiiD	23
21tyykR	HH  $"5"5!6tyyk J]9j1Xdii YE*+,Vyk&' 	 ''=P(QRRr'   c               4   t        |t              sdt        |       }t        |      dd lm} | j                  }|r(|j                  |j                  |d d |dd              }n'|j                  |j                  |d d |dd              }t        |d      S )Nz/argument 'descending' should be boolean, found r   r   r   Tr  )rB   r   r   	TypeErrorrW   rX   r/   r   re   rk   r*   )r4   ro  r   r\   r]   r   s         r%   	is_sortedzArrowSeries.is_sorted  s    *d+CDDTCUVCC. $!!VVB,,S"Xs12w?@FVVBMM#cr(CG<=F&vEEr'   c               b    dd l m} | j                  |j                  | j                              S rV   )rW   rX   rG   r  r/   )r4   maintain_orderr\   s      r%   r  zArrowSeries.unique  s'     	%''		$2E2E(FGGr'   c               Z   dd l }dd lm} |j                  | j                   |j
                  |            }|j                   |j
                  |      |      }|%|j                  t        || j                               | j                  |      }|j                         j                         | j                         j                         k7  r]d| j                  | j                          |j                         z        j                  d      j                          }	t!        |	      |S )Nr   zYreplace_strict did not replace all non-null values.

The following did not get replaced: F)r  )rA   rW   rX   index_inr/   r  r  rS  r   r3   rG   rO  r   r   r  r"  re  )
r4   oldnewreturn_dtyperF   r\   idxsresult_nativer   r   s
             r%   replace_strictzArrowSeries.replace_strict  s     	$ {{4..>t4#7dmmTU))-8>>!T\\^%7%7%997;;1AABIIY^I_ggijl 
 S/!r'   c                   dd l m} | j                  }|rdnd}|rdnd}|j                  |||      }| j	                  |j                  ||            S )Nr   ro  	ascendingat_endat_start)ordernull_placement)rW   rX   r/   array_sort_indicesrG   r  )r4   ro  
nulls_lastr\   rE   r  r  sorted_indicess           r%   rg  zArrowSeries.sort+  s\    $$$ *%/Z..% / 
 ''(GHHr'   c          	        dd l }dd l}ddlm} | j                  }| j
                  }|j                  d      j                         } |j                  t        |j                        t        |      f|j                        }	d|	|j                   |j                  t        |            f<   | | d| | d}}
|j                  D cg c]"  }|
|ij                  | | | | | |       $ }}||v r.|gt        |D cg c]
  }||k7  s	| c}      t!        |      d  nt        |      t!        |      d  }  ||j"                  j%                  |	|      | j&                  | j(                  	      j*                  | S c c}w c c}w )
Nr   r   encode)null_encodingr   Nonenullrm  rM   )r  rA   rp  r   r/   r.   dictionary_encoder  r  rR   
dictionaryint8r  r  getsortedr  rs  rt  r2   r3   select)r4   	separator
drop_firstr  rF   r   rE   r6   dar  null_col_panull_col_plvcolscoutput_orders                   r%   
to_dummieszArrowSeries.to_dummies7  s   <$$zz%%H%=LLN"((C.B8"''B23

IBIIc"g../&*VI;d#;vi[PT=U[
 ]]	
 # +&**&A3'D6)QC)@ #	 	 
 d" D=DqA,<D=>s:?PQ
 c*o/0 	~HH   5 11MM
 &,	  	 
 >s   'F 
F
F
c               d    dd l m} t        |j                  | j                  ||      d   |      S )Nr   )qinterpolation)rW   rX   r*   quantiler/   )r4   r  r  r   r\   s        r%   r  zArrowSeries.quantileY  s5     	%&KK++x}KUVWX
 	
r'   c                D    | j                  | j                  |d |         S r"   )rG   r/   )r4   r   offsets      r%   gather_everyzArrowSeries.gather_everyg  s$    ''(;(;FIAI(FGGr'   c                    dd l m} | j                  }t        | || j                        \  }}t        | || j                        \  }}|j                  ||      }|j                  ||      }| j                  |      S rV   )rW   rX   r/   r   r2   max_element_wisemin_element_wiserG   )r4   rC  rD  r\   r  rF  s         r%   clipzArrowSeries.clipj  s     	%!!5+t44
; 6+t44
; !!#{3!!#{3'',,r'   c                6    | j                   j                         S r"   )r/   r  rS   s    r%   to_arrowzArrowSeries.to_arrow{  s    ""1133r'   c                   | j                         }t        d| j                  g      }| j                  |d      j	                  |j                  |      |j                  |      j                         k(        | j                     S )Nr  r  F)r6   ri  )rO   r   r6   rq  r   colr   )r4   plxr  s      r%   r  zArrowSeries.mode~  st    ))+21tyykR	  i5 AHHGGI#'')"4"8"8"::

)) 	r'   c                b    dd l m} | j                  |j                  | j                              S rV   )rW   rX   rG   	is_finiter/   r   s     r%   r  zArrowSeries.is_finite  r   r'   c                   t        | j                        }| j                          j                  |j	                               j                  |      S )Nr1  )r   r3   rO  rS  UInt32r2  )r4   r1  dtypess      r%   	cum_countzArrowSeries.cum_count  s=    %dmm4%%fmmo6>>w>OOr'   c                   | j                   dk  rd}t        |      dd lm} | j                  }|s|j                  |d      n|j                  |d d d   d      d d d   }| j                  |      S )N   r   r   z4cum_min method is not supported for pyarrow < 13.0.0r   Tr.  r   )r2   NotImplementedErrorrW   rX   r/   cumulative_minrG   r4   r1  r   r\   r5   r   s         r%   cum_minzArrowSeries.cum_min        :-HC%c**$++  m=""=2#64"H2N 	
 ''//r'   c                   | j                   dk  rd}t        |      dd lm} | j                  }|s|j                  |d      n|j                  |d d d   d      d d d   }| j                  |      S Nr  z4cum_max method is not supported for pyarrow < 13.0.0r   Tr.  r   )r2   r  rW   rX   r/   cumulative_maxrG   r	  s         r%   cum_maxzArrowSeries.cum_max  r  r'   c                   | j                   dk  rd}t        |      dd lm} | j                  }|s|j                  |d      n|j                  |d d d   d      d d d   }| j                  |      S r  )r2   r  rW   rX   r/   cumulative_prodrG   r	  s         r%   cum_prodzArrowSeries.cum_prod  s      :-HC%c**$++  }>##M$B$$7D#I$B$O 	
 ''//r'   c                  dd l m} ||n|}t        | ||      \  }}|j                  d      j	                  d dd       }|dk7  r&||j                  |      j	                  dd d       z
  n|}|j                  d      }	|	|	j                  |      j	                  dd d       z
  }
| j                  |j                  |
|k\  j                  |j                  d             }||d  S Nr   window_sizecenterFr   r  r$   r  r  
rW   rX   r   r2  r  r   r  rG   rz  r/   r4   r  min_periodsr  r\   padded_seriesr  r2  rolling_sumvalid_countcount_in_windowr   s               r%   r  zArrowSeries.rolling_sum  s    	%%0%<k+ *4[QW Xv'''6@@$ A 
 a mmK(22TQU2VW 	 	 $--e-<%(9(9+(F(P(Pd$ )Q )
 
 ))JJ K/??**
 fgr'   c                  dd l m} ||n|}t        | ||      \  }}|j                  d      j	                  d dd       }|dk7  r&||j                  |      j	                  dd d       z
  n|}|j                  d      }	|	|	j                  |      j	                  dd d       z
  }
| j                  |j                  |
|k\  j                  |j                  d             |
z  }||d  S r  r  r  s               r%   rolling_meanzArrowSeries.rolling_mean  s'    	%%0%<k+ *4[QW Xv'''6@@$ A 
 a mmK(22TQU2VW 	 	 $--e-<%(9(9+(F(P(Pd$ )Q )
 

 $$

$3CC..  	 fgr'   c                  dd l m} ||n|}t        | ||      \  }}|j                  d      j	                  d dd       }|dk7  r&||j                  |      j	                  dd d       z
  n|}	|j                  d      j                  d      j	                  d dd       }
|dk7  r&|
|
j                  |      j	                  dd d       z
  n|
}|j                  d      }||j                  |      j	                  dd d       z
  }| j                  |j                  ||k\  j                  ||	dz  |z  z
  j                  d             | j                  |j                  ||z
  j                  d            z  }||d  S )Nr   r  Fr   r  r  r   )rW   rX   r   r2  r  r   r   r  rG   rz  r/   r  )r4   r  r  r  r   r\   r  r  r2  r  
cum_sum_sqrolling_sum_sqr  r  r   s                  r%   rolling_varzArrowSeries.rolling_var	  s    	%%0%<k+ *4[QW Xv'''6@@$ A 
 a mmK(22TQU2VW 	 	 !!!$WUW#YTITYB 	 a {+55ATX5YZ 	 	 $--e-<%(9(9+(F(P(Pd$ )Q )
 
 ))JJ K/??;>O#CDTT
 $$4!7 G GK

 fgr'   c               2    | j                  ||||      dz  S )N)r  r  r  r   g      ?)r%  )r4   r  r  r  r   s        r%   rolling_stdzArrowSeries.rolling_std=  s0     '[VZ   	
r'   c               `   |dk(  rd}t        |      dd l}dd lm} |rdnd}|dk(  rdn|}| j                  }| j
                  dk  r|j                         }|j                  |      }	|j                  |||	      }
|j                  |	 |j                  d       |
      }| j                  |      S )
Naveragez`rank` with `method='average' is not supported for pyarrow backend. The available methods are {'min', 'max', 'dense', 'ordinal'}.r   ro  r  ordinalfirst)   r   r   )	sort_keys
tiebreaker)re  rA   rW   rX   r/   r2   r  rO  rankrz  r   rG   )r4   methodro  r   rF   r\   r-  r.  r5   	null_maskr/  r   s               r%   r/  zArrowSeries.rankL  s     YP  S/!$$.LK	 &) 3W
++  :-)88:MJJ}-	ww}	jwQIyryy=''//r'   c              #  b   K   d | j                   j                         D        E d {    y 7 w)Nc              3  6   K   | ]  }t        |d         yw)Tr  N)r*   r   s     r%   r   z'ArrowSeries.__iter__.<locals>.<genexpr>k  s"      
3 $A==3s   )r/   __iter__rS   s    r%   r4  zArrowSeries.__iter__j  s,     
((113
 	
 	
s   %/-/c                h   ddl m} ddl m} ddl m} 	 dd l }dd lm} | j                  }| |j                  |      n |j                  d |j                        }t        |j                  ||      d      S # |||f$ r0}	ddlm}
 d	t        |       d
| j                   d} |
|      |	d }	~	ww xY w)Nr   )ArrowInvalid)ArrowNotImplementedError)ArrowTypeErrorr  Tr  r   z Unable to compare other of type z with series of type .)rA   r6  r7  r8  rW   rX   r/   r   r   r*   r_  r   r   r   )r4   r[   r6  r7  r8  rF   r\   r5   other_excr   r   s               r%   __contains__zArrowSeries.__contains__p  s    (4*	6 ( //M $ 		% RYYt-*<*<= 
 +/!%  6G 	6A4T%[MAVW[WaWaVbbcdC',#5		6s   A$A9 9B1+B,,B1c                .    t        | j                        fS r"   rQ   rS   s    r%   shapezArrowSeries.shape  s    D''(**r'   c                    t        |       S r"   )ArrowSeriesDateTimeNamespacerS   s    r%   dtzArrowSeries.dt  s    +D11r'   c                    t        |       S r"   )ArrowSeriesCatNamespacerS   s    r%   catzArrowSeries.cat  s    &t,,r'   c                    t        |       S r"   )ArrowSeriesStringNamespacerS   s    r%   strzArrowSeries.str  s    )$//r'   c                    t        |       S r"   )ArrowSeriesListNamespacerS   s    r%   r   zArrowSeries.list  s    '--r'   )r4   r   r5   zpa.ChunkedArrayr6   rG  r7   tuple[int, ...]r8   r   r  r  )r4   r   r8   r   r  r   )r4   r   rE   zpa.ChunkedArray | pa.Arrayr  r   )rI   z
type[Self]rJ   zIterable[Any]r6   rG  r7   rJ  r8   r   r  r   )r4   r   r  r   )r4   r   r  r  )r4   r   r[   objectr  r   )r4   r   r[   r   r  r   )r4   r   r  r   )r4   r   r   r   r  r  r4   r   r  r,   )r4   r   r   r  r  r   )r4   r   r   r  r   r   r  r   )r4   r   r   r   r  float | None)r4   r   r  r   )r4   r   r  rG  )r4   r   r  r  r  r   )r4   r   r  zslice | Sequence[int]r  r   )r4   r   r  zint | slice | Sequence[int]r  z
Any | Self)r4   r   r  zint | Sequence[int]r  r   r  r   )r4   r   r  z	list[Any])NN)r4   r   r   r   r$  zbool | Noner  
np.ndarray)r4   r   r  rN  )r4   r   r6   rG  r  r   )r4   r   r  r   )r4   r   r1  r   r  r   )r4   r   r7  r  r  r   )r4   r   r   r   r  r   )rB  )rC  r   rD  r   rE  rG  r  r   )r4   r   r  r   )r4   r   r   r   r  r   r"   )r4   r   r   
int | Noner  r   )r4   r   rg  r   rh  r   r6   
str | Noneri  r   r  r   )r4   r   r  r   r[   r   r  r   )r4   r   r   rO  r  rM  r  r   r}  rO  r  r   )
r4   r   r$   z
Any | Noner  r  r  rO  r  r   )r4   r   r  r   )r4   r   r  z	pd.Series)r4   r   ro  r   r  r   )r4   r   r  r   r  r,   )r  Sequence[Any]r  rQ  r  zDType | Noner  r,   )r4   r   ro  r   r  r   r  r,   )r4   r   r  rG  r  r   r  r   )
r4   r   r  r   r  z;Literal['nearest', 'higher', 'lower', 'midpoint', 'linear']r   r   r  r   )r   )r4   r   r   r  r  r  r  r   )r4   r   rC  Self | Any | NonerD  rR  r  r   )r4   r   r  r  )
r4   r   r  r  r  rO  r  r   r  r   )r4   r   r  r  r  rO  r  r   r   r  r  r   )r4   r   r0  z4Literal['average', 'min', 'max', 'dense', 'ordinal']ro  r   r  r   )r4   r   r  zIterator[Any])r4   r   r[   r   r  r   )r4   r   r  z
tuple[int])r4   r   r  r@  )r4   r   r  rC  )r4   r   r  rF  )r4   r   r  rI  )u__name__
__module____qualname__r9   r>   rG   classmethodrK   rO   rT   r^   rb   rf   ri   rl   rp   rt   rv   rz   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rR   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  propertyr6   r  r
   r  r  r"  r%  r'  r)  r   r,  r2  r6  r:  r<  r   rK  rM  rO  rQ  rS  rU  rZ  r\  r_  rb  rf  rq  r{  r  r  r  r  r  r  r  r  r  r  r  rg  r  r  r  r  r  r  r  r  r
  r  r  r  r!  r%  r'  r/  r4  r<  r>  rA  rD  rG  r   r#   r'   r%   r,   r,   ,   s   NN&N 	N
 )N N 
N


 


 

 )
 
 

 
"
(>BF@C=CCBB<A%A>>EERR--H
 6: T; 7; X
 9= 
 6: W
 6: W
 :> E :> E 6: 
K
0 AE 
 AE 
 7; ( 8< Y
 ;? 
"   5 5H HB0(/E.
 Q QE
	0

 6: 
 6: 
 AG---0-:=-	-@7H
= =A ZP?L

	Z !
!
 !
 	!

 !
 !
 
!
F

<<< 	<
 < < 
<.222 82 	2
 
2h
>
@<T"S"FH '4GS	*
I  N #'


 S

  
 

H--!2-AR-	-"4K
P0 0 0 """  	"
 " 
"H%%%  	%
 % 
%N222  	2
 2 2 
2h


  	

 
 
 

00D0 	0
 
0<
62 + + 2 2 - - 0 0 . .r'   r,   c                      e Z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ZddZddZddZddZddZddZddZddZddZddZddZy)r@  c                    || _         y r"   _compliant_seriesr4   rE   s     r%   r9   z%ArrowSeriesDateTimeNamespace.__init__  
    !'r'   c                    dd l m} |j                  dd      j                  dd      }| j                  j	                  |j                  | j                  j                  |            S )Nr   z%S.%fz%Sz%S%.f)rW   rX   r  r[  rG   strftimer/   r4   formatr\   s      r%   	to_stringz&ArrowSeriesDateTimeNamespace.to_string  sW    $
 .66wE%%99KK..==vF
 	
r'   c                    dd l m} |6|j                  |j                  | j                  j
                        |      }n%|j                  | j                  j
                        }| j                  j                  |      S rV   )rW   rX   assume_timezonelocal_timestampr[  r/   rG   )r4   	time_zoner\   r   s       r%   replace_time_zonez.ArrowSeriesDateTimeNamespace.replace_time_zone  sl    $ ''""4#9#9#H#HI9F ''(>(>(M(MNF%%99&AAr'   c                   dd l }| j                  j                  j                  d| j	                  d      j
                  j                   |j                  | j                  j
                  j                  j                  |            }n^| j                  j
                  j                   |j                  | j                  j
                  j                  j                  |            }| j                  j                  |      S )Nr   UTC)rA   r[  r   rf  rg  r/   rS  	timestampr   unitrG   )r4   rf  rF   r   s       r%   convert_time_zonez.ArrowSeriesDateTimeNamespace.convert_time_zone  s    !!''119++E2AAFFT33BBGGLLiXF ++::??T33BBGGLLiXF %%99&AAr'   c                d   dd l }dd lm} | j                  j                  }| j                  j
                  }t        | j                  j                        }||j                  k(  r"|j                  }|j                   |j                               }|dk(  r*|dk(  r|}	nw|dk(  rt        |d      }	ndt        |d      }	nV|dk(  r0|dk(  r|j                  |d      }	n8|dk(  r|}	n/t        |d      }	n!|dk(  r4|dk(  r|j                  |d      }	n|dk(  r|j                  |d      }	n|}	n|dk(  rC|dk(  r|j                  |d      }	n|dk(  r|j                  |d      }	n|j                  |d      }	nd	| d
}
t        |
      ||j                  k(  rs|j                  |j                   |j                                d      }|dk(  r|j                  |d      }	n8|dk(  r|j                  |d      }	n |j                  |d      }	nd}
t#        |
      | j                  j%                  |	      S )Nr   nsus  i@B mssi ʚ;zunexpected time unit zD, please report an issue at https://github.com/narwhals-dev/narwhalsiQ z/Input should be either of Date or Datetime type)rA   rW   rX   r[  r/   r   r   r3   Datetime	time_unitrS  r  r   r   r  Dateint32r  rG   )r4   rt  rF   r\   rr  r   r  rk  s_castr   r   time_ss               r%   rj  z&ArrowSeriesDateTimeNamespace.timestamp  s   $""11&&,,%d&<&<&E&EFFOO#??DVVHBHHJ'Ft|$#F$&,VU;F,VY?F$[[7F$&#F,VU;F$[[;F$&[[7F#F$[[?F$&[[;F[[7F-dV3wx$S))fkk![[
!3U;FD V];d"VY7VU3CCC. %%99&AAr'   c                    dd l }| j                  j                  | j                  j                  j	                   |j
                                     S rV   )rA   r[  rG   r/   rS  date32)r4   rF   s     r%   datez!ArrowSeriesDateTimeNamespace.date  s@    %%99""1166yryy{C
 	
r'   c                    dd l m} | j                  j                  |j	                  | j                  j
                              S rV   )rW   rX   r[  rG   yearr/   r   s     r%   r}  z!ArrowSeriesDateTimeNamespace.year  6    $%%99GGD**99:
 	
r'   c                    dd l m} | j                  j                  |j	                  | j                  j
                              S rV   )rW   rX   r[  rG   monthr/   r   s     r%   r  z"ArrowSeriesDateTimeNamespace.month
  s6    $%%99HHT++::;
 	
r'   c                    dd l m} | j                  j                  |j	                  | j                  j
                              S rV   )rW   rX   r[  rG   dayr/   r   s     r%   r  z ArrowSeriesDateTimeNamespace.day  s6    $%%99FF4))889
 	
r'   c                    dd l m} | j                  j                  |j	                  | j                  j
                              S rV   )rW   rX   r[  rG   hourr/   r   s     r%   r  z!ArrowSeriesDateTimeNamespace.hour  r~  r'   c                    dd l m} | j                  j                  |j	                  | j                  j
                              S rV   )rW   rX   r[  rG   minuter/   r   s     r%   r  z#ArrowSeriesDateTimeNamespace.minute  6    $%%99IId,,;;<
 	
r'   c                    dd l m} | j                  j                  |j	                  | j                  j
                              S rV   )rW   rX   r[  rG   secondr/   r   s     r%   r  z#ArrowSeriesDateTimeNamespace.second&  r  r'   c                    dd l m} | j                  j                  |j	                  | j                  j
                              S rV   )rW   rX   r[  rG   millisecondr/   r   s     r%   r  z(ArrowSeriesDateTimeNamespace.millisecond-  6    $%%99NN411@@A
 	
r'   c                    dd l m} | j                  j                  }|j	                  |j                  |j                  |      d      |j                  |            }| j                  j                  |      S Nr   rp  )	rW   rX   r[  r/   r~   r   r  microsecondrG   r4   r\   r  r   s       r%   r  z(ArrowSeriesDateTimeNamespace.microsecond4  sZ    $$$33BNN3$7>s@ST%%99&AAr'   c                   dd l m} | j                  j                  }|j	                  |j                  | j                         j                  d      |j                  |            }| j                  j                  |      S r  )	rW   rX   r[  r/   r~   r   r  
nanosecondrG   r  s       r%   r  z'ArrowSeriesDateTimeNamespace.nanosecond<  sf    $$$33KK((*994@"--PSBT
 %%99&AAr'   c                    dd l m} | j                  j                  |j	                  | j                  j
                              S rV   )rW   rX   r[  rG   day_of_yearr/   r   s     r%   ordinal_dayz(ArrowSeriesDateTimeNamespace.ordinal_dayE  r  r'   c                    dd l m} | j                  j                  |j	                  | j                  j
                  d            S )Nr   F)count_from_zero)rW   rX   r[  rG   day_of_weekr/   r   s     r%   weekdayz$ArrowSeriesDateTimeNamespace.weekdayL  s;    $%%99NN411@@RWNX
 	
r'   c                \   dd l }dd lm} | j                  j                  }|j
                  j                  }ddddd} |j                  ||    |j                               }| j                  j                  |j                  |j                  ||       |j                                     S )Nr   <   g     L@g    8Ag   +Brr  rq  ro  rn  r  rA   rW   rX   r[  r/   r   rk  r   r  rG   rS  r   )r4   rF   r\   r  rk  unit_to_minutes_factorfactors          r%   total_minutesz*ArrowSeriesDateTimeNamespace.total_minutesS  s    $$$33xx}} 	"
 1$7hbhhjI%%99GGBIIc6*HBHHJ7
 	
r'   c                \   dd l }dd lm} | j                  j                  }|j
                  j                  }ddddd} |j                  ||    |j                               }| j                  j                  |j                  |j                  ||       |j                                     S )Nr   r        @@    .A    eAr  r  r  )r4   rF   r\   r  rk  unit_to_seconds_factorr  s          r%   total_secondsz*ArrowSeriesDateTimeNamespace.total_secondsf  s    $$$33xx}} 	"
 1$7hbhhjI%%99GGBIIc6*HBHHJ7
 	
r'   c                   dd l }dd lm} | j                  j                  }|j
                  j                  }ddddd} |j                  ||    |j                               }|dk(  rJ| j                  j                  |j                  |j                  ||       |j                                     S | j                  j                  |j                  |j                  ||       |j                                     S )Nr   r  r   r  r  r  rr  rA   rW   rX   r[  r/   r   rk  r   r  rG   rS  r   r   )r4   rF   r\   r  rk  unit_to_milli_factorr  s          r%   total_millisecondsz/ArrowSeriesDateTimeNamespace.total_millisecondsy  s    $$$33xx}} 	 
 /5HBHHJG3;))==C0("((*=  %%99GGBIIc6*HBHHJ7
 	
r'   c                   dd l }dd lm} | j                  j                  }|j
                  j                  }ddddd} |j                  ||    |j                               }|dv rJ| j                  j                  |j                  |j                  ||       |j                                     S | j                  j                  |j                  |j                  ||       |j                                     S )Nr   r  r  r   r  r  >   rr  rq  r  )r4   rF   r\   r  rk  unit_to_micro_factorr  s          r%   total_microsecondsz/ArrowSeriesDateTimeNamespace.total_microseconds  s    $$$33xx}} 	 
 /5HBHHJG;))==C0("((*=  %%99GGBIIc6*HBHHJ7
 	
r'   c                \   dd l }dd lm} | j                  j                  }|j
                  j                  }ddddd} |j                  ||    |j                               }| j                  j                  |j                  |j                  ||       |j                                     S )Nr   r  r  r  r   r  r  )rA   rW   rX   r[  r/   r   rk  r   r  rG   rS  r   )r4   rF   r\   r  rk  unit_to_nano_factorr  s          r%   total_nanosecondsz.ArrowSeriesDateTimeNamespace.total_nanoseconds  s    $$$33xx}} 	
 .t48288:F%%99GGBKKV,hbhhj9
 	
r'   Nr4   r   rE   r,   r  r  )r4   r   ra  rG  r  r,   )r4   r   rf  rP  r  r,   )r4   r   rf  rG  r  r,   )ro  )r4   r   rt  zLiteral['ns', 'us', 'ms']r  r,   rL  )rS  rT  rU  r9   rb  rg  rl  rj  r{  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r#   r'   r%   r@  r@    sv    (	
	BB4Bl







BB


&
&
2
0
r'   r@  c                      e Zd ZddZddZy)rC  c                    || _         y r"   rZ  r\  s     r%   r9   z ArrowSeriesCatNamespace.__init__  r]  r'   c                    dd l }| j                  j                  } |j                   |j                  d |j
                  D              j                         g      }| j                  j                  |      S )Nr   c              3  4   K   | ]  }|j                     y wr"   )r  r   s     r%   r   z9ArrowSeriesCatNamespace.get_categories.<locals>.<genexpr>  s     >IqallIs   )rA   r[  r/   rD   r   r   r  rG   )r4   rF   r   outs       r%   get_categoriesz&ArrowSeriesCatNamespace.get_categories  sg    ##22bR>BII>>EEGH
 %%99#>>r'   Nr  rL  )rS  rT  rU  r9   r  r#   r'   r%   rC  rC    s    (?r'   rC  c                      e Zd ZddZddZ	 	 	 	 	 	 	 	 	 	 	 	 ddZ	 	 	 	 	 	 	 	 	 	 ddZddZddZddZ	ddZ
dd	Zdd
ZddZddZy)rF  c                    || _         y r"   rZ  r\  s     r%   r9   z#ArrowSeriesStringNamespace.__init__  r]  r'   c                    dd l m} | j                  j                  |j	                  | j                  j
                              S rV   )rW   rX   r[  rG   utf8_lengthr/   r   s     r%   	len_charsz$ArrowSeriesStringNamespace.len_chars  r  r'   c                   dd l m} |rdnd}| j                  j                   t	        ||      | j                  j
                  |||            S )Nr   replace_substringreplace_substring_regex)patternreplacementmax_replacements)rW   rX   r[  rG   r(   r/   )r4   r  r$   literalr   r\   r0  s          r%   r  z"ArrowSeriesStringNamespace.replace  sT     	%(/$5N%%99GB&&55!!"	
 	
r'   c               ,    | j                  |||d      S )Nr   )r  r   )r  )r4   r  r$   r  s       r%   replace_allz&ArrowSeriesStringNamespace.replace_all  s     ||GUGr|BBr'   c                    dd l m} d}| j                  j                  |j	                  | j                  j
                  |xs |            S )Nr   z 	
)rW   rX   r[  rG   	utf8_trimr/   )r4   
charactersr\   
whitespaces       r%   strip_charsz&ArrowSeriesStringNamespace.strip_chars  sF    $"
%%99LL&&55(j
 	
r'   c           
         dd l m} | j                  j                  |j	                  | j                  dt        |            j                  |            S rV   rW   rX   r[  rG   rY   rW  rR   r/   )r4   prefixr\   s      r%   starts_withz&ArrowSeriesStringNamespace.starts_with  sA    $%%99HHTZZ3v;/>>G
 	
r'   c           	         dd l m} | j                  j                  |j	                  | j                  t        |       d       j                  |            S rV   r  )r4   suffixr\   s      r%   	ends_withz$ArrowSeriesStringNamespace.ends_with  sC    $%%99HHTZZVd3BBFK
 	
r'   c                   dd l m} |r|j                  n|j                  }| j                  j                   || j                  j                  |            S rV   )rW   rX   match_substringmatch_substring_regexr[  rG   r/   )r4   r  r  r\   
check_funcs        r%   containsz#ArrowSeriesStringNamespace.contains  sI    $+2R''8P8P
%%99t--<<gF
 	
r'   c                    dd l m} |||z   nd }| j                  j                  |j	                  | j                  j
                  ||            S )Nr   )startstop)rW   rX   r[  rG   utf8_slice_codeunitsr/   )r4   r  lengthr\   r  s        r%   rW  z ArrowSeriesStringNamespace.slice  sT    $"("4v$%%99##&&55V$ $ 
 	
r'   c                    dd l m} |t        | j                  j                        }| j                  j                  |j                  | j                  j                  |d            S )Nr   ro  )ra  rk  )rW   rX   r   r[  r/   rG   strptimer`  s      r%   to_datetimez&ArrowSeriesStringNamespace.to_datetime  sX    $>*4+A+A+P+PQF%%99KK..==fSWKX
 	
r'   c                    dd l m} | j                  j                  |j	                  | j                  j
                              S rV   )rW   rX   r[  rG   
utf8_upperr/   r   s     r%   to_uppercasez'ArrowSeriesStringNamespace.to_uppercase!  6    $%%99MM$00??@
 	
r'   c                    dd l m} | j                  j                  |j	                  | j                  j
                              S rV   )rW   rX   r[  rG   
utf8_lowerr/   r   s     r%   to_lowercasez'ArrowSeriesStringNamespace.to_lowercase(  r  r'   Nr  rL  )r4   r   r  rG  r$   rG  r  r   r   r  r  r,   )
r4   r   r  rG  r$   rG  r  r   r  r,   )r4   r   r  rP  r  r,   )r4   r   r  rG  r  r,   )r4   r   r  rG  r  r,   )r4   r   r  rG  r  r   r  r,   )r4   r   r  r  r  rO  r  r,   )r4   r   ra  rP  r  r,   )rS  rT  rU  r9   r  r  r  r  r  r  r  rW  r  r  r  r#   r'   r%   rF  rF    s    (


 
),
:>
CF
	
CC C),C:>C	C
	







r'   rF  c                      e Zd ZddZddZy)rI  c                    || _         y r"   )_arrow_seriesr\  s     r%   r9   z!ArrowSeriesListNamespace.__init__1  s
    #r'   c                    dd l }dd lm} | j                  j	                  |j                  |j                  | j                  j                         |j                                     S rV   )	rA   rW   rX   r  rG   rS  list_value_lengthr/   uint32)r4   rF   r\   s      r%   rR   zArrowSeriesListNamespace.len4  sN    $!!55GGB((););)J)JKYRYY[Y
 	
r'   Nr  rL  )rS  rT  rU  r9   rR   r#   r'   r%   rI  rI  0  s    $
r'   rI  )r$   r   r)   r   r  r   )0
__future__r   typingr   r   r   r   r   r	   r
   narwhals._arrow.utilsr   r   r   r   r   r   r   narwhals.utilsr   r   r   r   typesr   r  r  r  r  rA   rF   typing_extensionsr   rp  r   rN   r   narwhals.dtypesr   r   narwhals.typingr   r*   r,   r@  rC  rF  rI  r#   r'   r%   <module>r     s    "         > 2 1 : : , 7 ) 9 / 3 &88%& +o./ o.d#^
 ^
B	? ?`
 `
F

 

r'   