§
    cŠtj² ã                  óx  — U d dl mZ d dlZd dlZd dlZd dlmZmZmZm	Z	m
Z
mZmZ d dlmZ d dlmZmZ d dlmZmZmZ d dlmZ d dlmZmZ d d	lmZ d d
l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/m0Z0m1Z1 d dl2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZE d dlFmGZGmHZHmIZImJZJ e"�r†d dlmKZK d dlLmMZM d dl!mNZNmOZO d dlPZQd dlRZSd dlTZUd dlVmWZWmXZXmYZYmZZZ d dl[m\Z\m]Z]m^Z^ d dl_m`Z` d dlambZbmcZcmdZdmeZe d dlfmgZg d dlhmiZimjZjmkZkmlZlmmZmmnZnmoZompZpmqZqmrZrmsZsmtZt d dlumvZvmwZwmxZx d dlymzZzm{Z{m|Z|m}Z}m~Z~mZm€Z€m�Z�m‚Z‚mƒZƒm„Z„m…Z…m†Z†m‡Z‡mˆZˆm‰Z‰mŠZŠ d dl‹mŒZŒm�Z� d dlŽ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›mœZœm�Z�mžZžmŸZŸm Z m¡Z¡m¢Z¢m£Z£m¤Z¤ e¥Z¦d!e§d"<    e(d#e�e#         eŒe#         z  e‘e#         z  ¬$¦  «        Z¨ e(d%¦  «        Z© e(d&¦  «        Zª e(d'¦  «        Z« e(d(d)¬$¦  «        Z¬ eXd*¦  «        Z­ e(d+¦  «        Z® e(d,¦  «        Z¯ e(d-¦  «        Z° G d.„ d/e'¦  «        Z± G d0„ d1e'¦  «        Z² G d2„ d3e'¦  «        Z³ e(d4¦  «        Z´ e(d5d6¬7¦  «        Zµ e(d8d6¬7¦  «        Z¶d9Z·d!e§d:<    e(d;e·¬$¦  «        Z¸d<Z¹d!e§d=<   d>Zºd!e§d?<    G d@„ dAe'eµ         ¦  «        Z» G dB„ dCe'e¶         ¦  «        Z¼ G dD„ dEe'¦  «        Z½ G dF„ dGe'¦  «        Z¾ G dH„ dIe'¦  «        Z¿ G dJ„ dKe¿e¾e'¦  «        ZÀ G dL„ dMe¿e½e'¦  «        ZÁ G dN„ dOe¿e'¦  «        ZÂ G dP„ dQe¦  «        ZÃ G dR„ dSe,¦  «        ZÄ�dydW„ZÅeÄjÆ        dXeÄjÇ        dYeÄjÈ        dZeÄjÉ        d[eÄjÊ        d\eÄjË        d\eÄjÌ        d]eÄjÍ        d^eÄjÎ        d_eÄjÏ        d`eÄjÐ        daiZÑdbe§dc<   eÄjÍ        ddeÄjÇ        deeÄjÊ        dfeÄjË        dgiZÒdhe§di<   	  edj¬k¦  «        �dzdo„¦   «         ZÓe�d{dq„¦   «         ZÔ�d|du„ZÕ�d}dw„ZÖ�d~dy„Z×�dd}„ZØ�d€d€„ZÙe*�d�d†„¦   «         ZÚe*�d‚d‰„¦   «         ZÚe*�dƒdŒ„¦   «         ZÚe*�d„dŽ„¦   «         ZÚe*�d…d‘„¦   «         ZÚe*�d†d“„¦   «         ZÚe*�d‡d–„¦   «         ZÚ�dˆd—„ZÚ�d‰d›„ZÛ�dŠdŸ„ZÜ�d‹d£„ZÝ	 �dŒdd¤œ�d�d©„ZÞ�dŽdª„Zß�d�d­„Zà�d�d°„Zá�d‘d³„Zâ�d’d¹„Zã�d“d¼„Zä	 �d”�d•dÂ„Zå	 �d”�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ídîœ�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  �e¦   «         �Z�de§�d<   �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¶�d0„�Z�d·�d2„�Z�d¸�d4„�Z�d¹�d6„�Z�dº�d;„�Z�d»�d@„�Z�d¼�dB„�Z�d½�dD„�Z G �dE„ �dF¦  «        �Z�d¾�dJ„�Z G �dK„ �dL¦  «        �Z�d¿�dP„�Z�dÀ�dT„�Z�dÁ�dV„�Zdì�dWœ�dÂ�d[„�Z G �d\„ �d]e%e´         ¦  «        �Z e�d^¬k¦  «        �dÃ�da„¦   «         �Z�dÄ�dc„�Z G �dd„ �dee»eµ         e¿e'eµ         ¦  «        �Z G �df„ �dge'eµ         ¦  «        �Z G �dh„ �di¦  «        �Z�dÅ�dl„�Z e�j!        �dmk    r�dÆ�dp„�Z"n�dÆ�dq„�Z"�dÇ�dv„�Z# G �dw„ �dxe¦  «        �Z$�e$�j%        �Z&�e&�Z% �e'd¦  «        �Z(dS (È  é    )ÚannotationsN)ÚCallableÚ
CollectionÚ	ContainerÚIterableÚIteratorÚMappingÚSequence)Útimezone)ÚEnumÚauto)ÚcacheÚ	lru_cacheÚwraps)Ú	find_spec)Úgetattr_staticÚgetdoc)Ú
attrgetter)ÚPath)Ú	token_hex)	ÚTYPE_CHECKINGÚAnyÚFinalÚGenericÚLiteralÚProtocolÚTypeVarÚcastÚoverload)Ú
NoAutoEnum)Úissue_deprecation_warning)Úassert_neverÚ
deprecated)Úget_cudfÚget_dask_dataframeÚ
get_duckdbÚget_ibisÚ	get_modinÚ
get_pandasÚ
get_polarsÚget_pyarrowÚget_pyspark_connectÚget_pyspark_sqlÚget_sqlframeÚis_narwhals_seriesÚis_narwhals_series_boolÚis_narwhals_series_intÚis_numpy_array_1dÚis_numpy_array_1d_boolÚis_numpy_array_1d_intÚis_pandas_like_dataframeÚis_pandas_like_series)ÚColumnNotFoundErrorÚDuplicateErrorÚInvalidOperationErrorÚ
ShapeError)ÚSet)Ú
ModuleType)ÚConcatenateÚ	TypeAlias)ÚLiteralStringÚ	ParamSpecÚSelfÚTypeIs)ÚCompliantExprTÚCompliantSeriesTÚNativeSeriesT_co)ÚNamespaceAccessor)ÚAccessorÚ	EvalNamesÚNativeDataFrameTÚNativeLazyFrameT©Ú	Namespace)ÚNativeArrowÚ
NativeCuDFÚ
NativeDaskÚNativeDuckDBÚ
NativeIbisÚNativeModinÚNativePandasÚNativePandasLikeÚNativePolarsÚNativePySparkÚNativePySparkConnectÚNativeSQLFrame)ÚArrowStreamExportableÚIntoArrowTableÚToNarwhalsT_co)ÚBackendÚIntoBackendÚ
_ArrowImplÚ	_CuDFImplÚ	_DaskImplÚ_DuckDBImplÚ_EagerAllowedImplÚ	_IbisImplÚ_LazyAllowedImplÚ_LazyFrameCollectImplÚ
_ModinImplÚ_PandasImplÚ_PandasLikeImplÚ_PolarsImplÚ_PySparkConnectImplÚ_PySparkImplÚ_SQLFrameImpl©Ú	DataFrameÚ	LazyFrame©ÚDType©ÚSeries)ÚCompliantDataFrameÚCompliantLazyFrameÚCompliantSeriesÚDTypesÚ
FileSourceÚIntoSeriesTÚMultiIndexSelectorÚNestedLiteralÚSingleIndexSelectorÚSizedMultiBoolSelectorÚSizedMultiIndexSelectorÚSizeUnitÚSupportsNativeNamespaceÚTimeUnitÚ_1DArrayÚ_SliceIndexÚ
_SliceNameÚ
_SliceNoner>   ÚUnknownBackendNameÚFrameOrSeriesT)ÚboundÚ_T1Ú_T2Ú_T3Ú_FnzCallable[..., Any]ÚPÚRÚR1ÚR2c                  ó   — e Zd ZU ded<   dS )Ú_SupportsVersionÚstrÚ__version__N©Ú__name__Ú
__module__Ú__qualname__Ú__annotations__© ó    úM/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/narwhals/_utils.pyr’   r’   ž   s   € € € € € € ØÐÐÑÐÐr›   r’   c                  ó   — e Zd Zdd	d„ZdS )
Ú_SupportsGetNÚinstancer   Úownerú
Any | NoneÚreturnc               ó   — d S ©Nrš   ©ÚselfrŸ   r    s      rœ   Ú__get__z_SupportsGet.__get__¢   s   € € € r›   r¤   )rŸ   r   r    r¡   r¢   r   )r–   r—   r˜   r§   rš   r›   rœ   rž   rž   ¡   s   € € € € € ØQÐQÐQÐQÐQÐQÐQr›   rž   c                  ó&   — e Zd Zedd„¦   «         ZdS )Ú_StoresColumnsr¢   úSequence[str]c                ó   — d S r¤   rš   ©r¦   s    rœ   Úcolumnsz_StoresColumns.columns¥   s   € Ø,/¨Cr›   N)r¢   rª   )r–   r—   r˜   Úpropertyr­   rš   r›   rœ   r©   r©   ¤   s&   € € € € € Ø	Ø/Ð/Ð/ñ 
ŒØ/Ð/Ð/r›   r©   Ú_TÚ
NativeT_coT)Ú	covariantÚCompliantT_coz._FullContext | NamespaceAccessor[_FullContext]Ú_IntoContextÚ_IntoContextTz*Callable[Concatenate[_IntoContextT, P], R]Ú_Methodz Callable[Concatenate[_T, P], R2]Ú_Constructorc                  ó*   — e Zd ZdZedd„¦   «         ZdS )Ú_StoresNativez’Provides access to a native object.

    Native objects have types like:

    >>> from pandas import Series
    >>> from pyarrow import Table
    r¢   r°   c                ó   — dS )zReturn the native object.Nrš   r¬   s    rœ   Únativez_StoresNative.native»   ó	   € ð 	ˆr›   N)r¢   r°   )r–   r—   r˜   Ú__doc__r®   rº   rš   r›   rœ   r¸   r¸   ²   ó>   € € € € € ðð ð ðð ð ñ „Xðð ð r›   r¸   c                  ó*   — e Zd ZdZedd„¦   «         ZdS )Ú_StoresCompliantzÓProvides access to a compliant object.

    Compliant objects have types like:

    >>> from narwhals._pandas_like.series import PandasLikeSeries
    >>> from narwhals._arrow.dataframe import ArrowDataFrame
    r¢   r²   c                ó   — dS )zReturn the compliant object.Nrš   r¬   s    rœ   Ú	compliantz_StoresCompliant.compliantÊ   r»   r›   N)r¢   r²   )r–   r—   r˜   r¼   r®   rÁ   rš   r›   rœ   r¿   r¿   Á   r½   r›   r¿   c                  ó&   — e Zd Zedd„¦   «         ZdS )Ú_StoresBackendVersionr¢   útuple[int, ...]c                ó   — dS )z#Version tuple for a native package.Nrš   r¬   s    rœ   Ú_backend_versionz&_StoresBackendVersion._backend_versionÑ   r»   r›   N©r¢   rÄ   )r–   r—   r˜   r®   rÆ   rš   r›   rœ   rÃ   rÃ   Ð   s2   € € € € € Øðð ð ñ „Xðð ð r›   rÃ   c                  ó   — e Zd ZU ded<   dS )Ú_StoresVersionÚVersionÚ_versionNr•   rš   r›   rœ   rÉ   rÉ   ×   s   € € € € € € ØÐÐÑØ,Ð,r›   rÉ   c                  ó   — e Zd ZU ded<   dS )Ú_StoresImplementationÚImplementationÚ_implementationNr•   rš   r›   rœ   rÍ   rÍ   Ü   s   € € € € € € Ø#Ð#Ð#Ñ#ØIÐIr›   rÍ   c                  ó   — e Zd ZdZdS )Ú_LimitedContextzEProvides 2 attributes.

    - `_implementation`
    - `_version`
    N©r–   r—   r˜   r¼   rš   r›   rœ   rÑ   rÑ   á   ó   € € € € € ðð ð ð r›   rÑ   c                  ó   — e Zd ZdZdS )Ú_FullContextzMProvides 2 attributes.

    - `_implementation`
    - `_backend_version`
    NrÒ   rš   r›   rœ   rÕ   rÕ   é   rÓ   r›   rÕ   c                  ó   — e Zd ZdZdd„ZdS )ÚValidateBackendVersionz=Ensure the target `Implementation` is on a supported version.r¢   ÚNonec                ó8   — | j                              ¦   «         }dS )z½Raise if installed version below `nw._utils.MIN_VERSIONS`.

        **Only use this when moving between backends.**
        Otherwise, the validation will have taken place already.
        N)rÏ   rÆ   )r¦   Ú_s     rœ   Ú_validate_backend_versionz0ValidateBackendVersion._validate_backend_versionô   s   € ð Ô ×1Ò1Ñ3Ô3ˆˆˆr›   N)r¢   rØ   )r–   r—   r˜   r¼   rÛ   rš   r›   rœ   r×   r×   ñ   s.   € € € € € ØGÐGð4ð 4ð 4ð 4ð 4ð 4r›   r×   c                  óÂ   — e Zd Z e¦   «         Z e¦   «         Z e¦   «         Zedd„¦   «         Zedd„¦   «         Z	edd„¦   «         Z
edd	„¦   «         Zedd„¦   «         ZdS )rÊ   r¢   útype[Namespace[Any]]c                ój   — | t           j        u rddlm} |S | t           j        u rddlm} |S ddlm} |S )Nr   rK   )rÊ   ÚV1Únarwhals.stable.v1._namespacerL   ÚV2Únarwhals.stable.v2._namespaceÚnarwhals._namespace)r¦   ÚNamespaceV1ÚNamespaceV2rL   s       rœ   Ú	namespacezVersion.namespace  sd   € à•7”:ÐÐØNÐNÐNÐNÐNÐNàÐØ•7”:ÐÐØNÐNÐNÐNÐNÐNàÐØ1Ð1Ð1Ð1Ð1Ð1àÐr›   rw   c                ój   — | t           j        u rddlm} |S | t           j        u rddlm} |S ddlm} |S )Nr   )Údtypes)rÊ   rß   Únarwhals.stable.v1rè   rá   Únarwhals.stable.v2Únarwhals)r¦   Ú	dtypes_v1Ú	dtypes_v2rè   s       rœ   rè   zVersion.dtypes  sc   € à•7”:ÐÐØ>Ð>Ð>Ð>Ð>Ð>àÐØ•7”:ÐÐØ>Ð>Ð>Ð>Ð>Ð>àÐØ#Ð#Ð#Ð#Ð#Ð#àˆr›   útype[DataFrame[Any]]c                ój   — | t           j        u rddlm} |S | t           j        u rddlm} |S ddlm} |S )Nr   )rn   )rÊ   rß   ré   rn   rá   rê   Únarwhals.dataframe)r¦   ÚDataFrameV1ÚDataFrameV2rn   s       rœ   Ú	dataframezVersion.dataframe  ód   € à•7”:ÐÐØCÐCÐCÐCÐCÐCàÐØ•7”:ÐÐØCÐCÐCÐCÐCÐCàÐØ0Ð0Ð0Ð0Ð0Ð0àÐr›   útype[LazyFrame[Any]]c                ój   — | t           j        u rddlm} |S | t           j        u rddlm} |S ddlm} |S )Nr   )ro   )rÊ   rß   ré   ro   rá   rê   rð   )r¦   ÚLazyFrameV1ÚLazyFrameV2ro   s       rœ   Ú	lazyframezVersion.lazyframe,  rô   r›   útype[Series[Any]]c                ój   — | t           j        u rddlm} |S | t           j        u rddlm} |S ddlm} |S )Nr   rr   )rÊ   rß   ré   rs   rá   rê   Únarwhals.series)r¦   ÚSeriesV1ÚSeriesV2rs   s       rœ   ÚserieszVersion.series:  sa   € à•7”:ÐÐØ=Ð=Ð=Ð=Ð=Ð=àˆOØ•7”:ÐÐØ=Ð=Ð=Ð=Ð=Ð=àˆOØ*Ð*Ð*Ð*Ð*Ð*àˆr›   N)r¢   rÝ   )r¢   rw   )r¢   rî   )r¢   rõ   )r¢   rú   )r–   r—   r˜   r   rß   rá   ÚMAINr®   ræ   rè   ró   rù   rÿ   rš   r›   rœ   rÊ   rÊ   ý   sÓ   € € € € € Ø	ˆ‰Œ€BØ	ˆ‰Œ€BØˆ4‰6Œ6€Dàðð ð ñ „Xðð ðð ð ñ „Xðð ðð ð ñ „Xðð ðð ð ñ „Xðð ðð ð ñ „Xðð ð r›   rÊ   c                  ó"  — e Zd ZdZdZ	 dZ	 dZ	 dZ	 dZ	 dZ		 dZ
	 d	Z	 d
