o
    Ö­jÅ´  ã                   @   sÎ   d dl Z d dlZd dlZd dlmZ d dlmZmZm	Z	 d dl
mZ d dlmZ d dlmZmZmZmZmZ d dlmZ d dlmZ d d	lmZ ej d
ej¡ZG dd„ dƒZG dd„ dƒZG dd„ dƒZ dS )é    N)Úassert_warns)Úxp_assert_equalÚxp_assert_closeÚassert_array_almost_equal)Úskip_xp_invalid_arg)Úraises)ÚRegularGridInterpolatorÚinterpnÚRectBivariateSplineÚNearestNDInterpolatorÚLinearNDInterpolator)Úmatrix)ÚComplexWarning)Ú_run_concurrent_barrierÚmethodc                   @   sô  e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zed	d
„ ƒZe	j
 dg d¢¡dd„ ƒZe	j
 dee g d¢g d¢g d¢g¡fee g d¢¡fg¡dd„ ƒZdd„ Zedd„ ƒZdd„ Zdd„ Zdd„ Ze	j
 d e g d!¢¡d"fe g d#¢¡d$fe g d%¢¡d$fe g d&¢¡d'fe g d(¢¡d)fg¡d*d+„ ƒZd,d-„ Zd.d/„ Zd0d1„ Zd2d3„ Zd4d5„ Zd6d7„ Zd8d9„ Zd:d;„ Ze	j
 dd<d=g¡d>d?„ ƒZd@dA„ ZdBdC„ Z dDdE„ Z!e	j
 dFdGej"ej#g¡e	j
 dd=d<g¡dHdI„ ƒƒZ$e	j
 dd<d=g¡dJdK„ ƒZ%e	j
 dd<d=g¡dLdM„ ƒZ&e	j
 'dN¡ee	j
 dOdPdQdR„ fdSdTdR„ fdUdVdR„ fdWdXdR„ fg¡dYdZ„ ƒƒƒZ(d[d\„ Z)ed]d^„ ƒZ*e	j
 'dW¡ed_d`„ ƒƒZ+ee	j
 dadbdcg¡ddde„ ƒƒZ,dfdg„ Z-e	j
 dhej.ej/ej0ej1g¡e	j
 diej.ej/g¡djdk„ ƒƒZ2dldm„ Z3e	j
j4dndo„ ƒZ5dGS )pÚTestRegularGridInterpolatorc                 C   ó¤   dgd }t  g d¢¡}|d d …t jt jt jf }|t jd d …t jt jf }|t jt jd d …t jf }|t jt jt jd d …f }||d  |d  |d  }||fS )N©ç        ç      à?ç      ð?é   é
   éd   éè  ©ÚnpÚasarrayÚnewaxis©ÚselfÚpointsÚvaluesÚvalues0Úvalues1Úvalues2Úvalues3© r'   ú]/var/www/html/CropPilot/venv/lib/python3.10/site-packages/scipy/interpolate/tests/test_rgi.pyÚ_get_sample_4d   ó   
z*TestRegularGridInterpolator._get_sample_4dc                 C   ó®   dgd dgd  }t  g d¢¡}|d d …t jt jt jf }|t jd d …t jt jf }|t jt jd d …t jf }|t jt jt jd d …f }||d  |d  |d  }||fS ©Nr   é   )r   ç      @ç      $@r   r   r   r   r   r'   r'   r(   Ú_get_sample_4d_2'   s   z,TestRegularGridInterpolator._get_sample_4d_2c                 C   r   )N©r   r   r   ç      ø?ç       @ç      @ç      @r   r   r   r   r   r   r'   r'   r(   Ú_get_sample_4d_32   r*   z,TestRegularGridInterpolator._get_sample_4d_3c                 C   s¤   dgd }t  ddg¡}|d d …t jt jt jf }|t jd d …t jt jf }|t jt jd d …t jf }|t jt jt jd d …f }||d  |d  |d  }||fS )N)r   r   r   r   r   r   r   r   r   r   r'   r'   r(   Ú_get_sample_4d_4=   r*   z,TestRegularGridInterpolator._get_sample_4d_4c                 C   sj   |   ¡ \}}t g d¢g d¢g d¢g¡}t|| ¡ |d�}|| ¡ ƒ}t|||d�}||ƒ}t||ƒ d S )N©çš™™™™™¹?r9   r   çÍÌÌÌÌÌì?©çš™™™™™É?r9   gÍÌÌÌÌÌÜ?gš™™™™™é?©r   r   r   r   ©r   )r6   r   r   r   Útolistr   )r    r   r!   r"   ÚsampleÚinterpÚv1Úv2r'   r'   r(   Útest_list_inputH   s   ÿþþz+TestRegularGridInterpolator.test_list_inputr   )ÚcubicÚquinticÚpchipc                 C   s²   |   ¡ \}}d}tjt|d�� t|||d� W d   ƒ n1 s!w   Y  t||ƒ}t g d¢g d¢g d¢g¡}tjt|d�� |||d� W d   ƒ d S 1 sRw   Y  d S )Nzpoints in dimension©Úmatchr>   r8   r;   r=   )r7   Úpytestr   Ú
ValueErrorr   r   r   )r    r   r!   r"   rI   rA   r@   r'   r'   r(   Útest_spline_dim_errorY   s   ÿ
ÿ"ÿz1TestRegularGridInterpolator.test_spline_dim_errorzpoints_values, sampler8   r;   r=   ©r9   r9   r/   ç      "@c                 C   sF   || ƒ\}}t ||dd�}||ƒ}t ||dd�}||ƒ}t||ƒ d S )NÚlinearr>   Úslinear)r   r   )r    Úpoints_valuesr@   r!   r"   rA   rB   rC   r'   r'   r(   Útest_linear_and_slinear_closei   s   z9TestRegularGridInterpolator.test_linear_and_slinear_closec                 C   sÎ   |   ¡ \}}t g d¢g d¢g d¢g¡}t||dd�}ttƒ� ||dd� W d   ƒ n1 s0w   Y  t||dd�t g d	¢¡d
d� t||dd�t g d¢¡d
d� t||dd�t g d¢¡dd� d S )Nr8   r;   r=   rP   r>   é   )Únu)rS   r   r   r   )r   rS   rS   çVçž¯Ò<©Úatol)r   rS   r   r   )r/   r   r   )r   rS   rS   r   )r   r   r   gê-�™—�=)r)   r   Úarrayr   Úassert_raisesrK   r   r   )r    r!   r"   r@   rA   r'   r'   r(   Útest_derivatives   s$   
þ
þÿÿ
ÿz,TestRegularGridInterpolator.test_derivativesc           
      C   sž   |dkr	t  d¡ |  ¡ \}}|d|  }t g d¢g d¢g d¢g¡}t|||d�}t||j|d�}t||j|d�}||ƒ}||ƒd||ƒ  }	t||	ƒ d S )	NrG   ú*pchip does not make sense for complex dataù               @r8   r;   r=   r>   ù              ð?)	rJ   Úskipr6   r   r   r   ÚrealÚimagr   )
