o
    Ö­j+  ã                   @   s®   d dl Zd dlmZ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 ej de
eeg¡Zej dd¡Zej d	d
¡ZG dd„ dƒZG dd„ dƒZG dd„ dƒZdS )é    N)Úxp_assert_equalÚxp_assert_close)Úraises)ÚgriddataÚNearestNDInterpolatorÚLinearNDInterpolatorÚCloughTocher2DInterpolator)Ú_run_concurrent_barrierÚinterpolatorÚmethod)ÚnearestÚlinearÚcubicÚrescale)TFc                   @   sŒ   e Zd Zdd„ Zeedd„ ƒƒZeedd„ ƒƒZeedd„ ƒƒZeed	d
„ ƒƒZ	edd„ ƒZ
dd„ Zedd„ ƒZedd„ ƒZedd„ ƒZdS )ÚTestGriddatac                 C   sZ   g d¢}g d¢}t ||g d¢dd�}t|g d¢ƒ t ||g d¢ƒ}t|tjtjdgƒ d S )N)©r   r   ©r   é   ©r   r   )r   é   é   )©r   r   )r   r   r   éÿÿÿÿ)Ú
fill_value)g      ð¿r   r   r   )r   r   ÚnpÚnan)ÚselfÚxÚyÚyi© r    úd/var/www/html/CropPilot/venv/lib/python3.10/site-packages/scipy/interpolate/tests/test_ndgriddata.pyÚtest_fill_value   s   zTestGriddata.test_fill_valuec                 C   sº   t jg d¢t jd�}t j|jd t jd�d d …d f t  ddg¡d d d …f  }t||fƒ}t|d d …df |d d …df f||d d …df |d d …df f||d�}t||d|d� d S ©N©r   )ç      à¿r%   )r%   ç      à?)r&   r&   )g      Ð?g333333Ó?©Údtyper   r   ©r   r   ç›+¡†›„=©ÚatolÚerr_msg©r   ÚarrayÚfloat64ÚarangeÚshapeÚreprr   r   ©r   r   r   r   r   Úmsgr   r    r    r!   Útest_alternative_call'   s   
ÿ ÿBÿz"TestGriddata.test_alternative_callc                 C   s‚   t jg d¢t jd�}t j|jd t jd�d d …d f t  ddg¡d d d …f  }t||fƒ}t|||||d�}t||d|d� d S r#   r.   r4   r    r    r!   Útest_multivalue_2d4   s   
ÿ ÿzTestGriddata.test_multivalue_2dc                 C   s´   t jg d¢t jd�}t j|jd t jd�}|d d …d d d …f t  g d¢¡d d d …d f  }t||fƒ}t|||||d�}|jdksFJ |ƒ‚t|t  |d d …d f d¡d|d	� d S )
Nr$   r'   r   ©r   r   r   r)   ©é   r   ©r   r   r*   r+   ©	r   r/   r0   r1   r2   r3   r   r   Útile©r   r   r   r   r   Úxir5   r   r    r    r!   Útest_multipoint_2d@   s   
ÿ2
ÿzTestGriddata.test_multipoint_2dc                 C   sÆ   t jg d¢t jd�}t j|jd t jd�}|d|d d d…   }|d d …d d d …f t  g d¢¡d d d …d f  }t||fƒ}t|||||d�}|jdksOJ ‚t|t  |d d …d f d	¡d
|d� d S )Nr$   r'   r   ù               @r   r8   r)   r9   r;   r*   r+   r<   r>   r    r    r!   Útest_complex_2dP   s   
ÿ2
ÿzTestGriddata.test_complex_2dc                 C   ó€   t  g d¢¡}t  g d¢¡}tt||||d�||dd� tt| dd¡|||d�||dd� tt|f||f|d�||dd� d S )N©r   ç      @r   ç      @r:   é   ©r   r   r   g333333@r   r   ©r   r*   ©r-   r,   rG   r   ©r   r/   r   r   Úreshape©r   r   r   r   r    r    r!   Útest_1da   ó   ÿÿ
ÿzTestGriddata.test_1dc                 C   s    t  g d¢¡}t  g d¢¡}t  ddg¡}t  ddg¡}d}tt||||d�||dd	� tt| d
d¡|||d�||dd	� tt|f||f|d�||dd	� d S )NrD   rH   çÍÌÌÌÌÌì?g      @ç      ð?r   rI   r*   rJ   rG   r   rK   )r   r   r   r?   Ú	yi_shouldr   r    r    r!   Útest_1d_bordersm   s4   
ÿýÿýÿ
ýzTestGriddata.test_1d_bordersc                 C   rC   )N)rE   r   rF   r:   rG   r   rH   rI   g»½×Ùß|Û=rJ   rG   r   rK   rM   r    r    r!   Útest_1d_unsortedƒ   rO   zTestGriddata.test_1d_unsortedc                 C   sä   t jg d¢t jd�}t jg d¢t jd�}t jg d¢t jd�}t  t  ddd¡d d …d f t  ddd¡d d d …f ¡\}}| ¡ }| ¡ }t  ||g¡j ¡ }|}t|||t  dd	g¡ |d
�}	t||||dd�}
t	|	|
|dd� d S )N)r   )r   éd   )é
   rU   )rV   r   )r   r:   r'   )r   r   r   r   )çš™™™™™¹?gš™™™™™©?)rQ   ç       @g      Àg      @g      "@r   rV   é   rU   g      Y@rI   Tr)   gê-�™—q=rJ   )
