
    IR-eb              	          d Z 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 ddlmZ d Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd  Z(d! Z)d" Z*d# Z+d$ Z,d% Z-d& Z.d' Z/ e0            Z1ej2        3                                D ]9Z4 e5e4ej6                  r& e5e4ej7                  se18                    e4           :ej9        :                    d( e;e1e/)          e/*          d+             Z< e0            Z=ej>        j2        3                                D ]IZ4 e5e4ej6                  r6 e5e4ej7                  s%e4ej>        j?        k    re=8                    e4           Jej9        :                    d( e;e=e/)          e/*          d,             Z@ e0            ZAejB        j2        3                                D ]IZ4 e5e4ej6                  r6 e5e4ej7                  s%e4ejB        j?        k    reA8                    e4           Jej9        :                    d( e;eAe/)          e/*          d-             ZCd. ZDd/ ZEd0 ZFd1 ZGd2 ZHd3 ZId4 ZJd5 ZKd6 ZLd7 ZMd8 ZNd9 ZOd: ZPd; ZQd< ZRd= ZSd> ZTej9        :                    d( ejU        d?gd@dAiB           ejV        dCejW        ejX        z            g          dD             ZYdE ZZdF Z[dG Z\dH Z]dI Z^dJ Z_dK Z`dL ZadM ZbdN ZcdO ZddP ZedQ ZfdR ZgdS ZhdT ZidU ZjdV ZkdW ZldX ZmdY ZndZ Zod[ Zpd\ Zqd] Zrd^ Zsd_ Ztej9        :                    d`g da          db             Zudc ZvdS )dz'Regression tests for the units package.    N)Fraction)assert_allclose)	constantsunits)utilsc                     t          j        t           j                  t           j        u sJ t          j        dt           j        z            } | t          j        dt           j        gdg          k    sJ t          j        |           | u sJ t          j        d| z            t          j        dt           j        gdg          k    sJ t          j        dd| z  dz  t	                                }|t          j        dt           j        gdg          k    sJ t          j        d          t           j        k    sJ t          j        d	          t           j        k    sJ t           j        t           j        k    sJ t          j        d
          | k    sJ t          j        d          t          j        dg g           k    sJ t          j                    t           j        k    sJ d S )N      $@   g      Y@foo   	namespaceg     @m z10 m)uUnitr   CompositeUnitlocalsdimensionless_unscaledone)	ten_meterr   s     >lib/python3.11/site-packages/astropy/units/tests/test_units.pytest_initialisationr      s   6!#;;!#tacz""IqseaS9999996)	))))6$"##quqseaS'I'IIIII
&	)a/688
D
D
DC!/'AC51#6666666#;;!#6"::111115A,,,,,6&>>Y&&&&6$<<1?4R888888688q///////    c                  d   t           j        t          dd          z  } t          | j        d         t                    sJ t           j        t          dd          z  } t          | j        d         t
                    sJ t           j        dz  } t          | j        d         t                    sJ d S )Nr      r   r   UUUUUU?)r   r   r   
isinstancepowersfloatxs    r   test_invalid_powerr$   $   s    	x1~~Aahqk8,,,,,	x1~~Aahqk5))))) 	
	Aahqk8,,,,,,,r   c                  >    t           j        t           j        k    rJ d S Nr   r   s r   r   test_invalid_comparer*   0   s    qs





r   c                  t    t          j                            t           j                  d          dk    sJ d S )Nr   i  )r   h_get_converterr(   r)   r   r   test_convertr.   4   s3    3ac""1%%------r   c                     t          j        t          j                  5  t          j                            t          j        d           d d d            n# 1 swxY w Y   t          j        t          j                  5  t          j        t          j        z                      t          j        d           d d d            d S # 1 swxY w Y   d S Nr   )pytestraisesr   
UnitsErrorcmtor(   r   r)   r   r   test_convert_failr6   8   s   	q|	$	$  	Q              	q|	$	$    	
Q                                   s#   +AAA?8CCCc                     t          j        t           j        z  t           j        z                      t           j                  d          dk    sJ t           j        t           j        z  t           j        dz  k    sJ t           j        t           j        z  t           j        z  t           j        dz  k    sJ t           j                            dt           j        z  d          dk    sJ d S )Nr   $   r   r     MbP?)r   r4   r(   r,   r-   r   Hzr5   r)   r   r   test_compositer<   ?   s    D13J,,QS11!44::::4!$;!$'!!!!4!$;q((((4774!$;""e++++++r   c                  D    t          t          j                  dk    sJ d S )Nr4   )strr   r4   r)   r   r   test_strr?   H   s!    qt99r   c                  D    t          t          j                  dk    sJ d S )Nz
Unit("cm"))reprr   r4   r)   r   r   	test_reprrB   L   s!    ::%%%%%%r   c                  x   t           j        j        t           j        u sJ t           j        j        j        dk    sJ t           j        j        j        t           j        gk    sJ t           j        j        dk    r t           j        j        t           j        gk    sJ t          t           j        j        j        d           t           j        j        j        t           j        gk    sJ t          j	        dt                                } | j        | u sJ t          j	        ddt           j        z  t                                }|j        j        dk    sJ |j        j        t           j        gk    sJ |                                j        d	k    sJ |                                j        t           j        gk    sJ d S )
N     @@      ?gHzlT6+@blar   blabla
   r
   i  )r   r   
