a
    hÝEbc.  ã                   @   s  d Z ddlZ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 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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d(d)„ Z G d*d+„ d+ƒZ!d,d-„ Z"d.d/„ Z#dS )0zƒTests of interaction of matrix with other parts of numpy.

Note that tests with MaskedArray and linalg are done in separate files.
é    N)Úassert_Úassert_equalÚassert_raisesÚassert_raises_regexÚassert_array_equalÚassert_almost_equalÚassert_array_almost_equalc                  C   s|   t  ddgddgg¡} tt| g d¢d d …f t jƒƒ t  t  d¡ dd¡¡}t|d d…t  d	¡f |d d…d	f j	ƒ d S )
Né   é   é   é   )r   r	   r   é2   é   é
   éÿÿÿÿ)
ÚnpÚmatrixr   Ú
isinstanceÚasmatrixÚarangeÚreshaper   ÚarrayÚT)ÚmÚx© r   úf/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/numpy/matrixlib/tests/test_interaction.pyÚtest_fancy_indexing   s     r   c                  C   sD   ddg} ddg}t  | | g¡}t jj || |¡}tt|t jƒƒ d S )Nr   r   r	   r   )r   r   Z
polynomialZ	polyutilsZ	mapdomainr   r   )Zdom1Zdom2r   Úresr   r   r   Útest_polynomial_mapdomain   s
    r   c                  C   sN   t  g d¢g¡} t j| d d�}t  g d¢g¡}t||ƒ tt|ƒt ju ƒ d S )N©r
   r	   r   ©Úaxis©r   r	   r
   )r   r   Úsortr   r   Útype©ÚaÚactualÚexpectedr   r   r   Útest_sort_matrix_none)   s
    
r*   c                  C   sP   t  g d¢g¡} t j| dd d�}t  g d¢g¡}t||ƒ tt|ƒt ju ƒ d S )Nr    r	   r!   r#   )r   r   Ú	partitionr   r   r%   r&   r   r   r   Útest_partition_matrix_none2   s
    
r,   c                  C   sN   t jddgtd�} t jddggtd�}tt  | d¡|ƒ tt  d| ¡|ƒ d S ©Nr	   r
   ©Zdtyper   é   )r   r   Úobjectr   Údot©ÚarrÚdesiredr   r   r   Ú%test_dot_scalar_and_matrix_of_objects<   s    r5   c                  C   sŒ   t jd t jd  d D ]n} t jd| d�d }t jddgdd	gg| d�}t jdd
gddgg| d�}tt  ||¡|ƒ tt  ||¡|ƒ qd S )NZ
AllIntegerZAllFloatú?r   r.   r   r	   r
   r   r/   é	   é   )r   Ú	typecodesr   r   r   Úinner)ÚdtZscar3   r4   r   r   r   Útest_inner_scalar_and_matrixE   s    r<   c                  C   sN   t jddgtd�} t jddggtd�}tt  | d¡|ƒ tt  d| ¡|ƒ d S r-   )r   r   r0   r   r:   r2   r   r   r   Ú'test_inner_scalar_and_matrix_of_objectsO   s    r=   c               	   C   s0  t  ddgddgg¡} t  d¡ dd¡j}t  | |d gg dgdgddgg¡}tt|jd ƒt ju ƒ tt|jd ƒt j	uƒ t
|jd jdƒ t  d¡ ddd¡}ttt j| |d gg dgdgddggƒ t  | |d gg dgdgg d	¢g¡}tt|jd ƒt j	u ƒ tt|jd ƒt juƒ t
|jd jd
ƒ d S )Nr	   r
   r   r   ÚreadonlyÚ	writeonlyÚallocate)r
   r
   )r?   r@   Z
no_subtype)r	   r
   r
   )r   r   r   r   r   Znditerr   r%   ZoperandsÚndarrayr   Úshaper   ÚRuntimeError)r'   ÚbÚir   r   r   Ú!test_iter_allocate_output_subtypeX   s(    ÿÿÿÿrF   c                  C   sh   t  ddgddgg¡} t jt jt jfD ]<}|| ƒ}tt|ƒt ju ƒ || dd�}tt|ƒt juƒ q&d S )Nr	   r
   r   r   F)Úsubok)r   r   Z
