o
    $&]i&                     @  sX  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rQd 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dZedededZ ed6ddZ!G dd deeef eee f Z"G dd deee f Z#ed7d$d%Z$d8d)d*Z%d9d.d/Z&d:d1dZ'd;d4d5Z(dS )<    )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                  C  s8   ddl m}  d}tjdk rtd|  |dS | |dS )Nr   )entry_pointsznarwhals.plugins)   
   r    )group)importlib.metadatar   sysversion_infor   get)epsr    r   r   N/var/www/html/IGF-ODF-V3/venv/lib/python3.10/site-packages/narwhals/plugins.py_discover_entrypoints*   s
   

r'   c                   @  s   e Zd ZdddZdS )	PluginNamespacedatar   r   r   c                C     d S Nr   )selfr)   r   r   r&   r   5       zPluginNamespace.from_nativeN)r)   r   r   r   )__name__
__module____qualname__r   r   r   r   r&   r(   4   s    r(   c                   @  s.   e Zd ZedddZddd	ZdddZdS )r   r   r   c                 C  r*   r+   r   )r,   r   r   r&   NATIVE_PACKAGE9   s   zPlugin.NATIVE_PACKAGEversionr   'PluginNamespace[FrameT, FromNativeR_co]c                 C  r*   r+   r   )r,   r2   r   r   r&   __narwhals_namespace__<   s   zPlugin.__narwhals_namespace__native_objectobjectboolc                C  r*   r+   r   )r,   r5   r   r   r&   	is_native?   r-   zPlugin.is_nativeN)r   r   )r2   r   r   r3   )r5   r6   r   r7   )r.   r/   r0   propertyr1   r4   r8   r   r   r   r&   r   8   s
    
clstypetype_strr7   c                   s2   zt  fdd|  D W S  ty   Y dS w )Nc                 3  s     | ]} |j d v V  qdS ).N)r/   split).0or<   r   r&   	<genexpr>E   s    z_might_be.<locals>.<genexpr>F)anymro	TypeError)r:   r<   r   rB   r&   	_might_beB   s
   rG   r5   r   pluginc                 C  s.   |j }tj|d uott| |o|| S r+   )r1   r"   modulesr$   rG   r;   r8   )r5   rH   pkgr   r   r&   _is_native_pluginJ   s   rK   r2   r   Iterator[CompliantAny]c                 c  s<    t  D ]}| }t| |r|j|d}|| V  qd S )N)r2   )r'   loadrK   r4   r   )r5   r2   entry_pointrH   compliant_namespacer   r   r&   _iter_from_nativeS   s   

rP   CompliantAny | Nonec                 C  s   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)nextrP   )r5   r2   r   r   r&   r   [   s   native_object_type
str | Nonec                 C  s   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.)rG   )rS   r   r   r&   _show_suggestionsr   s   
rV   )r   r   )r:   r;   r<   r=   r   r7   )r5   r   rH   r   r   r7   )r5   r   r2   r   r   rL   )r5   r   r2   r   r   rQ   )rS   r;   r   rT   ))
__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   rG   rK   rP   r   rV   r   r   r   r&   <module>   sD    
"	


	
