
    j9'                        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Zd dl	Z
ddlmZmZ d dlmZ e
j                   j#                  dd       e
j                   j#                  dd	       e
j                   j#                  d
de
j$                  j&                         e
j                   j)                  ej*                  j-                  dd             dej*                  d<   ej.                  dk(  r\ej*                  j-                  dd      @d dlmZ 	 ej4                  j7                   ej8                  d      d      ej*                  d<   d Z G d d      Z d Z!d Z"ejF                  d        Z$ ejF                  d      d        Z% ejF                  d       d!        Z& ejF                  d      d"        Z' ejF                  d      d#        Z(d.d$Z) ejF                  d      d%        Z* ejF                  d      d&        Z+ ejF                  d      d'        Z, ejF                  d(d)gd*      d+        Z- ejF                  d      d,        Z. ejF                  d      d-        Z/y# e$ r  ed       Y 7w xY w)/    N   )groupsdefaultsfind_free_portcii  )max_examplesdev2   debug
   )r	   	verbosityHYPOTHESIS_PROFILEz	/dev/nullAWS_CONFIG_FILEwin32TZDIR)	resourcestzdatazoneinfozCPackage "tzdata" not found. Not setting TZDIR environment variable.c           	          dd}t         D ]M  } |d| t        |         }| j                  d| d|d| d       | j                  d| dd	d
| d       O y )Nc                     t         j                  j                  | j                               }|s|S |j	                         }|dv ry|dv ryt        | j                          d| d      )N>   1yonyestrueT>   0nnoofffalseF=z is not parsable as boolean)osenvirongetupperlower
ValueError)namedefaultvalues      =/tmp/pip-target-jj7clzyk/lib/python/pyarrow/tests/conftest.pybool_envz"pytest_addoption.<locals>.bool_envB   sd    

tzz|,N3366

~Qug5PQRR    PYARROW_TEST_	--enable-
store_truezEnable the z test group)actionr*   help
--disable-FzDisable the N)r   r   	addoption)parserr-   groupr*   s       r,   pytest_addoptionr9   @   s    
S  C]5'2HUOD9UG, ,g!,UG;? 	 	B 	:eW- ,e!-eWK@ 	 	CCr.   c                       e Zd Zd Zd Zd Zy)PyArrowConfigc                     i | _         y r5   )
is_enabled)selfs    r,   __init__zPyArrowConfig.__init__Y   s	    r.   c                 P    |j                   }|t        v r| j                  |       y y r5   )r)   r   requires)r>   markr8   s      r,   
apply_markzPyArrowConfig.apply_mark\   s#    		F?MM%  r.   c                 T    | j                   |   st        j                  | d       y y )Nz NOT enabled)r=   pytestskip)r>   r8   s     r,   rA   zPyArrowConfig.requiresa   s&    u%KK5'./ &r.   N)__name__
__module____qualname__r?   rC   rA    r.   r,   r;   r;   X   s    !
0r.   r;   c                     t               | _        t        D ]\  }| j                  d|       d| }d| }| j	                  |      xr | j	                  |       }|| j                  j
                  |<   ^ y )Nmarkersr0   r4   )r;   pyarrowr   addinivalue_line	getoptionr=   )configrB   enable_flagdisable_flagr=   s        r,   pytest_configurerS   f   s    "_FN 
5t	
 "$(#D6*&&{3 5&&|495
*4!!$'
5r.   c                 x    | j                         D ]'  }| j                  j                  j                  |       ) y r5   )iter_markersrP   rM   rC   )itemrB   s     r,   pytest_runtest_setuprW   w   s2    !!# -&&t,-r.   c                 @    t        j                  | j                        S r5   )pathlibPathstrpath)tmpdirs    r,   tempdirr]   }   s     <<''r.   session)scopec                  N    t        j                  t              j                  dz  S )Ndata)rY   rZ   __file__parentrJ   r.   r,   base_datadirrd      s    <<!((611r.   T)autousec                 (    | j                  dd       y)zStop the AWS SDK from trying to contact the EC2 metadata server.

    Otherwise, this causes a 5 second delay in tests that exercise the
    S3 filesystem.
    AWS_EC2_METADATA_DISABLEDr   N)setenv)monkeypatchs    r,   disable_aws_metadatarj      s     2F;r.   c                      t         j                  j                  dd      } t        t         j                  j                  dd            }t         j                  j                  dd      }| ||fS )NARROW_HDFS_TEST_HOSTr*   ARROW_HDFS_TEST_PORTr   ARROW_HDFS_TEST_USERhdfs)r#   r$   r%   int)hostportusers      r,   hdfs_connectionrt      sS    ::>>0)<Drzz~~4a89D::>>0&9Dtr.   c                  0    dt               }} d\  }}| |||fS )N	127.0.0.1)arrowapachearrowr   )rq   rr   
access_key
secret_keys       r,   s3_connectionr{      s'    n.$D3J
z:--r.   c                       fd}|S )aP  
    Retry decorator

    Parameters
    ----------
    attempts : int, default 3
        The number of attempts.
    delay : float, default 1
        Initial delay in seconds.
    max_delay : float, optional
        The max delay between attempts.
    backoff : float, default 1
        The multiplier to delay after each attempt.
    c                 L     t        j                          fd       }|S )Nc                      }}|dkD  r		  	| i |S # t         $ r9}|dz  }|}|z  }