r    r   r!   r"   r@   rA   ÚrinterpÚiinterprB   rC   r'   r'   r(   Útest_complex“   s   
ÿz(TestRegularGridInterpolator.test_complexc           
      C   sŠ   g d¢g d¢}}t j||dd�\}}dd„ ||ƒ}t||f|dd�}t||f|dd�}|d	d
gƒ}|d	d
gƒ}	t j||	ddd�rCJ ‚d S )N)rS   r-   é   r   Úij)Úindexingc                 S   s   | d |d  S )Nr   r'   ©ÚxÚyr'   r'   r(   Ú<lambda>¨   ó    zATestRegularGridInterpolator.test_cubic_vs_pchip.<locals>.<lambda>rE   r>   rG   r2   r-   ç›+¡†›„=r   ©rW   Úrtol)r   Úmeshgridr   Úallclose)
r    rh   ri   ÚxgÚygr"   rE   rG   Ú
vals_cubicÚ
vals_pchipr'   r'   r(   Útest_cubic_vs_pchip¤   s   z/TestRegularGridInterpolator.test_cubic_vs_pchipc                 C   sB   |   ¡ \}}t||ƒ}t g d¢¡}t dg¡}t||ƒ|ƒ d S )NrM   çÍÌÌÌÌH�@©r0   r   r   r   r   ©r    r!   r"   rA   r@   Úwantedr'   r'   r(   Útest_linear_xi1d°   s
   
z,TestRegularGridInterpolator.test_linear_xi1dc                 C   sR   |   ¡ \}}t||ƒ}t g d¢g d¢g d¢g¡}t g d¢¡}t||ƒ|ƒ d S )Nr8   r;   r=   ©rv   gš™™™™qŠ@g     \�@©r)   r   r   r   r   rx   r'   r'   r(   Útest_linear_xi3d·   s   
ÿz,TestRegularGridInterpolator.test_linear_xi3dzsample, wanted)r9   r9   r:   r:   g     0‘@)r9   r9   r9   r9   r   ©r   r   r   r   ©r   r   r   r   ç     \‘@)r9   çš™™™™™Ù?g333333ã?r:   g     |�@c                 C   s8   |   ¡ \}}t||dd�}t |g¡}t||ƒ|ƒ d S )NÚnearestr>   r|   )r    r@   ry   r!   r"   rA   r'   r'   r(   Útest_nearest¿   s   z(TestRegularGridInterpolator.test_nearestc                 C   sL   |   ¡ \}}t||ƒ}t g d¢g d¢g¡}t ddg¡}t||ƒ|ƒ d S )Nr~   r   r   r€   r|   rx   r'   r'   r(   Útest_linear_edgesÏ   s
   
z-TestRegularGridInterpolator.test_linear_edgesc                 C   s´   ddg}t  g d¢¡}|d d …t jf }|t jd d …f }||d  }ttt||ƒ ddg}ttt||ƒ ddg}ttt||ƒ g d¢}ttt||ƒ ddg}ttt||dd� d S )	Nr   )r   r   r   r   )r   )r   r   g      è?r   )r   r   r   Úundefmethodr>   )r   r   r   rY   rK   r   )r    r!   r"   r#   r$   r'   r'   r(   Útest_valid_createÖ   s    

