B
    q\                 @   s   d dl ZdgZdddZdS )    Nquantity_supportlatex_inlinec                sR   ddl m ddlm ddlm d	ddG  fdddj}| S )
a  
    Enable support for plotting `astropy.units.Quantity` instances in
    matplotlib.

    May be (optionally) used with a ``with`` statement.

      >>> import matplotlib.pyplot as plt
      >>> from astropy import units as u
      >>> from astropy import visualization
      >>> with visualization.quantity_support():
      ...     plt.figure()
      ...     plt.plot([1, 2, 3] * u.m)
      [...]
      ...     plt.plot([101, 125, 150] * u.cm)
      [...]
      ...     plt.draw()

    Parameters
    ----------
    format : `astropy.units.format.Base` instance or str
        The name of a format or a formatter object.  If not
        provided, defaults to ``latex_inline``.

    r   )units)tickerNc             S   sb   t | tj d d }|dkr"dS |dkr.dS |dkr:dS |d dkrTd	|d S d
|S d S )Ng       @g      ?r   0   u   π/2   u   πu   {0}πu   {0}π/2)intnppiformat)xposn r   :lib/python3.7/site-packages/astropy/visualization/units.pyrad_fn(   s    z quantity_support.<locals>.rad_fnc                   sd   e Zd ZfddZe fddZefddZedd Zd	d
 ZfddZ	dS )z.quantity_support.<locals>.MplQuantityConverterc                s*    j jkr | j j < d| _nd| _d S )NTF)Quantityregistry_remove)self)ur   r   r   __init__6   s    z7quantity_support.<locals>.MplQuantityConverter.__init__c                sx   | j kr2jjtjd d|  dS | jkrZj 	d|  dS | d k	rtj|  dS d S )Nr   )base)ZmajlocZmajfmtlabelu   %i°)r   )
ZradianZAxisInfoZMultipleLocatorr
   r   ZFuncFormatterZ	to_stringZdegreeZAutoLocatorZFormatStrFormatter)unitaxis)r   r   r   r   r   r   r   axisinfo=   s    

z7quantity_support.<locals>.MplQuantityConverter.axisinfoc                sJ   t | jr|  S t | trBt | d jrB fdd| D S | S d S )Nr   c                s   g | ]}|  qS r   )to_value).0v)r   r   r   
<listcomp>T   s    zJquantity_support.<locals>.MplQuantityConverter.convert.<locals>.<listcomp>)
isinstancer   r   list)valr   r   )r   )r   r   convertO   s
    
z6quantity_support.<locals>.MplQuantityConverter.convertc             S   s   t | dr| jS d S )Nr   )hasattrr   )r   r   r   r   r   default_unitsX   s    
z<quantity_support.<locals>.MplQuantityConverter.default_unitsc             S   s   | S )Nr   )r   r   r   r   	__enter__^   s    z8quantity_support.<locals>.MplQuantityConverter.__enter__c                s   | j rj j= d S )N)r   r   r   )r   typevaluetb)r   r   r   r   __exit__a   s    z7quantity_support.<locals>.MplQuantityConverter.__exit__N)
__name__
__module____qualname__r   staticmethodr   r%   r'   r(   r,   r   )r   r   r   r   r   r   r   MplQuantityConverter5   s   	r1   )N)Zastropyr   Z
matplotlibr   ZConversionInterface)r   r1   r   )r   r   r   r   r   r   r   
   s    
0)r   )Znumpyr
   Z__doctest_skip__r   r   r   r   r   <module>   s   