
    IR-e+                     	   d Z ddlZddlZddlZddlmZ ej        Zej	        Z
 ej         e
d           e
 ej        e
          j        dz
                      Z ej         ed           e ej        e          j        dz
                      Zd ej        e
          j        z  Z ej        ddded ee          d ee          z   ge          Zej                            d	ddg          d
             Zej                            d	de ee          eg          d             Zej                            dddeeg          d             Zej                            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             Zej                            d	g d          d             Zej                            dg d          d             Zej                            dddd d!d"d#d$gdfd%d&d'd(d)d*d+g          d,             Zej                            d-g d.          d/             Zej                            d	dd0d0geg          d1             Z ej                            d	d2d3g          d4             Z!d5 Z"ej                            d	g d6d7g          d8             Z#d9 Z$ej                            d	g d:          d;             Z%d< Z&ej                            d=edddej'        ej(        dgz  fedddej'        ej(        dgz  fedegddej'        g d>fedddej'        ej(        dgz  fedegddej'        g d?fedegddej)        g d@fg          dA             Z*ej                            d	dBdg          dC             Z+dD Z,ej                            d	ddg          dE             Z-ej                            d	g dF          dG             Z.ej                            dHddg          dI             Z/ej                            dHddg          dJ             Z0ej                            dHddg          dK             Z1ej                            dHddg          dL             Z2dM Z3ej                            d	ddg          dN             Z4ej                            d	g dF          dO             Z5dP Z6dQ Z7dR Z8dS Z9dS )Tzz
A module containing unit tests for the `bitmask` module.

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

    N)bitmask         )dtypeflagc                 4    t          j        |           rJ d S N)nr   _is_bit_flagr	   s    Alib/python3.11/site-packages/astropy/nddata/tests/test_bitmask.pytest_nonpositive_not_a_bit_flagr   %   s"    #d++++++++    c                 4    t          j        |           sJ d S r   r   r   s    r   test_is_bit_flagr   *   s$     $''''''''r   numberc                 2    t          j        |           sJ d S Nr   _is_intr   s    r   test_is_intr   1   s    ?6"""""""r   )1T      ?c                 2    t          j        |           rJ d S r   r   r   s    r   test_nonint_is_not_an_intr   6   s    v&&&&&&&r   zflag,flip,expected)   Nr    )r    T)r    Fr    Fr    Tr!   c                 >    t          j        | |          |k    sJ d S N)	bit_flags	flip_bitsr   interpret_bit_flags)r	   flipexpecteds      r   "test_interpret_valid_int_bit_flagsr*   ;   s+     &FFF(RRRRRRr   )N NoneIndefc                 4    t          j        |           J d S Nr$   r&   r   s    r   %test_interpret_none_bit_flags_as_Noner1   I   s"    &666>>>>>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                 <    t          j        |           |k    sJ d S r/   r&   )r	   r)   s     r   "test_interpret_valid_str_bit_flagsr4   N   s)    $ &666(BBBBBBr   )CRr   )z~CRr2   )zCR|HOTr    )zCR,HOTr    )zCR+HOTr    r5   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                 l    t          j        ddd          }t          j        | |          |k    sJ d S )NDetectorMapr   r   )r5   r6   )r$   flag_name_map)r   extend_bit_flag_mapr'   )r	   r)   flagmaps      r   'test_interpret_valid_mnemonic_bit_flagsr<   c   sD    & )-A1EEEG 	#d'JJJhVVVVVVr   z	flag,flip)
)NT)r+   T)r,   T)r-   T)NF)r+   F)r,   F)r-   F)r   T)r   Fc                     t          j        t                    5  t          j        | |           d d d            d S # 1 swxY w Y   d S r#   pytestraises	TypeErrorr   r'   )r	   r(   s     r   3test_interpret_None_or_str_and_flip_incompatibilityrB   }   s      
y	!	! D D#ddCCCCD D D D D D D D D D D D D D D D D Ds   >AAr   c                     t          j        t                    5  t          j        |            d d d            d S # 1 swxY w Y   d S r/   r>   r   s    r   test_interpret_wrong_flag_typerD      s    	y	!	! 4 4#d33334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4   =AA	SOMETHINGz1.0,2,3c                     t          j        t                    5  t          j        |            d d d            d S # 1 swxY w Y   d S r/   r?   r@   
ValueErrorr   r'   r   s    r   &test_interpret_wrong_string_int_formatrJ          	z	"	" 4 4#d33334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4rE   c                  f   t          j        d          5 } t          j        d           t          j        g d          dk    sJ t          |           sJ t          | d         j        t                    sJ dt          | d         j
                  v sJ 	 d d d            d S # 1 swxY w Y   d S )NT)recordalways)r      rO      r   	Duplicate)warningscatch_warningssimplefilterr   r'   len
