
    hh=F                       U d dl mZ d dlmZ d dlmZmZmZ d dlZ	d dl
mZ d dlmZ d dlmZmZmZ erjd dlmZmZmZ d dlmZmZ d d	lmZ d d
lmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z% d dl&m'Z' d dl(m)Z) d dl*m+Z+m,Z, e!Z-de.d<   ddZ/ddZ0ddZ1ddZ2ddZ3ddZ4ddddd&Z5nd d'l
m5Z5 d d(l6m4Z4m0Z0m3Z3m2Z2m1Z1m/Z/ ej7        8                                Z9	 d)d*d+d,d-d.d/d0d1d2d3
Z:d4e.d5<   e	j;        Z<	 dd7Z=dd:Z>	 ddd?Z?ddEZ@	 dddGZAddIZBddNZC edOP          ddQ            ZDejE        jF        ZFi eFjG         e	jH                    eFjI         e	jJ                    eFjK         e	jL                    eFjM         e	jN                    eFjO         e	jP                    eFjQ         e	jR         e	jS                     e	jN                              eFjT         e	jU                    eFjV         e	jW        dR          eFjX         e	jY                    eFjZ         e	j[                    eFj\         e	j]                    eFj^         e	j_                    eFj`         e	ja                    eFjb         e	jc                    eFjd         e	jS                    eFje         e	jf                    ZgdSe.dT<   eFjh        eFji        fZjddVZkdd[Zldd_ZmddeZndfZodgZpdhZqdiZrdjZsdkZtdlZueo ep dmeq dmeu dnZvdoZwdpZxdqZydrZzezdsfewdtfexdufeydvffZ{erdwfesdxfetdyffZ|ddddd{Z}dd|Z~dd~ZddZddZddZe9dk    rddiddiddidZde.d<   nddiddiddidZ	 dddZ G d ded                   ZdS )    )annotations)	lru_cache)TYPE_CHECKINGAnycastN)EagerSeriesNamespace)ImplementationVersionisinstance_or_issubclass)IterableIteratorMapping)	TypeAliasTypeIsArrowSeries)	ArrayAnyArrayOrScalarArrayOrScalarT1ArrayOrScalarT2ChunkedArrayAny
IncompleteNativeIntervalUnitPromoteOptions	ScalarAny)IntervalUnit)DType)	IntoDTypePythonLiteralr   ChunkedArrayStructArraytr   return"TypeIs[pa.TimestampType[Any, Any]]c                    d S N r!   s    L/var/www/histauto/venv/lib/python3.11/site-packages/narwhals/_arrow/utils.pyis_timestampr)   %             TypeIs[pa.DurationType[Any]]c                    d S r%   r&   r'   s    r(   is_durationr.   &   r*   r+   TypeIs[pa.ListType[Any]]c                    d S r%   r&   r'   s    r(   is_listr1   '   r*   r+   TypeIs[pa.LargeListType[Any]]c                    d S r%   r&   r'   s    r(   is_large_listr4   (   r*   r+   &TypeIs[pa.FixedSizeListType[Any, Any]]c                    d S r%   r&   r'   s    r(   is_fixed_size_listr7   )   r*   r+   (TypeIs[pa.DictionaryType[Any, Any, Any]]c                    d S r%   r&   r'   s    r(   is_dictionaryr:   *   r*   r+   optionsmemory_poolpatternstrstringsr   r<   r=   c                  d S r%   r&   )r@   r>   r<   r=   s       r(   extract_regexrB   +   s	     #&#r+   )rB   )r:   r.   r7   r4   r1   r)   yearquartermonthdayhourminutesecondmillisecondmicrosecond
nanosecond)
yqmodhmsmsusnsz)Mapping[IntervalUnit, NativeIntervalUnit]
UNITS_DICTvaluec               (    ddl m}  || d          S )Nr   )maybe_extract_py_scalarT)return_py_scalar)narwhals._arrow.seriesrZ   )rX   rZ   s     r(   extract_py_scalarr]   R   s*    >>>>>>""54@@@@r+   objTypeIs[ArrayOrScalar]c                d    t          | t          j        t          j        t          j        f          S )z-Return True for any base `pyarrow` container.)
isinstancepaChunkedArrayArrayScalar)r^   s    r(   is_array_or_scalarrf   X   s    cBORXryABBBr+   arr#ArrayOrScalar | list[Iterable[Any]]dtypepa.DataType | Nonec                   t          | t          j                  r| S t          | t                    rt          j        | |          S t          j        | g|          S r%   )ra   rb   rc   listchunked_array)rg   ri   s     r(   rm   rm   ]   sW     #r'' 
#t ,U+++SE5)))r+   nintseriesr   r   c                @    t          j        | |j        j                  S )z|Create a strongly-typed Array instance with all elements null.

    Uses the type of `series`, without upseting `mypy`.
    )rb   nullsnativetype)rn   rp   s     r(   
nulls_likeru   g   s    
 8Av})***r+   PythonLiteral | ScalarAnyc               P    t           }t          j         || |          |          S )zCreate an Array instance whose slots are the given scalar.

    *Optionally*, casting to `dtype` **before** repeating `n` times.
    rt   )litrb   repeat)rX   rn   ri   lit_s       r(   rz   rz   o   s*     D9TT%e,,,a000r+   pa.Int64Arrayc               ,    t          j        d|           S )Nr   )rb   rz   )rn   s    r(   zerosr~   z   s    9Q??r+   pa.DataTypeversionr
   r   c                    t          | t          j                  r|j                                        S t          | |          S r%   )ra   rb   ExtensionTypedtypesUnknown&native_non_extension_to_narwhals_dtype)ri   r   s     r(   native_to_narwhals_dtyper   ~   s;    %)** (~%%'''1%AAAr+      )maxsizec                ,
    j         t          j                                       r                                S t          j                                       r                                S t          j                                       r                                S t          j        	                               r
                                S t          j                                       r                                S t          j                                       r                                S t          j                                       r                                S t          j                                       r                                S t          j                                       r                                S t          j                                       r                                S t          j                                       r                                S t          j                                       sDt          j                                       s% t7          t          j        dd                      r                                S t          j                                       r                                S t?                     r!                      j!         j"                  S tG                     r$                     j!                  S t          j        %                               r&                                S t          j        '                               r5(                     fdtS           j*                  D                       S tW                     stY                     r(-                    t]           j/                            S ta                     r.1                    t]           j/                   j2                  S t          j        3                               r4                                S t          j        5                               st          j        6                               r7                                S t          j        8                               r9                                S :                                S )Nis_string_viewc                    dS )NFr&   )_s    r(   <lambda>z8native_non_extension_to_narwhals_dtype.<locals>.<lambda>   s     r+   )	time_unit	time_zone)r   c           
         g | ]V}                                         |          j        t                              |          j                            WS r&   )Fieldfieldnamer   rt   ).0iri   r   r   s     r(   
<listcomp>z:native_non_extension_to_narwhals_dtype.<locals>.<listcomp>   sc       
 	 KKNN',U[[^^-@'JJ   r+   );r   rb   typesis_int64Int64is_int32Int32is_int16Int16is_int8Int8	is_uint64UInt64	is_uint32UInt32	is_uint16UInt16is_uint8UInt8
is_booleanBoolean
is_float64Float64
is_float32Float32	is_stringis_large_stringgetattrString	is_date32Dater)   Datetimeunittzr.   Durationr:   Categorical	is_structStructrange
num_fieldsr1   r4   Listr   
value_typer7   rd   	list_size
is_decimalDecimal	is_time32	is_time64Time	is_binaryBinaryr   )ri   r   r   s   ``@r(   r   r      s@   ^F	x ||~~	x ||~~	x ||~~	x {{}}	x%   }}	x%   }}	x%   }}	x ||~~	x5!!  ~~	x5!!  ~~	x5!!  ~~ 	5!!8##E** @728-??FF
 }}	x%   {{}}E IuxHHH5 5444	xe$$ $!!###	x%   	
}}     
 u/00  
 
 	
 u~~ Pu-- P{{3E4DgNNOOO%   
||$U%5w??
 
 	
 
x5!!  ~~	x%   BH$6$6u$=$= {{}}	x%   }}>>r+   rV   z!Mapping[type[DType], pa.DataType]NW_TO_PA_DTYPESr   c                t   j         }|                                 }t                              |          x}r|S t	          | |j                  r9| j        }| j        x}rt          j	        ||          nt          j	        |          S t	          | |j
                  rt          j        | j                  S t	          | |j                  r)t          j        t          | j                            S t	          | |j                  r%t          j        fd| j        D                       S t	          | |j                  r3t          | j                  }| j        }t          j        ||          S t+          |t,                    rd|j         d}	t1          |	          d|  }	t3          |	          )Nr   )r   c                J    g | ]}|j         t          |j                   f S )r   )r   narwhals_to_native_dtyperi   )r   r   r   s     r(   r   z,narwhals_to_native_dtype.<locals>.<listcomp>   s@        5ek7SSST  r+   )r   zConverting to z$ dtype is not supported for PyArrow.zUnknown dtype: )r   	base_typer   getr   r   r   r   rb   	timestampr   durationr   list_r   innerr   structfieldsrd   size
issubclassUNSUPPORTED_DTYPES__name__NotImplementedErrorAssertionError)
ri   r   r   r   pa_typer   r   r   r   msgs
    `        r(   r   r      s   ^F!!I!%%i000w v77 Y05*?"Xr|D"%%%blSWFXFXXv77 ,{5?+++v{33 [x#;EKQX#Y#Y#YZZZZv}55 
y   "\  
 
 	
  v|44 4(gFFFJ	x3333)/00 'Wy1WWW!#&&&
#E
#
#C


r+   lhsrhs'ArrowSeries | PythonLiteral | ScalarAny?tuple[ChunkedArrayAny | ScalarAny, ChunkedArrayAny | ScalarAny]c                   ddl m} || j        t          d| j                  fS t          ||          rK| j        r|j        s| j        d         |j        fS |j        r| j        |j        d         fS | j        |j        fS t          |t                    rd}t          |          | j        t          |t          j
                  r|nt          |          fS )aJ  Extract native objects in binary  operation.

    If the comparison isn't supported, return `NotImplemented` so that the
    "right-hand-side" operation (e.g. `__radd__`) can be tried.

    If one of the two sides has a `_broadcast` flag, then extract the scalar
    underneath it so that PyArrow can do its own broadcasting.
    r   r   Nrx   z$Expected Series or scalar, got list.)r\   r   rs   ry   _typera   
_broadcastrl   	TypeErrorrb   re   )r   r   r   r   s       r(   extract_nativer      s     322222
{z3t#)44444#{## &> 	-#. 	-:a=#*,,> 	-:sz!},,z3:%%#t 4nn:jbi88Fssc#hhFFr+   leftr   rightc          
     6   t          j        |t          d|j                            }t          j        ||t          d|j                            }t          d | j                  }t
          j                            | j                  rMt
          j                            |j                  r(t          j        |t          j        | |          |          }t
          j        	                    |j                  rt          d|j                  }t          j        t          j        ||          |           }t          j        t          j        | |          t          d|                    }t          j        t          j        ||          t          j        |t          d|                    |          }	n|}	|	
                    | j                  }	n=t          j        |t          j        | |          |          }t          j        |          }	|	S )Nr   rx      zpa._lib.Int64Type)pc	not_equalry   rt   if_elserb   r   
