
    IR-e64                     Z   d Z ddlmZmZ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 ddlmZmZmZmZmZ d	Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+d  Z,d! Z-d" Z.d# Z/d$ Z0d% Z1d& Z2d' Z3d( Z4d) Z5 ej6        d*ee5           d+S ),z%Quantity helpers for the ERFA ufuncs.    )dt_eraASTROMdt_eraLDBODYdt_pv)ufunc)
UnitsErrorUnitTypeErrordimensionless_unscaled)StructuredUnit   )UFUNC_HELPERS)_dget_converterhelper_invarianthelper_multiplicationhelper_twoarg_invariant)&s2cs2pc2sp2spmpdppxprxpcpvp2pvpv2ppv2spvdpvpvmpvmpvpvppvpvstarpvtobpvupvuppvxpvrxpvs2pvs2xpvstarpvsxpvtrxpvgd2gcgc2gdldnaperapioatciqatciqnatciqzaticqatioqatoiqc                 @   |j         }|rt          | t                    ojt          |           t          |          k    oJt	          d t          |                                 |                                          D                       S t          | t                     S )Nc              3   H   K   | ]\  }}t          ||d                    V  dS )r   N)has_matching_structure).0udf_vs      Blib/python3.11/site-packages/astropy/units/quantity_helper/erfa.py	<genexpr>z)has_matching_structure.<locals>.<genexpr>"   sH        Q 'q$q'22         )fields
isinstancer
   lenallzipvalues)unitdtypedtype_fieldss      r>   r:   r:      s    <L 
