
    R1i                         d Z ddlZddlZddl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 ddlmZ d	Zd
 Zd Zd Zed        Zd Zd Zd Zd Zd Zd Zd Zd Z G d d      Zd Z y# e	$ r	 ddl
mZ Y Yw xY w# e	$ r	 ddlmZ Y cw xY w)zCTest whether Skyfield handles file download and file age correctly.    N)contextmanager)Thread)Queuepatch)assert_raises)apisd   #  File expires on 28 June 2021
    41317.0    1  1 1972       10
    41499.0    1  7 1972       11
c               #      K   t        j                         } 	 t        j                  |        t	        j
                  |        y # t	        j
                  |        w xY wwN)tempfilemkdtempr	   Loadershutilrmtree)paths    Z/home/cursorai/projects/iching/venv/lib/python3.12/site-packages/skyfield/tests/test_io.pyloadr      s@     Djjdds   AA AAAc                     t        | j                  |      d      5 }|j                  |       d d d        y # 1 sw Y   y xY w)Nwb)openpath_towrite)r   r   contentfs       r   	save_filer   !   s/    	dll4 $	'1	 
(	'	's	   7A c                     t        | j                  |      d      5 }|j                         cd d d        S # 1 sw Y   y xY w)Nrb)r   r   read)r   r   r   s      r   file_contentsr   %   s,    	dll4 $	'1vvx 
(	'	's   6?c              #   j    K    fd}t        d|      5  d  d d d        y # 1 sw Y   y xY ww)Nc                      t              S r   )r   )argskwr   filenamer   s     r   <lambda>zfake_download.<locals>.<lambda>+   s    9T8W#E    zskyfield.iokit.downloadr   )r   r$   r   downloads   ``` r   fake_downloadr(   )   s%     EH	((	3 
4	3	3s   3'	303c                     d}| j                  d      |k(  sJ t        t        d      5  | j                  d       d d d        y # 1 sw Y   y xY w)Nz6https://ssd.jpl.nasa.gov/ftp/eph/planets/bsp/de421.bsp	de421.bspzknow the URLzunknown.kind.of.file)	build_urlr   
ValueError)r   urls     r   test_build_urlr.   1   sA    
BC>>+&#---	z>	2-. 
3	2	2s   AAc                    t        t        j                  j                  | j                  d      d      5 }|j                  d       d d d        | j                  d      j                         }|dk(  sJ y # 1 sw Y   0xY w)Nfile.tler      example text
)r   osr   join	directoryr   r   r   r   datas      r   test_open_in_main_directoryr7   7   sb    	bggll4>>:6	=	!" 
>99Z %%'D$$$$ 
>	=s   A66A?c                    t        j                  t         j                  j                  | j                  d             t        t         j                  j                  | j                  dd      d      5 }|j                  d       d d d        | j                  d      j                         }|dk(  sJ y # 1 sw Y   0xY w)Nfolderr0   r   r1   zfolder/file.tle)r2   mkdirr   r3   r4   r   r   r   r5   s      r   test_open_in_subdirectoryr;   =   s    HHRWW\\$..(34	bggll4>>8Z@$	G1	!" 
H99&',,.D$$$$ 
H	Gs   3B44B=c                     t        | dt              5   | d      }d d d        t        | d      t        k(  sJ t        d   d         g dk(  sJ y # 1 sw Y   7xY w)NLeap_Second.dat   )
   r?   r?      )r(   leap_second_textr   list)r   r6   s     r   !test_missing_file_gets_downloadedrC   D   s^    	t.0@	A%& 
B015EEEEQ
//// 
B	As   	AAc                     | j                         }t        |j                  ddd      j                  dz
        dk  sJ y )Ni  r>   gy4ƿg:0yE>)	timescaleabsutcdut1)r   tss     r   ,test_builtin_timescale_uses_recent_IERS_datarJ   J   s9    		BrvvdAq!&&*56===r&   c                 <   t        | dd       t        | dd       t        | dt               t        | dd       | j                  d	      }t        |j	                  d
dd      j
                  dz
        dk  sJ |j                  ddd      }|j                  dk(  sJ y )Nzdeltat.datas9    1973  2  1  111.1
 1973  3  1  222.2
 1973  4  1  333.3
zdeltat.predss      MJD        YEAR    TT-UT Pred  UT1-UTC Pred  ERROR
   58484.000  2019.00   69.34      -0.152       0.117
   58575.000  2019.25   69.48      -0.295       0.162
r=   finals2000A.all   invalid dataFbuiltini     r>   gfffffk@g{Gz?i  )i           ;   2   )r   rA   rE   rF   rG   delta_ttai)r   rI   ts      r   -test_non_builtin_timescale_prefers_USNO_filesrY   O   s    dM&' dNIJ d%'78d%7		&BrvvdAq!))E12T999 	tQA55....r&   c                     t        | dd       t        t              5  | j                  d       d d d        y # 1 sw Y   y xY w)NrL   rM   FrN   )r   r   
IndexErrorrE   )r   s    r   8test_non_builtin_timescale_tries_to_load_finals2000A_allr\   c   s1    d%7	z	"u% 
#	"	"s	   9Ac                     t        j                  d      }|j                  sJ |j                  sJ |j	                          |j                  g k(  sJ |j                  t               k(  sJ y )Nr*   )r	   r   segmentscodescloseset)r   ephs     r   test_close_of_ephemerisrc   h   sW    
((;
C<<<999IIK<<299r&   c                       e Zd Zd Zd Zd Zy)FakeConnectionc                 N    t               | _        t               | _        i | _        y r   )r   controlblocksheaders)selfs    r   __init__zFakeConnection.__init__s   s    wgr&   c                     | S r    )rj   r"   r#   s      r   __call__zFakeConnection.__call__x   s    r&   c                 l    | j                   j                  d       | j                  j                         S )NzRead requested)rg   putrh   get)rj   	blocksizes     r   r   zFakeConnection.read{   s&    )*{{  r&   N)__name__
__module____qualname__rk   rn   r   rm   r&   r   re   re   r   s    
!r&   re   c                    d}d}t               }t               }t        | d      }t        | d      }d|_        d|_        t        d|      5  |j	                          |j
                  j                          d d d        t        d|      5  |j	                          |j
                  j                          d d d        t        t        j                  | j                              ddgk(  sJ |j                  j                  |       |j                  j                  |       |j                          t        t        j                  | j                              d	dgk(  sJ |j                  j                  |       |j                  j                  |       |j                          t        t        j                  | j                              d	gk(  sJ y # 1 sw Y   bxY w# 1 sw Y   0xY w)
Nr&   s    1973  2  1  43.4724
)r=   )targetr"   Tzskyfield.iokit.urlopenzLeap_Second.dat.downloadzLeap_Second.dat.download2r=   )re   r   daemonr   startrg   rq   sortedr2   listdirr4   rh   rp   r3   )r   eofr6   c1c2t1t2s          r   test_concurrent_downloadsr      s    C$D		B		B	t"6	7B	t"6	7BBIBI	'	,




 
- 
'	,




 
- "**T^^,-"$?2    IIMM$IIMM#GGI"**T^^,-62    IIMM$IIMM#GGI"**T^^,-2C1DDDD' 
-	, 
-	,s   +G+G%G"%G/)!__doc__r2   r   r   
contextlibr   	threadingr   r   ImportErrorqueueunittest.mockr   mockassayr   skyfieldr	   rA   r   r   r   r(   r.   r7   r;   rC   rJ   rY   r\   rc   re   r   rm   r&   r   <module>r      s    I 	   % #   +   /%%0>
/(&
! ! Ek    s"   A. A? .A<;A<?BB