ÿz-TestRegularGridInterpolator.test_valid_createc                 C   s‚   |   ¡ \}}t||ƒ}t g d¢g d¢g¡}tt||dƒ t g d¢g d¢g¡}tt||ƒ t g d¢g d¢g¡}tt||ƒ d S )Nr~   r   r…   )r   r   r   )r   r   r   )r   r   r   çš™™™™™ñ?)r)   r   r   r   rY   rK   )r    r!   r"   rA   r@   r'   r'   r(   Útest_valid_callè   s   
z+TestRegularGridInterpolator.test_valid_callc                 C   ó‚   |   ¡ \}}t||dd d�}t g d¢g d¢g d¢g d¢g¡}t g d¢¡}t||dd	�|ƒ t g d
¢¡}t||dd	�|ƒ d S )NF©Úbounds_errorÚ
fill_value©çš™™™™™¹¿rŽ   rŽ   rŽ   ©r‡   r‡   r‡   r‡   ©é   çÍÌÌÌÌÌ @çš™™™™™ñ¿iõÿÿÿ©r’   r’   r“   r“   )r   r€   ç      &@r•   r‚   r>   )gfffffÆ[Àgfffff“@g     žÅÀgš™™™™‹’ÀrO   r|   rx   r'   r'   r(   Útest_out_of_bounds_extrapò   ó   ÿÿz5TestRegularGridInterpolator.test_out_of_bounds_extrapc                 C   r‰   )NFrŠ   r�   r�   r�   r”   )r   r•   r•   r•   r‚   r>   )g333333(Àg33333£`@g     ´�Àgš™™™™yXÀrO   rw   rx   r'   r'   r(   Útest_out_of_bounds_extrap2ý   r—   z6TestRegularGridInterpolator.test_out_of_bounds_extrap2c                 C   s°   |   ¡ \}}t||dtjd�}t g d¢g d¢g d¢g¡}t tjtjtjg¡}t||dd�|ƒ t||dd�|ƒ t g d	¢g d
¢g d¢g¡}t g d¢¡}t||ƒ|ƒ d S )NFrŠ   r�   r�   r”   r‚   r>   rO   r8   r;   r=   r{   )r)   r   r   Únanr   r   rx   r'   r'   r(   Útest_out_of_bounds_fill  s   ÿÿÿz3TestRegularGridInterpolator.test_out_of_bounds_fillc                 C   s‚   |   ¡ \}}t||dd�}tj|Ž }dd„ |D ƒ}t |¡}| d¡}t||ƒ}t g d¢g d¢g d¢g¡}t||ƒ||ƒƒ d S )	Nr‚   r>   c                 S   ó   g | ]}|‘qS r'   r'   ©Ú.0Úpr'   r'   r(   Ú
<listcomp>  rk   zJTestRegularGridInterpolator.test_nearest_compare_qhull.<locals>.<listcomp>éÿÿÿÿr8   r;   r=   )	r)   r   Ú	itertoolsÚproductr   r   Úreshaper   r   ©r    r!   r"   rA   Úpoints_qhullÚvalues_qhullÚinterp_qhullr@   r'   r'   r(   Útest_nearest_compare_qhull  s   



ÿz6TestRegularGridInterpolator.test_nearest_compare_qhullc                 C   s~   |   ¡ \}}t||ƒ}tj|Ž }dd„ |D ƒ}t |¡}| d¡}t||ƒ}t g d¢g d¢g d¢g¡}t||ƒ||ƒƒ d S )Nc                 S   r›   r'   r'   rœ   r'   r'   r(   rŸ   &  rk   zITestRegularGridInterpolator.test_linear_compare_qhull.<locals>.<listcomp>r    r8   r;   r=   )	r)   r   r¡   r¢   r   r   r£   r   r   r¤   r'   r'   r(   Útest_linear_compare_qhull"  s   




ÿz5TestRegularGridInterpolator.test_linear_compare_qhullr‚   rO   c                 C   st   t  ddd¡}t  ddd¡}tdƒ}t||f||d�}|dd	gƒ}t||f|j|d�}|dd	gƒ}t||d
d� d S )Nr   r-   é   rS   é   ©rª   r«   r>   r�   çffffffæ?F©Úcheck_dtype)r   ÚlinspaceÚMyValuer   Ú_vr   )r    r   rh   ri   r"   rA   rB   rC   r'   r'   r(   Útest_duck_typed_values.  s   z2TestRegularGridInterpolator.test_duck_typed_valuesc                 C   sb   t j d¡ t  ddd¡}t  ddd¡}t j dd¡}t||f|dd� ttt||f|dd� d S )	NéÒ  r   r-   rª   rS   r«   ©rŒ   y      ð?       @)r   ÚrandomÚseedr°   Úrandr   rY   rK   )r    rh   ri   r"   r'   r'   r(   Útest_invalid_fill_value<  s   

ÿz3TestRegularGridInterpolator.test_invalid_fill_valuec                 C   s:   t jddd�}dd„ |jD ƒ}t||ƒ t||dd� d S )N©r   é   é   z>f4©Údtypec                 S   s   g | ]}t  |¡‘qS r'   )r   Úarange)r�   Únr'   r'   r(   rŸ   L  s    zCTestRegularGridInterpolator.test_fillvalue_type.<locals>.<listcomp>r   rµ   )r   ÚonesÚshaper   )r    r"   r!   r'   r'   r(   Útest_fillvalue_typeI  s   
z/TestRegularGridInterpolator.test_fillvalue_typec                 C   sb  dd„ }t  ddd¡}t  ddd¡}|t j||ddd�Ž }t||f|dd	d
d�}t|t  ddgddgddgg¡ƒt  g d¢¡dd� t|t  ddgddgddgg¡ƒg d¢dd� t|t  ddg¡ƒ|jd	d	d	dd� d |_t|ddgddggƒddgdd� t|ddgddggƒddgdd� t||f|dd	d d�}t|ddgdd ggƒt  d!d"g¡dd� d S )#Nc                 S   s   | | S ©Nr'   rg   r'   r'   r(   ÚfU  ó   z;TestRegularGridInterpolator.test_length_one_axis.<locals>.frS   r   re   T©rf   ÚsparserO   Fée   ©r   r‹   rŒ   rª   )r3   é   é   rl   rV   gffffffö?ç333333@)ç333333@ç333333@rÌ   r‡   rÎ   )r¯   Úcheck_shapeÚcheck_0drW   ç333333Ó?g      '@gÍÌÌÌÌÌô?g      )@rU   r2   gffffffþ?r‚   gÍÌÌÌÌÌü?éüÿÿÿgffffff@r5   rË   )r   r°   ro   r   r   rX   r   rŒ   )r    rÅ   rh   ri   ÚdatarA   r'   r'   r(   Útest_length_one_axisQ  sD   ÿ þ þýÿÿÿ
þz0TestRegularGridInterpolator.test_length_one_axisrŒ   Nc                 C   sü   |d|dœ}t  ddt j d¡}t  |¡}t|f|d d … fi |¤Ž}t|dgf|d d …d f fi |¤Ž}t  ddt j d d¡}||ƒ}	t  d¡}
|t  ||
g¡jƒ}t||	ƒ t  	d¡}
|t  ||
g¡jƒ}|d u rst||	ƒ d S t|t  
||¡ƒ d S )	NF©rŒ   r‹   r   r   r-   r»   r    rS   r   )r   r°   ÚpiÚsinr   ÚzerosÚvstackÚTr   rÁ   Ú	full_like)r    rŒ   r   Úoptionsrh   ÚzÚfaÚfbÚx1aÚzaÚy1bÚzbr'   r'   r(   Útest_length_one_axis2}  s"   ÿ
$


z1TestRegularGridInterpolator.test_length_one_axis2c           	      C   s:  t g d¢fg d¢dd|d�}t |tjgƒ¡sJ ‚tj d¡}|jdd�d	 }|jdd�d
k}tj||< tjdd�� ||ƒ}W d   ƒ n1 sIw   Y  t || ¡ ¡ sYJ ‚t||  |||  ƒƒ g d¢}dg}t 	d¡}t ||f|dd|d�}t t |tjdgƒ¡¡sŒJ ‚t t |dtjgƒ¡¡s›J ‚d S )N)rS   r-   rd   rº   rS   FrÖ   ì   l¿J r   ©Úsizer   r   Úignore©Úinvalid)rd   rS   )
r   r   Úisnanr™   r¶   Údefault_rngÚerrstateÚallr   rÁ   )	r    r   rÅ   Úrngrh   ÚiÚresri   rÔ   r'   r'   r(   Útest_nan_x_1d™  s*   ÿ

û
ÿ"z)TestRegularGridInterpolator.test_nan_x_1dc                 C   s¨  t  g d¢¡t  g d¢¡}}dd„ }t j||ddd�\}}|||ƒ}t||f||dd	�}t jd
d�� |dt jgddggƒ}	W d   ƒ n1 sIw   Y  t|	d ddd� t  |	d ¡s`J ‚t j 	d¡}
|
jdd�d d }|
jdd�d }|
jdd�dk}|
jdd�dk}||B }t j||< t j||< t  ||g¡j
}t jd
d�� ||ƒ}	W d   ƒ n1 s³w   Y  t  |	| ¡ ¡ sÃJ ‚t|	|  |||  ƒdd� d S )N)r   rS   r-   )rS   rd   r«   c                 S   s   | d |d  S ©Nr-   r'   rg   r'   r'   r(   rÅ   ¼  s   z4TestRegularGridInterpolator.test_nan_x_2d.<locals>.fre   TrÇ   F©r   r‹   ré   rê   r2   rS   r3   rl   rV   r   ræ   r   rç   r   é   r   r®   )r   rX   ro   r   rî   r™   r   rì   r¶   rí   rÛ   rï   r   )r    r   rh   ri   rÅ   rq   rr   rÔ   rA   rò   rð   Úi1Úi2rñ   rÞ   r'   r'   r(   Útest_nan_x_2d¸  s4   