representskmscalebasesRyr   eVdef_unitr   hr	decomposer(   )rF   rG   s     r   test_representsrR   P   so   3>QS    4? F****4? QSE))))4:v!5!5!5!5ADO)+=>>>4? QTF****
*Ufhh
/
/
/C>S    Z"qt)vxx@@@F"d****"qtf,,,,#y0000#u,,,,,,r   c                     t          t          j                            t          j                  d           t          t          j                            t          j                  d           t          t          j                            t          j                  d           t          t          j                            t          j                  d           t          t          j	                            t          j
                  d           t          t          j                            t          j                  d           d S )Nr:   r9   ư>g(벥U>g-DT!@g-DT!)@)r   r   kpcr5   MpcyrMyrAUpccycleradspatsrr)   r   r   test_units_conversionr_   `   s    AEHHQUOOU+++AEHHQUOOT***ADGGAENNF+++ADGGADMM=111AGJJqu%%'8999AFIIadOO%677777r   c                      t           j        t           j        z  t          dd          z  t           j        z   t           j        t           j        z  dz   d S )Nr   r   	   )r   rU   rW   r   rX   AAergr)   r   r   test_units_manipulationrd   i   s=    UQT\hq!nn$qu,,TAE\ar   c                  b    t           j        t           j                                        k    sJ d S r&   )r   rM   rQ   r)   r   r   test_decomposerf   o   s'    414>>########r   c                      dt           j        z  dt           j        z  z  } | j        j        dk    sJ t          | j        d           dS )zh
    Issue #1150: Test for conversion of dimensionless quantities
                 to the SI system
    rE   dimensionlessr:   N)r   rU   rV   unitphysical_typer   sitestunits    r   test_dimensionless_to_sirn   s   sH     aeae,H=&/9999HK'''''r   c                      dt           j        z  dt           j        z  z  } | j        j        dk    sJ t          | j        d           dS )zi
    Issue #1150: Test for conversion of dimensionless quantities
                 to the CGS system
    rE   rh   r:   N)r   r   rJ   ri   rj   r   cgsrl   s    r   test_dimensionless_to_cgsrq      sH     ac	cADj)H=&/9999HL%(((((r   c                      t          j        t          j        d          5  t          j        dd           d d d            d S # 1 swxY w Y   d S )NFOOmatchwarnparse_strict)r1   warnsr   UnitsWarningr   r)   r   r   test_unknown_unitr{      s    	anE	2	2	2 + +	u6****+ + + + + + + + + + + + + + + + + +s   AA	A	c                     t          j        t          j        d          5  t          j        d                                          dk    sJ 	 d d d            n# 1 swxY w Y   t          j        t                    5  t          j        dd           d d d            n# 1 swxY w Y   t          j        dd          } |                                 dk    sJ d S )	Nz8'm/s/kg' contains multiple slashes, which is discouragedrt   zm/s/kgz
m / (kg s)vounitformatzkg(3/10) * m(5/2) / szm(5/2) kg(3/10) / s)r1   ry   r   rz   r   	to_stringr2   
ValueErrorr"   s    r   test_multiple_solidusr      sU   		H
 
 
 < < vh))++|;;;;;	< < < < < < < < < < < < < < < 
z	"	" * *	x))))* * * * * * * * * * * * * * * 	
&x888A;;==1111111s#   -AA"A?B""B&)B&c                     t          j        dd          } t          | t           j                  sJ | j        dk    sJ t          j        dd          }| |k    sJ |                     |          sJ t          j        dd          }| |k    sJ |                     |          rJ | dk    sJ | t           j        k    sJ | d k    sJ | d t           j        fvsJ t          j        t                    5  | 
                    |           d d d            n# 1 swxY w Y   |                     d          }|                    d          }t          j        t                    5  t          j        dd           d d d            n# 1 swxY w Y   t          j        t                    5  t          j        d            d d d            d S # 1 swxY w Y   d S )Nrs   silentrw   BARlatexrp   strict)r   r   r   UnrecognizedUnitnameis_equivalentr   r1   r2   r   r-   r   	TypeError)ri   unit2unit3_s       r   test_unknown_unit3r      s   6%h///DdA./////9F5x000E5====e$$$$$F5x000E5====!!%((((( 5====13;;;;4<<<<ac{""""	z	"	" # #E"""# # # # # # # # # # # # # # # 	wAA	z	"	" - -	u8,,,,- - - - - - - - - - - - - - - 
y	!	!  	t                 s6   7DD D'F

FF.GGGc                      t          j        t                    5  g dt          j        z   d d d            d S # 1 swxY w Y   d S )N)abc)r1   r2   r   r   r   r)   r   r   test_invalid_scaler      s    	y	!	!  !#                 s   9= =c                  N    t          j        ddd          } | j        dk    sJ d S )Nz	10+22/cm2cdsr   )r   rx   gMD)r   r   rK   ri   s    r   test_cds_powerr      s1    6+e(CCCD:r   c                  T   t          j        dt           j        dz  t                                } dt                      v sJ t          j        |           5  dt          j                    j        v sJ 	 d d d            n# 1 swxY w Y   dt          j                    j        vsJ d S )Nr   r   r   )r   rO   r   r   add_enabled_unitsget_current_unit_registryregistry)r   s    r   test_registerr      s    
*UACFfhh
7
7
7CFHH	
	S	!	! ? ?355>>>>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ?355>>>>>>>s   BBBc                      t           j        t           j        z  } |                     t           j        t           j        z  d          }d S r0   )r   r4   r(   in_unitsrZ   hour)
speed_unitr   s     r   test_in_unitsr      s0    JAD16M1--AAAr   c                  h    t           j        t           j        z  t          j        d          k    sJ d S r0   )r   r   r   r)   r   r   test_null_unitr      s)    C!#I!&))######r   c                      t           j                            d          du sJ t           j                            d          du sJ d S )Nr   FrZ   T)r   r   r   r)   r   r   test_unrecognized_equivalencyr      sJ    3U##u,,,,3T""d******r   c                      t          j        t          j        d          5  t          j                            t          j        t          j        dz  z             d d d            d S # 1 swxY w Y   d S )Nzlength.+ are not convertiblert   r   )r1   r2   r   r3   rb   r5   r,   r(   r)   r   r   test_convertible_exceptionr      s    	q|+J	K	K	K  	ac1f                 s   :A((A,/A,c                      t          j        t          j        d          5  t          j                            t          j                   d d d            d S # 1 swxY w Y   d S )Nz(length. and .+time.+ are not convertiblert   )r1   r2   r   r3   r   r5   r(   r)   r   r   test_convertible_exception2r      s    	q|+V	W	W	W  	qs                 s   *AAAc                       G d d          } t          j        t                    5  t          j         |                        d d d            d S # 1 swxY w Y   d S )Nc                       e Zd ZdS )test_invalid_type.<locals>.AN)__name__
__module____qualname__r)   r   r   Ar      s        r   r   )r1   r2   r   r   r   )r   s    r   test_invalid_typer      s            
y	!	!  	qqss                 s   AAAc                     t           j                            t           j        t           j        z            sJ t           j                            t           j        j                  } | d         j        d         t           j        u sJ t           j                            t           j        j                  } | d         j        d         t           j        u sJ dS )z
    Issue #599
    r   r   N)r   r^   r   r\   composerp   rL   __dict__resultss    r   test_steradianr      s     4aeaem,,,,,dlll--G1:A!%''''dlll00G1:A!$&&&&&&r   c                     ddl m}  ddlm} | j        j                            |j                  }|j        t          j
        t          j        t          j        gk    sJ |j        t          dd          ddgk    sJ |j        d	k    sJ d
S )z
    From issue #576
    r   )erp   rL   r   r         ?rE   N)astropy.constantsr   astropy.unitsrp   esuri   rQ   rL   _basesr   r4   gr(   _powersr   _scale)r   rp   ds      r   test_decompose_basesr      s    
 $#####!!!!!!	
39--A8ac13'''''9!Qb111118s??????r   c                      t           j        t           j        z  t           j        z  } |                                 }t          |d         j                  t           j        t           j        hk    sJ d S )Nr   )r   cdr^   Wbr   setr   lm)complexcomposeds     r   test_complex_composer     sS    dQTkAD G  Hx{!""qtQTl222222r   c                      t           j                            t          j                              } t	          d | D                       sJ d S )N)equivalenciesc              3   B   K   | ]}t           j        g|j        k    V  d S r&   )r   r;   rL   ).0r#   s     r   	<genexpr>z%test_equiv_compose.<locals>.<genexpr>  s-      33Qv 333333r   )r   r   r   spectralany)r   s    r   test_equiv_composer     sF    s{{{66H33(3333333333r   c                      t          j        t          j                  5  t          j                            g            d d d            d S # 1 swxY w Y   d S Nr   )r1   r2   r   r3   r   r   r)   r   r   test_empty_composer     s    	q|	$	$  	"                 s   !AAAc                      t          |           S r&   )r>   r   s    r   _unit_as_strr     s     t99r   ri   )key)idsc                     |                                                                  }d}|D ]F}t          |j                  r|j        d         | u rd} n*t          | j                  dk    rd} nG|sJ d S )NFr   T)rQ   r   lenrL   )ri   composed_listfoundr   s       r   test_compose_roundtripr   ,  s     NN$$,,..ME!  x~ 	~a D(( ) __!!EE " LLLLLr   c                                            t          j                  } fd|D             sJ |d          j        k    sJ d S )Nc                 :    g | ]}|                               S r)   r   r   r#   ri   s     r   
<listcomp>z*test_compose_cgs_to_si.<locals>.<listcomp>N  s%    ...aAOOD!!...r   r   )	to_systemr   rk   )ri   rk   s   ` r   test_compose_cgs_to_sir   I  sU     
		B....2......a5DGr   c                     	                       t          j                  } fd|D             sJ |d          j        k    sJ d S # t          j        $ r* t          j                                         j        v rY d S  w xY w)Nc                 :    g | ]}|                               S r)   r   r   s     r   r   z*test_compose_si_to_cgs.<locals>.<listcomp>k  s%    333!%%333r   r   )r   r   rp   r3   r   rQ   rL   )ri   rp   s   ` r   test_compose_si_to_cgsr   ^  s    
	"nnQU## 4333s3333331v!!!!!! <   3$..""(((DD	s   A 4B >B c                      t           j        j        t           j        usJ t           j        t           j        t           j        dz  t           j        z  t           j        z  z  j        j        vsJ dS )zwCheck units that are not official derived units.

    Should not appear on its own or as part of a composite unit.
    r   N)r   barrk   kgr(   r^   nmr   r)   r   r   
