B
    ÛT•\T
  ã               @   s  d dl mZmZmZ d dlZd dlZddlmZ g Zyd dl	Z	W n e
k
rT   Y nX e	jdkrrdd„ Ze e¡ yd dlZW n e
k
r’   Y nX dd	„ Ze e¡ yd dlZW n e
k
rÆ   Y nX d
d„ Ze e¡ dd„ Ze e¡ ddd„Zddd„ZdS )é    )Úabsolute_importÚdivisionÚprint_functionNé   )ÚPY2z0.2.2c             C   s,   t  | ¡}ts| dd¡S t d| ¡S dS )zJ
            Produce a 16-bytes hash of *buf* using CityHash.
            é   Úlittlez%032xN)ÚcityhashZCityHash128r   Úto_bytesÚbinasciiZa2b_hex)ÚbufÚh© r   ú+lib/python3.7/site-packages/dask/hashing.pyÚ_hash_cityhash   s    
r   c             C   s   t  | ¡ ¡ S )z?
        Produce a 8-bytes hash of *buf* using xxHash.
        )ÚxxhashZxxh64Údigest)r   r   r   r   Ú_hash_xxhash,   s    r   c             C   s
   t  | ¡S )zD
        Produce a 16-bytes hash of *buf* using MurmurHash.
        )Úmmh3Z
hash_bytes)r   r   r   r   Ú_hash_murmurhash9   s    r   c             C   s   t  | ¡ ¡ S )z6
    Produce a 20-bytes hash of *buf* using SHA1.
    )ÚhashlibZsha1r   )r   r   r   r   Ú
_hash_sha1B   s    r   c          
   C   sp   |dk	r*y|| ƒS  t tfk
r(   Y nX x.tD ]&}y|| ƒS  t tfk
rT   Y q0X q0W t dt| ƒf ƒ‚dS )zç
    Hash a bytes-like (buffer-compatible) object.  This function returns
    a good quality hash but is not cryptographically secure.  The fastest
    available algorithm is selected.  A fixed-length bytes object is returned.
    Nz unsupported type for hashing: %s)Ú	TypeErrorÚOverflowErrorÚhashersÚtype)r   Úhasherr   r   r   Úhash_bufferL   s    

r   c             C   s$   t | |ƒ}t |¡}ts | ¡ S |S )zJ
    Same as hash_buffer, but returns its result in hex-encoded form.
    )r   r   Zb2a_hexr   Údecode)r   r   r   Úsr   r   r   Úhash_buffer_hexa   s    

r    )N)N)Z
__future__r   r   r   r   r   Zcompatibilityr   r   r	   ÚImportErrorÚ__version__r   Úappendr   r   r   r   r   r   r    r   r   r   r   Ú<module>   s6   	