Z	 dZ	 dZ	 dZ	 d-d„Zed.d„¦   «         Zed/d„¦   «         Zed0d„¦   «         Zd1d„Zd2d„Zd2d„Zd2d„Zd2d „Zd2d!„Zd2d"„Zd2d#„Zd2d$„Zd2d%„Zd2d&„Zd2d'„Z d2d(„Z!d2d)„Z"d3d+„Z#d,S )4rÎ   z?Implementation of native object (pandas, Polars, PyArrow, ...).ÚpandasÚmodinÚcudfÚpyarrowÚpysparkÚpolarsÚdaskÚduckdbÚibisÚsqlframezpyspark[connect]Úunknownr¢   r“   c                ó*   — t          | j        ¦  «        S r¤   )r“   Úvaluer¬   s    rœ   Ú__str__zImplementation.__str__e  s   € Ý�4”:‰ŒÐr›   Úclsú
type[Self]Únative_namespacer<   c                óV  — t          ¦   «         t          j        t          ¦   «         t          j        t          ¦   «         t          j        t          ¦   «         t          j        t          ¦   «         t          j
        t          ¦   «         t          j        t          ¦   «         t          j        t          ¦   «         t          j        t#          ¦   «         t          j        t'          ¦   «         t          j        t+          ¦   «         t          j        i}|                     |t          j        ¦  «        S )zŽInstantiate Implementation object from a native namespace module.

        Arguments:
            native_namespace: Native namespace.
        )r)   rÎ   ÚPANDASr(   ÚMODINr$   ÚCUDFr+   ÚPYARROWr-   ÚPYSPARKr*   ÚPOLARSr%   ÚDASKr&   ÚDUCKDBr'   ÚIBISr.   ÚSQLFRAMEr,   ÚPYSPARK_CONNECTÚgetÚUNKNOWN)r  r  Úmappings      rœ   Úfrom_native_namespacez$Implementation.from_native_namespaceh  s¯   € õ ‰LŒL�.Ô/Ý‰KŒK�Ô-Ý‰JŒJ�Ô+Ý‰MŒM�>Ô1ÝÑÔ�~Ô5Ý‰LŒL�.Ô/ÝÑ Ô ¥.Ô"5Ý‰LŒL�.Ô/Ý‰JŒJ�Ô+Ý‰NŒN�NÔ3ÝÑ!Ô!¥>Ô#Að
ˆð �{Š{Ð+­^Ô-CÑDÔDÐDr›   Úbackend_namec                óR   — 	  | |¦  «        S # t           $ r t          j        cY S w xY w)zžInstantiate Implementation object from a native namespace module.

        Arguments:
            backend_name: Name of backend, expressed as string.
        )Ú
ValueErrorrÎ   r   )r  r#  s     rœ   Úfrom_stringzImplementation.from_string€  sA   € ð	*Ø�3�|Ñ$Ô$Ð$øÝð 	*ð 	*ð 	*Ý!Ô)Ð)Ð)Ð)ð	*øøøs   ‚
 �&¥&Úbackendú)IntoBackend[Backend] | UnknownBackendNamec                ó®   — t          |t          ¦  «        r|                      |¦  «        n+t          |t          ¦  «        r|n|                      |¦  «        S )z¢Instantiate from native namespace module, string, or Implementation.

        Arguments:
            backend: Backend to instantiate Implementation from.
        )Ú
isinstancer“   r&  rÎ   r"  )r  r'  s     rœ   Úfrom_backendzImplementation.from_backendŒ  sU   € õ ˜'¥3Ñ'Ô'ð4ˆC�OŠO˜GÑ$Ô$Ð$õ ˜'¥>Ñ2Ô2ð4��à×*Ò*¨7Ñ3Ô3ð	
r›   c                óÆ   — | t           j        u rd}t          |¦  «        ‚|                      ¦   «          t                               | | j        ¦  «        }t          |¦  «        S )zCReturn the native namespace module corresponding to Implementation.z:Cannot return native namespace from UNKNOWN Implementation)rÎ   r   ÚAssertionErrorrÆ   Ú_IMPLEMENTATION_TO_MODULE_NAMEr  r  Ú_import_native_namespace)r¦   ÚmsgÚmodule_names      rœ   Úto_native_namespacez"Implementation.to_native_namespace�  sZ   € à•>Ô)Ð)Ð)ØNˆCÝ  Ñ%Ô%Ð%à×ÒÑÔÐÝ4×8Ò8¸¸t¼zÑJÔJˆÝ'¨Ñ4Ô4Ð4r›   Úboolc                ó   — | t           j        u S )a7  Return whether implementation is pandas.

        Examples:
            >>> import pandas as pd
            >>> import narwhals as nw
            >>> df_native = pd.DataFrame({"a": [1, 2, 3]})
            >>> df = nw.from_native(df_native)
            >>> df.implementation.is_pandas()
            True
        )rÎ   r  r¬   s    rœ   Ú	is_pandaszImplementation.is_pandas§  ó   € ð •~Ô,Ð,Ð,r›   c                óL   — | t           j        t           j        t           j        hv S )aL  Return whether implementation is pandas, Modin, or cuDF.

        Examples:
            >>> import pandas as pd
            >>> import narwhals as nw
            >>> df_native = pd.DataFrame({"a": [1, 2, 3]})
            >>> df = nw.from_native(df_native)
            >>> df.implementation.is_pandas_like()
            True
        )rÎ   r  r  r  r¬   s    rœ   Úis_pandas_likezImplementation.is_pandas_like´  s   € ð �Ô-­~Ô/CÅ^ÔEXÐYÐYÐYr›   c                óL   — | t           j        t           j        t           j        hv S )aI  Return whether implementation is pyspark or sqlframe.

        Examples:
            >>> import pandas as pd
            >>> import narwhals as nw
            >>> df_native = pd.DataFrame({"a": [1, 2, 3]})
            >>> df = nw.from_native(df_native)
            >>> df.implementation.is_spark_like()
            False
        )rÎ   r  r  r  r¬   s    rœ   Úis_spark_likezImplementation.is_spark_likeÁ  s(   € ð ÝÔ"ÝÔ#ÝÔ*ð
ð 
ð 	
r›   c                ó   — | t           j        u S )a7  Return whether implementation is Polars.

        Examples:
            >>> import polars as pl
            >>> import narwhals as nw
            >>> df_native = pl.DataFrame({"a": [1, 2, 3]})
            >>> df = nw.from_native(df_native)
            >>> df.implementation.is_polars()
            True
        )rÎ   r  r¬   s    rœ   Ú	is_polarszImplementation.is_polarsÒ  r6  r›   c                ó   — | t           j        u S )a4  Return whether implementation is cuDF.

        Examples:
            >>> import polars as pl
            >>> import narwhals as nw
            >>> df_native = pl.DataFrame({"a": [1, 2, 3]})
            >>> df = nw.from_native(df_native)
            >>> df.implementation.is_cudf()
            False
        )rÎ   r  r¬   s    rœ   Úis_cudfzImplementation.is_cudfß  ó   € ð •~Ô*Ð*Ð*r›   c                ó   — | t           j        u S )a6  Return whether implementation is Modin.

        Examples:
            >>> import polars as pl
            >>> import narwhals as nw
            >>> df_native = pl.DataFrame({"a": [1, 2, 3]})
            >>> df = nw.from_native(df_native)
            >>> df.implementation.is_modin()
            False
        )rÎ   r  r¬   s    rœ   Úis_modinzImplementation.is_modinì  s   € ð •~Ô+Ð+Ð+r›   c                ó   — | t           j        u S )a:  Return whether implementation is PySpark.

        Examples:
            >>> import polars as pl
            >>> import narwhals as nw
            >>> df_native = pl.DataFrame({"a": [1, 2, 3]})
            >>> df = nw.from_native(df_native)
            >>> df.implementation.is_pyspark()
            False
        )rÎ   r  r¬   s    rœ   Ú
is_pysparkzImplementation.is_pysparkù  ó   € ð •~Ô-Ð-Ð-r›   c                ó   — | t           j        u S )aB  Return whether implementation is PySpark.

        Examples:
            >>> import polars as pl
            >>> import narwhals as nw
            >>> df_native = pl.DataFrame({"a": [1, 2, 3]})
            >>> df = nw.from_native(df_native)
            >>> df.implementation.is_pyspark_connect()
            False
        )rÎ   r  r¬   s    rœ   Úis_pyspark_connectz!Implementation.is_pyspark_connect  s   € ð •~Ô5Ð5Ð5r›   c                ó   — | t           j        u S )a:  Return whether implementation is PyArrow.

        Examples:
            >>> import polars as pl
            >>> import narwhals as nw
            >>> df_native = pl.DataFrame({"a": [1, 2, 3]})
            >>> df = nw.from_native(df_native)
            >>> df.implementation.is_pyarrow()
            False
        )rÎ   r  r¬   s    rœ   Ú
is_pyarrowzImplementation.is_pyarrow  rD  r›   c                ó   — | t           j        u S )a4  Return whether implementation is Dask.

        Examples:
            >>> import polars as pl
            >>> import narwhals as nw
            >>> df_native = pl.DataFrame({"a": [1, 2, 3]})
            >>> df = nw.from_native(df_native)
            >>> df.implementation.is_dask()
            False
        )rÎ   r  r¬   s    rœ   Úis_daskzImplementation.is_dask   r?  r›   c                ó   — | t           j        u S )a8  Return whether implementation is DuckDB.

        Examples:
            >>> import polars as pl
            >>> import narwhals as nw
            >>> df_native = pl.DataFrame({"a": [1, 2, 3]})
            >>> df = nw.from_native(df_native)
            >>> df.implementation.is_duckdb()
            False
        )rÎ   r  r¬   s    rœ   Ú	is_duckdbzImplementation.is_duckdb-  r6  r›   c                ó   — | t           j        u S )a4  Return whether implementation is Ibis.

        Examples:
            >>> import polars as pl
            >>> import narwhals as nw
            >>> df_native = pl.DataFrame({"a": [1, 2, 3]})
            >>> df = nw.from_native(df_native)
            >>> df.implementation.is_ibis()
            False
        )rÎ   r  r¬   s    rœ   Úis_ibiszImplementation.is_ibis:  r?  r›   c                ó   — | t           j        u S )a<  Return whether implementation is SQLFrame.

        Examples:
            >>> import polars as pl
            >>> import narwhals as nw
            >>> df_native = pl.DataFrame({"a": [1, 2, 3]})
            >>> df = nw.from_native(df_native)
            >>> df.implementation.is_sqlframe()
            False
        )rÎ   r  r¬   s    rœ   Úis_sqlframezImplementation.is_sqlframeG  s   € ð •~Ô.Ð.Ð.r›   rÄ   c                ó    — t          | ¦  «        S )zReturns backend version.©Úbackend_versionr¬   s    rœ   rÆ   zImplementation._backend_versionT  s   € å˜tÑ$Ô$Ð$r›   N©r¢   r“   )r  r  r  r<   r¢   rÎ   )r  r  r#  r“   r¢   rÎ   )r  r  r'  r(  r¢   rÎ   )r¢   r<   )r¢   r3  rÇ   )$r–   r—   r˜   r¼   r  r  r  r  r  r  r  r  r  r  r  r   r  Úclassmethodr"  r&  r+  r2  r5  r8  r:  r<  r>  rA  rC  rF  rH  rJ  rL  rN  rP  rÆ   rš   r›   rœ   rÎ   rÎ   I  s"  € € € € € ØIÐIà€FØ Ø€EØØ€DØØ€GØ!Ø€GØ!Ø€FØ Ø€DØØ€FØ Ø€DØØ€HØ"Ø(€OØ)Ø€GØ!ðð ð ð ð ðEð Eð Eñ „[ðEð. ð	*ð 	*ð 	*ñ „[ð	*ð ð
ð 
ð 
ñ „[ð
ð 5ð 5ð 5ð 5ð-ð -ð -ð -ðZð Zð Zð Zð
ð 
ð 
ð 
ð"-ð -ð -ð -ð+ð +ð +ð +ð,ð ,ð ,ð ,ð.ð .ð .ð .ð6ð 6ð 6ð 6ð.ð .ð .ð .ð+ð +ð +ð +ð-ð -ð -ð -ð+ð +ð +ð +ð/ð /ð /ð /ð%ð %ð %ð %ð %ð %r›   rÎ   Úimplementationr¢   r3  c                ó‚   — |                       ¦   «         p|                      ¦   «         o|                      ¦   «         dk     S )zJWhether implementation is PySpark (or PySpark Connect) with version < 4.0.)é   r   )rC  rF  rÆ   ©rV  s    rœ   Úis_pyspark_pre_4rZ  Y  sB   € ð 	×!Ò!Ñ#Ô#ÐJ ~×'HÒ'HÑ'JÔ'Jð5à
×
)Ò
)Ñ
+Ô
+¨fÒ
4ð5r›   )é   é   rX  )r   é   r   )é   é
   )é   )r\  é   )r   é   rX  )iè  é   )r[  r[  )é   )r\  r]  r   z(Mapping[Implementation, tuple[int, ...]]ÚMIN_VERSIONSzdask.dataframezmodin.pandaszpyspark.sqlzpyspark.sql.connectzMapping[Implementation, str]r.  é   )Úmaxsizer1  r“   r<   c                ó$   — ddl m}  || ¦  «        S )Nr   )Úimport_module)Ú	importlibri  )r1  ri  s     rœ   r/  r/  w  s$   € à'Ð'Ð'Ð'Ð'Ð'àˆ=˜Ñ%Ô%Ð%r›   rÄ   c               ó   — t          | t          ¦  «        st          | ¦  «         | t          j        u rdS | }t                               ||j        ¦  «        }t          |¦  «        }|                     ¦   «         rdd l	}|j
        }nL|                     ¦   «         s|                     ¦   «         rdd l}|}n|                     ¦   «         rdd l}|}n|}t!          |¦  «        }|t"          |         x}	k     rd|› d|	› d|› �}