zeros_likeZ	ones_likeZ
empty_liker   r%   )r'   Úlike_functionrD   Úcr   r   r   rH   s   s    rH   c                  C   sš   t jg d¢g d¢gdd�} | jdddd�}t| |u ƒ | jddd	�}t| |ƒ tt|ƒt jƒ | jdddd�}t| |ƒ t| |uƒ tt|ƒt juƒ d S )
Nr#   )r   r   r   Zf4r.   TF)rG   ÚcopyÚi4)rJ   )r   r   Zastyper   r   r%   ©r'   rD   r   r   r   Útest_array_astype~   s    

rM   c                  C   s.   t  ddgddgg¡} ttdt j| | gƒ d S )Nr	   r
   r   r   zshape too large to be a matrix)r   r   r   Ú
ValueErrorÚstack)r   r   r   r   Ú
test_stack‘   s    
ÿrP   c                  C   sN   t jddgtd�} t jddggtd�}tt  | d¡|ƒ tt  d| ¡|ƒ d S r-   )r   r   r0   r   Úmultiplyr2   r   r   r   Útest_object_scalar_multiply™   s    rR   c               	   C   sD  t  t  d¡¡} t jt jfD ]n}|| dd�}tt|t jƒƒ t|jdkƒ || dd�}tt|t jƒƒ t|jdkƒ || ƒ}tt  |¡ƒ qt j	| d< t jt jfD �]š}t
jdd��\}t
 d	¡ || dd�}tt|t jƒƒ tt  t  |¡¡ ƒ tt|ƒdkƒ W d   ƒ n1 �s0    Y  t
jdd��’}t
 d	¡ || dd�}tt|t jƒƒ tt  |d
 ¡�oˆt  |d ¡ �oˆt  |d ¡ ƒ tt|ƒdkdƒ tt|d jtƒƒ W d   ƒ n1 �sÈ0    Y  t
jdd��N}t
 d	¡ || ƒ}tt  |¡ƒ t|t j	kƒ tt|ƒdkƒ W d   ƒ q¢1 �s40    Y  q¢d S )Nr   r   r!   ©r	   r   r	   ©r   r	   T)ÚrecordÚalways)r	   r   )r   r   )r
   r   zno warning raised)r   r   ÚeyeZnanminZnanmaxr   r   rB   ÚisscalarÚnanÚwarningsÚcatch_warningsÚsimplefilterÚanyÚisnanÚlenÚ
issubclassÚcategoryÚRuntimeWarning)ÚmatÚfr   Úwr   r   r   Útest_nanfunctions_matrices¢   sB    

0
$ÿ4
rf   c                  C   s0  t  t  d¡¡} t jt jt jt jt jt jt j	fD ]n}|| dd�}t
t|t jƒƒ t
|jdkƒ || dd�}t
t|t jƒƒ t
|jdkƒ || ƒ}t
t  |¡ƒ q0t jt jfD ]~}|| dd�}t
t|t jƒƒ t
|jdkƒ || dd�}t
t|t jƒƒ t
|jdkƒ || ƒ}t
t|t jƒƒ t
|jdkƒ q¬d S )	Nr   r   r!   rS   r	   rT   )r   r   )r	   r7   )r   r   rW   Z	nanargminZ	nanargmaxZnansumZnanprodZnanmeanZnanvarZnanstdr   r   rB   rX   Z	nancumsumZ
nancumprod)rc   rd   r   r   r   r   Ú"test_nanfunctions_matrices_generalË   s,    ÿrg   c                  C   sŒ   t  t j dd¡¡} t|  d¡t  | d¡ƒ t  ddgddgg¡}t  ddgddgg¡}t j|d|d�}tt|ƒt jƒ t|dd	ggƒ d S )
Nr   r   r	   r
   r   r   )r"   Úweightsg      @g«ªªªªª
@)	r   r   ÚrandomZrandr   ÚmeanZaverager   r%   )Úyr'   re   Úrr   r   r   Útest_average_matrixç   s    rm   c                  C   sN   t  dd¡} | |  }t  || ¡}t  | ¡}t  |¡}t  ||¡}t||ƒ d S )Nr   r   )r   ZlinspaceZtrapzr   r   )r   rk   rl   ZmxZmyÚmrr   r   r   Útest_trapz_matrixô   s    

