
    R1i                     x    d Z ddlmZ ddlZddlZddlmZ ddlmZm	Z	 ddl
mZ d Zd	 Zd
 Zd Zd Zd ZddZy)z&The `python -m jplephem` command line.    )print_functionN   )DAF)
RemoteFilewrite_excerpt)SPKc                    t        j                  dd      }|j                         }|j                  dd      }|j	                  t
               |j                  dd	       |j                  d
d      }|j	                  t               |j                  dd	       |j                  dd      }|j	                  t               |j                  dd       |j                  ddt               |j                  ddt               |j                  dd       |j                  dd       |j                  dd      }|j	                  t               |j                  dd       |j                  |       } t        | dd       }|%|j                          t        j                  d       t!         ||             }|r%|d   j#                  d      s|j%                  d        dj'                  |      S )!Nzpython -m jplephemzDescribe an SPK kernel)progdescriptioncommentzPrint a file's comment blocks)help)funcpathzPath to a SPICE filedafz%List a file's raw segment descriptorsexcerptz0Create an SPK covering a narrower range of datesz	--targetsz"Comma-separated targets to include
start_datezStart date yyyy/mm/dd)r   typeend_datezEnd date yyyy/mm/ddpath_or_urlzLocal filename or remote URLoutput_pathzOutput file to createspkz List the segments in an SPK filez Path to a .bsp SPICE kernel filer      
 )argparseArgumentParseradd_subparsers
add_parserset_defaultsr   add_argumentdaf_segmentsr   
parse_datespk_segments
parse_argsgetattr
print_helpsysexitlistendswithappendjoin)argsparser
subparserspr   liness         X/home/cursorai/projects/iching/venv/lib/python3.12/site-packages/jplephem/commandline.pymainr4      s   $$!,F &&(J, 	 	A NNN NN6 6N74 	 	A NNN%NN6 6N7? 	 	A NNN NN;%INJNN<&=JNONN:$9
NKNN='ENFNN='>N?/ 	 	A NNN%NN6 BNCT"D4&D|dEU2Y''-R99U    c              #      K   t        | j                  d      5 }t        |      }|j                          d d d        y # 1 sw Y   y xY wwNrb)openr   r   comments)r.   fds      r3   r   r   =   s6     	dii	!Fjjl 
		s   AA 	A A	Ac           
   #   <  K   t        | j                  d      5 }t        |      }t        |j	                               D ]E  \  }\  }}dj                  |dz   |j                  d      dj                  d |D                     G 	 d d d        y # 1 sw Y   y xY ww)Nr8   z{:2d} {} {}r   zlatin-1 c              3   2   K   | ]  }t        |        y w)N)repr).0vs     r3   	<genexpr>zdaf_segments.<locals>.<genexpr>G   s     /HAQs   )r9   r   r   	enumerate	summariesformatdecoder-   )r.   r;   r<   inamevaluess         r3   r"   r"   B   s     	dii	!F!*1;;=!9A~f&&q1udkk).D'*xx/H/H'HJ J ": 
		s   BA-B	BBBc           	   #     K   | j                   j                  d      r| j                   }t        |      }n| j                   }t        |d      }|5  t	        t        |            }|j                  j                         }| j                  rct        | j                  j                  d            }t        ||j                        D cg c]  \  }}t        |j                        |v r|  }}}t        | j                  d      5 }	t!        ||	| j"                  | j$                  |       d d d        d d d        dj'                  | j                         t        | j                  d      5 }t        t	        t        |                   d d d        y c c}}w # 1 sw Y   sxY w# 1 sw Y   wxY w# 1 sw Y   y xY ww)N)zhttp://zhttps://r8   ,zw+bz7
{!r} written successfully with the following contents
)r   
startswithr   r9   r   r   r   rE   targetssetsplitzipsegmentsstrtargetr   r   r   r   rF   )
r.   urlr;   r   r   rE   desired_targetssummarysegmentoutput_files
             r3   r   r   I   sn    ""#:;sOt	
#a&kGG%%'	<<!$,,"4"4S"9:O03Is||0L0L,GWw~~&/9 0L  
 $""E*k#{DOOT]]#% + 
 F
L
L  
d	%#c!f+ 
&	%
 +* 
$ 
&	%sa   AF>A8F&#F+F&$F(F&0;F>+ F2	F>F&F#	F&&F/+F>2F;7F>c              #      K   t        | j                  d      5 }t        t        t	        |                   d d d        y # 1 sw Y   y xY wwr7   )r9   r   rS   r   r   )r.   r;   s     r3   r$   r$   f   s4     	dii	!#c!f+ 
		s   A A	AAAc                 0   	 | j                  d      D cg c]  }t        |       }}t        |      dk  st        |      dkD  rt        j
                  } |d      t        | }t        dj                  | |             |S c c}w # t        $ r g }Y kw xY w)N/r      z2specify each date as YYYY or YYYY/MM or YYYY/MM/DDzDate {:10} = JD {})	rP   int
ValueErrorlenr   ArgumentTypeError
julian_dayprintrF   )sr;   fieldsEjds        r3   r#   r#   j   s    "#''#,/,Q#a&,/ 6{Q#f+/&&DEE	V	B	

%
%a
,-I 0 s!   B BB B BBc                 |    |dk  }|d| dz   |z
  z  dz  z   d|dz
  |dz  z   z  dz  z   d| dz   |z
  d	z  z  dz  z
  d
z
  S )zCGiven a proleptic Gregorian calendar date, return a Julian day int.r]   i  i     io  r      i$  d   iK}   )yearmonthdayjanfebs       r3   rb   rb   v   sy    QYFdTkF*+q01UQY",-34 D4K&(S01Q67 	 r5   )r   r   )__doc__
__future__r   r   r(   r   r   	excerpterr   r   r   r   r4   r   r"   r   r$   r#   rb   rl   r5   r3   <module>rt      s?    , %  
  0 0d
J:
r5   