4t^,, D		S...  !$T[[]]L4G4G4I4I!J!J    	
 dN3333r@   c                     t          | |          s@t          dt          dt          di                    |d          }t          | d| d          d S )Npvldbodyastromfunctionz! input needs unit matching dtype=.)r:   r   r   r   getr   )rG   rH   msgs      r>   check_structured_unitrR   +   si    !$.. OdL(L(KOO:
 
 sMMUMMMNNN	O Or@   c                     ddl m} 	 t          ||          t          ||          gt          fS # t          $ r t          d| j         d          w xY wNr   radianCan only apply 'z)' function to quantities with angle units)astropy.units.sirV   r   r	   r   r   __name__)funit1unit2rV   s       r>   
helper_s2cr]   3   s    ''''''
%((%((
 "" 	"  
 
 
TqzTTT
 
 	

s	   &/ #Ac                     ddl m} 	 t          ||          t          ||          d g|fS # t          $ r t	          d| j         d          w xY wrT   )rX   rV   r   r   r   rY   )rZ   r[   r\   unit3rV   s        r>   
helper_s2pr`   A   s}    ''''''
eV,,mE6.J.JDQSXXX 
 
 
TqzTTT
 
 	

s	   "+ #Ac                     ddl m} d g||ffS Nr   rU   rX   rV   rZ   r[   rV   s      r>   
helper_c2sre   L   s&    ''''''6FF###r@   c                     ddl m} d g|||ffS rb   rc   rd   s      r>   
helper_p2srg   R   s(    ''''''6FFE***r@   c                     ddl m}m} |t          d          	 d t	          ||          g|||d ffS # t
          $ r t          d| j         d          w xY w)Nr   mrV   ellipsoid cannot be a quantity.rW   z*' function to quantities with length unitsrX   rj   rV   r   r   r   rY   )rZ   nounitr[   rj   rV   s        r>   helper_gc2gdrn   X   s    ********=>>>
mE1--.D0III 
 
 
UqzUUU
 
 	

s	   3 #Ac                     ddl m}m} |t          d          	 d t	          ||          t	          ||          t	          ||          g|d ffS # t
          $ r t          d| j         d          w xY w)Nr   ri   rk   rW   z>' function to lon, lat with angle and height with length unitsrl   )rZ   rm   r[   r\   r_   rj   rV   s          r>   helper_gd2gcrp   e   s    ********=>>>
%((%((%##	

 t9 	  
 
 
6qz 6 6 6
 
 	

s   3A #A2c                     ddl m} t          |t                    rt	          d          d gt          |||z  f          fS )Nr   )sz*p vector unit cannot be a structured unit.)rX   rr   rB   r
   r   )rZ   r[   rr   s      r>   helper_p2pvrs   x   sT    """"""%(( JHIII6>5%!)"45555r@   c                 B    t          |t                     d g|d         fS )Nr   rR   r   rZ   r[   s     r>   helper_pv2prw      s#    %'''658r@   c                     ddl m} t          |t                     ||d         z  |d         z  }d g|||d         |||d         ffS )Nr   rU   r   )rX   rV   rR   r   )rZ   unit_pvrV   ang_units       r>   helper_pv2sr{      s]    '''''''5)))
"WQZ/H6FFGAJ(GAJOOOr@   c           	          ddl m} ||z  }t          ||          t          ||          d t          |||z            t          |||z            d gt          ||f          fS rb   )rX   rV   r   r
   )	rZ   
unit_thetaunit_phiunit_runit_tdunit_pdunit_rdrV   	time_units	            r>   helper_s2pvr      s    '''''' Ij&))h''gv	122gv	122 vw'(() )r@   c           	      :   t          |t                     t          |t                     t          |d         |d         z  |d         |d         z  f          }t          |t          |d         |d         |d         z  |d         z  f                    }d |g|fS Nr   r   )rR   r   r
   r   )rZ   r[   r\   result_unit	converters        r>   helper_pv_multiplicationr      s    %'''%''' %(U1X"5uQx%(7J!KLLK~uQxqE!H)<uQx)GHII I )k))r@   c                 R    t          |t                     d g|d         |d         ffS r   ru   rv   s     r>   
helper_pvmr      s,    %'''6E!HeAh'''r@   c                     ddl m} ddlm}m}m}m}m}m} t          |t          |||z  f                    g||||z  ||z  |||z  d ffS Nr   AU)arcsecdaykmrV   rr   yearastropy.units.astrophysr   rX   r   r   r   rV   rr   r   r   r
   )	rZ   r[   r   r   r   r   rV   rr   r   s	            r>   helper_pvstarr      s    ******AAAAAAAAAAAAAAAA%R#X!?!?@@A
QD  r@   c           
      $   ddl m} ddlm}m}	m}
m}m}m} t          ||          t          ||          t          |||z            t          |||z            t          ||          t          ||
|z            gt          |||	z  f          d ffS r   r   )rZ   unit_raunit_decunit_pmrunit_pmdunit_pxunit_rvr   r   r   r   rV   rr   r   s                 r>   helper_starpvr      s    ******AAAAAAAAAAAAAAAA 	gv&&h''h..h..gv&&grAv&& 	BH~&&-. .r@   c           
         ddl m}m}	m}
 t	          ||	          t	          ||	          t	          ||          t	          ||	          t	          ||	          t	          ||	          t	          ||	          gt          |||
z  f          fS )Nr   )rj   rV   rr   )rX   rj   rV   rr   r   r
   )rZ   
unit_elongr~   unit_hmunit_xpunit_ypunit_spr}   rj   rV   rr   s              r>   helper_pvtobr      s     .--------- 	j&))h''gq!!gv&&gv&&gv&&j&)) q!a%j!!" "r@   c                 r    t          |t                     t          ||d         |d         z            d g|fS r   rR   r   r   rZ   unit_try   s      r>   
helper_pvur      s9    '5)))&'!*wqz"9::DA7JJr@   c                 ~    t          |t                     t          ||d         |d         z            d g|d         fS r   r   r   s      r>   helper_pvupr      s=    '5)))&'!*wqz"9::DA71:MMr@   c                     t          |t                     g dt          t          |          |d         z  t          |          |d         z  f          fS )N)NNNr   r   )rR   r   r
   r   )rZ   r[   r\   ry   s       r>   helper_s2xpvr      sW    '5)))~	EWQZ	EWQZ!78     r@   c                  f    ddl m} m} ddlm}m} t          ||| | |z  fft          j                  S )Nr   )r   Msun)r   rV   )	r   r   r   rX   r   rV   r
   
erfa_ufuncr   )r   r   r   rV   s       r>   ldbody_unitr      sT    00000000,,,,,,,,4"b3h8*:QRRRr@   c                      ddl m}  ddlm}m} t
          x}}t          || || |||||||||||||ft          j                  S )Nr   r   )radr   )	r   r   rX   r   r   r	   r
   r   r   )r   r   r   onerel2cs        r>   astrom_unitr      s    **************((C%#	
& 	)  r@   c                     ddl m} t          |t                                t          ||          t          t	          |          t
                    gt
          fS )Nr   r   )r   r   r   r   r   r	   )rZ   unit_bunit_obunit_scr   s        r>   
helper_ldnr     s\    ****** 	fkmm,,gr""bkk#9:: 	 r@   c                 "   t          |t                     |d         |d         u r|}nQt          fdt          |                                          D                       }|                    ||          }t          |          d g|fS )N      c              3   2   K   | ]\  }}|d k    rn|V  dS )r   N )r;   iv
unit_alongs      r>   r?   zhelper_aper.<locals>.<genexpr>  sD       
 
/3q!177ZZ
 
 
 
 
 
r@   )names)rR   r   tuple	enumeraterF   	__class__r   )rZ   r}   unit_astromr   result_unitsr   s        @r>   helper_aperr     s    +|444QJ2*$$! 
 
 
 
7@ASASAUAU7V7V
 
 
 
 
 "++L+LL*j1148+EEr@   c
                 @   ddl m}
m} t          ||          t          ||          t          ||          t          ||          t          ||
          t          ||          t          ||          t          ||          t          ||          g	t	                      fS )Nr   ri   )rX   rj   rV   r   r   )rZ   r   r}   r   r~   r   r   r   	unit_refa	unit_refbrj   rV   s               r>   helper_apior   %  s     +******* 	gv&&j&))j&))h''gq!!gv&&gv&&gv&&gv&&
 }}
 
r@   c                 &   ddl m}m}	m}
m}m} t          ||
          t          ||
          t          ||
|z            t          ||
|z            t          ||          t          ||	|z            t          |t                                g|
|
ffS Nr   )r   r   rV   rr   r   )rX   r   r   rV   rr   r   r   r   )rZ   unit_rcunit_dcunit_prr   r   r   r   r   r   rV   rr   r   s                r>   helper_atciqr   @  s    <<<<<<<<<<<<<< 	gv&&gv&&gv}--gv}--gv&&grAv&&k;==11 	 r@   c	                 \   ddl m}	m}
m}m}m} t          ||          t          ||          t          |||z            t          |||z            t          ||	          t          ||
|z            t          |t                                t          |t                                g||ffS r   )	rX   r   r   rV   rr   r   r   r   r   )rZ   r   r   r   r   r   r   r   r   r   r   rV   rr   r   s                 r>   helper_atciqnr   N  s     =<<<<<<<<<<<<< 	gv&&gv&&gv}--gv}--gv&&grAv&&k;==11fkmm,,	 		 	r@   c                     ddl m} t          ||          t          ||          t          |t                                g||ffS rb   rX   rV   r   r   rZ   r   r   r   rV   s        r>   helper_atciqz_aticqr   _  sZ    '''''' 	gv&&gv&&k;==11 		 r@   c                     ddl m} t          ||          t          ||          t          |t                                t          |t	                                g||ffS rb   )rX   rV   r   r   r   )rZ   r   r   r   r   rV   s         r>   helper_aticqnr   i  sk    '''''' 	gv&&gv&&k;==11fkmm,,	
 	 r@   c                     ddl m} t          ||          t          ||          t          |t                                g|fdz  fS )Nr   rU      r   r   s        r>   helper_atioqr   t  s[    '''''' 	gv&&gv&&k;==11 	y1}	 r@   c                     ddl m} |t          d          d t          ||          t          ||          t          |t	                                g||ffS )Nr   rU   z&argument 'type' should not have a unit)rX   rV   r   r   r   )rZ   	unit_typeunit_riunit_dir   rV   s         r>   helper_atoiqr   ~  sr    ''''''DEEE 	gv&&gv&&k;==11	
 	 r@   c                  "   i } t           | t          j        <   t          | t          j        <   t
          | t          j        <   t          | t          j        <   t          | t          j
        <   t          | t          j        <   t          | t          j        <   t          | t          j        <   t           | t          j        <   t$          | t          j        <   t$          | t          j        <   t*          | t          j        <   t.          | t          j        <   t.          | t          j        <   t4          | t          j        <   t8          | t          j        <   t<          | t          j        <   t@          | t          j!        <   tD          | t          j#        <   tD          | t          j$        <   tD          | t          j%        <   tD          | t          j&        <   tN          | t          j(        <   tR          | t          j*        <   tV          | t          j,        <   tD          | t          j-        <   tD          | t          j.        <   t^          | t          j0        <   tb          | t          j2        <   tf          | t          j4        <   tj          | t          j6        <   tn          | t          j8        <   tr          | t          j:        <   tv          | t          j<        <   tz          | t          j>        <   tz          | t          j?        <   t          | t          jA        <   t          | t          jC        <   t          | t          jE        <   | S )N)Fr]   r   r   r`   r   re   r   rg   r   r   r   r   rs   r   rw   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,   rn   r.   rp   r-   r   r/   r   r0   r   r1   r   r2   r   r3   r   r4   r5   r   aticqnr   r6   r   r7   )ERFA_HELPERSs    r>   get_erfa_helpersr     s   L#-L #-L #-L #-L "2L#3L $/L!$/L!$/L!%=L!"%=L!"#-L %<L!"%<L!"&3L"#%1L!"#-L $/L!#8L #8L #8L $9L!$/L!%1L!"&3L"#$9L!%:L!"%1L!"%1L!"#-L $/L!$/L!%1L!"&3L"#&9L"#%8L!"&3L"#%1L!"%1L!"r@   z
erfa.ufuncN)7__doc__erfar   r   r   r   r   astropy.units.corer   r   r	   astropy.units.structuredr
    r   helpersr   r   r   r   r   erfa_ufuncsr:   rR   r]   r`   re   rg   rn   rp   rs   rw   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   register_moduler   r@   r>   <module>r      s   + + 3 2 2 2 2 2 2 2 2 2 $ $ $ $ $ $ P P P P P P P P P P 3 3 3 3 3 3                   4 4 4O O O
 
 

 
 
$ $ $+ + +

 

 


 
 
&6 6 6  
P P P) ) )* * *( ( (
  . . ." " " K K K
N N N
  S S S  <  F F F  6    "        ) ) )X  lK9I J J J J Jr@   