U
    e»{j1  ã                   @   s   d dl ZdgZddd„ZdS )é    NÚquantity_supportÚlatex_inlinec                    sd   ddl m‰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   )ÚtickerÚunits©r   )ÚAnglec                    s   | h  ‡ fdd„|  ¡ D ƒ¡S )Nc                    s   g | ]}ˆ |ƒD ]}|‘qqS © r   )Ú.0ÚcÚs©Úall_issubclassr   úZ/var/www/html/bwave/python/venv/lib/python3.8/site-packages/astropy/visualization/units.pyÚ
<listcomp>/   s     
  z<quantity_support.<locals>.all_issubclass.<locals>.<listcomp>)ÚunionÚ__subclasses__)Úclsr   r   r   r   .   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_fn1   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                    s2   i | _ | jD ] }ˆ j |¡| j |< | ˆ j|< qd S ©N)Ú_original_converterÚ_all_issubclass_quantityÚregistryÚget)Úselfr   r   r   r   Ú__init__A   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   ÚaxisinfoJ   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   a   s     zJquantity_support.<locals>.MplQuantityConverter.convert.<locals>.<listcomp>)Ú
isinstanceÚQuantityr+   Úlist)Úvalr&   r'   )r)   r-   r   Úconvert\   s
    
z6quantity_support.<locals>.MplQuantityConverter.convertc                 S   s   t | dƒr| jS d S )Nr&   )Úhasattrr&   )r   r'   r   r   r   Údefault_unitse   s    
z<quantity_support.<locals>.MplQuantityConverter.default_unitsc                 S   s   | S r   r   )r"   r   r   r   Ú	__enter__k   s    z8quantity_support.<locals>.MplQuantityConverter.__enter__c                    s8   | j D ],}| j| d kr"ˆ j|= q| j| ˆ j|< qd S r   )r   r   r    )r"   ÚtypeÚvalueÚtbr   r   r   r   Ú__exit__n   s    

z7quantity_support.<locals>.MplQuantityConverter.__exit__N)Ú__name__Ú
__module__Ú__qualname__r/   r   r#   Ústaticmethodr*   r2   r4   r5   r9   r   ©r   r(   r   r   r)   r   r   r   ÚMplQuantityConverter>   s   
	
r?   )N)Z
matplotlibr   r   ZastropyZastropy.coordinatesr   ZConversionInterface)r(   r   r?   r   r>   r   r      s    
 7)r   )Únumpyr   Z__doctest_skip__r   r   r   r   r   Ú<module>   s   