t%          |
¦  «        ‚|S )N)r   r   r   r   zMinimum version of z supported by Narwhals is z	, found: )r*  rÎ   r"   r   r.  r  r  r/  rP  Úsqlframe._versionrË   rC  rF  r  rJ  r  Úparse_versionre  r%  )rV  Úimplr1  r  r  Úinto_versionr  r  ÚversionÚmin_versionr0  s              rœ   rS  rS  �  s4  € å�n¥nÑ5Ô5ð %Ý�^Ñ$Ô$Ð$Ø�Ô/Ð/Ð/Øˆyà€DÝ0×4Ò4°T¸4¼:ÑFÔF€KÝ/°Ñ<Ô<ÐØ×ÒÑÔð (Ø Ð Ð Ð àÔ(ˆˆØ	�ŠÑ	Ô	ð 	(˜d×5Ò5Ñ7Ô7ð 	(ØˆˆˆàˆˆØ	�Š‰Œð (Øˆˆˆàˆˆà'ˆÝ˜LÑ)Ô)€GØ¥¨dÔ!3Ð3�+Ò4Ð4Øc DÐcÐcÀKÐcÐcÐZaÐcÐcˆÝ˜‰oŒoÐØ€Nr›   Úargsr   ú	list[Any]c                ó€   — t          t          | ¦  «        dk    rt          | d         ¦  «        r| d         n| ¦  «        S )Nr[  r   )ÚlistÚlenÚ_is_iterable)rr  s    rœ   Úflattenrx     s6   € Ý�C ™IœI¨šN˜N­|¸DÀ¼GÑ/DÔ/D˜N��Q”�È4ÑPÔPÐPr›   Úargc                óD   — t          | t          t          f¦  «        s| fS | S r¤   )r*  ru  Útuple)ry  s    rœ   Útupleifyr|  ¤  s$   € Ý�c�D¥%˜=Ñ)Ô)ð ØˆvˆØ€Jr›   úAny | Iterable[Any]c                ó€  — ddl m} t          ¦   «         x}�t          | |j        |j        f¦  «        s8t          ¦   «         x}�Jt          | |j        |j        |j        |j        f¦  «        r"dt          | ¦  «        ›d�}t          |¦  «        ‚t          | t          ¦  «        ot          | t          t          |f¦  «         S )Nr   rr   z(Expected Narwhals class or scalar, got: z`.

Hint: Perhaps you
- forgot a `nw.from_native` somewhere?
- used `pl.col` instead of `nw.col`?)rü   rs   r)   r*  rn   r*   ÚExprro   Úqualified_type_nameÚ	TypeErrorr   r“   Úbytes)ry  rs   ÚpdÚplr0  s        rœ   rw  rw  ª  sÊ   € Ø&Ð&Ð&Ð&Ð&Ð&õ ‰|Œ|Ð	ˆÐ(­Z¸¸b¼iÈÌÐ=VÑ-WÔ-WÐ(å‰|Œ|Ð	ˆÐ(Ý�s˜RœY¨¬°´¸r¼|ÐLÑMÔMð 	)ð
3Õ7JÈ3Ñ7OÔ7Oð 3ð 3ð 3ð 	õ ˜‰nŒnÐå�c�8Ñ$Ô$ÐR­Z¸½cÅ5È&Ð=QÑ-RÔ-RÐ)RÐRr›   ÚvalúIterable[_T] | AnyúTypeIs[Iterator[_T]]c                ó,   — t          | t          ¦  «        S r¤   )r*  r   )r…  s    rœ   Úis_iteratorr‰  ¿  s   € Ý�c�8Ñ$Ô$Ð$r›   rp  ú#str | ModuleType | _SupportsVersionc                óÂ   — t          | t          ¦  «        r| n| j        }t          j        dd|¦  «        }t          d„ |                     d¦  «        D ¦   «         ¦  «        S )z•Simple version parser; split into a tuple of ints for comparison.

    Arguments:
        version: Version string, or object with one, to parse.
    z(\D?dev.*$)Ú c              3  ó\   K  — | ]'}t          t          j        d d|¦  «        ¦  «        V — Œ(dS )z\DrŒ  N)ÚintÚreÚsub)Ú.0Úvs     rœ   ú	<genexpr>z parse_version.<locals>.<genexpr>Î  s8   è è € ÐKÐK¨q••R”V˜E 2 qÑ)Ô)Ñ*Ô*ÐKÐKÐKÐKÐKÐKr›   ú.)r*  r“   r”   r�  r�  r{  Úsplit)rp  Úversion_strs     rœ   rm  rm  Ã  s]   € õ (¨µÑ5Ô5ÐN�'�'¸7Ô;N€KÝ”&˜¨¨[Ñ9Ô9€KÝÐKÐK°K×4EÒ4EÀcÑ4JÔ4JÐKÑKÔKÑKÔKÐKr›   Ú
obj_or_clsÚtypeÚcls_or_tupleútype[_T]úTypeIs[type[_T]]c                ó   — d S r¤   rš   ©r—  r™  s     rœ   Úisinstance_or_issubclassrž  Ñ  s	   € ð �sr›   úobject | typeúTypeIs[_T | type[_T]]c                ó   — d S r¤   rš   r�  s     rœ   rž  rž  ×  ó	   € ð  ˜Cr›   útuple[type[_T1], type[_T2]]úTypeIs[type[_T1 | _T2]]c                ó   — d S r¤   rš   r�  s     rœ   rž  rž  Ý  s	   € ð "˜cr›   ú#TypeIs[_T1 | _T2 | type[_T1 | _T2]]c                ó   — d S r¤   rš   r�  s     rœ   rž  rž  ã  s	   € ð +.¨#r›   ú&tuple[type[_T1], type[_T2], type[_T3]]úTypeIs[type[_T1 | _T2 | _T3]]c                ó   — d S r¤   rš   r�  s     rœ   rž  rž  é  s	   € ð %( Cr›   ú/TypeIs[_T1 | _T2 | _T3 | type[_T1 | _T2 | _T3]]c                ó   — d S r¤   rš   r�  s     rœ   rž  rž  ï  s	   € ð 7:°cr›   útuple[type, ...]úTypeIs[Any]c                ó   — d S r¤   rš   r�  s     rœ   rž  rž  õ  s	   € ð �#r›   c                ó¸   — ddl m} t          | |¦  «        rt          | |¦  «        S t          | |¦  «        p$t          | t          ¦  «        ot	          | |¦  «        S )Nr   rp   )Únarwhals.dtypesrq   r*  r˜  Ú
issubclass)r—  r™  rq   s      rœ   rž  rž  û  si   € Ø%Ð%Ð%Ð%Ð%Ð%å�*˜eÑ$Ô$ð 4Ý˜* lÑ3Ô3Ð3Ý�j ,Ñ/Ô/ð Ý�:�tÑ$Ô$ÐM­°JÀÑ)MÔ)Mðr›   ÚitemsúIterable[Any]rØ   c                óÂ   ‡‡— ddl mŠmŠ t          ˆfd„| D ¦   «         ¦  «        st          ˆfd„| D ¦   «         ¦  «        rd S dd„ | D ¦   «         › �}t	          |¦  «        ‚)Nr   rm   c              3  ó8   •K  — | ]}t          |‰¦  «        V — Œd S r¤   ©r*  )r‘  Úitemrn   s     €rœ   r“  z$validate_laziness.<locals>.<genexpr>  s-   øè è € Ð
9Ð
9¨4�:�d˜IÑ&Ô&Ð
9Ð
9Ð
9Ð
9Ð
9Ð
9r›   c              3  ó8   •K  — | ]}t          |‰¦  «        V — Œd S r¤   r·  )r‘  r¸  ro   s     €rœ   r“  z$validate_laziness.<locals>.<genexpr>	  s-   øè è € Ð:Ð:¨D�J�t˜YÑ'Ô'Ð:Ð:Ð:Ð:Ð:Ð:r›   zGThe items to concatenate should either all be eager, or all lazy, got: c                ó,   — g | ]}t          |¦  «        ‘ŒS rš   )r˜  )r‘  r¸  s     rœ   ú
<listcomp>z%validate_laziness.<locals>.<listcomp>  s#   € ÐTrÐTrÐTrÐdhÕUYÐZ^ÑU_ÔU_ÐTrÐTrÐTrr›   )rð   rn   ro   Úallr�  )r³  r0  rn   ro   s     @@rœ   Úvalidate_lazinessr½    s–   øø€ Ø7Ð7Ð7Ð7Ð7Ð7Ð7Ð7å
Ð
9Ð
9Ð
9Ð
9°5Ð
9Ñ
9Ô
9Ñ9Ô9ð ÝÐ:Ð:Ð:Ð:°EÐ:Ñ:Ô:Ñ:Ô:ðð 	ˆØ
tÐTrÐTrÐlqÐTrÑTrÔTrÐ
tÐ
t€CÝ
�C‰.Œ.Ðr›   ÚlhsÚrhsú-Series[Any] | DataFrame[Any] | LazyFrame[Any]c                ó   — ddl m} ddlm} dd„}t	          d| ¦  «        }t	          d|¦  «        }t          t          |d	d
¦  «        |¦  «        r¤t          t          |d	d
¦  «        |¦  «        r… ||j        j        j	        ¦  «          ||j        j        j	        ¦  «         | 
                    |j                             |j        j        j        |j        j        j	                 ¦  «        ¦  «        S t          t          |d	d
¦  «        |¦  «        r¤t          t          |dd
¦  «        |¦  «        r… ||j        j        j	        ¦  «          ||j        j        j	        ¦  «         | 
                    |j                             |j        j        j        |j        j        j	                 ¦  «        ¦  «        S t          t          |dd
¦  «        |¦  «        r¤t          t          |d	d
¦  «        |¦  «        r… ||j        j        j	        ¦  «          ||j        j        j	        ¦  «         | 
                    |j                             |j        j        j        |j        j        j	                 ¦  «        ¦  «        S t          t          |dd
¦  «        |¦  «        r¤t          t          |dd
¦  «        |¦  «        r… ||j        j        j	        ¦  «          ||j        j        j	        ¦  «         | 
                    |j                             |j        j        j        |j        j        j	                 ¦  «        ¦  «        S t          |¦  «        t          |¦  «        k    r1dt          |¦  «        › dt          |¦  «        › �}t          |¦  «        ‚| S )a¬  Align `lhs` to the Index of `rhs`, if they're both pandas-like.

    Arguments:
        lhs: Dataframe or Series.
        rhs: Dataframe or Series to align with.

    Notes:
        This is only really intended for backwards-compatibility purposes,
        for example if your library already aligns indices for users.
        If you're designing a new library, we highly encourage you to not
        rely on the Index.
        For non-pandas-like inputs, this only checks that `lhs` and `rhs`
        are the same length.

    Examples:
        >>> import pandas as pd
        >>> import polars as pl
        >>> import narwhals as nw
        >>> df_pd = pd.DataFrame({"a": [1, 2]}, index=[3, 4])
        >>> s_pd = pd.Series([6, 7], index=[4, 3])
        >>> df = nw.from_native(df_pd)
        >>> s = nw.from_native(s_pd, series_only=True)
        >>> nw.to_native(nw.maybe_align_index(df, s))
           a
        4  2
        3  1
    r   )ÚPandasLikeDataFrame)ÚPandasLikeSeriesÚindexr   r¢   rØ   c                ó6   — | j         sd}t          |¦  «        ‚d S )Nz'given index doesn't have a unique index)Ú	is_uniquer%  )rÄ  r0  s     rœ   Ú_validate_indexz*maybe_align_index.<locals>._validate_index1  s'   € ØŒð 	"Ø;ˆCÝ˜S‘/”/Ð!ð	"ð 	"r›   Ú_compliant_frameNÚ_compliant_seriesz6Expected `lhs` and `rhs` to have the same length, got z and )rÄ  r   r¢   rØ   )Únarwhals._pandas_like.dataframerÂ  Únarwhals._pandas_like.seriesrÃ  r   r*  ÚgetattrrÈ  rº   rÄ  Ú_with_compliantÚ_with_nativeÚlocrÉ  rv  r%  )r¾  r¿  rÂ  rÃ  rÇ  Úlhs_anyÚrhs_anyr0  s           rœ   Úmaybe_align_indexrÒ    s¿  € ð< DÐCÐCÐCÐCÐCØ=Ð=Ð=Ð=Ð=Ð=ð"ð "ð "ð "õ
 �5˜#ÑÔ€GÝ�5˜#ÑÔ€GÝÝ�Ð+¨TÑ2Ô2Ð4Gñô ð 	
å
•W˜WÐ&8¸$Ñ?Ô?ÐATÑ
UÔ
Uð	
ð 	ˆ˜Ô0Ô7Ô=Ñ>Ô>Ð>Øˆ˜Ô0Ô7Ô=Ñ>Ô>Ð>Ø×&Ò&ØÔ$×1Ò1ØÔ(Ô/Ô3°GÔ4LÔ4SÔ4YÔZñô ñ
ô 
ð 	
õ
 Ý�Ð+¨TÑ2Ô2Ð4Gñô ð 
å
•W˜WÐ&9¸4Ñ@Ô@ÐBRÑ
SÔ
Sð
ð 	ˆ˜Ô0Ô7Ô=Ñ>Ô>Ð>Øˆ˜Ô1Ô8Ô>Ñ?Ô?Ð?Ø×&Ò&ØÔ$×1Ò1ØÔ(Ô/Ô3ØÔ-Ô4Ô:ôñô ñ
ô 
ð 	
õ Ý�Ð,¨dÑ3Ô3Ð5Eñô ð 
å
•W˜WÐ&8¸$Ñ?Ô?ÐATÑ
UÔ
Uð
ð 	ˆ˜Ô1Ô8Ô>Ñ?Ô?Ð?Øˆ˜Ô0Ô7Ô=Ñ>Ô>Ð>Ø×&Ò&ØÔ%×2Ò2ØÔ)Ô0Ô4ØÔ,Ô3Ô9ôñô ñ
ô 
ð 	
õ Ý�Ð,¨dÑ3Ô3Ð5Eñô ð 
å
•W˜WÐ&9¸4Ñ@Ô@ÐBRÑ
SÔ
Sð
ð 	ˆ˜Ô1Ô8Ô>Ñ?Ô?Ð?Øˆ˜Ô1Ô8Ô>Ñ?Ô?Ð?Ø×&Ò&ØÔ%×2Ò2ØÔ)Ô0Ô4ØÔ-Ô4Ô:ôñô ñ
ô 
ð 	
õ ˆ7�|„|•s˜7‘|”|Ò#Ð#ØhÅsÈ7Á|Ä|ÐhÐhÕZ]Ð^eÑZfÔZfÐhÐhˆÝ˜‰oŒoÐØ€Jr›   Úobjú-DataFrame[Any] | LazyFrame[Any] | Series[Any]r¡   c                ó˜   — t          d| ¦  «        }|                     ¦   «         }t          |¦  «        st          |¦  «        r|j        S dS )a’  Get the index of a DataFrame or a Series, if it's pandas-like.

    Arguments:
        obj: Dataframe or Series.

    Notes:
        This is only really intended for backwards-compatibility purposes,
        for example if your library already aligns indices for users.
        If you're designing a new library, we highly encourage you to not
        rely on the Index.
        For non-pandas-like inputs, this returns `None`.

    Examples:
        >>> import pandas as pd
        >>> import polars as pl
        >>> import narwhals as nw
        >>> df_pd = pd.DataFrame({"a": [1, 2], "b": [4, 5]})
        >>> df = nw.from_native(df_pd)
        >>> nw.maybe_get_index(df)
        RangeIndex(start=0, stop=2, step=1)
        >>> series_pd = pd.Series([1, 2])
        >>> series = nw.from_native(series_pd, series_only=True)
        >>> nw.maybe_get_index(series)
        RangeIndex(start=0, stop=2, step=1)
    r   N)r   Ú	to_nativer5   r6   rÄ  )rÓ  Úobj_anyÚ
native_objs      rœ   Úmaybe_get_indexrÙ  l  sR   € õ4 �5˜#ÑÔ€GØ×"Ò"Ñ$Ô$€JÝ 
Ñ+Ô+ð  Õ/DÀZÑ/PÔ/Pð  ØÔÐØˆ4r›   )rÄ  Úcolumn_namesústr | list[str] | NonerÄ  ú6Series[IntoSeriesT] | list[Series[IntoSeriesT]] | Nonec               ó†  ‡— ddl mŠ t          d| ¦  «        }|                     ¦   «         }|�|�d}t          |¦  «        ‚|s|€d}t          |¦  «        ‚|�+t	          |¦  «        rˆfd„|D ¦   «         n ‰|d¬	¦  «        }n|}t          |¦  «        r@|                     |j                             | 	                    |¦  «        ¦  «        ¦  «        S t          |¦  «        r^dd
lm	} |rd}t          |¦  «        ‚ |||| j        j        ¬¦  «        }|                     |j                             |¦  «        ¦  «        S |S )a¯  Set the index of a DataFrame or a Series, if it's pandas-like.

    Arguments:
        obj: object for which maybe set the index (can be either a Narwhals `DataFrame`
            or `Series`).
        column_names: name or list of names of the columns to set as index.
            For dataframes, only one of `column_names` and `index` can be specified but
            not both. If `column_names` is passed and `df` is a Series, then a
            `ValueError` is raised.
        index: series or list of series to set as index.

    Raises:
        ValueError: If one of the following conditions happens

            - none of `column_names` and `index` are provided
            - both `column_names` and `index` are provided
            - `column_names` is provided and `df` is a Series

    Notes:
        This is only really intended for backwards-compatibility purposes, for example if
        your library already aligns indices for users.
        If you're designing a new library, we highly encourage you to not
        rely on the Index.

        For non-pandas-like inputs, this is a no-op.

    Examples:
        >>> import pandas as pd
        >>> import polars as pl
        >>> import narwhals as nw
        >>> df_pd = pd.DataFrame({"a": [1, 2], "b": [4, 5]})
        >>> df = nw.from_native(df_pd)
        >>> nw.to_native(nw.maybe_set_index(df, "b"))  # doctest: +NORMALIZE_WHITESPACE
           a
        b
        4  1
        5  2
    r   )rÖ  r   Nz8Only one of `column_names` or `index` should be providedz3Either `column_names` or `index` should be providedc                ó*   •— g | ]} ‰|d ¬¦  «        ‘ŒS )T©Úpass_throughrš   )r‘  ÚidxrÖ  s     €rœ   r»  z#maybe_set_index.<locals>.<listcomp>È  s(   ø€ Ð@Ð@Ð@°3ˆYˆY�s¨Ð.Ñ.Ô.Ð@Ð@Ð@r›   Trß  )Ú	set_indexz/Cannot set index using column names on a SeriesrY  )Únarwhals.translaterÖ  r   r%  rw  r5   rÍ  rÈ  rÎ  râ  r6   Únarwhals._pandas_like.utilsrÉ  rÏ   )	rÓ  rÚ  rÄ  Údf_anyrØ  r0  Úkeysrâ  rÖ  s	           @rœ   Úmaybe_set_indexrç  �  sœ  ø€ ðX -Ð,Ð,Ð,Ð,Ð,å�%˜ÑÔ€FØ×!Ò!Ñ#Ô#€JàÐ EÐ$5ØHˆÝ˜‰oŒoÐàð ˜E˜MØCˆÝ˜‰oŒoÐàÐõ ˜EÑ"Ô"ð5Ð@Ð@Ð@Ð@¸%Ð@Ñ@Ô@Ð@à�˜5¨tÐ4Ñ4Ô4ð 	ˆð ˆå 
Ñ+Ô+ð 
Ø×%Ò%ØÔ#×0Ò0°×1EÒ1EÀdÑ1KÔ1KÑLÔLñ
ô 
ð 	
õ ˜ZÑ(Ô(ð YØ9Ð9Ð9Ð9Ð9Ð9àð 	"ØCˆCÝ˜S‘/”/Ð!à�YØØØÔ0Ô@ð
ñ 
ô 
ˆ
ð
 ×%Ò% fÔ&>×&KÒ&KÈJÑ&WÔ&WÑXÔXÐXØ€Mr›   c                ó&  — t          d| ¦  «        }|                     ¦   «         }t          |¦  «        rg|                     ¦   «         }t	          ||¦  «        r|S |                     |j                             |                     d¬¦  «        ¦  «        ¦  «        S t          |¦  «        rg|                     ¦   «         }t	          ||¦  «        r|S |                     |j
                             |                     d¬¦  «        ¦  «        ¦  «        S |S )aÓ  Reset the index to the default integer index of a DataFrame or a Series, if it's pandas-like.

    Arguments:
        obj: Dataframe or Series.

    Notes:
        This is only really intended for backwards-compatibility purposes,
        for example if your library already resets the index for users.
        If you're designing a new library, we highly encourage you to not
        rely on the Index.
        For non-pandas-like inputs, this is a no-op.

    Examples:
        >>> import pandas as pd
        >>> import polars as pl
        >>> import narwhals as nw
        >>> df_pd = pd.DataFrame({"a": [1, 2], "b": [4, 5]}, index=([6, 7]))
        >>> df = nw.from_native(df_pd)
        >>> nw.to_native(nw.maybe_reset_index(df))
           a  b
        0  1  4
        1  2  5
        >>> series_pd = pd.Series([1, 2])
        >>> series = nw.from_native(series_pd, series_only=True)
        >>> nw.maybe_get_index(series)
        RangeIndex(start=0, stop=2, step=1)
    r   T)Údrop)r   rÖ  r5   Ú__native_namespace__Ú_has_default_indexrÍ  rÈ  rÎ  Úreset_indexr6   rÉ  )rÓ  r×  rØ  r  s       rœ   Úmaybe_reset_indexrí  ã  s  € õ8 �5˜#ÑÔ€GØ×"Ò"Ñ$Ô$€JÝ 
Ñ+Ô+ð 
Ø"×7Ò7Ñ9Ô9ÐÝ˜jÐ*:Ñ;Ô;ð 	ØˆNØ×&Ò&ØÔ$×1Ò1°*×2HÒ2HÈdÐ2HÑ2SÔ2SÑTÔTñ
ô 
ð 	
õ ˜ZÑ(Ô(ð 
Ø"×7Ò7Ñ9Ô9ÐÝ˜jÐ*:Ñ;Ô;ð 	ØˆNØ×&Ò&ØÔ%×2Ò2°:×3IÒ3IÈtÐ3IÑ3TÔ3TÑUÔUñ
ô 
ð 	
ð €Nr›   r  úTypeIs[pd.RangeIndex]c                ó,   — t          | |j        ¦  «        S r¤   )r*  Ú
RangeIndex)rÓ  r  s     rœ   Ú_is_range_indexrñ    s   € Ý�cÐ+Ô6Ñ7Ô7Ð7r›   Únative_frame_or_seriesúpd.Series[Any] | pd.DataFramec                óŒ   — | j         }t          ||¦  «        o-|j        dk    o"|j        t	          |¦  «        k    o
|j        dk    S )Nr   r[  )rÄ  rñ  ÚstartÚstoprv  Ústep)rò  r  rÄ  s      rœ   rë  rë    sS   € ð #Ô(€Eå˜Ð/Ñ0Ô0ð 	ØŒK˜1Òð	àŒJ�#˜e™*œ*Ò$ð	ð ŒJ˜!ŠOð	r›   Úkwargsú
bool | strc           	     óì   — | j                              ¦   «         s| S |                      | j                              |                      ¦   «         j        |i |¤Ž¦  «        ¦  «        }t          d|¦  «        S )a-  Convert columns or series to the best possible dtypes using dtypes supporting ``pd.NA``, if df is pandas-like.

    Arguments:
        obj: DataFrame or Series.
        *args: Additional arguments which gets passed through.
        **kwargs: Additional arguments which gets passed through.

    Notes:
        For non-pandas-like inputs, this is a no-op.
        Also, `args` and `kwargs` just get passed down to the underlying library as-is.

    Examples:
        >>> import pandas as pd
        >>> import polars as pl
        >>> import narwhals as nw
        >>> import numpy as np
        >>> df_pd = pd.DataFrame(
        ...     {
        ...         "a": pd.Series([1, 2, 3], dtype=np.dtype("int32")),
        ...         "b": pd.Series([True, False, np.nan], dtype=np.dtype("O")),
        ...     }
        ... )
        >>> df = nw.from_native(df_pd)
        >>> nw.to_native(
        ...     nw.maybe_convert_dtypes(df)
        ... ).dtypes  # doctest: +NORMALIZE_WHITESPACE
        a             Int32
        b           boolean
        dtype: object
    r‡   )rV  r8  rÍ  Ú
_compliantrÎ  rÖ  Úconvert_dtypesr   )rÓ  rr  rø  Úresults       rœ   Úmaybe_convert_dtypesrþ  "  sw   € ðB Ô×,Ò,Ñ.Ô.ð Øˆ
Ø× Ò ØŒ×#Ò#Ð$B C§M¢M¡O¤OÔ$BÀDÐ$SÈFÐ$SÐ$SÑTÔTñô €Fõ Ð  &Ñ)Ô)Ð)r›   ÚszrŽ  Úunitr   úint | floatc                ó~   — |dv r| S |dv r| dz  S |dv r| dz  S |dv r| dz  S |dv r| d	z  S d
|›�}t          |¦  «        ‚)z¥Scale size in bytes to other size units (eg: "kb", "mb", "gb", "tb").

    Arguments:
        sz: original size in bytes
        unit: size unit to convert into
    >   Úbr‚  >   ÚkbÚ	kilobytesi   >   ÚmbÚ	megabytesi   >   ÚgbÚ	gigabytesi   @>   ÚtbÚ	terabytesl        z9`unit` must be one of {'b', 'kb', 'mb', 'gb', 'tb'}, got ©r%  )rÿ  r   r0  s      rœ   Úscale_bytesr  K  s…   € ð ˆ~ÐÐØˆ	ØÐ"Ð"Ð"Ø�D‰yÐØÐ"Ð"Ð"Ø�G‰|ÐØÐ"Ð"Ð"Ø�G‰|ÐØÐ"Ð"Ð"Ø�G‰|ÐØ
PÈÐ
PÐ
P€CÝ
�S‰/Œ/Ðr›   rÿ   úSeries[Any]c                ó   — ddl m} | j        j        j        }| j        }d}t          ||¦  «        r-t          | j        |j        ¦  «        r|j        j	        d         }nð| j        |j
        k    rd}nÝ| j        |j        k    rd}nÊ|                      ¦   «         }| j        }|                     ¦   «         r7|                     ¦   «         dk     rt          d|j        ¦  «        j        dk    }nd|                     ¦   «         rt%          |j        j        ¦  «        }n6|                     ¦   «         r"dd	lm}  ||j        ¦  «        o|j        j        }|S )
aŒ  Return whether indices of categories are semantically meaningful.

    This is a convenience function to accessing what would otherwise be
    the `is_ordered` property from the DataFrame Interchange Protocol,
    see https://data-apis.org/dataframe-protocol/latest/API.html.

    - For Polars:
      - Enums are always ordered.
      - Categoricals are ordered if `dtype.ordering == "physical"`.
    - For pandas-like APIs:
      - Categoricals are ordered if `dtype.cat.ordered == True`.
    - For PyArrow table:
      - Categoricals are ordered if `dtype.type.ordered == True`.

    Arguments:
        series: Input Series.

    Examples:
        >>> import narwhals as nw
        >>> import pandas as pd
        >>> import polars as pl
        >>> data = ["x", "y"]
        >>>
        >>> s_pd = nw.from_native(
        ...     pd.Series(data, dtype=pd.CategoricalDtype(ordered=True)), series_only=True
        ... )
        >>> nw.is_ordered_categorical(s_pd)
        True
        >>> s_pl = nw.from_native(
        ...     pl.Series(data, dtype=pl.Categorical()), series_only=True
        ... )
        >>> nw.is_ordered_categorical(s_pl)
        False
    r   )ÚInterchangeSeriesFÚ
is_orderedT)r[  é    zpl.CategoricalÚphysical)Úis_dictionary)Únarwhals._interchange.seriesr  rÉ  rË   rè   r*  ÚdtypeÚCategoricalrº   Údescribe_categoricalr   rÖ  rV  r<  rÆ   r   Úorderingr8  r3  ÚcatÚorderedrH  Únarwhals._arrow.utilsr  r˜  )rÿ   r  rè   rÁ   rý  rº   rn  r  s           rœ   Úis_ordered_categoricalr  `  sq  € ðF ?Ð>Ð>Ð>Ð>Ð>àÔ%Ô.Ô5€FØÔ(€Ià€FÝ�)Ð.Ñ/Ô/ð HµJØŒ�fÔ(ñ5ô 5ð Hð Ô!Ô6°|ÔDˆˆØ	Œ˜œÒ	$Ð	$ØˆˆØ	Œ˜Ô+Ò	+Ð	+Øˆˆà×!Ò!Ñ#Ô#ˆØÔ$ˆØ�>Š>ÑÔð 
	H × 5Ò 5Ñ 7Ô 7¸'Ò AÐ Aõ Ð*¨F¬LÑ9Ô9ÔBÀjÒPˆFˆFØ× Ò Ñ"Ô"ð 	HÝ˜&œ*Ô,Ñ-Ô-ˆFˆFØ�_Š_ÑÔð 	HØ;Ð;Ð;Ð;Ð;Ð;à"�] 6¤;Ñ/Ô/ÐG°F´KÔ4GˆFØ€Mr›   ÚnwÚn_bytesr­   úContainer[str]Úprefixc                óL   — d}t          |d¬¦  «         t          | ||¬¦  «        S )Nz}Use `generate_temporary_column_name` instead. `generate_unique_token` is deprecated and it will be removed in future versionsz1.13.0©rË   )r  r­   r!  )r!   Úgenerate_temporary_column_name)r  r­   r!  r0  s       rœ   Úgenerate_unique_tokenr%  ¢  s7   € ð	?ð õ ˜c¨HÐ5Ñ5Ô5Ð5Ý)°'À7ÐSYÐZÑZÔZÐZr›   c                ó†   — d}	 |› t          | dz
  ¦  «        › �x}|vr|S |dz  }|dk    rd| ›d|› �}t          |¦  «        ‚Œ?)a  Generates a unique column name that is not present in the given list of columns.

    It relies on [python secrets token_hex](https://docs.python.org/3/library/secrets.html#secrets.token_hex)
    function to return a string nbytes random bytes.

    Arguments:
        n_bytes: The number of bytes to generate for the token.
        columns: The list of columns to check for uniqueness.
        prefix: prefix with which the temporary column name should start with.

    Returns:
        A unique token that is not present in the given list of columns.

    Raises:
        AssertionError: If a unique token cannot be generated after 100 attempts.

    Examples:
        >>> import narwhals as nw
        >>> columns = ["abc", "xyz"]
        >>> nw.generate_temporary_column_name(n_bytes=8, columns=columns) not in columns
        True
        >>> temp_name = nw.generate_temporary_column_name(
        ...     n_bytes=8, columns=columns, prefix="foo"
        ... )
        >>> temp_name not in columns and temp_name.startswith("foo")
        True
    r   Tr[  éd   zMInternal Error: Narwhals was not able to generate a column name with n_bytes=z and not in )r   r-  )r  r­   r!  ÚcounterÚtokenr0  s         rœ   r$  r$  ­  s…   € ð< €Gð
