
    +d                        d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZm	Z	m
Z
 d dlmZ d dlmZmZ d dlmZ d dlmZmZ d dlmZ e j                            e          ZdZd	Zea G d
 de          Z e
de           ej        d             Z ddZ!d Z" ej        d          d             Z# ej        d          d             Z$ ej        d          d             Z% ej        d          d             Z& ej        d          d             Z'ej        d             Z(ej        d             Z)ej        d             Z*dS )    N)configopen_catalogregister_driver)persist)
DataSourceSchema)copy_test_file)PY2ex)make_path_posixi8  iA  c                   ,     e Zd ZdZdZ fdZd Z xZS )
TestSourcetestpythonc                 V    || _         t                                                       d S N)test_kwargssuper__init__)selfkwargs	__class__s     /lib/python3.11/site-packages/intake/conftest.pyr   zTestSource.__init__$   s'    !    c                     t                      S r   )r   )r   s    r   _get_schemazTestSource._get_schema(   s    xxr   )__name__
__module____qualname__name	containerr   r   __classcell__)r   s   @r   r   r       sQ        DI          r   r   r   c              #   z  K   d}t          j        |          }t           j                            | d          }|t           j        |<   t          j                    |k    sJ |V  t
          j                                         |r|t           j        |<   nt           j        |= t          j                    |k    sJ d S )NINTAKE_CONF_FILEztest_config.yml)	osgetenvpathjoinenvironr   cfileconfreset)tmp_pathkeyoriginaltemp_config_paths       r   tmp_config_pathr1   /   s      
Cy~~Hw||H.?@@&BJsO<>>-----

K "
3JsO<>>-------r   c                 x    	 t          j        |           }n# t          $ r}|rY d }~dS |d }~ww xY w|j        dv S )NF)   i  )requestsget	Exceptionstatus_code)urlswallow_exceptionheadres        r   ping_serverr=   ?   s`    L    	55555G	 =J&&s    
0++0c                  N    t           } | t          k    rt          a n
t           dz  a | S )N   )PORTMAX_PORTMIN_PORT)ports    r   	pick_portrD   K   s)    Dx 	Kr   module)scopec              #     K   t          j                                                     dt          j        d<   | j        j        }t          |t                    rd |D             }nGt          |t                    r0|
                    d          s|
                    d          s|dz   }n|}t          | j        dd           }t          t          j                  }d|d	<   |||d
<   t                      }t          ddddt          |          ddg}t          |t                    r|                    |           n|                    |           	 t#          j        ||          }d|z  }d}		 t'          ||	dk              s.t)          j        d           |	dz  }	t'          ||	dk              .n0# t,          $ r# t/          |                                            w xY w|	dk    s
J d            d|z  V  |r<	 |                    d
d            t          j        |           n# t,          $ r Y nw xY w|                                 t)          j        d           |                                 d S # |r<	 |                    d
d            t          j        |           n# t,          $ r Y nw xY w|                                 t)          j        d           |                                 w xY w)NtrueINTAKE_DEBUGc                     g | ]}|d z   S )/* ).0ps     r   
<listcomp>z!intake_server.<locals>.<listcomp>]   s    ///QD///r   z.ymlz.yamlrK   TEST_SERVER_CONFserverINTAKE_TESTr$   -mzintake.cli.serverz--sys-exit-on-sigtermz--portz--ttl1)envzhttp://localhost:%d/v1/infoi,  r?   )r9   皙?r   zServer never appearedzintake://localhost:%d)r   PersistStoreclearr%   r)   rE   TEST_CATALOG_PATH
isinstanceliststrendswithgetattrdictrD   r   extendappend
subprocessPopenr=   timesleepr6   printcommunicatepopremove	terminatekill)
requestr'   catalog_pathserver_confrU   rC   cmdrN   r8   retriess
             r   intake_serverrq   V   s-       """!'BJ~>+D$ //$///	D#		 t}}V'<'< T]]SZE[E[ d{'.*<dCCK rz

C!C ."-;;Dt(*A8SQUYYX_ad
eC,%% !

<    

<   Sc***+d2 	!#'A+GGG 
31 "#'A+GGG   	 	 	!--//"""	 {333333%,,,, 	*D111	+&&&&   	
1	  	*D111	+&&&&   	
1	s\   I7 0AF4 3I7 4-G!!I7 >*H) )
H65H67K3;*J&%K3&
J30K32J33A K3c               #   `  K   t          t                                } t          rddd| g}nddd| g}t          j        |t
          j                            t          dd                    }d	                    |           }d	}	 	 t          j        |           n:# t          $ r, t          j        d           |dz  }|dk    s