ro   c                   C   s@   t t t d¡¡tjƒsJ ‚t tjt d¡dd�tjƒs<J ‚d S )Nr	   )Zto_begin)r   r   Zediff1dr   r   r   r   r   Útest_ediff1d_matrix   s    rp   c                  C   sˆ   dd„ } t  ddgddgg¡}t  ddgddgg¡}t  | d|¡}tt|t jƒƒ t||ƒ t  | d|¡}tt|t jƒƒ t||ƒ d S )	Nc                 S   s   | d S ©Nr
   r   )Úrowr   r   r   Údouble
  s    z,test_apply_along_axis_matrix.<locals>.doubler   r	   r
   r   r   r/   )r   r   Zapply_along_axisr   r   r   )rs   r   r)   Úresultr   r   r   Útest_apply_along_axis_matrix  s    
ru   c                  C   s|   t  ddg¡} t  | ¡}ttt  | | ¡ƒt jƒ ttt  ||¡ƒt jƒ ttt  | |¡ƒt jƒ ttt  || ¡ƒt jƒ d S rq   )r   Zonesr   r   r%   ZkronrA   r   )r'   r   r   r   r   Útest_kron_matrix  s    
rv   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestConcatenatorMatrixc                    sž   ddg‰ ddg‰t jdˆ ˆf }t jdˆ ˆf }tt|ƒt jƒ tt|ƒt jƒ tt  |¡g d¢gƒ tt  |¡dgdgdgdggƒ tt‡ ‡fdd	„ƒ d S )
Nr	   r
   r   r   rl   rI   )r	   r
   r   r   c                      s   t jdˆ ˆf S )NÚrc)r   Úr_r   rL   r   r   Ú<lambda>2  ó    z4TestConcatenatorMatrix.test_matrix.<locals>.<lambda>)r   ry   r   r%   r   r   r   rN   )ÚselfZab_rZab_cr   rL   r   Útest_matrix%  s     z"TestConcatenatorMatrix.test_matrixc                 C   s>   t jdddgdf }tt|ƒt jƒ tt  |¡g d¢gƒ d S )Nrl   r	   r
   r   )r	   r
   r   )r   ry   r   r%   r   r   )r|   rl   r   r   r   Útest_matrix_scalar4  s    z)TestConcatenatorMatrix.test_matrix_scalarc                 C   sp   t  dg¡}t  dg¡}t  dg¡}t  dg¡}t jd }t  ||g||gg¡}t||ƒ tt|ƒt|ƒƒ d S )Nr	   r
   r   r   z
a, b; c, d)r   r   ry   Zbmatr   r%   )r|   r'   rD   rI   Údr(   r)   r   r   r   Útest_matrix_builder9  s    

z*TestConcatenatorMatrix.test_matrix_builderN)Ú__name__Ú
__module__Ú__qualname__r}   r~   r€   r   r   r   r   rw   #  s   rw   c                  C   sj   t  t¡�.} tt ddg¡t ddg¡ƒ W d   ƒ n1 s>0    Y  t| jƒ}t	 
d¡}t||ƒ d S )Nr	   r
   zl
    Arrays are not equal

    (shapes (2,), (1, 2) mismatch)
     x: array([1, 2])
     y: matrix([[1, 2]]))ÚpytestZraisesÚAssertionErrorr   r   r   r   ÚstrÚvalueÚtextwrapÚdedent)Úexc_infoÚmsgZmsg_referencer   r   r   Ú%test_array_equal_error_message_matrixE  s
    <

rŒ   c                  C   s²   t  ddgg¡} t  dt jgg¡}t  dt j gg¡}t  t jt jgg¡}t  ddgt jt jgg¡}ttfD ]@}| ||||fD ],}|||ƒ t  |¡}|||ƒ |||ƒ q~qld S )Ng      ð?g       @)r   r   rY   Úinfr   r   r   )Úm1Úm2Zm3Zm4Zm5Zassert_funcr   r'   r   r   r   Útest_array_almost_equal_matrixT  s    


r�   )$Ú__doc__r„   rˆ   rZ   Únumpyr   Znumpy.testingr   r   r   r   r   r   r   r   r   r*   r,   r5   r<   r=   rF   rH   rM   rP   rR   rf   rg   rm   ro   rp   ru   rv   rw   rŒ   r�   r   r   r   r   Ú<module>   s6   $
	
	
		)
"