&ØÐ8¥	¨'°A©+Ñ 6Ô 6Ð8Ð8Ð8ˆEÀÐHÐHØˆLà�1‰ˆØ�SŠ=ˆ=ð3Øð3ð 3Ø)0ð3ð 3ð õ ! Ñ%Ô%Ð%ð
&r›   ÚframeÚsubsetúIterable[str]Ústrictú	list[str]c              óÄ   — |s4t          t          | j        ¦  «                             |¦  «        ¦  «        S t          |¦  «        }t	          || j        ¬¦  «        x}r|‚|S )N)Ú	available)ru  Úsetr­   ÚintersectionÚcheck_columns_exist)r*  r+  r-  Úto_dropÚerrors        rœ   Úparse_columns_to_dropr6  Ù  sc   € ð ð =Ý•C˜œÑ&Ô&×3Ò3°FÑ;Ô;Ñ<Ô<Ð<Ý�6‰lŒl€GÝ# G°u´}ÐEÑEÔEÐE€uð ØˆØ€Nr›   ÚsequenceúSequence[_T] | AnyúTypeIs[Sequence[_T]]c                óX   — t          | t          ¦  «        ot          | t          ¦  «         S r¤   )r*  r
   r“   )r7  s    rœ   Úis_sequence_but_not_strr;  ä  s$   € Ý�h¥Ñ)Ô)ÐKµ*¸XÅsÑ2KÔ2KÐ.KÐKr›   úTypeIs[_SliceNone]c                óR   — t          | t          ¦  «        o| t          d ¦  «        k    S r¤   )r*  Úslice©rÓ  s    rœ   Úis_slice_noner@  è  s"   € Ý�c�5Ñ!Ô!Ð8 c­U°4©[¬[Ò&8Ð8r›   úCTypeIs[SizedMultiIndexSelector[Series[Any] | CompliantSeries[Any]]]c                óð   — t          | ¦  «        o:t          | ¦  «        dk    rt          | d         ¦  «        pt          | ¦  «        dk    p,t          | ¦  «        pt	          | ¦  «        pt          | ¦  «        S ©Nr   )r;  rv  Úis_single_index_selectorr4   r1   Úis_compliant_series_intr?  s    rœ   Úis_sized_multi_index_selectorrF  ì  s   € õ
 $ CÑ(Ô(ð YÝ�c‘(”(˜Q’,ÐCÕ#;¸CÀ¼FÑ#CÔ#CÐWÍÈSÉÌÐUVÊð	(õ ! Ñ%Ô%ð		(õ
 " #Ñ&Ô&ð	(õ # 3Ñ'Ô'ðr›   ú-TypeIs[Sequence[_T] | Series[Any] | _1DArray]c                óz   — t          | ¦  «        p,t          | ¦  «        pt          | ¦  «        pt          | ¦  «        S r¤   )r;  r2   r/   Úis_compliant_seriesr?  s    rœ   Úis_sequence_likerJ  ú  sF   € õ 	  Ñ$Ô$ð 	$Ý˜SÑ!Ô!ð	$å˜cÑ"Ô"ð	$õ ˜sÑ#Ô#ð	r›   úTypeIs[_SliceIndex]c                óú   — t          | t          ¦  «        oft          | j        t          ¦  «        pLt          | j        t          ¦  «        p2t          | j        t          t          f¦  «        o| j        d u o| j        d u S r¤   )r*  r>  rõ  rŽ  rö  r÷  ÚNoneTyper?  s    rœ   Úis_slice_indexrN    st   € Ý�c�5Ñ!Ô!ð Ý�3”9�cÑ"Ô"ð 	
Ý�c”h¥Ñ$Ô$ð	
õ �s”x¥#¥x Ñ1Ô1ð !Ø”	˜TÐ!ð!à”˜DÐ ðr›   úTypeIs[range]c                ó,   — t          | t          ¦  «        S r¤   )r*  Úranger?  s    rœ   Úis_rangerR    s   € Ý�c�5Ñ!Ô!Ð!r›   úTypeIs[SingleIndexSelector]c                ór   — t          t          | t          ¦  «        ot          | t           ¦  «         ¦  «        S r¤   )r3  r*  rŽ  r?  s    rœ   rD  rD    s,   € Ý•
˜3¥Ñ$Ô$ÐB­Z¸½TÑ-BÔ-BÐ)BÑCÔCÐCr›   úTTypeIs[SingleIndexSelector | MultiIndexSelector[Series[Any] | CompliantSeries[Any]]]c                ó\   — t          | ¦  «        pt          | ¦  «        pt          | ¦  «        S r¤   )rD  rF  rN  r?  s    rœ   Úis_index_selectorrW    s4   € õ 	! Ñ%Ô%ð 	Ý(¨Ñ-Ô-ð	å˜#ÑÔðr›   úBTypeIs[SizedMultiBoolSelector[Series[Any] | CompliantSeries[Any]]]c                óÖ   — t          | ¦  «        r.t          | ¦  «        dk    rt          | d         t          ¦  «        p,t	          | ¦  «        pt          | ¦  «        pt          | ¦  «        S rC  )r;  rv  r*  r3  r3   r0   Úis_compliant_series_boolr?  s    rœ   Úis_boolean_selectorr[  #  sh   € õ 
! Ñ	%Ô	%Ð	U­3¨s©8¬8°aª<Ð+T½JÀsÈ1ÄvÍtÑ<TÔ<Tð 	)Ý! #Ñ&Ô&ð	)å" 3Ñ'Ô'ð	)õ $ CÑ(Ô(ð	r›   ÚtpúTypeIs[list[_T]]c                óv   — t          t          | t          ¦  «        o| ot          | d         |¦  «        ¦  «        S rC  )r3  r*  ru  )rÓ  r\  s     rœ   Ú
is_list_ofr_  .  s2   € å•
˜3¥Ñ%Ô%ÐH¨#ÐHµ*¸SÀ¼VÀRÑ2HÔ2HÑIÔIÐIr›   Ú
predicatesúCollection[Any]úTypeIs[Collection[list[bool]]]c                ó4   — t          d„ | D ¦   «         ¦  «        S )Nc              3  ó@   K  — | ]}t          |t          ¦  «        V — Œd S r¤   )r_  r3  )r‘  Úpreds     rœ   r“  z3predicates_contains_list_of_bool.<locals>.<genexpr>6  s,   è è € Ð=Ð=¨$�z˜$¥Ñ%Ô%Ð=Ð=Ð=Ð=Ð=Ð=r›   ©Úany)r`  s    rœ   Ú predicates_contains_list_of_boolrh  3  s!   € õ Ð=Ð=°*Ð=Ñ=Ô=Ñ=Ô=Ð=r›   c                ó˜   — t          t          | ¦  «        o.t          t          | ¦  «        d ¦  «        x}ot	          ||¦  «        ¦  «        S r¤   )r3  r;  ÚnextÚiterr*  )rÓ  r\  Úfirsts      rœ   Úis_sequence_ofrm  9  sN   € åÝ Ñ$Ô$ð 	"Ý�4 ™9œ9 dÑ+Ô+Ð+ˆUð	"å�u˜bÑ!Ô!ñô ð r›   úTypeIs[NestedLiteral]c                óF   — t          | t          t          t          f¦  «        S r¤   )r*  ru  r{  Údictr?  s    rœ   Úis_nested_literalrq  B  s   € Ý�c�D¥%­Ð.Ñ/Ô/Ð/r›   úbool | Nonerà  Úpass_through_defaultc               óP   — | €|€|}n| �|€|  }n| €|�nd}t          |¦  «        ‚|S )Nz,Cannot pass both `strict` and `pass_through`r  )r-  rà  rs  r0  s       rœ   Úvalidate_strict_and_pass_thoughru  F  sM   € ð €~˜,Ð.Ø+ˆˆØ	Ð	 Ð 4Ø!�zˆˆØ	ˆ˜LÐ4Øà<ˆÝ˜‰oŒoÐØÐr›   rŒ  F)Úwarn_versionÚrequiredrv  rw  ú*Callable[[Callable[P, R]], Callable[P, R]]c                ó   ‡ ‡— dˆˆ fd„}|S )a8  Decorator to transition from `native_namespace` to `backend` argument.

    Arguments:
        warn_version: Emit a deprecation warning from this version.
        required: Raise when both `native_namespace`, `backend` are `None`.

    Returns:
        Wrapped function, with `native_namespace` **removed**.
    ÚfnúCallable[P, R]r¢   c               óD   •‡ — t          ‰ ¦  «        dˆ ˆˆfd„¦   «         }|S )	Nrr  úP.argsÚkwdsúP.kwargsr¢   rŽ   c                 ó  •— |                      dd ¦  «        }|                      dd ¦  «        }|�|€‰rd}t          |‰¬¦  «         |}n5|�|�d}t          |¦  «        ‚|€|€‰rd‰j        › d�}t          |¦  «        ‚||d<    ‰| i |¤ŽS )Nr'  r  z×`native_namespace` is deprecated, please use `backend` instead.

Note: `native_namespace` will remain available in `narwhals.stable.v1`.
See https://narwhals-dev.github.io/narwhals/backcompat/ for more information.
r#  z0Can't pass both `native_namespace` and `backend`z `backend` must be specified in `z`.)Úpopr!   r%  r–   )rr  r~  r'  r  r0  rz  rw  rv  s        €€€rœ   Úwrapperz=deprecate_native_namespace.<locals>.decorate.<locals>.wrapperf  sË   ø€ à—h’h˜y¨$Ñ/Ô/ˆGØ#ŸxšxÐ(:¸DÑAÔAÐØÐ+°°Øð Jðjð õ
 .¨c¸LÐIÑIÔIÐIØ*��Ø!Ð-°'Ð2EØH�Ý  ‘o”oÐ%Ø!Ð)¨g¨oÀ(¨oØH¸¼ÐHÐHÐH�Ý  ‘o”oÐ%Ø%ˆD�‰OØ�2�tÐ$˜tÐ$Ð$Ð$r›   )rr  r}  r~  r  r¢   rŽ   )r   )rz  r‚  rw  rv  s   ` €€rœ   Údecoratez,deprecate_native_namespace.<locals>.decoratee  sC   øø€ Ý	ˆr‰Œð	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ñ 
