
    IR-e                     \    d Z ddlZddlZddlZddlmZmZmZ  G d dej	                  Z
dS )z!
Handles the "FITS" unit format.
    N   )coregenericutilsc                        e Zd ZdZed             Zedd            Zedd            Ze fd            Z	ed fd	            Z
ed	             Zed fd
	            Z xZS )Fitsz
    The FITS standard unit format.

    This supports the format defined in the Units section of the `FITS
    Standard <https://fits.gsfc.nasa.gov/fits_standard.html>`_.
    c                     ddl m}  | j        | j        d}t                      }g d}g }g d}d|                     dd| j        z            i}||z   D ]D}|D ]?}||z   }	t          j        |	          r|	|v r||	         ||	<   ,t          | |	          ||	<   @E|D ]}|D ]}|	                    ||z               g d}
g }|
|z   D ]}t          | |          ||<   |D ]}|	                    |           ||g fS )	Nr   )units)Celsiuszdeg C)#mgsradsrKAmolcdHzJWVNPaCOhmSFWbTHlmlxayreVpcJymagRbitbyteGbarn)yzr$   fpnur   cd dahkMr-   r    PEZYdbyteg?)degarcminarcsecmasminr9   r6   RysolMassr4   solLumsolRadAUlyrcountctphotonphpixelpixDSunchanbinvoxeladubeamergAngstromangstrom)
astropyr
   deg_CsetUnitr,   keyword	iskeywordgetattradd)r4   namesdeprecated_namesbasesdeprecated_basesprefixesspecial_casesbaseprefixkeysimple_unitsdeprecated_unitsunits                9lib/python3.11/site-packages/astropy/units/format/fits.py_generate_unit_nameszFits._generate_unit_names   s   &&&&&&
 wW
 
 55
 
 
 
 
 

 !!&&#,"?"?@,, 	1 	1D" 1 1tm$S)) 1M))!.s!3E#JJ!(CE#JJ1 % 	4 	4D" 4 4 $$Vd]33334
 
 
  #33 	+ 	+D!!T**E$KK$ 	' 	'D  &&&&&**    Tc           	         || j         vrJ|r:t          d| dt          j        || j         | j        | j                  z             t                      || j        v r)t          j        || j         |         d| j                   d S d S )NzUnit 'z&' not supported by the FITS standard. FITS)_units
ValueErrorr   did_you_mean_units_deprecated_units_to_decomposed_alternativeunit_deprecation_warningclsro   detailed_exceptions      rp   _validate_unitzFits._validate_unitL   s    sz!!! # ITIII.
-6	    !ll"3(((*cj&0N     )(rr   c                 J    |                      ||           | j        |         S )N)r}   )r~   ru   r{   s      rp   _parse_unitzFits._parse_unita   s)    44FGGGz$rr   c                 t    t                                          |          }|                     |           |S )N)super_get_unit_namer~   )r|   ro   name	__class__s      rp   r   zFits._get_unit_namef   s3    ww%%d++4   rr   Fc                 
   t          j        || j                  }g }t          j        |j                  }|dz  dk    rt          j        d|j        dd          |j        dk    rE|                    dt          |                      t          j
        d|j        |j                  }|j        r6|                    t                                          ||                     | j                            |          S )	N      ?g        zgThe FITS unit format is not able to represent scales that are not powers of 10.  Multiply your data by e.z10**r   )fraction)r   decompose_to_known_unitsr   nplog10scaler   UnitScaleErrorappendintCompositeUnitrf   powersr   	to_string_scale_unit_separatorjoin)r|   ro   r   partsrj   r   s        rp   r   zFits.to_stringl   s    -dC4FGGx
###:%#:"# # #  
 Z3
 LL+D		++,,,%aT[AAD: 	ELL**4(*CCDDD(--e444rr   c                     	 |                      |          }nR# t          j        $ r@ |j        }t	          j        |          }d|_        |                      |           d| dcY S w xY w|S )Nr   z (with data multiplied by ))r   r   r   r   copy_scale)r|   ro   r   r   s       rp   ry   zFits._to_decomposed_alternative   s    	Nd##AA" 	N 	N 	NJE9T??DDKmmD))MMUMMMMMM		N
 s    AA'&A'c                     t                                          ||          }t          |d          rt          d          |S )Nfunction_unitz4Function units are not yet supported for FITS units.)r   parsehasattrrv   )r|   r   debugresultr   s       rp   r   z
Fits.parse   sA    q%((6?++ 	USTTTrr   )T)F)__name__
__module____qualname____doc__staticmethodrq   classmethodr~   r   r   r   ry   r   __classcell__)r   s   @rp   r   r      s         1+ 1+ \1+f    [(       [      [
 5 5 5 5 5 [56   [      [    rr   r   )r   r   r`   numpyr   r7   r   r   r   Genericr    rr   rp   <module>r      s    
       " " " " " " " " " "H H H H H7? H H H H Hrr   