a
    ߙfb]                  '   @   sD  d Z ddlZddlm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mZmZ dd	lmZ dd
lmZ ejdg dejej fg dejej fg dejd fg dejd fg dejd fdgeejd fdgeejd fdgejd fddgeejfdgej fdge!ej"ej fdgejfdd ge#ejejd  fgd!d" Z$ejd#g d$d%d& Z%ejdd'gej&fd(geej'ejd  ej fd)geej'ejd  ej fd*d+gej(ej fd,ged-ej) ej* fd.ged/ej fd0ged/ej fd1gejd fd2geejd3 fd4geejd fd5gd6ej+ fd7gd8ej+ fd9gd:ej+ fd;gej+fd<gej,fd=gej-fd>gej.fd?gej/fd@gej0fdAgej1fdBgdCej2 fdDgej3fdEgdFej4 fdGgej5fdHgej6fdIgej7fdJgej8fdKgej8ej fdLgej&fdMgej&ej fdNgej9fdOgeejejd  fdPgeej:fdQgeej+fg"dRdS Z;ejd#g dTdUdV Z<dWdX Z=dYdZ Z>ejdg d[ej?ej fd\d]gej@ej d^ fg d_ej?ejd`  ejd^  ejAd^  fg daej'ejejB ej@  fdbdcgejCd ejDejE  fg ddd-de ej' ej fg dfdgejF ejd`  ejGd^  fg dhej'ej@d^  ejd^  ejBd^  d fg diej?ej djej@ej   fg	dkdl ZHejd#g dmdndo ZIG dpdq dqZJG drds dseJZKG dtdu dueJZLG dvdw dweJZMG dxdy dyeJZNG dzd{ d{eJZOd|d} ZPd~d ZQdd ZRdd ZSdd ZTdd ZUdd ZVdd ZWejdg ddd ZXdd ZYdd ZZdd Z[dd Z\dd Z]dd Z^dd Z_dd Z`dd Zadd Zbejd#g ddd Zcejd#g ddd Zddd Zedd Zfdd Zgejdg ddd Zhdd Zidd Zjejdg ddd Zkdd Zldd ZmejddddddddddeddɃdff
dd̄ Znejddejofdejofdejpd^ fddej fdejej fdejd fdejd fdejd fdejd- fdejqfdejqfdejrfdejsfdejsejt fdLejsfdejsfdejufdejvfdJejwfdejxfdejyfdejzfdejzfdej{fdej|fdej4fdej}fgdd Z~ejd#g ddd Zejdddd Zdd ZdS )z/
Regression tests for the units.format package
    N)nullcontext)Fraction)assert_allclose)units)si)coredexUnitsWarningformat)is_effectively_unityzstrings, unit)zm szm*szm.s)m/szm*s**-1zm /szm / szm/ s)m**2m2zm**(2)zm**+2zm+2zm^(+2)   )zm**-3zm-3zm^(-3)z/m3)zm**(1.5)m(3/2)zm**(3/2)zm^(3/2)      ?z2.54 cmRQ@z10+8mg    חAzsqrt(m)g      ?dB(mW)zdB (mW)mag	mag(ct/s)r   dex(cm s**-2)z
dex(cm/s2)c                 C   s.   | D ]$}t | tj|}||ksJ qd S N)printu_formatGenericparseZstringsunitsZunit2 r!   >lib/python3.9/site-packages/astropy/units/tests/test_format.pytest_unit_grammar   s    r#   string)sin( /pixel /s)zmag(mag)z
dB(dB(mW))zdex()c                 C   sB   t t$ t|  tj|  W d    n1 s40    Y  d S r   )pytestraises
ValueErrorr   r   r   r   r$   r!   r!   r"   test_unit_grammar_fail.   s    r*   0.1nmzmW/m2zmW/(m2)zkm/szkm.s-1z10pix/nm
   z
