o
    hb                     @  s   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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rd dlmZ d dl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) d dl*m+Z+ d dl,m-Z- d dl,m.Z. d d l,m/Z/ d d!lm0Z0 d d"lm1Z1 ed#Z2G d$d% d%Z3G d&d' d'Z4G d(d) d)Z5G d*d+ d+Z6G d,d- d-Z7G d.d/ d/Z8d
S )0    )annotations)TYPE_CHECKING)Any)Iterable)Iterator)Mapping)Sequence)cast)overloadN)catch_polars_exception)extract_args_kwargs)extract_native)narwhals_to_native_dtype)native_to_narwhals_dtype)is_numpy_array_1d)Implementation)requires)validate_backend_version)
ModuleType)TypeVar)Self)TypeIs)
ArrowArray)MethodPolarsDataFrame)
PolarsExprPolarsNamespace)DType)Into1DArray)MultiIndexSelector)_1DArray)Version)_FullContextTc                   @  s  e Zd ZU dd	d
ZdddZdddZdddZdddZd ddZe	dddd!d#d$Z
ed"d(d)Ze	d#d*d+Ze	d$d-d.Zd%d/d0Zed%d1d2Zed&d5d2Zed'd7d2Zd(d:d2Zd)d<d=Zd*d@dAZd+dCdDZeddEdFZed,dHdIZed-dJdKZd.dLdMZd/dQdRZd0dTdUZedVd1d\d]Zd2dd^d3dbdcZd3dddeZ d4dhdiZ!d4djdkZ"d5dldmZ#d5dndoZ$d5dpdqZ%d5drdsZ&d6dudvZ'd6dwdxZ(d7dzd{Z)d7d|d}Z*d7d~dZ+d7ddZ,d7ddZ-d7ddZ.d7ddZ/d7ddZ0dddZ1dddZ2d8ddZ3d9ddZ4d:ddZ5edVd;ddZ6edVd;ddZ7d<ddZ8d<ddZ9d=ddZ:d>ddZ;d?ddZ<d@ddZ=dAddZ>dBddĄZ?d-ddƄZ@edCddɄZAedDdd̄ZBedEddτZCedFdd҄ZDdeEd< deEd< deEd< deEd< deEd< deEd< deEd< deEd< deEd< deEd< deEd< deEd< deEd< deEd< deEd< deEd< deEd< deEd< deEd< deEd< deEd< deEd< deEd< deEd< deEd< deEd< deEd< deEd< deEd< deEd< deEd< deEd< deEd< deEd< deEd< deEdN< deEd< deEd< deEd< deEd< deEd < deEd< deEd< deEd< deEd< deEd< deEd< deEd< deEd	< deEd
< deEd< deEd< deEd< deEd< deEd< deEd< deEd< deEd< deEd< edGddZFdS (H  PolarsSeriesseries	pl.Seriesbackend_versiontuple[int, ...]versionr#   returnNonec                C  s,   || _ || _tj| _|| _t| j| j d S N)_native_series_backend_versionr   POLARS_implementation_versionr   )selfr'   r)   r+    r5   K/var/www/vscode/kcb/lib/python3.10/site-packages/narwhals/_polars/series.py__init__0   s
   zPolarsSeries.__init__strc                 C  s   dS )Nr&   r5   r4   r5   r5   r6   __repr__=      zPolarsSeries.__repr__r   c                 C  s   ddl m} || j| jdS )Nr   r   r)   r+   )narwhals._polars.namespacer   r0   r3   )r4   r   r5   r5   r6   __narwhals_namespace__@   s   z#PolarsSeries.__narwhals_namespace__r   c                 C  s   | S r.   r5   r9   r5   r5   r6   __narwhals_series__G   r;   z PolarsSeries.__narwhals_series__r   c                 C  s.   | j tju r| j  S dt| j  }t|)NzExpected polars, got: )r2   r   r1   to_native_namespacetypeAssertionError)r4   msgr5   r5   r6   __native_namespace__J   s   
