U
    e»{jä+  ã                   @   s�  d Z ddlZddlZddlZddlmZ e ej¡Z	e ej
¡Ze edƒee e¡jd ƒ¡Ze e	dƒe	e e	¡jd ƒ¡Zde e¡j> Zejdddede	eƒde	eƒ ge	d�Zej d	ddg¡d
d„ ƒZej d	deeeƒeg¡dd„ ƒZej dddeeg¡dd„ ƒZej ddddg¡dd„ ƒZej ddddddgddfddgddfg¡dd„ ƒZej d	ddd d!g¡d"d#„ ƒZej d$d%d&d'd(d)d*d+d,d-d.d/d0g¡d1d2„ ƒZej d$d3d4d5d6d7d8d9gdfd:d;d<d=d>d?d@g¡dAdB„ ƒZej dCdDdEdFdGdHdIdJdKdLdMg
¡dNdO„ ƒZej d	dddge g¡dPdQ„ ƒZ!ej d	dRdSg¡dTdU„ ƒZ"dVdW„ Z#ej d	dddgdXg¡dYdZ„ ƒZ$d[d\„ Z%ej d	d]d^d_d`dadbdcdddeg	¡dfdg„ ƒZ&dhdi„ Z'ej djedddej(ej)dg fedddej(ej)dg fedegddej(dddddddgfedddej(ej)dg fedegddej(dddddddgfedegddej*dddddddgfg¡dkdl„ ƒZ+ej d	dmdg¡dndo„ ƒZ,dpdq„ Z-ej d	ddg¡drds„ ƒZ.ej d	dtddg¡dudv„ ƒZ/ej dwddg¡dxdy„ ƒZ0ej dwddg¡dzd{„ ƒZ1ej dwddg¡d|d}„ ƒZ2ej dwddg¡d~d„ ƒZ3d€d�„ Z4ej d	ddg¡d‚dƒ„ ƒZ5ej d	dtddg¡d„d…„ ƒZ6d†d‡„ Z7dˆd‰„ Z8dŠd‹„ Z9dŒd�„ Z:dS )Žzz
A module containing unit tests for the `bitmask` module.

Licensed under a 3-clause BSD style license - see LICENSE.rst

é    N)Úbitmaské   é   é   éÿÿÿÿ)ÚdtypeÚflagc                 C   s   t j| d�rt‚d S ©N)Ún©r   Z_is_bit_flagÚAssertionError©r   © r   ú`/var/www/html/bwave/python/venv/lib/python3.8/site-packages/astropy/nddata/tests/test_bitmask.pyÚtest_nonpositive_not_a_bit_flag%   s    r   c                 C   s   t j| d�st‚d S r	   r   r   r   r   r   Útest_is_bit_flag*   s    r   Únumberc                 C   s   t  | ¡st‚d S ©N©r   Z_is_intr   ©r   r   r   r   Útest_is_int1   s    r   Ú1Tç      ð?c                 C   s   t  | ¡rt‚d S r   r   r   r   r   r   Útest_nonint_is_not_an_int6   s    r   zflag,flip,expected)é   Nr   )r   Téüÿÿÿ)r   Fr   Fr   r   c                 C   s   t j| |d�|kst‚d S ©N)Ú	bit_flagsÚ	flip_bits©r   Úinterpret_bit_flagsr   )r   ÚflipÚexpectedr   r   r   Ú"test_interpret_valid_int_bit_flags;   s    r#   ú ÚNoneÚIndefc                 C   s   t j| d�d kst‚d S ©N©r   r   r   r   r   r   Ú%test_interpret_none_bit_flags_as_NoneI   s    r)   zflag,expected)r   r   )z~-1r   )z~1éþÿÿÿ)z1,2r   )z1|2r   )z1+2r   )z(1,2)r   )z(1+2)r   )z~1,2r   )z~1+2r   )z~(1,2)r   )z~(1+2)r   c                 C   s   t j| d�|kst‚d S r'   r   )r   r"   r   r   r   Ú"test_interpret_valid_str_bit_flagsN   s    r+   )ÚCRr   )z~CRr*   )zCR|HOTr   )zCR,HOTr   )zCR+HOTr   r,   ÚHOT)z(CR,HOT)r   )z(HOT+CR)r   )z~HOT,CRr   )z~CR+HOTr   )z	~(HOT,CR)r   )z	~(HOT|CR)r   )z	~(CR+HOT)r   c                 C   s*   t jdddd�}t j| |d�|ks&t‚d S )NÚDetectorMapr   r   )r,   r-   )r   Zflag_name_map)r   Úextend_bit_flag_mapr    r   )r   r"   Zflagmapr   r   r   Ú'test_interpret_valid_mnemonic_bit_flagsc   s    ÿr0   z	flag,flip)NT)r$   T)r%   T)r&   T)NF)r$   F)r%   F)r&   F)r   T)r   Fc              	   C   s(   t  t¡� tj| |d� W 5 Q R X d S r   ©ÚpytestÚraisesÚ	TypeErrorr   r    )r   r!   r   r   r   Ú3test_interpret_None_or_str_and_flip_incompatibility}   s    r5   c              	   C   s&   t  t¡� tj| d� W 5 Q R X d S r'   r1   r   r   r   r   Útest_interpret_wrong_flag_type‘   s    r6   Z	SOMETHINGz1.0,2,3c              	   C   s&   t  t¡� tj| d� W 5 Q R X d S r'   ©r2   r3   Ú
ValueErrorr   r    r   r   r   r   Ú&test_interpret_wrong_string_int_format—   s    r9   c               	   C   st   t jdd��^} t  d¡ t dddg¡dks0t‚t| ƒs<t‚t| d jt	ƒsPt‚dt
| d jƒksft‚W 5 Q R X d S )	NT)ÚrecordÚalwaysr   é   é   r   Z	Duplicate)ÚwarningsÚcatch_warningsÚsimplefilterr   r    r   ÚlenÚ
issubclassÚcategoryÚUserWarningÚstrÚmessage)Úwr   r   r   Ú%test_interpret_duplicate_flag_warning�   s    
rH   z1, 2, 3c              	   C   s&   t  t¡� tj| d� W 5 Q R X d S r'   r7   r   r   r   r   Útest_interpret_non_flag¦   s    rI   c                   C   s   t jtdƒd�dkst‚d S )Nr   r(   )r   r    rE   r   r   r   r   r   Ú.test_interpret_allow_single_value_str_nonflags¬   s    rJ   ú~z( )z(~1,2)z~(1,2z1,~2z1,(2,4)z1,2+4z1+4,2z1|4+2c              	   C   s&   t  t¡� tj| d� W 5 Q R X d S r'   r7   r   r   r   r   Útest_interpret_bad_str_syntax°   s    rL   c                	   C   s&   t  t¡� t dd¡ W 5 Q R X d S )Nr   r   )r2   r3   r4   r   Úbitfield_to_boolean_maskr   r   r   r   Ú#test_bitfield_must_be_integer_check¹   s    rN   z!data,flags,flip,goodval,dtype,refc                 C   s8   t j| ||||d�}|j|ks"t‚t ||k¡s4t‚d S )N)ZbitfieldZignore_flagsr   Zgood_mask_valuer   )r   rM   r   r   ÚnpÚall)ÚdataÚflagsr!   Zgoodvalr   ÚrefÚmaskr   r   r   Útest_bitfield_to_boolean_mask¾   s    !ûrU   )r<   Zflag1c                 C   st   t  | ¡}t| tƒrd|| d ks$t‚|j| d ks6t‚t j| Ž }|| d ksPt‚|j| d kspt‚n|| kspt‚d S )Nr   r   )r   ÚBitFlagÚ
isinstanceÚtupler   Ú__doc__)r   Úfr   r   r   Útest_bitflagë   s    


r[   c                	   C   s&   t  t¡� t dd¡ W 5 Q R X d S )N)r   Zdocs1Zdocs2)r2   r3   r8   r   rV   r   r   r   r   Útest_bitflag_docs2ú   s    r\   c              	   C   s(   t  tj¡� t | d¡ W 5 Q R X d S ©Nzcustom flag©r2   r3   r   ÚInvalidBitFlagrV   r   r   r   r   Útest_bitflag_not_pow2ÿ   s    r`   g        c              	   C   s*   t  tj¡� t | df¡ W 5 Q R X d S r]   r^   r   r   r   r   Útest_bitflag_not_int_flag  s    ra   Úcachingc                 C   s`   |   tdd¡ G dd„ dtjƒ}G dd„ d|ƒ}|jdks>t‚|jjdksNt‚|jd	ks\t‚d S )
NÚ_ENABLE_BITFLAG_CACHINGFc                   @   s   e Zd ZdZdZdZdZdS )z(test_basic_map.<locals>.ObservatoryDQMapr   )r   ú
cosmic rayr   r<   N©Ú__name__Ú
__module__Ú__qualname__Ú_not_a_flagr,   r-   ÚDEADr   r   r   r   ÚObservatoryDQMap  s   rk   c                   @   s   e Zd ZdZdZdZdS )z#test_basic_map.<locals>.DetectorMapú1.0éµ   é   N)rf   rg   rh   Ú__version__ri   ÚREADOUT_ERRr   r   r   r   r.     s   r.   r   rd   rn   )Úsetattrr   ÚBitFlagNameMapÚcrr   rY   rp   ©Úmonkeypatchrb   rk   r.   r   r   r   Útest_basic_map  s    rv   c                 C   sT   |   td|¡ G dd„ dtjƒ}tjd|dddd�}|jd	ksBt‚|jdksPt‚d S )
Nrc   c                   @   s   e Zd ZdZdZdZdS )z)test_extend_map.<locals>.ObservatoryDQMapr   r   r<   N©rf   rg   rh   r,   r-   rj   r   r   r   r   rk   #  s   rk   r.   rl   r<   rn   )ro   rj   rp   r   )rq   r   rr   r/   r,   r   Úreadout_errrt   r   r   r   Útest_extend_map  s        ÿry   c              	   C   sv   |   td|¡ G dd„ dtjƒ}t t¡� tjd|ddd� W 5 Q R X t t¡� tjd|dddd	� W 5 Q R X d S )
Nrc   c                   @   s   e Zd ZdZdZdZdS )z7test_extend_map_redefine_flag.<locals>.ObservatoryDQMapr   r   r<   Nrw   r   r   r   r   rk   4  s   rk   r.   rl   é    )ro   rj   é@   )ro   rj   Zdead)rq   r   rr   r2   r3   ÚAttributeErrorr/   )ru   rb   rk   r   r   r   Útest_extend_map_redefine_flag0  s"       ÿ    ÿr}   c              	   C   s    |   td|¡ G dd„ dtjƒ}t t¡� G dd„ d|ƒ}W 5 Q R X t t¡� G dd„ d|ƒ}d|_W 5 Q R X t t¡� tjd	|d
ddd� W 5 Q R X d S )Nrc   c                   @   s   e Zd ZdZdZdZdZdS )z0test_map_redefine_flag.<locals>.ObservatoryDQMapr   r   r   r<   Nre   r   r   r   r   rk   H  s   rk   c                   @   s   e Zd ZdZdZdS )z,test_map_redefine_flag.<locals>.DetectorMap1rl   rn   N©rf   rg   rh   ro   r,   r   r   r   r   ÚDetectorMap1P  s   r   c                   @   s   e Zd ZdZdZdS )z,test_map_redefine_flag.<locals>.DetectorMap2r   rn   N)rf   rg   rh   ÚSHADEZ_FROZENr   r   r   r   ÚDetectorMap2V  s   r�   rz   r.   rn   é€   )rp   r€   rx   )rq   r   rr   r2   r3   r|   Znovelr/   )ru   rb   rk   r   r�   r   r   r   Útest_map_redefine_flagD  s        ÿrƒ   c               	   C   sN   G dd„ dt jƒ} | jdks t‚| jdks.t‚t t¡� d| _W 5 Q R X d S )Nc                   @   s   e Zd ZdZdZdS )z6test_map_cant_modify_version.<locals>.ObservatoryDQMapú1.2.3r   Nr~   r   r   r   r   rk   c  s   rk   r„   r   z3.2.1)r   rr   ro   r   r,   r2   r3   r|   )rk   r   r   r   Útest_map_cant_modify_versionb  s
    r…   c              	      sT   t  t¡� tjdˆ d� W 5 Q R X t  t¡� G ‡ fdd„dtjƒ}W 5 Q R X d S )Nr.   ©rj   c                       s   e Zd Z” ZdS )z*test_map_not_bit_flag.<locals>.DetectorMapN)rf   rg   rh   rj   r   r   r   r   r.   u  s   )r2   r3   r8   r   r/   rr   )r   r.   r   r   r   Útest_map_not_bit_flagn  s    r‡   c              	      sX   t  tj¡� tjdˆ d� W 5 Q R X t  tj¡� G ‡ fdd„dtjƒ}W 5 Q R X d S )Nr.   r†   c                       s   e Zd Z” ZdS )z/test_map_not_int_flag.<locals>.ObservatoryDQMapN)rf   rg   rh   r,   r   r   r   r   rk   €  s   rk   )r2   r3   r   r_   r/   rr   )r   rk   r   r   r   Útest_map_not_int_flagy  s    rˆ   c               	   C   sL   t jddd�} t t¡� | j W 5 Q R X t t¡� | d  W 5 Q R X d S ©Nr.   r   r†   ÚDEAD1©r   r/   r2   r3   r|   rŠ   ©r.   r   r   r   Útest_map_access_undefined_flag„  s
    r�   c               	   C   sH   t jddd�} t t¡�
 | `W 5 Q R X t t¡� | d= W 5 Q R X d S r‰   r‹   rŒ   r   r   r   Útest_map_delete_flagŽ  s
    rŽ   c                  C   s"   t jddd�} t| ƒdkst‚d S )Nr.   r   r†   z<BitFlagNameMap 'DetectorMap'>)r   r/   Úreprr   rŒ   r   r   r   Útest_map_repr˜  s    r�   c                  C   s¦   t jddd�} | dddœ }|jdks*t‚|jdks8t‚|jjdksHt‚|jdksVt‚| d	d
g }|jdkspt‚|jdks~t‚| d	 }|jdks”t‚|jdks¢t‚d S )Nr.   r   )r,   r   )r<   úa really dead pixel)r-   rj   r‘   r<   )r-   r   )rj   r<   )r   r/   r,   r   r-   rj   rY   )Zmap1Zmap2r   r   r   Útest_map_add_flags�  s    r’   );rY   r>   ÚnumpyrO   r2   Zastropy.nddatar   Zmaximum_sctypeÚint_ZMAX_INT_TYPEZuintZMAX_UINT_TYPEZ
left_shiftZiinfoÚbitsZMAX_UINT_FLAGZMAX_INT_FLAGZSUPER_LARGE_FLAGÚarrayZEXTREME_TEST_DATAÚmarkZparametrizer   Úintr   r   r   r#   r)   r+   r0   r5   Úobjectr6   r9   rH   rI   rJ   rL   rN   Zbool_ÚsizeZint8rU   r[   r\   r`   ra   rv   ry   r}   rƒ   r…   r‡   rˆ   r�   rŽ   r�   r’   r   r   r   r   Ú<module>   sL   ÿ ÿ
ù	ö
 ÿ


ûþ


ôþ

óþ
öþ


	
þ
úú	úìþ 













