
    "h)                        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 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.                  j1                  dd	             dej.                  d<   ej2                  dk(  r&ej.                  j1                  dd      Zer ee       ej2                  dk(  r\ej.                  j1                  dd      @d dlmZ 	 ej:                  j=                   ej>                  d      d      ej.                  d<   d Z" G d d      Z#d Z$d Z%ejL                  d        Z' ejL                  d      d         Z( ejL                  d!"      d#        Z) ejL                  d      d$        Z* ejL                  d      d%        Z+d0d&Z, ejL                  d      d'        Z- ejL                  d      d(        Z. ejL                  d      d)        Z/ ejL                  d*d+gd,      d-        Z0 ejL                  d      d.        Z1 ejL                  d      d/        Z2y# e $ r  e!d       Y 7w xY w)1    N   )groupsdefaults)set_timezone_db_pathfind_free_portcii  )max_examplesdev2   debug
   )r
   	verbosityHYPOTHESIS_PROFILEz	/dev/nullAWS_CONFIG_FILEwin32PYARROW_TZDATA_PATHTZDIR)	resourcestzdatazoneinfozCPackage "tzdata" not found. Not setting TZDIR environment variable.c           	      ,   d
d}t         D ]  } |dj                  |      t        |         }| j                  dj                  |      d|dj                  |             | j                  dj                  |      ddd	j                  |              y )Nc                     t         j                  j                  | j                               }|s|S |j	                         }|dv ry|dv ryt        dj                  | j                         |            )N>   1yonyestrueT>   0nnoofffalseFz {}={} is not parsable as boolean)osenvirongetupperlower
ValueErrorformat)namedefaultvalues      S/var/www/html/sandstorm/venv/lib/python3.12/site-packages/pyarrow/tests/conftest.pybool_envz"pytest_addoption.<locals>.bool_envL   sg    

tzz|,N3366?$fTZZ\59; ;    zPYARROW_TEST_{}--enable-{}
store_truezEnable the {} test group)actionr,   help--disable-{}FzDisable the {} test groupN)r   r*   r   	addoption)parserr/   groupr,   s       r.   pytest_addoptionr:   J   s    ;  K,33E:HUOL--e4 ,g9@@G 	 	J 	..u5 ,e:AA%H 	 	KKr0   c                       e Zd Zd Zd Zd Zy)PyArrowConfigc                     i | _         y r6   )
is_enabled)selfs    r.   __init__zPyArrowConfig.__init__d   s	    r0   c                 P    |j                   }|t        v r| j                  |       y y r6   )r+   r   requires)r?   markr9   s      r.   
apply_markzPyArrowConfig.apply_markg   s#    		F?MM%  r0   c                 l    | j                   |   s%t        j                  dj                  |             y y )Nz{} NOT enabled)r>   pytestskipr*   )r?   r9   s     r.   rB   zPyArrowConfig.requiresl   s+    u%KK(//67 &r0   N)__name__
__module____qualname__r@   rD   rB    r0   r.   r<   r<   c   s    !
8r0   r<   c                    t               | _        t        D ]t  }| j                  d|       dj	                  |      }dj	                  |      }| j                  |      xr | j                  |       }|| j                  j                  |<   v y )Nmarkersr1   r5   )r<   pyarrowr   addinivalue_liner*   	getoptionr>   )configrC   enable_flagdisable_flagr>   s        r.   pytest_configurerT   q   s    "_FN 
5t	
 $**40%,,T2&&{3 5&&|495
*4!!$'
5r0   c                 x    | j                         D ]'  }| j                  j                  j                  |       ) y r6   )iter_markersrQ   rN   rD   )itemrC   s     r.   pytest_runtest_setuprX      s2    !!# -&&t,-r0   c                 @    t        j                  | j                        S r6   )pathlibPathstrpath)tmpdirs    r.   tempdirr^      s     <<''r0   session)scopec                  N    t        j                  t              j                  dz  S )Ndata)rZ   r[   __file__parentrK   r0   r.   base_datadirre      s    <<!((611r0   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_metadatark      s     2F;r0   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_connectionru      sS    ::>>0)<Drzz~~4a89D::>>0&9Dtr0   c                  0    dt               }} d\  }}| |||fS )N	127.0.0.1)arrowapachearrowr   )rr   rs   
access_key
secret_keys       r.   s3_connectionr|      s'    n.$D3J
z:--r0   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%    			! 
	! r0   rK   )r   r   r   r   r   s   ```` r.   retryr      s    " Or0   c              #   .  K   t        ddd      d        }|j                         }| \  }}}}dj                  ||      }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||~$$$r0   z{}:{})MINIO_ACCESS_KEYMINIO_SECRET_KEYminioz--compatserverz--quietz	--addressenv
connectionprocessr^   z!`minio` command cannot be located)r   getbasetempr*   r$   r%   copyupdate
subprocessPopenOSErrorrF   rG   killwait)r|   tmpdir_factoryr   r]   rr   rs   rz   r{   r   r   r   procs               r.   	s3_serverr      s&    
AQ*% +% '')F)6&D$
JnnT4(G
**//
CJJ&& 
 Z9kVDD#.
 	"'* (
 	
 IIKIIK   9789 IIKIIK s<   A;D>C	 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   pollrF   rG   r   r   r   )rs   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   rw   devstoreaccount1zXEby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==r   r   )r   r$   r%   r   r   r   r   r   r   rF   rG   ModuleNotFoundErrorr   r   r   )r   rs   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 r6   )getfixturevalueparam)r   s    r.   pickle_moduler   5  s     ""7==11r0   c                      dd l } | S )Nr   pickler   s    r.   r   r   @  s
    Mr0   c                  n    t        j                  d      } d| j                  vr| j                  | _        | S )Nr   HIGHEST_PROTOCOL)rF   importorskip__dict__DEFAULT_PROTOCOLr   )cps    r.   r   r   F  s1    			]	+B, 11Ir0   )   g      ?Nr   )3r   r$   rZ   r   sysr   urllib.requestr   rF   
hypothesishconftestr   r   rN   r   pyarrow.utilr   settingsregister_profile	Verbosityverboseload_profiler%   r&   platformtzdata_set_path	importlibr   pathjoinfilesr   printr:   r<   rT   rX   fixturer^   re   rk   ru   r|   r   r   r   r   r   r   r   rK   r0   r.   <module>r      s  $  	   
     ' ( ' 

  Dt  4 

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

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

  

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

  <<7jjnn%:DAO_- <<7	zz~~gt$,'	"$'',,yx/H*"UBJJwK28 85"- ( (
 i 2 !2 < < i  ! i . !. F i # !#L i  !2 i  !B  22 i  !
 i  !G # 	U	s   9J0 0K K