U
    _»{jÞ  ã                   @   sr   d Z ddlZddlZddlZddlmZ ddlZddlZddlm	Z	 ddl
mZ dd„ Zejjdd	�d
d„ ƒZdS )zCTests for the minimum dependencies in README.rst and pyproject.tomlé    N)ÚPath)Údependent_packages)Úparse_versionc            	   	   C   sÚ   t  ¡ dkrt d¡ t d¡} ttjd ƒj	d }|d }t
j |¡sRt d¡ | d¡�t}|D ]h}|  |¡}|svqb| d¡| d	¡ }}| ¡ }|tkrbt|ƒ}tt| d ƒ}||ksbt|› d
�ƒ‚qbW 5 Q R X d S )NÚPyPyz0PyPy does not always share the same minimum depszN(\.\. \|)(([A-Za-z]+\-?)+)(MinVersion\| replace::)( [0-9]+\.[0-9]+(\.[0-9]+)?)r   z
README.rstz%The README.rst file is not available.Úré   é   ú has a mismatched version)ÚplatformÚpython_implementationÚpytestÚskipÚreÚcompiler   ÚsklearnÚ__path__ÚparentsÚosÚpathÚexistsÚopenÚmatchÚgroupÚlowerr   r   ÚAssertionError)	ÚpatternZreadme_pathZreadme_fileÚfÚlineZmatchedÚpackageÚversionÚmin_version© r!   úi/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sklearn/tests/test_min_dependencies_readme.pyÚtest_min_dependencies_readme   s(    
ÿ

r#   z™For the release purpose, the upper limit of Cython is set to 3.0 since it leads to performance regression. Scikit-learn can still be built with Cython 3.)Úreasonc               	   C   sð   t  d¡} ttjd ƒj}|d }| ¡ s4t  d¡ | d¡�}|  	|¡}W 5 Q R X |d d }i }|D ]*}d|krh| 
d¡\}}	| ¡ }|	||< qhtd	d
gƒt|ƒks¬t‚| ¡ D ]6\}}	t|	ƒ}	tt| d ƒ}
|	|
ks´t|› d�ƒ‚q´dS )zFCheck versions in pyproject.toml is consistent with _min_dependencies.Útomllibr   zpyproject.tomlz pyproject.toml is not available.Úrbzbuild-systemÚrequiresz>=ZscipyÚcythonr	   N)r   Zimportorskipr   r   r   Úparentr   r   r   ÚloadÚsplitr   Úsetr   Úitemsr   r   )r%   Zroot_directoryÚpyproject_toml_pathr   Úpyproject_tomlZbuild_requirementsZpyproject_build_min_versionsÚrequirementr   r   Zexpected_min_versionr!   r!   r"   Ú$test_min_dependencies_pyproject_toml8   s&    



r1   )Ú__doc__r   r
   r   Úpathlibr   r   r   Zsklearn._min_dependenciesr   Zsklearn.utils.fixesr   r#   Úmarkr   r1   r!   r!   r!   r"   Ú<module>   s   (þ