is_integerdivide_checkedis_signed_integerr   multiplylessbit_wise_xorand_subtractdividefloor)
r   r   	safe_mask
safe_rightnon_safe_resultdivideddiv_typehas_remainderhas_one_negative_operandresults
             r(   floordiv_compatr     s    UC
$;$;$;<<IIuc!%*.E.E.EFFJ$TY///O	x49%% #"(*=*=ej*I*I #*r(z::O
 
 8%%gl33 	/>>HLWe)D)DdKKM')we,,c!X.>.>( ($ Z'?@@GSH%5%566 FF FTY''*Y	$
(C(C_UU'""Mr+   arrow_arrayr   	pa_objectr   'tuple[ArrayOrScalarT1, ArrayOrScalarT2]c                :   t           j                            | j                  rtt           j                            |j                  rP|                     t          j                    d          |                    t          j                    d          fS | |fS )NF)safe)rb   r   r   rt   r   float64)r   r   s     r(   cast_for_truedivr  ;  s     
x;+,, 
1D1DY^1T1T 
 
5999>>JLLu <J <
 <
 
 	
 	!!r+   z/(?P<date>\d{1,4}[-/.]\d{1,2}[-/.]\d{1,4}|\d{8})z(?P<sep>\s|T)z'(?P<time>\d{2}:\d{2}(?::\d{2})?|\d{6}?)z^(?P<hms>\d{2}:\d{2}:\d{2})$z^(?P<hm>\d{2}:\d{2})$z^(?P<hms_no_sep>\d{6})$z(?P<tz>Z|[+-]\d{2}:?\d{2})?z?$zw^(?P<year>(?:[12][0-9])?[0-9]{2})(?P<sep1>[-/.])(?P<month>0[1-9]|1[0-2])(?P<sep2>[-/.])(?P<day>0[1-9]|[12][0-9]|3[01])$zw^(?P<day>0[1-9]|[12][0-9]|3[01])(?P<sep1>[-/.])(?P<month>0[1-9]|1[0-2])(?P<sep2>[-/.])(?P<year>(?:[12][0-9])?[0-9]{2})$zw^(?P<month>0[1-9]|1[0-2])(?P<sep1>[-/.])(?P<day>0[1-9]|[12][0-9]|3[01])(?P<sep2>[-/.])(?P<year>(?:[12][0-9])?[0-9]{2})$zY^(?P<year>(?:[12][0-9])?[0-9]{2})(?P<month>0[1-9]|1[0-2])(?P<day>0[1-9]|[12][0-9]|3[01])$%Y%m%dz%Y-%m-%dz%d-%m-%Yz%m-%d-%Yz%H:%M:%Sz%H:%Mz%H%M%Spa.StructArrayc              v    t          j        t          | |||          j                  }t	          d|          S )Nr;   r  )rb   concat_arraysrB   chunksr   )r@   r>   r<   r=   rs        r(   _extract_regex_concat_arraysr  e  s@     	gw[QQQX	 	A  !$$$r+   c                   t          |                                                     dd          t                    }t	          j        |                                                                          sd}t          |          |	                    d          }|	                    d          }t	          j
        t	          j        |                                                    dk    rd}t          |          t	          j
        t	          j        |                                                    dk    rd	}t          |          t          t          d