J d            Y nw xY wP	 |V  |                                 |                                 d S # |                                 |                                 w xY w)Nr   rS   SimpleHTTPServerzhttp.servercatalogtests)cwdzhttp://localhost:{}/   TrV   r   ztimeout waiting for http server)r\   rD   r
   rb   rc   r%   r'   r(   hereformatr4   r5   r6   rd   re   rj   rg   )port_as_strro   rN   r8   timeouts        r   http_serverr|      sD     ikk""K
 ;1;?}k:"',,tY"H"HIIIA
 
'
'
4
4CGB	BL 	B 	B 	BJsOOOsNGQ;AA AAAAAA	B	B					 	
	s   B 3CCD *D-functionc               #      K   dd l } dd l}t          t           |j                                        }	 |V  |                     |           d S # |                     |           w xY w)Nr   )shutiltempfiler   r\   mkdtemprmtree)r   r   ds      r   tempdirr      sw      MMMOOO,H,..//00Aaas   A A'c              #     K   dd l }ddlm} |j        j                                        }|j        j        }| |j        _        |j        j                            t          t          |                     ddd           |j        j        
                                 |                    t          j                            | d                     	 d V  ||j        _        |j        j                            |           |j                                         d S # ||j        _        |j        j                            |           |j                                         w xY w)Nr   )storeF)	cache_dircache_download_progresscache_disabledr   )intakeintake.container.persistr   r   r+   copyconfdirupdater   r\   saver   r%   r'   r(   	save_conf)r   r   r   oldolddirs        r   
temp_cacher      sU     MMM......
-

!
!
#
#C]"F#FM
MOCLL,I,Ifk  @E  F  F  G  G  G
M	NN27<<33444" &!!#&&&!!!!! !'!!#&&&!!!!s   D AE"c                     dd l }t          j                                        }|j        j        |d<   |j        j        d         |d<   |S )Nr   INTAKE_CONF_DIRr   INTAKE_CACHE_DIR)r   r%   r)   r   r   r   r+   )r   r   r   rU   s       r   rU   rU      sF    MMM
*//

C#]2C$m0=CJr   c                      t          j                    5 } t          j        | d          }t	          d|          }t          |          cd d d            S # 1 swxY w Y   d S )Nr   catalog_inherit_params.ymlr   TemporaryDirectory	posixpathr(   r	   r   tmp_dirr-   target_catalogs      r   inherit_params_catr      s    		$	&	& ,'>'844'(DhOON++, , , , , , , , , , , , , , , , , ,s   4AAAc                      t          j                    5 } t          j        | d          }t	          d|           t	          d|           t          |dz             cd d d            S # 1 swxY w Y   d S )Nr   r   catalog_nested_sub.ymlz/*.ymlr   )r   r-   s     r   inherit_params_multiple_catsr      s    		$	&	& 1'>'8443X>>>/:::Hx/00	1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1s   AA((A,/A,c                      t          j                    5 } t          j        | d          }t	          d|          }t	          d|           t          |          cd d d            S # 1 swxY w Y   d S )Nr   r   r   r   r   s      r   inherit_params_subcatr      s    		$	&	& ,'>'844'(DhOO/:::N++	, , , , , , , , , , , , , , , , , ,s   AA%%A),A)r   )+r%   r   rb   r   rd   pytestr4   r   r   r   r   intake.containerr   intake.source.baser   r   intake.tests.test_utilsr	   intake.util_testsr
   r   intake.utilsr   r'   dirname__file__rx   rB   rA   r@   r   fixturer1   r=   rD   rq   r|   r   r   rU   r   r   r   rL   r   r   <module>r      s   
			             8 8 8 8 8 8 8 8 8 8 $ $ $ $ $ $ 1 1 1 1 1 1 1 1 2 2 2 2 2 2 % % % % % % % % ( ( ( ( ( (	wx   	 	 	 	 	 	 	 	 
 # # # . . .	' 	' 	' 	'   h3 3  3l h   0 j!!!  "! j!!!" " "!"$ j!!!  "! , , , 1 1 1 , , , , ,r   