U
    |h                     @   sl   d Z ddlZddlZddlZddlmZ ddlmZ ddlm	Z	 ddl
mZ d	Zd
d Zdd Zdd ZdS )z$
Utilities useful during the build.
    N   )CYTHON_MIN_VERSION)parse   )check_openmp_support)basic_check_buildsklearnc               
   C   sv   d t} zdd l}W n, tk
rB } zt| |W 5 d }~X Y nX t|jttk rr| d |j|j7 } t| d S )NzYPlease install Cython with a version >= {0} in order to build a scikit-learn from source.r   z5 The current version of Cython is {} installed in {}.)formatr   CythonModuleNotFoundErrorr   __version____path__
ValueError)messager
   e r   A/tmp/pip-unpacked-wheel-ig1s1lm8/sklearn/_build_utils/__init__.py_check_cython_version   s     r   c              	   C   s|   t   ddlm} t  t t_d}tt	 ddl
}| }W 5 Q R X tjdddk}d|dddd	d
}|| ||dS )z@Check that a recent Cython is available and cythonize extensionsr   )	cythonizer   NZ&SKLEARN_ENABLE_DEBUG_CYTHON_DIRECTIVES0   FT)Zlanguage_levelZboundscheckZ
wraparoundZinitializedcheckZ	nonecheckZ	cdivision)Znthreadscompiler_directives)r   ZCython.Buildr   r   r   r   Z_OPENMP_SUPPORTED
contextlibsuppressImportErrorjoblib	cpu_countosenvironget)	extensionr   Zn_jobsr   Zcython_enable_debug_directivesr   r   r   r   cythonize_extensions'   s,    	r!   c              
   C   s   ddl m} | D ]}|dd}tj|rDt|jt|jk st|d}|	 }W 5 Q R X |
|}d|d}t|d}|| || W 5 Q R X qd	S )
z.Generate cython files from a list of templatesr   )Tempitaz.tp rzP# WARNING: Do not edit this file directly.
# It is automatically generated from z!.
# Changes must be made there.

wN)r
   r"   replacer   pathexistsstatst_mtimeopenreadsubwrite)Z	templatesr"   templateoutfileftmplZtmpl_Zwarn_msgr   r   r   gen_from_templatesW   s    



r3   )__doc__r   r   r   Z_min_dependenciesr   Zexternals._packaging.versionr   Zopenmp_helpersr   Zpre_build_helpersr   ZDEFAULT_ROOTr   r!   r3   r   r   r   r   <module>   s   0