Œð	%ð* ˆr›   )rz  r{  r¢   r{  rš   )rv  rw  rƒ  s   `` rœ   Údeprecate_native_namespacer„  X  s.   øø€ ðð ð ð ð ð ð ð2 €Or›   Úwindow_sizeÚmin_samplesú
int | Noneútuple[int, int]c                ó  — t          | t          d¬¦  «         t          |t          t          d ¦  «        d¬¦  «         | dk     rd}t          |¦  «        ‚|�/|dk     rd}t          |¦  «        ‚|| k    rd}t	          |¦  «        ‚n| }| |fS )Nr…  ©Ú
param_namer†  r[  z+window_size must be greater or equal than 1z+min_samples must be greater or equal than 1z6`min_samples` must be less or equal than `window_size`)Úensure_typerŽ  r˜  r%  r9   )r…  r†  r0  s      rœ   Ú_validate_rolling_argumentsr�  �  s¥   € õ ��S¨]Ð;Ñ;Ô;Ð;Ý��S¥$ t¡*¤*¸ÐGÑGÔGÐGà�Q‚€Ø;ˆÝ˜‰oŒoÐàÐØ˜Š?ˆ?Ø?ˆCÝ˜S‘/”/Ð!à˜Ò$Ð$ØJˆCÝ'¨Ñ,Ô,Ð,ð %ð "ˆà˜Ð#Ð#r›   ÚnÚfractionúfloat | NoneÚheightÚwith_replacementc                óÎ   — | �|�d}t          |¦  «        ‚| �| }n|�t          ||z  ¦  «        }nd}|dk     rd|› �}t          |¦  «        ‚||k    r|sd}t          |¦  «        ‚|S )aí  Resolve the concrete number of rows to draw for `DataFrame.sample`/`Series.sample`.

    At most one of `n` or `fraction` may be set; if neither is given a single row is
    sampled. `fraction` is interpreted relative to `height` and truncated towards zero.

    Raises:
        ValueError: If both `n` and `fraction` are specified.
        InvalidOperationError: If the resolved size is negative.
        ShapeError: If the resolved size exceeds `height` and `with_replacement` is False.
    Nz&cannot specify both `n` and `fraction`r[  r   z.sample size must be a positive integer, found zScannot take a larger sample than the total population when `with_replacement=false`)r%  rŽ  r9   r:   )rŽ  r�  r‘  r’  r0  Úsizes         rœ   Ú_resolve_sample_sizer•  ™  s’   € ð 	€}˜Ð-Ø6ˆÝ˜‰oŒoÐØ€}ØˆˆØ	Ð	Ý�6˜HÑ$Ñ%Ô%ˆˆàˆàˆa‚x€xØE¸tÐEÐEˆÝ# CÑ(Ô(Ð(Øˆf‚}€}Ð-€}ØcˆÝ˜‰oŒoÐØ€Kr›   ÚheaderÚnative_reprc           
     óü  — 	 t          j        ¦   «         j        }n2# t          $ r% t	          t          j        dd¦  «        ¦  «        }Y nw xY w|                     ¦   «                              ¦   «         }t          d„ |D ¦   «         ¦  «        }|dz   |k    rµt          |t          | ¦  «        ¦  «        }dd|z  › d�}|t          | ¦  «        z
  }|dd	|dz  z  › | › d	|dz  |dz  z   z  › d
�z  }|dd|z  › d
�z  }||z
  dz  }||z
  dz  ||z
  dz  z   }	|D ](}
|dd	|z  › |
› d	|	|z   t          |
¦  «        z
  z  › d
