a
    ߙfb^                  	   @   s6  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d	 Zd
d Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Z d*d+ Z!d,d- Z"d.d/ Z#d0d1 Z$d2d3 Z%d4d5 Z&d6d7 Z'd8d9 Z(d:d; Z)d<d= Z*d>d? Z+d@dA Z,dBdC Z-dDdE Z.dFdG Z/e0 Z1ej23 D ],Z4e5e4ej6rhe5e4ej7she18e4 qhej9j:dHe;e1e/dIe/dJdKdL Z<e0 Z=ej>j23 D ]:Z4e5e4ej6re5e4ej7se4ej>j?kre=8e4 qej9j:dHe;e=e/dIe/dJdMdN Z@e0 ZAejBj23 D ]:Z4e5e4ej6r:e5e4ej7s:e4ejBj?kr:eA8e4 q:ej9j:dHe;eAe/dIe/dJdOdP ZCdQdR ZDdSdT ZEdUdV ZFdWdX ZGdYdZ ZHd[d\ ZId]d^ ZJd_d` ZKdadb ZLdcdd ZMdedf ZNdgdh ZOdidj ZPdkdl ZQdmdn ZRdodp ZSdqdr ZTej9:dHejUdsgdtduidveVdwejWejX gdxdy ZYdzd{ ZZd|d} Z[d~d Z\dd Z]dd Z^dd Z_dd Z`dd Zadd Zbdd Zcdd Zddd Zedd Zfdd Zgdd Zhdd Zidd Zjdd Zkdd Zldd Zmdd Zndd Zodd Zpdd Zqdd Zrdd Zsdd ZtdS )z'Regression tests for the units package.    N)Fraction)assert_allcloseunits)	constants)utilsc                  C   s0  t t jt ju sJ t dt j } | t dt jgdgksBJ t | | u sTJ t d|  t dt jgdgkszJ t jdd|  d t d}|t dt jgdgksJ t dt jksJ t d	t jksJ t jt jksJ t d
| ksJ t dt dg g ksJ t  t jks,J d S )N      $@   g      Y@foo   	namespaceg     @m z10 m)uUnitr   CompositeUnitlocalsZdimensionless_unscaledZone)Z	ten_meterr
    r   =lib/python3.9/site-packages/astropy/units/tests/test_units.pytest_initialisation   s    &r   c                  C   sj   t jtdd } t| jd ts$J t jtdd } t| jd tsHJ t jd } t| jd tsfJ d S )Nr	      r   r   UUUUUU?)r   r   r   
