forked from ray-project/ray
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcheck_minimal_install.py
50 lines (40 loc) · 1.38 KB
/
check_minimal_install.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
"""
This script ensures that some dependencies are _not_ installed in the
current python environment.
This is to ensure that tests with minimal dependencies are not tainted
by too many installed packages.
"""
from typing import List
# These are taken from `setup.py` for ray[default]
DEFAULT_BLACKLIST = [
"aiohttp",
"aiohttp_cors",
"colorful",
"py-spy",
"gpustat",
"opencensus",
"prometheus_client",
"smart_open",
"torch",
"tensorflow",
"jax",
]
def assert_packages_not_installed(blacklist: List[str]):
try:
from pip._internal.operations import freeze
except ImportError: # pip < 10.0
from pip.operations import freeze
installed_packages = [p.split("==")[0].split(" @ ")[0] for p in freeze.freeze()]
assert not any(p in installed_packages for p in blacklist), (
f"Found blacklisted packages in installed python packages: "
f"{[p for p in blacklist if p in installed_packages]}. "
f"Minimal dependency tests could be tainted by this. "
f"Check the install logs and primary dependencies if any of these "
f"packages were installed as part of another install step."
)
print(
f"Confirmed that blacklisted packages are not installed in "
f"current Python environment: {blacklist}"
)
if __name__ == "__main__":
assert_packages_not_installed(DEFAULT_BLACKLIST)