
    R1i
                         d Z ddlmZ 	 ddlmZ ddlmZ ddlm	Z	 ddl
mZmZ eZeZd Zd	 Zd
 Z G d de      Zy#  ddlmZ Y 7xY w)z8Extract data for a specific date range from an SPK file.    )stderr)	URLopener)copy   )DAF)	S_PER_DAYT0c                 "    | t         z
  t        z  S )z9Convert a Julian Date to a number of seconds since J2000.)r	   r   )jds    V/home/cursorai/projects/iching/venv/lib/python3.12/site-packages/jplephem/excerpter.py_secondsr      s    Gy      c           	         t        |      }t        |      }| j                  }|}|j                  d       |j                          t	        d|j
                        D ]$  }	|j                  |	      }
|j                  |
       & d}d}|j                  |       |j                  |       t        |      }|j
                  x|_        |_	        |j
                  dz   dz  dz   |_
        |j                          |D ]  \  }}|d   |d   }}|j                  |dz
  |      \  }}}}	t        |      }t        t        d|	||z
  |z              }t        t        d|	||z
  |z  dz               }||k(  rv|||z  z   }||z
  }	d	}t        |j                  |||z  z   |||z  z   |z   dz
              }||||	f|d
d  |||	|z  z   f|dd  z   }|j!                  d|dd  z   ||        y )Nr   r   s                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   s                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  X)r   dafseektruncaterangefwardread_recordwriter   bwardfreewrite_file_record
read_arrayintclipr   	add_array)	input_spkoutput_filestart_jdend_jd	summariesstart_secondsend_secondsoldfndatasummary_data	name_datadnamevaluesstartendinitintlenrsizeijextraexcerpts                            r   write_excerptr?      s   X&M6"K
--C 	AFF1IJJL1cii q!	 !
  LIGGLGGIAA		!AGagggki(1,AF "fBZs!$a!=feQE
QMD0V;<=QK$.69A=>?6a&j Es~~EAIEAI%)
  feQ/q6z)*VABZ7	D48OVW5) "r   c                 .    t        | t        ||            S N)
clip_lower
clip_upper)lowerupperr/   s      r   r$   r$   C   s    eZq122r   c                   ,    e Zd Zd ZddZd Zd Zd Zy)
RemoteFilec                     t               | _        || _        |j                  d      j	                  dd      d   | _        d| _        y )N/r   r   r   )r   openerurlrstriprsplitfilenameoffset)selfrK   s     r   __init__zRemoteFile.__init__G   s:    k

3..sA6r:r   c                      |dk(  sJ || _         y )Nr   )rO   )rP   rO   whences      r   r   zRemoteFile.seekM   s    {{r   c                 x   | j                   }||z   dz
  }||kD  sJ ddj                  ||      f}t        j                  dj                  | j                  |d                | j
                  j                  j                  |       | j
                  j                  | j                        j                         }|S )Nr   Rangezbytes={}-{}zFetching {} {}
)rO   formatr   r   rN   rJ   
addheadersappendopenrK   read)rP   sizer6   r7   hr0   s         r   rZ   zRemoteFile.readQ   s    dlQU{{]))%55'..t}}adCD%%a({{)..0r   c                     | S rA    )rP   s    r   	__enter__zRemoteFile.__enter__[   s    r   c                      y rA   r^   )rP   exc_typeexc_valexc_tbs       r   __exit__zRemoteFile.__exit__^   s    r   N)r   )__name__
__module____qualname__rQ   r   rZ   r_   rd   r^   r   r   rG   rG   F   s    r   rG   N)__doc__sysr   urllib.requestr   urllibnumpyr   r   r   spkr   r	   maxrB   minrC   r   r?   r$   objectrG   r^   r   r   <module>rq      sO    > !(   

!-6^3 A! s	   = A