isinstancepowersfloatxr   r   r   test_invalid_power%   s    
r   c                   C   s   t jt jkrJ d S Nr   r   sr   r   r   r   test_invalid_compare1   s    r"   c                   C   s   t jt jddksJ d S )Nr	   i  )r   h_get_converterr!   r   r   r   r   test_convert5   s    r%   c                   C   s   t tj  tjtjd W d    n1 s20    Y  t tj& tjtj tjd W d    n1 st0    Y  d S Nr	   )pytestraisesr   
UnitsErrorcmtor!   r   r   r   r   r   test_convert_fail9   s    .r,   c                   C   s   t jt j t j t jddks&J t jt j t jd ks@J t jt j t j t jd ks`J t jdt j ddks|J d S )Nr	   $   r   r     MbP?)r   r*   r!   r#   r$   r   Hzr+   r   r   r   r   test_composite@   s    & r1   c                   C   s   t tjdksJ d S )Nr*   )strr   r*   r   r   r   r   test_strI   s    r3   c                   C   s   t tjdksJ d S )Nz
Unit("cm"))reprr   r*   r   r   r   r   	test_reprM   s    r5   c                  C   s  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rVt jjt jgksZJ tt jjjd t jjjt jgksJ t j	dt
 d} | j| u sJ t j	ddt j t
 d}|jjdksJ |jjt jgksJ | jd	ksJ | jt jgksJ d S )
Ng     @@      ?gHzlT6+@blar   blabla
   r   i  )r   r   Z
representskmscalebasesRyr   ZeVdef_unitr   Zhr	decomposer!   )r7   r8   r   r   r   test_representsQ   s     r@   c                   C   s|   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/   r.   gư>g(벥U>g-DT!@g-DT!)@)r   r   kpcr+   MpcyrMyrZAUpccycleradspatsrr   r   r   r   test_units_conversiona   s    rJ   c                   C   s0   t jt j tdd t j  t jt j d  d S )Nr	   r   	   )r   rA   rC   r   rD   AAergr   r   r   r   test_units_manipulationj   s    rN   c                   C   s   t jt j ksJ d S r   )r   r=   r?   r   r   r   r   test_decomposep   s    rO   c                  C   s4   dt j dt j  } | jjdks$J t| jd dS )zh
    Issue #1150: Test for conversion of dimensionless quantities
                 to the SI system
    r6   dimensionlessr/   N)r   rA   rB   unitphysical_typer   siZtestunitr   r   r   test_dimensionless_to_sit   s    rU   c                  C   s4   dt j dt j  } | jjdks$J t| jd dS )zi
    Issue #1150: Test for conversion of dimensionless quantities
                 to the CGS system
    r6   rP   r/   N)r   r   r:   rQ   rR   r   cgsrT   r   r   r   test_dimensionless_to_cgs   s    rW   c                   C   sB   t jtjdd tjddd W d    n1 s40    Y  d S )NFOOmatchwarnparse_strict)r'   warnsr   UnitsWarningr   r   r   r   r   test_unknown_unit   s    r`   c                  C   s   t jtjdd& td dks(J W d    n1 s<0    Y  t t tjddd W d    n1 st0    Y  tjddd} |  dksJ d S )	Nz8'm/s/kg' contains multiple slashes, which is discouragedrY   zm/s/kgz
m / (kg s)Zvounitformatzkg(3/10) * m(5/2) / szkg(3/10) m(5/2) / s)r'   r^   r   r_   r   	to_stringr(   
ValueErrorr   r   r   r   test_multiple_solidus   s    4,re   c                  C   sp  t jddd} t| t jsJ | jdks,J t jddd}| |ksFJ | |sTJ t jddd}| |ksnJ | |r|J | dksJ | t jksJ | d ksJ | d t jfvsJ tt	 | 
| W d    n1 s0    Y  | d}|d}tt	 t jddd W d    n1 s,0    Y  tt t d  W d    n1 sb0    Y  d S )NrX   silentr\   ZBARlatexrV   strict)r   r   r   ZUnrecognizedUnitnameis_equivalentr   r'   r(   rd   r$   rc   	TypeError)rQ   unit2Zunit3_r   r   r   test_unknown_unit3   s*    (

.rn   c                   C   s<   t t g dtj  W d    n1 s.0    Y  d S )N)abc)r'   r(   rk   r   r   r   r   r   r   test_invalid_scale   s    rr   c                  C   s"   t jdddd} | jdksJ d S )Nz	10+22/cm2cdsrf   )rb   r]   gMD)r   r   r;   rQ   r   r   r   test_cds_power   s    ru   c                  C   sx   t jdt jd t d} dt v s&J t | " dt  jv sDJ W d    n1 sX0    Y  dt  jvstJ d S )Nr
   r   r   )r   r>   r   r   add_enabled_unitsget_current_unit_registryregistry)r
   r   r   r   test_register   s
    0ry   c                  C   s$   t jt j } | t jt j d}d S r&   )r   r*   r!   Zin_unitsrE   Zhour)Z
speed_unitrm   r   r   r   test_in_units   s    rz   c                   C   s   t jt j t dksJ d S r&   )r   r   r   r   r   r   r   test_null_unit   s    r{   c                   C   s,   t jddu sJ t jddu s(J d S )Nr
   FrE   T)r   r   rj   r   r   r   r   test_unrecognized_equivalency   s    r|   c                   C   sL   t jtjdd( tjtjtjd   W d    n1 s>0    Y  d S )Nzlength.+ are not convertiblerY   r   )r'   r(   r   r)   rL   r+   r#   r!   r   r   r   r   test_convertible_exception   s    r}   c                   C   sB   t jtjdd tjtj W d    n1 s40    Y  d S )Nz(length. and .+time.+ are not convertiblerY   )r'   r(   r   r)   r   r+   r!   r   r   r   r   test_convertible_exception2   s    r~   c                  C   sH   G dd d} t t t|   W d    n1 s:0    Y  d S )Nc                   @   s   e Zd ZdS )ztest_invalid_type.<locals>.AN)__name__
