
    IR-e&                        d dl Zd dlZd dlmZ d dlmZ d Z G d d          Z	ej
                            dej        ej        fdg          d	             Zej
                            dej        ej        fdg          d
             Zej
                            dej        dg          d             Zej
                            dej        ej        fdg          d             Zej
                            dej        ej        fdg          d             Zej
                            dej        ej        fdg          d             Zd Zej
                            dej        ej        fdg          d             Zej
                            dej        ej        fdg          d             Zej
                            dej        ej        fdg          d             Zej
                            dej        ej        fdg          d             Zej
                            dej        ej        fdg          d             Zej
                            dej        ej        fdg          d             Zd Zd Zd Zd ZdS )    N)units)Quantityc                      t           j        dt           j        dt          fd            } dt           j        z  d}} | ||          \  }}||k    sJ ||k    sJ dS )ziTest annotations that are not unit related are ignored.

    This test passes if the function works.
    xyc                 
    | |fS N r   r   s     Mlib/python3.11/site-packages/astropy/units/tests/test_quantity_annotations.pyfuncz2test_ignore_generic_type_annotations.<locals>.func   s    !t       cool stringN)uquantity_inputmstr)r   i_qi_stro_qo_strs        r   $test_ignore_generic_type_annotationsr      sz           QS-Cc5!!JC#::::E>>>>>>r   c                   0    e Zd ZdZd Zd Zd Zd Zd ZdS )TestQuantityUnitAnnotationsz$Test Quantity[Unit] type annotation.c                    t           j        dt          t           j                 dt          fd            }dt           j        z  d}} |||          \  }}||k    sJ ||k    sJ t          j        t           j                  5   |dt           j        z  |           d d d            n# 1 swxY w Y    ||ddi          \  }}||k    sJ ||k    sJ d S )	Nr   r   c                 
    | |fS r	   r
   r   s     r   r   z@TestQuantityUnitAnnotations.test_simple_annotation.<locals>.func#   s    a4Kr   r   r      notza string)	r   r   r   r   r   pytestraises
UnitsErrors)selfr   r   r   r   r   s         r   test_simple_annotationz2TestQuantityUnitAnnotations.test_simple_annotation"   s3   	
		HQSM 	c 	 	 	 
		 WmUT#u%%
Uczzzz~~~~ ]1<(( 	! 	!DQS%   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! T#z233
Uczzzz~~~~~~s   B))B-0B-c                     t           j        dt          t           j                 dt          t           j                 fd            }dt           j        z  } ||          }||k    sJ |j        t           j        k    sJ d S )Nareturnc                     | S r	   r
   )r'   s    r   
multi_funczHTestQuantityUnitAnnotations.test_multiple_annotation.<locals>.multi_func6   s    Hr   r   )r   r   r   kmr   unit)r$   r*   r   r   s       r   test_multiple_annotationz4TestQuantityUnitAnnotations.test_multiple_annotation5   sz    	
		(14. 	Xac] 	 	 	 
		 !$hjooczzzzx13r   c                 f   t           j        ddt          j        t          t           j                          dt          t           j                 fd            }dt           j        z  } ||          }|j        t           j        k    sJ ||k    sJ d } ||          }|dt           j        z  k    sJ d S )Nr   r(   c                 (    | dt           j        z  S | S )Nr   )r   r+   r   s    r   opt_funczITestQuantityUnitAnnotations.test_optional_and_annotated.<locals>.opt_func@   s    y14xHr      r   r	   )r   r   TOptionalr   r   r+   r,   )r$   r1   r   r   s       r   test_optional_and_annotatedz7TestQuantityUnitAnnotations.test_optional_and_annotated?   s    	
		 	
8AC=1 	Xad^ 	 	 	 
		
 ACihsmmx14czzzzhsmma!$hr   c                 f   t           j        dt          j        t          t           j                 t          t           j                 d f         fd            }dt           j        z  } ||          }|d|z  k    sJ dt           j        z  } ||          }|d|z  k    sJ d } ||          }|J d S )Nr   c                     | d S d| z  S )Nr   r
   r0   s    r   
