U
    hY	                     @   sz   d dl Z d dlZd dlmZ d dlmZ d dlmZ dZ	da
edddZedd	d
ZeedddZddddZdS )    N)OpenerDirector)warn)__version__   )returnc                   C   s&   t d kr"tjtj tj a t S )N)openerurllibrequestbuild_openerHTTPHandlerHTTPSHandler r   r   @/tmp/pip-unpacked-wheel-e8onvpoz/albumentations/check_version.py
get_opener   s    r   c               
   C   s   t jt j t j } d}zV| j|dd>}|jtkrh| }|	 
d}||W  5 Q R  W S W 5 Q R X W n4 tk
r } ztd| dd W 5 d }~X Y nX dS )Nz)https://pypi.org/pypi/albumentations/json   )timeoutzutf-8zError fetching version info 
stacklevel )r   r	   r
   r   r   openstatusSUCCESS_HTML_CODEreadinfoget_content_charsetdecode	Exceptionr   )r   urlresponsedataencodinger   r   r   fetch_version_info   s    
&$r"   )r   r   c                 C   sB   | r>z t | }|di ddW S  t jk
r<   Y dS X dS )z,Parses the version from the given JSON data.r   versionr   )jsonloadsgetJSONDecodeError)r   Z	json_datar   r   r   parse_version"   s    
r(   c               
   C   sx   z:t  } t| }|r8|tkr8td| dt dtdd W n8 tk
rr } ztd| dtdd W 5 d }~X Y nX d S )Nz.A new version of Albumentations is available: z (you have z). Upgrade using: pip install -U albumentations. To disable automatic update checks, set the environment variable NO_ALBUMENTATIONS_UPDATE to 1.r   r   z8Failed to check for updates due to an unexpected error: za. To disable automatic update checks, set the environment variable NO_ALBUMENTATIONS_UPDATE to 1.)r"   r(   current_versionr   UserWarningr   )r   Zlatest_versionr!   r   r   r   check_for_updates/   s    

r+   )r$   urllib.requestr   r   warningsr   Zalbumentations._versionr   r)   r   r   r   strr"   r(   r+   r   r   r   r   <module>   s   