1.5x10+11mg   .YvABu   1.5×10+11mr   z10+21mgPKDz2.54cmz20%g?z10+9g    eAz2x10-9g&.!>---mamAUuarcminuarcseckbarnGbitZGibiti   @kbyteZmRyMbP?mmagMpcGyr   °u   °/s   Åu   Å/sz\hz[cm/s2]z[K][-]c                 C   s.   | D ]$}t | tj|}||ksJ qd S r   )r   r   CDSr   r   r!   r!   r"   test_cds_grammar6   s    $r=   )z0.1 nmzsolMass(3/2)zkm / szkm s-1zpix0.1nmzpix/(0.1nm)zkm*szkm**2z5x8+3mz0.1---z---mzm---z--z0.1-z-mzm-zmag(s-1)r   zdex(cm s-2)z[--]c                 C   sB   t t$ t|  tj|  W d    n1 s40    Y  d S r   )r&   r'   r(   r   r   r<   r   r)   r!   r!   r"   test_cds_grammar_fail`   s    r>   c                   C   s2   t jdddt jksJ t jjdddks.J d S )Nr-   cdsr
   )uUnitdimensionless_unscaled	to_stringr!   r!   r!   r"   test_cds_dimensionless{   s    rD   c                   C   s>   t jdddt t jksJ t t jjdddks:J d S )Nr;   r?   r
   )r@   rA   r   rB   rC   r!   r!   r!   r"   test_cds_log10_dimensionless   s    rE   )zcount /szcount/szcount s**(-1)z	count / sz	count /s z	/pixel /sz/(pixel * s))zcount /m**2 /s /eVz"count m**(-2) * s**(-1) * eV**(-1)zcount /(m**2 * s * eV))zerg /pixel /s /GHzzerg /s /GHz /pixelzerg /pixel /(s * GHz)zkeV**2 /yr /angstromz10**(10) keV**2 /yr /m)z10**(46) erg /sz10**46 erg /sz10**(39) J /sz
10**(39) Wz10**(15) YWzYJ /fs.   )z10**(-7) J /cm**2 /MeVz10**(-9) J m**(-2) eV**(-1)znJ m**(-2) eV**(-1)znJ /m**2 /eVgHz>)zsqrt(erg /pixel /s /GHz)z(erg /pixel /s /GHz)**(0.5)z(erg /pixel /s /GHz)**(1/2)z.erg**(0.5) pixel**(-0.5) s**(-0.5) GHz**(-0.5))z(count /s) (/pixel /s)z(count /s) * (/pixel /s)zcount /pixel /s**2      ?c                 C   s.   | D ]$}t | tj|}||ksJ qd S r   )r   r   OGIPr   r   r!   r!   r"   test_ogip_grammar   s    rK   )zlog(photon /m**2 /s /Hz)r%   z,log(photon /cm**2 /s /Hz) /(sin( /pixel /s))z1log(photon /cm**2 /s /Hz) (sin( /pixel /s))**(-1)r   zdex(cm/s**2)c                 C   sB   t t$ t|  tj|  W d    n1 s40    Y  d S r   )r&   r'   r(   r   r   rJ   r   r)   r!   r!   r"   test_ogip_grammar_fail   s    rL   c                   @   s$   e Zd Ze ZdddZdd ZdS )RoundtripBaseNc                 C   s   |d u r| j }t $ td ||}W d    n1 s@0    Y  || jv rtjtdd }t	j
|| j d}W d    n1 s0    Y  t|dksJ nt	j
|| j d}t| j| jdd d S )Nignore
deprecatedmatchr
      &.>Zrtol)format_warningscatch_warningssimplefilterrC   deprecated_unitsr&   warnsr	   r   rA   lenr   	decomposescale)selfr   output_formatr    war!   r!   r"   check_roundtrip   s    

(
.zRoundtripBase.check_roundtripc                 C   sJ   |  }|| j}d|vs J tj|| jd}t|  j|jdd d S )Nz  r
   gh㈵>rT   )r\   rC   rU   r   rA   r   r]   )r^   r   Zudr    ra   r!   r!   r"   check_roundtrip_decompose   s
    z'RoundtripBase.check_roundtrip_decompose)N)__name__
__module____qualname__setrY   rb   rc   r!   r!   r!   r"   rM      s   
rM   c                   @   s6   e Zd ZdZejddd ej	 D dd Z
dS )TestRoundtripGenericgenericr   c                 C   s(   g | ] }t |tjrt |tjs|qS r!   
isinstancer   ZUnitBaseZ
PrefixUnit.0r   r!   r!   r"   
<listcomp>   s   zTestRoundtripGeneric.<listcomp>c                 C   s&   |  | | j |dd | | d S )Nunicode)r_   )rb   rc   r^   r   r!   r!   r"   test_roundtrip   s    
z#TestRoundtripGeneric.test_roundtripN)rd   re   rf   rU   r&   markparametrizer@   __dict__valuesrq   r!   r!   r!   r"   rh      s
   rh   c                   @   s@   e Zd ZdZejjZej	
ddd ejj D dd ZdS )TestRoundtripVOUnitvounitr   c                 C   s(   g | ] }t |tjrt |tjs|qS r!   rj   rl   r!   r!   r"   rn      s   zTestRoundtripVOUnit.<listcomp>c                 C   s(   |  | |tjtjfvr$| | d S r   )rb   r@   r   ZdBrc   rp   r!   r!   r"   rq      s    
z"TestRoundtripVOUnit.test_roundtripN)rd   re   rf   rU   r   VOUnit_deprecated_unitsrY   r&   rr   rs   _unitsru   rq   r!   r!   r!   r"   rv      s   
rv   c                   @   s@   e Zd ZdZejjZej	
ddd ejj D dd ZdS )TestRoundtripFITSfitsr   c                 C   s(   g | ] }t |tjrt |tjs|qS r!   rj   rl   r!   r!   r"   rn      s   zTestRoundtripFITS.<listcomp>c                 C   s   |  | d S r   )rb   rp   r!   r!   r"   rq      s    z TestRoundtripFITS.test_roundtripN)rd   re   rf   rU   r   Fitsry   rY   r&   rr   rs   rz   ru   rq   r!   r!   r!   r"   r{      s   
r{   c                   @   sn   e Zd ZdZejddd ejj	
 D dd Zejddd ejejd  ejejfD d	d
 ZdS )TestRoundtripCDSr?   r   c                 C   s(   g | ] }t |tjrt |tjs|qS r!   rj   rl   r!   r!   r"   rn      s   zTestRoundtripCDS.<listcomp>c                 C   s&   |  | |tjkrd S | | d S r   )rb   r@   r   rc   rp   r!   r!   r"   rq      s    

zTestRoundtripCDS.test_roundtripc                 C   s   g | ]}t |qS r!   )r@   r   rl   r!   r!   r"   rn         r   c                 C   s*   |j dd}tj|dd}||ks&J d S )Nr?   r
   )rC   r@   rA   )r^   r   r$   Z	recoveredr!   r!   r"   test_roundtrip_dex  s    z#TestRoundtripCDS.test_roundtrip_dexN)rd   re   rf   rU   r&   rr   rs   r   r<   rz   ru   rq   r@   cmr    KLsunr   r!   r!   r!   r"   r~      s   

r~   c                   @   sF   e Zd ZdZejjdhB Zej	
ddd ejj D dd ZdS )	TestRoundtripOGIPogipdr   c                 C   s(   g | ] }t |tjrt |tjs|qS r!   rj   rl   r!   r!   r"   rn     s   zTestRoundtripOGIP.<listcomp>c                 C   s  t |dv rntt, || j}tj|| jd}W d    n1 sH0    Y  t|	 j
|	 j
dd n
| | t |dv rd S t|	 j
}t|t| dkrtjtdd}n"t |d	krtjtd
d}nt }| | | W d    n1 s0    Y  d S )N)r   
0.001 Crabr
   rS   rT   )r   ZbyteZCrabr5   zpower of 10rP   r   rO   )strr&   rZ   r	   rC   rU   r   rA   r   r\   r]   rb   npZlog10absroundr   rc   )r^   r   r    ra   Zpower_of_tenctxr!   r!   r"   rq     s     .
z TestRoundtripOGIP.test_roundtripN)rd   re   rf   rU   r   rJ   ry   rY   r&   rr   rs   rz   ru   rq   r!   r!   r!   r"   r     s   
r   c                   C   s   t jj d S r   )r   r}   rz   r!   r!   r!   r"   test_fits_units_available1  s    r   c                   C   s   t jj d S r   )r   rx   rz   r!   r!   r!   r"   test_vo_units_available5  s    r   c                   C   s   t jj d S r   )r   r<   rz   r!   r!   r!   r"   test_cds_units_available9  s    r   c                  C   sF   ddl m}  |   tjjdd W d   n1 s80    Y  dS )ul   Regression test for #5350.  This failed with a decoding error as
    μas could not be represented in ascii.r   r?   T)Zinclude_prefix_unitsN)astropy.unitsr?   enabler@   ZradianZfind_equivalent_unitsr   r!   r!   r"   test_cds_non_ascii_unit=  s    
r   c                  C   s,   t jt jd t j  } | ddks(J d S Nr   latex $\mathrm{\frac{erg}{s\,cm^{2}}}$)r@   ergr   r    rC   fluxunitr!   r!   r"   
test_latexE  s    r   c                  C   s*   t jt jd t j  } | ddks&J d S r   )r@   r   r   r    r   r!   r!   r"   test_new_style_latexJ  s    r   c                  C   s@   t dt j t jd t j t j  } d}| d|ks<J d S )N秎W:r   z7$\mathrm{1 \times 10^{-24}\,\frac{erg}{Hz\,s\,cm^{2}}}$r   r@   rA   r   r   r    HzrC   )r   r   r!   r!   r"   test_latex_scaleO  s    &r   c                  C   s@   t dt j t jd t j t j  } d}| d|ks<J d S )Nr   r   z;$\mathrm{1 \times 10^{-24}\,erg\,Hz^{-1}\,s^{-1}\,cm^{-2}}$latex_inliner   )r   r   r!   r!   r"   test_latex_inline_scaleU  s    &r   zformat_spec, string))ri   erg / (cm2 s))r    r   )consolez  erg  
 ------
 s cm^2)r   r   )r   z$\mathrm{erg\,s^{-1}\,cm^{-2}}$)z>20sz       erg / (cm2 s)c                 C   s,   t jt jd t j  }t|| |ks(J d S )Nr   )r@   r   r   r    r   )format_specr$   r   r!   r!   r"   test_format_styles\  s    r   c                  C   sJ   t dt jt j } | ddks&J | t jd  }|ddksFJ d S )NZ
FOOBAR_Oner|   zerg Hz-1   zbit3 erg Hz-1)r@   def_unitr   r   rC   bit)myunitZmyunit2r!   r!   r"   test_flatten_to_knownh  s    r   c               	   C   sl   t d} t | D tt | d W d    n1 s@0    Y  W d    n1 s^0    Y  d S )NZ
FOOBAR_Twor|   )r@   r   Zadd_enabled_unitsr&   r'   r(   rC   )r   r!   r!   r"   test_flatten_impossibleo  s    
r   c                   C   s   t j d dS )z
    Issue #436.
    r   N)r@   ZJyr\   rC   r!   r!   r!   r"   test_console_outu  s    r   c                   C   s   t jjddksJ d S )Nr   z$\mathrm{60\,s}$)r@   min_representsrC   r!   r!   r!   r"   test_flexible_float|  s    r   c                   C   s>   t jtdd tjd W d   n1 s00    Y  dS )zdTest function raises TypeError on bad input.

    This instead of returning None, see gh-11825.
    zunit argument must berP   N)r&   r'   	TypeErrorr   r}   rC   r!   r!   r!   r"   "test_fits_to_string_function_error  s    r   c                  C   sN   t jd } d| dvsJ t jd }d|dv s8J |ddksJJ d S )N       @.r   g      @z5/2ro   u
   cm⁵⸍²)r@   r   rC   )ZareaZ
fractionalr!   r!   r"   test_fraction_repr  s
    

r   c                  C   s8   dt j j} t| jjsJ t|   dks4J dS )z[Scale just off unity at machine precision level is OK.
    Ensures #748 does not recur
    g      @r   N)	r@   NZcgsr   r   r]   r[   __repr__split)ra   r!   r!   r"   test_scale_effectively_unity  s    r   c                   C   s   t dt j  kr"t dks(n J t jdddt dksDJ t dddks\J tt t jddd W d   n1 s0    Y  tt t jddd W d   n1 s0    Y  dS )zTest that the % unit is properly recognized.  Since % is a special
    symbol, this goes slightly beyond the round-tripping tested above.%{Gz?r?   r
   r|   Nrw   )r@   rA   ZpercentrC   r&   r'   r(   r!   r!   r!   r"   test_percent  s    (,r   c                   C   s  t dt d  kr&dt j ks,n J t dt dksDJ t jdddt dks`J t dddksxJ tt  t d	d
 W d   n1 s0    Y  t dd