|	                    d                              }t          t          d
|	                    d                              }|d                                         }|d                                         rdnd}| | | | S )z.Try to infer datetime format from StringArray.r   
   r>   zUnable to infer datetime format, provided format is not supported. Please report a bug to https://github.com/narwhals-dev/narwhals/issuessepr   r   z@Found multiple separator values while inferring datetime format.z?Found multiple timezone values while inferring datetime format.pc.StringArraydatetimez%z )r  	drop_nullsliceFULL_REr   allis_validas_pyr   r   countunique
ValueError_parse_date_formatr   _parse_time_format)	rg   matchesr   
separatorsr   
date_value
time_value	sep_valuetz_values	            r(   parse_datetime_formatr'  s  s   *3==??+@+@B+G+GQXYYYG6'""$$%%++-- 'U 	 "#&&&u%%J	t		B 
x	*%%&&,,..22Poo	x	"$$&&**Ooo#D)97==;P;P$Q$QRRJ#D)97==;P;P$Q$QRRJ1##%%I!u{{}},tt"H;);Z;;;;r+   r  c                F   t           D ]\  }}t          j        | |          }|dk    r<t          j        |                                                                          r|c S t          j        |                                                                          rt          j        t          j        |                    d          x}                                                    dk    rt          j        t          j        |                    d          x}                                                    dk    rP|d                                         x}|d                                         k    r|	                    d|          c S d}t          |          )	Nr  r  sep1r   sep2r   -zgUnable to infer datetime format. Please report a bug to https://github.com/narwhals-dev/narwhals/issues)DATE_FORMATSr   rB   r  r  r  r  r  r   replacer  )rg   date_rgxdate_fmtr!  r)  r*  date_sep_valuer   s           r(   r  r    sf   * 
9 
9("3999xBF7+;+;+=+=$>$>$D$D$F$FOOOF7##%%&&,,..	97==+@+@#@4AABBHHJJaOO7==+@+@#@4AABBHHJJaOO#'7==??2tAw}}FF##C88888	Q  S//r+   c                    t           D ]W\  }}t          j        | |          }t          j        |                                                                          r|c S XdS )Nr  r  )TIME_FORMATSr   rB   r  r  r  )rg   time_rgxtime_fmtr!  s       r(   r   r     sh    *  ("39996'""$$%%++-- 	OOO	2r+   window_sizecenterbooltuple[ArrowSeries, int]c                   |s| dfS |dz  }||dz  dk    z
  }| j         j        }t          ||           g|t          ||           R }|                     t	          j        |                    ||z   fS )au  Pad series with None values on the left and/or right side, depending on the specified parameters.

    Arguments:
        series: The input ArrowSeries to be padded.
        window_size: The desired size of the window.
        center: Specifies whether to center the padding or not.

    Returns:
        A tuple containing the padded ArrowSeries and the offset value.
    r      )rs   r  ru   _with_nativerb   r
  )rp   r5  r6  offset_leftoffset_rightr  arrayss          r(   
pad_seriesr?    s      qy"K+/Q"67L]!FV,,WvWz,PV7W7WWWFr/7788+:TTTr+   chunked_arraysChunkedArrayAny | ScalarAny	separator7tuple[Iterator[ChunkedArrayAny | ScalarAny], ScalarAny]c                    t          d |D                       st          j                    nt          j                    fd|D             t	          |           fS )Nc              3  ^   K   | ](}t           j                            |j                  V  )d S r%   )rb   r   r   rt   )r   cas     r(   	<genexpr>z2cast_to_comparable_string_types.<locals>.<genexpr>  s4      NN28++BG44NNNNNNr+   c              3  B   K   | ]}|                               V  d S r%   )r   )r   rF  ri   s     r(   rG  z2cast_to_comparable_string_types.<locals>.<genexpr>  s-      44rBGGENN444444r+   )anyrb   stringlarge_stringry   )rB  r@  ri   s     @r(   cast_to_comparable_string_typesrL    si     NN~NNNNN		_ 

 5444^444c)U6K6KKKr+   )   promote_optionsdefault
