
    }i&                       U d dl mZ d dlZd dlmZ d dlmZmZmZm	Z	 d dl
mZ d dlmZ er&d dlmZ d dlmZ d d	lmZmZ d d
lmZmZmZmZ d dlmZ ddgZdZded<   	  eddd          Z edede          Z ed1d            Z! G d deeef         eee f                   Z" G d deee f                   Z#ed2d#            Z$d3d'Z%d4d+Z&d5d-Z'd6d0Z(dS )7    )annotationsN)cache)TYPE_CHECKINGAnyProtocolcast)CompliantNamespace)TypeVar)Iterator)EntryPoints)LiteralString	TypeAlias)CompliantDataFrameAnyCompliantFrameAnyCompliantLazyFrameAnyCompliantSeriesAny)VersionPluginfrom_nativezBCompliantDataFrameAny | CompliantLazyFrameAny | CompliantSeriesAnyr   CompliantAnyFrameTr   z-CompliantDataFrameAny | CompliantLazyFrameAny)bounddefaultFromNativeR_coT)r   	covariantr   returnr   c                     ddl m}  d}t          j        dk     r,t	          d |                                 |d                    S  | |          S )Nr   )entry_pointsznarwhals.plugins)   
   r    )group)importlib.metadatar   sysversion_infor   get)epsr"   s     D/home/jrussi/.local/lib/python3.11/site-packages/narwhals/plugins.py_discover_entrypointsr)   *   s^    666666E
'!!M335599UB#7#78883U    c                      e Zd ZddZdS )PluginNamespacedatar   r   r   c                   d S Nr!   )selfr-   s     r(   r   zPluginNamespace.from_native5         r*   N)r-   r   r   r   )__name__
__module____qualname__r   r!   r*   r(   r,   r,   4   s        >>>>>>r*   r,   c                  6    e Zd Zedd            ZddZddZdS )r   r   r   c                    d S r/   r!   )r0   s    r(   NATIVE_PACKAGEzPlugin.NATIVE_PACKAGE9   s    /2sr*   versionr   'PluginNamespace[FrameT, FromNativeR_co]c                    d S r/   r!   )r0   r8   s     r(   __narwhals_namespace__zPlugin.__narwhals_namespace__<   s    25#r*   native_objectobjectboolc                   d S r/   r!   )r0   r<   s     r(   	is_nativezPlugin.is_native?   r1   r*   N)r   r   )r8   r   r   r9   )r<   r=   r   r>   )r2   r3   r4   propertyr7   r;   r@   r!   r*   r(   r   r   8   sH        222 X26 6 6 6 ?>>>>>r*   clstypetype_strr>   c                    	 t          fd|                                 D                       S # t          $ r Y dS w xY w)Nc              3  P   K   | ] }|j                             d           v V  !dS ).N)r3   split).0orD   s     r(   	<genexpr>z_might_be.<locals>.<genexpr>E   s8      GG5AL..s333GGGGGGr*   F)anymro	TypeError)rB   rD   s    `r(   	_might_berP   B   sU    GGGGSWWYYGGGGGG   uus   ,0 
>>r<   r   pluginc                    |j         }t          j                            |          d uo1t	          t          |           |          o|                    |           S r/   )r7   r$   modulesr&   rP   rC   r@   )r<   rQ   pkgs      r(   _is_native_pluginrU   J   sU    

CD( 	,d=))3//	,]++r*   r8   r   Iterator[CompliantAny]c              #     K   t                      D ]S}|                                }t          | |          r-|                    |          }|                    |           V  Td S )N)r8   )r)   loadrU   r;   r   )r<   r8   entry_pointrQ   compliant_namespaces        r(   _iter_from_nativer[   S   s      ,.. A A$))++]F33 	A"("?"?"?"P"P%11-@@@@@	A Ar*   CompliantAny | Nonec                >    t          t          | |          d          S )a  Attempt to convert `native_object` to a Compliant object, using any available plugin(s).

    Arguments:
        native_object: Raw object from user.
        version: Narwhals API version.

    Returns:
        If the following conditions are met
            - at least 1 plugin is installed
            - at least 1 installed plugin supports `type(native_object)`

        Then for the **first matching plugin**, the result of the call below.
        This *should* be an object accepted by a Narwhals Dataframe, Lazyframe, or Series:

            plugin: Plugin
            plugin.__narwhals_namespace__(version).from_native(native_object)

        In all other cases, `None` is returned instead.
    N)nextr[   )r<   r8   s     r(   r   r   [   s    ( !-994@@@r*   native_object_type
str | Nonec                ,    t          | d          r	 dS d S )NdaftzHint: it looks like you passed a `daft.DataFrame` but don't have `narwhals-daft` installed.
Please refer to https://github.com/narwhals-dev/narwhals-daft for installation instructions.)rP   )r_   s    r(   _show_suggestionsrc   r   s,    #V,, 
k	
 	
 4r*   )r   r   )rB   rC   rD   rE   r   r>   )r<   r   rQ   r   r   r>   )r<   r   r8   r   r   rV   )r<   r   r8   r   r   r\   )r_   rC   r   r`   ))
__future__r   r$   	functoolsr   typingr   r   r   r   narwhals._compliantr	   narwhals._typing_compatr
   collections.abcr   r#   r   typing_extensionsr   r   narwhals._compliant.typingr   r   r   r   narwhals.utilsr   __all__r   __annotations__r   r   r)   r,   r   rP   rU   r[   r   rc   r!   r*   r(   <module>ro      s   " " " " " " " 



       5 5 5 5 5 5 5 5 5 5 5 5 2 2 2 2 2 2 + + + + + + '((((((......::::::::            '&&&&& ]
# I      H	
;
 
 

 LD,  
    ? ? ? ? ?(5x@V7W ? ? ?? ? ? ? ?Xfn,- ? ? ?       A A A AA A A A.     r*   