U
    Mh                     @   s>   d dl Z e ddZdd Zdd Zdd	 ZG d
d dZdS )    NEntryzversion, hashc                 C   s    | t |d | d>  | d?  A S )Nl   yn<       )hash)seedvalue r   V/var/www/html/venv/lib/python3.8/site-packages/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rt|	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   r   r   r   r   r	   <module>   s
   