permissivenone)rO  rP  rQ  z*Mapping[PromoteOptions, Mapping[str, Any]]_PROMOTEpromoteTFtablesIterable[pa.Table]r   pa.Tablec                <    t          j        | fi t          |         S r%   )rb   concat_tablesrR  )rT  rN  s     r(   rX  rX    s"     F@@h&?@@@r+   c                      e Zd ZdS )ArrowSeriesNamespaceN)r   
__module____qualname__r&   r+   r(   rZ  rZ    s          r+   rZ  )r   r   )r!   r   r"   r#   )r!   r   r"   r,   )r!   r   r"   r/   )r!   r   r"   r2   )r!   r   r"   r5   )r!   r   r"   r8   )
r>   r?   r@   r   r<   r   r=   r   r"   r    )rX   r   r"   r   )r^   r   r"   r_   r%   )rg   rh   ri   rj   r"   r   )rn   ro   rp   r   r"   r   )ri   rj   rX   rv   rn   ro   r"   r   )rn   ro   r"   r|   )ri   r   r   r
   r"   r   )ri   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  )rg   r   r"   r?   )rg   r  r"   r?   )rp   r   r5  ro   r6  r7  r"   r8  )r@  rA  rB  r?   r"   rC  )rQ  )rT  rU  rN  r   r"   rV  )
