
    IR-e!                         d dl Z d dlm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mZmZmZ  G d de          Z G d d	          Z G d
 d          Z G d de          Zd Zd Zd Zd Zd ZdS )    N)OrderedDict)fits)metadata)MergeConflictErrorMetaDatacommon_dtypeenable_merge_strategiesmergec                       e Zd ZdS )OrderedDictSubclassN)__name__
__module____qualname__     Alib/python3.11/site-packages/astropy/utils/tests/test_metadata.pyr   r      s        Dr   r   c                      e Zd Zej        Zd Zej        	                    d e
dg           edg           edg          g          d             Zej        	                    dddg dg          d             Zej        	                    d e
dg           edg           edg          g          d	             Zej        	                    dddg dg          d
             Zd ZdS )MetaBaseTestc                      | j         | j         }t          |j        t                    sJ t          |j                  dk    sJ d S )Nr   )
test_classargs
isinstancemetar   len)selfds     r   	test_nonezMetaBaseTest.test_none   sI    DOTY'!&+.....16{{ar   r   )a   c                      | j         | j        d|i}t          |j                  t          |          k    sJ |j        d         dk    sJ d S Nr   r   r   r   r   typer   r   r   r   s      r   test_mapping_initzMetaBaseTest.test_mapping_init   X    
 DOTY2T22AF||tDzz))))vc{ar   zceci n'est pas un metag333333?r         c                     t          j        t                    5   | j        | j        d|i d d d            d S # 1 swxY w Y   d S Nr   pytestraises	TypeErrorr   r   r   r   s     r   test_non_mapping_initz"MetaBaseTest.test_non_mapping_init'   s    ]9%% 	3 	3DOTY2T222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3   :>>c                      | j         | j        d|i}t          |j                  t          |          k    sJ |j        d         dk    sJ d S r!   r"   r$   s      r   test_mapping_setzMetaBaseTest.test_mapping_set,   r&   r   c                     t          j        t                    5   | j        | j        d|i}d d d            d S # 1 swxY w Y   d S r+   r,   r$   s      r   test_non_mapping_setz!MetaBaseTest.test_non_mapping_set5   s    ]9%% 	7 	7666A	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7r2   c                     t           j                                        }|                    dd           |                    dd            | j        | j        d|i}|j        d         dk    sJ d S )NobserverzEdwin Hubbleexptime3600r   OBSERVER)r   headerHeadersetr   r   r   )r   r<   r   s      r   test_meta_fits_headerz"MetaBaseTest.test_meta_fits_header:   ss    ##%%

:~...

9f%%%DOTY4V44vj!^333333r   N)r   r   r   abcABCMeta__metaclass__r   r-   markparametrizedictr   r   r%   r1   r4   r6   r?   r   r   r   r   r      su       KM     
 [
$z

KK
335H5H(5T5T	U    	  
 [V'?iii&PRR3 3 SR3 [
$z

KK
335H5H(5T5T	U    	  
 [V'?iii&PRR7 7 SR74 4 4 4 4r   r   c                   *    e Zd Z e            ZddZdS )ExampleDataNc                     || _         d S N)r   r0   s     r   __init__zExampleData.__init__G   s    			r   rI   )r   r   r   r   r   rJ   r   r   r   rG   rG   D   s3        8::D     r   rG   c                       e Zd ZeZdZdS )TestMetaExampleDatar   N)r   r   r   rG   r   r   r   r   r   rL   rL   K   s        JDDDr   rL   c                     t                      } t                      }ddd| j        d<   ddd|j        d<   t          j        t                    5  t          | j        |j        d           ddd           dS # 1 swxY w Y   dS )zRegression test for issue #3294.

    Ensure that an exception is raised when a metadata conflict exists
    and ``metadata_conflicts='error'`` has been set.
    r   )xysomekeyi  errormetadata_conflictsN)rG   r   r-   r.   r   r
   )data1data2s     r   (test_metadata_merging_conflict_exceptionrV   P   s     MMEMME"#!,,EJy"##..EJy	)	*	* B Bej%*AAAAB B B B B B B B B B B B B B B B B Bs   A::A>A>c                  J   ddgddddd} ddgiddd	}t          | |d
          }|dg ddddddk    sJ dt          j        ddg          i} dt          j        dg          i}t          | |d
          }t          j        |d         t          j        g d          k              sJ dddgi} dt          j        dg          i}t          j        |d         t          j        g d          k              sJ ddi} ddi}t	          j        t                    5  t          | |d
           d d d            n# 1 swxY w Y   dt          j        ddg          i} dt          j        dgg          i}t	          j        t                    5  t          | |d
           d d d            n# 1 swxY w Y   dt          j        ddg          i} dt          j        dg          i}t	          j        t                    5  t          | |d
           d d d            n# 1 swxY w Y   dt          j        ddg          i} dt          j        dg          i}t          | |d          }t          j        |d         t          j        dg          k              sJ d S )Nr   r(   k1k2)r   r(   )rY   rZ   k4rY   r)   )r)   )rY   k3r[   rQ   rR   r'   )rZ   rY   )rY   rZ   r\   r[   3silent)r
   nparrayallr-   r.   r   )meta1meta2outs      r   test_metadata_mergingre   ^   s    a&
 
  E aSk E
 u
