
    IR-eT              	       Z   d dl Z d dlZd dlmZ d dlmZ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 d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZmZm Z  ddl!m"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 Z+e	j,        -                    d ej.        g d          dg          d             Z/d  Z0d! Z1d" Z2d# Z3d$ Z4d% Z5d& Z6d' Z7d( Z8d) Z9d* Z:d+ Z;d, Z<d d-l=m>Z>  G d. d/e>          Z?d0 Z@d1 ZAd2 ZBd3 ZCd4 ZDd5 ZEd6 ZF G d7 d8e          ZGd9 ZHejI        J                    d:           dejK        gZLd;d<gZMd=d>gZNd;d<gZO eP ejQ        d? eND                                 ZR eSeR           eSeM          z   eSeL          z   eSeO          z  ZTeT eSeL          z  eLz  ZLeT eSeM          z  eMz  ZMeT eSeR          z  eRz  ZReT eSeO          z  eOz  ZOe	j,        -                    d@ eUeReLeMeO                    dA             ZVdS )B    N)OrderedDict)chainpermutations)assert_array_equal)units)NDDataArray)_testing)NDData)StdDevUncertainty)NumpyRNGContext)MaskedWCS)BaseHighLevelWCSHighLevelWCSWrapperSlicedLowLevelWCS   )FakeUncertaintyc                   J     e Zd ZdZ fdZd Zd Zd Zed             Z	 xZ
S )FakeNumpyArrayzs
    Class that has a few of the attributes of a numpy array.

    These attributes are checked for by NDData.
    c                 H    t                                                       d S N)super__init__)self	__class__s    @lib/python3.11/site-packages/astropy/nddata/tests/test_nddata.pyr   zFakeNumpyArray.__init__!   s        c                     d S r    r   s    r   shapezFakeNumpyArray.shape$       r   c                     d S r   r    r!   s    r   __getitem__zFakeNumpyArray.__getitem__'   r#   r   c                     d S r   r    r!   s    r   	__array__zFakeNumpyArray.__array__*   r#   r   c                     dS )Nfaker    r!   s    r   dtypezFakeNumpyArray.dtype-   s    vr   )__name__
__module____qualname____doc__r   r"   r%   r'   propertyr*   __classcell__)r   s   @r   r   r      s                      X    r   r   c                   .    e Zd ZdZd Zed             ZdS )MinimalUncertaintyzL
    Define the minimum attributes acceptable as an uncertainty object.
    c                     || _         d S r   )_uncertainty)r   values     r   r   zMinimalUncertainty.__init__7   s    !r   c                     dS )Nztotally and completely faker    r!   s    r   uncertainty_typez#MinimalUncertainty.uncertainty_type:   s    ,,r   N)r+   r,   r-   r.   r   r/   r7   r    r   r   r2   r2   2   sH         " " " - - X- - -r   r2   c                   "    e Zd Z	 	 	 	 	 	 ddZdS )BadNDDataSubclassNc                 h    || _         || _        || _        || _        || _        || _        || _        d S r   )_datar4   _mask_wcs_psf_unit_meta)r   datauncertaintymaskwcsmetaunitpsfs           r   r   zBadNDDataSubclass.__init__@   s:     
'
		



r   )NNNNNN)r+   r,   r-   r   r    r   r   r9   r9   ?   s<              r   r9   c                  r   t          g d          } t          d          }|| _        | j        |u sJ t          d          | _        | j        j        | u sJ t          |           } t          | j        t                    sJ d| _        t          | j        t                    rJ | j        j        dk    sJ d S )Nr            
   )r
   r2   rB   r   parent_nddata