union_funczHTestQuantityUnitAnnotations.test_union_and_annotated.<locals>.union_funcQ   s    yt1ur   r   r   )r   r   r3   Unionr   r   r#   )r$   r8   r   r   s       r   test_union_and_annotatedz4TestQuantityUnitAnnotations.test_union_and_annotatedO   s    	
		!'(13-!#"DE 	 	 	 
		 !#gjooa#g~~~~!#gjooa#g~~~~joo{{{{{r   c                     t          j        t          d          5  t          d          d d d            d S # 1 swxY w Y   d S )Nzunit annotation is notmatchzdefinitely not a unit)r    r!   	TypeErrorr   )r$   s    r   test_not_unit_or_ptypez2TestQuantityUnitAnnotations.test_not_unit_or_ptyped   s    ]9,DEEE 	. 	.,--	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.s   7;;N)	__name__
__module____qualname____doc__r%   r-   r5   r:   r?   r
   r   r   r   r      se        ..  &       *. . . . .r   r   zsolarx_unit,solary_unit)anglerD   c                 D   t           j        d| d|fd            } |dt           j        z  dt           j        z            \  }}t          |t                    sJ t          |t                    sJ |j        t           j        k    sJ |j        t           j        k    sJ d S )Nsolarxsolaryc                 
    | |fS r	   r
   rF   rG   s     r   myfunc_argsztest_args3.<locals>.myfunc_argsm       v~r   r   )r   r   arcsec