9
9
9C))
 
       28QF##$E28QC==!E
u
9
9
9C6#d)rx			22233333 Aq6NE28QC==!E6#d)rx			22233333 1IE1IE	)	*	* 8 8eUw77778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 28QF##$E28aSE??#E	)	*	* 8 8eUw77778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 28QF##$E28SE??#E	)	*	* 8 8eUw77778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 28QF##$E28SE??#E
u
:
:
:C6#d)rx.///////s6    D??EEF22F69F6H$$H(+H(c                  L   t          t          j                  }  G d dt          j                  } G d dt          j                  }ddd}dd	d}t          ||          5  |j        sJ |j        sJ t          ||d
          }d d d            n# 1 swxY w Y   |d         ddgk    sJ |d         dk    sJ |j        rJ |j        rJ t          j	        t                    5  t          ||d
           d d d            n# 1 swxY w Y   t          t          j                  5  |j        sJ |j        sJ t          ||d
          }d d d            n# 1 swxY w Y   |d         ddgk    sJ |d         dk    sJ |j        rJ |j        rJ | t          _        d S )Nc                   8    e Zd ZdZeefeeffZed             ZdS )>test_metadata_merging_new_strategy.<locals>.MergeNumbersAsListzB
        Scalar float or int values are joined in a list.
        c                 
    ||gS rI   r   )clsleftrights      r   r
   zDtest_metadata_merging_new_strategy.<locals>.MergeNumbersAsList.merge   s    %= r   N)	r   r   r   __doc__intfloattypesclassmethodr
   r   r   r   MergeNumbersAsListrh      sK        	 	 uU|,		! 	! 
	! 	! 	!r   rr   c                       e Zd ZdZeefZdZdS )>test_metadata_merging_new_strategy.<locals>.MergeConcatStringsz7
        Scalar string values are concatenated
        FN)r   r   r   rm   strrp   enabledr   r   r   MergeConcatStringsrt      s(        	 	 c
r   rw   r   r   rX   r(   brQ   rR   rY   rZ   ab)listr   MERGE_STRATEGIESMergeStrategy	MergePlusr	   rv   r
   r-   r.   r   )original_merge_strategiesrr   rw   rb   rc   rd   s         r   "test_metadata_merging_new_strategyr      s    $X%> ? ?	! 	! 	! 	! 	!X3 	! 	! 	!    X/    C  EC  E 
!!35G	H	H > >!))))!))))E5W===> > > > > > > > > > > > > > > t9At9!))))!)))) 
)	*	* 8 8eUw77778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 
!!7	8	8 > >!))))!))))E5W===> > > > > > > > > > > > > > > t9At9!))))!)))) 9Hs6   $%BBB)DDD,%EE!$E!c                     t          j        dg          } t          j        dg          }t          j        dg          }t          j        dg          }t          | |g                              d          sJ t          ||g                              d          sJ t          ||g                              d          sJ d S )N1231234s   123s   12345U4U5S5)r_   r`   r   endswith)u3u4b3b5s       r   test_common_dtype_stringr      s    	5'		B	6(		B	6(		B	8*		BR!!**400000R!!**400000R!!**40000000r   c                     t          j        dt           j                  } t          j        dt           j                  }t          j        d          }t	          j        t                    5  t          | |g           d d d            n# 1 swxY w Y   t          | | g                              d          sJ t          | |g                              d          sJ d S )Nr   )dtyper   i8f8)	r_   r`   int64float64r-   r.   r   r   r   )r   r   r   s      r   test_common_dtype_basicr      s   	!28	$	$	$B	!2:	&	&	&B	%B	)	*	*  b"X               R!!**400000R!!**40000000s   .BBB)r@   collectionsr   numpyr_   r-   
astropy.ior   astropy.utilsr   astropy.utils.metadatar   r   r   r	   r
   r   r   rG   rL   rV   re   r   r   r   r   r   r   <module>r      s   



 # # # # # #            " " " " " "             	 	 	 	 	+ 	 	 	+4 +4 +4 +4 +4 +4 +4 +4\           ,   
B B B;0 ;0 ;0|2: 2: 2:j1 1 1	1 	1 	1 	1 	1r   