isinstancearray)ndgood_uncertaintys     r   test_uncertainty_setterrS   T   s    						B)!,,%BN>----- %Q''BN>'2----	Bbno66666BN"./:::::>2%%%%%%r   c                      t          g d          } d| _        | j        sJ d| _        | j        rJ t          | d          } | j        sJ d| _        | j        rJ d S )NrI   TFrC   )r
   rC   )rQ   s    r   test_mask_setterrV   e   sr    						BBG7NNNBGw				B7NNNBGwr   c                      t          j        t                    5  t                       d d d            d S # 1 swxY w Y   d S r   pytestraises	TypeErrorr
   r    r   r   test_nddata_emptyr\   t   s    	y	!	!                   s   6::c                      g d} t          |           }t          j        |           |j        k                                    sJ d S )NrI   )r
   nprP   rA   all)inprQ   s     r   test_nddata_init_data_nonarrayra   y   sC    
))C	BHSMMRW$))+++++++r   c                     t          d          5  t          t          j                            d                    } d d d            n# 1 swxY w Y   | j        j        dk    sJ | j        j        dk    sJ | j        j        t          j        t                    k    sJ t          t          j	        g dg dg                    } | j        j        dk    sJ | j        j        t          j        t                    k    sJ t          j        d          }t          |          }d|d<   |j        d         dk    sJ t          j        d          }t          |d	
          }d|d<   |j        d         dk    sJ d S )N{   rM   rM   d   rI   )   rL      rg   r   )r   r   Tcopy)r   r
   r^   randomrA   r"   sizer*   floatrP   intones)rQ   and_refs      r   test_nddata_init_data_ndarrayrq      s   			 0 0BI$$X..//0 0 0 0 0 0 0 0 0 0 0 0 0 0 07=H$$$$7<37=BHUOO++++ 
)))YYY/00	1	1B7<17=BHSMM)))) 	AAYYFAdG;t!!!! 	AAD!!!FAdG;t!!!!!!s   -A		AAc                     t          d          5  t          t          j                            d          t          j                            d          dk               d d d            n# 1 swxY w Y   t          d          5  t          j                            d          } t          j                            | dk    |           }d d d            n# 1 swxY w Y   t          |          }t          |j        |j                   t          |j	        |j	                   |j        d          |j        d<   d	|j	        d
<   t          |j        |j                   t          |j	        |j	                   t          |d          }|j        d          |j        d<   d|j	        d
<   |j        d         |j        d         k    sJ |j	        d
         |j	        d
         k    sJ d S )Ni  rd   g      ?rU   i90  re   r   rM   i[   Trh   )
r   r
   r^   rj   randnmamasked_wherer   rC   rA   )ro   marrrQ   s      r   !test_nddata_init_data_maskedarrayrx      s.   			 R Rry))	0@0@0J0JS0PQQQQR R R R R R R R R R R R R R R 
		 , ,IOOC  u!!!a%++, , , , , , , , , , , , , , , 
