Ë
    	êñiR  ã                  óŠ   — U d dl mZ d dlmZ d dlmZ erd dlmZ d dlm	Z	m
Z
mZ e	ez  Zded<    G d„ d	«      Z G d
„ d«      Zy)é    )Úannotations)ÚTYPE_CHECKINGN)Ú	TypeAlias)Ú	DataFrameÚ	LazyFrameÚSeriesr   ÚFrameOrSeriesc                  óš   — e Zd ZU dZded<   ded<   ded<   ded<   ded<   d	ed
<   dd„Zedd„«       Zedd„«       Zdd„Z	dd„Z
dd„Zdd„Zy)ÚPolarsSlicez}
    Apply Python slice object to Polars DataFrame or Series.

    Has full support for negative indexing and/or stride.
    ÚintÚstopÚstartÚstrideÚslice_lengthÚboolÚis_unboundedr	   Úobjc                ó   — || _         y ©N©r   ©Úselfr   s     úU/var/www/pod-logistic/pod-ai/venv/lib/python3.12/site-packages/polars/_utils/slice.pyÚ__init__zPolarsSlice.__init__   ó	   € Øˆ�ó    c                óz   — | j                  «       }t        |t        j                  «      r|S |j	                  «       S )z.Return lazy variant back to its original type.)ÚcollectÚ
isinstanceÚplr   Ú	to_series)ÚlazyÚoriginalÚframes      r   Ú_as_originalzPolarsSlice._as_original    s.   € ð —‘“ˆÜ" 8¬R¯\©\Ô:ˆuÐQÀÇÁÓ@QÐQr   c                ó’   — t        | t        j                  «      r| j                  «       j	                  «       S | j	                  «       S )z2Make lazy to ensure efficient/consistent handling.)r   r    r   Úto_framer"   r   s    r   Ú_lazifyzPolarsSlice._lazify&   s1   € ô )3°3¼¿	¹	Ô(Bˆs�|‰|‹~×"Ñ"Ó$ÐRÈÏÉË
ÐRr   c                ó€   — |j                  | j                  | j                  «      j                  | j                  «      S )z&Logic for slices with positive stride.)Úslicer   r   Úgather_everyr   r   s     r   Ú_slice_positivezPolarsSlice._slice_positive+   s.   € ð �y‰y˜Ÿ™ T×%6Ñ%6Ó7×DÑDÀTÇ[Á[ÓQÐQr   c                óÊ   — t        | j                  «      }|j                  | j                  dz   | j                  «      j                  «       }|dkD  r|j                  |«      S |S )z&Logic for slices with negative stride.é   )Úabsr   r*   r   r   Úreverser+   )r   r   r   Ú	lazyslices       r   Ú_slice_negativezPolarsSlice._slice_negative0   sS   € ä�T—[‘[Ó!ˆØ—I‘I˜dŸi™i¨!™m¨T×->Ñ->Ó?×GÑGÓIˆ	Ø28¸1²*ˆy×%Ñ% fÓ-ÐLÀ9ÐLr   c                óô  — t        | j                  «      }t        |j                  |j                  |j
                  «      j                  |«      \  }}}|dk\  r|dk  xr ||k\  | _        n|dk(  xr ||dz
  k\  | _        | j                  j                  «       rd| _	        nB| j                  r|| _	        n.||k(  s|dkD  r||kD  s
|dk  r||k  rdnt        ||z
  «      | _	        |||c| _        | _        | _        y)zENormalise slice bounds, identify unbounded and/or zero-length slices.r.   r   éÿÿÿÿN)Úlenr   r*   r   r   ÚstepÚindicesr   Úis_emptyr   r/   r   )r   ÚsÚobj_lenr   r   r   s         r   Ú_slice_setupzPolarsSlice._slice_setup6   sö   € ô �d—h‘h“-ˆÜ# A§G¡G¨Q¯V©V°Q·V±VÓ<×DÑDÀWÓMÑˆˆt�Vð �QŠ;Ø!&¨!¡Ò B°$¸'±/ˆDÕà!%¨¡Ò G°%¸7ÀQ¹;Ñ2FˆDÔð �8‰8×ÑÔØ !ˆDÕØ×ÒØ 'ˆDÕð
 ˜d’]Ø š
 u¨t¢|Ø š
 u¨t¢|ñ	 ô ˜ ™Ó&ð Ôð .3°D¸&Ð*ˆŒ
�D”I˜t�{r   c                óH  — | j                  |«       | j                  dk(  r| j                  j                  «       S | j                  rQ| j
                  dv rC| j
                  dk  r| j                  j                  «       S | j                  j                  «       S | j                  dk\  rN| j                  dk\  r?| j
                  dk(  r0| j                  j                  | j                  | j                  «      S | j
                  dk  r8| j                  dk(  r)| j                  j                  | j                  dz   d«      S | j                  | j                  «      }| j
                  dkD  r| j                  |«      n| j                  |«      }| j                  || j                  «      S )zFApply a slice operation, taking advantage of any potential fast paths.r   )r4   r.   r.   )r;   r   r   Úclearr   r   r0   Úcloner   r   r*   r(   r,   r2   r%   )r   r9   ÚlazyobjÚsliceds       r   ÚapplyzPolarsSlice.applyS   sE  € ð 	×Ñ˜!Ôð ×Ñ Ò!Ø—8‘8—>‘>Ó#Ð#à×Ò 4§;¡;°'Ñ#9Ø*.¯+©+¸ª/�4—8‘8×#Ñ#Ó%ÐPÀÇÁÇÁÓ@PÐPà�Z‰Z˜1Š_ §¡¨a¢°D·K±KÀ1Ò4DØ—8‘8—>‘> $§*¡*¨d×.?Ñ.?Ó@Ð@à�[‰[˜1Š_ ×!2Ñ!2°aÒ!7Ø—8‘8—>‘> $§)¡)¨a¡-°Ó3Ð3ð —l‘l 4§8¡8Ó,ˆGð —;‘; ’?ð ×$Ñ$ WÔ-à×)Ñ)¨'Ó2ð ð
 ×$Ñ$ V¨T¯X©XÓ6Ð6r   N)r   r	   ÚreturnÚNone)r"   r   r#   r	   rB   r	   )r   r	   rB   r   )r   r   rB   r   )r9   r*   rB   rC   )r9   r*   rB   r	   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r   Ústaticmethodr%   r(   r,   r2   r;   rA   © r   r   r   r      sr   … ñð ƒIØƒJØƒKØÓØÓØ	Óóð òRó ðRð
 òSó ðSóRó
