B
    di                 @   s   d dl ZdgZdddZdS )    Nquantity_supportlatex_inlinec                sl   ddl m ddlm} ddlm ddlm  fdd 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)Angle)tickerc                s   | h  fdd|  D S )Nc                s   g | ]} |D ]}|qqS  r   ).0cs)all_issubclassr   h/work/yifan.wang/ringdown/master-ringdown-env/lib/python3.7/site-packages/astropy/visualization/units.py
<listcomp>2   s    z<quantity_support.<locals>.all_issubclass.<locals>.<listcomp>)union__subclasses__)cls)r   r   r   r   0   s    z(quantity_support.<locals>.all_issubclassNc             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rT|d  dS | dS d S )	Ng       @g      ?r   0   u   π/2   u   π)intnppi)xposnr   r   r   rad_fn4   s    z quantity_support.<locals>.rad_fnc                   sj   e Zd Z j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                s6   i | _ x*| jD ] } j|| j |< |  j|< qW d S )N)_original_converter_all_issubclass_quantityregistryget)selfr   )r   r   r   __init__E   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)formatr   r   ur   r   r   axisinfoO   s    

z7quantity_support.<locals>.MplQuantityConverter.axisinfoc                sN   t | jr|  S t | trF| rFt | d jrF fdd| D S | S d S )Nr   c                s   g | ]}|  qS r   )to_value)r   v)r#   r   r   r   f   s    zJquantity_support.<locals>.MplQuantityConverter.convert.<locals>.<listcomp>)
isinstanceQuantityr(   list)valr#   r$   )r&   )r#   r   converta   s
    
z6quantity_support.<locals>.MplQuantityConverter.convertc             S   s   t | dr| jS d S )Nr#   )hasattrr#   )r   r$   r   r   r   default_unitsj   s    
z<quantity_support.<locals>.MplQuantityConverter.default_unitsc             S   s   | S )Nr   )r   r   r   r   	__enter__p   s    z8quantity_support.<locals>.MplQuantityConverter.__enter__c                s<   x6| j D ],}| j| d kr$ j|= q| j|  j|< qW d S )N)r   r   r   )r   typevaluetbr   )r   r   r   __exit__s   s    
z7quantity_support.<locals>.MplQuantityConverter.__exit__N)__name__
__module____qualname__r+   r   r    staticmethodr'   r.   r0   r1   r5   r   )r   r%   r   r   r&   r   r   r   MplQuantityConverterA   s   

	r:   )N)Zastropyr   Zastropy.coordinatesr   Z
matplotlibr   ZConversionInterface)r%   r   r:   r   )r   r%   r   r   r&   r   r   r   
   s    
 9)r   )numpyr   Z__doctest_skip__r   r   r   r   r   <module>   s   