ÿÿ


û"z)TestRegularGridInterpolator.test_nan_x_2dr   )ÚndimsÚfuncr-   c                 C   ó   d| d  d|d   S ©Nr-   rd   r'   rg   r'   r'   r(   rj   à  ó    z$TestRegularGridInterpolator.<lambda>rd   c                 C   s   d| d  d|d   | S rý   r'   )rh   ri   rÞ   r'   r'   r(   rj   á  s    r   c                 C   s    d| d  d|d   | | S rý   r'   ©rh   ri   rÞ   Úar'   r'   r(   rj   â  s     rª   c                 C   s$   d| d  d|d   | ||  S rý   r'   )rh   ri   rÞ   r   Úbr'   r'   r(   rj   ã  s   $ c                    sÎ   |dkr|dv rt  d¡ tj d¡}d‰d‰ |jˆˆ d|fd�}‡ ‡fd	d
„t|ƒD ƒ}|tj|dddœŽŽ }t|||d�}||ƒ}	dd
„ |D ƒ}
|tj|
dddœŽŽ }t|
||d�}||ƒ}t	|	|ƒ d S )Nr   >   rE   rF   z-too slow; OOM (quintic); or nearly so (cubic)é*   rS   rª   r-   rç   c                    s   g | ]	}t  ˆˆ d ¡‘qS )é   )r   r°   )r�   Ú_©Úsample_highÚ
sample_lowr'   r(   rŸ   ï  s    ÿzITestRegularGridInterpolator.test_descending_points_nd.<locals>.<listcomp>re   TrÇ   r>   c                 S   s   g | ]	}|d d d… ‘qS )Nr    r'   )r�   Úxir'   r'   r(   rŸ   û  s    )
rJ   r^   r   r¶   rí   ÚuniformÚrangero   r   r   )r    r   rú   rû   rð   Útest_pointsÚascending_pointsÚascending_valuesÚascending_interpÚascending_resultÚdescending_pointsÚdescending_valuesÚdescending_interpÚdescending_resultr'   r  r(   Útest_descending_points_ndÝ  s:   

ÿ
þþ
þþz5TestRegularGridInterpolator.test_descending_points_ndc                 C   s„   dd„ }t  g d¢¡}t  g d¢¡}||f}|t j|dddœŽŽ }d}tjt|d	�� t||ƒ W d   ƒ d S 1 s;w   Y  d S )
Nc                 S   rü   rý   r'   rg   r'   r'   r(   Úval_func_2d  ó   zJTestRegularGridInterpolator.test_invalid_points_order.<locals>.val_func_2d©r   r3   r   ç      @ç      @©r   r3   r5   r  r  re   TrÇ   ú(must be strictly ascending or descendingrH   )r   rX   ro   rJ   r   rK   r   )r    r  rh   ri   r!   r"   rI   r'   r'   r(   Útest_invalid_points_order  s   

ÿ"ÿz5TestRegularGridInterpolator.test_invalid_points_orderc                 C   s6   t t d¡gt d¡|dd�}t |dgƒ¡sJ ‚d S )NrË   Frõ   r   )r   r   r¿   rÁ   rì   )r    r   rA   r'   r'   r(   Útest_fill_value  s   ÿz+TestRegularGridInterpolator.test_fill_valuec                 C   sÐ   |dkr	t  d¡ dgd dgd  }tj d¡}| d¡}| d¡}t|||d	d
�}||ƒ}|jdks8J |ƒ‚g }tdƒD ]}	t||d|	f |d	d
�}| ||ƒ¡ q>t 	|¡ 
ddd¡}
t||
d|d� d S )NrF   úWay too slow.©r   r   r   r2   r3   r4   r-   ©r   r.   r/   ç      .@r»   ç      9@r´   ©rË   rË   rË   rË   rö   ©r«   rd   r   Frõ   ©r«   rd   rö   rö   .rS   r   rl   ©rW   Úerr_msg)rJ   r^   r   r¶   rí   r   rÂ   r
  ÚappendrX   Ú	transposer   )r    r   r!   rð   r"   r@   rA   ÚvÚvsÚjrC   r'   r'   r(   Útest_nonscalar_values  s0   