test_to_sir   o  sT     5815    5a!$!56:AAAAAAAr   c                  
   t           j                            t           j                  d         j        d         t           j        u sJ t           j                            t           j                  d         j        dk    sJ d S )Nr   r   r
   )r   Par   rp   r   Bar   r)   r   r   test_to_cgsr   }  sa    4>>!%  #*1-55554>>!%  #*d222222r   c                      ddl m}  t          j                            | j                  j        d         | j        u sJ d S )Nr   r   r   )r   rp   r   r   rQ   rL   r   r4   r   s    r   test_decompose_to_cgsr     sG    !!!!!!3==sy=))03sv======r   c                     t           j        t           j        dz  z  t           j        z  } |                     t           j        t           j        t           j        g          }t          |          dk    sJ |d         j        t           j        t           j        t           j        gk    sJ |d         j        g dk    sJ d S )Nr   r   r   r   )   r   )	r   r   r(   r   r   Nr   r   r   )ri   results     r   test_compose_issue_579r     s    4!#q&=13D\\ac13\00Fv;;!!9QS!#....!9


******r   c                  F   t           j                            t           j        f          } | d         j        d         t           j        u sJ | d         j        dk    sJ t           j                            t           j        gd          } | d         j        d         t           j        u sJ | d         j        dk    sJ t           j                            t           j        g          } | d         j        d         t           j        u sJ | d         j        dk    sJ t           j        t           j        z                      t           j        t           j        f          } | d         j        t           j        t           j        gk    sJ t          | d         j        d           t          j        t           j                  5  t           j        t           j        z                      t           j        t           j        fd           d d d            d S # 1 swxY w Y   d S )	Nr   r   rE   T)r   include_prefix_unitsr:   gObn]?F)r   r   r   rL   rK   rJ   r(   rZ   rX   r   r1   r2   r3   r"   s    r   test_compose_prefix_unitr    s   	13&!!AQ4:a=ACQ4:	14&t<<AQ4:a=AD    Q4:	14&!!AQ4:a=AD    Q4:	
AD!%=11AQ4:!$&&&&AaDJ 2333	q|	$	$ N N	
AD!%=uMMMN N N N N N N N N N N N N N N N N Ns   AHHHc                      t           j        t           j        z  } t          |                     t           j        t           j        g                    dk    sJ d S )Nr   r   )r   r   r(   r   r   r   r   s    r   test_self_composer    sD    4!#:Dt||13*|--..!333333r   c                      t           j        } t          j        t           j                  5  |                     t           j        g           d d d            d S # 1 swxY w Y   d S r   )r   r   r1   r2   r3   r   r   r   s    r   test_compose_failedr    s    4D	q|	$	$ " "AC5!!!" " " " " " " " " " " " " " " " " "s   "AA!Ac                     t           j        dz  t           j        dz  z  } |                                 }|D ].}|                                 |                                k    sJ /|                     t           j                  }|D ].}|                                 |                                k    sJ /|                     t           j                  }|D ].}|                                 |                                k    sJ /d S )Nr         ?r   )r   r   rW   r   rQ   rp   rk   )r#   factoredri   s      r   test_compose_fractional_powersr	    s     	
S149Ayy{{H 1 1{{}} 0 000000yyquy%%H 1 1{{}} 0 000000yyqty$$H 1 1{{}} 0 0000001 1r   c                     t           j                                        } t          | d         j                  dk    sJ | d         j        d         t           j        u sJ t           j        dz                                  } | d         j        d         t           j        t           j        fv sJ t           j        	                                                                } | d         j        d         t           j        u sJ d S )Nr   r   r   )
r   lr   r   rL   r(   r;   BqrM   rQ   r   s    r   test_compose_best_unit_firstr    s    ckkmmGwqz  A%%%%1:A!#%%%%sBw!!G1:A14,....t~~((**G1:A!$&&&&&&r   c                     t           j        t           j        dz  z  t           j        dz  z  t           j        dz  z  t           j        dz  z  } |                     t           j        j                  }t          |          dk    sJ d S )Nr   g      @r   r   r   r   )
r   r   r(   aurW   r^   r   rp   rL   r   )newr   s     r   test_compose_no_duplicatesr    sh    
$a-!$)
#adCi
/!$'
9C{{{--Hx==Ar   c                      dt           j        z  t           j        dz  z  } |                     t           j        t           j        dz  z             dS )z
    Issue #672
    l     @=7M.cr   N)r   M_pr4   r5   M_sunrZ   )sigmas    r   test_long_intr    s?     QUNQT1W$E	HHQWqtQwr   c                      dD ]T} dD ]O}dD ]J}t          j        g d| |z   |z             }t          j                            t          j        |           KPUdS )z
    Regression test for #744

    A logic issue in the units code meant that big endian arrays could not be
    converted because the dtype is '>f4', not 'float32', and the code was
    looking for the strings 'float' or 'int'.
    )<>)if)48)r   r   r   )dtypeN)nparrayr   r   r5   r4   )endianntypebyter#   s       r   test_endian_independencer$    s}          	  	 E"    HYYYv~/DFFFqtQ 	    r   c                  X    dt           j        z  j        j        t           j        k    sJ dS )z
    Issue #863
    r   N)r   degreerk   ri   r\   r)   r   r   test_radian_baser'    s)     L!QU******r   c                  b    t          t          d          rJ t          t          d          sJ d S )Nas