__future__r   	functoolsr   typingr   r   r   pyarrowrb   pyarrow.computecomputer   narwhals._compliantr   narwhals._utilsr	   r
   r   collections.abcr   r   r   typing_extensionsr   r   r\   r   narwhals._arrow.typingr   r   r   r   r   r   r   r   r   narwhals._durationr   narwhals.dtypesr   narwhals.typingr   r   r    __annotations__r)   r.   r1   r4   r7   r:   rB   pyarrow.typesPYARROW_backend_versionBACKEND_VERSIONrW   scalarry   r]   rf   rm   ru   rz   r~   r   r   MAINr   r   r  r   float32r   binaryr   rJ  r   bool_r   
dictionaryuint32r   date32r   time64r   int8r   int16r   int32r   int64r   uint8r   uint16r   r   uint64r   r   Objectr   r   r   r   r  DATE_RESEP_RETIME_REHMS_REHM_REHMS_RE_NO_SEPTZ_REr  YMD_REDMY_REMDY_REYMD_RE_NO_SEPr,  r2  r  r'  r  r   r?  rL  rR  rX  rZ  r&   r+   r(   <module>r     s   " " " " " " "       + + + + + + + + + +           4 4 4 4 4 4 M M M M M M M M M M 0;;;;;;;;;;33333333222222
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 0/////%%%%%%88888888 *98888GGGG@@@@8888CCCCQQQQNNNN & & & & & & & .-----                !(99;; + 
	
				


9 9
     	i !A A A AC C C C KO* * * * *+ + + + NR1 1 1 1 1   B B B B 2> > > >B 
	6
NJBJLL6
NJBJLL6 M929;;6 M929;;	6
 NHBHJJ6 ibikk929;;??6 K6 K46 K6 L("(**6 L("(**6 L("(**6 L("(**6 M929;;6 M929;;6  M929;;!6    $ nfm4    <G G G G<       F" " " "$ =	
4	( *%
3v
3
3
3
3%
3
3
3 
D 
D 
Dl HZZZ	 $ug&68QR % % % % % %< < < <>   (   U U U U.	L 	L 	L 	L e &y1(,7"F+< <H      t$ $'E" H CIA A A A A X W W W W/0PQ W W W W Wr+   