
    g&                        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       d Z G d d      Zd Zd Zej>                  d        Z  ej>                  d      d        Z! ej>                  d      d        Z" ej>                  d      d        Z# ej>                  d      d         Z$d+d!Z% ej>                  d      d"        Z& ej>                  d      d#        Z' ej>                  d      d$        Z( ej>                  d%d&gd'      d(        Z) ej>                  d      d)        Z* ej>                  d      d*        Z+y),    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_PATHc           	      ,   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      K/var/www/openai/venv/lib/python3.12/site-packages/pyarrow/tests/conftest.pybool_envz"pytest_addoption.<locals>.bool_env<   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_addoptionr6   :   s    ; ,33E:HUOL--e4 ,g9@@G 	 	J 	..u5 ,e:AA%H 	 	K r,   c                       e Zd Zd Zd Zd Zy)PyArrowConfigc                     i | _         y r2   )
is_enabled)selfs    r*   __init__zPyArrowConfig.__init__T   s	    r,   c                 P    |j                   }|t        v r| j                  |       y y r2   )r'   r   requires)r;   markr5   s      r*   
apply_markzPyArrowConfig.apply_markW   s#    		F?MM%  r,   c                 l    | j                   |   s%t        j                  dj                  |             y y )Nz{} NOT enabled)r:   pytestskipr&   )r;   r5   s     r*   r>   zPyArrowConfig.requires\   s+    u%KK(//67 &r,   N)__name__
__module____qualname__r<   r@   r>    r,   r*   r8   r8   S   s    !
8r,   r8   c                    t               | _        t        D ]t  }| j                  d|       dj	                  |      }dj	                  |      }| j                  |      xr | j                  |       }|| j                  j                  |<   v y )Nmarkersr-   r1   )r8   pyarrowr   addinivalue_liner&   	getoptionr:   )configr?   enable_flagdisable_flagr:   s        r*   pytest_configurerP   a   s    "_FNt	
 $**40%,,T2&&{3 5&&|495
*4!!$' r,   c                 x    | j                         D ]'  }| j                  j                  j                  |       ) y r2   )iter_markersrM   rJ   r@   )itemr?   s     r*   pytest_runtest_setuprT   r   s-    !!#&&t, $r,   c                 @    t        j                  | j                        S r2   )pathlibPathstrpath)tmpdirs    r*   tempdirrZ   x   s     <<''r,   session)scopec                  N    t        j                  t              j                  dz  S )Ndata)rV   rW   __file__parentrG   r,   r*   base_datadirra   ~   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_metadatarg      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_connectionrq      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   )rn   ro   
access_key
secret_keys       r*   s3_connectionrx      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,   rG   )r   r   r   r   r   s   ```` r*   retryr      s    " Or,   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||~$$$r,   z{}:{})MINIO_ACCESS_KEYMINIO_SECRET_KEYminioz--compatserverz--quietz	--addressenv
connectionprocessrZ   z!`minio` command cannot be located)r   getbasetempr&   r    r!   copyupdate
subprocessPopenOSErrorrB   rC   killwait)rx   tmpdir_factoryr   rY   rn   ro   rv   rw   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   pollrB   rC   r   r   r   )ro   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   rs   devstoreaccount1zXEby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==r   r   )r   r    r!   r   r   r   r   r   r   rB   rC   ModuleNotFoundErrorr   r   r   )r   ro   r   rY   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 r2   )getfixturevalueparam)r   s    r*   pickle_moduler   %  s     ""7==11r,   c                      dd l } | S )Nr   pickler   s    r*   r   r   0  s
    Mr,   c                  n    t        j                  d      } d| j                  vr| j                  | _        | S )Nr   HIGHEST_PROTOCOL)rB   importorskip__dict__DEFAULT_PROTOCOLr   )cps    r*   r   r   6  s1    			]	+B, 11Ir,   )   g      ?Nr|   ),r   r    rV   r   sysr   urllib.requestr   rB   
hypothesishconftestr   r   rJ   r   pyarrow.utilr   settingsregister_profile	Verbosityverboseload_profiler!   r"   platformtzdata_set_pathr6   r8   rP   rT   fixturerZ   ra   rg   rq   rx   r   r   r   r   r   r   r   rG   r,   r*   <module>r      sf  $  	   
     ' ( ' 

  Dt  4 

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

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

  

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

  <<7jjnn%:DAO_-K28 85"- ( (
 i 2 !2 < < i  ! i . !. F i # !#L i  !2 i  !B  22 i  !
 i  !r,   