z!PolarsSeries.__native_namespace__c                 C  s   | j | j| j|dS Nr<   )	__class__nativer0   )r4   r+   r5   r5   r6   _with_versionQ      
zPolarsSeries._with_version N)namedtypedataIterable[Any]contextr$   rK   rL   DType | type[DType] | Nonec          	      C  sD   |j }|j}|rt|||nd }tj|td||d}| j||dS )NSequence[Any])rK   valuesrL   rO   )r3   r0   r   plSeriesr	   from_native)	clsrM   rO   rK   rL   r+   r)   dtype_plrG   r5   r5   r6   from_iterableV   s   	zPolarsSeries.from_iterableobjpl.Series | AnyTypeIs[pl.Series]c                 C  s   t | tjS r.   )
isinstancerT   rU   )rZ   r5   r5   r6   
_is_nativei   s   zPolarsSeries._is_nativec               C  s   | ||j |jdS rE   )r0   r3   )rW   rM   rO   r5   r5   r6   rV   m   s   
zPolarsSeries.from_nativer    c               C  s&   t t|r|n|g}| j||dS )NrS   )rT   rU   r   rV   )rW   rM   rO   rG   r5   r5   r6   
from_numpys   s   zPolarsSeries.from_numpyc                 C  s   | j || j| jdS rE   )rF   r0   r3   r4   r'   r5   r5   r6   _with_nativex   rI   zPolarsSeries._with_nativec                 C     d S r.   r5   r`   r5   r5   r6   _from_native_object}   r;   z PolarsSeries._from_native_objectpl.DataFramer   c                 C  rb   r.   r5   r`   r5   r5   r6   rc      r;   r%   c                 C  rb   r.   r5   r`   r5   r5   r6   rc      r;   pl.Series | pl.DataFrame | TSelf | PolarsDataFrame | Tc                 C  s>   |  |r
| |S t|tjrddlm} |j|| dS |S )Nr   r   rS   )r^   ra   r]   rT   	DataFramenarwhals._polars.dataframer   rV   )r4   r'   r   r5   r5   r6   rc      s   

r   c                 C  s   |   j| S r.   )r>   _expr_from_seriesr9   r5   r5   r6   _to_expr      zPolarsSeries._to_exprattrr   c                   s     dkrt d fdd}|S )	Nas_pyargsr   kwargsr,   c                    s*   t | |\}}tj |i |S r.   )r   rc   getattrrG   ro   rp   poskwdsrm   r4   r5   r6   func   s   z&PolarsSeries.__getattr__.<locals>.funcro   r   rp   r   r,   r   )AttributeErrorr4   rm   rv   r5   ru   r6   __getattr__   s   zPolarsSeries.__getattr__intc                 C  s
   t | jS r.   )lenrG   r9   r5   r5   r6   __len__      
