
    Lpj                       % S r SSKJr  SSKrSSKJr  SSKJrJrJ	r	  SSK
Jr  SSKJr  SSKJr  \(       a*  SS	KJr  SS
KJr  SSKJr  SSKJr  SSKJrJrJrJr  SSKJr  / SQrSrS\ S'    \" SSSS9r!\" S\S\S9r"\S'S j5       r# " S S\\!\4   \	\!\"4   5      r$ " S S\	\!\"4   5      r%\S(S j5       r&S)S  jr'S*S! jr(S+S" jr)S,S# jr*S,S$ jr+S,S% jr,S-S& jr-g).ar  Runtime discovery of, and dispatch to, Narwhals plugin backends.

A plugin backend registers an [entry point](https://packaging.python.org/en/latest/specifications/entry-points/)
in the `narwhals.plugins` group. Plugins are discovered at runtime, so their names
cannot be enumerated in the `Literal` unions that describe built-in backends.

`PluginName` bridges that gap: a plugin's entry point name, wrapped as
`PluginName("my-plugin")`, is accepted wherever a `backend` is expected.

The contract for plugin authors is that the wrapped string **must** name an
installed plugin's entry point in the `narwhals.plugins` group.
    )annotationsN)cache)TYPE_CHECKINGAnyProtocol)CompliantNamespace)
PluginName)TypeVar)Iterator)EntryPoints)	TypeAlias)LiteralString)CompliantDataFrameAnyCompliantFrameAnyCompliantLazyFrameAnyCompliantSeriesAny)Version)Pluginr	   from_nativezBCompliantDataFrameAny | CompliantLazyFrameAny | CompliantSeriesAnyr   CompliantAnyFrameTr   z-CompliantDataFrameAny | CompliantLazyFrameAny)bounddefaultFromNativeR_coT)r   	covariantr   c                     SSK Jn   SnU " US9$ )Nr   )entry_pointsznarwhals.plugins)group)importlib.metadatar   )epsr   s     L/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/narwhals/plugins.py_discover_entrypointsr"   9   s    6EU    c                      \ rS rSrSS jrSrg)PluginNamespaceA   c                   g N )selfdatas     r!   r   PluginNamespace.from_nativeB       3r#   r)   N)r+   r   returnr   )__name__
__module____qualname____firstlineno__r   __static_attributes__r)   r#   r!   r%   r%   A   s    >r#   r%   c                  D    \ rS rSr\SS j5       r    SS jrS	S jrSrg)
r   E   c                    g r(   r)   )r*   s    r!   NATIVE_PACKAGEPlugin.NATIVE_PACKAGEF   s    /2r#   c                    g r(   r)   )r*   versions     r!   __narwhals_namespace__Plugin.__narwhals_namespace__I   s    25r#   c                   g r(   r)   )r*   native_objects     r!   	is_nativePlugin.is_nativeL   r-   r#   r)   N)r.   r   )r:   r   r.   z'PluginNamespace[FrameT, FromNativeR_co])r>   objectr.   bool)	r/   r0   r1   r2   propertyr7   r;   r?   r3   r)   r#   r!   r   r   E   s*    2 266	06 ?r#   r   c                l   ^  [        U4S jU R                  5        5       5      $ ! [         a     gf = f)Nc              3  `   >#    U  H#  nTUR                   R                  S 5      ;   v   M%     g7f).N)r0   split).0otype_s     r!   	<genexpr>_might_be.<locals>.<genexpr>R   s%     GY5ALL..s33Ys   +.F)anymro	TypeError)clsrJ   s    `r!   	_might_berQ   O   s1    GSWWYGGG s   "& 
33c                    UR                   n[        R                  R                  U5      S L=(       a-    [	        [        U 5      U5      =(       a    UR                  U 5      $ r(   )r7   sysmodulesgetrQ   typer?   )r>   pluginpkgs      r!   _is_native_pluginrY   W   sN    


CD( 	,d=)3/	,]+r#   c              #     #    [        5        HG  nUR                  5       n[        X5      (       d  M%  UR                  US9nUR	                  U 5      v   MI     g 7f)N)r:   )r"   loadrY   r;   r   )r>   r:   entry_pointrW   compliant_namespaces        r!   _iter_from_nativer^   `   sP     ,.$))+]33"("?"?"?"P%11-@@	 /s
   ,A'Ac                ,    [        [        X5      S5      $ )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>   r:   s     r!   r   r   h   s    ( !-94@@r#   c                H    SSK JnJn  U" [        XR                  5      5      $ )zQCheck whether an installed plugin converts `native_object` to an eager DataFrame.r   )r   is_compliant_dataframe)narwhals._utilsr   rb   r   MAIN)r>   r   rb   s      r!   is_native_dataframere          ?!+m\\"JKKr#   c                H    SSK JnJn  U" [        XR                  5      5      $ )zJCheck whether an installed plugin converts `native_object` to a LazyFrame.r   )r   is_compliant_lazyframe)rc   r   rh   r   rd   )r>   r   rh   s      r!   is_native_lazyframeri      rf   r#   c                H    SSK JnJn  U" [        XR                  5      5      $ )zGCheck whether an installed plugin converts `native_object` to a Series.r   )r   is_compliant_series)rc   r   rk   r   rd   )r>   r   rk   s      r!   is_native_seriesrl      s    <{=,,GHHr#   c                *    [        U S5      (       a   gg )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.)rQ   )native_object_types    r!   _show_suggestionsrp      s     #V,,k	
 r#   )r.   r   )rP   rV   rJ   strr.   rB   )r>   r   rW   r   r.   rB   )r>   r   r:   r   r.   zIterator[CompliantAny])r>   r   r:   r   r.   zCompliantAny | None)r>   r   r.   rB   )ro   rV   r.   z
str | None).__doc__
__future__r   rS   	functoolsr   typingr   r   r   narwhals._compliantr   narwhals._typingr	   narwhals._typing_compatr
   collections.abcr   r   r   r   typing_extensionsr   narwhals._compliant.typingr   r   r   r   narwhals.utilsr   __all__r   __annotations__r   r   r"   r%   r   rQ   rY   r^   r   re   ri   rl   rp   r)   r#   r!   <module>r      s   # 
  / / 2 ' +(. /  ' 2 I i  H	
;

 LD,
  ?(5x@V7W ??Xfn,- ?  AA.LLIr#   