o
    tBh                     @   s   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
mZmZmZ d dlmZ dd Zeejedkr=eZdS dddZG d	d
 d
eZG dd deZdS )    N)
system_info
numpy_infoNotFoundErrorBlasNotFoundErrorLapackNotFoundErrorAtlasNotFoundErrorLapackSrcNotFoundErrorBlasSrcNotFoundErrordict_appendget_info)_pep440c                  O   s   i }|f|  D ]B}|  D ];\}}||ddurD|| }t|ttfr7t|ttfr6t|t| ||< qn||kr<qtd|||||< qq|S )a  
    Combine Numpy distutils style library configuration dictionaries.

    Parameters
    ----------
    *dicts
        Dictionaries of keys. List-valued keys will be concatenated.
        Otherwise, duplicate keys with different values result to
        an error. The input arguments are not modified.
    **kw
        Keyword arguments are treated as an additional dictionary
        (the first one, i.e., prepended).

    Returns
    -------
    combined
        Dictionary with combined values.
    Nz*Conflicting configuration dicts: {!r} {!r})itemsget
isinstancelisttuple
ValueErrorformat)dictskwnew_dictdkeyvalue	old_value r   u/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/scipy/_build_utils/system_info.pycombine_dict   s$   
r   z
1.15.0.devc                 C   s2   t td|  }|d u rt| |S | |S )N)
lapack_optblas_opt)lapack_opt_infoblas_opt_infor   lowerold_get_infor   )namenotfound_actionclsr   r   r   r   D   s   

r   c                   @      e Zd ZeZdd ZdS )r    c                 C   s  t d}|r| jdi | d S t d}|r | jdi | d S t d}|r0| jdi | d S t d}|s:t d}|s@t d}|sFt d}d}d}i }|ra|d	g }d
|v s\d|v r^d}|}ntjtjdd d}d}t|dgd |rt d}|rt|fi | n!tjtjdd t d}	|	stjt	jdd d S t|d|	fgd |rt d}
|
rt|fi |
 n!tjt
jdd t d}|stjtjdd d S t|d|fgd | jdi | d S )N
lapack_mklopenblas_lapackopenblas_clapackatlas_3_10_threads
atlas_3_10atlas_threadsatlasr   define_macros)ATLAS_WITH_LAPACK_ATLASN)ATLAS_WITHOUT_LAPACKN      
stacklevelNO_ATLAS_INFOr2   r/   lapack
lapack_srcflapack_src	librariesblasblas_src	fblas_srcr   )r   set_infor   warningswarnr   __doc__r
   r   r   r   r	   )selflapack_mkl_infoopenblas_info
atlas_infoneed_lapack	need_blasinfollapack_infolapack_src_info	blas_infoblas_src_infor   r   r   	calc_infoU   sl   zlapack_opt_info.calc_infoN)__name__
__module____qualname__r   notfounderrorrQ   r   r   r   r   r    Q       r    c                   @   r'   )r!   c           	      C   s8  t d}|r| jdi | d S t d}|r | jdi | d S t d}|r0| jdi | d S t d}|s:t d}|s@t d}|sFt d}d}i }|rO|}ntjtjd	d
 d}t|dgd |rt d}|rqt|fi | n!tjtjd	d
 t d}|stjtjd	d
 d S t|d|fgd | jdi | d S )Nblas_mklblisopenblasatlas_3_10_blas_threadsatlas_3_10_blasatlas_blas_threads
atlas_blasr   r3   r4   r2   r6   r8   r>   r?   r@   r<   r   )	r   rA   rB   rC   r   rD   r
   r   r	   )	rE   blas_mkl_info	blis_inforG   rH   rJ   rK   rO   rP   r   r   r   rQ      sL   zblas_opt_info.calc_infoN)rR   rS   rT   r   rU   rQ   r   r   r   r   r!      rV   r!   )r   )rB   numpynpnumpy.distutils.system_infor   r   r   r   r   r   r   r	   r
   r   r#   
scipy._libr   r   parse__version__Versionr    r!   r   r   r   r   <module>   s    0(
I