dksJ tt  t dd W d   n1 s0    Y  dS )zpTest that scaled dimensionless units are properly recognized in generic
    and CDS, but not in fits and vounit.0.1皙?z1.e-4g-C6?z10-4r?   r
   z10+8g333333?r|   Nz10**-1rw   )r@   rA   rB   rC   r&   r'   r(   r!   r!   r!   r"   test_scaled_dimensionless  s    ,.r   c                  C   sd  t t} tjddd W d    n1 s.0    Y  dt| jv sJJ t t} tjddd W d    n1 sx0    Y  dt| jv sJ dt| jv sJ t jtd	d
}tjddd W d    n1 s0    Y  t	|dksJ t|d j
ddksJ t jtdd
}tjddd W d    n1 sD0    Y  t	|dks`J d S )NZANGSTROMr|   r
   z"Did you mean Angstrom or angstrom?Zcrabr   zCrab (deprecated)zmCrab (deprecated)zL.* Did you mean 0\.1nm, Angstrom \(deprecated\) or angstrom \(deprecated\)\?rP   rw   rR   r   r+   z.* 0\.1nm\.angstrom)r&   r'   r(   r@   rA   r   valuerZ   r	   r[   messagecount)exc_infor`   r!   r!   r"   "test_deprecated_did_you_mean_units  s    ,,,.r   )r   r   r   c                 C   sD   t t& t|  t |  W d    n1 s60    Y  d S r   )r&   r'   r(   r   r   r}   r   r)   r!   r!   r"   test_fits_function  s    r   c              	   C   sn   t tP t ( td t |  W d    n1 sB0    Y  W d    n1 s`0    Y  d S )NrN   )	r&   r'   r(   rV   rW   rX   r   rx   r   r)   r!   r!   r"   test_vounit_function  s    
