§
    fŠtj¯  ã                   ó¼   — d dl mZ ddlZ ej        ej        ¦  «        j        d         Zda G d„ d¦  «        ad„ Z	 G d„ de
¦  «        Zdd	„Zd
„ Zd„ Zdd„Zd„ ZdS )é   )Ú_ccallback_cé    Nc                   ó   — e Zd ZdS )ÚCDataN)Ú__name__Ú
__module__Ú__qualname__© ó    úS/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/scipy/_lib/_ccallback.pyr   r   	   s   € € € € € Ø€Dr   r   c                  óˆ   — t           �d S 	 dd l} |                      ¦   «         a t           j        ad S # t          $ r da Y d S w xY w)Nr   F)ÚffiÚcffiÚFFIr   ÚImportError)r   s    r   Ú_import_cffir      sZ   € õ €ØˆðØˆˆˆØ�hŠh‰jŒjˆÝ”	ˆˆˆøÝð ð ð Øˆˆˆˆðøøøs   ‹$1 ±AÁ Ac                   óœ   — e Zd ZdZdZdd„Zd„ Zed„ ¦   «         Zed„ ¦   «         Z	ed„ ¦   «         Z
d	„ Zedd
„¦   «         Zedd„¦   «         ZdS )ÚLowLevelCallablea¤  
    Low-level callback function.

    Some functions in SciPy take as arguments callback functions, which
    can either be python callables or low-level compiled functions. Using
    compiled callback functions can improve performance somewhat by
    avoiding wrapping data in Python objects.

    Such low-level functions in SciPy are wrapped in `LowLevelCallable`
    objects, which can be constructed from function pointers obtained from
    ctypes, cffi, Cython, or contained in Python `PyCapsule` objects.

    .. seealso::

       Functions accepting low-level callables:

       `scipy.integrate.quad`, `scipy.ndimage.generic_filter`,
       `scipy.ndimage.generic_filter1d`, `scipy.ndimage.geometric_transform`

       Usage examples:

       :ref:`ndimage-ccallbacks`, :ref:`quad-callbacks`

    Parameters
    ----------
    function : {PyCapsule, ctypes function pointer, cffi function pointer}
        Low-level callback function.
    user_data : {PyCapsule, ctypes void pointer, cffi void pointer}
        User data to pass on to the callback function.
    signature : str, optional
        Signature of the function. If omitted, determined from *function*,
        if possible.

    Attributes
    ----------
    function
        Callback function given.
    user_data
        User data given.
    signature
        Signature of the function.

    Methods
    -------
    from_cython
        Class method for constructing callables from Cython C-exported
        functions.

    Notes
    -----
    The argument ``function`` can be one of:

    - PyCapsule, whose name contains the C function signature
    - ctypes function pointer
    - cffi function pointer

    The signature of the low-level callback must match one of those expected
    by the routine it is passed to.

    If constructing low-level functions from a PyCapsule, the name of the
    capsule must be the corresponding signature, in the format::

        return_type (arg1_type, arg2_type, ...)

    For example::

        "void (double)"
        "double (double, int *, void *)"

    The context of a PyCapsule passed in as ``function`` is used as ``user_data``,
    if an explicit value for ``user_data`` was not given.

    r
   Nc                 ól   — |                       |||¦  «        }t                               | |||f¦  «        S ©N)Ú_parse_callbackÚtupleÚ__new__)ÚclsÚfunctionÚ	user_dataÚ	signatureÚitems        r   r   zLowLevelCallable.__new__h   s6   € ð ×"Ò" 8¨Y¸	ÑBÔBˆÝ�}Š}˜S 4¨°9Ð"=Ñ>Ô>Ð>r   c                 ó(   — d| j         ›d| j        ›d�S )NzLowLevelCallable(ú, ú))r   r   ©Úselfs    r   Ú__repr__zLowLevelCallable.__repr__n   s   € ØI 4¤=ÐIÐI°d´nÐIÐIÐIÐIr   c                 ó8   — t                                | d¦  «        S )Nr   ©r   Ú__getitem__r"   s    r   r   zLowLevelCallable.functionq   ó   € å× Ò   qÑ)Ô)Ð)r   c                 ó8   — t                                | d¦  «        S )Né   r&   r"   s    r   r   zLowLevelCallable.user_datau   r(   r   c                 ó\   — t          j        t                               | d¦  «        ¦  «        S )Nr   )r   Úget_capsule_signaturer   r'   r"   s    r   r   zLowLevelCallable.signaturey   s#   € åÔ1µ%×2CÒ2CÀDÈ!Ñ2LÔ2LÑMÔMÐMr   c                 ó   — t          ¦   «         ‚r   )Ú