zPolarsSeries.__len__c                 C  s   | j jS r.   )rG   rK   r9   r5   r5   r6   rK         zPolarsSeries.namer   c                 C  s   t | jj| j| jS r.   )r   rG   rL   r3   r0   r9   r5   r5   r6   rL      s   zPolarsSeries.dtypec                 C     | j S r.   )r/   r9   r5   r5   r6   rG      s   zPolarsSeries.nativec                 C  s   |  | j|S r.   )rc   rG   alias)r4   rK   r5   r5   r6   r      s   zPolarsSeries.aliasitemMultiIndexSelector[Self]
Any | Selfc                 C  s0   t |tr| | j|jS | | j|S r.   )r]   r&   rc   rG   __getitem__)r4   r   r5   r5   r6   r      s   
zPolarsSeries.__getitem__DType | type[DType]c                 C  s"   t || j| j}| | j|S r.   )r   r3   r0   ra   rG   r	   )r4   rL   rX   r5   r5   r6   r	      s   zPolarsSeries.cast   old!Sequence[Any] | Mapping[Any, Any]newrQ   return_dtypec                C  s4   | j }|rt|| j| jnd }| |j|||dS )N)r   )rG   r   r3   r0   ra   replace_strict)r4   r   r   r   serrL   r5   r5   r6   r      s   zPolarsSeries.replace_strictcopyr   bool | Noner"   c                C  s   | j ||dS )Nr   )	__array__r4   rL   r   r5   r5   r6   to_numpy   s   zPolarsSeries.to_numpyc                C  s(   | j dk r| jj|dS | jj||dS )N)r         rL   )rL   r   )r0   rG   r   r   r5   r5   r6   r      s   
zPolarsSeries.__array__otherobjectc                 C     |  | jt|S r.   )ra   rG   __eq__r   r4   r   r5   r5   r6   r         zPolarsSeries.__eq__c                 C  r   r.   )ra   rG   __ne__r   r   r5   r5   r6   r      r   zPolarsSeries.__ne__c                 C  r   r.   )ra   rG   __ge__r   r   r5   r5   r6   r      r   zPolarsSeries.__ge__c                 C  r   r.   )ra   rG   __gt__r   r   r5   r5   r6   r      r   zPolarsSeries.__gt__c                 C  r   r.   )ra   rG   __le__r   r   r5   r5   r6   r      r   zPolarsSeries.__le__c                 C  r   r.   )ra   rG   __lt__r   r   r5   r5   r6   r      r   zPolarsSeries.__lt__PolarsSeries | bool | Anyc                 C  r   r.   )ra   rG   __and__r   r   r5   r5   r6   r      r   zPolarsSeries.__and__c                 C  r   r.   )ra   rG   __or__r   r   r5   r5   r6   r      r   zPolarsSeries.__or__PolarsSeries | Anyc                 C  r   r.   )ra   rG   __add__r   r   r5   r5   r6   r      r   zPolarsSeries.__add__c                 C  r   r.   )ra   rG   __radd__r   r   r5   r5   r6   r      r   zPolarsSeries.__radd__c                 C  r   r.   )ra   rG   __sub__r   r   r5   r5   r6   r      r   zPolarsSeries.__sub__c                 C  r   r.   )ra   rG   __rsub__r   r   r5   r5   r6   r      r   zPolarsSeries.__rsub__c                 C  r   r.   )ra   rG   __mul__r   r   r5   r5   r6   r      r   zPolarsSeries.__mul__c                 C  r   r.   )ra   rG   __rmul__r   r   r5   r5   r6   r      r   zPolarsSeries.__rmul__c                 C  r   r.   )ra   rG   __pow__r   r   r5   r5   r6   r      r   zPolarsSeries.__pow__c                 C  s0   | j t|}| jdk r|| j}| |S )N)r      r   )rG   __rpow__r   r0   r   rK   ra   )r4   r   resultr5   r5   r6   r     s   

zPolarsSeries.__rpow__c                 C  s   |  | j S r.   )ra   rG   
__invert__r9   r5   r5   r6   r     rl   zPolarsSeries.__invert__c              
   C  sv   z| j  }W n ty } zt|| jd d }~ww | jdk r6t| j  |}| 	t
|| j S | 	|S )N)r      )rG   is_nan	Exceptionr   r0   rT   whenis_not_nullthenra   selectrK   )r4   native_is_naner   r5   r5   r6   r     s   

zPolarsSeries.is_nanc                 C  s,   ddl m} | j sd}||| j S )Nr   )InvalidOperationErrorz<`median` operation not supported for non-numeric input type.)narwhals.exceptionsr   rL   
is_numericrG   median)r4   r   rC   r5   r5   r6   r     s
   

zPolarsSeries.median	separator
drop_firstboolc                C  s   ddl m} | jdk r+| j  }| jj|d}|j}|r%|t	|}|
|}n| jj||d}|t tj}|j|| dS )Nr   r   )r   r      )r   )r   r   rS   )rh   r   r0   rG   is_nullany
to_dummiescolumnspopr{   r   with_columnsrT   allr	   Int8rV   )r4   r   r   r   	has_nullsr   output_columns_r5   r5   r6   r     s   
zPolarsSeries.to_dummiescomfloat | Nonespan	half_lifealphaadjustmin_samplesignore_nullsc          
   	   C  s   | j dk r	d|ind|i}| jjd||||||d|}	| j dk r;| tt| j  |		d | jj
 S | |	S )Nr      r   min_periodsr   )r   r   r   r   r   r   r   r5   )r0   rG   ewm_meanra   rT   r   r   r   r   	otherwiserK   )