r   c                  C   s   t jdddt dk t jdddt dk t jdddt dk tt} t jddd W d    n1 sv0    Y  t| dksJ d S )	NZKiBrw   r
   z1024 BZKibyteZKibitZkibibyterR   )r@   rA   r&   rZ   r	   r[   )r`   r!   r!   r"   test_vounit_binary_prefix  s    ,r   c                   C   sH   t jdddd u sJ t jdddd u s,J t jdddt ju sDJ d S )Nunknownrw   r
   ZUNKNOWN )r@   rA   rB   r!   r!   r!   r"   test_vounit_unknown  s    r   c                  C   s  t jtdd(} tjdddtju s(J W d    n1 s<0    Y  t| dksVJ tjddksjJ tddd	ksJ t jtddb tj	tj
 tj
 tj tj }tjj|}|d
ksJ tjj|}||ksJ W d    n1 s0    Y  d S )NrO   rP   ZParw   r
   rR   Z10mzdam dagz100g.mzAngstrom**-1.cm**-2.erg.s**-1)r&   rZ   r	   r@   rA   ZPascalr[   ZdamrC   r   r   r    AAr   rx   r   )r`   ZflamxZnew_flamr!   r!   r"   test_vounit_details  s    6r   z$unit, vounit, number, scale, voscale))nmr   r   z10^-1r   )fmr         Y@10+2100)zm^2r   r   z100.0r   )r   r   r   2.54r   )kgr   gZW^Ez1.898124597E27z1.8981246e+27)r   zm.s**-1g   JxޱAZ	299792458z2.9979246e+08)Zcm2zcm**2#B;10^(-20)z1e-20c                 C   sF   t | d|  }||t |  ks*J |jdd|| ksBJ d S )N rw   r
   )r@   rA   rC   )r   rw   numberr]   Zvoscaler   r!   r!   r"   test_vounit_scale_factor  s    	r   c                  C   s   t jddd} | d}|dks$J |  }|dks8J t jddd} | jd jjdks\J | d}|d	ksrJ |  }|d