__module____qualname__r   r   r   r   A   s   r   )r'   r(   rk   r   r   )r   r   r   r   test_invalid_type   s    r   c                  C   sp   t jt jt j sJ t jjt jjd} | d jd t ju sBJ t jjt jjd} | d jd t ju slJ dS )z
    Issue #599
    r   r   N)r   rI   rj   rG   composerV   r<   __dict__Zresultsr   r   r   test_steradian   s
    r   c                  C   sp   ddl m}  ddlm} |jjj| jd}|jt	j
t	jt	jgksDJ |jtddddgks^J |jd	kslJ d
S )z
    From issue #576
    r   rV   )er<   r   r         ?r6   N)astropy.unitsrV   astropy.constantsr   ZesurQ   r?   r<   _basesr   r*   gr!   _powersr   _scale)rV   r   dr   r   r   test_decompose_bases   s    r   c                  C   s@   t jt j t j } |  }t|d jtt jt jgks<J d S )Nr   )r   ZcdrI   ZWbr   setr   Zlm)complexcomposedr   r   r   test_complex_compose  s    r   c                  C   s,   t jjt  d} tdd | D s(J d S )N)Zequivalenciesc                 s   s   | ]}t jg|jkV  qd S r   )r   r0   r<   .0r   r   r   r   	<genexpr>      z%test_equiv_compose.<locals>.<genexpr>)r   r   r   Zspectralany)r   r   r   r   test_equiv_compose  s    r   c                   C   s>   t tj tjjg d W d    n1 s00    Y  d S Nr   )r'   r(   r   r)   r   r   r   r   r   r   test_empty_compose  s    r   c                 C   s   t | S r   )r2   rt   r   r   r   _unit_as_str  s    r   rQ   )key)Zidsc                 C   s^   |    }d}|D ]<}t|jr:|jd | u rPd} qRqt| jdkrd} qRq|sZJ d S )NFr   T)r?   r   lenr<   )rQ   Zcomposed_listfoundr   r   r   r   test_compose_roundtrip,  s    
r   c                    s8     tj} fdd|D s"J |d  jks4J d S )Nc                    s   g | ]}|  qS r   rj   r   rt   r   r   
<listcomp>I  r   z*test_compose_cgs_to_si.<locals>.<listcomp>r   )	to_systemr   rS   )rQ   rS   r   rt   r   test_compose_cgs_to_siE  s    r   c                    sf   z  tj}W n( tjy8   tj  jv r2n Y n*0  fdd|D sPJ |d  jksbJ d S )Nc                    s   g | ]}|  qS r   r   r   rt   r   r   r   c  r   z*test_compose_si_to_cgs.<locals>.<listcomp>r   )r   r   rV   r)   r   r?   r<   )rQ   rV   r   rt   r   test_compose_si_to_cgsW  s    r   c                   C   s@   t jjt jusJ t jt jt jd t j t j  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   barrS   kgr!   rI   Znmr   r   r   r   r   
test_to_sig  s    	r   c                   C   sB   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   ZPar   rV   r   ZBar   r   r   r   r   test_to_cgsu  s    "r   c                  C   s0   ddl m}  tjj| jdjd | ju s,J d S )Nr   r   r   )r   rV   r   r   r?   r<   r   r*   r   r   r   r   test_decompose_to_cgsz  s    r   c                  C   sv   t jt jd  t j } | jt jt jt jgd}t|dks>J |d jt jt jt jgks\J |d jg dksrJ d S )Nr   r   r	   r   )   r	   )	r   r   r!   r   r   Nr   r   r   )rQ   resultr   r   r   test_compose_issue_579  s
    r   c                  C   sL  t jjt jfd} | d jd t ju s*J | d jdks<J t jjt jgdd} | d jd t ju shJ | d jdkszJ t jjt jgd} | d jd t ju sJ | d jdksJ t jt j jt jt jfd} | d jt jt jgksJ t	| d jd t
