diff --git a/GPy/__init__.py b/GPy/__init__.py index b5e83566..9c2a7f1b 100644 --- a/GPy/__init__.py +++ b/GPy/__init__.py @@ -1,6 +1,7 @@ # Copyright (c) 2012, GPy authors (see AUTHORS.txt). # Licensed under the BSD 3-clause license (see LICENSE.txt) import warnings + warnings.filterwarnings("ignore", category=DeprecationWarning) from . import core @@ -18,30 +19,25 @@ from .util import normalizer # backwards compatibility import sys -backwards_compatibility = ['lists_and_dicts', 'observable_array', 'index_operations'] + +backwards_compatibility = ["lists_and_dicts", "observable_array", "index_operations"] for bc in backwards_compatibility: - sys.modules['GPy.core.parameterization.{!s}'.format(bc)] = getattr(core.parameterization, bc) + sys.modules["GPy.core.parameterization.{!s}".format(bc)] = getattr( + core.parameterization, bc + ) # Direct imports for convenience: from .core import Model from .core.parameterization import priors -from .core.parameterization import Param, Parameterized, ObsAr, transformations as constraints +from .core.parameterization import ( + Param, + Parameterized, + ObsAr, + transformations as constraints, +) from .__version__ import __version__ -from numpy.testing import Tester - -with warnings.catch_warnings(): - warnings.simplefilter('ignore') - try: - #Get rid of nose dependency by only ignoring if you have nose installed - from nose.tools import nottest - @nottest - def tests(verbose=10): - Tester(testing).test(verbose=verbose) - except: - def tests(verbose=10): - Tester(testing).test(verbose=verbose) def load(file_or_path): """ @@ -52,10 +48,12 @@ def load(file_or_path): # This is the pickling pain when changing _src -> src import sys import inspect - sys.modules['GPy.kern._src'] = kern.src + + sys.modules["GPy.kern._src"] = kern.src for name, module in inspect.getmembers(kern.src): - if not name.startswith('_'): - sys.modules['GPy.kern._src.{}'.format(name)] = module - sys.modules['GPy.inference.optimization'] = inference.optimization + if not name.startswith("_"): + sys.modules["GPy.kern._src.{}".format(name)] = module + sys.modules["GPy.inference.optimization"] = inference.optimization import paramz + return paramz.load(file_or_path) diff --git a/GPy/old_tests/gp_transformation_tests.py b/GPy/old_tests/gp_transformation_tests.py index 42c0414b..0dbd2a81 100644 --- a/GPy/old_tests/gp_transformation_tests.py +++ b/GPy/old_tests/gp_transformation_tests.py @@ -1,4 +1,3 @@ -from nose.tools import with_setup from GPy.models import GradientChecker from GPy.likelihoods.noise_models import gp_transformations import inspect diff --git a/GPy/testing/move_files.py b/GPy/testing/move_files.py new file mode 100644 index 00000000..ab753fee --- /dev/null +++ b/GPy/testing/move_files.py @@ -0,0 +1,24 @@ +import os +import subprocess + + +python_files = [file for file in os.listdir() if file.endswith(".py")] + +python_test_files = [file for file in python_files if "test" in file] +non_test_python_files = [file for file in python_files if "test" not in file] +print("Python Test Files: ", python_test_files) + +print("Non-test Python Files:\n", non_test_python_files) + +for file in python_test_files: + if file.endswith("_tests.py"): + test_name = file.split("_tests.py")[0] + elif file.endswith("_test.py"): + test_name = file.split("_test.py")[0] + else: + raise ValueError(f"File is not named as expected: {file}") + + to_file = "test_" + test_name + ".py" + + # print(" ".join(["git", "mv", "-f", file, to_file])) + subprocess.run(["git", "mv", "-f", file, to_file]) diff --git a/GPy/testing/test_cython.py b/GPy/testing/test_cython.py index e885482e..9cc12ce0 100644 --- a/GPy/testing/test_cython.py +++ b/GPy/testing/test_cython.py @@ -24,7 +24,7 @@ These tests make sure that the pure python and cython codes work the same """ -@pytest.skipIf( +@pytest.mark.skipif( not choleskies_cython_working, "Cython cholesky module has not been built on this machine", ) @@ -44,7 +44,7 @@ class CythonTestChols: assert np.allclose(A1, A2), "Flat mismatch!" -@pytest.skipIf( +@pytest.mark.skipif( not stationary_cython_working, "Cython stationary module has not been built on this machine", ) @@ -82,7 +82,7 @@ class TestStationary: assert np.allclose(g1, g2), "Gradient mismatch on rect lengthscale!" -@pytest.skipIf( +@pytest.mark.skipif( not choleskies_cython_working, "Cython cholesky module has not been built on this machine", ) diff --git a/GPy/testing/test_ep_likelihood.py b/GPy/testing/test_ep_likelihood.py index 4559ddf1..2ab42617 100644 --- a/GPy/testing/test_ep_likelihood.py +++ b/GPy/testing/test_ep_likelihood.py @@ -1,7 +1,6 @@ +import pytest import numpy as np -import unittest import GPy -from GPy.models import GradientChecker fixed_seed = 10 @@ -127,7 +126,7 @@ class TestObservationModels: GPy.util.classification.conf_matrix(probs_mean_ep_alt, self.binary_Y) GPy.util.classification.conf_matrix(probs_mean_ep_nested, self.binary_Y) - @pytest.skip( + @pytest.mark.skip( "Fails as a consequence of fixing the DSYR function. Needs to be reviewed!" ) def test_ep_with_studentt(self): diff --git a/GPy/testing/test_gpy_kernels_state_space.py b/GPy/testing/test_gpy_kernels_state_space.py index f5a3f89e..154b4378 100644 --- a/GPy/testing/test_gpy_kernels_state_space.py +++ b/GPy/testing/test_gpy_kernels_state_space.py @@ -15,7 +15,6 @@ from .state_space_main_tests import ( generate_brownian_data, generate_linear_plus_sin, ) -from nose import SkipTest # from state_space_main_tests import generate_x_points, generate_sine_data, \ # generate_linear_data, generate_brownian_data, generate_linear_plus_sin diff --git a/GPy/testing/test_kernel.py b/GPy/testing/test_kernel.py index c7ef9f09..44aa306f 100644 --- a/GPy/testing/test_kernel.py +++ b/GPy/testing/test_kernel.py @@ -870,7 +870,7 @@ class TestKernelNonContinuous: ) -@pytest.skipIf( +@pytest.mark.skipif( not cython_coregionalize_working, "Cython coregionalize module has not been built on this machine", ) diff --git a/GPy/testing/test_model.py b/GPy/testing/test_model.py index 99a85c38..44b2c0a6 100644 --- a/GPy/testing/test_model.py +++ b/GPy/testing/test_model.py @@ -75,7 +75,7 @@ class TestMisc: Xp[:, 0] = Xp[:, 0] * 15 - 5 Xp[:, 1] = Xp[:, 1] * 15 _, var = m.predict(Xp) - assert np.all(var >= 0.0)) + assert np.all(var >= 0.0) def test_raw_predict(self): self.setup() diff --git a/GPy/testing/test_plotting.py b/GPy/testing/test_plotting.py index 16c9651c..11a93b81 100644 --- a/GPy/testing/test_plotting.py +++ b/GPy/testing/test_plotting.py @@ -141,39 +141,42 @@ def _image_comparison( if ext == "npz": def do_test(): - with pytest.skip - if not os.path.exists(expected): - import shutil + with pytest.skip: + if not os.path.exists(expected): + import shutil - shutil.copy2(actual, expected) - # shutil.copy2(os.path.join(result_dir, "{}.{}".format(base, 'png')), os.path.join(baseline_dir, "{}.{}".format(base, 'png'))) - raise IOError( - "Baseline file {} not found, copying result {}".format( - expected, actual + shutil.copy2(actual, expected) + # shutil.copy2(os.path.join(result_dir, "{}.{}".format(base, 'png')), os.path.join(baseline_dir, "{}.{}".format(base, 'png'))) + raise IOError( + "Baseline file {} not found, copying result {}".format( + expected, actual + ) ) - ) - else: - exp_dict = dict(np.load(expected).items()) - act_dict = dict(np.load(actual).items()) - for name in act_dict: - if name in exp_dict: - try: - np.testing.assert_allclose( - exp_dict[name], - act_dict[name], - err_msg="Mismatch in {}.{}".format(base, name), - rtol=rtol, - **kwargs - ) - except AssertionError as e: - pass + else: + exp_dict = dict(np.load(expected).items()) + act_dict = dict(np.load(actual).items()) + for name in act_dict: + if name in exp_dict: + try: + np.testing.assert_allclose( + exp_dict[name], + act_dict[name], + err_msg="Mismatch in {}.{}".format( + base, name + ), + rtol=rtol, + **kwargs + ) + except AssertionError as e: + pass else: def do_test(): err = compare_images(expected, actual, tol, in_decorator=True) if err: - print("Error between {} and {} is {:.5f}, which is bigger then the tolerance of {:.5f}".format( + print( + "Error between {} and {} is {:.5f}, which is bigger then the tolerance of {:.5f}".format( actual, expected, err["rms"], tol ) ) @@ -319,6 +322,7 @@ def test_figure(): ): yield (do_test,) + @pytest.mark.skipif( matplotlib is None or baseline_dir is None, reason="Matplotlib not installed" ) @@ -363,6 +367,7 @@ def test_kernel(): ): yield (do_test,) + @pytest.mark.skipif( matplotlib is None or baseline_dir is None, reason="Matplotlib not installed" ) @@ -406,6 +411,7 @@ def test_plot(): ): yield (do_test,) + @pytest.mark.skipif( matplotlib is None or baseline_dir is None, reason="Matplotlib not installed" ) @@ -441,6 +447,7 @@ def test_twod(): ): yield (do_test,) + @pytest.mark.skipif( matplotlib is None or baseline_dir is None, reason="Matplotlib not installed" ) @@ -477,6 +484,7 @@ def test_threed(): ): yield (do_test,) + @pytest.mark.skipif( matplotlib is None or baseline_dir is None, reason="Matplotlib not installed" ) @@ -502,6 +510,7 @@ def test_sparse(): ): yield (do_test,) + @pytest.mark.skipif( matplotlib is None or baseline_dir is None, reason="Matplotlib not installed" ) @@ -534,6 +543,7 @@ def test_classification(): ): yield (do_test,) + @pytest.mark.skipif( matplotlib is None or baseline_dir is None, reason="Matplotlib not installed" ) @@ -564,6 +574,7 @@ def test_sparse_classification(): ): yield (do_test,) + @pytest.mark.skipif( matplotlib is None or baseline_dir is None, reason="Matplotlib not installed" ) @@ -621,6 +632,7 @@ def test_gplvm(): ): yield (do_test,) + @pytest.mark.skipif( matplotlib is None or baseline_dir is None, reason="Matplotlib not installed" ) diff --git a/GPy/testing/test_serialization.py b/GPy/testing/test_serialization.py index f08148f8..01666dd9 100644 --- a/GPy/testing/test_serialization.py +++ b/GPy/testing/test_serialization.py @@ -377,7 +377,9 @@ class TestSerialization: m2_r = GPy.models.GPClassification.load_model( "temp_test_gp_classifier_without_data.json.zip", (X, Y) ) - assert type(m) == type(m2_r), "Incorrect model type. Expected: {} Actual: {}".format(type(m), type(m2_r)), + assert type(m) == type( + m2_r + ), "Incorrect model type. Expected: {} Actual: {}".format(type(m), type(m2_r)) os.remove("temp_test_gp_classifier_with_data.json.zip") os.remove("temp_test_gp_classifier_without_data.json.zip") @@ -415,11 +417,15 @@ class TestSerialization: m1_r = GPy.models.SparseGPClassification.load_model( "temp_test_sparse_gp_classifier_with_data.json.zip" ) - assert type(m) == type(m1_r), "Incorrect model type. Expected: {} Actual: {}".format(type(m), type(m1_r)) + assert type(m) == type( + m1_r + ), "Incorrect model type. Expected: {} Actual: {}".format(type(m), type(m1_r)) m2_r = GPy.models.SparseGPClassification.load_model( "temp_test_sparse_gp_classifier_without_data.json.zip", (X, Y) ) - assert type(m) == type(m2_r), "Incorrect model type. Expected: {} Actual: {}".format(type(m), type(m2_r)), + assert type(m) == type( + m2_r + ), "Incorrect model type. Expected: {} Actual: {}".format(type(m), type(m2_r)) os.remove("temp_test_sparse_gp_classifier_with_data.json.zip") os.remove("temp_test_sparse_gp_classifier_without_data.json.zip")