ÿþ

ÿþz1TestRegularGridInterpolator.test_nonscalar_valuesÚflip_pointsFTc                 C   s  |dv r	t  d¡ g d¢}|rdd„ |D ƒ}tj d¡}d}| dd	d
dg|¢R ¡}| d¡}t|||dd�}||ƒ}	|	jdg|¢R ksFJ ‚t |jdd … ¡}
t|jd ƒD ]#}t|jd ƒD ]}t||d||f |dd�}||ƒ 	¡ |
||f< q`qWtj
|
dd�}t|	|d|d� d S )N>   rE   rF   r  ©r  r1   )r   r.   r/   r!  r»   r"  ç     €A@ç      B@)	r   r.   r/   r!  r»   r"  r0  r1  é/   c                 S   s   g | ]}t t|ƒƒ‘qS r'   )ÚtupleÚreversedrœ   r'   r'   r(   rŸ   H  rþ   zGTestRegularGridInterpolator.test_nonscalar_values_2.<locals>.<listcomp>r´   ©rd   r-   rË   r«   rö   é	   r   Frõ   rS   éþÿÿÿr    .r   ©Úaxisrl   r&  )rJ   r^   r   r¶   rí   r   rÂ   Úemptyr
  ÚitemÚexpand_dimsr   )r    r   r.  r!   rð   Útrailing_pointsr"   r@   rA   r*  r+  rñ   r,  rC   r'   r'   r(   Útest_nonscalar_values_28  s2   

ÿþüz3TestRegularGridInterpolator.test_nonscalar_values_2c                 C   sô   d}ddg}t j d¡}d}| ddg|¢R ¡}| d¡}t|||d	d
�}||ƒ}|jdg|¢R ks4J ‚t  |jdd … ¡}	t|jd ƒD ]#}
t|jd ƒD ]}t||d|
|f |d	d
�}||ƒ ¡ |	|
|f< qNqEt j|	dd�}t	||d|d� d S )NrO   r  r1   r´   )rd   r   rË   r«   r-   Frõ   rS   r7  r    .r   r8  rl   r&  )
r   r¶   rí   r   rÂ   r:  r
  r;  r<  r   )r    r   r!   rð   r=  r"   r@   rA   r*  r+  rñ   r,  rC   r'   r'   r(   Útest_nonscalar_values_linear_2Dc  s0   ÿ
ÿþüz;TestRegularGridInterpolator.test_nonscalar_values_linear_2Dr¾   Úxi_dtypec                 C   s”   dd„ }t  ddd¡}t  ddd¡}t j||dd	d
�\}}|||ƒ}| |¡}t||f|ƒ}	t jddgddgg|d�}
t|	|
ƒddgdddd� d S )Nc                 S   rü   rý   r'   rg   r'   r'   r(   rÅ   ‰  r  z:TestRegularGridInterpolator.test_float32_values.<locals>.frS   r   rÌ   r«   é   re   TrÇ   r’   gÍÌÌÌÌÌ@çffffff
@gÍÌÌÌÌÌ@r½   g Öú¦YÃ`@gÖÉø{Ò,c@gH¯¼šò×z>F)rW   rn   r¯   )r   r°   ro   Úastyper   rX   r   )r    r¾   r@  rÅ   rh   ri   rq   rr   rÔ   rA   Úptsr'   r'   r(   Útest_float32_values‚  s   


ÿÿ
ÿz/TestRegularGridInterpolator.test_float32_valuesc                 C   s@  t  ddd¡}t  ddd¡}t j||ddd�\}}|| }ttƒ� t||f|dd„ d	� W d   ƒ n1 s7w   Y  ttƒ� t||f|d
dd„ d� W d   ƒ n1 sWw   Y  ttƒ� t||f|d
dd„ dd� W d   ƒ n1 sxw   Y  ttƒ� t||f|d
ddid� W d   ƒ d S 1 s™w   Y  d S )Nr   rd   r«   re   TrÇ   c                 S   ó   | S rÄ   r'   ©rh   r'   r'   r(   rj   §  ó    z=TestRegularGridInterpolator.test_bad_solver.<locals>.<lambda>)ÚsolverrP   c                 S   rF  rÄ   r'   rG  r'   r'   r(   rj   ¬  rH  )r   rI  c                 S   rF  rÄ   r'   rG  r'   r'   r(   rj   ²  rH  Úwoof)r   rI  rJ  r  )r   Úsolver_args)r   r°   ro   rY   rK   r   Ú	TypeError)r    rh   ri   rq   rr   rÔ   r'   r'   r(   Útest_bad_solverŸ  s,   
ÿ
ÿþ
ÿþ
ÿ"þz+TestRegularGridInterpolator.test_bad_solverc                    sb   |   ¡ \}}t g d¢g d¢g d¢g d¢g¡‰t||dd�}ddg‰ ‡ ‡fdd	„}td
||ƒ d S )Nr8   r;   r=   )rÒ   r9   r<   r�   rP   r>   r‚   c                    s0   |j }ˆ | d  }|ˆ|d� |j |u sJ ‚d S )Nr-   r>   )Ú_spline)ÚtidrA   Úspliner   ©Úmethodsr@   r'   r(   Ú	worker_fnÇ  s   z?TestRegularGridInterpolator.test_concurrency.<locals>.worker_fnr   )r)   r   rX   r   r   )r    r!   r"   rA   rS  r'   rQ  r(   Útest_concurrency»  s   
ýz,TestRegularGridInterpolator.test_concurrency)6Ú__name__Ú
__module__Ú__qualname__r)   r0   r6   r7   Úparametrize_rgi_interp_methodsrD   rJ   ÚmarkÚparametrizerL   r   r   rR   rZ   rc   ru   rz   r}   rƒ   r„   r†   rˆ   r–   r˜   rš   r¨   r©   r³   r¹   rÃ   rÕ   r™   r×   rå   ró   rù   Ú	fail_slowr  r  r  r-  r>  r?  Úfloat32Úfloat64Ú	complex64Ú
complex128rE  rM  Úthread_unsaferT  r'   r'   r'   r(   r      s®    

