
    HR-e                         d dl Z d dlZd dlZd dlZ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 erd dlmZ ddlmZ  G d	 d
e          Z G d de          Zd ZdS )    N)assert_equal)util)_rstrip_inplaceignore_sigint)HAS_PIL)Image   )FitsTestCasec                       e Zd Zej                            ej                            d          d          d             Z	d Z
dS )	TestUtilswinzCannot test on Windowsreasonc                 Z    t           d             }t          j        t          |           d S )Nc                  t   t          j        t                    5 } t          j                    }t          j        |t          j                   t          j        |t          j                   d d d            n# 1 swxY w Y   t          |           dk    sJ t          | d         j
                  dk    sJ d S )N   r   z1KeyboardInterrupt ignored until test is complete!)pytestwarnsUserWarningosgetpidkillsignalSIGINTlenstrmessage)wpids     ?lib/python3.11/site-packages/astropy/io/fits/tests/test_util.pytestz*TestUtils.test_ignore_sigint.<locals>.test   s    k** ,aikkV]+++V]+++	, , , , , , , , , , , , , , ,
 q66Q;;;;AaDL!!%XXXXXXXs   AA88A<?A<)r   r   raisesKeyboardInterrupt)selfr!   s     r    test_ignore_sigintzTestUtils.test_ignore_sigint   s6    			 		 
		 	'.....    c                    t          j        dt           j        fdt           j        fg          j        }fd|D             }t          j        ||ddgd          }|j        dk    sJ t          j        ||ddgd          }|j        dk    sJ t          j        ||ddgd          }|j        dk    sJ t          j        dt           j        fdt           j        fd	t           j        fg          j        }fd
|D             }t          j        ||g dd          }|j        dk    sJ t          j        ||g dd          }|j        dk    sJ t          j        ||g dd          }|j        dk    sJ dS )z
        Tests a few corner-cases for numpy dtype creation.

        These originally were the reason for having a realign_dtype hack.
        abc                 6    g | ]}j         |         d          S r   fields.0namedts     r    