Brw	***rw	***Yr]NDIbMDIbMrw	***rw	*** 
4	 	 	 BYr]NDIbMDIbM72;$)B-''''72;$)B-''''''s%   AA,,A03A0ACCCrA   rI   rL   c                    | t           j        z  }t          |          }|j        |j        k    sJ t	          |j        t          j        |                     |j        j        dk    rad|j	        d<   |j        d         |j	        d         k    sJ t          |d          }d|j	        d<   |j        d         |j	        d         k    sJ t          | t           j
        z  t           j                  }|j        t           j        k    sJ t          j                            |j        |j        z                      t           j
                  |            d S )Nr   re   Trh   rL   rF   )uadur
   rF   r   rA   r^   rP   rk   r5   ergJtestingassert_allcloseto_value)rA   quantitynddndd_units       r   test_nddata_init_data_quantityr      s-    ae|H


C8x}$$$$sx(!3!3444
x}qqx{hnQ///// XD)))qx{hnQ///// dQUl---H=ACJ =GGNNPTUUUUUr   c                     t          j        ddg          } | t          j        z  }d}t	          ||          }t          |          }t          |j        |            |j        t          j        k    sJ t          |j        t          j
                  rJ t           j                            |j        t          j        |                     d S )NrJ   rK   FrU   )r^   rP   r{   mr   r
   r   rA   rF   rO   Quantityr   rC   )ro   qr   mqrQ   s        r   %test_nddata_init_data_masked_quantityr      s    
!QA	ACAA				B	Brw""" 7ac>>>>"'1:.....J!!"'28A;;77777r   c                     t          t          j        dg                    } t          |           }|j        | j        k    sJ |j        | j        k    sJ |j        | j        k    sJ |j        | j        k    sJ |j        | j        k    sJ |j        | j        k    sJ t          t          j	        d                    } t          |           }| j
        |j
        u sJ t          | d          }d| j
        d<   | j
        d         |j
        d         k    sJ t          t          j        dg          dt          d          t          j        dd	it          d
          t          j        dg                    } t          |           }|j
        | j
        u sJ |j        | j        u sJ |j        j        | j        j        k    sJ |j        | j        k    sJ |j        | j        k    sJ |j        | j        k    sJ |j        | j        k    sJ t          | dt          d          t          j        ddit          d
          t          j        dg                    }|j
        | j
        u sJ |j        | j        usJ |j        j        | j        j        k    sJ |j        | j        k    sJ |j        | j        k    sJ |j        | j        k    sJ |j        | j        k    sJ d S )Nr   rL   rL   Trh   rM   )rJ   rK   Fdestmordornaxis)rC   rB   rF   rE   rD   rG      observerME   )r
   r^   rP   rD   rB   rC   rF   rE   rG   rn   rA   r   r{   sr   km)nd1nd2nd3s      r   test_nddata_init_data_nddatar      s   
1#

C
++C7cg?co----8sx8sx8sx7cg 
!
!C
++C8sx 4
 
 
 CCHTN8D>SXd^++++ 
!%b))ShaLLLHbTNN  C ++C8sx7cg? CO$999998sx8sx8sx7cg %c**T$aLLLHbTNN  C 8sx7#'!!!!? CO$999998sx8sx8sx7cgr   c            
      Z   t          d          } t          ddddddd          }t          j        t                    5  t          |           d d d            n# 1 swxY w Y   t          t          j        ddg          | dt          t          d	                    d
dit          j                  }t          |          }|j        |j        k    sJ |j        |j        k    sJ |j        |j        k    sJ |j        |j        k    sJ |j        |j        u sJ |j        |j        u sJ d S )NrK   FTrJ   gollumre      r   r   enemyzblack knight)r   r9   rY   rZ   r[   r
   r^   rP   r   r   r{   r   rF   rE   rB   rC   rD   rA   )uncertbndbnd_goodrQ   s       r   %test_nddata_init_data_nddata_subclassr     sv   q!!F
E4Axb
A
AC 
y	!	!  s               !
!Q	CaLLL))	.!	 H 
		B7hm####7hm####>X111117hm####6X\!!!!7hm######s   AA!Ac                  6   t          j        t                    5  t          ddi           d d d            n# 1 swxY w Y    G d d          } t          j        t                    5  t           |                        d d d            d S # 1 swxY w Y   d S )Nro   dictc                       e Zd Zd Zd ZdS ))test_nddata_init_data_fail.<locals>.Shapec                     d| _         d S )NrL   )r"   r!   s    r   r   z2test_nddata_init_data_fail.<locals>.Shape.__init__5  s    DJJJr   c                     dS )N7r    r!   s    r   __repr__z2test_nddata_init_data_fail.<locals>.Shape.__repr__8  s    3r   N)r+   r,   r-   r   r   r    r   r   Shaper   4  s2        	 	 		 	 	 	 	r   r   rX   )r   s    r   test_nddata_init_data_failr   .  s(   	y	!	!  V}                      
y	!	!  uuww                 s   8<<)BBBc                      t          t                                } t          | j        t                    sJ t          |           }t          |j        t                    sJ d S r   )r
   r   rO   rA   )ndd1ndd2s     r   test_nddata_init_data_fakesr   ?  sV    .""##Ddi00000$<<Ddi0000000r   c                  R   t          t          j        d                    } t          t          j        d          |           }|j        j        |u sJ t          t          j        d          dz            }t          ||          }|j        |u sJ |j        j        |u sJ d S )Nr   )rP   )rB   rJ   )r   r^   rn   r
   rB   rN   )r{   du2d2s       r   test_param_uncertaintyr   J  s    000ArwvA...A=&!++++	1!4	5	5	5B	r	"	"	"B>R>'2------r   c                      t          dgt          d                    } | j        J t          | t          d                    }|j        |j        | j        usJ d S )Nr   r   rD   )r
   r   rD   )rQ   r   s     r   test_param_wcsr   V  sh    	1	&	&	&B6
1
&
&
&C737"&#8#8#8#8#8#8r   c                  N   t          j        t                    5  t          dgd           d d d            n# 1 swxY w Y   t          g di           } t	          | j                  dk    sJ t          g d          } t          | j        t                    sJ t	          | j                  dk    sJ t          | ddi          }t	          |j                  dk    sJ t          |ddi          }t	          |j                  dk    sJ |j        d         dk    sJ d S )	Nr   rK   )rE   rI   r   imagesunmoon)rY   rZ   r[   r
   lenrE   rO   r   )rQ   r   r   s      r   test_param_metar   _  sk   	y	!	!  s              					#	#	#Brw<<1						Bbg{+++++rw<<1
7E*
+
+
+Csx==A
GV,
-
-
-Csx==A8G&&&&&&s   9= =c                     t          dgd          } | j        rJ t          | d          }|j        sJ t          t          j                            dgd          d          }|j        sJ t          j                            t          j        ddg          t
          j        z  d          }t          |d          }|j        sJ d S )Nr   FrU   TrJ   rK   )r
   rC   r^   ru   rP   r{   r   )rQ   r   r   r   nd4s        r   test_param_maskr   p  s    	%	 	 	 Bw
$


C8OOO
aSu--D
9
9
9C8OOO	RXq!f%%+%	8	8B
$


C8OOOOOr   c                  @   t          j        t                    5  t          t	          j        d          d           d d d            n# 1 swxY w Y   t          g dd           t	          j        g d          t          j        z  } t          | d          }|j	        | j	        k    sJ |j	        t          j
        k    sJ t          j                            t	          j        ddg          t          j        z  d	
          }t          |t          j                  }|j	        t          j        k    sJ t          |d          }|j	        t          j        k    sJ t          j        | d	          }t          |d          }|j	        t          j        k    sJ d S )Nr   NotAValidUnitrz   rI   metercmrJ   rK   FrU   r   )rY   rZ   
ValueErrorr
   r^   rn   rP   r{   r   rF   r   ru   pcr   r   from_unmasked)r   rQ   r   r   r   
mq_astropyr   s          r   test_param_unitr     s   	z	"	" 6 6rwv_55556 6 6 6 6 6 6 6 6 6 6 6 6 6 6
9997####
ac!A				B7af7ad????	RXq!f%%+%	8	8B
!$


C8qt
$


C8qt%a//J
$
'
'
'C8qts   $A

AAc                     t          t          j        d          t          t          j        d          t          j                  t          j                  } t          j        |           }t          j        |          }t          |j
                  t          u sJ |j
        j        |u sJ |j
        j        t          j        k    sJ d S NrK   rL   rz   )rB   rF   )r
   r^   rn   r   r{   r   pickledumpsloadstyperB   rN   rF   )r   
ndd_dumpedndd_restoreds      r   #test_pickle_nddata_with_uncertaintyr     s    



 1"'!**13 G G Gac  C c""J<
++L())->>>>>#1\AAAA#(AC//////r   c                     t          t          j        d          t          t          j        d          t          j                  t          j                  } t          j        | j                  }t          j	        |          }t          j
                            | j        j        |j                   | j        j        |j        k    sJ |j        J d S r   )r
   r^   rn   r   r{   r   r   r   rB   r   r   r   rP   rF   rN   )r   uncertainty_dumpeduncertainty_restoreds      r   test_pickle_uncertainty_onlyr     s    



 1"'!**13 G G Gac  C  co66!<(:;;J!!#/"79M9STTT?#7#<<<<<  -55555r   c                     t          t          j        d          t          j                  } t          j        |           }t          j        |          }t          j        	                    | j
        |j
                   d S )NrK   rz   )r
   r^   rn   r{   r   r   r   r   r   r   rA   )r   dumpedr   s      r   &test_pickle_nddata_without_uncertaintyr     s_    
!#
&
&
&C\#F<''LJ!!#(L,=>>>>>r   )MetaBaseTestc                   6    e Zd ZeZ ej        dgg          ZdS )TestMetaNDDatag      ?N)r+   r,   r-   r
   
test_classr^   rP   argsr    r   r   r   r     s(        J28cUGDDDr   r   c                     t          t          j        g d                    } t          |           dk    sJ t          t          j        ddgddgg                    }t          |          t	          j        ddd                    k    sJ t          t          j        ddgddggdd	gd
dggg                    }t          |          t	          j        ddd                    k    sJ t          t          j        g d          d          }t          |          dk    sJ t          t          j        g d          d          }t          |          dk    sJ d S )NrI   z[1 2 3]r   rJ   rK   rf   z
        [[1 2]
         [3 4]]rL   rg         zD
        [[[1 2]
          [3 4]]

         [[5 6]
          [7 8]]]r   rz   z
[1 2 3] kmzerg cm^-2 s^-1 A^-1z[1 2 3] erg / (A s cm2))r
   r^   rP   strtextwrapdedent)arr1darr2darr3darrs       r   test_nddata_strr     s   28III&&''Eu::""""28aVaV,--..Eu::	 BB	
      28q!fq!f-AA/?@AABBEu::	 BB	
	 	 	 	 	 	 )))$$4
0
0
0Cs88|#### )))$$+@
A
A
ACs880000000r   c                     t          t          j        g d                    } t          |           }|dk    sJ t	          |          }t          j        |j        | j        k              sJ |j        | j        k    sJ t          t          j        ddgddgg                    }t          |          }|t          j	        ddd                    k    sJ t	          |          }t          j        |j        |j        k              sJ |j        |j        k    sJ t          t          j        ddgddggdd	gd
dggg                    }t          |          }|t          j	        ddd                    k    sJ t	          |          }t          j        |j        |j        k              sJ |j        |j        k    sJ t          t          j        g d          d          }t          |          }|dk    sJ t	          |          }t          j        |j        |j        k              sJ |j        |j        k    sJ d S )NrI   zNDData([1, 2, 3])r   rJ   rK   rf   z1
        NDData([[1, 2],
                [3, 4]])rL   rg   r   r   zh
        NDData([[[1, 2],
                 [3, 4]],

                [[5, 6],
                 [7, 8]]])r   rz   zNDData([1, 2, 3], unit='km'))
r
   r^   rP   reprevalr_   rA   rF   r   r   )r   r   gotr   r   r   s         r   test_nddata_reprr     sa    28III&&''EUA#####
q''C6#(ej()))))8uz!!!!28aVaV,--..EUA	 BB	
      q''C6#(ej()))))8uz!!!!28q!fq!f-AA/?@AABBEUA	 BB	
	 	 	 	 	 	 q''C6#(ej()))))8uz!!!! )))$$4
0
0
0CS		A.....
q''C6#(ch&'''''8sxr   c                      t          t          j        d                    } t          j        t
                    5  | d          d d d            d S # 1 swxY w Y   d S )Nr   r   r
   r^   rn   rY   rZ   r[   r   s    r   test_slicing_not_supportedr     s    

!
!C	y	!	!  A                 s   	AAAc                      t          t          j        d                    } t          j        t
                    5  | | z    d d d            d S # 1 swxY w Y   d S Nr   r   r   s    r   test_arithmetic_not_supportedr     s    

