
    IR-e                        d dl Zd dlZd dlmZmZ d dlmZ d dl	m
Z
mZmZmZ d dlmZmZmZmZmZmZ d dlmZ d dlmZ eeee
gZd Zd	 Zd
 Zd Zd Zej                             dddg          d             Z!d Z"ej        #                    e d          ej                             de          d                         Z$d Z%d Z& G d d          Z'dS )    N)assert_allcloseassert_array_equal)units)DogBoxLSQFitterLevMarLSQFitterLMLSQFitterTRFLSQFitter)
Gaussian1DIdentityMapping
Rotation2DShiftUnitsMapping)NumpyRNGContext)	HAS_SCIPYc                  T   t          j        d          } t          j        d          }t          d          } |dd          dk    sJ |                    dd          dk    sJ t           || |          || f           t          |                    ||           | |f           d S )N         r   r   r   )       @      ?r   r   )npzerosonesr   inverser   )xymappings      Dlib/python3.11/site-packages/astropy/modeling/tests/test_mappings.pytest_swap_axesr#      s    
A
AfooG71a==J&&&&??1a  F****wwq!}}q!f---wq!,,q!f55555    c                      t          d          }  | dd          dk    sJ |                     dddd          dk    sJ | j        j        dk    sJ | j        j        dk    sJ d S )N)r   r   r   r   r   r   )r   r   r   r   r      )r   r   n_inputs	n_outputsr!   s    r"   test_duplicate_axesr*   '   s    l##G71a==.....??1aA&&&0000?#q((((?$))))))r$   c                  L    t          dd          }  | dd          dk    sJ d S )Nr   r   r'   r   r   )r   r)   s    r"   test_drop_axes_1r.   /   s5    dQ'''G71a==S!!!!!!r$   c                      t          d          }  | dd          dk    sJ d}t          j        t          |          5  | j         d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   zYMappings such as .* that drop one or more of their inputs are not invertible at this timematch)r   pytestraisesNotImplementedErrorr   )r!   MESSAGEs     r"   test_drop_axes_2r7   4   s    dmmG71a==S!!!!	  
*'	:	:	:                   s   AAAc                      t          dd          } | j        dk    sJ t          d          }|| z  }t           |dd          d           d S )Nr0   r   r-   <   r   g?+t=?)r   r'   r   r   )r!   rotationmodels      r"   test_drop_axes_3r<   ?   s]    dQ'''Gq    "~~HwEEE!QKK/////r$   name	test_namec                 .   t          d|           }| d} d t          d          D             }t          dd          D ]U}|dk    r	|  d	| }t          j        t          |
          5   |j        |d |           d d d            n# 1 swxY w Y   Vd S )Nr   r=   r   c                 <    g | ]}t          j        d           |z  S )r   )r   r   ).0idxs     r"   
<listcomp>z#test_bad_inputs.<locals>.<listcomp>N   s%    33333	333r$      r      r   z expects 2 inputs; got r1   )r   ranger3   r4   	TypeErrorevaluate)r=   r!   r   rC   r6   s        r"   test_bad_inputsrJ   G   s    f4(((G|33%((333AQ{{ ' '!8877#77]9G444 	' 	'Gag&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'' 's   *B		B	B	c            	         t          j        d          } t          j        d          }t          d          }t	          d          }t          d          }||z  |z  }t           |dd          d            || |          \  }}t          ||ft          j        g dg dg          t          j        g dg dg          f           t          |                    ||          | |fd	
           d S )Nr   r   r9   )angler   )g9B. g,@)n]zrM   rM   )r   r   r   g|=atol)	r   r   r   r   r   r   r   arrayr   )r   r    ident1shiftr:   r;   res_xres_ys           r"   test_identityrU   X   s   