t j. t jt j jt jt jfdd W d    n1 s>0    Y  d S )	Nr   r   r6   T)r   Zinclude_prefix_unitsr/   gObn]?F)r   r   r   r<   r;   r:   r!   rE   rD   r   r'   r(   r)   r   r   r   r   test_compose_prefix_unit  s    r   c                  C   s0   t jt j } t| jt jt jgddks,J d S )Nr   r	   )r   r   r!   r   r   r   rt   r   r   r   test_self_compose  s    r   c                  C   sF   t j} tt j  | jt jgd W d    n1 s80    Y  d S r   )r   r   r'   r(   r)   r   r   rt   r   r   r   test_compose_failed  s    r   c                  C   s   t jd t jd  } |  }|D ]}|  | ks J q | jt jd}|D ]}|  | ksLJ qL| jt jd}|D ]}|  | ksxJ qxd S )Nr         ?r   )r   r   rC   r   r?   rV   rS   )r   ZfactoredrQ   r   r   r   test_compose_fractional_powers  s    r   c                  C   s   t j } t| d jdks J | d jd t ju s8J t jd  } | d jd t jt jfv sdJ t j	  } | d jd t ju sJ d S )Nr   r	   r   )
r   lr   r   r<   r!   r0   ZBqr=   r?   r   r   r   r   test_compose_best_unit_first  s    
r   c                  C   sR   t jt jd  t jd  t jd  t jd  } | jt jjd}t	|dksNJ d S )Nr   g      @r   r   r   r	   )
r   r   r!   ZaurC   rI   r   rV   r<   r   )newr   r   r   r   test_compose_no_duplicates  s    .r   c                  C   s.   dt j t jd  } | t jt jd   dS )z
    Issue #672
    l     @=7M.cr   N)r   ZM_pr*   r+   ZM_sunrE   )Zsigmar   r   r   test_long_int  s    r   c                  C   sL   dD ]B} dD ]8}dD ].}t jg d| | | d}tjtj| qqqd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   )ZdtypeN)npZarrayr   r   r+   r*   )ZendianZntypebyter   r   r   r   test_endian_independence  s
    r   c                   C   s   dt j jjt jksJ dS )z
    Issue #863
    r	   N)r   degreerS   rQ   rG   r   r   r   r   test_radian_base  s    r   c                   C   s    t tdrJ t tdsJ d S )NasZ
attosecond)hasattrr   r   r   r   r   
test_no_as  s    r   c                   C   sf   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B ksbJ d S )Nctcount)r   r   namesZshort_namesZ
long_namesr   Zphr   r   r   r   test_no_duplicates_in_names  s    r   c                  C   s  t tj} t | }|tju s$J tjdgddid}dt jvsJJ t |} t | }||usjJ |jdgkszJ |	ddksJ dt jvsJ t
|gB t |} dt jv sJ t | }||u sJ W d    n1 s0    Y  t
g v dt jvsJ t | }||us4J |jdgksFJ |	ddksZJ dt jv snJ W d    n1 s0    Y  dt jvsJ d S )Nr
   bazr   ra   )pickledumpsr   r   loadsIrreducibleUnitrw   rx   r   Zget_format_namerv   )potherZnew_unitZnew_unit_copyr   r   r   test_pickling  s0    




*
4r   c                  C   s8   t tj} td}|tju s"J t tj| ks4J 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   r   r   )Zhash_mrQ   r   r   r   test_pickle_between_sessions$  s    
	r   r
   r   r   ra   Zm_per_sc                 C   s   t | }| jdusJ tt| }|| us2J |jdu s@J t ||ksPJ t| gV tt| }t| tjr|| u sJ n|| usJ t | |ksJ W d   n1 s0    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)	r   _hashr   r   r   r   rv   r   r   )rQ   Z	unit_hashZ	unit_copyZunit_refr   r   r   'test_pickle_does_not_keep_memoized_hash9  s    
