test_enable_iterative_imputer.py 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. """Tests for making sure experimental imports work as expected."""
  2. import textwrap
  3. from sklearn.utils._testing import assert_run_python_script
  4. def test_imports_strategies():
  5. # Make sure different import strategies work or fail as expected.
  6. # Since Python caches the imported modules, we need to run a child process
  7. # for every test case. Else, the tests would not be independent
  8. # (manually removing the imports from the cache (sys.modules) is not
  9. # recommended and can lead to many complications).
  10. good_import = """
  11. from sklearn.experimental import enable_iterative_imputer
  12. from sklearn.impute import IterativeImputer
  13. """
  14. assert_run_python_script(textwrap.dedent(good_import))
  15. good_import_with_ensemble_first = """
  16. import sklearn.ensemble
  17. from sklearn.experimental import enable_iterative_imputer
  18. from sklearn.impute import IterativeImputer
  19. """
  20. assert_run_python_script(textwrap.dedent(good_import_with_ensemble_first))
  21. bad_imports = """
  22. import pytest
  23. with pytest.raises(ImportError, match='IterativeImputer is experimental'):
  24. from sklearn.impute import IterativeImputer
  25. import sklearn.experimental
  26. with pytest.raises(ImportError, match='IterativeImputer is experimental'):
  27. from sklearn.impute import IterativeImputer
  28. """
  29. assert_run_python_script(textwrap.dedent(bad_imports))