
    O3jQ                        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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y)    )annotationsN)TYPE_CHECKING)ArrowSeriesNamespaceextract_nativelitparse_datetime_formatparse_time_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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) ArrowSeriesStringNamespacec                ^    | j                  t        j                  | j                              S N)with_nativepcutf8_lengthnativeselfs    G/DATA/.local/lib/python3.12/site-packages/narwhals/_arrow/series_str.py	len_charsz$ArrowSeriesStringNamespace.len_chars   s     t{{ ;<<    c               0   |rt         j                  nt         j                  }t        | j                  |      \  }}t        |t        j                        sd}t        |       || j                  ||j                         |      }	| 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   valuepatternliteralnfn_value_nativemsgarrs
             r   replacez"ArrowSeriesStringNamespace.replace   s~     &-R!!"2L2L(?<,8VCC. KKl.@.@.BUV
 $$r   c               ,    | j                  |||d      S )N)r'   r(   )r.   )r   r%   r&   r'   s       r   replace_allz&ArrowSeriesStringNamespace.replace_all(   s     ||E7Gr|BBr   c                    | j                  t        j                  | j                  |xs t        j
                              S r   )r   r   	utf8_trimr   string
whitespace)r   
characterss     r   strip_charsz&ArrowSeriesStringNamespace.strip_chars-   s2    LLj&EF4E4EF
 	
r   c                \   t        | j                  |      \  }}t        |t        j                        sd}t        |      | j                  t        j                  | j                  dt        |j                                     j                  t        |j                                           S )NzF`.str.starts_with` only supports str prefix values for pyarrow backendr   r   r   r    r!   r"   r#   r   r   equalslicelenr$   r   r   )r   prefixr*   prefix_nativer,   s        r   starts_withz&ArrowSeriesStringNamespace.starts_with2   s    )$..&A=-9ZCC. HH

1c-"5"5"789@@M'')*
 	
r   c           
     ^   t        | j                  |      \  }}t        |t        j                        sd}t        |      | j                  t        j                  | j                  t        |j                                d       j                  t        |j                                           S )NzD`.str.ends_with` only supports str suffix values for pyarrow backendr9   )r   suffixr*   suffix_nativer,   s        r   	ends_withz$ArrowSeriesStringNamespace.ends_with>   s    )$..&A=-9XCC. HH

C 3 3 566=DDM'')*
 	
r   c               &   t        | j                  |      \  }}t        |t        j                        sd}t        |      |rt        j                  nt        j                  }| j                   || 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.containsJ   sn    *4>>7C>."//:XCC. #*R0H0H4;;0D0D0F GHHr   c                v    |||z   nd }| j                  t        j                  | j                  ||            S )N)startstop)r   r   utf8_slice_codeunitsr   )r   offsetlengthrK   s       r   r;   z ArrowSeriesStringNamespace.sliceR   s;    "("4v$##DKKvDI
 	
r   c                d    t        j                  | j                  |      }| j                  |      S r   )r   split_patternr   r   )r   bysplit_seriess      r   splitz ArrowSeriesStringNamespace.splitX   s)    ''R8--r   c                    |t        | j                        n|}t        j                  | j                  |d      }| j	                  |      S Nus)formatunit)r   r   r   strptimer   )r   rW   timestamp_arrays      r   to_datetimez&ArrowSeriesStringNamespace.to_datetime\   s>    7=~&t{{36++dkk&tL00r   c                V    | j                  |      j                  j                         S )N)rW   )r[   dtdate)r   rW   s     r   to_datez"ArrowSeriesStringNamespace.to_datea   s%    v.116688r   c                    |t        | j                        n|}t        j                  | j                  |d      }| j                  j
                  j                         }| j                  |      j                  |      S rU   )	r	   r   r   rY   versiondtypesTimer   cast)r   rW   rZ   nw_time_dtypes       r   to_timez"ArrowSeriesStringNamespace.to_timed   sa    39>"4;;/v++dkk&tL++002055mDDr   c                ^    | j                  t        j                  | j                              S r   )r   r   
utf8_upperr   r   s    r   to_uppercasez'ArrowSeriesStringNamespace.to_uppercasek        dkk :;;r   c                ^    | j                  t        j                  | j                              S r   )r   r   
utf8_lowerr   r   s    r   to_lowercasez'ArrowSeriesStringNamespace.to_lowercasen   rj   r   c                ^    | j                  t        j                  | j                              S r   )r   r   
utf8_titler   r   s    r   to_titlecasez'ArrowSeriesStringNamespace.to_titlecaseq   rj   r   c                Z   t         j                  }| j                  }t        d      t        d      }}| j	                  dd      j                  | 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      |      }| j                  |      S )	N-+r      0)padding widthrv   )r   binary_join_element_wiser   r   r;   lessr   r:   make_structand_	utf8_lpad	case_whenr!   repeatr<   r   )r   ry   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.zfillt   sY   "$"="=3xSJJq!##JJq$&& $
 ''".."8#e*EXXj&988J5^^GG&8GG$o6

 "$ouqyRU!V		&#f+.0F 		$F,.Db LLuc:

 ''r   c                d    | j                  t        j                  | j                  ||            S Nrx   )r   r   r~   r   r   rN   	fill_chars      r   	pad_startz$ArrowSeriesStringNamespace.pad_start   )    LLFIF
 	
r   c                d    | j                  t        j                  | j                  ||            S r   )r   r   	utf8_rpadr   r   s      r   pad_endz"ArrowSeriesStringNamespace.pad_end   r   r   N)returnr   )
r%   r   r&   strr'   boolr(   intr   r   )r%   r   r&   r   r'   r   r   r   )r6   
str | Noner   r   )r=   r   r   r   )rA   r   r   r   )r&   r   r'   r   r   r   )rM   r   rN   z
int | Noner   r   )rQ   r   r   r   )rW   r   r   r   )ry   r   r   r   )rN   r   r   r   r   r   )__name__
__module____qualname__r   r.   r1   r7   r?   rC   rH   r;   rS   r[   r_   rf   ri   rm   rp   r   r   r    r   r   r   r      s    =% %+.%<@%EH%	%C C+.C<@C	C



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

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