!
!C	y	!	!  c		                 s   AAAc            	         t          t          j        d                    } t          j        t
                    5  d| _        d d d            n# 1 swxY w Y   d}t          j        |dg|z  dg|z  dg|z  dg|z            | _        t          j        t                    5  t          j        |dg|z  dg|z  dg|z  dg|z            | _        d d d            d S # 1 swxY w Y   d S )	Nr   zI am not a WCSrJ   degr   rM   r   )r   ctypecrpixcrvalcdelt)
r
   r^   rn   rY   rZ   r[   rD   
nd_testing_create_wcs_simpler   )r   r   s     r   "test_nddata_wcs_setter_error_casesr   !  s   

!
!C 
y	!	! # #"# # # # # # # # # # # # # # # E+gocEkdUlcEk  CG 
z	"	" 
 
/'E/#+$,#+
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s#   AAA#/CC#&C#c                      t          t          j        d                    } t                      }t	          |d          }t          |t                    rJ || _        t          | j        t                    sJ d S )Nr   rL   )r
   r^   rn   r   r   rO   r   rD   )r   rD   	low_levels      r   )test_nddata_wcs_setter_with_low_level_wcsr  <  sn    

!
!C
%%C "#q))I)%566666CGcg/0000000r   c                      t                      } t          | d          }t          t          j        d          |          }t          |j        t                    sJ d S )NrL   r   r   )r   r   r
   r^   rn   rO   rD   r   )rD   r  r   s      r   #test_nddata_init_with_low_level_wcsr  I  sS    
