
    h$,f                     f    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
 Zd Zd Zy)z$
Utilities useful during the build.
    N   )CYTHON_MIN_VERSION)parse   )check_openmp_support)basic_check_buildsklearnc                  $   dj                  t              } 	 dd l}t	        |j
                        t	        t              k  r4| dj                  |j
                  |j                        z  } t        |       y # t        $ r}t        |       |d }~ww xY w)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   es      =lib/python3.12/site-packages/sklearn/_build_utils/__init__.py_check_cython_versionr      s    	/f  2
 V 5);#<<JQQ
 	
 !!	 =	  2!'*12s   A5 5	B>B

Bc                 V   t                ddlm} t                t	               t
        _        d}t        j                  t              5  ddl
}|j                         }ddd       t        j                  j                  dd      dk7  }d|dddd	dd
} || ||d      S # 1 sw Y   BxY w)z@Check that a recent Cython is available and cythonize extensionsr   )	cythonizer   N&SKLEARN_ENABLE_DEBUG_CYTHON_DIRECTIVES0   FT)language_levelboundscheck
wraparoundinitializedcheck	nonecheck	cdivisionprofile)nthreadscompiler_directivesannotate)r   Cython.Buildr   r   r   r	   _OPENMP_SUPPORTED
contextlibsuppressImportErrorjoblib	cpu_countosenvironget)	extensionr   n_jobsr)   cython_enable_debug_directivesr"   s         r   cythonize_extensionsr1   '   s    &  !5 6GF			[	) $!!#$ 	

?EL #
 5! /	 )$ $s   	BB(c                    ddl m} | D ]  }|j                  dd      }t        j                  j                  |      r@t        j                  |      j                  t        j                  |      j                  k  rtt        |d      5 }|j                         }ddd       |j                        }d|d}t        |d	      5 }|j                  |       |j                  |       ddd        y# 1 sw Y   ZxY w# 1 sw Y   xY w)
z.Generate cython files from a list of templatesr   )Tempitaz.tp rNzP# WARNING: Do not edit this file directly.
# It is automatically generated from z!.
# Changes must be made there.

w)r   r3   replacer+   pathexistsstatst_mtimeopenreadsubwrite)	templatesr3   templateoutfileftmpltmpl_warn_msgs           r   gen_from_templatesrG   Y   s      ""5"- GGNN7#!**RWWW-=-F-FFh$  vvx  KK%E88@| D44  gs# q! '    s   	C3#C?3C<	?D	)__doc__r&   r+   r	   _min_dependenciesr   externals._packaging.versionr   openmp_helpersr   pre_build_helpersr   DEFAULT_ROOTr   r1   rG        r   <module>rP      s6     	  2 0 0 0"$/drO   