þÿþ÷þ

ûþ



,


$



ü!

)þr   c                   @   s2   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	d
„ZdS )r±   z"
    Minimal indexable object
    c                 C   s(   d| _ || _t t |¡¡ |¡| _d S rô   )ÚndimrÂ   r   r¿   Úprodr£   r²   )r    rÂ   r'   r'   r(   Ú__init__Õ  s   zMyValue.__init__c                 C   s
   | j | S rÄ   )r²   )r    Úidxr'   r'   r(   Ú__getitem__Ú  s   
zMyValue.__getitem__c                 C   s   d S rÄ   r'   )r    r'   r'   r(   Ú__array_interface__Ý  s   zMyValue.__array_interface__Nc                 C   s   t dƒ‚)NzNo array representation)ÚRuntimeError)r    r¾   Úcopyr'   r'   r(   Ú	__array__à  rÆ   zMyValue.__array__)NN)rU  rV  rW  Ú__doc__rc  re  rf  ri  r'   r'   r'   r(   r±   Ð  s    r±   c                   @   sH  e Zd Zdd„ Zdd„ Zedd„ ƒZdd„ Zd	d
„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zedd„ ƒZej d¡edd„ ƒƒZedd„ ƒZdd„ Zed d!„ ƒZejjd"d#„ ƒZejjd$d%„ ƒZej d&d'd(g¡d)d*„ ƒZeed+d,„ ƒƒZd-d.„ Zd/d0„ Zd1d2„ Z d3d4„ Z!d5d6„ Z"d7d8„ Z#d9d:„ Z$ej d;d<d=g¡d>d?„ ƒZ%d@S )AÚTestInterpNc              	   C   sT   t  g d¢¡}t  g d¢¡}t  g d¢g d¢g d¢g d¢g d¢g d¢g¡}|||fS )N)r   r3   r5   r  r  g      @)rS   r-   rS   r-   rS   rS   )rS   r-   rd   r-   rS   rS   )rS   r-   r-   r-   rS   rS   )r   rX   )r    rh   ri   rÞ   r'   r'   r(   Ú_sample_2d_dataå  s   úÿ

zTestInterpN._sample_2d_datac                 C   sp   |   ¡ \}}}t|||ƒ}t g d¢g d¢g¡j}tt||f||dd�| |d d …df |d d …df ¡ƒ d S )N©rS   çffffff@rÍ   r   rB  ç333333ó?rd   ©rS   rB  ro  r  r.   r   rd   Ú	splinef2dr>   r   rS   )rl  r
   r   rX   rÛ   r   r	   Úev)r    rh   ri   rÞ   Úlutr  r'   r'   r(   Útest_spline_2dô  s   
ÿÿ"ÿzTestInterpN.test_spline_2dc                 C   sp   |   ¡ \}}}t g d¢g d¢g¡j}t||f|||d�}t| ¡ | ¡ f| ¡ | ¡ |d�}t|||d� d S )Nrm  rp  r>   )r'  )rl  r   rX   rÛ   r	   r?   r   )r    r   rh   ri   rÞ   r  rB   rC   r'   r'   r(   rD   ý  s   
ÿÿÿzTestInterpN.test_list_inputc              
   C   sÚ   t  g d¢¡}t  g d¢¡}t  g d¢g d¢g d¢g d¢g d¢g¡}t|||ƒ}t  g d¢g d¢g¡j}t||f||ddd	d
�}| |d d …df |d d …df ¡}d	|dd…< t||ƒ ttt||f||ddd d
� d S )Nr  ©rS   r-   rS   r-   rS   ©rS   r-   rd   r-   rS   ©rS   r-   r-   r-   rS   ©rS   rn  rÏ   r   rB  ro  rd   ©rS   rB  ro  g      Àr.   r   rd   rq  FçR¸…ë?�@rÊ   r   rS   r-   r   )	r   rX   r
   rÛ   r	   rr  r   rY   rK   )r    rh   ri   rÞ   rs  r  ÚactualÚexpectedr'   r'   r(   Útest_spline_2d_outofbounds  s(   ÿ
ÿÿÿ$

ÿz&TestInterpN.test_spline_2d_outofboundsc                 C   r+   r,   r   r   r'   r'   r(   Ú_sample_4d_data  s   zTestInterpN._sample_4d_datac                 C   sH   |   ¡ \}}t||ƒ}t g d¢g¡}t|||dd�}t||ƒ|ƒ d S )NrM   rO   r>   ©r~  r   r   r   r	   r   ©r    r!   r"   Ú	interp_rgr@   ry   r'   r'   r(   Útest_linear_4d%  s
   
zTestInterpN.test_linear_4dc                 C   óJ   |   ¡ \}}t g d¢g¡}t dg¡}t|||dddd�}t||ƒ d S )N©r9   rŽ   g333333$@rN   rz  rO   FrÊ   ©r~  r   r   r	   r   ©r    r!   r"   r@   ry   r{  r'   r'   r(   Útest_4d_linear_outofbounds-  ó   
ÿz&TestInterpN.test_4d_linear_outofboundsc                 C   sL   |   ¡ \}}t||dd�}t g d¢g¡}t|||dd�}t||ƒ|ƒ d S )Nr‚   r>   rM   r  r€  r'   r'   r(   Útest_nearest_4d6  s
   zTestInterpN.test_nearest_4dc                 C   rƒ  )Nr„  rz  r‚   FrÊ   r…  r†  r'   r'   r(   Útest_4d_nearest_outofbounds>  rˆ  z'TestInterpN.test_4d_nearest_outofboundsc                 C   sT   |   ¡ \}}t g d¢¡}t|||dd�}t|||d d d …f dd�}t||ƒ d S )NrM   F)r‹   )r~  r   r   r	   r   ©r    r!   r"   r@   rB   rC   r'   r'   r(   Ú
test_xi_1dG  s
   zTestInterpN.test_xi_1dc                 C   sx   |   ¡ \}}tj d¡ tj ddd¡}t|||ddd�}|jdks$J ‚t||| d	d¡ddd�}t|| |j¡ƒ d S )