r   c                  C   s"   t jddd} tt|  dS )z
    Issue #2047
    Zasdfrf   r\   N)r   r   r   r   r   )ro   r   r   r   test_pickle_unrecognized_unitV  s    r   c                   C   s>   t t  tjdtjd W d    n1 s00    Y  d S )Nr   r   )r'   r(   rd   r   r>   r   r   r   r   r   test_duplicate_define^  s    r   c                  C   s.   ddl m}  |  }t|jt|jks*J d S )Nr   )rw   )Zastropy.units.corerw   r   Z	all_unitsZnon_prefix_units)rw   rx   r   r   r   test_all_unitsc  s    r   c                   C   s   t j t jdksJ d S )Nrg   )r   r   Z_repr_latex_rc   r   r   r   r   test_repr_latexi  s    r   c                   C   s@   t jd t jdt j  ksJ t jd dt j t j ks<J d S )NZ5sg      @r    r   r   r   r   test_operations_with_stringsm  s    r   c                   C   s|   t jt jksJ t jt jks J t jt jk s0J t jt jks@J tt j t jt jk W d    n1 sn0    Y  d S r   )r   r   r*   r'   r(   r)   r   r   r   r   r   test_comparisons  s    r   c                  C   s*   ddl m}  | tjtjtdg d S )Nr   Gz15 s)r   r   r?   r   r   r:   r   r   r   r   r   !test_compose_into_arbitrary_units}  s    r   c                  C   sB   t j} d}||  t ||  ks$J | | | t | ks>J dS zACheck that multiplication with strings produces the correct unit.r   Nr   r*   r   Zu1usr   r   r   $test_unit_multiplication_with_string  s    r   c                  C   sB   t j} d}||  t ||  ks$J | | | t | ks>J dS r   r   r   r   r   r   test_unit_division_by_string  s    r   c                   C   s$   t jt j jt jt j jks J dS )z
See #1616.N)r   r   ZJyr<   r   r   r   r   test_sorted_bases  s    r   c                   C   sD   t jt ju sJ t jt ju s J t jt ju s0J t jt ju s@J dS )z	See #1543N)r   ZMbitZMbZmegabitZMbyteZMBZmegabyter   r   r   r   test_megabit  s    r   c                  C   s:   t d} t d}tt d| |gddgdks6J dS )z	See #1576znrad/szHz(1/2)r	   r   znrad / (Hz(1/2) s)N)r   r   r2   r   )Zunit1rl   r   r   r   #test_composite_unit_get_format_name  s
    

r   c                  C   s    ddl m}  | tjtjd d S )Nr   !assert_follows_unicode_guidelines)Z	roundtrip)Zastropy.tests.helperr   r   r   r   r   r   r   r   test_unicode_policy  s    r   c               	   C   sP   dD ]F\} }t jtd| d t|  W d    q1 s@0    Y  qd S )N))Zmicronsmicron)z	s/micronsr   )Mr   )ZmetreZmeter)Z	angstromszAngstrom or angstrom)Z	milimeterZ
millimeter)u
   ångströmz*Angstrom, angstrom, mAngstrom or mangstrom)ZkevzEV, eV, kV or keVzDid you mean rY   )r'   r(   rd   r   r   )searchZmatchesr   r   r   test_suggestions  s    	r   c                  C   sz   t jtjdd} td}W d   n1 s00    Y  |tjtjd  tjd  tjd  ksfJ t	| dksvJ dS )z
See #1911.zmultiple slashesrY   zerg /s /cm**2 /angstromNr   r   r	   )
r'   r^   r   r_   r   rM   r!   r*   Zangstromr   )wr   r   r   r   test_fits_hst_unit  s    (,r   c                   C   s$   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   ZfbarnZ	femtobarnZpbarnZpicobarnr   r   r   r   test_barn_prefixes  s    r   c                  C   s   dt j } ddt j t j t j  }dt j t j }tjd | d  |j tdd | }|	d}tjd | d  | tdd | }|	d}tjd | d  |j d	 | }|	d}tjd | d  | d	 | }|	d}t
|| t
|| t
|| t jd
 }t|jd ts"J t jd }t|jd tsBJ |jd jdksXJ |jd jdksnJ t jtdd t jtdd  }t|jd tsJ |jd tddksJ t jd d }t|jd tsJ |jd tddksJ dS )z	See #2069g    eAr6   g     Q@   r   r	   r   rE   r   gbeF?r   g۶m۶m?      gg]tEݿN)r   ZMsunr:   r!   rB   rq   r   rV   r   r+   r   r   r   r   r   	numeratordenominatorr*   ZTeV)r   ZtHZvcr   Zv1Zv2Zv3Zv4r   r   r   test_fractional_powers  s4    