r   r/   r0   Úbroadcast_arraysÚlinspaceÚravelÚTÚcopyr   r   )r   r   ÚpointsÚpoints_rescaledÚvaluesÚxxÚyyr?   r5   ÚziÚzi_rescaledr    r    r!   Útest_square_rescale_manual�   s*   
ÿÿÿ
ÿ
ÿz'TestGriddata.test_square_rescale_manualc           	      C   sÎ   t jg d¢t jd�}t j|jd t jd�}|d|d d d…   }t  ddg¡}t||||d�}t|||d d d …f |d�}t|||d� t  dg¡}t  g d	¢¡}ttt||||d� ttt||||d� d S )
Nr$   r'   r   rA   r   r&   rI   )r-   )r&   r&   r&   )	r   r/   r0   r1   r2   r   r   Úassert_raisesÚ
ValueError)	r   r   r   r   r?   Úp1Úp2Úxi1Úxi3r    r    r!   Ú
test_xi_1d¤   s"   
ÿÿ
ÿzTestGriddata.test_xi_1dN)Ú__name__Ú
__module__Ú__qualname__r"   Úparametrize_methodsÚparametrize_rescaler6   r7   r@   rB   rN   rS   rT   rf   rm   r    r    r    r!   r      s.    




r   c                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zejj	d	d
„ ƒZ
dS )ÚTestNearestNDInterpolatorc                 C   sf   d\}}t  || ¡ ||f¡}t  |¡}t||ƒ}dddœ}t|||d�}t||ƒ||ƒdd� d S )N)é   r   F)Úbalanced_treeÚcompact_nodes)Útree_optionsr*   )r,   )r   r1   rL   r   r   )r   ÚnptsÚndr   r   ÚnndiÚoptsÚnndi_or    r    r!   Útest_nearest_options»   s   