r4   r   r   r   r   r   r   r   extra_kwargsnative_resultr5   r5   r6   r   .  s.   

	
zPolarsSeries.ewm_meanwindow_sizecenterddofc                C  :   | j dk r	d|ind|i}| | jjd|||d|S Nr   r   r   )r   r   r   r5   )r0   ra   rG   rolling_varr4   r   r   r   r   r   r5   r5   r6   r   Q     
zPolarsSeries.rolling_varc                C  r   r   )r0   ra   rG   rolling_stdr   r5   r5   r6   r   e  r   zPolarsSeries.rolling_stdc                C  8   | j dk r	d|ind|i}| | jjd||d|S Nr   r   r   )r   r   r5   )r0   ra   rG   rolling_sumr4   r   r   r   r   r5   r5   r6   r   y     
	zPolarsSeries.rolling_sumc                C  r   r   )r0   ra   rG   rolling_meanr   r5   r5   r6   r     r   zPolarsSeries.rolling_mean
descending
nulls_lastc                C  s\   | j dk r!| jj|d}|r | }t|| ||g}n| jj||d}| |S )N)r   r      )r   )r   r   )r0   rG   sortr   rT   concatfilterra   )r4   r   r   r   r   r5   r5   r6   r     s   

zPolarsSeries.sortindicesint | Sequence[int]rR   c                 C  s    | j  |t|}| |S r.   )rG   clonescatterr   ra   )r4   r   rR   sr5   r5   r6   r     s   
zPolarsSeries.scatterr   parallel
str | None	normalizec             
   C  s   ddl m} | jdk r<|p|rdnd}| jj||djd	i | jjt| jj||r3tdt	d ntdi}n
| jj||||d}|j
|| dS )
Nr   r   )r   r   r   
proportioncount)r   r   )r   r   rK   r   rS   r5   )rh   r   r0   rG   value_countsr   rK   rT   colsumrV   )r4   r   r   rK   r   r   value_name_r   r5   r5   r6   r     s   
	zPolarsSeries.value_countsreversec                C  s<   | j dk r| j  }|j|d}n| jj|d}| |S )N)r   r      )r   )r0   rG   r   cum_sum	cum_countra   )r4   r   not_null_seriesr   r5   r5   r6   r    s
   

zPolarsSeries.cum_countc              
   C  s6   z| j |W S  ty } zt|| jd d }~ww r.   )rG   __contains__r   r   r0   )r4   r   r   r5   r5   r6   r    s   zPolarsSeries.__contains__binslist[float | int] | None	bin_count
int | Noneinclude_breakpointc                C  s  ddl m} |d urt|dks|dkr:g }|r$|tjdg tjd |tjdg tjd |jt	|| dS | j
 dk r|d urZ|dd  tjt|d tjdd	d
}n5|d urj|dkrjdgdgd
}n%|d ur|dkrtjd|d dd| tj|tjdd	d
}nd}t||s|d= |jt	|| dS | jdk r|d urtd| j
 }td| j
 }	||	krd| }