isinstancer   r,   solarx_unitsolary_unitrJ   rF   rG   s        r   
test_args3rQ   i   s     K      ![QXq18|<<NFFfh'''''fh''''';!("""";!(""""""r   c                 R   t          j                    d| d|fd            } |dt           j        z  dt           j        z            \  }}t	          |t
                    sJ t	          |t
                    sJ |j        t           j        k    sJ |j        t           j        k    sJ d S )NrF   rG   c                 
    | |fS r	   r
   rI   s     r   rJ   z)test_args_noconvert3.<locals>.myfunc_args~   rK   r   r   )r   r   degarcminrM   r   r,   rN   s        r   test_args_noconvert3rV   z   s     K      ![QUAL99NFFfh'''''fh''''';!%;!(""""""r   rO   rD   c                     t           j        d| fd            } |dt           j        z  d          \  }}t          |t                    sJ t          |t
                    sJ |j        t           j        k    sJ d S )NrF   c                 
    | |fS r	   r
   rI   s     r   rJ   z+test_args_nonquantity3.<locals>.myfunc_args   rK   r   r   d   )r   r   rL   rM   r   intr,   )rO   rJ   rF   rG   s       r   test_args_nonquantity3r[      s    K     ![QXs33NFFfh'''''fc""""";!(""""""r   )rD   energyc                 x   t          j        t          j                              d| d|fd            } |dt           j        z  dt           j        z            \  }}t          |t                    sJ t          |t                    sJ |j        t           j        k    sJ |j        t           j        k    sJ d S )NequivalenciesrF   rG   c                 *    | |dt           j        z  z   fS N
   r   JrI   s     r   rJ   z,test_arg_equivalencies3.<locals>.myfunc_args       vac***r   r   rY   )r   r   mass_energyrL   gramrM   r   r,   rN   s        r   test_arg_equivalencies3rh      s     AMOO444+K + + + + 54+ ![QXsQV|<<NFFfh'''''fh''''';!("""";!&      r   c                     t           j        d| d|fd            }t          j        t           j        dt          |           d          5   |dt           j        z  dt           j        z            \  }}d d d            d S # 1 swxY w Y   d S )	NrF   rG   c                 
    | |fS r	   r
   rI   s     r   rJ   z%test_wrong_unit3.<locals>.myfunc_args   rK   r   MArgument 'solary' to function 'myfunc_args' must be in units convertible to ''.r<   r   rY   )r   r   r    r!   r"   r   rL   r+   rN   s        r   test_wrong_unit3rm      s     K      
	4";//4 4 4
 
 
 ? ? %Q\3:>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?s   *BB
Bc                     t           j        d| d|fd            }t          j        t          d          5   |dt           j        z  d          \  }}d d d            d S # 1 swxY w Y   d S )NrF   rG   c                 
    | |fS r	   r
   rI   s     r   rJ   z'test_not_quantity3.<locals>.myfunc_args   rK   r   tArgument 'solary' to function 'myfunc_args' has no 'unit' attribute. You should pass in an astropy Quantity instead.r<   r   rY   )r   r   r    r!   r>   rL   rN   s        r   test_not_quantity3rq      s     K      
I
 
 
 8 8 %Q\3778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8s   A  A$'A$c                     t          j        t           j                  dt           j        dt           j        fd            }  | dt           j        z  dt           j        z            \  }}t	          |t
                    sJ t	          |t
                    sJ |j        t           j        k    sJ |j        t           j        k    sJ d S )NrF   rF   rG   c                 
    | |fS r	   r
   rI   s     r   rJ   z,test_decorator_override.<locals>.myfunc_args   rK   r   r   )r   r   rL   r+   rM   r   r,   )rJ   rF   rG   s      r   test_decorator_overrideru      s    QX&&&AD !(    '& ![QXq18|<<NFFfh'''''fh''''';!("""";!(""""""r   c                 h   t           j        dt           j        z  fd| d|fd            } |dt           j        z  ddt           j        z            \  }}}t	          |t
                    sJ t	          |t                    sJ t	          |t
                    sJ |j        t           j        k    sJ d S )Nr   rF   mykc                     | ||fS r	   r
   )rF   rG   rw   s      r   rJ   z!test_kwargs3.<locals>.myfunc_args   s    vs""r   rY   )rw   r   r   rL   rT   rM   r   rZ   r,   )rO   rP   rJ   rF   rG   rw   s         r   test_kwargs3rz      s     DEL # #K #k # # # # &+a!(lCS15[IIIFFCfh'''''fc"""""c8$$$$$8qur   c                    t           j        dt           j        z  dfd| d|fd            } |dt           j        z  ddt           j        z  d          \  }}}}t	          |t
                    sJ t	          |t                    sJ t	          |t
                    sJ t	          |t                    sJ |j        t           j        k    sJ |dk    sJ d S )	Nr   i  rF   rw   c                     | |||fS r	   r
   )rF   rG   rw   myk2s       r   rJ   z(test_unused_kwargs3.<locals>.myfunc_args   s     vsD((r   rY   rb   )rw   r}   ry   )rO   rP   rJ   rF   rG   rw   r}   s          r   test_unused_kwargs3r~      s     89AH4) ))*5) ) ) )
 !,AL#3;UW X X XFFCfh'''''fc"""""c8$$$$$dC     8qu2::::::r   zsolarx_unit,energyc                    t          j        t          j                              dt           j        z  fd| d|fd            } |dt           j        z  dt           j        z            \  }}t          |t                    sJ t          |t                    sJ |j        t           j        k    sJ |j        t           j        k    sJ d S )Nr^   rb   rF   r\   c                 *    | |dt           j        z  z   fS ra   rc   )rF   r\   s     r   rJ   z.test_kwarg_equivalencies3.<locals>.myfunc_args  re   r   r   rY   )	r   r   rf   eVrL   rg   rM   r   r,   )rO   r\   rJ   rF   s       r   test_kwarg_equivalencies3r     s    AMOO444:<qt) + +K + + + + 54+ ![QXsQV|<<NFFfh'''''fh''''';!("""";!&      r   c                 @   t           j        dt           j        z  fd| d|fd            }t          j        t           j        dt          |           d          5   |dt           j        z  d	t           j        z  
          \  }}d d d            d S # 1 swxY w Y   d S )Nrb   rF   rG   c                 
    | |fS r	   r
   rI   s     r   rJ   z+test_kwarg_wrong_unit3.<locals>.myfunc_args  rK   r   rk   rl   r<   r   rY   rG   )	r   r   rT   r    r!   r"   r   rL   r+   rN   s        r   test_kwarg_wrong_unit3r     s    ?AAEz  K      
	:%(%5%5: : :
 
 
 F F %Q\#*EEEF F F F F F F F F F F F F F F F F Fs   +BBBc                     t           j        dt           j        z  fd| d|fd            }t          j        t
          d          5   |dt           j        z  d	          \  }}d d d            d S # 1 swxY w Y   d S )