attosecond)hasattrr   r)   r   r   
test_no_asr,    s6     q$1l#######r   c                  X   t           j        j        ddgk    sJ t           j        j        ddgk    sJ t           j        j        dgk    sJ t          t           j        j                  t          t           j        j                  t          t           j        j                  z  k    sJ d S )Nctcount)r   r.  namesshort_names
long_namesr   phr)   r   r   test_no_duplicates_in_namesr4    s    4:$((((4g....4?wi''''qtz??c!$"233c!$/6J6JJJJJJJJr   c                  R   t          j        t          j                  } t          j        |           }|t          j        u sJ t          j        dgddi          }dt          j                    j        vsJ t          j        |          } t          j        |           }||usJ |j        dgk    sJ |	                    d          dk    sJ dt          j                    j        vsJ t          j
        |g          5  t          j        |          } dt          j                    j        v sJ t          j        |           }||u sJ 	 d d d            n# 1 swxY w Y   t          j
        g           5  dt          j                    j        vsJ t          j        |           }||usJ |j        dgk    sJ |	                    d          dk    sJ dt          j                    j        v sJ 	 d d d            n# 1 swxY w Y   dt          j                    j        vsJ d S )Nr   bazr   r~   )pickledumpsr   r   loadsIrreducibleUnitr   r   r0  get_format_namer   )pothernew_unitnew_unit_copys       r   test_picklingr@    s   QSALOOEAC<<<< %%@@@H355>>>>> 	XALOOM((((5'))))((//58888355>>>>> 
	hZ	(	( ) )L""355>>>>>Q(((((	) ) ) ) ) ) ) ) ) ) ) ) ) ) ) 
	R	 	  ? ?A799BBBBBQH,,,,"ug----,,U33u<<<<355>>>>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 355>>>>>>>s&    AEEE7A<H  HHc                      t          t          j                  } t          j        d          }|t          j        u sJ t          t          j                  | k    sJ dS )zWe cannot really test between sessions easily, so fake it.

    This test can be changed if the pickle protocol or the code
    changes enough that it no longer works.

    s          astropy.units.core_recreate_irreducible_unith IrreducibleUnit](mmetereR}(_names](hhe_short_names]ha_long_names]ha_format}__doc__ meter: base unit of length in SIub.N)hashr   r   r7  r9  )hash_mri   s     r   test_pickle_between_sessionsrD  -  sW     !#YYF<	3	 	D 13;;;;99r   r   r6  r   r~   m_per_sc                    t          |           }| j        J t          j        t          j        |                     }|| usJ |j        J t          |          |k    sJ t          j        | g          5  t          j        t          j        |                     }t          | t
          j                  r|| u sJ n|| usJ t          |           |k    sJ 	 ddd           dS # 1 swxY w Y   dS )a  
    Tests private attribute since the problem with _hash being pickled
    and restored only appeared if the unpickling was done in another
    session, for which the hash no longer was valid, and it is difficult
    to mimic separate sessions in a simple test. See gh-11872.
    N)	rB  _hashr7  r9  r8  r   r   r   r:  )ri   	unit_hash	unit_copyunit_refs       r   'test_pickle_does_not_keep_memoized_hashrK  C  sR    T

I:!!!V\$//00ID    ?"""	??i''''	
	dV	$	$ 	' 	'<T 2 233dA-.. 	(t#####4'''' DzzY&&&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's   8A#C))C-0C-c                  ~    t          j        dd          } t          j        t          j        |                      dS )z
    Issue #2047
    asdfr   rw   N)r   r   r7  r9  r8  )r   s    r   test_pickle_unrecognized_unitrN  a  s6     	
vH---A
La!!!!!r   c                      t          j        t                    5  t          j        dt          j                   d d d            d S # 1 swxY w Y   d S )Nr   r   )r1   r2   r   r   rO   r   r)   r   r   test_duplicate_definerP  i  s    	z	"	" . .	
3!*----. . . . . . . . . . . . . . . . . .s   !AAAc                  ~    ddl m}   |             }t          |j                  t          |j                  k    sJ d S )Nr   )r   )astropy.units.corer   r   	all_unitsnon_prefix_units)r   r   s     r   test_all_unitsrU  n  sO    <<<<<<((**Hx!""S)B%C%CCCCCCCr   c                      t           j                                        t           j                            d          k    sJ d S )Nr   )r   r   _repr_latex_r   r)   r   r   test_repr_latexrX  u  s5    3w!7!7777777r   c                      t           j        dz  t           j        dt           j        z  z  k    sJ t           j        dz  dt           j        z  t           j        z  k    sJ d S )N5sg      @r'   r)   r   r   test_operations_with_stringsr[  y  sO    3:!#qs+,,,,3:#)ac/******r   c                     t           j        t           j        k    sJ t           j        t           j        k    sJ t           j        t           j        k     sJ t           j        t           j        k    sJ t          j        t           j                  5  t           j        t           j        k     d d d            d S # 1 swxY w Y   d S r&   )r   r   r4   r1   r2   r3   r   r)   r   r   test_comparisonr]    s    3::::3!$;;;;4!#::::413;;;;	q|	$	$  	ad

                 s   B77B;>B;c                      ddl m}  |                     t          j        t          j        t          j        d          g           d S )Nr   Gz15 s)r   r`  rQ   r   r   rJ   r   r_  s    r   !test_compose_into_arbitrary_unitsra    s?    ######KKqtQVF^^,-----r   c                      t           j        } d}|| z  t          j        |          | z  k    sJ | |z  | t          j        |          z  k    sJ dS zACheck that multiplication with strings produces the correct unit.r   Nr   r4   r   u1uss     r   $test_unit_multiplication_with_stringrh    V    	
B	B7afRjj2o%%%%7b16"::o%%%%%%r   c                      t           j        } d}|| z  t          j        |          | z  k    sJ | |z  | t          j        |          z  k    sJ dS rc  rd  re  s     r   test_unit_division_by_stringrk    ri  r   c                      t           j        t           j        z  j        t           j        t           j        z  j        k    sJ dS )z
See #1616.N)r   r   JyrL   r)   r   r   test_sorted_basesrn    s/    C!$J!$*!3333333r   c                      t           j        t           j        u sJ t           j        t           j        u sJ t           j        t           j        u sJ t           j        t           j        u sJ dS )z	See #1543N)r   MbitMbmegabitMbyteMBmegabyter)   r   r   test_megabitrv    sT    6QT>>>>97ad????:r   c                      t          j        d          } t          j        d          }t          t          j        d| |gddg                    dk    sJ dS )z	See #1576znrad/szHz(1/2)r   r   znrad / (Hz(1/2) s)N)r   r   r>   r   )unit1r   s     r   #test_composite_unit_get_format_namery    sV    F8EF9Eqq5%.1b'::;;?SSSSSSSr   c                  T    ddl m}   | t          j        t          j                   d S )Nr   !assert_follows_unicode_guidelines)	roundtrip)astropy.tests.helperr|  r   r&  r   r{  s    r   test_unicode_policyr    s4    FFFFFF%%ah!*EEEEEEr   c                      dD ]O\  } }t          j        t          d|           5  t          j        |            d d d            n# 1 swxY w Y   Pd S )N))micronsmicron)z	s/micronsr  )Mr   )metremeter)	angstromszAngstrom or angstrom)	milimeter
millimeter)u
   ångströmz*Angstrom, angstrom, mAngstrom or mangstrom)kevzEV, eV, kV or keVzDid you mean rt   )r1   r2   r   r   r   )searchmatchess     r   test_suggestionsr    s    	   ]:-FW-F-FGGG 	 	F6NNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 s   AA	A	c                  L   t          j        t          j        d          5 } t          j        d          }ddd           n# 1 swxY w Y   |t          j        t          j        dz  z  t          j        dz  z  t          j        dz  z  k    sJ t          |           dk    sJ dS )z
See #1911.zmultiple slashesrt   zerg /s /cm**2 /angstromNr   r   r   )
r1   ry   r   rz   r   rc   r(   r4   angstromr   )wr#   s     r   test_fits_hst_unitr    s    	an,>	?	?	? .1F,--. . . . . . . . . . . . . . .R!$(*QZ^;;;;;q66Q;;;;;;s   AA	Ac                  n    t           j        t           j        u sJ t           j        t           j        u sJ dS )zBRegression test for https://github.com/astropy/astropy/issues/3753N)r   fbarn	femtobarnpbarnpicobarnr)   r   r   test_barn_prefixesr    s4     7ak!!!!7aj      r   c                     dt           j        z  } ddt           j        z  t           j        z  t           j        z  z  }dt           j        z  t           j        z  }t
          j        dz  | dz  z  |j        z  t          dd          z  |z  }|	                    d          }t
          j        dz  | dz  z  |z  t          dd          z  |z  }|	                    d          }t
          j        dz  | dz  z  |j        z  d	z  |z  }|	                    d          }t
          j        dz  | dz  z  |z  d	z  |z  }|	                    d          }t          ||           t          ||           t          ||           t           j        d
z  }t          |j        d         t                    sJ t           j        dz  }t          |j        d         t                    sJ |j        d         j        dk    sJ |j        d         j        dk    sJ t           j        t          dd          z  t           j        t          dd          z  z  }t          |j        d         t                    sJ |j        d         t          dd          k    sJ t           j        dz  dz  }t          |j        d         t                    sJ |j        d         t          dd          k    sJ dS )z	See #2069    eArE   g     Q@   r   r   r   rZ   r   gbeF?r   g۶m۶m?      gg]tEݿN)r   MsunrJ   r(   rV   r   r`  rp   r   r5   r   r   r   r    r!   	numeratordenominatorr4   TeV)r   tHvcr#   v1v2v3v4s           r   test_fractional_powersr    s   afA	qtac!AE)	*B	qtac	B	
a!Q$	HQNN2R7A	
dB	
a!Q$	A.3A	
dB	
a!Q$	Y/"4A	
dB	
a!Q$	+b0A	
dBBBB	Aahqk5)))))		Aahqk8,,,,,8A; A%%%%8A;"a''''	A!Q!77Aahqk8,,,,,8A;(1a..(((( 
4h'Aahqk8,,,,,8A;(1a..((((((r   c                      t           j        dz  } t          |                                 j        d          sJ |                                 dz  t           j        k    sJ d S )Nr   imagr   )r   magr+  rQ   rK   )sqrt_mags    r   test_sqrt_magr    s\    uczH8%%''-v66666  Q&!%//////r   c                      t           j                            t          j        d          g          d         } t           j                            | g           d S )Nr(   r   r   )r   r(   r   r   )composite_units    r   test_composite_composer    sE    S[[s}[55a8NCKK~&K'''''r   c                  \    t           j                            t           j                  sJ d S r&   )r   r#  r   bitr)   r   r   test_data_quantitiesr    s&    6&&&&&&&r   c                  N    t           j        d k    rJ t           j        d k    sJ d S r&   )r   r   r)   r   r   test_compare_with_noner    s&     t3$;;;;;;r   c                      t          j        d          } t          | t                    sJ | j        dk    sJ | j        dk    sJ d S )Ng?r  r  )r   validate_powerr   r   r  r  )fracs    r   #test_validate_power_detect_fractionr    sV     233DdH%%%%%>Qq      r   c                     dt           j        dz  z  t           j        z  } dt           j        z  }d}dt           j        z  t           j        dz  z  }d}d}d	}d
t           j        z  }dt
          j        z  | t          j        t          j                  z  z  }|| z  ||z  |z  |t
          j	        z  |z  dz  z  z  }	||	z  dz  }
|
j
        j        dk    sJ |
                    t           j                   d S )Ng(\?r   gv@iBg      ?g&.>r   r   gaa?gyy?    .Aglength)r   r4   r   solMasssolRadr   r  sqrtpir`  ri   rj   r5   )kappar_0qrho_0ybetar   m_ht1t2r   s              r   'test_complex_fractional_rounding_errorsr     s     147NQS E
ad
"CAAI!+EADA
	/C	
QSEBGBENN*	+B
r'eai$&!ac'C-C)??	@B2g$F;$0000
IIahr   c                      t           j        dz  t          dd          z  } t          | j        d         t                    sJ | j        d         j        dk    sJ | j        d         j        dk    sJ d S )Nr  r      r   r  )r   r   r   r   r    r  r  r"   s    r   &test_fractional_rounding_errors_simpler  5  sp    	
chq!nn$Aahqk8,,,,,8A; A%%%%8A;"a''''''r   c                  p   ddl m}  |                                 5  | j        t          j                                        v sJ 	 d d d            n# 1 swxY w Y   ddl m} |                                5  |j        t          j	                                        v sJ 	 d d d            d S # 1 swxY w Y   d S )Nr   )r   )imperial)
r   r   enablegeoMassr   r   find_equivalent_unitsr  inchr   )r   r  s     r   test_enable_unit_groupingsr  <  sG   !!!!!!	 ; ;{ad88:::::::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; '&&&&&			 < <} 9 9 ; ;;;;;;< < < < < < < < < < < < < < < < < <s#   (AAA5(B++B/2B/c                  0   ddl m}  t          j        | j                  D ]u}|\  }}}}}|j        dk    r|sJ |j        dk    r|sJ *|j        dk    r|sJ :|j        dk    r	|dk    sJ N|j        dk    r	|dk    sJ b|j        d	k    r|d
k    sJ vdS )z
    Test for a few units that the unit summary table correctly reports
    whether or not that unit supports prefixes.

    Regression test for https://github.com/astropy/astropy/issues/3835
    r   )	astrophyslyrrZ   barnr[   Nor]   voxYesN)r   r  r   _iter_unit_summaryr   r   )r  summaryri   r   prefixess        r   test_unit_summary_prefixesr  H  s     ('''''+I,>?? % %")aAx9OOOOY$OOOOY&  OOOOY'!!t#####Y&  t#####Y%u$$$$% %r   c                      t           j        dz  t           j        dz  z  } | dz  }|j        t           j        t           j        gk    sJ |j        ddgk    sJ |t           j        t           j        z  k    sJ dS )zTest that order of bases is changed when raising to negative power.

    Regression test for https://github.com/astropy/astropy/issues/8260
    r   g      r   r   N)r   r   r(   rL   r    )m2s2spms     r   test_raise_to_negative_powerr  c  st    
 36ACF?D
