o
    Gh(                     @   s\  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d e
jjd	d
d e
jjdde
jjd e
jejdd	 dejd< ejdkruejddZeruee ejdkrejdddu rd dlmZ zejeddejd< W n e y   e!d Y nw dd Z"G dd dZ#dd Z$dd Z%ej&d d! Z'ej&d"d#d$d% Z(ej&d&d'd(d) Z)ej&d"d#d*d+ Z*ej&d"d#d,d- Z+d@d1d2Z,ej&d"d#d3d4 Z-ej&d"d#d5d6 Z.ej&d"d#d7d8 Z/ej&d9d:gd"d;d<d= Z0ej&d"d#d>d9 Z1ej&d"d#d?d: Z2dS )A    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                 C   sl   ddd}t D ],}|d| t| }| jd| d|d| dd | jd	| dd
d| dd qd S )Nc                 S   sP   t j|  }|s|S | }|dv rdS |dv rdS t|   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value r+   W/var/www/html/Persson_Maskin/env/lib/python3.10/site-packages/pyarrow/tests/conftest.pybool_envL   s   z"pytest_addoption.<locals>.bool_envPYARROW_TEST_	--enable-
store_truezEnable the z test group)actionr)   help
--disable-FzDisable the N)r   r   	addoption)parserr-   groupr)   r+   r+   r,   pytest_addoptionJ   s   


r8   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )PyArrowConfigc                 C   s
   i | _ d S r4   )
is_enabled)selfr+   r+   r,   __init__c   s   
zPyArrowConfig.__init__c                 C   s    |j }|tv r| | d S d S r4   )r(   r   requires)r;   markr7   r+   r+   r,   
apply_markf   s   zPyArrowConfig.apply_markc                 C   s"   | j | st| d d S d S )Nz NOT enabled)r:   pytestskip)r;   r7   r+   r+   r,   r=   k   s   
zPyArrowConfig.requiresN)__name__
__module____qualname__r<   r?   r=   r+   r+   r+   r,   r9   b   s    r9   c                 C   sX   t  | _tD ]#}| d| d| }d| }| |o"| | }|| jj|< qd S )Nmarkersr/   r3   )r9   pyarrowr   addinivalue_line	getoptionr:   )configr>   enable_flagdisable_flagr:   r+   r+   r,   pytest_configurep   s   


rL   c                 C   s    |   D ]	}| jj| qd S r4   )iter_markersrI   rF   r?   )itemr>   r+   r+   r,   pytest_runtest_setup   s   rO   c                 C   s   t | jS r4   )pathlibPathstrpath)tmpdirr+   r+   r,   tempdir   s   rT   session)scopec                   C   s   t tjd S )Ndata)rP   rQ   __file__parentr+   r+   r+   r,   base_datadir   s   rZ   T)autousec                 C   s   |  dd dS )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)monkeypatchr+   r+   r,   disable_aws_metadata   s   r_   c                  C   s8   t jdd} tt jdd}t 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userr+   r+   r,   hdfs_connection   s   
rh   c                  C   s    dt  } }d\}}| |||fS )N	127.0.0.1)arrowapachearrowr   )re   rf   
access_key
secret_keyr+   r+   r,   s3_connection   s   rn            ?   c                    s    fd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                    s"   t   fdd}|S )Nc               
      s~    }}|dkr=z| i |W S  t y8 } z|d8 }|}|9 }r)t|}t| W Y d }~nd }~ww |dks|)Nr   rq   )	Exceptionmintimesleep)argskwargsremaining_attempts
curr_delayerrlast_exception)attemptsbackoffdelayfunc	max_delayr+   r,   wrapper   s    

z(retry.<locals>.decorate.<locals>.wrapper)	functoolswraps)r   r   r|   r}   r~   r   )r   r,   decorate   s   zretry.<locals>.decorater+   )r|   r~   r   r}   r   r+   r   r,   retry   s   r   c                 c   s    t dddddd }| }| \}}}}| d| }tj }	|	||d d	d
ddd||g}
d }z4z	tj|
|	d}W n tyM   t	
d Y nw || | ||dV  W |d urh|  |  d S d S |d urw|  |  w w )N   rq   r   )r|   r~   r}   c                 S   s(   t jd|  d}| dksJ d S )Nzhttp://z/minio/health/live   )urllibrequesturlopengetcode)addressrespr+   r+   r,   minio_server_health_check   s   z,s3_server.<locals>.minio_server_health_check:)MINIO_ACCESS_KEYMINIO_SECRET_KEYminioz--compatserverz--quietz	--addressenvz!`minio` command cannot be located
connectionprocessrT   )r   getbasetempr"   r#   copyupdate
subprocessPopenOSErrorr@   rA   killwait)rn   tmpdir_factoryr   rS   re   rf   rl   rm   r   r   rv   procr+   r+   r,   	s3_server   sB   



r   c               
   c   s    t  } tj }d}|dt| g}d }zOztj||d}| d ur,t	d| d W n t
yJ } zt	d| d|  W Y d }~nd }~ww d| f|dV  W |d urb|  |  d S d S |d urq|  |  w w )	Nzstorage-testbenchz--portr   Command # did not start server successfully! failed to execute: 	localhost)r   r   )r   r"   r#   r   strr   r   pollr@   rA   r   r   r   )rf   r   exerv   r   er+   r+   r,   
gcs_server   s4   
"
r   c              
   c   s    t  }tj }|  }dd|dt|g}|dg7 }d }zTztj||d}| d ur5t	
d| d W n ttfyU } zt	
d| d|  W Y d }~nd }~ww d	|d
df||dV  W |d urp|  |  d S d S |d ur|  |  w w )Nzazurite-blobz
--locationz
--blobPortz--skipApiVersionCheckr   r   r   r   ri   devstoreaccount1zXEby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==r   )r   r"   r#   r   r   r   r   r   r   r@   rA   ModuleNotFoundErrorr   r   r   )r   rf   r   rS   rv   r   r   r+   r+   r,   azure_server  s<   

"

r   builtin_picklecloudpickle)paramsrV   c                 C   s   |  | jS r4   )getfixturevalueparam)r   r+   r+   r,   pickle_module4  s   r   c                  C   s   dd l } | S )Nr   pickler   r+   r+   r,   r   ?  s   c                  C   s    t d} d| jvr| j| _| S )Nr   HIGHEST_PROTOCOL)r@   importorskip__dict__DEFAULT_PROTOCOLr   )cpr+   r+   r,   r   E  s   

)ro   rp   Nrq   )3r   r"   rP   r   sysrt   urllib.requestr   r@   
hypothesishconftestr   r   rF   r   pyarrow.utilr   settingsregister_profile	Verbosityverboseload_profiler#   r$   platformtzdata_set_path	importlibr   pathjoinfilesr   printr8   r9   rL   rO   fixturerT   rZ   r_   rh   rn   r   r   r   r   r   r   r   r+   r+   r+   r,   <module>   s   














#

&


!