<listcomp>z0TestUtils.test_realign_dtype.<locals>.<listcomp>0   $    888$29T?1%888r&   r   )namesformatsoffsets   r	      cc                 6    g | ]}j         |         d          S r+   r,   r.   s     r    r2   z0TestUtils.test_realign_dtype.<locals>.<listcomp><   r3   r&   )r   r   r      )r   r   r	   )r   r         N)npdtypeint32int16r4   itemsizefloat64int8)r$   r4   r5   dt2r1   s       @r    test_realign_dtypezTestUtils.test_realign_dtype'   s    XRXbh8998888%888h71vNNOO|q    h71vNNOO|q    h71vNNOO|q    XRZ(3.3.IJJ8888%888h7yyyQQRR|q    h7yyyQQRR|q    h7zzzRRSS|r!!!!!!r&   N)__name__
__module____qualname__r   markskipifsysplatform
startswithr%   rF    r&   r    r   r      sd        [//66?WXX/ / YX/" " " " "r&   r   c                   |    e Zd ZdZd Zej                            e d          d             Z	d Z
d Zd Zd	 Zd
S )TestUtilModez
    The high-level tests are partially covered by
    test_core.TestConvenienceFunctions.test_fileobj_mode_guessing
    but added some low-level tests as well.
    c                 2    t          j        d          J d S )Nz	tmp1.fits)r   fileobj_mode)r$   s    r    test_mode_stringszTestUtilMode.test_mode_stringsL   s!      --55555r&   zrequires pilr   c                    t           j                            ddd                              t           j                  }t          j        |          }|                    |                     d                     t          j	        |                     d                    5 }t          j        |          dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr      )r8   r8      ztest_simple.jpgrb)r>   randomrandintastypeuint8r   	fromarraysavetempopenr   rS   )r$   imgresultfileobjs       r    test_mode_pil_imagez TestUtilMode.test_mode_pil_imageQ   s    i3	2299"(CC%%DII/00111Z		"34455 	6$W--55555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6s   "CCCc                     g d}|D ]g\  }}}|                      d| d          }t          j        ||          5 }t          j        |          |k    sJ 	 d d d            n# 1 swxY w Y   hd S )N))r   r(   abr   rf   rf   )r   r   wbr   rh   rh   )r	   xxb)r	   rrX   r	   rX   rX   r!   z.gz)r_   gzipGzipFiler   rS   r$   num_mode_resmodenummoderesfilenamerc   s          r    test_mode_gzipzTestUtilMode.test_mode_gzip[   s    
 
 
 / 	9 	9NCsyy11Hx.. 9'(11S888889 9 9 9 9 9 9 9 9 9 9 9 9 9 9	9 	9s   A##A'	*A'	c                     g d}|D ]d\  }}}|                      d| d          }t          ||d          5 }t          j        |          |k    sJ 	 d d d            n# 1 swxY w Y   ed S )N)rg   ri   )r	   rk   rk   rm   test1.datr   )	bufferingr_   r`   r   rS   rp   s          r    test_mode_normal_bufferingz'TestUtilMode.test_mode_normal_bufferingq   s    
 
 
 / 	9 	9NCsyy!2!2!2!233Hh222 9g(11S888889 9 9 9 9 9 9 9 9 9 9 9 9 9 9	9 	9s   A  A$	'A$	c                     g d}|D ]b\  }}}|                      d| d          }t          ||          5 }t          j        |          |k    sJ 	 d d d            n# 1 swxY w Y   cd S )N)r   r(   r(   rg   )r   r   r   ri   )r	   rj   rj   )r	   rl   rl   rm   test2ry   r{   rp   s          r    test_mode_normal_no_bufferingz*TestUtilMode.test_mode_normal_no_buffering   s    
 
 
 / 	9 	9NCsyy!2!2!2!233Hh%% 9(11S888889 9 9 9 9 9 9 9 9 9 9 9 9 9 9	9 	9s   AA"	%A"	c                     dD ]b\  }}}|                      d| d          }t          ||          5 }t          j        |          |k    sJ 	 d d d            n# 1 swxY w Y   cd S )N)r~   )r   a+r   rg   )r   za+bab+)r   r   r   test3ry   r{   )r$   rr   rs   rt   ru   rc   s         r    test_mode_normalizationz$TestUtilMode.test_mode_normalization   s    
 		9 		9NCs yy!2!2!2!233Hh%% 9(11S888889 9 9 9 9 9 9 9 9 9 9 9 9 9 9		9 		9s   AA	!A	N)rG   rH   rI   __doc__rT   r   rJ   rK   r   rd   rv   r|   r   r   rO   r&   r    rQ   rQ   E   s         6 6 6
 [GN;;6 6 <;69 9 9,9 9 99 9 9$9 9 9 9 9r&   rQ   c                     t          j        g d          } t          j        t                    5 }t          |            d d d            n# 1 swxY w Y   |j        j        d         dk    sJ t          j        g dd          } t          |            t          | t          j        g dd                     t          j        g dd          } t          |            t          | t          j        g dd                     t          j        d	d
gddggd          } t          |            t          | t          j        dd
gddggd                     t          j	        dd          
                    d          } t          |            t          | d           t          j	        dd          
                    d          d dd dd df         } t          |            t          | d           d S )N)r	   r   rW   r   z/This function can only be used on string arrays)a  b c c   S6)r?   )r(   r    c cU6r   r   r   z a r(   r   z az a a    )r   rW   r7   z a ai  )
   r   r   r   rW   r7   )r>   arrayr   r"   	TypeErrorr   valueargsr   repeatreshape)sexcs     r    test_rstrip_inplacer      s;   
A	y	!	! S              9>! QQQQQ 	(((555AABH000===>>> 	(((555AABH000===>>> 	4,E 234@@@AABHsDkFD>:$GGGHHH 		'2&&y11AAF 		'4  ((66rr2A2rrzBAAFs   AAA)rn   r   r   rL   numpyr>   r   numpy.testingr   astropy.io.fitsr   astropy.io.fits.utilr   r   "astropy.utils.compat.optional_depsr   PILr   conftestr
   r   rQ   r   rO   r&   r    <module>r      s1    				  



      & & & & & &             ? ? ? ? ? ? ? ? 6 6 6 6 6 6
  " " " " " "," ," ," ," ," ," ," ,"^]9 ]9 ]9 ]9 ]9< ]9 ]9 ]9@    r&   