U
    e»{j64  ã                   @   s‚  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
d„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Z d d!„ Z!d"d#„ Z"d$d%„ Z#d&d'„ Z$d(d)„ Z%d*d+„ Z&d,d-„ Z'd.d/„ Z(d0d1„ Z)d2d3„ Z*d4d5„ Z+d6d7„ Z,d8d9„ Z-d:d;„ Z.d<d=„ Z/d>d?„ Z0d@dA„ Z1dBdC„ Z2dDdE„ Z3dFdG„ Z4dHdI„ Z5e 6dJee5¡ dKS )Lz%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                 C   sT   |j }|rDt| tƒoBt| ƒt|ƒkoBtdd„ t|  ¡ | ¡ ƒD ƒƒS t| tƒ S d S )Nc                 s   s    | ]\}}t ||d  ƒV  qdS )r   N)Úhas_matching_structure)Ú.0ÚuZdf_v© r:   úa/var/www/html/bwave/python/venv/lib/python3.8/site-packages/astropy/units/quantity_helper/erfa.pyÚ	<genexpr>"   s   ÿz)has_matching_structure.<locals>.<genexpr>)ÚfieldsÚ
isinstancer	   ÚlenÚallÚzipÚvalues)ÚunitÚdtypeZdtype_fieldsr:   r:   r;   r7      s    
ÿþý	r7   c                 C   s:   t | |ƒs6tdtdtdi |d¡}t|› d|› d�ƒ‚d S )NÚpvZldbodyZastromÚfunctionz! input needs unit matching dtype=Ú.)r7   r   r   r   Úgetr   )rC   rD   Úmsgr:   r:   r;   Úcheck_structured_unit+   s    
 ÿrJ   c                 C   sR   ddl m} zt||ƒt||ƒgtfW S  tk
rL   td| j› d�ƒ‚Y nX d S ©Nr   ©ÚradianúCan only apply 'z)' function to quantities with angle units)Úastropy.units.sirM   r   r   r   r   Ú__name__)ÚfÚunit1Úunit2rM   r:   r:   r;   Ú
helper_s2c3   s    þýÿrT   c                 C   sT   ddl m} zt||ƒt||ƒd g|fW S  tk
rN   td| j› d�ƒ‚Y nX d S rK   )rO   rM   r   r   r   rP   )rQ   rR   rS   Úunit3rM   r:   r:   r;   Ú
helper_s2pA   s    ÿrV   c                 C   s   ddl m} d g||ffS ©Nr   rL   ©rO   rM   ©rQ   rR   rM   r:   r:   r;   Ú
helper_c2sL   s    rZ   c                 C   s   ddl m} d g|||ffS rW   rX   rY   r:   r:   r;   Ú
helper_p2sR   s    r[   c                 C   sh   ddl m}m} |d k	r tdƒ‚zd t||ƒg|||d ffW S  tk
rb   td| j› d�ƒ‚Y nX d S )Nr   ©ÚmrM   úellipsoid cannot be a quantity.rN   z*' function to quantities with length units©rO   r]   rM   r   r   r   rP   )rQ   ÚnounitrR   r]   rM   r:   r:   r;   Úhelper_gc2gdX   s    ÿra   c                 C   st   ddl m}m} |d k	r tdƒ‚z(d t||ƒt||ƒt||ƒg|d ffW S  tk
rn   td| j› d�ƒ‚Y nX d S )Nr   r\   r^   rN   z>' function to lon, lat with angle and height with length unitsr_   )rQ   r`   rR   rS   rU   r]   rM   r:   r:   r;   Úhelper_gd2gce   s    üûÿrb   c                 C   s4   ddl m} t|tƒrtdƒ‚d gt||| fƒfS )Nr   )Úsz*p vector unit cannot be a structured unit.)rO   rc   r>   r	   r   )rQ   rR   rc   r:   r:   r;   Úhelper_p2pvx   s    
rd   c                 C   s   t |tƒ d g|d fS )Nr   ©rJ   r   ©rQ   rR   r:   r:   r;   Úhelper_pv2p€   s    
rg   c                 C   sH   ddl m} t|tƒ ||d  |d  }d g|||d |||d ffS )Nr   rL   r
   )rO   rM   rJ   r   )rQ   Úunit_pvrM   Zang_unitr:   r:   r;   Úhelper_pv2s…   s    