�z  }Œ)|dd|z  › d�z  }|S dt          | ¦  «        z
  }dd› dd	|dz  z  › | › d	|dz  |dz  z   z  › dd› d�	S )NÚCOLUMNSéP   c              3  ó4   K  — | ]}t          |¦  «        V — Œd S r¤   )rv  )r‘  Úlines     rœ   r“  z generate_repr.<locals>.<genexpr>¿  s(   è è € Ð>Ð>¨�3˜t™9œ9Ð>Ð>Ð>Ð>Ð>Ð>r›   é   u   â”Œu   â”€u   â”�
ú|ú z|
ú-u   â””u   â”˜é'   uu   â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€u   â”�
|u/   |
| Use `.to_native` to see native output |
â””)
ÚosÚget_terminal_sizer­   ÚOSErrorrŽ  ÚgetenvÚ
expandtabsÚ
splitlinesÚmaxrv  )r–  r—  Úterminal_widthÚnative_linesÚmax_native_widthÚlengthÚoutputÚheader_extraÚstart_extraÚ	end_extrarœ  Údiffs               rœ   Úgenerate_reprr²  ¹  sE  € ð7ÝÔ-Ñ/Ô/Ô7ˆˆøÝð 7ð 7ð 7Ý�RœY y°"Ñ5Ô5Ñ6Ô6ˆˆˆð7øøøà×)Ò)Ñ+Ô+×6Ò6Ñ8Ô8€LÝÐ>Ð>°Ð>Ñ>Ô>Ñ>Ô>Ðà˜!Ñ˜~Ò-Ð-ÝÐ%¥s¨6¡{¤{Ñ3Ô3ˆØ,�u˜v‘~Ð,Ð,Ð,ˆØ¥ F¡¤Ñ+ˆØÐj�c˜\¨QÑ.Ñ/Ðj°Ðj¸ÀÐPQÑ@QÐT`ÐcdÑTdÑ@dÑ9eÐjÐjÐjÑjˆØÐ)�c˜V‘nÐ)Ð)Ð)Ñ)ˆØÐ 0Ñ0°QÑ6ˆØÐ.Ñ.°1Ñ4¸ÐAQÑ8QÐUVÑ7VÑVˆ	Ø ð 	kð 	kˆDØÐj˜# Ñ-Ðj¨tÐj°S¸IÐHXÑ<XÕ[^Ð_cÑ[dÔ[dÑ<dÑ5eÐjÐjÐjÑjˆFˆFØÐ+˜ ™Ð+Ð+Ð+Ñ+ˆØˆà•�F‘”Ñ€Dð	ˆlð 	ð 	Ø�4˜1‘9Ñð	Ø%ð	Ø'*¨d°a©i¸$À¹(Ñ.BÑ'Cð	ð 	ð ð	ð 	ð 	ðs   ‚ ›,A
Á	A
úCollection[str]r0  úColumnNotFoundError | Nonec              óx   — t          | ¦  «                             |¦  «        x}rt          j        ||¦  «        S d S r¤   )r1  Ú
differencer7   Ú'from_missing_and_available_column_names)r+  r0  Úmissings      rœ   r3  r3  ×  sF   € õ �f‘+”+×(Ò(¨Ñ3Ô3Ð3€wð 
Ý"ÔJØ�Yñ
ô 
ð 	
ð ˆ4r›   c                óH  — t          | ¦  «        t          t          | ¦  «        ¦  «        k    rtddlm}  || ¦  «        }d„ |                     ¦   «         D ¦   «         }d                     d„ |                     ¦   «         D ¦   «         ¦  «        }d|› �}t          |¦  «        ‚d S )Nr   )ÚCounterc                ó&   — i | ]\  }}|d k    ¯||“ŒS )r[  rš   ©r‘  Úkr’  s      rœ   ú
<dictcomp>z1check_column_names_are_unique.<locals>.<dictcomp>æ  s#   € Ð@Ð@Ð@™t˜q !¸!¸aº%¸%�a˜¸%¸%¸%r›   rŒ  c              3  ó.   K  — | ]\  }}d |› d|› d�V — ŒdS )z
- 'z' z timesNrš   r¼  s      rœ   r“  z0check_column_names_are_unique.<locals>.<genexpr>ç  s:   è è € ÐLÐL±°°AÐ,˜aÐ,Ð, 1Ð,Ð,Ð,ÐLÐLÐLÐLÐLÐLr›   z"Expected unique column names, got:)rv  r1  Úcollectionsrº  r³  Újoinr8   )r­   rº  r(  Ú
duplicatesr0  s        rœ   Úcheck_column_names_are_uniquerÃ  á  s¬   € Ý
ˆ7�|„|•s�3˜w™<œ<Ñ(Ô(Ò(Ð(Ø'Ð'Ð'Ð'Ð'Ð'à�'˜'Ñ"Ô"ˆØ@Ð@ w§}¢}¡¤Ð@Ñ@Ô@ˆ
Ø�gŠgÐLÐL¸×9IÒ9IÑ9KÔ9KÐLÑLÔLÑLÔLˆØ8°3Ð8Ð8ˆÝ˜SÑ!Ô!Ð!ð )Ð(r›   Ú	time_unitú$TimeUnit | Iterable[TimeUnit] | NoneÚ	time_zoneú7str | timezone | Iterable[str | timezone | None] | Noneú%tuple[Set[TimeUnit], Set[str | None]]c                óÞ   — | €h d£n&t          | t          ¦  «        r| hnt          | ¦  «        }|€d hn7t          |t          t          f¦  «        rt          |¦  «        hnd„ |D ¦   «         }||fS )N>   ÚsÚmsÚnsÚusc                ó4   — h | ]}|�t          |¦  «        nd ’ŒS r¤   )r“   )r‘  Útzs     rœ   ú	<setcomp>z1_parse_time_unit_and_time_zone.<locals>.<setcomp>ü  s&   € ÐFÐFÐF°b˜˜�c�"‰gŒgˆg¨TÐFÐFÐFr›   )r*  r“   r1  r   )rÄ  rÆ  Ú
time_unitsÚ
time_zoness       rœ   Ú_parse_time_unit_and_time_zonerÓ  ì  s›   € ð Ðð 	 ÐÐÐõ �i¥Ñ%Ô%ðˆiˆ[ˆ[å�‰^Œ^ð ð Ðð 
ˆˆõ �i¥#¥x Ñ1Ô1ðG�c�)‰nŒnÐÐàFÐF¸IÐFÑFÔFð ð �zÐ!Ð!r›   r  rq   rè   rw   rÑ  úSet[TimeUnit]rÒ  úSet[str | None]c                ój   — t          | |j        ¦  «        o| j        |v o| j        |v pd|v o| j        d uS )NÚ*)r*  ÚDatetimerÄ  rÆ  )r  rè   rÑ  rÒ  s       rœ   Ú%dtype_matches_time_unit_and_time_zonerÙ    sR   € õ 	�5˜&œ/Ñ*Ô*ð 	
ØŒ_ 
Ð*ð	
ð ŒO˜zÐ)ð CØ�zÐ!ÐA e¤o¸TÐ&Aðr›   rª   c               ó   — | j         S r¤   ©r­   )r*  s    rœ   Úget_column_namesrÜ    s
   € ØŒ=Ðr›   Únamesc                ó*   ‡— ˆfd„| j         D ¦   «         S )Nc                ó   •— g | ]}|‰v¯|‘Œ	S rš   rš   )r‘  Úcol_namerÝ  s     €rœ   r»  z(exclude_column_names.<locals>.<listcomp>  s#   ø€ ÐLÐLÐL˜°hÀeÐ6KÐ6KˆHÐ6KÐ6KÐ6Kr›   rÛ  )r*  rÝ  s    `rœ   Úexclude_column_namesrá    s   ø€ ØLÐLÐLÐL U¤]ÐLÑLÔLÐLr›   úEvalNames[Any]c               ó   ‡ — dˆ fd„}|S )NÚ_framer   r¢   rª   c               ó   •— ‰S r¤   rš   )rä  rÝ  s    €rœ   rz  z$passthrough_column_names.<locals>.fn  s   ø€ Øˆr›   )rä  r   r¢   rª   rš   )rÝ  rz  s   ` rœ   Úpassthrough_column_namesræ    s(   ø€ ðð ð ð ð ð ð €Ir›   r   Ú	_SENTINELÚattrc                ó<   — t          | |t          ¦  «        t          uS r¤   )r   rç  )rÓ  rè  s     rœ   Ú_hasattr_staticrê     s   € Ý˜#˜t¥YÑ/Ô/µyÐ@Ð@r›   ú\CompliantDataFrame[CompliantSeriesT, CompliantExprT, NativeDataFrameT, ToNarwhalsT_co] | Anyú^TypeIs[CompliantDataFrame[CompliantSeriesT, CompliantExprT, NativeDataFrameT, ToNarwhalsT_co]]c                ó"   — t          | d¦  «        S )NÚ__narwhals_dataframe__©rê  r?  s    rœ   Úis_compliant_dataframerð  $  s   € õ ˜3Ð 8Ñ9Ô9Ð9r›   úJCompliantLazyFrame[CompliantExprT, NativeLazyFrameT, ToNarwhalsT_co] | AnyúLTypeIs[CompliantLazyFrame[CompliantExprT, NativeLazyFrameT, ToNarwhalsT_co]]c                ó"   — t          | d¦  «        S )NÚ__narwhals_lazyframe__rï  r?  s    rœ   Úis_compliant_lazyframerõ  /  s   € õ ˜3Ð 8Ñ9Ô9Ð9r›   ú'CompliantSeries[NativeSeriesT_co] | Anyú)TypeIs[CompliantSeries[NativeSeriesT_co]]c                ó"   — t          | d¦  «        S )NÚ__narwhals_series__rï  r?  s    rœ   rI  rI  5  s   € õ ˜3Ð 5Ñ6Ô6Ð6r›   c                óR   — t          | ¦  «        o| j                             ¦   «         S r¤   )rI  r  Ú
is_integerr?  s    rœ   rE  rE  ;  ó%   € õ ˜sÑ#Ô#Ð>¨¬	×(<Ò(<Ñ(>Ô(>Ð>r›   c                óR   — t          | ¦  «        o| j                             ¦   «         S r¤   )rI  r  Ú
is_booleanr?  s    rœ   rZ  rZ  A  rü  r›   ú'TypeIs[NamespaceAccessor[_FullContext]]c                óB   — t          | d¦  «        ot          | d¦  «        S )NrÁ   Ú	_accessorrï  r?  s    rœ   Ú_is_namespace_accessorr  G  s#   € õ ˜3 Ñ,Ô,ÐRµÀÀkÑ1RÔ1RÐRr›   rn  úTypeIs[_EagerAllowedImpl]c               óx   — | t           j        t           j        t           j        t           j        t           j        hv S )z.Return True if `impl` allows eager operations.)rÎ   r  r  r  r  r  ©rn  s    rœ   Úis_eager_allowedr  Q  s2   € àÝÔÝÔÝÔÝÔÝÔðð ð r›   úTypeIs[_LazyFrameCollectImpl]c               óL   — | t           j        t           j        t           j        hv S )z4Return True if `LazyFrame.collect(impl)` is allowed.)rÎ   r  r  r  r  s    rœ   Úcan_lazyframe_collectr	  \  s   € à•NÔ)­>Ô+@Å.ÔBXÐYÐYÐYr›   úTypeIs[_LazyAllowedImpl]c               ó¤   — | t           j        t           j        t           j        t           j        t           j        t           j        t           j        hv S )z1Return True if `DataFrame.lazy(impl)` is allowed.)rÎ   r  r  r  r  r  r  r  r  s    rœ   Úis_lazy_allowedr  a  s>   € àÝÔÝÔÝÔÝÔÝÔÝÔ&ÝÔðð ð r›   úTypeIs[SupportsNativeNamespace]c                ó"   — t          | d¦  «        S )Nrê  rï  r?  s    rœ   Úhas_native_namespacer  n  s   € Ý˜3Ð 6Ñ7Ô7Ð7r›   úTypeIs[ArrowStreamExportable]c                ó"   — t          | d¦  «        S )NÚ__arrow_c_stream__rï  r?  s    rœ   Úsupports_arrow_c_streamr  r  s   € Ý˜3Ð 4Ñ5Ô5Ð5r›   Úleft_onÚright_onÚsuffixúdict[str, str]c                ób   ‡ ‡— ˆ ˆfd„|D ¦   «         }t          t          ||d¬¦  «        ¦  «        S )aO  Remap join keys to avoid collisions.

    If left keys collide with the right keys, append the suffix.
    If there's no collision, let the right keys be.

    Arguments:
        left_on: Left keys.
        right_on: Right keys.
        suffix: Suffix to append to right keys.

    Returns:
        A map of old to new right keys.
    c              3  ó0   •K  — | ]}|‰v r|› ‰› �n|V — Œd S r¤   rš   )r‘  Úkeyr  r  s     €€rœ   r“  z(_remap_full_join_keys.<locals>.<genexpr>†  sL   øè è € ð ð Ø8;˜C 7˜N˜Nˆ3Ð�ÐÐÐ°ðð ð ð ð ð r›   F)r-  )rp  Úzip)r  r  r  Úright_keys_suffixeds   ` ` rœ   Ú_remap_full_join_keysr  v  sR   øø€ ð ð ð ð ð Ø?Gðñ ô Ðõ •�HÐ1¸%Ð@Ñ@Ô@ÑAÔAÐAr›   ÚdatarZ   Úcontextúpa.Tablec               óî   — t          d¦  «        rE|j        j                             d¦  «        j        }|j                             | |¬¦  «        j        S dt          | ¦  «        ›d�}t          |¦  «        ‚)z´Guards `ArrowDataFrame.from_arrow` w/ safer imports.

    Arguments:
        data: Object which implements `__arrow_c_stream__`.
        context: Initialized compliant object.
    r  )r  zB'pyarrow>=14.0.0' is required for `from_arrow` for object of type r”  )
r   rË   ræ   r+  rÁ   Ú
_dataframeÚ
from_arrowrº   r€  ÚModuleNotFoundError)r  r  rÌ  r0  s       rœ   Ú_into_arrow_tabler%  Œ  sw   € õ �ÑÔð AØÔÔ'×4Ò4°YÑ?Ô?ÔIˆØŒ}×'Ò'¨°bÐ'Ñ9Ô9Ô@Ð@Ø
mÕObÐcgÑOhÔOhÐ
mÐ
mÐ
m€CÝ
˜cÑ
"Ô
"Ð"r›   rz  c               ó   — | S )a²  Visual-only marker for unstable functionality.

    Arguments:
        fn: Function to decorate.

    Returns:
        Decorated function (unchanged).

    Examples:
        >>> @unstable
        ... def a_work_in_progress_feature(*args):
        ...     return args
        >>>
        >>> a_work_in_progress_feature.__name__
        'a_work_in_progress_feature'
        >>> a_work_in_progress_feature(1, 2, 3)
        (1, 2, 3)
    rš   )rz  s    rœ   Úunstabler'  œ  s	   € ð& €Ir›   Úformatc                ó<   ‡ — t          ˆ fd„dD ¦   «         ¦  «         S )a¹  Determines if a datetime format string is 'naive', i.e., does not include timezone information.

    A format is considered naive if it does not contain any of the following

    - '%s': Unix timestamp
    - '%z': UTC offset
    - 'Z' : UTC timezone designator

    Arguments:
        format: The datetime format string to check.

    Returns:
        bool: True if the format is naive (does not include timezone info), False otherwise.
    c              3  ó    •K  — | ]}|‰v V — Œ	d S r¤   rš   )r‘  Úxr(  s     €rœ   r“  z#_is_naive_format.<locals>.<genexpr>Á  s'   øè è € Ð:Ð: 1�1˜�;Ð:Ð:Ð:Ð:Ð:Ð:r›   )z%sz%zÚZrf  )r(  s   `rœ   Ú_is_naive_formatr-  ²  s,   ø€ õ Ð:Ð:Ð:Ð:Ð(9Ð:Ñ:Ô:Ñ:Ô:Ð:Ð:r›   c                  óX   — e Zd ZdZddd„Zdd	„Zdd„Z	 ddd„Zdd„Ze	d d„¦   «         Z
dS )!Únot_implementeda†  Mark some functionality as unsupported.

    Arguments:
        alias: optional name used instead of the data model hook [`__set_name__`].

    Returns:
        An exception-raising [descriptor].

    Notes:
        - Attribute/method name *doesn't* need to be declared twice
        - Allows different behavior when looked up on the class vs instance
        - Allows us to use `isinstance(...)` instead of monkeypatching an attribute to the function

    Examples:
        >>> class Thing:
        ...     def totally_ready(self) -> str:
        ...         return "I'm ready!"
        ...
        ...     not_ready_yet = not_implemented()
        >>>
        >>> thing = Thing()
        >>> thing.totally_ready()
        "I'm ready!"
        >>> thing.not_ready_yet()
        Traceback (most recent call last):
            ...
        NotImplementedError: 'not_ready_yet' is not implemented for: 'Thing'.
        ...
        >>> isinstance(Thing.not_ready_yet, not_implemented)
        True

    [`__set_name__`]: https://docs.python.org/3/reference/datamodel.html#object.__set_name__
    [descriptor]: https://docs.python.org/3/howto/descriptor.html
    NÚaliasú
str | Noner¢   rØ   c               ó   — || _         d S r¤   )Ú_alias)r¦   r0  s     rœ   Ú__init__znot_implemented.__init__è  s   € ð #(ˆŒˆˆr›   r“   c                óP   — dt          | ¦  «        j        › d| j        › d| j        › �S )Nú<z>: r”  )r˜  r–   Ú_name_ownerÚ_namer¬   s    rœ   Ú__repr__znot_implemented.__repr__í  s.   € ØJ•4˜‘:”:Ô&ÐJÐJ¨4Ô+;ÐJÐJ¸d¼jÐJÐJÐJr›   r    rš  Únamec                ó:   — |j         | _        | j        p|| _        d S r¤   )r–   r7  r3  r8  ©r¦   r    r:  s      rœ   Ú__set_name__znot_implemented.__set_name__ð  s   € à %¤ˆÔØœ+Ð-¨ˆŒ
ˆ
ˆ
r›   rŸ   ú_T | Literal['raise'] | Noneútype[_T] | Noner   c               ó¸   — |€| S t          |dt          j        ¦  «        }|t          j        urt          |¦  «        }n| j        }t          | j        |¦  «         d S )NrÏ   )rÌ  rÎ   r   Úreprr7  Ú_raise_not_implemented_errorr8  )r¦   rŸ   r    rV  Úwhos        rœ   r§   znot_implemented.__get__õ  sd   € ð Ðð ˆKõ ! Ð+<½nÔ>TÑUÔUˆØ¥Ô!7Ð7Ð7Ý�~Ñ&Ô&ˆCˆCàÔ"ˆCÝ$ T¤Z°Ñ5Ô5Ð5Øˆtr›   rr  r~  c                ó,   — |                       d¦  «        S )NÚraise)r§   )r¦   rr  r~  s      rœ   Ú__call__znot_implemented.__call__  s   € ð �|Š|˜GÑ$Ô$Ð$r›   Úmessager?   rA   c               óF   —  | ¦   «         } t          |¦  «        |¦  «        S )zÛAlt constructor, wraps with `@deprecated`.

        Arguments:
            message: **Static-only** deprecation message, emitted in an IDE.

        [descriptor]: https://docs.python.org/3/howto/descriptor.html
        )r#   )r  rG  rÓ  s      rœ   r#   znot_implemented.deprecated  s'   € ð ˆc‰eŒeˆØ"�z˜'Ñ"Ô" 3Ñ'Ô'Ð'r›   r¤   )r0  r1  r¢   rØ   rT  )r    rš  r:  r“   r¢   rØ   )rŸ   r>  r    r?  r¢   r   )rr  r   r~  r   r¢   r   )rG  r?   r¢   rA   )r–   r—   r˜   r¼   r4  r9  r=  r§   rF  rU  r#   rš   r›   rœ   r/  r/  Ä  s¸   € € € € € ð!ð !ðF(ð (ð (ð (ð (ð
Kð Kð Kð Kð.ð .ð .ð .ð PTðð ð ð ð ð$%ð %ð %ð %ð
 ð	(ð 	(ð 	(ñ „[ð	(ð 	(ð 	(r›   r/  ÚwhatrC  ÚNotImplementedErrorc               ó0   — | ›d|›d�}t          |¦  «        ‚)Nz is not implemented for: z†.

If you would like to see this functionality in `narwhals`, please open an issue at: https://github.com/narwhals-dev/narwhals/issues)rJ  )rI  rC  r0  s      rœ   rB  rB    s:   € àð 	Sð 	S¨Cð 	Sð 	Sð 	Sð õ
 ˜cÑ
"Ô
"Ð"r›   c                  ó†   — e Zd ZU dZded<   ded<   ded<   	 eddd„¦   «         Zedd„¦   «         Zdd„Z	d d„Z
d!d„Zd"d„ZdS )#Úrequiresaâ  Method decorator for raising under certain constraints.

    Attributes:
        _min_version: Minimum backend version.
        _hint: Optional suggested alternative.

    Examples:
        >>> class SomeBackend:
        ...     _implementation = Implementation.PYARROW
        ...     _backend_version = 20, 0, 0
        ...
        ...     @requires.backend_version((9000, 0, 0))
        ...     def really_complex_feature(self) -> str:
        ...         return "hello"
        >>> backend = SomeBackend()
        >>> backend.really_complex_feature()
        Traceback (most recent call last):
            ...
        NotImplementedError: `really_complex_feature` is only available in 'pyarrow>=9000.0.0', found version '20.0.0'.
    rÄ   Ú_min_versionr“   Ú_hintÚ_wrapped_namerŒ  ÚhintÚminimumr¢   rA   c               óL   — |                       | ¦  «        }||_        ||_        |S )z½Method decorator for raising below a minimum `_backend_version`.

        Arguments:
            minimum: Minimum backend version.
            hint: Optional suggested alternative.
        )Ú__new__rN  rO  )r  rR  rQ  rÓ  s       rœ   rS  zrequires.backend_version@  s)   € ð �kŠk˜#ÑÔˆØ"ˆÔØˆŒ	Øˆ
