U
    饡c_                     @   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Zdd Z	e
fddZddd	Zd
d Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZdS )    NzApyarrow.{} is deprecated as of {}, please use pyarrow.{} instead.c                    s    fdd}|S )Nc                    s    j | _ | S N)__doc__)gf 0/tmp/pip-unpacked-wheel-qoi2rb4q/pyarrow/util.py	decorator$   s    zimplements.<locals>.decoratorr   )r   r	   r   r   r   
implements#   s    r
   c                    s"   t | || fdd}|S )Nc                     s   t   | |S r   )warningswarn)argskwargsapimsgtyper   r   wrapper-   s    z_deprecate_api.<locals>.wrapper)	_DEPR_MSGformat)old_namenew_namer   next_versionr   r   r   r   r   _deprecate_api*   s    r   Tc                    s&   G  fdddt }| fi S )zM
    Raise warning if a deprecated class is used in an isinstance check.
    c                       s   e Zd Z fddZdS )z)_deprecate_class.<locals>._DeprecatedMetac                    s&   t jt jtdd t| S )N   )
stacklevel)r   r   r   r   __name__FutureWarning
isinstance)selfother	new_classr   r   r   r   __instancecheck__9   s    z;_deprecate_class.<locals>._DeprecatedMeta.__instancecheck__N)r   
__module____qualname__r#   r   r!   r   r   _DeprecatedMeta8   s   r&   )r   )r   r"   r   Zinstancecheckr&   r   r!   r   _deprecate_class3   s    	r'   c                 C   s*   zt |  W dS  tk
r$   Y dS X d S )NTF)iter	TypeError)objr   r   r   _is_iterableD   s
    r+   c                 C   s   t | tpt| dS )N
__fspath__)r   strhasattrpathr   r   r   _is_path_likeL   s    r1   c                 C   sJ   t | trtj| S ztj|  W S  tk
r<   Y nX tddS )zA
    Convert *path* to a string or unicode path if possible.
    znot a path-like objectN)r   r-   osr0   
expanduserr,   AttributeErrorr)   r/   r   r   r   _stringify_pathP   s    
r5   c                 C   s   t dd | dS )z-
    Return a product of sequence items.
    c                 S   s   | | S r   r   )abr   r   r   <lambda>d       zproduct.<locals>.<lambda>   )	functoolsreduce)seqr   r   r   product`   s    r>   c                 C   s   |sd}|t |  }nd}|}t| D ]V\}}|dkrBd }} q~|| }|dkrd|||d  7 }q&|dk r&|||d  7 }q&|| |t |  krtd||fS )z
    Return a contiguous span of N-D array data.

    Parameters
    ----------
    shape : tuple
    strides : tuple
    itemsize : int
      Specify array shape data

    Returns
    -------
    start, end : int
      The span end points.
    r   r:   zarray data is non-contiguous)r>   	enumerate
ValueError)shapestridesitemsizestartendiZdimZstrider   r   r   get_contiguous_spang   s"    rG   c               
   C   sZ   t  t jt j} t| 6} | d | t jt jd | 	 d W  5 Q R  S Q R X d S )N) r   r:   )
socketAF_INETSOCK_STREAM
contextlibclosingbind
setsockopt
SOL_SOCKETSO_REUSEADDRgetsockname)sockr   r   r   find_free_port   s
    
rT   c                  C   s   ddl m}  |  jS )Nr   uuid4)uuidrV   hexrU   r   r   r   guid   s    rY   c                 C   sd   t d}t| }|rT|D ]} | |k	rt| tjr q<qqTd }|   t| }qd  } } }d S )Nr   )sys	_getframegcZget_referrersr   types	FrameTypeclear)frameZ
this_framerefsr   r   r   !_break_traceback_cycle_from_frame   s    

rb   )T)r2   rL   r;   r\   rI   rZ   r]   r   r   r
   r   r   r'   r+   r1   r5   r>   rG   rT   rY   rb   r   r   r   r   <module>   s*   
 
$