Nr´   r-   rd   r   r‚   Frõ   ©r-   rd   r    )	r~  r   r¶   r·   r¸   r	   rÂ   r£   r   r‹  r'   r'   r(   Ú
test_xi_ndO  s   
ÿÿzTestInterpN.test_xi_ndc                 C   sÄ   |   ¡ \}}}||f}t ddd¡}t ddd¡}|d d …d f |d d d …f f}t||||dd�}	|	jdks9J ‚t ||¡\}
}tj|
j ¡ |j ¡ f }t||||dd�}t	|	| 
|	j¡ƒ d S )Nr   rS   r-   rd   Frõ   r�  )rl  r   r°   r	   rÂ   ro   Úc_rÛ   Úravelr   r£   )r    r   rh   ri   r"   r!   r  Úyir@   rB   ÚxxÚyyrC   r'   r'   r(   Útest_xi_broadcast^  s    ÿzTestInterpN.test_xi_broadcastrª   c                    s®   ˆ dkr	t  d¡ dgd dgd  ‰tj d¡}| d¡‰| d¡‰tˆˆˆˆ d	d
�}|jdks5J ˆ ƒ‚‡ ‡‡‡fdd„tdƒD ƒ}t |¡ 	ddd¡}t
||dˆ d� d S )NrF   r  r  r-   r   r´   r#  r$  Frõ   r%  c              	      s&   g | ]}t ˆˆd |f ˆˆ dd�‘qS ©.Frõ   ©r	   )r�   r,  ©r   r!   r@   r"   r'   r(   rŸ   †  s
    ÿ
ÿz5TestInterpN.test_nonscalar_values.<locals>.<listcomp>rö   rS   r   rl   r&  )rJ   r^   r   r¶   rí   r	   rÂ   r
  rX   r)  r   )r    r   rð   r*  r+  rC   r'   r—  r(   r-  r  s&   
ÿþ


ÿÿz!TestInterpN.test_nonscalar_valuesc                    s²   ˆ dv r	t  d¡ g d¢‰tj d¡}d}| dddd	g|¢R ¡‰| d
¡‰tˆˆˆˆ dd�}|jdg|¢R ks:J ‚‡ ‡‡‡fdd„tˆjd ƒD ƒ}t|t 	|¡j
dˆ d� d S )N>   rE   rF   r  r/  r´   r5  rË   r«   rö   r6  r   Frõ   rS   c                    s0   g | ]‰ ‡ ‡‡‡‡fd d„t ˆjd ƒD ƒ‘qS )c              	      s(   g | ]}t ˆˆd |ˆ f ˆˆdd�‘qS r•  r–  )r�   rñ   )r,  r   r!   r@   r"   r'   r(   rŸ   ¦  s    ÿÿÿzBTestInterpN.test_nonscalar_values_2.<locals>.<listcomp>.<listcomp>r7  )r
  rÂ   )r�   r—  )r,  r(   rŸ   ¦  s
    ý
þz7TestInterpN.test_nonscalar_values_2.<locals>.<listcomp>r    rl   r&  )rJ   r^   r   r¶   rí   r	   rÂ   r
  r   r   rÛ   )r    r   rð   r=  r*  r+  r'   r—  r(   r>  Œ  s   