6
C9ac
"""":!R    !#)r   z name, symbol, multiplying_factor))quettaQgꌠ9Y>)F)ronnaRgqىE)yottaYgyCxD)zettaZgPKD)exaEg NgmC)petaPg  4&kC)teraTg   mB)gigar`  r  )megar  r  )kilokrD   )decadar
   )decir   g?)centir   g{Gz?)millir   r:   )micror   rT   )nanong&.>)picor<  g-q=)femtor  gV瞯<)attor   gC]r2<)zeptozgO
;)yoctor  gW:)rontorg<6S:)quector  gKH9c                 ,   dt           j        z  }|                    | d          }|                    |  d          }t          j        ||          sJ t          j        ||          sJ |j        |j        z  }t          j        ||          sJ d S )Nr   r   gram)r   r   r5   isclosevalue)r   symbolmultiplying_factorbasequantity_from_symbolquantity_from_namevalue_ratios          r   test_si_prefixesr  o  s    : qs7D77f<<<00D//9'.....9)400000*399K9["45555555r   c                      t           j        j        t           j        j        cxu rt           j        u sn J t	          t           j        j        t           j        j        z            dk    sJ d S )Nr   )r   rk   r4   rp   r>   r)   r   r   test_cm_uniquenessr    s]    47aeh&&&&!$&&&&&&qtw!""b((((((r   )w__doc__r7  	fractionsr   numpyr  r1   numpy.testingr   astropyr   r   r   r   r   r   r   r$   r*   r.   r6   r<   r?   rB   rR   r_   rd   rf   rn   rq   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   COMPOSE_ROUNDTRIPr   valuesvalr   UnitBase
PrefixUnitaddmarkparametrizesortedr   COMPOSE_CGS_TO_SIrp   deg_Cr   COMPOSE_SI_TO_CGSrk   r   r   r   r   r   r  r  r  r	  r  r  r  r$  r'  r,  r4  r@  rD  r:  r   r   r(   rK  rN  rP  rU  rX  r[  r]  ra  rh  rk  rn  rv  ry  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r)   r   r   <module>r#     s#   - -             ) ) ) ) ) ) " " " " " "            0 0 0*	- 	- 	-  . . .     , , ,  & & &- - - 8 8 8  $ $ $	( 	( 	(	) 	) 	)+ + +
2 2 2  B  
  
? ? ?. . .
$ $ $+ + +
  
  
  
' 
' 
'  3 3 34 4 4
  
   CEE : # #Cz#qz"" #::c1<+H+H #c""" 
FF$,777\      CEE 5>  "" # #C 	
3
###
3--# 15;c""" 
FF$,777\      CEE 4=!! # #C 	
3
###
3--# 14:c""" 
FF$,777\   " " "B B B3 3 3
> > >+ + +N N N&4 4 4" " "1 1 1,	' 	' 	'            + + +$ $ $K K K$? $? $?N  , 
Qwu~666y!#PQPS)8T8TU ' '	 '4" " ". . .
D D D8 8 8+ + +  . . .& & && & &4 4 4
  T T TF F F    ! ! !%) %) %)P0 0 0( ( (' ' '  ! ! !  *( ( (	< 	< 	<% % %6	 	 	 &   86 69 86) ) ) ) )r   