1
1
"""Tests for the minimum dependencies in the README.rst file."""
2
+
2
3
import os
3
4
import platform
4
5
import re
5
6
from pathlib import Path
6
7
7
8
import pytest
8
- from sklearn .utils .fixes import parse_version
9
+ import tomllib
10
+ from packaging .requirements import Requirement
11
+ from packaging .version import parse
9
12
10
13
import imblearn
11
- from imblearn ._min_dependencies import dependent_packages
12
14
13
15
14
16
@pytest .mark .skipif (
17
19
def test_min_dependencies_readme ():
18
20
# Test that the minimum dependencies in the README.rst file are
19
21
# consistent with the minimum dependencies defined at the file:
20
- # imblearn/_min_dependencies.py
22
+ # pyproject.toml
23
+
24
+ pyproject_path = Path (imblearn .__path__ [0 ]).parents [0 ] / "pyproject.toml"
25
+ with open (pyproject_path , "rb" ) as f :
26
+ pyproject_data = tomllib .load (f )
27
+
28
+ def process_requirements (requirements ):
29
+ result = {}
30
+ for req in requirements :
31
+ req = Requirement (req )
32
+ for specifier in req .specifier :
33
+ if specifier .operator == ">=" :
34
+ result [req .name ] = parse (specifier .version )
35
+ return result
36
+
37
+ min_dependencies = process_requirements (
38
+ [f"python{ pyproject_data ['project' ]['requires-python' ]} " ]
39
+ )
40
+ min_dependencies .update (
41
+ process_requirements (pyproject_data ["project" ]["dependencies" ])
42
+ )
43
+
44
+ markers = ["docs" , "optional" , "tensorflow" , "keras" , "tests" ]
45
+ for marker_name in markers :
46
+ min_dependencies .update (
47
+ process_requirements (
48
+ pyproject_data ["project" ]["optional-dependencies" ][marker_name ]
49
+ )
50
+ )
21
51
22
52
pattern = re .compile (
23
53
r"(\.\. \|)"
@@ -44,8 +74,8 @@ def test_min_dependencies_readme():
44
74
package , version = matched .group (2 ), matched .group (5 )
45
75
package = package .lower ()
46
76
47
- if package in dependent_packages :
48
- version = parse_version (version )
49
- min_version = parse_version ( dependent_packages [package ][ 0 ])
77
+ if package in min_dependencies :
78
+ version = parse (version )
79
+ min_version = min_dependencies [package ]
50
80
51
81
assert version == min_version , f"{ package } has a mismatched version"
0 commit comments