def test_Result_get_dataset_method_error(dummy_result: Result): # noqa: F811 """Result.get_dataset(dataset_label) error on wrong key.""" with pytest.raises(ValueError, match="Unknown dataset 'foo'"): deprecation_warning_on_call_test_helper( dummy_result.get_dataset, args=["foo"], raise_exception=True )
def test_deprecation_warning_on_call_test_helper_error_reraise(): """Raise if raise_exception and args or kwargs""" with pytest.raises(ValueError, match="not a bool"): deprecation_warning_on_call_test_helper(dummy_warn, args=["foo"], kwargs={"bar": "baz"}, raise_exception=True)
def test_Result_save_method(tmpdir: LocalPath, dummy_result: Result): # noqa: F811 """Result.save(result_dir) creates all file""" result_dir = tmpdir / "dummy" result_dir.mkdir() deprecation_warning_on_call_test_helper( dummy_result.save, args=[str(result_dir)], raise_exception=True ) assert (result_dir / "result.md").exists() assert (result_dir / "optimized_parameters.csv").exists() assert (result_dir / "dataset1.nc").exists() assert (result_dir / "dataset2.nc").exists() assert (result_dir / "dataset3.nc").exists()
def test_deprecation_warning_on_call_test_helper(): """Correct result passed on""" result = deprecation_warning_on_call_test_helper(dummy_warn, args=["foo"], kwargs={"bar": True}) assert result == ("foo", True)
def test_Scheme_from_yaml_file_method(tmp_path: Path): """Create Scheme from file.""" scheme_path = tmp_path / "scheme.yml" model_path = tmp_path / "model.yml" model_path.write_text( "type: kinetic-spectrum\ndataset:\n dataset1:\n megacomplex: []") parameter_path = tmp_path / "parameters.yml" parameter_path.write_text("[1.0, 67.0]") dataset_path = tmp_path / "dataset.nc" xr.DataArray([[1, 2, 3]], coords=[ ("e", [1]), ("c", [1, 2, 3]) ]).to_dataset(name="data").to_netcdf(dataset_path) scheme_path.write_text(f""" model: {model_path} parameters: {parameter_path} non-negative-least-squares: True maximum-number-function-evaluations: 42 data: dataset1: {dataset_path}""") result = deprecation_warning_on_call_test_helper(Scheme.from_yaml_file, args=[str(scheme_path)], raise_exception=True) assert isinstance(result, Scheme)
def test_parameter_group_to_csv_no_stderr(tmp_path: Path): """``ParameterGroup.to_csv`` raises deprecation warning and saves file.""" parameter_path = tmp_path / "test_parameter.csv" deprecation_warning_on_call_test_helper(PARAMETERS.to_csv, args=[parameter_path.as_posix()], raise_exception=True) expected = dedent("""\ label,value,expression,minimum,maximum,non-negative,vary,standard-error rates.species_1,0.5,None,-inf,inf,False,True,None rates.species_2,0.3,None,-inf,inf,False,True,None rates.species_3,0.1,None,-inf,inf,False,True,None irf.center,0.3,None,-inf,inf,False,True,None irf.width,0.1,None,-inf,inf,False,True,None """) assert parameter_path.is_file() assert parameter_path.read_text() == expected
def test_Result_get_dataset_method(dummy_result: Result): # noqa: F811 """Result.get_dataset(dataset_label) gives correct dataset.""" result = deprecation_warning_on_call_test_helper( dummy_result.get_dataset, args=["dataset1"], raise_exception=True ) assert result == dummy_result.data["dataset1"]
def test_read_parameters_from_yaml(): """read_parameters_from_yaml raises warning""" result = deprecation_warning_on_call_test_helper(read_parameters_from_yaml, args=["foo:\n - 123"], raise_exception=True) assert isinstance(result, ParameterGroup) assert isinstance(result["foo"], ParameterGroup) assert result["foo"].get(1) == 123
def test_read_model_from_yaml(): """read_model_from_yaml raises warning""" result = deprecation_warning_on_call_test_helper( read_model_from_yaml, args=["type: kinetic-spectrum"], raise_exception=True) assert isinstance(result, Model) assert result.model_type == "kinetic-spectrum"
def test_read_model_from_yaml_file(tmp_path: Path): """read_model_from_yaml_file raises warning""" model_file = tmp_path / "model.yaml" model_file.write_text("type: kinetic-spectrum") result = deprecation_warning_on_call_test_helper(read_model_from_yaml_file, args=[str(model_file)], raise_exception=True) assert isinstance(result, Model) assert result.model_type == "kinetic-spectrum"
def test_read_model_from_yaml(): """read_model_from_yaml raises warning""" yaml = """ type: kinetic-spectrum megacomplex: {} """ _, result = deprecation_warning_on_call_test_helper(read_model_from_yaml, args=[yaml], raise_exception=True) assert isinstance(result, Model)
def test_read_parameters_from_yaml_file(tmp_path: Path): """read_parameters_from_yaml_file raises warning""" parameters_file = tmp_path / "parameters.yaml" parameters_file.write_text("foo:\n - 123") result = deprecation_warning_on_call_test_helper( read_parameters_from_yaml_file, args=[str(parameters_file)], raise_exception=True) assert isinstance(result, ParameterGroup) assert isinstance(result["foo"], ParameterGroup) assert result["foo"].get(1) == 123
def test_read_parameters_from_csv_file(tmp_path: Path): """read_parameters_from_csv_file raises warning""" parameters_file = tmp_path / "parameters.csv" parameters_file.write_text("label,value\nfoo,123") result = deprecation_warning_on_call_test_helper( read_parameters_from_csv_file, args=[str(parameters_file)], raise_exception=True, ) assert isinstance(result, ParameterGroup) assert result.get("foo") == 123
def test_scheme_group(group: bool): """Argument ``group`` raises deprecation and maps to ``dataset_groups.default.link_clp``.""" model, parameters, dataset = MODEL, PARAMETERS, DATASET warnings, result = deprecation_warning_on_call_test_helper( Scheme, args=(model, parameters, {"dataset": dataset}), kwargs={"group": group}, raise_exception=True, ) assert isinstance(result, Scheme) assert result.model.dataset_group_models["default"].link_clp == group assert "<model_file>dataset_groups.default.link_clp" in warnings[0].message.args[0]
def test_scheme_group_tolerance(): """Argument ``group_tolerance`` raises deprecation and maps to ``clp_link_tolerance``.""" model, parameters, dataset = MODEL, PARAMETERS, DATASET warnings, result = deprecation_warning_on_call_test_helper( Scheme, args=(model, parameters, {"dataset": dataset}), kwargs={"group_tolerance": 1}, raise_exception=True, ) assert isinstance(result, Scheme) assert result.clp_link_tolerance == 1 assert "glotaran.project.Scheme(..., clp_link_tolerance=...)" in warnings[0].message.args[0]
def test_scheme_non_negative_least_squares(non_negative_least_squares: bool, expected: str): """Argument ``non_negative_least_squares`` raises deprecation and maps to ``dataset_groups.default.residual_function``. """ model, parameters, dataset = MODEL, PARAMETERS, DATASET warnings, result = deprecation_warning_on_call_test_helper( Scheme, args=(model, parameters, {"dataset": dataset}), kwargs={"non_negative_least_squares": non_negative_least_squares}, raise_exception=True, ) assert isinstance(result, Scheme) assert result.model.dataset_group_models["default"].residual_function == expected assert "<model_file>dataset_groups.default.residual_function" in warnings[0].message.args[0]
def test_scheme_spec_deprecations( monkeypatch: MonkeyPatch, scheme_yml_str: str, expected_key: str, expected_value: Any, ): """Warning gets emitted by load_model""" return_dicts = [] with monkeypatch.context() as m: m.setattr(yml_module, "fromdict", lambda _, spec, *args, **kwargs: return_dicts.append(spec)) record, _ = deprecation_warning_on_call_test_helper( load_scheme, args=(scheme_yml_str, ), kwargs={"format_name": "yml_str"}) return_dict = return_dicts[0] assert expected_key in return_dict assert return_dict[expected_key] == expected_value assert len(record) == 1
def test_scheme_from_yaml_file_method(tmp_path: Path): """Create Scheme from file.""" scheme_path = tmp_path / "scheme.yml" model_yml_str = """ megacomplex: m1: type: decay k_matrix: [] dataset: dataset1: megacomplex: [m1] """ model_path = tmp_path / "model.yml" model_path.write_text(model_yml_str) parameter_path = tmp_path / "parameters.yml" parameter_path.write_text("[1.0, 67.0]") dataset_path = tmp_path / "dataset.nc" xr.DataArray([[1, 2, 3]], coords=[("e", [1]), ("c", [1, 2, 3])]).to_dataset( name="data" ).to_netcdf(dataset_path) scheme_path.write_text( f""" model: {model_path} parameters: {parameter_path} maximum_number_function_evaluations: 42 data: dataset1: {dataset_path}""" ) _, result = deprecation_warning_on_call_test_helper( Scheme.from_yaml_file, args=[str(scheme_path)], raise_exception=True ) assert isinstance(result, Scheme)
def test_model_spec_deprecations( monkeypatch: MonkeyPatch, model_yml_str: str, expected_nr_of_warnings: int, expected_key: str, expected_value: Any, ): """Warning gets emitted by load_model""" return_dicts = [] with monkeypatch.context() as m: m.setattr(yml_module, "sanitize_yaml", lambda spec: return_dicts.append(spec)) record, _ = deprecation_warning_on_call_test_helper( load_model, args=(model_yml_str, ), kwargs={"format_name": "yml_str"}) return_dict = return_dicts[0] assert expected_key in return_dict assert return_dict[expected_key] == expected_value assert len(record) == expected_nr_of_warnings
def test_deprecation_warning_on_call_test_helper_no_warn(): """Fail no warning""" deprecation_warning_on_call_test_helper(dummy_no_warn, args=["foo"], kwargs={"bar": True})