r›   rS  c               ó@   — d                      d„ | D ¦   «         ¦  «        S )Nr”  c              3  ó   K  — | ]}|› V — Œd S r¤   rš   )r‘  Úds     rœ   r“  z,requires._unparse_version.<locals>.<genexpr>O  s$   è è € Ð8Ð8 1˜1˜Ð8Ð8Ð8Ð8Ð8Ð8r›   )rÁ  rR  s    rœ   Ú_unparse_versionzrequires._unparse_versionM  s#   € à�xŠxÐ8Ð8¨Ð8Ñ8Ô8Ñ8Ô8Ð8r›   r!  rG   rØ   c               ó>   — d| j         vr|› d| j         › �| _         d S d S ©Nr”  )rP  )r¦   r!  s     rœ   Ú_qualify_accessor_namezrequires._qualify_accessor_nameQ  s7   € à�dÔ(Ð(Ð(Ø$*Ð!AÐ!A¨TÔ-?Ð!AÐ!AˆDÔÐÐð )Ð(r›   rŸ   r³   útuple[tuple[int, ...], str]c               óž   — t          |¦  «        r"|                      |j        ¦  «         |j        }n|}|j        t          |j        ¦  «        fS r¤   )r  r[  r  rÁ   rÆ   r“   rÏ   )r¦   rŸ   rÁ   s      rœ   Ú_unwrap_contextzrequires._unwrap_contextV  sQ   € Ý! (Ñ+Ô+ð 	!Ø×'Ò'¨Ô(:Ñ;Ô;Ð;Ø Ô*ˆIˆIà ˆIØÔ)­3¨yÔ/HÑ+IÔ+IÐIÐIr›   c          	     ó  — |                       |¦  «        \  }}|| j        k    rd S |                      | j        ¦  «        }|                      |¦  «        }d| j        › d|› d|› d|›d�	}| j        r|› d| j        › �}t          |¦  «        ‚)Nú`z` is only available in 'z>=z', found version r”  ú
)r^  rN  rX  rP  rO  rJ  )r¦   rŸ   rp  r'  rR  Úfoundr0  s          rœ   Ú_ensure_versionzrequires._ensure_version^  s¯   € Ø×/Ò/°Ñ9Ô9Ñˆ�Ø�dÔ'Ò'Ð'ØˆFØ×'Ò'¨Ô(9Ñ:Ô:ˆØ×%Ò% gÑ.Ô.ˆØm�$Ô$ÐmÐm¸gÐmÐmÈÐmÐmÐchÐmÐmÐmˆØŒ:ð 	)ØÐ(Ð(˜DœJÐ(Ð(ˆCÝ! #Ñ&Ô&Ð&r›   rz  ú_Method[_IntoContextT, P, R]c               óZ   ‡ ‡— ‰j         ‰ _        t          ‰¦  «        d
ˆˆ fd	„¦   «         }|S )NrŸ   r´   rr  r}  r~  r  r¢   rŽ   c                óF   •— ‰                      | ¦  «          ‰| g|¢R i |¤ŽS r¤   )rc  )rŸ   rr  r~  rz  r¦   s      €€rœ   r‚  z"requires.__call__.<locals>.wrappern  s7   ø€ à× Ò  Ñ*Ô*Ð*Ø�2�hÐ. Ð.Ð.Ð.¨Ð.Ð.Ð.r›   )rŸ   r´   rr  r}  r~  r  r¢   rŽ   )r–   rP  r   )r¦   rz  r‚  s   `` rœ   rF  zrequires.__call__i  sJ   øø€ ð  œ[ˆÔå	ˆr‰Œð	/ð 	/ð 	/ð 	/ð 	/ð 	/ñ 
Œð	/ð
 ˆr›   N)rŒ  )rQ  r“   rR  rÄ   r¢   rA   )rS  rÄ   r¢   r“   )r!  rG   r¢   rØ   )rŸ   r³   r¢   r\  )rŸ   r³   r¢   rØ   )rz  rd  r¢   rd  )r–   r—   r˜   r¼   r™   rU  rS  ÚstaticmethodrX  r[  r^  rc  rF  rš   r›   rœ   rM  rM  "  så   € € € € € € ðð ð* "Ð!Ð!Ñ!Ø€J€J�JØÐÐÑðð
 ð
ð 
ð 
ð 
ñ „[ð
ð ð9ð 9ð 9ñ „\ð9ðBð Bð Bð Bð
Jð Jð Jð Jð	'ð 	'ð 	'ð 	'ðð ð ð ð ð r›   rM  Ú	str_slicer„   ú"tuple[int | None, int | None, Any]c                ó¬   — | j         �|                     | j         ¦  «        nd }| j        �|                     | j        ¦  «        dz   nd }| j        }|||fS )Nr[  )rõ  rÄ  rö  r÷  )rh  r­   rõ  rö  r÷  s        rœ   Úconvert_str_slice_to_int_slicerk  w  s\   € ð /8¬oÐ.IˆG�MŠM˜)œ/Ñ*Ô*Ð*Èt€EØ09´Ð0Jˆ7�=Š=˜œÑ(Ô(¨1Ñ,Ð,ÐPT€DØŒ>€DØ�4˜ÐÐr›   Ú	tp_parentúCallable[P, R1]ú<Callable[[_Constructor[_T, P, R2]], _Constructor[_T, P, R2]]c               ó   ‡ — dˆ fd„}|S )zÍSteal the class-level docstring from parent and attach to child `__init__`.

    Returns:
        Decorated constructor.

    Notes:
        - Passes static typing (mostly)
        - Passes at runtime
    Ú
init_childú_Constructor[_T, P, R2]r¢   c               óÜ   •— | j         dk    r8t          t          ‰¦  «        t          ¦  «        rt          ‰¦  «        | _        | S dt
          j         › d| j        ›d‰›�}t          |¦  «        ‚)Nr4  z`@zL` is only allowed to decorate an `__init__` with a class-level doc.
Method: z	
Parent: )r–   r²  r˜  r   r¼   Úinherit_docr˜   r�  )rp  r0  rl  s     €rœ   rƒ  zinherit_doc.<locals>.decorate�  s€   ø€ ØÔ *Ò,Ð,µ½DÀ¹O¼OÍTÑ1RÔ1RÐ,Ý!'¨	Ñ!2Ô!2ˆJÔØÐð%•Ô%ð %ð %Ø!Ô.ð%ð %à ð%ð %ð 	õ
 ˜‰nŒnÐr›   )rp  rq  r¢   rq  rš   )rl  rƒ  s   ` rœ   rs  rs  €  s(   ø€ ð	ð 	ð 	ð 	ð 	ð 	ð €Or›   úobject | type[Any]c               ó´   — t          | t          ¦  «        r| nt          | ¦  «        }|j        dk    r|j        nd}|› d|j        › �                     d¦  «        S )NÚbuiltinsrŒ  r”  )r*  r˜  r—   r–   Úlstrip)rÓ  r\  Úmodules      rœ   r€  r€  ›  s[   € Ý˜3¥Ñ%Ô%Ð	4ˆˆ­4°©9¬9€BØ œm¨zÒ9Ð9ˆRŒ]ˆ]¸r€FØÐ$Ð$�r”{Ð$Ð$×+Ò+¨CÑ0Ô0Ð0r›   rŠ  Úvalid_typesú	type[Any]r‹  c              óŒ  — t          | |¦  «        s³d                     d„ |D ¦   «         ¦  «        }d|›dt          | ¦  «        ›�}|rnd}t          | ¦  «        }t	          |¦  «        dk    rt          | ¦  «        › d�}|› |› d�}d	t	          |¦  «        z  d
t	          |¦  «        z  z   }|› d|› |› d|› �}t          |¦  «        ‚dS )aš  Validate that an object is an instance of one or more specified types.

    Parameters:
        obj: The object to validate.
        *valid_types: One or more valid types that `obj` is expected to match.
        param_name: The name of the parameter being validated.
            Used to improve error message clarity.

    Raises:
        TypeError: If `obj` is not an instance of any of the provided `valid_types`.

    Examples:
        >>> ensure_type(42, int, float)
        >>> ensure_type("hello", str)

        >>> ensure_type("hello", int, param_name="test")
        Traceback (most recent call last):
            ...
        TypeError: Expected 'int', got: 'str'
            test='hello'
                 ^^^^^^^
        >>> import polars as pl
        >>> import pandas as pd
        >>> df = pl.DataFrame([[1], [2], [3], [4], [5]], schema=[*"abcde"])
        >>> ensure_type(df, pd.DataFrame, param_name="df")
        Traceback (most recent call last):
            ...
        TypeError: Expected 'pandas.DataFrame', got: 'polars.dataframe.frame.DataFrame'
            df=polars.dataframe.frame.DataFrame(...)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    z | c              3  ó4   K  — | ]}t          |¦  «        V — Œd S r¤   )r€  )r‘  r\  s     rœ   r“  zensure_type.<locals>.<genexpr>Â  s+   è è € ÐLÐL¸"Õ1°"Ñ5Ô5ÐLÐLÐLÐLÐLÐLr›   z	Expected z, got: z    é(   z(...)ú=rŸ  ú^ra  N)r*  rÁ  r€  rA  rv  r�  )	rÓ  r‹  ry  Útp_namesr0  Úleft_padr…  ÚassignÚ	underlines	            rœ   rŒ  rŒ  ¡  sú   € õ@ �c˜;Ñ'Ô'ð Ø—:’:ÐLÐLÀÐLÑLÔLÑLÔLˆØI˜(ÐIÐIÕ-@ÀÑ-EÔ-EÐIÐIˆØð 	7ØˆHÝ�s‘)”)ˆCÝ�3‰xŒx˜"Š}ˆ}Ý,¨SÑ1Ô1Ð8Ð8Ð8�Ø Ð/ *Ð/Ð/Ð/ˆFØ�s 6™{œ{Ñ*¨sµS¸±X´X©~Ñ>ˆIØÐ6Ð6˜FÐ6 CÐ6Ð6¨9Ð6Ð6ˆCÝ˜‰nŒnÐðð r›   c                  ó*   — e Zd ZdZdd„Zdd„Zdd
„ZdS )Ú_DeferredIterablezLStore a callable producing an iterable to defer collection until we need it.Ú	into_iterúCallable[[], Iterable[_T]]r¢   rØ   c               ó   — || _         d S r¤   ©Ú
_into_iter)r¦   r†  s     rœ   r4  z_DeferredIterable.__init__Ò  s   € Ø6?ˆŒˆˆr›   úIterator[_T]c              #  ó>   K  — |                       ¦   «         E d {V —† d S r¤   r‰  r¬   s    rœ   Ú__iter__z_DeferredIterable.__iter__Õ  s.   è è € Ø—?’?Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$r›   útuple[_T, ...]c                óv   — |                       ¦   «         }t          |t          ¦  «        r|nt          |¦  «        S r¤   )rŠ  r*  r{  )r¦   Úits     rœ   Úto_tuplez_DeferredIterable.to_tupleØ  s0   € à�_Š_ÑÔˆÝ ¥EÑ*Ô*Ð9ˆrˆrµ°b±	´	Ð9r›   N)r†  r‡  r¢   rØ   )r¢   r‹  )r¢   rŽ  )r–   r—   r˜   r¼   r4  r�  r‘  rš   r›   rœ   r…  r…  Ï  sZ   € € € € € ØVÐVð@ð @ð @ð @ð%ð %ð %ð %ð:ð :ð :ð :ð :ð :r›   r…  é@   Únestedúattrgetter[Any]c                óZ   — |rd                      | g|¢R ¦  «        n| }t          |¦  «        S rZ  )rÁ  r   )rè  r“  r:  s      rœ   Údeep_attrgetterr–  Þ  s3   € à(.Ð8ˆ3�8Š8�T�O˜F�O�OÑ$Ô$Ð$°D€DÝ�dÑÔÐr›   Úname_1c                ó.   —  t          |g|¢R Ž | ¦  «        S )z+Perform a nested attribute lookup on `obj`.)r–  )rÓ  r—  r“  s      rœ   Údeep_getattrr™  ä  s"   € à+�?˜6Ð+ FÐ+Ð+Ð+¨CÑ0Ô0Ð0r›   c                  ó   — e Zd ZdS )Ú	CompliantN)r–   r—   r˜   rš   r›   rœ   r›  r›  é  s   € € € € € à€3r›   r›  c                  ó*   — e Zd ZdZedd„¦   «         ZdS )ÚNarwhalsa¬  Minimal *Narwhals-level* protocol.

    Provides access to a compliant object:

        obj: Narwhals[NativeT_co]]
        compliant: Compliant[NativeT_co] = obj._compliant

    Which itself exposes:

        implementation: Implementation = compliant.implementation
        native: NativeT_co = compliant.native

    This interface is used for revealing which `Implementation` member is associated with **either**:
    - One or more [nominal] native type(s)
    - One or more [structural] type(s)
      - where the true native type(s) are [assignable to] *at least* one of them

    These relationships are defined in the `@overload`s of `_Implementation.__get__(...)`.

    [nominal]: https://typing.python.org/en/latest/spec/glossary.html#term-nominal
    [structural]: https://typing.python.org/en/latest/spec/glossary.html#term-structural
    [assignable to]: https://typing.python.org/en/latest/spec/glossary.html#term-assignable
    r¢   úCompliant[NativeT_co]c                ó   — d S r¤   rš   r¬   s    rœ   rû  zNarwhals._compliant  s   € Ø36°3r›   N)r¢   rž  )r–   r—   r˜   r¼   r®   rû  rš   r›   rœ   r�  r�  î  s2   € € € € € ðð ð0 Ø6Ð6Ð6ñ „XØ6Ð6Ð6r›   r�  c                  óŠ  — e Zd ZdZd;d„Zed<d„¦   «         Zed=d„¦   «         Zed>d„¦   «         Zed?d„¦   «         Zed@d„¦   «         ZedAd„¦   «         ZedBd„¦   «         ZedCd"„¦   «         ZedDd%„¦   «         ZedEd(„¦   «         ZedFd+„¦   «         ZedGd.„¦   «         ZedHd1„¦   «         ZedId4„¦   «         ZedJd7„¦   «         ZdKd9„Zd:S )LÚ_ImplementationzµDescriptor for matching an opaque `Implementation` on a generic class.

    Based on [pyright comment](https://github.com/microsoft/pyright/issues/3071#issuecomment-1043978070)
    r    rz  r:  r“   r¢   rØ   c                ó   — || _         d S r¤   )r–   r<  s      rœ   r=  z_Implementation.__set_name__  s   € Ø!ˆŒˆˆr›   rŸ   úNarwhals[NativePolars]r   ri   c                ó   — d S r¤   rš   r¥   s      rœ   r§   z_Implementation.__get__  ó   € ØTWÐTWr›   úNarwhals[NativePandas]rg   c                ó   — d S r¤   rš   r¥   s      rœ   r§   z_Implementation.__get__  r¥  r›   úNarwhals[NativeModin]rf   c                ó   — d S r¤   rš   r¥   s      rœ   r§   z_Implementation.__get__  ó   € ØRUÐRUr›   úNarwhals[NativeCuDF]r_   c                ó   — d S r¤   rš   r¥   s      rœ   r§   z_Implementation.__get__  ó   € ØPSÐPSr›   úNarwhals[NativePandasLike]rh   c                ó   — d S r¤   rš   r¥   s      rœ   r§   z_Implementation.__get__  s	   € ð ˜#r›   úNarwhals[NativeArrow]r^   c                ó   — d S r¤   rš   r¥   s      rœ   r§   z_Implementation.__get__   rª  r›   ú3Narwhals[NativePolars | NativeArrow | NativePandas]ú&_PolarsImpl | _PandasImpl | _ArrowImplc                ó   — d S r¤   rš   r¥   s      rœ   r§   z_Implementation.__get__"  s	   € ð 25°r›   úNarwhals[NativeDuckDB]ra   c                ó   — d S r¤   rš   r¥   s      rœ   r§   z_Implementation.__get__&  r¥  r›   úNarwhals[NativeSQLFrame]rl   c                ó   — d S r¤   rš   r¥   s      rœ   r§   z_Implementation.__get__(  s	   € ð ˜r›   úNarwhals[NativeDask]r`   c                ó   — d S r¤   rš   r¥   s      rœ   r§   z_Implementation.__get__,  r­  r›   úNarwhals[NativeIbis]rc   c                ó   — d S r¤   rš   r¥   s      rœ   r§   z_Implementation.__get__.  r­  r›   ú.Narwhals[NativePySpark | NativePySparkConnect]ú"_PySparkImpl | _PySparkConnectImplc                ó   — d S r¤   rš   r¥   s      rœ   r§   z_Implementation.__get__0  s	   € ð .1¨Sr›   útype[Narwhals[Any]]rA   c                ó   — d S r¤   rš   r¥   s      rœ   r§   z_Implementation.__get__5  s   € ØKNÈ3r›   úDataFrame[Any] | Series[Any]rb   c                ó   — d S r¤   rš   r¥   s      rœ   r§   z_Implementation.__get__7  r¢  r›   úLazyFrame[Any]rd   c                ó   — d S r¤   rš   r¥   s      rœ   r§   z_Implementation.__get__;  s   € ØQTÐQTr›   úNarwhals[Any] | Nonec                ó"   — |€| n|j         j        S r¤   )rû  rÏ   r¥   s      rœ   r§   z_Implementation.__get__=  s   € ØÐ'ˆtˆt¨XÔ-@Ô-PÐPr›   N)r    rz  r:  r“   r¢   rØ   )rŸ   r£  r    r   r¢   ri   )rŸ   r¦  r    r   r¢   rg   )rŸ   r¨  r    r   r¢   rf   )rŸ   r«  r    r   r¢   r_   )rŸ   r®  r    r   r¢   rh   )rŸ   r°  r    r   r¢   r^   )rŸ   r²  r    r   r¢   r³  )rŸ   rµ  r    r   r¢   ra   )rŸ   r·  r    r   r¢   rl   )rŸ   r¹  r    r   r¢   r`   )rŸ   r»  r    r   r¢   rc   )rŸ   r½  r    r   r¢   r¾  )rŸ   rØ   r    rÀ  r¢   rA   )rŸ   rÂ  r    r   r¢   rb   )rŸ   rÄ  r    r   r¢   rd   )rŸ   rÆ  r    r   r¢   r   )r–   r—   r˜   r¼   r=  r   r§   rš   r›   rœ   r¡  r¡    sÊ  € € € € € ðð ð
