
    }i;                        d dl mZ d dlZd dlmZ d dlZd dlmZ	 d dl
mZmZmZmZ d dlmZ erd dlmZ d dlmZ  G d d	eed
                   ZdS )    )annotationsN)TYPE_CHECKING)ArrowSeriesNamespaceextract_nativelitparse_datetime_format)StringNamespace)ArrowSeries)
Incompletec                      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d0dZd0dZd'dZd'dZd'd Zd1d"Zd2d$Zd2d%Zd&S )3ArrowSeriesStringNamespacereturnr
   c                Z    |                      t          j        | j                            S N)with_nativepcutf8_lengthnativeselfs    N/home/jrussi/.local/lib/python3.11/site-packages/narwhals/_arrow/series_str.py	len_charsz$ArrowSeriesStringNamespace.len_chars   s"    t{ ; ;<<<    valuepatternstrliteralboolnintc               2   |rt           j        nt           j        }t          | j        |          \  }}t          |t          j                  sd}t          |           || j	        ||
                                |          }	|                     |	          S )NzBPyArrow backed `.str.replace` only supports str replacement values)replacementmax_replacements)r   replace_substringreplace_substring_regexr   	compliant
isinstancepaStringScalar	TypeErrorr   as_pyr   )
r   r   r   r   r   fn_value_nativemsgarrs
             r   replacez"ArrowSeriesStringNamespace.replace   s     &-LR!!"2L(??<,88 	!VCC.. bKl.@.@.B.BUV
 
 
 $$$r   c               4    |                      |||d          S )N)r   r   )r1   )r   r   r   r   s       r   replace_allz&ArrowSeriesStringNamespace.replace_all'   s     ||E7Gr|BBBr   
characters
str | Nonec                t    |                      t          j        | j        |pt          j                            S r   )r   r   	utf8_trimr   string
whitespace)r   r5   s     r   strip_charsz&ArrowSeriesStringNamespace.strip_chars,   s3    Lj&EF4EFF
 
 	
r   prefixc           
         |                      t          j        |                     dt	          |                    j        t          |                              S )Nr   r   r   equalslicelenr   r   )r   r<   s     r   starts_withz&ArrowSeriesStringNamespace.starts_with1   s@    As6{{)C)C)JCPVKK X XYYYr   suffixc           	         |                      t          j        |                     t	          |           d           j        t          |                              S r   r>   )r   rC   s     r   	ends_withz$ArrowSeriesStringNamespace.ends_with4   sH    HTZZVd33:CKKHH
 
 	
r   c               (   t          | j        |          \  }}t          |t          j                  sd}t          |          |rt          j        nt          j        }| 	                     || j
        |                                                    S )NzD`.str.contains` only supports str pattern values for pyarrow backend)r   r&   r'   r(   r)   r*   r   match_substringmatch_substring_regexr   r   r+   )r   r   r   r-   pattern_nativer/   r,   s          r   containsz#ArrowSeriesStringNamespace.contains9   s    *4>7CC>."/:: 	!XCC.. #*HR0H4;0D0D0F0F G GHHHr   offsetlength
int | Nonec                r    |||z   nd }|                      t          j        | j        ||                    S )N)startstop)r   r   utf8_slice_codeunitsr   )r   rK   rL   rP   s       r   r@   z ArrowSeriesStringNamespace.sliceA   sC    "("4v$#DKvDIII
 
 	
r   byc                `    t          j        | j        |          }|                     |          S r   )r   split_patternr   r   )r   rR   split_seriess      r   splitz ArrowSeriesStringNamespace.splitG   s*    'R88---r   formatc                    |t          | j                  n|}t          j        | j        |d          }|                     |          S )Nus)rW   unit)r   r   r   strptimer   )r   rW   timestamp_arrays      r   to_datetimez&ArrowSeriesStringNamespace.to_datetimeK   sG    7=~&t{3336+dk&tLLL000r   c                \    |                      |          j                                        S )N)rW   )r]   dtdate)r   rW   s     r   to_datez"ArrowSeriesStringNamespace.to_dateP   s(    v..166888r   c                Z    |                      t          j        | j                            S r   )r   r   
utf8_upperr   r   s    r   to_uppercasez'ArrowSeriesStringNamespace.to_uppercaseS   "    dk : :;;;r   c                Z    |                      t          j        | j                            S r   )r   r   
utf8_lowerr   r   s    r   to_lowercasez'ArrowSeriesStringNamespace.to_lowercaseV   re   r   c                Z    |                      t          j        | j                            S r   )r   r   
utf8_titler   r   s    r   to_titlecasez'ArrowSeriesStringNamespace.to_titlecaseY   re   r   widthc                h   t           j        }| j        }t          d          t          d          }}|                     dd          j        |                     dd           j        }}t          j        t          j        |          t          |                    }t          j        ||          }	t          j        ||          }
t          j        t          j	        |	|          t          j	        |
|          |          }t          j
        ||dz
  d          }t          j        | |t          j        |t          |                    |d           |t          j        |t          |                    |d          t          j
        ||d          |          }|                     |          S )	N-+r      0)padding rl   rr   )r   binary_join_element_wiser   r   r@   lessr   r?   make_structand_	utf8_lpad	case_whenr(   repeatrA   r   )r   rl   binary_joinr   hyphenplus
first_charremaining_charsless_than_widthstarts_with_hyphenstarts_with_plus
conditionspadded_remaining_charsresults                 r   zfillz ArrowSeriesStringNamespace.zfill\   s   "$"=3xxSJJq!#JJq$& $
 '"."8"8#e**EEXj&998J55^G&88G$o66
 

 "$ouqyRU!V!V!VK	&#f++..0F  K	$F,,.Db  Luc:::

 

 '''r   	fill_charc                `    |                      t          j        | j        ||                    S Nrt   )r   r   ry   r   r   rL   r   s      r   	pad_startz$ArrowSeriesStringNamespace.pad_start   0    LFIFFF
 
 	
r   c                `    |                      t          j        | j        ||                    S r   )r   r   	utf8_rpadr   r   s      r   pad_endz"ArrowSeriesStringNamespace.pad_end   r   r   N)r   r
   )
r   r
   r   r   r   r   r   r    r   r
   )r   r
   r   r   r   r   r   r
   )r5   r6   r   r
   )r<   r   r   r
   )rC   r   r   r
   )r   r
   r   r   r   r
   )rK   r    rL   rM   r   r
   )rR   r   r   r
   )rW   r6   r   r
   )rl   r    r   r
   )rL   r    r   r   r   r
   )__name__
__module____qualname__r   r1   r4   r;   rB   rE   rJ   r@   rV   r]   ra   rd   rh   rk   r   r   r    r   r   r   r      su       = = = =% % % %C C C C

 
 
 

Z Z Z Z
 
 
 

I I I I
 
 
 
. . . .1 1 1 1
9 9 9 9< < < << < < << < < <"( "( "( "(H
 
 
 


 
 
 
 
 
r   r   r
   )
__future__r   r9   typingr   pyarrowr(   pyarrow.computecomputer   narwhals._arrow.utilsr   r   r   r   !narwhals._compliant.any_namespacer	   narwhals._arrow.seriesr
   narwhals._arrow.typingr   r   r   r   r   <module>r      s   " " " " " "                                   > = = = = = 2222222111111r
 r
 r
 r
 r
!5}7U r
 r
 r
 r
 r
r   