ValueError)r#   Úidxs     r   r'   zLowLevelCallable.__getitem__}   s   € Ý‰lŒlÐr   c                 óÈ   — 	 |j         |         }nG# t          $ r}d}t          |¦  «        |‚d}~wt          $ r}d|›d�}t          |¦  «        |‚d}~ww xY w | |||¦  «        S )a  
        Create a low-level callback function from an exported Cython function.

        Parameters
        ----------
        module : module
            Cython module where the exported function resides
        name : str
            Name of the exported function
        user_data : {PyCapsule, ctypes void pointer, cffi void pointer}, optional
            User data to pass on to the callback function.
        signature : str, optional
            Signature of the function. If omitted, determined from *function*.

        z?Given module is not a Cython module with __pyx_capi__ attributeNzNo function z$ found in __pyx_capi__ of the module)Ú__pyx_capi__ÚAttributeErrorr.   ÚKeyError)r   ÚmoduleÚnamer   r   r   ÚeÚmessages           r   Úfrom_cythonzLowLevelCallable.from_cython€   s–   € ð"	-ØÔ*¨4Ô0ˆHˆHøÝð 	-ð 	-ð 	-ØWˆGÝ˜WÑ%Ô%¨1Ð,øøøøÝð 	-ð 	-ð 	-ØQ TÐQÐQÐQˆGÝ˜WÑ%Ô%¨1Ð,øøøøð	-øøøð ˆs�8˜Y¨	Ñ2Ô2Ð2s   ‚ �
Aš,¬A¹AÁAc                 ó�  — t          ¦   «          t          |t          ¦  «        rt                               |d¦  «        }nxt          |t
          ¦  «        rt          ||¦  «        \  }}nOt          |t          ¦  «        rt          ||¦  «        \  }}n&t          j
        |¦  «        r|}nt          d¦  «        ‚t          |t          j        ¦  «        rt          |¦  «        }nPt          |t          ¦  «        rt          |¦  «        }n+|€d}n&t          j
        |¦  «        r|}nt          d¦  «        ‚t          j        |||¦  «        S )Nr   zMGiven input is not a callable or a low-level callable (pycapsule/ctypes/cffi)zNGiven user data is not a valid low-level void* pointer (pycapsule/ctypes/cffi))r   Ú