ri   c           	      C   sP   ddl m} || }t||ƒt||ƒd t||| ƒt||| ƒd gt||fƒfS rW   )rO   rM   r   r	   )	rQ   Ú
unit_thetaÚunit_phiZunit_rZunit_tdÚunit_pdZunit_rdrM   Z	time_unitr:   r:   r;   Úhelper_s2pv�   s    ú
ùrm   c                 C   sn   t |tƒ t |tƒ t|d |d  |d |d  fƒ}t|t|d |d |d  |d  fƒƒ}d |g|fS ©Nr   r
   )rJ   r   r	   r   )rQ   rR   rS   Úresult_unitÚ	converterr:   r:   r;   Úhelper_pv_multiplication›   s    

$ "ÿrq   c                 C   s    t |tƒ d g|d |d ffS rn   re   rf   r:   r:   r;   Ú
helper_pvm¥   s    
rr   c           	      C   sb   ddl m} ddlm}m}m}m}m}m} t	|t
||| fƒƒg|||| || ||| d ffS ©Nr   ©ÚAU)ÚarcsecÚdayÚkmrM   rc   Úyear©Úastropy.units.astrophysru   rO   rv   rw   rx   rM   rc   ry   r   r	   )	rQ   rR   ru   rv   rw   rx   rM   rc   ry   r:   r:   r;   Úhelper_pvstarª   s     ùr|   c              	   C   s€   ddl m} ddlm}m}	m}
m}m}m} t	||ƒt	||ƒt	||| ƒt	||| ƒt	||ƒt	||
| ƒgt
|||	 fƒd ffS rs   rz   )rQ   Zunit_raZunit_decZunit_pmrZunit_pmdÚunit_pxÚunit_rvru   rv   rw   rx   rM   rc   ry   r:   r:   r;   Úhelper_starpv¹   s     úùr   c              	   C   s`   ddl m}m}	m}
 t||	ƒt||	ƒt||ƒt||	ƒt||	ƒt||	ƒt||	ƒgt|||
 fƒfS )Nr   )r]   rM   rc   )rO   r]   rM   rc   r   r	   )rQ   Ú
unit_elongrk   Úunit_hmÚunit_xpÚunit_ypÚunit_sprj   r]   rM   rc   r:   r:   r;   Úhelper_pvtobÇ   s    ùør…   c                 C   s(   t |tƒ t||d |d  ƒd g|fS rn   ©rJ   r   r   ©rQ   Zunit_trh   r:   r:   r;   Ú
helper_pvu×   s    
rˆ   c                 C   s,   t |tƒ t||d |d  ƒd g|d fS rn   r†   r‡   r:   r:   r;   Úhelper_pvupÜ   s    
r‰   c                 C   s8   t |tƒ d d d gtt|ƒ|d  t|ƒ|d  fƒfS rn   )rJ   r   r	   r   )rQ   rR   rS   rh   r:   r:   r;   Úhelper_s2xpvá   s    

ÿrŠ   c                  C   s:   ddl m} m} ddlm}m} t||| | | fftjƒS )Nr   )ru   ÚMsun)rw   rM   )	r{   ru   r‹   rO   rw   rM   r	   Ú
erfa_ufuncr   )ru   r‹   rw   rM   r:   r:   r;   Úldbody_unitè   s    r�   c                  C   sR   ddl m}  ddlm}m} t }}t|| || |||||||||||||ftjƒS )Nr   rt   )Úradry   )	r{   ru   rO   rŽ   ry   r   r	   rŒ   r   )ru   rŽ   ry   ÚoneZrel2cr:   r:   r;   Úastrom_unitï   s0    ïìr�   c                 C   s2   ddl m} t|tƒ ƒt||ƒtt|ƒtƒgtfS )Nr   rt   )r{   ru   r   r�   r   r   )rQ   Úunit_bZunit_obZunit_scru   r:   r:   r;   Ú
helper_ldn  s    
ýür’   c                    sb   t |tƒ |d ‰ |d ˆ kr$|}n,t‡ fdd„t| ¡ ƒD ƒƒ}|j||d�}t|ˆ ƒd g|fS )Né   é   c                 3   s"   | ]\}}|d krˆ n|V  qdS )r”   Nr:   )r8   ÚiÚv©Z
unit_alongr:   r;   r<     s    zhelper_aper.<locals>.<genexpr>)Únames)rJ   r   ÚtupleÚ	enumeraterB   Ú	__class__r   )rQ   rj   Úunit_astromro   Zresult_unitsr:   r—   r;   Úhelper_aper  s    

ÿr�   c
                 C   sb   ddl m}
m} t||ƒt||ƒt||ƒt||ƒt||
ƒt||ƒt||ƒt||ƒt||ƒg	tƒ fS )Nr   r\   )rO   r]   rM   r   r�   )rQ   r„   rj   r€   rk   r�   r‚   rƒ   Z	unit_refaZ	unit_refbr]   rM   r:   r:   r;   Úhelper_apio%  s    ÷
örž   c              	   C   sn   ddl m}m}	m}
m}m} t||
ƒt||
ƒt||
| ƒt||
| ƒt||ƒt||	| ƒt|tƒ ƒg|
|
ffS ©Nr   )rv   rx   rM   rc   ry   )rO   rv   rx   rM   rc   ry   r   r�   )rQ   Úunit_rcÚunit_dcÚunit_prrl   r}   r~   rœ   rv   rx   rM   rc   ry   r:   r:   r;   Úhelper_atciq@  s    
ùør£   c	              
   C   sx   ddl m}	m}
m}m}m} t||ƒt||ƒt||| ƒt||| ƒt||	ƒt||
| ƒt|tƒ ƒt|tƒ ƒg||ffS rŸ   )	rO   rv   rx   rM   rc   ry   r   r�   r�   )rQ   r    r¡   r¢   rl   r}   r~   rœ   r‘   rv   rx   rM   rc   ry   r:   r:   r;   Úhelper_atciqnN  s    

ø	÷r¤   c                 C   s2   ddl m} t||ƒt||ƒt|tƒ ƒg||ffS rW   ©rO   rM   r   r�   ©rQ   r    r¡   rœ   rM   r:   r:   r;   Úhelper_atciqz_aticq_  s    
ýür§   c                 C   s<   ddl m} t||ƒt||ƒt|tƒ ƒt|tƒ ƒg||ffS rW   )rO   rM   r   r�   r�   )rQ   r    r¡   rœ   r‘   rM   r:   r:   r;   Úhelper_aticqni  s    

üûr¨   c                 C   s4   ddl m} t||ƒt||ƒt|tƒ ƒg|fd fS )Nr   rL   é   r¥   r¦   r:   r:   r;   Úhelper_atioqt  s    
ýürª   c                 C   sD   ddl m} |d k	rtdƒ‚d t||ƒt||ƒt|tƒ ƒg||ffS )Nr   rL   z&argument 'type' should not have a unit)rO   rM   r   r   r�   )rQ   Z	unit_typeZunit_riZunit_dirœ   rM   r:   r:   r;   Úhelper_atoiq~  s    
üûr«   c                  C   sŽ  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< 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j0< t1| tj2< t3| tj4< t5| tj6< t7| tj8< t9| tj:< t;| tj<< t=| tj>< t=| tj?< t@| tjA< tB| tjC< tD| tjE< | S )N)FrT   rŒ   r   rV   r   rZ   r   r[   r   r   r   r   rd   r   rg   r   ri   r   rq   r   r%   rr   r   r   r   r    r|   r!   r…   r"   rˆ   r#   r‰   r$   r   r   r   r   r&   rm   r'   rŠ   r(   r   r)   r*   r+   ra   r-   rb   r,   r’   r.   r�   r/   rž   r0   r£   r1   r¤   r2   r§   r3   r4   r¨   Zaticqnrª   r5   r«   r6   )ZERFA_HELPERSr:   r:   r;   Úget_erfa_helpersŒ  sR    






































r¬   z
erfa.ufuncN)7Ú__doc__Zerfar   r   r   r   rŒ   Zastropy.units.corer   r   r   Zastropy.units.structuredr	   Ú r   Zhelpersr   r   r   r   r   Zerfa_ufuncsr7   rJ   rT   rV   rZ   r[   ra   rb   rd   rg   ri   rm   rq   rr   r|   r   r…   rˆ   r‰   rŠ   r�   r�   r’   r�   rž   r£   r¤   r§   r¨   rª   r«   r¬   Zregister_moduler:   r:   r:   r;   Ú<module>   sP   



,