ksJ d S )Nz'foo' mrw   r
   z'foo'.mzfoo mzm'foo' mrR   r5   zm.m'foo'zm mfoo)r@   rA   rC   basesr   r]   )r   Zx_vounitZx_stringr!   r!   r"   test_vounit_custom  s    

r   c                  C   s   t t} tjddd}W d    n1 s.0    Y  |jd jjdksNJ |jd jjd jdksjJ t	| dkszJ dt
| d jv sJ d	t
| d
 jv sJ d S )Nzfurlong/weekrw   r
   r   gV瞯<Zurlongr   ZfurlongZweekrR   )r&   rZ   r	   r@   rA   r   r   r]   namer[   r   r   )r`   r   r!   r!   r"   test_vounit_implicit_custom!  s    ,r   zscale, number, string))r   d   10**2)z10(+2)r   r   )z10**+2r   r   )z10**(+2)r   r   )z10^+2r   r   )z10^(+2)r   r   )r   r   r   )z10**(2)r   r   )z10^2r   r   )z10^(2)r   r   )z10-20r   10**-20)z10(-20)r   r   )r   r   r   )z	10**(-20)r   r   )z10^-20r   r   )r   r   r   c                 C   s   t j| d dd}||t jt j t jd  t j  ks:J |jdd|d ksRJ t j| d dd}||t jt j t jd  t j  ksJ |jdd|d ksJ d S )Nz erg/(s cm**2 Angstrom)r|   r
   r   z Angstrom-1 cm-2 erg s-1z*erg/(s cm**2 Angstrom))r@   rA   r   r    r   AngstromrC   )r]   r   r$   r   r!   r!   r"   test_fits_scale_factor,  s    ((r   c                  C   s   t t tjddd} W d    n1 s.0    Y  t t tjddd} W d    n1 sf0    Y  tdtj } t t | jdd W d    n1 s0    Y  tdtj } | jdddksJ d S )Nz1000 erg/(s cm**2 Angstrom)r|   r
   z12 erg/(s cm**2 Angstrom)g333333?r   z	10**2 erg)r&   r'   r(   r@   rA   r   rC   )r   r!   r!   r"   test_fits_scale_factor_errorsI  s    ,,*r   c                   C   s   t jddksJ t jd ddks,J t jddks@J t jd ddksXJ t jddkslJ t jd ddksJ t jdd	ksJ t jd dd
ksJ t jddksJ t jd ddksJ dS )zCRegression test for #5870, #8699, #9218; avoid double superscripts.r   z$\mathrm{{}^{\circ}}$r   z$\mathrm{deg^{2}}$z$\mathrm{{}^{\prime}}$z$\mathrm{arcmin^{2}}$z$\mathrm{{}^{\prime\prime}}$z$\mathrm{arcsec^{2}}$z$\mathrm{{}^{h}}$z$\mathrm{hourangle^{2}}$z$\mathrm{e^{-}}$z$\mathrm{electron^{2}}$N)r@   degrC   arcminZarcsecZ	hourangleZelectronr!   r!   r!   r"   test_double_superscriptX  s    r   zpower,expected)rI   m)r   r   )iz1 / m10)r   r   )gUUUUUU?zm(2/3))g]tE]?zm(7/11))g      z1 / m(1/64))r   zm(1/100))gbeF?zm(0.019801980198019802)e   zm(2/101)c                 C   s.   t j|  }| }||ksJ ||ks*J dS )z@Regression test for #9279 - powers should not be oversimplified.N)r@   r   rC   )ZpowerZexpectedr   r    r!   r!   r"   test_powersf  s    
r   zstring,unitu   µgu   μgu   g−1u   m⁻¹rR   u   m s⁻¹u   m²u   m⁺²u   m³r   u   m¹⁰u   Ωu   Ωu   µΩu   Åu   Å Ωu   Åu   mÅu   °Cu   M⊙u   L☉u   M⊕u   M♁u   R♃u   ′u   R∞u   Mₚc                 C   s*   t j| |ksJ t| |ks&J d S r   )r   r   r   r@   rA   )r$   r   r!   r!   r"   test_unicoder  s    r   )u   gµu   g−u   m⁻1u   m+¹u   m−¹u   kÅc                 C   s8   t t t|  W d    n1 s*0    Y  d S r   r&   r'   r(   r@   rA   r)   r!   r!   r"   test_unicode_failures  s    	r   rU   )ro   r   r   c                 C   s@   t jtdd tjd| d W d    n1 s20    Y  d S )Nz	not parserP   r   r
   )r&   r'   NotImplementedErrorr@   rA   )rU   r!   r!   r"   /test_parse_error_message_for_output_only_format  s    r   c                   C   s@   t jtdd tjddd W d    n1 s20    Y  d S )Nz#Unknown.*unicode'\] for output onlyrP   r   Zfoor
   r   r!   r!   r!   r"   test_unknown_parser  s    r   )__doc__rV   
contextlibr   Z	fractionsr   r&   Znumpyr   Znumpy.testingr   Zastropyr   r@   Zastropy.constantsr   r   r   r   r	   r   r   Zastropy.units.utilsr   rr   rs   r   r    rA   r   ZDecibelUnitZmWr   ZMagUnitZctZDexUnitr#   r*   r   r   ZkmZpixr   rB   r.   r/   r0   r1   r2   r3   r   r4   ZRyr6   r7   r8   Zdegreehr   r=   r>   rD   rE   r   ZpixelZeVZGHzZkeVZyrr   JZMeVrK   rL   rM   rh   rv   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   Z	microgramgZohmZmicroOhmr   ZOhmZmilliAngstromZdeg_Cr   ZMsunr   ZMearthZRjupr   ZM_pr   r   r   r   r!   r!   r!   r"   <module>   st  




  













#


"&

#


	

	