A
Aa[[F!HHE###HUNX%EEE!QKK!IJJJ5A;;LE5	H;;;;;;  H#OO#OO 	
  " EMM%//!QgFFFFFFr$   zrequires scipy)reasonfitterc                     |             } t          d          t          d          z  t          ddd          z  }t          j        d          } ||          }d}t          d          5  t          j                            d||j                  }d d d            n# 1 swxY w Y   ||z   } | |||          } ||          }t          |||	           d S )
Nr   r,   rE   r&   
   g{Gzt?i g        rN   )
r   r   r
   r   aranger   randomnormalshaper   )	rW   mr   y_realdyny_noisy	new_modely_fits	            r"   test_fittable_compoundre   w   s    VXXFgdmm#jAq&9&99A
	"AQqTTF	B		!	! / /IS"ag../ / / / / / / / / / / / / / /qjGq!W%%IIaLLEE6++++++s   ,'BB#&B#c                      t          dd          } t          |           dk    sJ t          d          } t          |           dk    sJ d S )Nr   foor@   z<Identity(1, name='foo')>z<Identity(1)>)r   reprr^   s    r"   test_identity_reprrj      sT    A7711111A77o%%%%%%r$   c                      t          ddgd          } t          |           dk    sJ t          ddg          } t          |           dk    sJ d S )Nr   r   rg   r@   z<Mapping([0, 1], name='foo')>z<Mapping([0, 1])>)r   rh   ri   s    r"   test_mapping_reprrl      s]    AU###A7755555AA77)))))))r$   c                        e Zd Zd Zd Zd ZdS )TestUnitsMappingc                    t          t          j        d ffddd          }|j        t          j        d ffk    sJ |j        ddik    sJ |j        dk    sJ |j        ddik    sJ |j        dk    sJ |j        dt          j        ik    sJ t          t          j	        d ff          }|j        t          j	        d ffk    sJ |j        ddik    sJ |j        J |j        ddik    sJ |j        J |j        dt          j	        ik    sJ d}t          j        t          |          5  t          t          j        d ft          j        t          j	        ff           d d d            d S # 1 swxY w Y   d S )	N	test_eqivTtest)input_units_equivalenciesinput_units_allow_dimensionlessr=   r   Fz1If one return unit is None, then all must be Noner1   )r   ur^   _mapping_input_units_strictrr   rs   r=   _input_unitsKr3   r4   
ValueError)selfr;   r6   s      r"   test___init__zTestUnitsMapping.test___init__   s   c4[N&1,0	
 
 
 ~13+////(S$K7777.+====4dCCCCzV####!c13Z//// qsDk^,,~13+////(S$K7777.6664eDDDDz!!!!c13Z//// G]:W555 	4 	413+QSz2333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s   (4E))E-0E-c                    t          t          j        d ff          } |dt          j        z            dk    sJ t          t          j        t          j        ff          } |dt          j        z            dt          j        z  k    sJ t          t          j        d ft          j        d ff          } |dt          j        z  dt          j        z            dk    sJ t          t          j        t          j        ft          j        t          j        ff          } |dt          j        z  dt          j        z            dt          j        z  dt          j        z  fk    sJ d S )NrY      )rY   r}   )r   rt   r^   rx   rz   r;   s     r"   test_evaluatezTestUnitsMapping.test_evaluate   s)   qsDk^,,uR!#X"$$$$qsACj]++uR!#X"qs(****c4[13+&
 
 uR!#XrACx((H4444c13Z!#qs$
 
 uR!#XrACx((R!#XrACx,@@@@@@@r$   c                 :   t          t          j        d ffd          }t          |          dt          t          j                   dk    sJ t          t          j        d ff          }t          |          dt          t          j                   dk    sJ d S )Nrg   r@   z<UnitsMapping(((z, None),), name='foo')>z, None),))>)r   rt   r^   rh   r~   s     r"   	test_reprzTestUnitsMapping.test_repr   s    qsDk^%888E{{SacSSSSSSSqsDk^,,E{{GacGGGGGGGGGr$   N)__name__
__module____qualname__r{   r   r    r$   r"   rn   rn      sI        4 4 4:A A A"H H H H Hr$   rn   )(numpyr   r3   numpy.testingr   r   astropyr   rt   astropy.modeling.fittingr   r   r   r	   astropy.modeling.modelsr
   r   r   r   r   r   astropy.utilsr   "astropy.utils.compat.optional_depsr   fittersr#   r*   r.   r7   r<   markparametrizerJ   rU   skipifre   rj   rl   rn   r   r$   r"   <module>r      sA        = = = = = = = =                                 * ) ) ) ) ) 8 8 8 8 8 8L+
G6 6 6* * *" " "
  0 0 0 $!455' ' 65' G G G> 	M*:;;7++, , ,+ <;,& & &* * *4H 4H 4H 4H 4H 4H 4H 4H 4H 4Hr$   