%%C!#q))I
i
0
0
0Ccg/0000000r   c                   $    e Zd Zed             ZdS )NDDataCustomWCSc                     t                      S r   r   r!   s    r   rD   zNDDataCustomWCS.wcsQ  s    uur   N)r+   r,   r-   r/   rD   r    r   r   r  r  P  s-          X  r   r  c                  H    t          t          j        d                     d S r   )r  r^   rn   r    r   r   test_overriden_wcsr
  V  s      BGFOO$$$$$r   *   TF)rf   rK   rJ   )rg   rL   rf   rK   rJ   c              #      K   | ]Mt          j                                      t                    gfd t	          d          D             z   V  NdS )c                     g | ]<}t           j                            d d                              t                    =S )r   rJ   )rk   )r^   rj   randintastypebool).0_collapse_data_shapes     r   
<listcomp>z<genexpr>.<listcomp>m  sQ     
 
 
  Ia)<==DDTJJ
 
 
r   rM   N)r^   zerosr  r  range)r  r  s    @r   	<genexpr>r  h  s           H())0066	

 
 
 
 2YY
 
 
		
     r   z;mask, unit, propagate_uncertainties, operation_ignores_maskc           
         d t          t          | j                            D             }|                    d t          | j                  D                        |                    d h           t	          j        t	          j        | j                                                | j                  }t          j	        
                    ||           }t          ||           }t          |t          |          ||           }t          |j                  D ]}	t	          j        t	          j        |                    |	          d                    sJ t	          j        t	          j        |                    |	          |j        |	         dz
                      sJ dd	g}