issubclasscategoryUserWarningstrmessage)ws    r   %test_interpret_duplicate_flag_warningr\      s    		 	-	-	- 1h'''*99955::::1vv!B%.+66666c!B%-00000001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1s   BB&&B*-B*)r   r   r    z1, 2, 3c                     t          j        t                    5  t          j        |            d d d            d S # 1 swxY w Y   d S r/   rH   r   s    r   test_interpret_non_flagr^      rK   rE   c                  V    t          j        t          d                    dk    sJ d S )Nr    r0   )r   r'   rY    r   r   .test_interpret_allow_single_value_str_nonflagsra      s-    &Q888A======r   )	~z( )z(~1,2)z~(1,2z1,~2z1,(2,4)z1,2+4z1+4,2z1|4+2c                     t          j        t                    5  t          j        |            d d d            d S # 1 swxY w Y   d S r/   rH   r   s    r   test_interpret_bad_str_syntaxrd      s    
 
z	"	" 4 4#d33334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4rE   c                      t          j        t                    5  t          j        dd           d d d            d S # 1 swxY w Y   d S )Nr   r   )r?   r@   rA   r   bitfield_to_boolean_maskr`   r   r   #test_bitfield_must_be_integer_checkrg      s    	y	!	! 1 1(a0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1rE   z!data,flags,flip,goodval,dtype,ref)r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   c                     t          j        | ||||          }|j        |k    sJ t          j        ||k              sJ d S )N)bitfieldignore_flagsr%   good_mask_valuer   )r   rf   r   npall)dataflagsr(   goodvalr   refmasks          r   test_bitfield_to_boolean_maskrs      s`    B +  D :6$#+r   )rO   flag1c                    t          j        |           }t          | t                    rR|| d         k    sJ |j        | d         k    sJ t          j        |  }|| d         k    sJ |j        | d         k    sJ d S || k    sJ d S )Nr   r   )r   BitFlag
isinstancetuple__doc__)r	   fs     r   test_bitflagr{      s    A$ 	DG||||yDG####OT"DG||||yDG###### Dyyyyyyr   c                      t          j        t                    5  t          j        dd           d d d            d S # 1 swxY w Y   d S )N)r   docs1docs2)r?   r@   rI   r   rv   r`   r   r   test_bitflag_docs2r      s    	z	"	" / /g.../ / / / / / / / / / / / / / / / / /rE   c                     t          j        t          j                  5  t          j        | d           d d d            d S # 1 swxY w Y   d S Nzcustom flagr?   r@   r   InvalidBitFlagrv   r   s    r   test_bitflag_not_pow2r      s    	w-	.	. - -m,,,- - - - - - - - - - - - - - - - - -s   AA	A)g        Tr   c                     t          j        t          j                  5  t          j        | df           d d d            d S # 1 swxY w Y   d S r   r   r   s    r   test_bitflag_not_int_flagr     s    	w-	.	. / /}-.../ / / / / / / / / / / / / / / / / /s   AA
Acachingc                     |                      t          dd            G d dt          j                  } G d d|          }|j        dk    sJ |j        j        dk    sJ |j        d	k    sJ d S )
N_ENABLE_BITFLAG_CACHINGFc                       e Zd ZdZdZdZdZdS )(test_basic_map.<locals>.ObservatoryDQMapr   )r   
cosmic rayr   rO   N__name__
__module____qualname___not_a_flagr5   r6   DEADr`   r   r   ObservatoryDQMapr     s"        r   r   c                       e Zd ZdZdZdZdS )#test_basic_map.<locals>.DetectorMap1.0      N)r   r   r   __version__r   READOUT_ERRr`   r   r   r8   r     s        r   r8   r   r   r   )setattrr   BitFlagNameMapcrry   r   monkeypatchr   r   r8   s       r   test_basic_mapr     s    !:EBBB    71       &   
 !####&,6666"b((((((r   c                     |                      t          d|            G d dt          j                  }t          j        d|ddd          }|j        d	k    sJ |j        dk    sJ d S )
Nr   c                       e Zd ZdZdZdZdS ))test_extend_map.<locals>.ObservatoryDQMapr   r   rO   Nr   r   r   r5   r6   r   r`   r   r   r   r   #          r   r   r8   r   rO   r   )r   r   r   r   )r   r   r   r:   r5   readout_errr   s       r   test_extend_mapr     s    !:GDDD    71   
 -'UPR  K >Q"b((((((r   c                    |                      t          d|            G d dt          j                  }t          j        t
                    5  t          j        d|dd           d d d            n# 1 swxY w Y   t          j        t
                    5  t          j        d|ddd	           d d d            d S # 1 swxY w Y   d S )
Nr   c                       e Zd ZdZdZdZdS )7test_extend_map_redefine_flag.<locals>.ObservatoryDQMapr   r   rO   Nr   r`   r   r   r   r   4  r   r   r   r8   r       )r   r   @   )r   r   dead)r   r   r   r?   r@   AttributeErrorr:   )r   r   r   s      r   test_extend_map_redefine_flagr   0  so   !:GDDD    71   
 
~	&	& 
 
#+R	
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
~	&	& 
 
#+Rb	
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s$   A33A7:A7B>>CCc                    |                      t          d|            G d dt          j                  }t          j        t
                    5   G d d|          }d d d            n# 1 swxY w Y   t          j        t
                    5   G d d|          }d|_        d d d            n# 1 swxY w Y   t          j        t
                    5  t          j        d	|d
dd           d d d            d S # 1 swxY w Y   d S )Nr   c                       e Zd ZdZdZdZdZdS )0test_map_redefine_flag.<locals>.ObservatoryDQMapr   r   r   rO   Nr   r`   r   r   r   r   H  s"        r   r   c                       e Zd ZdZdZdS ),test_map_redefine_flag.<locals>.DetectorMap1r   r   Nr   r   r   r   r5   r`   r   r   DetectorMap1r   P  s        KBBBr   r   c                       e Zd ZdZdZdS ),test_map_redefine_flag.<locals>.DetectorMap2r   r   N)r   r   r   SHADE_FROZENr`   r   r   DetectorMap2r   V  s        EGGGr   r   r   r8   r      )r   r   r   )r   r   r   r?   r@   r   novelr:   )r   r   r   r   r   s        r   test_map_redefine_flagr   D  s   !:GDDD    71    
~	&	&  	 	 	 	 	+ 	 	 	               
~	&	&    	 	 	 	 	+ 	 	 	                                
~	&	& 
 
#+2SV	
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s6   A))A-0A-B//B36B3C::C>C>c                       G d dt           j                  } | j        dk    sJ | j        dk    sJ t	          j        t                    5  d| _        d d d            d S # 1 swxY w Y   d S )Nc                       e Zd ZdZdZdS )6test_map_cant_modify_version.<locals>.ObservatoryDQMap1.2.3r   Nr   r`   r   r   r   r   c  s        r   r   r   r   z3.2.1)r   r   r   r5   r?   r@   r   )r   s    r   test_map_cant_modify_versionr   b  s        71    '72222!####	~	&	& / /'.$/ / / / / / / / / / / / / / / / / /s   A!!A%(A%c                 .    t          j        t                    5  t          j        d            d d d            n# 1 swxY w Y   t          j        t                    5   G  fddt          j                  }d d d            d S # 1 swxY w Y   d S )Nr8   r   c                       e Zd Z ZdS )*test_map_not_bit_flag.<locals>.DetectorMapN)r   r   r   r   r   s   r   r8   r   u  s        DDDr   )r?   r@   rI   r   r:   r   )r	   r8   s   ` r   test_map_not_bit_flagr   n  s+   	z	"	" > >#M====> > > > > > > > > > > > > > > 
z	"	"  	 	 	 	 	 	 	'0 	 	 	                 s!   >AA"B

BBc                 B    t          j        t          j                  5  t          j        d            d d d            n# 1 swxY w Y   t          j        t          j                  5   G  fddt          j                  }d d d            d S # 1 swxY w Y   d S )Nr8   r   c                       e Zd Z ZdS )/test_map_not_int_flag.<locals>.ObservatoryDQMapN)r   r   r   r5   r   s   r   r   r     s        BBBr   r   )r?   r@   r   r   r:   r   )r	   r   s   ` r   test_map_not_int_flagr   y  s1   	w-	.	. > >#M====> > > > > > > > > > > > > > > 
w-	.	.  	 	 	 	 	 	 	w5 	 	 	                 s#   AA
A,BBBc                     t          j        dd          } t          j        t                    5  | j         d d d            n# 1 swxY w Y   t          j        t                    5  | d          d d d            d S # 1 swxY w Y   d S Nr8   r   r   DEAD1r   r:   r?   r@   r   r   r8   s    r   test_map_access_undefined_flagr     s   -m!DDDK	~	&	&                 
~	&	&  G                 s#   AAA(	A>>BBc                     t          j        dd          } t          j        t                    5  | `d d d            n# 1 swxY w Y   t          j        t                    5  | d= d d d            d S # 1 swxY w Y   d S r   r   r   s    r   test_map_delete_flagr     s    -m!DDDK	~	&	&                 
~	&	& ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !s!   ?AA#A44A8;A8c                  \    t          j        dd          } t          |           dk    sJ d S )Nr8   r   r   z<BitFlagNameMap 'DetectorMap'>)r   r:   reprr   s    r   test_map_reprr     s7    -m!DDDK @@@@@@@r   c                  4   t          j        dd          } | dddz   }|j        dk    sJ |j        dk    sJ |j        j        dk    sJ |j        dk    sJ | d	d
gz   }|j        dk    sJ |j        dk    sJ | d	z   }|j        dk    sJ |j        dk    sJ d S )Nr8   r   )r5   r   )rO   a really dead pixel)r6   r   r   rO   )r6   r   )r   rO   )r   r:   r5   r6   r   ry   )map1map2s     r   test_map_add_flagsr     s    &};;;D!%?@@@D7a<<<<8q====9 555559>>>>:{++D7a<<<<8q====*D7a<<<<8q======r   ):ry   rR   numpyrl   r?   astropy.nddatar   int64MAX_INT_TYPEuint64MAX_UINT_TYPE
left_shiftiinfobitsMAX_UINT_FLAGMAX_INT_FLAGSUPER_LARGE_FLAGarrayEXTREME_TEST_DATAmarkparametrizer   intr   r   r   r*   r1   r4   r<   rB   objectrD   rJ   r\   r^   ra   rd   rg   bool_sizeint8rs   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r`   r   r   <module>r      s          " " " " " "x	M!mmHBH]$;$;$@1$DEE  r}LOO\\("(<"8"8"="ABB  //44 BH		
]##	LL'''     !R)), , *), 
Qss=113CD ( ( ( Aq-9I#JKK# # LK# #3#3#344' ' 54' 
Q
Qr	 	S S	 	S !=!=!=>>? ? ?>?    "C C# "C 
 $ % $    D D D
 $cUF!;<<4 4 =<4
 +y!9::4 4 ;:4
1 1 1 )))Y!7884 4 984
> > > 
QQQ 4 4	 4
1 1 1
 '	D$bh8I8NRSQT8TU	D$rx9J9OSTRU9UVH!!!	
 
D$bh8I8NRSQT8TUH!!!	
 G!!!	
) @
 
A @
 ,!233  43/ / /
 !Q((- - )(-
 !1!1!122/ / 32/
 T5M22) ) 32)& T5M22) ) 32)  T5M22
 
 32
& T5M22
 
 32
:	/ 	/ 	/ !Q((  )( !1!1!122  32  ! ! !A A A
    r   