|
1 |
| -from collections.abc import Iterable |
2 | 1 | from datetime import datetime
|
3 | 2 | from typing import TYPE_CHECKING, Any, ClassVar
|
4 | 3 |
|
|
10 | 9 | # TODO Import this from typing when dropping Python 3.11
|
11 | 10 | from typing_extensions import Unpack
|
12 | 11 |
|
13 |
| -from ixmp4.core.base import BaseFacade, BaseModelFacade |
| 12 | +from ixmp4.core.base import BaseModelFacade |
14 | 13 | from ixmp4.data.abstract import Docs as DocsModel
|
15 | 14 | from ixmp4.data.abstract import Parameter as ParameterModel
|
16 | 15 | from ixmp4.data.abstract import Run, Unit
|
17 | 16 | from ixmp4.data.abstract.optimization import Column
|
18 | 17 |
|
| 18 | +from .base import Creator, Lister, Retriever, Tabulator |
| 19 | + |
19 | 20 |
|
20 | 21 | class Parameter(BaseModelFacade):
|
21 | 22 | _model: ParameterModel
|
@@ -99,44 +100,25 @@ def __str__(self) -> str:
|
99 | 100 | return f"<Parameter {self.id} name={self.name}>"
|
100 | 101 |
|
101 | 102 |
|
102 |
| -class ParameterRepository(BaseFacade): |
103 |
| - _run: Run |
104 |
| - |
| 103 | +class ParameterRepository( |
| 104 | + Creator[Parameter, ParameterModel], |
| 105 | + Retriever[Parameter, ParameterModel], |
| 106 | + Lister[Parameter, ParameterModel], |
| 107 | + Tabulator[Parameter, ParameterModel], |
| 108 | +): |
105 | 109 | def __init__(self, _run: Run, **kwargs: Unpack["InitKwargs"]) -> None:
|
106 |
| - super().__init__(**kwargs) |
107 |
| - self._run = _run |
| 110 | + super().__init__(_run=_run, **kwargs) |
| 111 | + self._backend_repository = self.backend.optimization.parameters |
| 112 | + self._model_type = Parameter |
108 | 113 |
|
109 | 114 | def create(
|
110 | 115 | self,
|
111 | 116 | name: str,
|
112 | 117 | constrained_to_indexsets: list[str],
|
113 | 118 | column_names: list[str] | None = None,
|
114 | 119 | ) -> Parameter:
|
115 |
| - model = self.backend.optimization.parameters.create( |
| 120 | + return super().create( |
116 | 121 | name=name,
|
117 |
| - run_id=self._run.id, |
118 | 122 | constrained_to_indexsets=constrained_to_indexsets,
|
119 | 123 | column_names=column_names,
|
120 | 124 | )
|
121 |
| - return Parameter(_backend=self.backend, _model=model) |
122 |
| - |
123 |
| - def get(self, name: str) -> Parameter: |
124 |
| - model = self.backend.optimization.parameters.get(run_id=self._run.id, name=name) |
125 |
| - return Parameter(_backend=self.backend, _model=model) |
126 |
| - |
127 |
| - def list(self, name: str | None = None) -> Iterable[Parameter]: |
128 |
| - parameters = self.backend.optimization.parameters.list( |
129 |
| - run_id=self._run.id, name=name |
130 |
| - ) |
131 |
| - return [ |
132 |
| - Parameter( |
133 |
| - _backend=self.backend, |
134 |
| - _model=i, |
135 |
| - ) |
136 |
| - for i in parameters |
137 |
| - ] |
138 |
| - |
139 |
| - def tabulate(self, name: str | None = None) -> pd.DataFrame: |
140 |
| - return self.backend.optimization.parameters.tabulate( |
141 |
| - run_id=self._run.id, name=name |
142 |
| - ) |
0 commit comments