ýz#TestInterpN.test_nonscalar_values_2c                 C   sT   |   ¡ \}}tj d¡ tj ddddd¡}tj ddd¡}ttt|||dd� d S )	Nr´   rd   rË   r«   rÌ   r   rq  r>   )r~  r   r¶   r·   r¸   rY   rK   r	   )r    r!   r"   r@   r'   r'   r(   Ú test_non_scalar_values_splinef2d­  s   
ÿz,TestInterpN.test_non_scalar_values_splinef2dc                 C   sš   |dkr	t  d¡ |  ¡ \}}}||f}|d|  }t g d¢g d¢g¡j}t||||d�}t||j||d�}t||j||d�}	|d|	  }
t	||
ƒ d S )NrG   r[   r\   rm  rp  r>   r]   )
rJ   r^   rl  r   rX   rÛ   r	   r_   r`   r   )r    r   rh   ri   r"   r!   r@   rB   Úv2rÚv2irC   r'   r'   r(   rc   ·  s   

ÿÿzTestInterpN.test_complexc                 C   s~   |   ¡ \}}}||f}|d|  }t g d¢g d¢g¡j}tjtdd�� t|||dd� W d   ƒ d S 1 s8w   Y  d S )Nr\   rm  rp  r_   rH   rG   r>   )rl  r   rX   rÛ   rJ   r   rK   r	   ©r    rh   ri   r"   r!   r@   r'   r'   r(   Útest_complex_pchipÊ  s   
ÿÿ"ÿzTestInterpN.test_complex_pchipc                 C   sx   |   ¡ \}}}||f}|d|  }t g d¢g d¢g¡j}ttƒ� t|||dd� W d   ƒ d S 1 s5w   Y  d S )Nr\   rm  rp  rq  r>   )rl  r   rX   rÛ   r   r   r	   r›  r'   r'   r(   Útest_complex_spline2fdÖ  s   
ÿÿ
"ÿz"TestInterpN.test_complex_spline2fdr   rO   r‚   c                 C   sh   t  ddd¡}t  ddd¡}tdƒ}t||f|ddg|d	�}t||f|jddg|d	�}t||d
d� d S )Nr   r-   rª   rS   r«   r¬   r�   r­   r>   Fr®   )r   r°   r±   r	   r²   r   )r    r   rh   ri   r"   rB   rC   r'   r'   r(   r³   â  s   z"TestInterpN.test_duck_typed_valuesc                 C   s–   t  ddd¡}t  ddd¡}tt j dd¡ƒ}t j ddd¡}t||f|||d�}t||ft  |¡||d�}|dkrDt||d	d
d� dS t||ƒ dS )z8np.matrix inputs are allowed for backwards compatibilityr   r-   rË   rS   r«   rd   r>   rF   g-Cëâ6
?g�íµ ÷ÆÀ>rm   N)r   r°   r   r¶   r¸   r	   r   r   )r    r   rh   ri   r"   r@   rB   rC   r'   r'   r(   Útest_matrix_inputð  s   zTestInterpN.test_matrix_inputc                 C   s¢   t  g d¢g¡}t  ddgddgddgg¡}tdgg d¢f||ƒ}g d¢}t||dd	� t  d
dgddgddgg¡}tdgg d¢f||dd d�}t||dd	� d S )N)r9   rS   r   rS   gš™™™™™@gš™™™™™	@gffffff@)r-   rd   r   )gìQ¸…ëÑ?gffffff@gffffff @rU   rV   r‡   r2   gffffffÀFrŠ   )r   rX   r	   r   )r    r"   r  rò   ry   r'   r'   r(   rÕ     s   ÿz TestInterpN.test_length_one_axisc              	   C   s  dd„ }t  g d¢¡}t  g d¢¡}t  g d¢¡}t  g d¢¡}||||f}|t j|dddœŽŽ }d	d
t  t  ddd¡¡t  dd
d¡f}t|||ƒ}	|d d d… }
|d d d… }|d d d… }|d d d… }|
|||f}|t j|dddœŽŽ }t|||ƒ}t|	|ƒ d S )Nc                 S   s    d| d  d|d   | | S rý   r'   rÿ   r'   r'   r(   Úvalue_func_4d  s    z9TestInterpN.test_descending_points.<locals>.value_func_4d)r   rS   r-   rd   )r   r   r»   r¼   )r   r9   r<   rÒ   re   TrÇ   r9   rÒ   r   r¼   r   r    )r   rX   ro   r)  r°   r	   r   )r    rŸ  Úx1Úx2Úx3Úx4r!   r"   rD  Úcorrect_resultÚ
x1_descendÚ
x2_descendÚ
x3_descendÚ
x4_descendÚpoints_shuffledÚvalues_shuffledÚtest_resultr'   r'   r(   Útest_descending_points  s.   ÿÿÿz"TestInterpN.test_descending_pointsc                 C   s¤   t  g d¢¡}t  g d¢¡}t  g d¢g d¢g d¢g d¢g d¢g¡}t  g d¢g d¢g¡j}d}tjt|d	�� t||f||ƒ W d   ƒ d S 1 sKw   Y  d S )
Nr  r  ru  rv  rw  rx  ry  r  rH   )r   rX   rÛ   rJ   r   rK   r	   )r    rh   ri   rÞ   r  rI   r'   r'   r(   r  3  s   ÿ
ÿÿ"ÿz%TestInterpN.test_invalid_points_orderc                 C   sZ   dg}ddg}t  d¡}d}tt|d�� t|||ƒ W d   ƒ d S 1 s&w   Y  d S )N)r   rS   r   rS   )rS   rS   rd   zaThe requested sample points xi have dimension 3, but this RegularGridInterpolator has dimension 1rH   )r   rÁ   rY   rK   r	   )r    r!   r"   r  Úmsgr'   r'   r(   Útest_invalid_xi_dimensions?  s   
"ÿz&TestInterpN.test_invalid_xi_dimensionsc                 C   sŒ   t  ddd¡}t  ddd¡}t  ddd¡}|||f}t  d¡}t  g d¢¡}|D ]}d|j_q(d|j_d|j_t|||ƒ t||ƒ|ƒ d S )	Nr   r   rª   rË   r«   ©rª   rË   r«   ©ç®Gáz®@çö(\�Âõ@gffffffò?F©r   r°   rÁ   rX   ÚflagsÚ	writeabler	   r   )r    rh   ri   rÞ   r!   r"   ÚpointÚdr'   r'   r(   Útest_readonly_gridI  s   


zTestInterpN.test_readonly_gridc                 C   s|   t  ddd¡}t  ddd¡}||f}t  d¡}t  ddg¡}|D ]}d|j_q d|j_d|j_t|||ƒ t||ƒ|ƒ d S )	Nr   r   rª   rË   ©rª   rË   r±  r²  Fr³  )r    rh   ri   r!   r"   r¶  r·  r'   r'   r(   Útest_2d_readonly_gridX  s   

z!TestInterpN.test_2d_readonly_gridc                 C   sœ   t  ddd¡}t  |t  |¡f¡j ¡ d d …df }|jjr J ‚t  ddd¡}t  ddd¡}|||f}t  d¡}t  	g d¢¡}t
|||ƒ t||ƒ|ƒ d S )Nr   r   rª   rË   r«   r¯  r°  )r   r°   rÚ   Ú
empty_likerÛ   rh  r´  Úc_contiguousrÁ   rX   r	   r   )r    rh   ri   rÞ   r!   r"   r¶  r'   r'   r(   Útest_non_c_contiguous_gridg  s   &

z&TestInterpN.test_non_c_contiguous_gridr¾   z>f8z<f8c                 C   sj   t jddd|d�}t jddd|d�}||f}t jd|d�}t jddg|d�}t|||ƒ t||ƒ|ƒ d S )	Nr   r   rª   r½   rË   r¹  r±  r²  )r   r°   rÁ   rX   r	   r   )r    r¾   rh   ri   r!   r"   r¶  r'   r'   r(   Útest_endiannesst  s   zTestInterpN.test_endiannessN)&rU  rV  rW  rl  rt  rX  rD   r}  r~  r‚  r‡  r‰  rŠ  rŒ  rŽ  r”  rJ   rY  r[  r-  r>  r˜  rc   r`  rœ  r�  rZ  r³   r   rž  rÕ   r¬  r  r®  r¸  rº  r½  r¾  r'   r'   r'   r(   rk  ä  sX    	


		


 



þ


rk  )!r¡   rJ   Únumpyr   Únumpy.testingr   Úscipy._lib._array_apir   r   r   Úscipy.conftestr   r   rY   Úscipy.interpolater   r	   r
   r   r   Úscipy.sparse._sputilsr   Úscipy._lib._utilr   Úscipy._lib._testutilsr   rY  rZ  Ú_ALL_METHODSrX  r   r±   rk  r'   r'   r'   r(   Ú<module>   s,    ÿ     :