rt        |
      }t        j                  |       Y d }~nd }~ww xY w|dkD  rVN)Nr      )	Exceptionmintimesleep)argskwargsremaining_attempts
curr_delayerrlast_exceptionattemptsbackoffdelayfunc	max_delays         r,   wrapperz(retry.<locals>.decorate.<locals>.wrapper   s    !)J$q(+000 !  ! +&!+&%(N')J %(Y%?
JJz**+ %q(s    	A/AA)	functoolswraps)r   r   r   r   r   r   s   ` r,   decoratezretry.<locals>.decorate   s%    			! 
	! r.   rJ   )r   r   r   r   r   s   ```` r,   retryr      s    " Or.   c              #     K   t        ddd      d        }|j                         }| \  }}}}| d| }t        j                  j	                         }	|	j                  ||d       dd	d
dd||g}
d }	 t        j                  |
|	      } ||       | ||d |!|j                          |j                          y y # t        $ r t        j                  d       Y Dw xY w# |!|j                          |j                          w w xY ww)N   r   r   )r   r   r   c                 t    t         j                  j                  d|  d      }|j                         dk(  sJ y )Nzhttp://z/minio/health/live   )urllibrequesturlopengetcode)addressresps     r,   minio_server_health_checkz,s3_server.<locals>.minio_server_health_check   s4    ~~%%y8J&KL||~$$$r.   :)MINIO_ACCESS_KEYMINIO_SECRET_KEYminioz--compatserverz--quietz	--addressenv
connectionprocessr]   z!`minio` command cannot be located)r   getbasetempr#   r$   copyupdate
subprocessPopenOSErrorrE   rF   killwait)r{   tmpdir_factoryr   r\   rq   rr   ry   rz   r   r   r   procs               r,   	s3_serverr      s&    
AQ*% +% '')F)6&D$
JavG
**//
CJJ&& 
 Z9kVDD#.
 	"'* (
 	
 IIKIIK   9789 IIKIIK s<   A0D
3B> 
C" $D
>CC" CC" "%DD
c               #     K   t               } t        j                  j                         }d}|dt	        |       g}d }	 t        j                  ||      }|j                         t        j                  d| d       d| f|d |!|j                          |j                          y y # t        $ r%}t        j                  d| d|        Y d }~Md }~ww xY w# |!|j                          |j                          w w xY ww)	Nzstorage-testbenchz--portr   Command # did not start server successfully!	localhost)r   r    failed to execute: )r   r#   r$   r   strr   r   pollrE   rF   r   r   r   )rr   r   exer   r   es         r,   
gcs_serverr      s     D
**//
C
C3t9%DD#.99;"KK(4&(KLM
 '-
 	

 IIKIIK   >htf$8<==> IIKIIK sA   ;DA B+ >	C $D+	C4CC CC %DDc              #   J  K   t               }t        j                  j                         }| j	                         }dd|dt        |      g}|dgz  }d }	 t        j                  ||      }|j                         t        j                  d| d       d|d	d
f||d |!|j                          |j                          y y # t        t        f$ r%}t        j                  d| d|        Y d }~Sd }~ww xY w# |!|j                          |j                          w w xY ww)Nzazurite-blobz
--locationz
--blobPortz--skipApiVersionCheckr   r   r   rv   devstoreaccount1zXEby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==r   r   )r   r#   r$   r   r   r   r   r   r   rE   rF   ModuleNotFoundErrorr   r   r   )r   rr   r   r\   r   r   r   s          r,   azure_serverr     s(    D
**//
C'')FL&,D	JD 	$%%DD#.99;"KK(4&(KLM '.@CD 
 	
 IIKIIK   ) >htf$8<==> IIKIIK sC   AD#A C C;  $D#C8C3.C; 3C88C; ;%D  D#builtin_picklecloudpickle)paramsr_   c                 8    | j                  | j                        S r5   )getfixturevalueparam)r   s    r,   pickle_moduler   *  s     ""7==11r.   c                      dd l } | S )Nr   pickler   s    r,   r   r   5  s
    Mr.   c                  n    t        j                  d      } d| j                  vr| j                  | _        | S )Nr   HIGHEST_PROTOCOL)rE   importorskip__dict__DEFAULT_PROTOCOLr   )cps    r,   r   r   ;  s1    			]	+B, 11Ir.   )   g      ?Nr   )0r   r#   rY   r   sysr   urllib.requestr   rE   
hypothesishconftestr   r   pyarrow.utilr   settingsregister_profile	Verbosityverboseload_profiler$   r%   platform	importlibr   pathjoinfilesr   printr9   r;   rS   rW   fixturer]   rd   rj   rt   r{   r   r   r   r   r   r   r   rJ   r.   r,   <module>r      s  $  	   
     ' ' 

  Dt  4 

  E  3 

  G"&'kk&9&9  ; 

  

';UC D !,

 
 <<7	zz~~gt$,'	"$'',,yx/H*"UBJJwC00 05"- ( (
 i 2 !2 < < i  ! i . !. F i # !#L i  !2 i  !B  22 i  !
 i  !E # 	U	s   9I5 5JJ