|d8 }|	d7 }	n|	| | }
tjd|d dd|
 |  }d }| j
}| jdk s|d ur|| d }|j||d|d}|sdg|_| jdk r|r|ddi}| jdk r6|d ur6tdt|}||dk|t|d k @ }| jdk rO|d urO|d  ||d k 7  < |j|| dS )Nr   r   r   
breakpointr   r   rS   T)nrL   eager)r  r   g      ?)r  zCcongratulations, you entered unreachable code - please report a bug)r   r   floatg      ?F)r  include_categoryr
  )r   r   break_point)r      )r   r   )rh   r   r|   appendrT   rU   Float64UInt32rV   rg   rG   r   zerosInt64	int_rangerB   r0   r	   minmaxto_listsetr   histr   renamer   r   )r4   r  r  r
  r   rM   	data_dictrC   lowerupperwidthr'   dfrr5   r5   r6   r    sl   


 zPolarsSeries.histc                 C  r   r.   )rG   r9   r5   r5   r6   	to_polars/  s   zPolarsSeries.to_polarsPolarsSeriesDateTimeNamespacec                 C     t | S r.   )r%  r9   r5   r5   r6   dt2  r   zPolarsSeries.dtPolarsSeriesStringNamespacec                 C  r&  r.   )r(  r9   r5   r5   r6   r8   6  r   zPolarsSeries.strPolarsSeriesCatNamespacec                 C  r&  r.   )r)  r9   r5   r5   r6   cat:  r   zPolarsSeries.catPolarsSeriesStructNamespacec                 C  r&  r.   )r+  r9   r5   r5   r6   struct>  r   zPolarsSeries.structzMethod[Iterator[Any]]__iter__zMethod[Self]__floordiv____mod____rand____rfloordiv____rmod____ror____rtruediv____truediv__abszMethod[bool]r   r   zMethod[int]arg_maxarg_minarg_trueclipr   cum_maxcum_mincum_prodr  diff
drop_nulls	fill_nullr   gather_everyhead
is_between	is_finiteis_first_distinctis_inis_last_distinctr   	is_sorted	is_uniquezMethod[Any]r|   r  zMethod[float]meanr  moden_unique
null_countquantilerankroundsampleshiftzMethod[float | None]skewstdr   tailzMethod[ArrowArray]to_arrowzMethod[PolarsDataFrame]to_framezMethod[list[Any]]r  zMethod[pd.Series[Any]]	to_pandasuniquevarzip_withPolarsSeriesListNamespacec                 C  r&  r.   )r\  r9   r5   r5   r6   list~  r   zPolarsSeries.list)r'   r(   r)   r*   r+   r#   r,   r-   )r,   r8   )r,   r   )r,   r   )r,   r   )r+   r#   r,   r   )
rM   rN   rO   r$   rK   r8   rL   rP   r,   r   )rZ   r[   r,   r\   )rM   r(   rO   r$   r,   r   )rM   r    rO   r$   r,   r   )r'   r(   r,   r   )r'   rd   r,   r   )r'   r%   r,   r%   )r'   re   r,   rf   )r,   r   rm   r8   r,   r   )r,   r{   )r,   r   )r,   r(   )rK   r8   r,   r   )r   r   r,   r   )rL   r   r,   r   )r   r   r   rQ   r   rP   r,   r   r.   )rL   r   r   r   r,   r"   )r   r   r,   r   )r   r   r,   r   )r   r   r,   r   )r   r   r,   r   )r,   r   )r   r8   r   r   r,   r   )r   r   r   r   r   r   r   r   r   r   r   r{   r   r   r,   r   )
r   r{   r   r{   r   r   r   r{   r,   r   )r   r{   r   r{   r   r   r,   r   )r   r   r   r   r,   r   )r   r   rR   r   r,   r   )
r   r   r   r   rK   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\  )G__name__
__module____qualname__r7   r:   r>   r?   rD   rH   classmethodrY   staticmethodr^   rV   r_   ra   r
   rc   rk   rz   r}   propertyrK   rL   rG   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'  r8   r*  r,  __annotations__r]  r5   r5   r5   r6   r&   /   s   
 

	#	X













