Skip to content

Commit 070731d

Browse files
committed
Merge branch 'migration' of https://github.com/geetu040/openml-python into runs-migration-stacked
2 parents 8b07a20 + 2ee7fa3 commit 070731d

4 files changed

Lines changed: 42 additions & 9 deletions

File tree

openml/_api/clients/http.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ def __init__(
211211
def server(self) -> str:
212212
server = openml.config.servers[self.api_version]["server"]
213213
if server is None:
214-
servers_repr = {k.value: v for k, v in openml.config.servers}
214+
servers_repr = {k.value: v for k, v in openml.config.servers.items()}
215215
raise ValueError(
216216
f'server found to be None for api_version="{self.api_version}" in {servers_repr}'
217217
)

openml/_api/setup/backend.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from .builder import APIBackendBuilder
88

99
if TYPE_CHECKING:
10+
from openml._api.clients import HTTPClient, MinIOClient
1011
from openml._api.resources import (
1112
DatasetAPI,
1213
EstimationProcedureAPI,
@@ -111,6 +112,18 @@ def run(self) -> RunAPI:
111112
def setup(self) -> SetupAPI:
112113
return cast("SetupAPI", self._backend.setup)
113114

115+
@property
116+
def http_client(self) -> HTTPClient:
117+
return cast("HTTPClient", self._backend.http_client)
118+
119+
@property
120+
def fallback_http_client(self) -> HTTPClient | None:
121+
return cast("HTTPClient | None", self._backend.fallback_http_client)
122+
123+
@property
124+
def minio_client(self) -> MinIOClient:
125+
return cast("MinIOClient", self._backend.minio_client)
126+
114127
@classmethod
115128
def get_instance(cls) -> APIBackend:
116129
"""

openml/_api/setup/builder.py

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
11
from __future__ import annotations
22

33
from collections.abc import Mapping
4+
from typing import TYPE_CHECKING
45

56
from openml._api.clients import HTTPClient, MinIOClient
6-
from openml._api.resources import API_REGISTRY, FallbackProxy, ResourceAPI
7-
from openml.enums import APIVersion, ResourceType
7+
from openml._api.resources import API_REGISTRY, FallbackProxy
8+
from openml.enums import ResourceType
9+
10+
if TYPE_CHECKING:
11+
from openml._api.resources import ResourceAPI
12+
from openml.enums import APIVersion
813

914

1015
class APIBackendBuilder:
@@ -41,10 +46,17 @@ class APIBackendBuilder:
4146
API interface for run resources.
4247
setup : ResourceAPI | FallbackProxy
4348
API interface for setup resources.
49+
http_client : HTTPClient
50+
Client for HTTP Communication.
51+
fallback_http_client : HTTPClient | None
52+
Fallback Client for HTTP Communication.
53+
minio_client : MinIOClient
54+
Client for MinIO Communication.
4455
"""
4556

4657
def __init__(
4758
self,
59+
clients: Mapping[str, HTTPClient | MinIOClient | None],
4860
resource_apis: Mapping[ResourceType, ResourceAPI | FallbackProxy],
4961
):
5062
self.dataset = resource_apis[ResourceType.DATASET]
@@ -56,6 +68,9 @@ def __init__(
5668
self.study = resource_apis[ResourceType.STUDY]
5769
self.run = resource_apis[ResourceType.RUN]
5870
self.setup = resource_apis[ResourceType.SETUP]
71+
self.http_client = clients["http_client"]
72+
self.fallback_http_client = clients["fallback_http_client"]
73+
self.minio_client = clients["minio_client"]
5974

6075
@classmethod
6176
def build(
@@ -82,17 +97,22 @@ def build(
8297
Builder instance with all resource API interfaces initialized.
8398
"""
8499
minio_client = MinIOClient()
85-
86100
primary_http_client = HTTPClient(api_version=api_version)
101+
clients: dict[str, HTTPClient | MinIOClient | None] = {
102+
"http_client": primary_http_client,
103+
"fallback_http_client": None,
104+
"minio_client": minio_client,
105+
}
87106

88107
resource_apis: dict[ResourceType, ResourceAPI] = {}
89108
for resource_type, resource_api_cls in API_REGISTRY[api_version].items():
90109
resource_apis[resource_type] = resource_api_cls(primary_http_client, minio_client)
91110

92111
if fallback_api_version is None:
93-
return cls(resource_apis)
112+
return cls(clients, resource_apis)
94113

95114
fallback_http_client = HTTPClient(api_version=fallback_api_version)
115+
clients["fallback_http_client"] = fallback_http_client
96116

97117
fallback_resource_apis: dict[ResourceType, ResourceAPI] = {}
98118
for resource_type, resource_api_cls in API_REGISTRY[fallback_api_version].items():
@@ -105,4 +125,4 @@ def build(
105125
for name in resource_apis
106126
}
107127

108-
return cls(merged)
128+
return cls(clients, merged)

tests/test_api/test_versions.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import pytest
22
from requests import Session, Response
33
from unittest.mock import patch
4-
from openml._api import FallbackProxy, ResourceAPI, ResourceV1API, ResourceV2API, TaskAPI
4+
from openml._api import FallbackProxy, ResourceAPI, ResourceV1API, ResourceV2API
55
from openml.enums import ResourceType
66
from openml.exceptions import OpenMLNotSupportedError
77
import openml
@@ -11,11 +11,11 @@ class DummyTaskAPI(ResourceAPI):
1111
resource_type: ResourceType = ResourceType.TASK
1212

1313

14-
class DummyTaskV1API(ResourceV1API, TaskAPI):
14+
class DummyTaskV1API(ResourceV1API, DummyTaskAPI):
1515
pass
1616

1717

18-
class DummyTaskV2API(ResourceV2API, TaskAPI):
18+
class DummyTaskV2API(ResourceV2API, DummyTaskAPI):
1919
pass
2020

2121

0 commit comments

Comments
 (0)