MóAô:7r   r   c                  ó,   — e Zd ZU dZded<   dd„Zdd„Zy)	ÚLazyPolarsSlicez¨
    Apply python slice object to Polars LazyFrame.

    Only slices with efficient computation paths that map directly
    to existing lazy methods are supported.
    r   r   c                ó   — || _         y r   r   r   s     r   r   zLazyPolarsSlice.__init__y   r   r   c                ó¾  — |j                   xs d}|j                  xs d}|j                  r|j                  dk  rd}t        |«      ‚|dk  rG|dkD  s|j                  �6||j                  k7  r'|dcxkD  r|kD  rn n|j                  �d}t        |«      ‚|dkD  r|j                  �||j                  k\  s?|dk  rT|j                   �H|j                  �<|j                  |j                   cxk\  rdk\  rn n| j                  j                  «       S |j                   €¢|j                  €–|dk(  r| j                  j                  «       S |dkD  r| j                  j                  |«      S |dk(  r| j                  j                  «       S |dk  �rÄ| j                  j                  «       j                  t        |«      «      S |dcxk\  r|kD  ron nl|j                  €`| j                  j                  |j                   dz   «      j                  «       }t        |«      dk(  r|S |j                  t        |«      «      S |dk(  rP|j                  xs ddk\  r=| j                  j                  |j                  «      }|dk(  r|S |j                  |«      S |dk  rM|j                  €A|dkD  r<| j                  j                  t        |«      «      }|dk(  r|S |j                  |«      S |dkD  rl|j                  �|j                  dk\  rQ|j                  €dn|j                  |z
  }| j                  j                  ||«      }|dk(  r|S |j                  |«      S d|›d�}t        |«      ‚)	a  
        Apply a slice operation.

        Note that LazyFrame is designed primarily for efficient computation and does not
        know its own length so, unlike DataFrame, certain slice patterns (such as those
        requiring negative stop/step) may not be supported.
        r   r.   z.negative stop is not supported for lazy slicesNz?negative stride is not supported in conjunction with start+stopr4   zthe given slice zv is not supported by lazy computation

Consider a more efficient approach, or construct explicitly with other methods.)r   r6   r   Ú
ValueErrorr   r=   r>   r+   r0   r/   ÚheadÚtailr*   )r   r9   r   r6   Úmsgr   r   s          r   rA   zLazyPolarsSlice.apply|   sã  € ð —‘’˜1ˆØ�v‰vŠ{˜ˆð �6Š6�a—f‘f˜q’jØBˆCÜ˜S“/Ð!Ø�!Š8˜ š a§f¡fÐ&8¸uÈÏÉºØ˜AÔ$ Õ$¨¯©¨ØW�Ü  “oÐ%ð �1ŠH˜!Ÿ&™&Ð,°¸!¿&¹&²Ø�1ŠHØ—‘Ð$¨¯©Ð);ÀÇÁÈ!Ï'É'Ô@VÐUVÕ@Và—8‘8—>‘>Ó#Ð#ð �W‰Wˆ_ §¡ Ø�qŠyØ—x‘x—~‘~Ó'Ð'Ø˜’Ø—x‘x×,Ñ,¨TÓ2Ð2Ø˜’Ø—x‘x×'Ñ'Ó)Ð)Ø˜“Ø—x‘x×'Ñ'Ó)×6Ñ6´s¸4³yÓAÐAð �aÔ˜$Õ 1§6¡6 >Ø—(‘(—-‘- §¡¨!¡Ó,×4Ñ4Ó6ˆCÜ˜t›9¨š>�3ÐK°×0@Ñ0@ÄÀTÃÓ0KÐKð �aŠZ˜QŸV™Vš[ q¨QÒ.Ø—(‘(—-‘- §¡Ó'ˆCØ 1š9�3ÐA¨3×+;Ñ+;¸DÓ+AÐAð �QŠY˜1Ÿ6™6˜>¨d°QªhØ—(‘(—-‘-¤ E£
Ó+ˆCØ 1š9�3ÐA¨3×+;Ñ+;¸DÓ+AÐAð �QŠY˜AŸF™F˜N¨a¯f©f¸ªkØ$%§F¡F N™4¸!¿&¹&À5¹.ˆLØ—(‘(—.‘. ¨Ó5ˆCØ 1š9�3ÐA¨3×+;Ñ+;¸DÓ+AÐAð ˜q˜eð $bð bð 	ô ˜‹oÐr   N)r   r   rB   rC   )r9   r*   rB   r   )rD   rE   rF   rG   rH   r   rA   rJ   r   r   rL   rL   o   s   … ñð 
ƒNóô]r   rL   )Ú
__future__r   Útypingr   Úpolars._reexportÚ	_reexportr    r   Úpolarsr   r   r   r	   rH   r   rL   rJ   r   r   ú<module>rX      sB   ðÞ "å  å áÝ ç3Ñ3à(¨6Ñ1€M�9Ó1÷]7ñ ]7÷@jò jr   