Skip to content

Commit cabaecf

Browse files
committed
fix linting for builder
1 parent bfb2d3e commit cabaecf

2 files changed

Lines changed: 59 additions & 11 deletions

File tree

openml/_api/setup/backend.py

Lines changed: 49 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,24 @@
11
from __future__ import annotations
22

33
from copy import deepcopy
4-
from typing import Any
4+
from typing import TYPE_CHECKING, Any, cast
55

66
from .builder import APIBackendBuilder
77
from .config import Config
88

9+
if TYPE_CHECKING:
10+
from openml._api.resources import (
11+
DatasetAPI,
12+
EstimationProcedureAPI,
13+
EvaluationAPI,
14+
EvaluationMeasureAPI,
15+
FlowAPI,
16+
RunAPI,
17+
SetupAPI,
18+
StudyAPI,
19+
TaskAPI,
20+
)
21+
922

1023
class APIBackend:
1124
_instance: APIBackend | None = None
@@ -14,12 +27,41 @@ def __init__(self, config: Config | None = None):
1427
self._config: Config = config or Config()
1528
self._backend = APIBackendBuilder.build(self._config)
1629

17-
def __getattr__(self, name: str) -> Any:
18-
"""
19-
Delegate attribute access to the underlying backend.
20-
Called only if attribute is not found on RuntimeBackend.
21-
"""
22-
return getattr(self._backend, name)
30+
@property
31+
def dataset(self) -> DatasetAPI:
32+
return cast("DatasetAPI", self._backend.dataset)
33+
34+
@property
35+
def task(self) -> TaskAPI:
36+
return cast("TaskAPI", self._backend.task)
37+
38+
@property
39+
def evaluation_measure(self) -> EvaluationMeasureAPI:
40+
return cast("EvaluationMeasureAPI", self._backend.evaluation_measure)
41+
42+
@property
43+
def estimation_procedure(self) -> EstimationProcedureAPI:
44+
return cast("EstimationProcedureAPI", self._backend.estimation_procedure)
45+
46+
@property
47+
def evaluation(self) -> EvaluationAPI:
48+
return cast("EvaluationAPI", self._backend.evaluation)
49+
50+
@property
51+
def flow(self) -> FlowAPI:
52+
return cast("FlowAPI", self._backend.flow)
53+
54+
@property
55+
def study(self) -> StudyAPI:
56+
return cast("StudyAPI", self._backend.study)
57+
58+
@property
59+
def run(self) -> RunAPI:
60+
return cast("RunAPI", self._backend.run)
61+
62+
@property
63+
def setup(self) -> SetupAPI:
64+
return cast("SetupAPI", self._backend.setup)
2365

2466
@classmethod
2567
def get_instance(cls) -> APIBackend:

openml/_api/setup/builder.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,9 @@
66

77
from openml._api.clients import HTTPCache, HTTPClient, MinIOClient
88
from openml._api.resources import API_REGISTRY, FallbackProxy, ResourceAPI
9+
from openml.enums import ResourceType
910

1011
if TYPE_CHECKING:
11-
from openml.enums import ResourceType
12-
1312
from .config import Config
1413

1514

@@ -18,8 +17,15 @@ def __init__(
1817
self,
1918
resource_apis: Mapping[ResourceType, ResourceAPI | FallbackProxy],
2019
):
21-
for resource_type, resource_api in resource_apis.items():
22-
setattr(self, resource_type.value, resource_api)
20+
self.dataset = resource_apis[ResourceType.DATASET]
21+
self.task = resource_apis[ResourceType.TASK]
22+
self.evaluation_measure = resource_apis[ResourceType.EVALUATION_MEASURE]
23+
self.estimation_procedure = resource_apis[ResourceType.ESTIMATION_PROCEDURE]
24+
self.evaluation = resource_apis[ResourceType.EVALUATION]
25+
self.flow = resource_apis[ResourceType.FLOW]
26+
self.study = resource_apis[ResourceType.STUDY]
27+
self.run = resource_apis[ResourceType.RUN]
28+
self.setup = resource_apis[ResourceType.SETUP]
2329

2430
@classmethod
2531
def build(cls, config: Config) -> APIBackendBuilder:

0 commit comments

Comments
 (0)