spam-classifier
/
venv
/lib
/python3.11
/site-packages
/joblib
/test
/test_missing_multiprocessing.py
""" | |
Pyodide and other single-threaded Python builds will be missing the | |
_multiprocessing module. Test that joblib still works in this environment. | |
""" | |
import os | |
import subprocess | |
import sys | |
def test_missing_multiprocessing(tmp_path): | |
""" | |
Test that import joblib works even if _multiprocessing is missing. | |
pytest has already imported everything from joblib. The most reasonable way | |
to test importing joblib with modified environment is to invoke a separate | |
Python process. This also ensures that we don't break other tests by | |
importing a bad `_multiprocessing` module. | |
""" | |
(tmp_path / "_multiprocessing.py").write_text( | |
'raise ImportError("No _multiprocessing module!")' | |
) | |
env = dict(os.environ) | |
# For subprocess, use current sys.path with our custom version of | |
# multiprocessing inserted. | |
env["PYTHONPATH"] = ":".join([str(tmp_path)] + sys.path) | |
subprocess.check_call( | |
[ | |
sys.executable, | |
"-c", | |
"import joblib, math; " | |
"joblib.Parallel(n_jobs=1)(" | |
"joblib.delayed(math.sqrt)(i**2) for i in range(10))", | |
], | |
env=env, | |
) | |