&
$
 






 r   c                  C   s8   t jd } t|  jdsJ |  d t jks4J d S )Nr   imagr   )r   Zmagr   r?   r;   )Zsqrt_magr   r   r   test_sqrt_mag  s    
r   c                  C   s.   t jjt dgdd } t jj| gd d S )Nr!   r   r   )r   r!   r   r   )Zcomposite_unitr   r   r   test_composite_compose  s    r  c                   C   s   t jt jsJ d S r   )r   r   rj   bitr   r   r   r   test_data_quantities  s    r  c                   C   s    t jd krJ t jd ksJ d S r   )r   r   r   r   r   r   test_compare_with_none  s    r  c                  C   s8   t d} t| tsJ | jdks&J | jdks4J d S )Ng?r   r   )r   Zvalidate_powerr   r   r   r   )Zfracr   r   r   #test_validate_power_detect_fraction  s    
r  c                  C   s   dt jd  t j } dt j }d}dt j t jd  }d}d}d	}d
t j }dtj | ttj  }||  || | |tj	 | d   }	||	 d }
|
j
jdksJ |
t j d S )Ng(\?r   gv@iBg      ?g&.>r   r   gaa?gyy?g    .AgZlength)r   r*   r   ZsolMassZsolRadrq   r   ZsqrtZpir   rQ   rR   r+   )ZkappaZr_0qZrho_0yZbetaro   Zm_ht1t2r   r   r   r   'test_complex_fractional_rounding_errors  s    

(r
  c                  C   sT   t jd tdd } t| jd ts(J | jd jdks<J | jd jdksPJ d S )Nr   r      r   r   )r   r   r   r   r   r   r   r   r   r   r   &test_fractional_rounding_errors_simple)  s    r  c                  C   s   ddl m}  |  $ | jtj v s*J W d    n1 s>0    Y  ddl m} | $ |jtj	 v srJ W d    n1 s0    Y  d S )Nr   )rs   )imperial)
r   rs   enableZgeoMassr   r   Zfind_equivalent_unitsr  Zinchr   )rs   r  r   r   r   test_enable_unit_groupings0  s    
2
r  c                  C   s   ddl m}  t| jD ]}|\}}}}}|jdkr>|sJ q|jdkrR|sJ q|jdkrf|sJ q|jdkr~|dksJ q|jdkr|dksJ q|jd	kr|d
ksJ qd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   )	astrophysZlyrrE   ZbarnrF   ZNorH   ZvoxZYesN)r   r  r   Z_iter_unit_summaryr   ri   )r  ZsummaryrQ   rm   prefixesr   r   r   test_unit_summary_prefixes;  s    








r  c                  C   s\   t jd t jd  } | d }|jt jt jgks2J |jddgksDJ |t jt j ksXJ 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!   r<   r   )Zm2s2Zspmr   r   r   test_raise_to_negative_powerV  s
    r  )u__doc__r   Z	fractionsr   r'   Znumpyr   Znumpy.testingr   Zastropyr   r   r   rq   r   r   r   r   r"   r%   r,   r1   r3   r5   r@   rJ   rN   rO   rU   rW   r`   re   rn   rr   ru   ry   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   r   ZCOMPOSE_ROUNDTRIPr   valuesvalr   ZUnitBaseZ
PrefixUnitaddZmarkZparametrizesortedr   ZCOMPOSE_CGS_TO_SIrV   Zdeg_Cr   ZCOMPOSE_SI_TO_CGSrS   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r!   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r
  r  r  r  r  r   r   r   r   <module>   s   		!








'

	(