U
    <ºcÇ  ã                   @   s@   d dl Z e  dd¡Zdd„ Zdd„ Zdd	„ ZG d
d„ deƒZdS )é    NÚEntryzversion, hashc                 C   s    | t |ƒd | d>  | d?  A S )Nl   ¹yn< é   é   )Úhash)ÚseedÚvalue© r   úH/tmp/pip-unpacked-wheel-gikjz4vx/torch/utils/_cpp_extension_versioner.pyÚupdate_hash   s    r
   c              
   C   s0   |D ]&}t |ƒ}t| | ¡ ƒ} W 5 Q R X q| S ©N)Úopenr
   Úread)Ú
hash_valueÚsource_filesÚfilenameÚfiler   r   r	   Úhash_source_files   s    
r   c                 C   s&   |D ]}|r|D ]}t | |ƒ} qq| S r   )r
   )r   Úbuild_argumentsÚgroupÚargumentr   r   r	   Úhash_build_arguments   s
    r   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚExtensionVersionerc                 C   s
   i | _ d S r   )Úentries)Úselfr   r   r	   Ú__init__   s    zExtensionVersioner.__init__c                 C   s   | j  |¡}|d krd S |jS r   )r   ÚgetÚversion)r   ÚnameÚentryr   r   r	   Úget_version    s    zExtensionVersioner.get_versionc           
      C   s”   d}t ||ƒ}t||ƒ}t||ƒ}t||ƒ}t||ƒ}t||ƒ}| j |¡}	|	d krjtd|ƒ | j|< }	n$||	jkrŽt|	jd |ƒ | j|< }	|	jS )Nr   é   )r   r   r
   r   r   r   r   r   )
r   r   r   r   Zbuild_directoryZ	with_cudaZis_python_moduleZis_standaloner   r   r   r   r	   Úbump_version_if_changed$   s    






z*ExtensionVersioner.bump_version_if_changedN)Ú__name__Ú
__module__Ú__qualname__r   r   r!   r   r   r   r	   r      s   r   )ÚcollectionsÚ
namedtupler   r
   r   r   Úobjectr   r   r   r   r	   Ú<module>   s
   