B
    T\]%                 @   sX  d dl mZmZmZ d dlZd dlZd dlZd dlZd dlZej	d  dkZ
ej	d  dkZG dd dZdZyLd dlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ W n^ ek
r   d dl mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ Y nX e
rfd dl!Z!d dl"Z"d d	l#m$Z$m%Z% d d
l&m'Z' d dl(m)Z)m*Z* d dl+m,Z, d dl-m.Z. d dl/m0Z0m1Z2m3Z4 yLyd dl5mZm1Z6m3Z7 W n* ek
r   d dl8mZm1Z6m3Z7 Y nX dZW n ek
r   Y nX d dl9m:Z: d dl;m<Z<m=Z=m>Z>m?Z? e@Z@eAZAeBZCeBfZDeEZFeGZGd;ddZHeIZIejJZJejKZLdd ZMdd ZNd<ddZOd dlPZQnd dlRZ"d dlSZ!d d	l$m$Z$m%Z% d dl&mTZ'mUZG d dl)m)Z) d dl(m*Z*mVZV d dl+Z+d dl-Z-d dl/Z/d dlWm:Z: d dl<m<Z<m=Z= d dlXm>Z>m?Z? eCZCeYfZDeFZFeHZHeZZIeJZJej[ZLe\Z@e]ZAd=d!d"Z,d#d$ Z^e^ ZO[^d%d ZMd&d ZNd'd( Z4d)d* Z2ej	d+ d,krzG d-d. d.eVZ.ne-j.Z.G d/d0 d0eVZ0yXyd dl5mZm1Z6m3Z7 W n6 ek
r   d d1l_mZ d dl_mZm1Z6m3Z7 Y nX dZW n ek
r   Y nX d dlQZQd2d3 Z`d4d5 Zayd d6lbmcZcmdZe W n& ek
rR   d7d8 Zcd9d: ZeY nX dS )>    )absolute_importdivisionprint_functionN      c               @   s   e Zd Zdd ZdS )LZMAFilec             O   s   t dd S )NzMxz files requires the lzma module. To use, install lzmaffi or backports.lzma.)
ValueError)selfargskwargs r   1lib/python3.7/site-packages/dask/compatibility.py__init__   s    zLZMAFile.__init__N)__name__
__module____qualname__r   r   r   r   r   r      s   r   F)	ContainerHashableIterableIteratorSizedCallableSequenceMutableSequenceSet
MutableSetMappingMutableMappingMappingView	ItemsViewKeysView
ValuesView)QueueEmpty)zip_longest)StringIOBytesIO)makedirs)BZ2File)GzipFilecompress
decompress)r   r*   r+   T)urlopen)urlparseurlsplitquoteunquotec             C   s   |r| ||S | | S d S )Nr   )funcr
   r   r   r   r   apply[   s    
r2   c             C   s
   t | S )N)inspectZgetfullargspec)r1   r   r   r   _getargspecd   s    r4   c             C   s   t | }dd |j D S )z7Get all non ``*args/**kwargs`` arguments for a functionc             S   s    g | ]\}}|j |jkr|qS r   )ZkindZPOSITIONAL_OR_KEYWORD).0npr   r   r   
<listcomp>j   s    z"get_named_args.<locals>.<listcomp>)r3   Z	signatureZ
parametersitems)r1   sr   r   r   get_named_argsg   s    
r;   c             C   s   | j |k	r| || d S )N)__traceback__with_traceback)exctbr   r   r   reraisem   s    

r@   )izip_longestizip)r%   )r&   BufferedIOBase)r-   r.   )r/   r0     c             C   s>   yt j| |d W n& tk
r8   |r2t j| s4 Y nX d S )N)mode)osr'   OSErrorpathisdir)namerE   exist_okr   r   r   r'      s
    r'   c              C   s   d} i }t d |d S )Nz6def reraise(exc, tb=None):    raise type(exc), exc, tbzexec _code in namespacer@   )exec)_code	namespacer   r   r   _make_reraise   s    rO   c             C   s
   t | S )N)r3   
getargspec)r1   r   r   r   r4      s    c          
   C   s<   y
t | jS  tk
r6 } zt|j W dd}~X Y nX dS )z7Get all non ``*args/**kwargs`` arguments for a functionN)rP   r
   	TypeErrorr   )r1   er   r   r   r;      s    
c             C   s$   t jt| d}| }|  |S )N)fileobj)gzipr)   r&   readclose)bfresultr   r   r   gzip_decompress   s    rZ   c             C   s<   t  }tj|dd}||  |  |d | }|S )Nw)rS   rE   r   )r&   rT   r)   writerV   seekrU   )rW   ZbiorX   rY   r   r   r   gzip_compress   s    

r^         c               @   s   e Zd Zdd Zdd Ze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d Zdd Zdd Zdd Zdd  Zd!d" Zd#S )$r(   c             O   s   t j||| _d S )N)bz2r(   _BZ2File__obj)r	   r
   r   r   r   r   r      s    zBZ2File.__init__c             C   s
   | j  S )N)rb   rV   )r	   r   r   r   rV      s    zBZ2File.closec             C   s   | j jS )N)rb   closed)r	   r   r   r   rc      s    zBZ2File.closedc             C   s   d S )Nr   )r	   r   r   r   flush   s    zBZ2File.flushc             C   s
   | j  S )N)rb   isatty)r	   r   r   r   re      s    zBZ2File.isattyc             O   s   | j j||S )N)rb   rU   )r	   r
   r   r   r   r   rU      s    zBZ2File.readc             O   s   | j j||S )N)rb   rU   )r	   r
   r   r   r   r   read1   s    zBZ2File.read1c             C   s   d| j jkS )Nr)rb   rE   )r	   r   r   r   readable   s    zBZ2File.readablec             O   s   | j j||S )N)rb   readline)r	   r
   r   r   r   r   ri      s    zBZ2File.readlinec             O   s   | j j||S )N)rb   	readlines)r	   r
   r   r   r   r   rj      s    zBZ2File.readlinesc             O   s   | j j|| |  S )N)rb   r]   tell)r	   r
   r   r   r   r   r]      s    zBZ2File.seekc             C   s   |   S )N)rh   )r	   r   r   r   seekable   s    zBZ2File.seekablec             C   s
   | j  S )N)rb   rk   )r	   r   r   r   rk      s    zBZ2File.tellc             O   s   | j j||S )N)rb   truncate)r	   r
   r   r   r   r   rm      s    zBZ2File.truncatec             C   s   d| j jkS )Nr[   )rb   rE   )r	   r   r   r   writable   s    zBZ2File.writablec             O   s   | j j||S )N)rb   r\   )r	   r
   r   r   r   r   r\      s    zBZ2File.writec             O   s   | j j||S )N)rb   
writelines)r	   r
   r   r   r   r   ro      s    zBZ2File.writelinesN)r   r   r   r   rV   propertyrc   rd   re   rU   rf   rh   ri   rj   r]   rl   rk   rm   rn   r\   ro   r   r   r   r   r(      s"   r(   c               @   s   e Zd Zdd Zdd Ze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d Zdd Zdd Zdd Zdd  Zd!d" Zd#S )$r)   c             O   s   t j||| _d S )N)rT   r)   _GzipFile__obj)r	   r
   r   r   r   r   r      s    zGzipFile.__init__c             C   s
   | j  S )N)rq   rV   )r	   r   r   r   rV      s    zGzipFile.closec             C   s   | j jd kS )N)rq   rS   )r	   r   r   r   rc      s    zGzipFile.closedc             O   s   | j j||S )N)rq   rd   )r	   r
   r   r   r   r   rd      s    zGzipFile.flushc             C   s
   | j  S )N)rq   re   )r	   r   r   r   re      s    zGzipFile.isattyc             O   s   | j j||S )N)rq   rU   )r	   r
   r   r   r   r   rU      s    zGzipFile.readc             O   s   | j j||S )N)rq   rU   )r	   r
   r   r   r   r   rf     s    zGzipFile.read1c             C   s   | j jtjkS )N)rq   rE   rT   ZREAD)r	   r   r   r   rh     s    zGzipFile.readablec             O   s   | j j||S )N)rq   ri   )r	   r
   r   r   r   r   ri   	  s    zGzipFile.readlinec             O   s   | j j||S )N)rq   rj   )r	   r
   r   r   r   r   rj     s    zGzipFile.readlinesc             O   s   | j j|| |  S )N)rq   r]   rk   )r	   r
   r   r   r   r   r]     s    zGzipFile.seekc             C   s   dS )NTr   )r	   r   r   r   rl     s    zGzipFile.seekablec             C   s
   | j  S )N)rq   rk   )r	   r   r   r   rk     s    zGzipFile.tellc             O   s   | j j||S )N)rq   rm   )r	   r
   r   r   r   r   rm     s    zGzipFile.truncatec             C   s   | j jtjkS )N)rq   rE   rT   ZWRITE)r	   r   r   r   rn     s    zGzipFile.writablec             O   s   | j j||S )N)rq   r\   )r	   r
   r   r   r   r   r\      s    zGzipFile.writec             O   s   | j j||S )N)rq   ro   )r	   r
   r   r   r   r   ro   #  s    zGzipFile.writelinesN)r   r   r   r   rV   rp   rc   rd   re   rU   rf   rh   ri   rj   r]   rl   rk   rm   rn   r\   ro   r   r   r   r   r)      s"   r)   )r   c             C   sB   t | tjrt| jS t| d| } t | tr6t| jS t| S dS )z@Version of inspect.getargspec that works with partial and warps.__wrapped__N)	
isinstance	functoolspartialrP   r1   getattrtyper4   r   )r1   r   r   r   rP   7  s    


rP   c             C   s,   t st| |t|d|  nt| || dS )a  Bind a method to class

    Parameters
    ----------

    cls : type
        class to receive bound method
    name : basestring
        name of method on class instance
    func : function
        function to be bound as method

    Returns
    -------
    None
    N)PY3setattrtypes
MethodType)clsrJ   r1   r   r   r   bind_methodC  s    r}   )is_dataclassfieldsc             C   s   dS )NFr   )xr   r   r   r~   _  s    r~   c             C   s   g S )Nr   )r   r   r   r   dataclass_fieldsb  s    r   )N)N)rD   T)fZ
__future__r   r   r   rt   r3   operatorsysrz   version_inforx   ZPY2r   ZLZMA_AVAILABLEZcollections.abcr   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   ImportErrorcollectionscopyregbuiltinsZqueuer"   r#   	itertoolsr$   ior%   r&   rF   r'   ra   r(   rT   r)   r*   r^   r+   rZ   ZlzmaffiZlzma_compressZlzma_decompressZlzmaZurllib.requestr,   Zurllib.parser-   r.   r/   r0   FileNotFoundErrorFileExistsErrorstrZunicodeZstring_typesintZlongzipr2   rangereducetruedivZoperator_divr4   r;   r@   pickleZcPickleZ__builtin__Zcopy_regrA   rB   rC   Zurllib2ZurllibZ
basestringZxrangeZdivIOErrorrG   rO   Zbackports.lzmarP   r}   Zdataclassesr~   r   r   r   r   r   r   <module>   s   LN


	67