"ð "ð "ð "ð ØWÐWÐWñ „XØWØØWÐWÐWñ „XØWØØUÐUÐUñ „XØUØØSÐSÐSñ „XØSØðð ð ñ „Xðð ØUÐUÐUñ „XØUØð5ð 5ð 5ñ „Xð5ð ØWÐWÐWñ „XØWØðð ð ñ „Xðð ØSÐSÐSñ „XØSØØSÐSÐSñ „XØSØð1ð 1ð 1ñ „Xð1ð ØNÐNÐNñ „XØNØð ð  ð  ñ „Xð ð ØTÐTÐTñ „XØTðQð Qð Qð Qð Qð Qr›   r¡  Útblúpa.Table | pa.RecordBatchReaderc                ól   — dd l }t          | |j        ¦  «        r|j                             | ¦  «        S | S rC  )r  r*  ÚRecordBatchReaderÚTableÚfrom_batches)rÈ  Úpas     rœ   Úto_pyarrow_tablerÏ  A  s>   € ØÐÐÐå�#�rÔ+Ñ,Ô,ð *ØŒx×$Ò$ SÑ)Ô)Ð)Ø€Jr›   Úwin32Úsourcerx   c               óh   — t          | t          ¦  «        r| nt          t          | ¦  «        ¦  «        S r¤   )r*  r“   r   ©rÑ  s    rœ   Únormalize_pathrÔ  K  s)   € Ý# F­CÑ0Ô0ÐGˆvˆvµc½$¸v¹,¼,Ñ6GÔ6GÐGr›   c               óD   — t          | ¦  «                             ¦   «         S r¤   )r   Úas_posixrÓ  s    rœ   rÔ  rÔ  T  s   € Ý�F‰|Œ|×$Ò$Ñ&Ô&Ð&r›   r  úbool | Iterable[bool]Ún_matchúSequence[bool]c                óV   — t          | t          ¦  «        r| f|z  nt          | ¦  «        S )zÔEnsure the given bool or sequence of bools is the correct length.

    Stolen from https://github.com/pola-rs/polars/blob/b8bfb07a4a37a8d449d6d1841e345817431142df/py-polars/polars/_utils/various.py#L580-L594
    )r*  r3  r{  )r  rØ  s     rœ   Úextend_boolrÛ  X  s+   € õ ",¨Eµ4Ñ!8Ô!8ÐJˆEˆ8�gÑÐ½eÀE¹l¼lÐJr›   c                  ó   — e Zd ZdZdd„ZdS )Ú
_NoDefaultÚ
NO_DEFAULTr¢   r“   c                ó   — dS )Nz<no_default>rš   r¬   s    rœ   r9  z_NoDefault.__repr__h  s   € Øˆ~r›   NrT  )r–   r—   r˜   Ú
no_defaultr9  rš   r›   rœ   rÝ  rÝ  c  s/   € € € € € ð €Jðð ð ð ð ð r›   rÝ  )rV  rÎ   r¢   r3  )r1  r“   r¢   r<   )rV  rÎ   r¢   rÄ   )rr  r   r¢   rs  )ry  r   r¢   r   )ry  r}  r¢   r3  )r…  r†  r¢   r‡  )rp  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©  )r—  rŸ  r™  r¨  r¢   r«  )r—  r   r™  r­  r¢   r®  )r—  r   r™  r   r¢   r3  )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î  )rò  ró  r  r   r¢   r3  )rÓ  r‡   rr  r3  rø  rù  r¢   r‡   )rÿ  rŽ  r   r   r¢   r  )rÿ   r  r¢   r3  )r  )r  rŽ  r­   r   r!  r“   r¢   r“   )r*  r©   r+  r,  r-  r3  r¢   r.  )r7  r8  r¢   r9  )rÓ  r   r¢   r<  )rÓ  r   r¢   rA  )rÓ  r8  r¢   rG  )rÓ  r   r¢   rK  )rÓ  r   r¢   rO  )rÓ  r   r¢   rS  )rÓ  r   r¢   rU  )rÓ  r   r¢   rX  )rÓ  r   r\  rš  r¢   r]  )r`  ra  r¢   rb  )rÓ  r   r\  rš  r¢   r9  )rÓ  r   r¢   rn  )r-  rr  rà  rr  rs  r3  r¢   r3  )rv  r“   rw  r3  r¢   rx  )r…  rŽ  r†  r‡  r¢   rˆ  )
rŽ  r‡  r�  r�  r‘  rŽ  r’  r3  r¢   rŽ  )r–  r“   r—  r“   r¢   r“   )r+  r³  r0  r³  r¢   r´  )r­   r³  r¢   rØ   )rÄ  rÅ  rÆ  rÇ  r¢   rÈ  )
r  rq   rè   rw   rÑ  rÔ  rÒ  rÕ  r¢   r3  )r*  r©   r¢   rª   )r*  r©   rÝ  r   r¢   rª   )rÝ  rª   r¢   râ  )rÓ  r   rè  r“   r¢   r3  )rÓ  rë  r¢   rì  )rÓ  rñ  r¢   rò  )rÓ  rö  r¢   r÷  )rÓ  r³   r¢   rÿ  )rn  rÎ   r¢   r  )rn  rÎ   r¢   r  )rn  rÎ   r¢   r
  )rÓ  r   r¢   r  )rÓ  r   r¢   r  )r  r³  r  r³  r  r“   r¢   r  )r  rZ   r  rÑ   r¢   r   )rz  rŒ   r¢   rŒ   )r(  r“   r¢   r3  )rI  r“   rC  r“   r¢   rJ  )rh  r„   r­   rª   r¢   ri  )rl  rm  r¢   rn  )rÓ  rt  r¢   r“   )rÓ  r   ry  rz  r‹  r“   r¢   rØ   )rè  r“   r“  r“   r¢   r”  )rÓ  r   r—  r“   r“  r“   r¢   r   )rÈ  rÉ  r¢   r   )rÑ  rx   r¢   r“   )r  r×  rØ  rŽ  r¢   rÙ  ()  Ú
__future__r   r¢  r�  ÚsysÚcollections.abcr   r   r   r   r   r	   r
   Údatetimer   Úenumr   r   Ú	functoolsr   r   r   Úimportlib.utilr   Úinspectr   r   Úoperatorr   Úpathlibr   Úsecretsr   Útypingr   r   r   r   r   r   r   r   r   Únarwhals._enumr    Únarwhals._exceptionsr!   Únarwhals._typing_compatr"   r#   Únarwhals.dependenciesr$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   Únarwhals.exceptionsr7   r8   r9   r:   r;   Útypesr<   r=   r>   r  rƒ  r  r„  r  rÎ  Útyping_extensionsr?   r@   rA   rB   Únarwhals._compliantrC   rD   rE   Ú!narwhals._compliant.any_namespacerF   Únarwhals._compliant.typingrG   rH   rI   rJ   rã   rL   Únarwhals._nativerM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   Únarwhals._translaterY   rZ   r[   Únarwhals._typingr\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rð   rn   ro   r±  rq   rü   rs   Únarwhals.typingrt   ru   rv   rw   rx   ry   rz   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¶   r¸   r¿   rÃ   rÉ   rÍ   rÑ   rÕ   r×   rÊ   rÎ   rZ  r  r  r  r  r  r  r  r  r  r  r  re  r.  r/  rS  rx  r|  rw  r‰  rm  rž  r½  rÒ  rÙ  rç  rí  rñ  rë  rþ  r  r  r%  r$  r6  r;  r@  rF  rJ  rN  rR  rD  rW  r[  r_  rh  rm  rq  ru  r„  r�  r•  r²  r3  rÃ  rÓ  rÙ  rÜ  rá  ræ  Úobjectrç  rê  rð  rõ  rI  rE  rZ  r  r  r	  r  r  r  r  r%  r'  r-  r/  rB  rM  rk  rs  r€  rŒ  r…  r–  r™  r›  r�  r¡  rÏ  ÚplatformrÔ  rÛ  rÝ  rà  rÞ  r˜  rM  rš   r›   rœ   ú<module>rý     së  ðØ "Ð "Ð "Ð "Ð "Ð "Ð "à 	€	€	€	Ø 	€	€	€	Ø 
€
€
€
ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ð Ð Ø -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ø $Ð $Ð $Ð $Ð $Ð $Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð &Ð %Ð %Ð %Ð %Ð %Ø :Ð :Ð :Ð :Ð :Ð :Ø <Ð <Ð <Ð <Ð <Ð <Ð <Ð <ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð*ð ð ð ð ð ð ð ð ð ð ð ð ñ d0Ø#Ð#Ð#Ð#Ð#Ð#Ø Ð Ð Ð Ð Ð Ø-Ð-Ð-Ð-Ð-Ð-Ð-Ð-àÐÐÐØÐÐÐØÐÐÐØHÐHÐHÐHÐHÐHÐHÐHÐHÐHÐHÐHàVÐVÐVÐVÐVÐVÐVÐVÐVÐVØCÐCÐCÐCÐCÐCðð ð ð ð ð ð ð ð ð ð ð ð .Ð-Ð-Ð-Ð-Ð-ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ZÐYÐYÐYÐYÐYÐYÐYÐYÐYðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð& 8Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ø%Ð%Ð%Ð%Ð%Ð%Ø&Ð&Ð&Ð&Ð&Ð&ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð* %(ÐÐ'Ð'Ð'Ñ'à�WØ 	¨#¤°¸3´Ñ ?À&ÈÄ+Ñ Mðñ ô €Nð ˆ'�%‰.Œ.€CØ
ˆ'�%‰.Œ.€CØ
ˆ'�%‰.Œ.€CØ
ˆ'�%Ð3Ð
4Ñ
4Ô
4€CØˆ	�#‰Œ€AØˆ�‰Œ€AØ	ˆ�‰Œ€BØ	ˆ�‰Œ€Bðð ð ð ð ˜8ñ ô ð ðRð Rð Rð Rð R�xñ Rô Rð Rð0ð 0ð 0ð 0ð 0˜ñ 0ô 0ð 0ð
 €WˆT�]„]€ØˆW�\¨TÐ2Ñ2Ô2€
Ø�˜°4Ð8Ñ8Ô8€ØJ€Ð JÐ JÐ JÑ JØ�˜¨|Ð<Ñ<Ô<€ØA€Ð AÐ AÐ AÑ AØ<€Ð <Ð <Ð <Ñ <ðð ð ð ð �H˜ZÔ(ñ ô ð ðð ð ð ð �x Ô.ñ ô ð ðð ð ð ð ˜Hñ ô ð ð-ð -ð -ð -ð -�Xñ -ô -ð -ð
Jð Jð Jð Jð J˜Hñ Jô Jð Jð
ð ð ð ð Ð+¨^¸Xñ ô ð ðð ð ð ð Ð(Ð*?Àñ ô ð ð	4ð 	4ð 	4ð 	4ð 	4Ð2°Hñ 	4ô 	4ð 	4ðIð Ið Ið Ið Iˆdñ Iô Ið IðXM%ð M%ð M%ð M%ð M%�Zñ M%ô M%ð M%ñ`5ð 5ð 5ð 5ð Ô˜9ØÔ˜*ØÔ˜ØÔ˜EØÔ˜FØÔ" FØÔ˜:ØÔ˜ØÔ˜6ØÔ˜ØÔ˜Zð:€ð ð ð ñ ð ÔÐ)ØÔ˜.ØÔ˜MØÔ"Ð$9ð	@Ð ð ð ð ñ ð Dð €�2ÐÑÔñ&ð &ð &ñ Ôð&ð ñð ð ñ „ðñ<Qð Qð Qð Qñð ð ð ñSð Sð Sð Sñ*%ð %ð %ð %ñLð Lð Lð Lð 
ñð ð ñ 
„ðð
 
ñ ð  ð  ñ 
„ð ð
 
ñ"ð "ð "ñ 
„ð"ð
 
ñ.ð .ð .ñ 
„ð.ð
 
ñ(ð (ð (ñ 
„ð(ð
 
ñ:ð :ð :ñ 
„ð:ð
 
ñð ð ñ 
„ðñ
ð ð ð ñð ð ð ñYð Yð Yð Yñxð ð ð ðF ,0ñSð EIð	Sð Sñ Sð Sð Sð Sñl,ð ,ð ,ð ,ñ^8ð 8ð 8ð 8ñ	ð 	ð 	ð 	ñ&*ð &*ð &*ð &*ñRð ð ð ñ*?ð ?ð ?ð ?ðF :>ñ[ñ [ð [ð [ð [ð :>ñ)&ñ )&ð )&ð )&ð )&ñXð ð ð ñLð Lð Lð Lñ9ð 9ð 9ð 9ñð ð ð ñð ð ð ñ	ð 	ð 	ð 	ñ"ð "ð "ð "ñDð Dð Dð Dñð ð ð ñð ð ð ñJð Jð Jð Jñ
>ð >ð >ð >ñð ð ð ñ0ð 0ð 0ð 0ñð ð ð ð& °ð&ð &ñ &ð &ð &ð &ñR$ð $ð $ð $ñ0ð ð ð ñ@ñ ð ð ñ<ñ ð ð ñ"ñ "ð "ð "ñ"ñ "ð "ð "ñ*
ñ 
ð 
ð 
ññ ð ð ñMñ Mð Mð Mññ ð ñ ð ‘6‘8”8�	Ñ Ð Ñ Ñ ñAñ Að Añ Añ:ñ :ð :ñ :ñ:ñ :ð :ñ :ñ7ñ 7ð 7ñ 7ñ?ñ ?ð ?ñ ?ñ?ñ ?ð ?ñ ?ñSñ Sð Sñ Sññ ð ñ ñZñ Zð Zñ Zñ

ñ 
ð 
ñ 
ñ8ñ 8ð 8ñ 8ñ6ñ 6ð 6ñ 6ñBñ Bð Bñ Bñ,#ñ #ð #ñ #ñ ñ ð ñ ñ,;ñ ;ð ;ñ ;ð$R(ð R(ñ R(ð R(ñ R(ñ R(ô R(ñ R(ñj#ñ #ð #ñ #ðRð Rñ Rð Rñ Rñ Rô Rñ Rñjñ ð ñ ññ ð ñ ñ61ñ 1ð 1ñ 1ð IKñ +ð +ñ +ñ +ð +ñ +ð\:ð :ñ :ð :ñ :˜ œñ :ô :ñ :ð €‘2ÐÑÔññ ð ñ Ôññ
1ñ 1ð 1ñ 1ð
ð ñ ð ñ Ø�*ÔÐ4°h¸zÔ6Jñô ñ ð
7ð 7ñ 7ð 7ñ 7ˆx˜
Ô#ñ 7ô 7ñ 7ð:3Qð 3Qñ 3Qð 3Qñ 3Qñ 3Qô 3Qñ 3Qñlñ ð ñ ð …<‘7ÒÐñHñ Hð Hñ Hð Hñ'ñ 'ð 'ñ 'ñKñ Kð Kñ Kðð ñ ð ñ �ñ ô ñ ñ Õ"�
á�
ð ‰4�‰:Œ:�€€r›   