z.TestNearestNDInterpolator.test_nearest_optionsc                 C   s¤   t  g d¢g d¢g d¢g¡}|d d …dd …f }t|d |d f|d ƒ}t|dd	gdd	gƒd
dgƒ t|d |d ft|d ƒƒ}t|dd	gdd	gƒd
dgƒ d S )N)r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   rW   rP   ç        rX   )r   r/   r   r   Úlist)r   ry   ÚdÚNIr    r    r!   Útest_nearest_list_argumentÆ   s   
þ z4TestNearestNDInterpolator.test_nearest_list_argumentc                 C   sú   t  g d¢g d¢g d¢g¡}d}d| d| gd| d| gf}t|d |d f|d ƒ}t  |d |d  ¡d }t|||d	�t jt jgƒ t  |d |d  ¡d }t j}t||||d
�ddgƒ t  |d |d  ¡d }t|||d	�ddgƒ d S )N)r   r&   r   r   )r   r   r&   r   ©r   r   r   r   rW   r   r   r   gH¯¼šò×z>)Údistance_upper_bound)r„   Úpr~   rX   )r   r/   r   Úsqrtr   r   Úinf)r   ry   ÚdeltaÚquery_pointsr�   r„   r…   r    r    r!   Útest_nearest_query_optionsÔ   s,   
þ 
ÿþ
þz4TestNearestNDInterpolator.test_nearest_query_optionsc                 C   st   t  g d¢g d¢g d¢g¡}t|d |d f|d ƒ}ttƒ� |ddgdd	� W d   ƒ d S 1 s3w   Y  d S )
N)r   r   r   r   )r   r   r   r   rƒ   r   r   r   r&   znot a dictionary)Úquery_options)r   r/   r   rg   Ú	TypeError)r   ry   r�   r    r    r!   Útest_nearest_query_valid_inputsñ   s   
þ
"ÿz9TestNearestNDInterpolator.test_nearest_query_valid_inputsc                    sP   d\}}t  || ¡ ||f¡‰ t  |¡}tˆ |ƒ}‡ fdd„}td||ƒ d S )N)é2   r   c                    s   |ˆ ƒ d S )Nr    )Ú_Úspl©r   r    r!   Ú	worker_fn   s   z=TestNearestNDInterpolator.test_concurrency.<locals>.worker_fnrV   )r   r1   rL   r   r	   )r   rx   ry   r   rz   r’   r    r‘   r!   Útest_concurrencyù   s   

z*TestNearestNDInterpolator.test_concurrencyN)rn   ro   rp   r}   r‚   rŠ   r�   ÚpytestÚmarkÚthread_unsafer“   r    r    r    r!   rs   º   s    rs   c                   @   s$   e Zd Zedd„ ƒZedd„ ƒZdS )ÚTestNDInterpolatorsc                 C   s  t j d¡}| d¡}| d¡}t  ||¡}t  t|ƒt|ƒ¡}t  t|ƒt|ƒ¡}t  ||¡\}}t  | 	¡ | 	¡ f¡j
}|tt||ƒƒ|ƒ}	|	|ƒ}
|	||fƒ}|	|dfƒ}|	||ƒ}|	|dƒ}|
j|j  kr||j  kr||j  kr||jksJ ‚ J ‚d S )Nr   rV   r~   )r   ÚrandomÚRandomStateÚhypotr[   ÚminÚmaxÚmeshgridÚvstackr\   r]   r   ÚzipÚsize)r   r
   Úrngr   r   ÚzÚXÚYÚXYÚinterpÚinterp_points0Úinterp_points1Úinterp_points2Úinterp_points3Úinterp_points4r    r    r!   Útest_broadcastable_input  s.   



ÿþýüz,TestNDInterpolators.test_broadcastable_inputc           	      C   sˆ   t j d¡}| d¡}|d d …df |d d …df }}t  ||¡}| d¡}|jdd� |jdd� |jdd� |||ƒ}||ƒ d S )Nr   )rV   r   r   )rŽ   r   F)Úwrite)r   r˜   r™   rš   Úsetflags)	r   r
   r¡   Úxyr   r   r¢   r¥   r¦   r    r    r!   Útest_read_only$  s   
"

z"TestNDInterpolators.test_read_onlyN)rn   ro   rp   Úparametrize_interpolatorsr¬   r°   r    r    r    r!   r—     s
    
r—   )Únumpyr   Úscipy._lib._array_apir   r   r”   r   rg   Úscipy.interpolater   r   r   r   Úscipy._lib._testutilsr	   r•   Úparametrizer±   rq   rr   r   rs   r—   r    r    r    r!   Ú<module>   s.    ÿÿþþ L