d
dg}|
|z   }|D ]}|D ]} t%          ||          |          } t%          ||          |          } t%          ||          |||          }|j        |j                  }|j        |j                  }||j        k    sJ t/          |          dk    r|s]t	          j        t	          j        ||                    sJ t	          j        t	          j        |j        |j                            sJ nQt          j	                            t          j	                            |t	          j        |                              sJ ||v rA|r?t          j	                            t          j	                            ||                    sJ d S )Nc                 <    h | ]}t          |d d                   S )NrJ   )tuple)r  axess     r   	<setcomp>z test_collapse.<locals>.<setcomp>  s&    TTTTtBQBxTTTr   c                     h | ]}|S r    r    )r  axiss     r   r  z test_collapse.<locals>.<setcomp>  s    @@@td@@@r   rU   )rB   rF   rC   )r  r   r   summeanminmax)r  propagate_uncertaintiesoperation_ignores_mask)r   r  ndimupdater^   arangeprodr"   reshaperu   masked_arrayr   r   r   r_   equalargminargmaxgetattrbaserC   rA   rF   r   
asanyarray)rC   rF   r#  r$  axes_permutationscube
numpy_cubema_cubendarrr  sum_methodsext_methodsall_methodsmethodr  astropy_methodnumpy_methodnddata_methodastropy_unmaskednddata_unmaskeds                       r   test_collapser?    sR    UT\%	BRBR5S5STTT @@uTY/?/?@@@AAAdV$$$9RWTZ(())11$*==D##Dt#44JT%%%G*;D*A*ASWXXXE di   N Nvbht{{{55q99:::::vbht{{{55tz$7G!7KLLMMMMMM &/K%.K+K   M  M% 	M 	MD5WWf554@@@N67:v66DAAAL2GE622(?'=  M
  .2N4G3GH+0-2D1DEO =----- #$$q((- 6"(+;_"M"MNNNNN6"(>+>@R"S"STTTTTT 599L"-2N2NOO     $$)@$uyy^]!K!KLLLLL?	M M  Mr   )Wr   r   collectionsr   	itertoolsr   r   numpyr^   rY   numpy.testingr   astropyr   r{   astropy.nddatar   r	   r   astropy.nddata.nddatar
   astropy.nddata.nduncertaintyr   astropy.utilsr   astropy.utils.maskedr   astropy.wcsr   astropy.wcs.wcsapir   r   r   test_nduncertaintyr   r   r2   r9   rS   rV   r\   ra   rq   rx   markparametrizerP   r   r   r   r   r   r   r   r   r   r   r   r   r   r   !astropy.utils.tests.test_metadatar   r   r   r   r   r   r   r  r  r  r
  rj   seedJycollapse_unitscollapse_propagatecollapse_data_shapescollapse_ignore_maskedlistfrom_iterablecollapse_masksr   permutezipr?  r    r   r   <module>r[     s     # # # # # # ) ) ) ) ) ) ) )      , , , , , ,       & & & & & & 1 1 1 1 1 1 ( ( ( ( ( ( : : : : : : ) ) ) ) ) ) ' ' ' ' ' '       W W W W W W W W W W / / / / / /       0
- 
- 
- 
- 
- 
- 
- 
-       *& & &"    
, , ," " "4( ( (4 ("(999"5"5q!9::V V ;:V.8 8 87 7 7t$ $ $6  "1 1 1	. 	. 	.9 9 9' ' '"     ,0 0 06 6 6? ? ? ; : : : : :    \   1 1 1D-  -  - b    
 
 
6
1 
1 
11 1 1    f   % % % 	r   E]  	   E   $8     & C	c
	c. 
c
 !!"  CC///.@$6 7 77:LL CC///.@ CC(>$?$??BXX  AC(:<RSS <M <M	 <M <M <Mr   