Esempio n. 1
0
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
        )
Esempio n. 2
0
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)
Esempio n. 3
0
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()
Esempio n. 4
0
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)
Esempio n. 5
0
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
Esempio n. 7
0
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"]
Esempio n. 8
0
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
Esempio n. 9
0
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"
Esempio n. 10
0
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"
Esempio n. 11
0
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)
Esempio n. 12
0
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
Esempio n. 13
0
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
Esempio n. 14
0
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]
Esempio n. 15
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]
Esempio n. 16
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]
Esempio n. 17
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
Esempio n. 18
0
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)
Esempio n. 19
0
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
Esempio n. 20
0
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})