isinstancer   r   r'   Ú
PyCFuncPtrÚ_get_ctypes_funcr   Ú_get_cffi_funcr   Úcheck_capsuler.   ÚctypesÚc_void_pÚ_get_ctypes_dataÚ_get_cffi_dataÚget_raw_capsule)r   Úobjr   r   ÚfuncÚcontexts         r   r   z LowLevelCallable._parse_callback›   s^  € å‰Œˆå�cÕ+Ñ,Ô,ð 
	KÝ×$Ò$ S¨!Ñ,Ô,ˆDˆDÝ˜�ZÑ(Ô(ð 	KÝ.¨s°IÑ>Ô>‰OˆD�)�)Ý˜�UÑ#Ô#ð 	KÝ,¨S°)Ñ<Ô<‰OˆD�)�)ÝÔ'¨Ñ,Ô,ð 	KØˆDˆDåð Jñ Kô Kð Kõ �i¥¤Ñ1Ô1ð 
	PÝ& yÑ1Ô1ˆGˆGÝ˜	¥5Ñ)Ô)ð 	PÝ$ YÑ/Ô/ˆGˆGØÐØˆGˆGÝÔ'¨	Ñ2Ô2ð 	PØˆGˆGåð Oñ Pô Pð Põ Ô+¨D°)¸WÑEÔEÐEr   )NN)r   r   r	   Ú__doc__Ú	__slots__r   r$   Úpropertyr   r   r   r'   Úclassmethodr8   r   r
   r   r   r   r      s÷   € € € € € ðHð HðV €Ið?ð ?ð ?ð ?ðJð Jð Jð ð*ð *ñ „Xð*ð ð*ð *ñ „Xð*ð ðNð Nñ „XðNðð ð ð ð3ð 3ð 3ñ „[ð3ð4 ðFð Fð Fñ „[ðFð Fð Fr   r   c                 ó  — t          j        | t           j        ¦  «        j        }|€dt	          | j        ¦  «        dz   }t          | j        ¦  «        D ]3\  }}|dk    r|t	          |¦  «        z  }Œ|dt	          |¦  «        z   z  }Œ4|dz  }||fS )Nz (r   r    r!   )r?   Úcastr@   ÚvalueÚ_typename_from_ctypesÚrestypeÚ	enumerateÚargtypes)rE   r   Úfunc_ptrÚjÚargs        r   r<   r<   ¾   sž   € åŒ{˜4¥¤Ñ1Ô1Ô7€Hð ÐÝ)¨$¬,Ñ7Ô7¸$Ñ>ˆ	Ý ¤Ñ.Ô.ð 	?ð 	?‰FˆAˆsØ�AŠvˆvØÕ2°3Ñ7Ô7Ñ7�	�	à˜TÕ$9¸#Ñ$>Ô$>Ñ>Ñ>�	�	Ø�SÑˆ	à�YÐÐr   c                 ó  — | €dS | t           j        u rdS | j        }d}|                     d¦  «        r$|dz  }|dd …         }|                     d¦  «        °$|                     d¦  «        r
|dd …         }|dk    r|d	d
|z  z   z  }|S )NÚvoidzvoid *r   ÚLP_r   é   Úc_r*   ú Ú*)r?   r@   r   Ú
startswith)r   r5   Úpointer_levels      r   rN   rN   Ï   s²   € Ø€|ØˆvØ	•”Ð	 Ð	 ØˆxàŒ=€Dà€MØ
�/Š/˜%Ñ
 Ô
 ð Ø˜ÑˆØ�A�B�BŒxˆð �/Š/˜%Ñ
 Ô
 ð ð ‡‚�tÑÔð Ø�A�B�BŒxˆà�qÒÐØ��c˜-Ñ'Ñ'Ñ'ˆà€Kr   c                 óJ   — t          j        | t           j        ¦  «        j        S r   )r?   rL   r@   rM   ©Údatas    r   rA   rA   å   s   € åŒ;�t�Vœ_Ñ-Ô-Ô3Ð3r   c                 óÐ   — t                                d| ¦  «        }|€Ft                                t                                | ¦  «        ¦  «                             dd¦  «        }||fS )NÚ	uintptr_tz(*)rZ   )r   rL   ÚgetctypeÚtypeofÚreplace)rE   r   rR   s      r   r=   r=   î   sU   € å�xŠx˜ TÑ*Ô*€Hð ÐÝ—L’L¥§¢¨DÑ!1Ô!1Ñ2Ô2×:Ò:¸5À#ÑFÔFˆ	à�YÐÐr   c                 ó8   — t                                d| ¦  «        S )Nrb   )r   rL   r_   s    r   rB   rB   ù   s   € å�8Š8�K Ñ&Ô&Ð&r   r   )Ú r   r?   Ú	CFUNCTYPEr@   Ú	__bases__r;   r   r   r   r   r   r<   rN   rA   r=   rB   r
   r   r   ú<module>rj      s  ðØ Ð Ð Ð Ð Ð à €€€àˆVÔ˜fœoÑ.Ô.Ô8¸Ô;€
à
€ð	ð 	ð 	ð 	ð 	ñ 	ô 	ð 	ðð ð ð]Fð ]Fð ]Fð ]Fð ]F�uñ ]Fô ]Fð ]FðHð ð ð ð"ð ð ð,4ð 4ð 4ðð ð ð ð'ð 'ð 'ð 'ð 'r   