
    Lpjxk                       % S SK Jr  S SKrS SKrS SKrS SKJrJrJrJ	r	J
r
  S SKrS SKrS SKJr  S SKJrJrJrJrJrJr  S SKJr  S SKJrJrJrJrJrJ r J!r!  S SK"J#r#  \(       a  S S	K$J%r%J&r&J'r'J(r(  S S
K)J*r*  S SKJ+r+  S SK,r-S SK.J/r0  S SK1J2r2  S SK3J4r4  S SK5J6r6  S SK7J8r8  S SK9J:r:  S SK;J<r<J=r=J>r>  S SK?J@r@  S SKAJBrBJCrCJDrDJErE  \	" S\8S9rF\DrGS\HS'   \DrIS\HS'   \%\\J/\4   rKS\HS'   \JrLS\HS'   \R                  \R                  \R                  1rPSrQ\R                  " \Q\R                  5      rTSrU\R                  " \U\R                  5      rV\S   rWS\HS'   S S!S".rXS#S$S%S&S'S(S)S*S+S,S-.
rYS.\HS/'   \R                  R                  5       r[ \ " \5      r\ SS1 jr]      SS3 jr^        SS4 jr_          SS5 jr`\R                  " S6S79SS8 j5       rb\R                  " S6S79SS9 j5       rc        SS: jrd        SS; jre    SS< jrfS=rgS>S?.         SS@ jjrhSSA jriSSB jrj      SSC jrk\R                  " S6S79SSD j5       rl\R                  R                  rn\nR                  SE\nR                  SF0rqSG\HSH'   \nR                  SISJSKSL.\nR                  SMSNSOSL.\nR                  SPSQSQSL.\nR                  SRSSSTSL.\nR                  SUSVSWSL.\nR                  SXSYSZSL.\nR                  S[S\S]SL.\nR                  S^S_S`SL.\nR                  SaSbScSL.\nR                  SdSeSfSL.\nR                  SgShSiSL.\nR                  SjSkS0SL.0r~Sl\HSm'             SSn jr        SSo jrSSp jr\GR                  Sq4\GR                  Sr4\GR                  \4\GR                  Sq4\GR                  \4\GR                  Sq4\GR                  \4\GR                  \4\GR                  \4Ss.	rSt\HSu'           SSv jr\\\SwSx.rSy\HSz'   SS{ jr        SS| jrSS} jrSS~ jr " S S\S2\4   5      rSS jr          SS jr        SS jrg)    )annotationsN)TYPE_CHECKINGAnyLiteralTypeVarcast)EagerSeriesNamespace)MS_PER_SECONDNS_PER_MICROSECONDNS_PER_MILLISECONDNS_PER_SECONDSECONDS_PER_DAYUS_PER_SECOND)issue_warning)ImplementationVersion_DeferredIterablecheck_columns_existisinstance_or_issubclassparse_versionrequires)
ShapeError)CallableIterableIteratorMapping)
ModuleType)	TypeAlias)Dtype)BaseMaskedDtype)TypeIs)IntervalUnit)PandasLikeExprPandasLikeSeries)NativeDataFrameTNativeNDFrameTNativeSeriesT)DType)DTypeBackend	IntoDTypeTimeUnit_1DArrayExprT)boundr   UnitCurrent
UnitTargetBinOpBroadcastIntoRhsa  ^
    datetime64\[
        (?P<time_unit>s|ms|us|ns)                 # Match time unit: s, ms, us, or ns
        (?:,                                      # Begin non-capturing group for optional timezone
            \s*                                   # Optional whitespace after comma
            (?P<time_zone>                        # Start named group for timezone
                [a-zA-Z\/]+                       # Match timezone name, e.g., UTC, America/New_York
                (?:[+-]\d{2}:\d{2})?              # Optional offset in format +HH:MM or -HH:MM
                |                                 # OR
                pytz\.FixedOffset\(\d+\)          # Match pytz.FixedOffset with integer offset in parentheses
            )                                     # End time_zone group
        )?                                        # End optional timezone group
    \]                                            # Closing bracket for datetime64
$z^
    timedelta64\[
        (?P<time_unit>s|ms|us|ns)                 # Match time unit: s, ms, us, or ns
    \]                                            # Closing bracket for timedelta64
$)yearquartermonthweekdayhourminutesecondmillisecondmicrosecond
nanosecondNativeIntervalUnitDmin)dmr4   r5   r6   r8   r9   r:   r;   r<   r=   r>   )
yqmorB   hrC   smsusnsz)Mapping[IntervalUnit, NativeIntervalUnit]
UNITS_DICTboolc                H    U [         R                  [         R                  1;   $ N)r   PANDASMODINimplementations    W/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/narwhals/_pandas_like/utils.pyis_pandas_or_modinrU      s    n33^5I5IJJJ    r%   c                   SSK Jn  U R                  R                  nU R                  (       aF  [        X5      (       a6  UR                  (       d%  U R                  R                  S   UR                  4$ [        X5      (       a  UR                  (       a%  U R                  UR                  R                  S   4$ UR                  R                  ULa*  U R                  [        UR                  X1R                  S94$ U R                  UR                  4$ [        U[        5      (       a  Sn[        U5      eU R                  U4$ )zValidate RHS of binary operation.

If the comparison isn't supported, return `NotImplemented` so that the
"right-hand-side" operation (e.g. `__radd__`) can be tried.
r   r$   rR   z$Expected Series or scalar, got list.)narwhals._pandas_like.seriesr%   nativeindex
_broadcast
isinstanceiloc	set_index_implementationlist	TypeError)lhsrhsr%   	lhs_indexmsgs        rT   align_and_extract_nativerf      s     >

  I
~~*S;;CNNzzq!3::--#((>>JJ

 233::9,

#**i@S@ST  

CJJ''#t4n ::s?rV   c                  [        XR                  5       R                  5      (       a/  [        U5      =n[        U 5      =n:w  a  SU SU 3n[	        U5      eU[
        R                  L a  U R                  SS9n Xl        U $ U[
        R                  L a/  SUR                  5       s=::  a  S:  a  O  OU R                  USSS9$ U R                  USS	9$ )
zuWrapper around pandas' set_axis to set object index.

We can set `copy` / `inplace` based on implementation/version.
zExpected object of length z, got length: F)deep         r   )axiscopy)rn   )r\   to_native_namespaceIndexlenr   r   CUDFro   rZ   rP   _backend_versionset_axis)objrZ   rS   expected_len
actual_lenre   s         rT   r^   r^      s     %;;=CCDDE
"C
 *J" +<.zlSo,,,hhEh"	
....113:d:||E|66<<A<&&rV   c                   U[         R                  L a,  UR                  5       S:  a  U R                  " U0 UDSSS.D6nOU R                  " U0 UD6n[	        SU5      $ )zXWrapper around pandas' rename so that we can set `copy` based on implementation/version.rl   F)ro   inplacer'   )r   rP   rt   renamer   )rv   rS   argskwargsresults        rT   r{   r{      s^     ...'')D0TGVG%GT,V, &))rV      )maxsizec                `    [        U [        R                  5      =(       d    [        U 5      S;   $ )zR*There is no problem which can't be solved by adding an extra string type* pandas.>   strstringstring[python]string[pyarrow_numpy]<StringDtype(na_value=nan)>)r\   pdStringDtyper   native_dtypes    rT   is_dtype_non_pyarrow_stringr      s.    
 lBNN3 s<7H M 8 rV   c                   [        U 5      nUR                  nUS;   a  UR                  5       $ US;   a  UR                  5       $ US;   a  UR	                  5       $ US;   a  UR                  5       $ US;   a  UR                  5       $ US;   a  UR                  5       $ US;   a  UR                  5       $ US;   a  UR                  5       $ US	;   a  UR                  5       $ US
;   a  UR                  5       $ US:X  a  UR                  5       $ [        U 5      (       a  UR                  5       $ US;   a  UR                  5       $ [         R#                  U5      =n(       a3  UR%                  S5      nUR%                  S5      nUR'                  XV5      $ [(        R#                  U5      =n(       a"  UR%                  S5      nUR+                  U5      $ UR-                  5       $ )N>   Int64int64>   Int32int32>   Int16int16>   Int8int8>   UInt64uint64>   UInt32uint32>   UInt16uint16>   UInt8uint8>   Float64float64>   Float32float32float16>   rM   boolean	time_unit	time_zone)r   dtypesr   r   r   r   r   r   r   r   r   r   Float16r   StringBooleanPATTERN_PD_DATETIMEmatchgroupDatetimePATTERN_PD_DURATIONDurationUnknown)r   versiondtyper   match_dt_time_unitdt_time_zonedu_time_units           rT   #non_object_native_to_narwhals_dtyper      s   E^^F""||~""||~""||~  {{}$$}}$$}}$$}}""||~&&~~&&~~	~~"<00}}##~~$**511v1!'k!:#)<<#<|::$**511v1!'k!:|,,>>rV   c                   UR                   nU[        R                  L a  UR                  5       $ [        R
                  R                  R                  nU c  SOU" U R                  S5      SS9nUS:X  a  UR                  5       $ US:X  a#  U[        R                  La  UR                  5       $ US:X  a  UR                  5       $ UR                  5       $ )Nemptyd   T)skipnar   )r   r   rs   r   r   apitypesinfer_dtypeheadr   V1Object)seriesr   rS   r   inferinferred_dtypes         rT   object_native_to_narwhals_dtyper      s     ^^F,,, }}FFLL$$E &WE&++c:JSW4XN!}} WGJJ%>}} }}==?rV   c                >   UR                   nU[        R                  L a  UR                  5       $ U R                  (       aN  U[
        R                  L a  [        U 5      OU R                  R                  nUR                  [        U5      5      $ UR                  5       $ rO   )r   r   r   Categoricalorderedr   rs   _cudf_categorical_to_list
categoriesto_listEnumr   )r   r   rS   r   	into_iters        rT   $native_categorical_to_narwhals_dtyper     s     ^^F'**!!## !4!44 &l3((00 	
 {{,Y788rV   c                   ^  SU 4S jjnU$ )Nc                 T   > T R                   R                  5       R                  5       $ rO   )r   to_arrow	to_pylistr   s   rT   fn%_cudf_categorical_to_list.<locals>.fn-  s!    &&//1;;==rV   )returnz	list[Any] )r   r   s   ` rT   r   r   '  s    > IrV   )r`   structdecimalF)allow_objectc                  [        U 5      n[        U 5      (       d  UR                  [        5      (       a<  SSKJn  [        U S5      (       a  U R                  5       nOU R                  nU" Xa5      $ US:X  a  [        XU5      $ US:w  a  [        X5      $ U[        R                  L a  UR                  R                  5       $ U(       a  [        S X5      $ Sn[!        U5      e)Nr   )native_to_narwhals_dtyper   categoryobjectz;Unreachable code, object dtype should be handled separately)r   is_dtype_pyarrow
startswithCUDF_BASE_DTYPE_PREFIXnarwhals._arrow.utilsr   hasattrr   pyarrow_dtyper   r   r   DASKr   r   r   AssertionError)r   r   rS   r   	str_dtypearrow_native_to_narwhals_dtypepa_dtypere   s           rT   r   r   6  s     L!I%%)=)=>T)U)U	
 <,,$0$9$9$;H#11H-h@@J3L>ZZH2<II,,, ~~$$&&.tWMME  
rV   c                    [        5       n[        U [        R                  R                  R
                  5      =(       a    [        U SU5      SL $ )z/Return `True` if `dtype` is `"numpy_nullable"`.baseN)r   r\   r   r   
extensionsExtensionDtypegetattr)r   sentinels     rT   is_dtype_numpy_nullabler   Y  s@     xH5"&&++::; 	5E68,4rV   c                t    U[         R                  L a  g[        U 5      (       a  g[        U 5      (       a  S$ S$ )zbGet dtype backend for pandas type.

Matches pandas' `dtype_backend` argument in `convert_dtypes`.
Npyarrownumpy_nullable)r   rs   r   r   )r   rS   s     rT   get_dtype_backendr   d  s9    
 ,,,6u==G4GrV   c                   ^ U4S jU  5       $ )zaYield a `DTypeBackend` per-dtype.

Matches pandas' `dtype_backend` argument in `convert_dtypes`.
c              3  <   >#    U  H  n[        UT5      v   M     g 7frO   )r   ).0r   rS   s     rT   	<genexpr>&iter_dtype_backends.<locals>.<genexpr>x  s     I&e^44&s   r   )r   rS   s    `rT   iter_dtype_backendsr   q  s     J&IIrV   c                d    [        [        S5      =(       a    [        U [        R                  5      $ )N
ArrowDtype)r   r   r\   r   r   s    rT   r   r   {  s    2|$IE2==)IIrV   r   r   zMapping[type[DType], str]NW_TO_PD_DTYPES_INVARIANTzFloat64[pyarrow]r   r   )r   r   NzFloat32[pyarrow]r   r   zFloat16[pyarrow]r   Int64[pyarrow]r   r   zInt32[pyarrow]r   r   zInt16[pyarrow]r   r   zInt8[pyarrow]r   r   zUInt64[pyarrow]r   r   zUInt32[pyarrow]r   r   zUInt16[pyarrow]r   r   zUInt8[pyarrow]r   r   zboolean[pyarrow]r   z<Mapping[type[DType], Mapping[DTypeBackend, str | type[Any]]]NW_TO_PD_DTYPES_BACKENDc           	        US;  a  SU S3n[        U5      eUR                  nU R                  5       n[        R	                  U5      =n(       a  U$ [
        R	                  U5      =n(       a  X   $ [        XeR                  5      (       a<  US:X  a)  SS Kn	[        R                  " U	R                  " 5       5      $ US:X  a  g[        $ [        XR                  5      (       a  [        U5      (       a  [         S:  aw  [#        XR                  5      (       aZ  U R$                  S	:w  aJ  [&        R(                  " [         5      n
S
U
< S3nSnSU R$                  < SU SU S3n[+        U[,        5        S	nOU R$                  nUS:X  a"  U R.                  =n(       a  SU 3OSnSU U S3$ U R.                  =n(       a  SU 3OSnSU U S3$ [        XR0                  5      (       a;  [        U5      (       a  [         S:  a  S	nOU R$                  nUS:X  a  SU S3$ SU S3$ [        XR2                  5      (       a   SS Kn	g[        XR6                  5      (       aq  U[8        R:                  L a  Sn[=        U5      e[#        XR6                  5      (       a*  UR?                  5       nURA                  U RB                  SS9$ Sn[        U5      e[        UURD                  URF                  URH                  URJ                  URL                  URN                  45      (       a  [Q        XU5      $ S U  3n[S        U5      e! [4         a  nSn[5        U5      UeS nAff = f)!N>   Nr   r   z;Expected one of {None, 'pyarrow', 'numpy_nullable'}, got: ''r   r   r   r   )   rK   z*available in 'pandas>=2.0', found version .zhttps://pandas.pydata.org/docs/dev/whatsnew/v2.0.0.html#construction-with-datetime64-or-timedelta64-dtype-with-unsupported-resolutionz`nw.Datetime(time_unit=z)` is only z
Narwhals has fallen back to using `time_unit='ns'` to avoid an error.

Hint: to avoid this warning, consider either:
- Upgrading pandas: zA
- Using a bare `nw.Datetime`, if this precision is not importantz, tz= z
timestamp[z
][pyarrow]z, zdatetime64[]z	duration[ztimedelta64[z/'pyarrow>=13.0.0' is required for `Date` dtype.zdate32[pyarrow]z9Converting to Enum is not supported in narwhals.stable.v1T)r   z9Can not cast / initialize Enum without categories presentzUnknown dtype: )*
ValueErrorr   	base_typer   getr   
issubclassr   r   r   r   r   r   r   r   rU   PANDAS_VERSIONr\   r   r   _unparse_versionr   UserWarningr   r   DateModuleNotFoundErrorr   r   r   NotImplementedErrorrp   CategoricalDtyper   StructArrayListTimeBinaryDecimalnarwhals_to_native_arrow_dtyper   )r   dtype_backendrS   r   re   r   r  pd_typeinto_pd_typepafound	availablechangelog_urlr   tztz_partr   excrK   s                      rT   narwhals_to_native_dtyper!    sP    ??Mm_\]^o^^F!I+//	::w:.229==|=**)]]++I%  ==--,,
77n--. D
 3
 %11eoo6M 11.AH	QRS	 !h-eoo-@I; W+ ,9/ :WX  c;/L ??LI%-2__'<r'<bTl2G~gYjAA&+oo 5 5Brd)B\N7)15577n--. D
 3
  L ??L 	) ~Z0	
  ~Q/	

  {{33	4 
 !{{33gjj MC%c**e[[))335B&&u'7'7&FFIoMMLLKKKKMMNN	

 
 .eWMME7
#C

7 # 	4CC%c*3	4s   9L8 8
MMMc                   [        U5      (       a1  [        S:  a'   SS KnSSKJn  [        R                  " U" X5      5      $ SU  SU SU S	3n[        U5      e! [         a#  nSU  SUR                   3n[        U5      UeS nAff = f)
N)r  r  r   zUnable to convert to z! due to the following exception: )r!  zConverting to z+ dtype is not supported for implementation z and version r  )
rU   r	  r   ImportErrorre   r   r!  r   r   r  )r   rS   r   r  r   re   _to_arrow_dtypes          rT   r  r    s     .))n.F	,  	V}}_U<==
J
-y	3  c
""  	,'w.OPSPWPWyY  c"+		,s   A 
B#BBc                r    S[        U 5      ;   a  g[        U 5      R                  5       [        U 5      :w  a  gg)Nr   r   r   r   )r   lowerr   s    rT   int_dtype_mapperr'  3  s0    CJ
5zSZ'rV   i  i@B )	)rK   rJ   )rK   rI   )rJ   rK   )rJ   rI   )rI   rK   )rI   rJ   )rH   rK   )rH   rJ   )rH   rI   zGMapping[tuple[UnitCurrent, UnitTarget], tuple[BinOpBroadcast, IntoRhs]]_TIMESTAMP_DATETIME_OP_FACTORc                    X:X  a  U $ [         R                  X45      =n(       a  Uu  pEU" X5      $ SU S3n[        U5      e)Nzunexpected time unit zD, please report an issue at https://github.com/narwhals-dev/narwhals)r(  r  r   )rH   currentr   itemr   factorre   s          rT   calculate_timestamp_datetimer-  J  s\     ,00'1EFFtF
!}
y )3 	3  
rV   rj   )rK   rJ   rI   rH   zMapping[TimeUnit, int]_TIMESTAMP_DATE_FACTORc                (    U [         -  [        U   -  $ rO   )r   r.  )rH   r   s     rT   calculate_timestamp_dater0  a  s    !7	!BBBrV   c           	     &   [        U5      U R                  S   :X  a,  [        S [        U R                  USS9 5       5      (       a  U $ U R                  R
                  R                  S:X  d'  U[        R                  L aQ  UR                  5       S:  a=  [        XR                  R                  5       S9=n(       a  UeU R                  SS2U4   $  X   $ ! [         a0  n[        XR                  R                  5       S9=n(       a  X4ee SnAff = f)	zgSelect columns by name.

Prefer this over `df.loc[:, column_names]` as it's
generally more performant.
rj   c              3  .   #    U  H  u  pX:H  v   M     g 7frO   r   )r   xrD   s      rT   r   )select_columns_by_name.<locals>.<genexpr>o  s      0E41Es   T)strictbri   )r  N)rr   shapeallzipcolumnsr   kindr   rP   rt   r   tolistlocKeyError)dfcolumn_namesrS   errores        rT   select_columns_by_namerC  e  s     <BHHQK'C 0rzz<E0 - - 	


$.///++-6 (

@Q@Q@STT5TKvvao&& '

@Q@Q@STT5Ts   C 
D +DDc                    U R                   [        R                  [        R                  [        R                  1;   =(       a    U R
                  R                  S:H  $ )NrM   )r_   r   rP   rQ   r   rY   r   )rH   s    rT   is_non_nullable_booleanrE    sI     	
!!>#7#79L9LM	N 	%HHNNf$rV   c                   U [         R                  [         R                  1;   a  SSKnU$ U [         R                  L a  SSKnU$ SU  3n[        U5      e)zCReturns numpy or cupy module depending on the given implementation.r   Nz!Expected pandas/modin/cudf, got: )r   rP   rQ   numpyrs   cupyr   )rS   npcpre   s       rT   import_array_modulerK    sQ    .//1E1EFF	,,,	-n-=
>C

rV   c                      \ rS rSrSrg)PandasLikeSeriesNamespacei  r   N)__name__
__module____qualname____firstlineno____static_attributes__r   rV   rT   rM  rM    s    PSrV   rM  c                    SSU SS.$ )NFT)sortas_indexdropnaobservedr   )drop_null_keyss    rT   make_group_by_kwargsrY    s    t~SWXXrV   c                   U R                   S   nU(       aF  SSKJn  [        R                  " U" U[        U5      5      U R                  S9nU" XaU R                  S9$ U" XAU R                  U R                  S9$ )a8  Broadcast a scalar value from a (one element) Series to match a target index.

For nested (arrow-backed) types, we rely on
[`pandas.array`](https://pandas.pydata.org/docs/reference/api/pandas.array.html).

Arguments:
    native: The native pandas-like Series containing the scalar value to broadcast.
    index: The target index to broadcast to.
    is_nested: Whether the Series has a nested (arrow-backed) dtype.
    series_class: Series class to use for constructing the result.

Returns:
    A new Series with the scalar value broadcast to match the target index.
r   )repeatr   )rZ   name)rZ   r   r\  )r]   r   r[  r   arrayrr   r   r\  )rY   rZ   	is_nestedseries_classvaluer[  pa_arrays          rT   broadcast_series_to_indexrb    s`    * KKNE0 88F5#e*5V\\JHDD&,,V[[QQrV   c                x   U R                   n[        U5      nUS:X  a:  [        U[        5      (       a%  SS KnXR                  " XR
                  " 5       S9-   $ [        XR                  5      (       GaE  UR                   nUS:X  a  U R                  U5      U-   $ [        U R                  S5      (       a  [        UR                  S5      (       a  SS KnU R                  R                  5       R                  nUR                  R                  5       R                  nUR                  R                  U5      (       ah  UR                  R                  U5      (       aH  [        R                   " UR
                  " 5       5      n	U R                  U	5      UR                  U	5      -   $ O XR                  U5      -   $ X-   $ )Nzlarge_string[pyarrow]r   )typer   __arrow_array__)r   r   r\   r   scalarlarge_stringSeriesastyper   valuesre  rd  r   	is_stringis_large_stringr   r   )
leftrightpdx
left_dtypeleft_dtype_strr  right_dtype
left_arrowright_arrowpd_pa_large_strings
             rT   binary_string_sum_fallbackrv    sT    J_N00Zs5K5KiiOO,=>>>%$$kkX%;;{+e334;; 122wLL+8
 8
 !446;;J,,668==Kxx!!*--"((2J2J;2W2W%']]2??3D%E"{{#56FX9YYYll:...<rV   )rS   r   r   rM   )rb   r%   rc   zPandasLikeSeries | objectr   z.tuple[pd.Series[Any], pd.Series[Any] | object])rv   r'   rZ   r   rS   r   r   r'   )
rv   r'   r|   r   rS   r   r}   r   r   r'   )r   r   r   rM   )r   r   r   r   r   r)   )r   zPandasLikeSeries | Noner   r   rS   r   r   r)   )r   zpd.CategoricalDtyper   r   rS   r   r   r)   )r   r   r   zCallable[[], list[Any]])
r   r   r   r   rS   r   r   rM   r   r)   )r   r   r   zTypeIs[BaseMaskedDtype])r   r   rS   r   r   r*   )r   zIterable[Any]rS   r   r   zIterator[DTypeBackend])r   r   r   zTypeIs[pd.ArrowDtype])
r   r+   r  r*   rS   r   r   r   r   zstr | PandasDtype)r   r+   rS   r   r   r   r   zpd.ArrowDtype)r   r   r   r   )rH   r(   r*  r,   r   r,   r   r(   )rH   r(   r   r,   r   r(   )r?  r&   r@  zlist[str] | _1DArrayrS   r   r   zNativeDataFrameT | Any)rH   r%   r   rM   )rS   r   r   r   )rX  rM   r   zdict[str, bool])
rY   pd.Series[Any]rZ   r   r^  rM   r_  ztype[pd.Series[Any]]r   rw  )rm  	pd.Seriesrn  r   ro  r   r   rx  )
__future__r   	functoolsoperatorretypingr   r   r   r   r   rG  rI  pandasr   narwhals._compliantr	   narwhals._constantsr
   r   r   r   r   r   narwhals._exceptionsr   narwhals._utilsr   r   r   r   r   r   r   narwhals.exceptionsr   collections.abcr   r   r   r   r   r   r   r   r  pandas._typingr   PandasDtypepandas.core.dtypes.dtypesr    typing_extensionsr!   narwhals._durationr"   narwhals._pandas_like.exprr#   rX   r%   narwhals._pandas_like.typingr&   r'   r(   narwhals.dtypesr)   narwhals.typingr*   r+   r,   r-   r.   r0   __annotations__r1   intr2   r3   rP   rs   rQ   PANDAS_LIKE_IMPLEMENTATIONPD_DATETIME_RGXcompileVERBOSEr   PD_DURATION_RGXr   r?   
ALIAS_DICTrL   rt   r	  NUMPY_VERSIONrU   rf   r^   r{   	lru_cacher   r   r   r   r   r   r   r   r   r   r   MAINr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r!  r  r'  floordivmulr(  r-  r.  r0  rC  rE  rK  rM  rY  rb  rv  r   rV   rT   <module>r     sg   "   	 = =   4  /   +EE  39(/9= 
 &KKG>2E%K%$J	$ (#sS 9NI9GY  
 jj"**= 
 jj"**=  '
! I  U#
		
				


9
5   &&779
 b!K	 93B'	' #'8F''.
*	
* #
*5C
*OR
*
* R 
 !
 R % !%P#.5GU
. % 07 IW 
  			 7      # 
    F	HJJ+9JJ R J !J 
		
 

MM88 4  NN%#
 NN%#
 NN &# LL.'QXY
LL.'QXY
LL.'QXY
KK_fU
MM$"
 MM$"
 MM$"
 LL.'QXY
NN%#M+Y U +\eee #e 	e
 eP##&4#?F##* $$e,$$i0<<!34$$e,<<!34<<',,.,,.,,.
    '4<  

	
	2 . C& # 	> T 45G5L M SYRRR 	R
 'R RD 
  &)  rV   