Nrb   rF   rG   c                 
    | |fS r	   r
   rI   s     r   rJ   z-test_kwarg_not_quantity3.<locals>.myfunc_args'  rK   r   rp   r<   r   rY   r   )r   r   rT   r    r!   r>   rL   rN   s        r   test_kwarg_not_quantity3r   #  s     ?AAEz  K      
>
 
 
 ? ? %Q\#>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?s   A00A47A4c                     t           j        dt           j        z  fd| d|fd            } |dt           j        z            \  }}d S )Nrb   rF   rG   c                 
    | |fS r	   r
   rI   s     r   rJ   z(test_kwarg_default3.<locals>.myfunc_args9  rK   r   r   )r   r   rT   rL   rN   s        r   test_kwarg_default3r   5  sa     ?AAEz  K      ![QX..NFFFFr   c                      t           j        dt           j        dt           j        fd            }  | dt           j        z            }|j        t           j        u sJ d S )NrF   r(   c                     | S r	   r
   rs   s    r   rJ   z+test_return_annotation.<locals>.myfunc_argsA  s    r   r   )r   r   rL   rT   r,   rJ   rF   s     r   test_return_annotationr   @  sh    AH      [QX&&F;!%r   c                      t           j        dt           j        dd fd            }  | dt           j        z            }|J d S )NrF   r(   c                     d S r	   r
   rs   s    r   rJ   z0test_return_annotation_none.<locals>.myfunc_argsJ      r   r   )r   r   rL   r   s     r   test_return_annotation_noner   I  sX    AH      [QX&&F>>>>>r   c                      t           j        dt           j        dt          fd            }  | dt           j        z            }|dk    sJ d S )NrF   r(   c                     dS )Nr   r
   rs   s    r   rJ   z3test_return_annotation_notUnit.<locals>.myfunc_argsS  s    qr   r   r   )r   r   rL   rZ   r   s     r   test_return_annotation_notUnitr   R  s\    AH      [QX&&FQ;;;;;;r   c                      ddl m} m  G fdd|           }t          j        d|dt          j        dd fd            } ||j        d	t          j        z             d S )
Nr   )Enumautoc                   $    e Zd Z              ZdS )'test_enum_annotation.<locals>.BasicEnumN)r@   rA   rB   AnOption)r   s   r   	BasicEnumr   _  s        466r   r   r'   br(   c                     d S r	   r
   )r'   r   s     r   rJ   z)test_enum_annotation.<locals>.myfunc_argsb  r   r   r   )enumr   r   r   r   rL   r   )r   r   rJ   r   s      @r   test_enum_annotationr   [  s          D    y QX $     K	"AL11111r   ) typingr3   r    astropyr   r   astropy.unitsr   r   r   markparametrizerL   rQ   rV   r[   r   rh   rT   rm   rq   ru   rz   r~   r   r   r   r   r   r   r   r   r
   r   r   <module>r      s              " " " " " "  "G. G. G. G. G. G. G. G.T 18 46HI # # # 18 46HI # # # 7(;<<
# 
# =<
# 14 02EF ! ! ! 15 13EF ? ? ? 15 13EF 8 8 8# # # 15 13EF    15 13EF   $ -140@BU/VWW! ! XW! 15 13EF F F F 15 13EF ? ? ? 15 13EF / / /         2 2 2 2 2r   