Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

🩹 Remove inheriting from 'FileLoadableProtocol' #912

Merged
merged 1 commit into from
Nov 25, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions glotaran/model/model.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
from glotaran.parameter import Parameter
from glotaran.parameter import ParameterGroup
from glotaran.plugin_system.megacomplex_registration import get_megacomplex
from glotaran.typing.protocols import FileLoadableProtocol
from glotaran.utils.ipython import MarkdownStr

default_model_items = {
Expand All @@ -44,7 +43,7 @@
}


class Model(FileLoadableProtocol):
class Model:
"""A base class for global analysis models."""

loader = load_model
Expand Down
3 changes: 1 addition & 2 deletions glotaran/parameter/parameter_group.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
from glotaran.io import load_parameters
from glotaran.io import save_parameters
from glotaran.parameter.parameter import Parameter
from glotaran.typing.protocols import FileLoadableProtocol
from glotaran.utils.ipython import MarkdownStr

if TYPE_CHECKING:
Expand All @@ -31,7 +30,7 @@ def __init__(self, path, label): # noqa: D107
super().__init__(f"Cannot find parameter {'.'.join(path+[label])!r}")


class ParameterGroup(dict, FileLoadableProtocol):
class ParameterGroup(dict):
"""Represents are group of parameters.

Can contain other groups, creating a tree-like hierarchy.
Expand Down
3 changes: 1 addition & 2 deletions glotaran/parameter/parameter_history.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,12 @@
import pandas as pd

from glotaran.parameter.parameter_group import ParameterGroup
from glotaran.typing.protocols import FileLoadableProtocol

if TYPE_CHECKING:
from os import PathLike


class ParameterHistory(FileLoadableProtocol):
class ParameterHistory:
"""A class representing a history of parameters."""

def __init__(self): # noqa: D107
Expand Down
18 changes: 13 additions & 5 deletions glotaran/project/result.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,16 +54,24 @@ class Result:
free_parameter_labels: list[str]
"""List of labels of the free parameters used in optimization."""

scheme: Scheme = file_loadable_field(Scheme)
scheme: Scheme = file_loadable_field(Scheme) # type:ignore[type-var]

initial_parameters: ParameterGroup = file_loadable_field(ParameterGroup)
initial_parameters: ParameterGroup = file_loadable_field( # type:ignore[type-var]
ParameterGroup
)

optimized_parameters: ParameterGroup = file_loadable_field(ParameterGroup)
optimized_parameters: ParameterGroup = file_loadable_field( # type:ignore[type-var]
ParameterGroup
)

parameter_history: ParameterHistory = file_loadable_field(ParameterHistory)
parameter_history: ParameterHistory = file_loadable_field( # type:ignore[type-var]
ParameterHistory
)
"""The parameter history."""

data: Mapping[str, xr.Dataset] = file_loadable_field(DatasetMapping, is_wrapper_class=True)
data: Mapping[str, xr.Dataset] = file_loadable_field( # type:ignore[type-var]
DatasetMapping, is_wrapper_class=True
)
"""The resulting data as a dictionary of :xarraydoc:`Dataset`.

Notes
Expand Down
11 changes: 6 additions & 5 deletions glotaran/project/scheme.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
from glotaran.project.dataclass_helpers import exclude_from_dict_field
from glotaran.project.dataclass_helpers import file_loadable_field
from glotaran.project.dataclass_helpers import init_file_loadable_fields
from glotaran.typing.protocols import FileLoadableProtocol
from glotaran.utils.io import DatasetMapping
from glotaran.utils.ipython import MarkdownStr

Expand All @@ -30,15 +29,17 @@


@dataclass
class Scheme(FileLoadableProtocol):
class Scheme:
"""A scheme is a collection of a model, parameters and a dataset.

A scheme also holds options for optimization.
"""

model: Model = file_loadable_field(Model)
parameters: ParameterGroup = file_loadable_field(ParameterGroup)
data: Mapping[str, xr.Dataset] = file_loadable_field(DatasetMapping, is_wrapper_class=True)
model: Model = file_loadable_field(Model) # type:ignore[type-var]
parameters: ParameterGroup = file_loadable_field(ParameterGroup) # type:ignore[type-var]
data: Mapping[str, xr.Dataset] = file_loadable_field(
DatasetMapping, is_wrapper_class=True
) # type:ignore[type-var]
clp_link_tolerance: float = 0.0
maximum_number_function_evaluations: int | None = None
non_negative_least_squares: bool | None = exclude_from_dict_field(None)
Expand Down
3 changes: 1 addition & 2 deletions glotaran/project/test/test_dataclass_helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,10 @@
from glotaran.project.dataclass_helpers import file_loadable_field
from glotaran.project.dataclass_helpers import fromdict
from glotaran.project.dataclass_helpers import init_file_loadable_fields
from glotaran.typing.protocols import FileLoadableProtocol


@dataclass
class DummyFileLoadable(FileLoadableProtocol):
class DummyFileLoadable:
def __init__(self, val: str) -> None:
self.source_path = "dummy_file"
self.data = {"foo": val}
Expand Down
3 changes: 1 addition & 2 deletions glotaran/utils/io.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
import xarray as xr

from glotaran.plugin_system.data_io_registration import load_dataset
from glotaran.typing.protocols import FileLoadableProtocol
from glotaran.typing.types import DatasetMappable

if TYPE_CHECKING:
Expand Down Expand Up @@ -69,7 +68,7 @@ def _load_datasets(dataset_mappable: DatasetMappable, index: int = 1) -> dict[st
return dataset_mapping


class DatasetMapping(MutableMapping, FileLoadableProtocol):
class DatasetMapping(MutableMapping):
"""Wrapper class for a mapping of datasets which can be used for a ``file_loadable_field``."""

def __init__(self, init_map: Mapping[str, xr.Dataset] = None) -> None:
Expand Down