r&   c                   @      e Zd ZdddZdd
dZdS )r%  r'   r&   r,   r-   c                 C  
   || _ d S r.   _compliant_seriesr`   r5   r5   r6   r7     r~   z&PolarsSeriesDateTimeNamespace.__init__rm   r8   r   c                      d fdd}|S )Nro   r   rp   r,   c                    0   t | |\}}jtjjj |i |S r.   )r   ri  ra   rq   rG   r'  rr   ru   r5   r6   rv        z7PolarsSeriesDateTimeNamespace.__getattr__.<locals>.funcrw   r5   ry   r5   ru   r6   rz        z)PolarsSeriesDateTimeNamespace.__getattr__Nr'   r&   r,   r-   r^  r_  r`  ra  r7   rz   r5   r5   r5   r6   r%        
r%  c                   @  rf  )r(  r'   r&   r,   r-   c                 C  rg  r.   rh  r`   r5   r5   r6   r7     r~   z$PolarsSeriesStringNamespace.__init__rm   r8   r   c                   rj  )Nro   r   rp   r,   c                    rk  r.   )r   ri  ra   rq   rG   r8   rr   ru   r5   r6   rv     rl  z5PolarsSeriesStringNamespace.__getattr__.<locals>.funcrw   r5   ry   r5   ru   r6   rz     rm  z'PolarsSeriesStringNamespace.__getattr__Nrn  r^  ro  r5   r5   r5   r6   r(    rp  r(  c                   @  rf  )r)  r'   r&   r,   r-   c                 C  rg  r.   rh  r`   r5   r5   r6   r7     r~   z!PolarsSeriesCatNamespace.__init__rm   r8   r   c                   rj  )Nro   r   rp   r,   c                    rk  r.   )r   ri  ra   rq   rG   r*  rr   ru   r5   r6   rv     rl  z2PolarsSeriesCatNamespace.__getattr__.<locals>.funcrw   r5   ry   r5   ru   r6   rz     rm  z$PolarsSeriesCatNamespace.__getattr__Nrn  r^  ro  r5   r5   r5   r6   r)    rp  r)  c                   @  s*   e Zd ZdddZdddZdddZdS )r\  r'   r&   r,   r-   c                 C  rg  r.   )_seriesr`   r5   r5   r6   r7     r~   z"PolarsSeriesListNamespace.__init__c                 C  sx   | j j}|j }| j jdk r)tt|  	|
d |j t }n| j jdk r6|t }| j |S )N)r   r   )r      )rq  rG   r]  r|   r0   rT   r   r   r   r   r   rK   r	   r  ra   )r4   native_seriesr   r5   r5   r6   r|     s   

zPolarsSeriesListNamespace.lenrm   r8   r   c                   rj  )Nro   r   rp   r,   c                    rk  r.   )r   rq  ra   rq   rG   r]  rr   ru   r5   r6   rv     rl  z3PolarsSeriesListNamespace.__getattr__.<locals>.funcrw   r5   ry   r5   ru   r6   rz     rm  z%PolarsSeriesListNamespace.__getattr__Nrn  )r,   r&   r^  )r_  r`  ra  r7   r|   rz   r5   r5   r5   r6   r\    s    

r\  c                   @  rf  )r+  r'   r&   r,   r-   c                 C  rg  r.   rh  r`   r5   r5   r6   r7     r~   z$PolarsSeriesStructNamespace.__init__rm   r8   r   c                   rj  )Nro   r   rp   r,   c                    rk  r.   )r   ri  ra   rq   rG   r,  rr   ru   r5   r6   rv     rl  z5PolarsSeriesStructNamespace.__getattr__.<locals>.funcrw   r5   ry   r5   ru   r6   rz     rm  z'PolarsSeriesStructNamespace.__getattr__Nrn  r^  ro  r5   r5   r5   r6   r+    rp  r+  )9
__future__r   typingr   r   r   r   r   r   r	   r
   polarsrT   narwhals._polars.utilsr   r   r   r   r   narwhals.dependenciesr   narwhals.utilsr   r   r   typesr   r   pandaspdtyping_extensionsr   r   narwhals._arrow.typingr   rh   r   r   narwhals._polars.exprr   r=   r   narwhals.dtypesr   narwhals.typingr    r!   r"   r#   r$   r%   r&   r%  r(  r)  r\  r+  r5   r5   r5   r6   <module>   s^        X