U
    e»{j¼  ã                   @   sÔ   d dl Zd dlZd dlmZ d dlmZ d dlm	Z	m
Z
 d dlmZ d dlmZmZ G dd„ de
e	ƒZG d	d
„ d
eƒZdd„ Zdd„ Zdd„ Zej dddg¡dd„ ƒZdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS ) é    N)Úassert_array_equal)Úunits)ÚNDDataÚNDSlicingMixin)Ú_testing)ÚNDUncertaintyÚStdDevUncertaintyc                   @   s   e Zd ZdS )ÚNDDataSliceableN)Ú__name__Ú
__module__Ú__qualname__© r   r   úi/var/www/html/bwave/python/venv/lib/python3.8/site-packages/astropy/nddata/mixins/tests/test_ndslicing.pyr	      s   r	   c                   @   s8   e Zd Zedd„ ƒZdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚSomeUncertaintyc                 C   s   dS )NZfaker   )Úselfr   r   r   Úuncertainty_type   s    z SomeUncertainty.uncertainty_typec                 C   s   d S ©Nr   ©r   ÚdataZ
final_datar   r   r   Ú_propagate_add   s    zSomeUncertainty._propagate_addc                 C   s   d S r   r   r   r   r   r   Ú_propagate_subtract   s    z#SomeUncertainty._propagate_subtractc                 C   s   d S r   r   r   r   r   r   Ú_propagate_multiply!   s    z#SomeUncertainty._propagate_multiplyc                 C   s   d S r   r   r   r   r   r   Ú_propagate_divide$   s    z!SomeUncertainty._propagate_divideN)	r
   r   r   Úpropertyr   r   r   r   r   r   r   r   r   r      s   
r   c                  C   s6   t  d¡} t| ƒ}|dd… }t| dd… |jƒ d S )Né
   é   é   )ÚnpÚaranger	   r   r   )r   ÚndÚnd2r   r   r   Útest_slicing_only_data(   s    
r!   c               	   C   s8   t  d¡} t| ƒ}t t¡� |d d …  W 5 Q R X d S )Nr   )r   Úarrayr	   ÚpytestÚraisesÚ	TypeError©r   r   r   r   r   Útest_slicing_data_scalar_fail/   s    
r'   c               	   C   sD   t  ddg¡} t| ƒ}t t¡� |d d …d d …f  W 5 Q R X d S )Nr   é   )r   r"   r	   r#   r$   Ú
IndexErrorr&   r   r   r   Útest_slicing_1ddata_ndslice7   s    r*   Ú	prop_nameÚmaskÚuncertaintyc              	   C   sR   t  d¡}| t  d¡i}t|f|Ž}t t¡� |d d …d d …f  W 5 Q R X d S )N)é   r.   r.   )r   Zonesr	   r#   r$   r)   )r+   r   Úkwargr   r   r   r   Útest_slicing_1dmask_ndslice?   s
    
r0   c            	      C   sþ   t  d¡} | dk}tt  ddd¡ƒ}d}tj|dg| dg| dg| dg| d�}tj}ddi}t| |||||d	�}|d
d… }t	| d
d… |j
ƒ t	|d
d… |jƒ t	|d
d… j|jjƒ |j d¡|j d¡ksÞt‚||jksìt‚||jksút‚d S )Nr   r.   r(   é   Údeg©ÚnaxisÚctypeZcrpixZcrvalZcdeltZobserverZBrian)r,   r-   ÚwcsÚunitÚmetar   r   )r   r   r   ÚlinspaceÚ
nd_testingÚ_create_wcs_simpleÚuÚsr	   r   r   r,   r"   r-   r6   Úpixel_to_worldÚAssertionErrorr7   r8   )	r   r,   r-   r4   r6   r7   r8   r   r    r   r   r   Útest_slicing_all_npndarray_1dK   s8    
û     ÿr@   c                  C   sj  t  d¡ ddd¡} | dk}t  ddd¡ ddd¡}d}tj|dg| dg| dg| dg| d�}t| |||d�}|d	d
… }t| d	d
… |jƒ t|d	d
… |j	ƒ t|d	d
… |j
jƒ |d	d
…d d …dd…f }t| d	d
…d d …dd…f |jƒ t|d	d
…d d …dd…f |j	ƒ t|d	d
…d d …dd…f |j
jƒ |j dd
d¡|j d
d
d¡k�sft‚d S )Niè  r   r.   r(   r2   r1   r3   ©r,   r-   r6   r   r   é   é   )r   r   Zreshaper9   r:   r;   r	   r   r   r,   r-   r"   r6   r>   r?   ©r   r,   r-   r4   r6   r   r    r   r   r   Útest_slicing_all_npndarray_ndg   s*    û""$rE   c                  C   sÒ   t  d¡} | dkdd… }t  ddd¡}d}tj|dg| dg| dg| dg| d	�}t| |||d
�}|dd… }t| dd… |jƒ t|dd… |jƒ t|dd… |j	j
ƒ |j d¡|j d¡ksÎt‚d S )Nr   r.   r   é	   r(   é   r1   r2   r3   rA   r   r   )r   r   r9   r:   r;   r	   r   r   r,   r-   r"   r6   r>   r?   rD   r   r   r   Ú%test_slicing_all_npndarray_shape_diffƒ   s"    
ûrH   c                  C   s¼   t  d¡} dgd }dddœ}d}tj|dg| dg| dg| dg| d	�}t| |||d
�}|dd… }t| dd… |jƒ t|dd… |jƒ ||jk |j	 
d¡|j	 
d¡ks¸t‚d S )Nr   Fg333333@gffffffö?)ZrdnoiseZgainr1   r2   r.   r3   rA   r   r   )r   r   r:   r;   r	   r   r   r,   r-   r6   r>   r?   rD   r   r   r   Ú test_slicing_all_something_wrong™   s"    


û
rI   c               	   C   sÖ   t  d¡} |  ¡ }t|  ¡ ƒ}d}tj|dg| dg| dg| dg| d�}t| |||d�}t t	¡� ||j
dk|j
dk @  }W 5 Q R X d |_||j
dk|j
dk @  }t| dd… |j
ƒ t|dd… |jƒ d S )Nr   r1   r2   r.   r3   rA   é   )r   r   Úcopyr   r:   r;   r	   r#   r$   Ú
ValueErrorr   r6   r   r,   rD   r   r   r   Útest_boolean_slicing°   s$    
û"rM   )Únumpyr   r#   Znumpy.testingr   Zastropyr   r<   Zastropy.nddatar   r   r   r:   Zastropy.nddata.nduncertaintyr   r   r	   r   r!   r'   r*   ÚmarkZparametrizer0   r@   rE   rH   rI   rM   r   r   r   r   Ú<module>   s$   
