Skip to content

Commit 4912d57

Browse files
committed
implement the suggestions
1 parent bc4bf1e commit 4912d57

2 files changed

Lines changed: 4 additions & 23 deletions

File tree

  • openml

openml/_api/resources/base/versions.py

Lines changed: 4 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
from collections.abc import Mapping
44
from typing import Any
5-
from xml.parsers.expat import ExpatError
65

76
import xmltodict
87

@@ -72,7 +71,7 @@ def publish(self, path: str, files: Mapping[str, Any] | None) -> int:
7271
If the server returns an error during upload.
7372
"""
7473
response = self._http.post(path, files=files)
75-
parsed_response = self._parse_xml_response(response.content)
74+
parsed_response = xmltodict.parse(response.content)
7675
return self._extract_id_from_upload(parsed_response)
7776

7877
def delete(self, resource_id: int) -> bool:
@@ -107,7 +106,7 @@ def delete(self, resource_id: int) -> bool:
107106
path = f"{endpoint_name}/{resource_id}"
108107
try:
109108
response = self._http.delete(path)
110-
result = self._parse_xml_response(response.content)
109+
result = xmltodict.parse(response.content)
111110
return f"oml:{endpoint_name}_delete" in result
112111
except OpenMLServerException as e:
113112
self._handle_delete_exception(endpoint_name, e)
@@ -144,7 +143,7 @@ def tag(self, resource_id: int, tag: str) -> list[str]:
144143
data = {f"{endpoint_name}_id": resource_id, "tag": tag}
145144
response = self._http.post(path, data=data)
146145

147-
parsed_response = self._parse_xml_response(response.content, force_list={"oml:tag"})
146+
parsed_response = xmltodict.parse(response.content, force_list={"oml:tag"})
148147
result = parsed_response[f"oml:{endpoint_name}_tag"]
149148
tags: list[str] = result.get("oml:tag", [])
150149

@@ -181,30 +180,12 @@ def untag(self, resource_id: int, tag: str) -> list[str]:
181180
data = {f"{endpoint_name}_id": resource_id, "tag": tag}
182181
response = self._http.post(path, data=data)
183182

184-
parsed_response = self._parse_xml_response(response.content, force_list={"oml:tag"})
183+
parsed_response = xmltodict.parse(response.content, force_list={"oml:tag"})
185184
result = parsed_response[f"oml:{endpoint_name}_untag"]
186185
tags: list[str] = result.get("oml:tag", [])
187186

188187
return tags
189188

190-
def _parse_xml_response(self, payload: bytes | str, **kwargs: Any) -> Mapping[str, Any]:
191-
try:
192-
parsed_response: Mapping[str, Any] = xmltodict.parse(payload, **kwargs)
193-
return parsed_response
194-
except ExpatError:
195-
payload_text = (
196-
payload.decode("utf-8", errors="ignore") if isinstance(payload, bytes) else payload
197-
)
198-
xml_start = payload_text.find("<?xml")
199-
if xml_start == -1:
200-
xml_start = payload_text.find("<oml:")
201-
if xml_start == -1:
202-
raise
203-
204-
xml_text = payload_text[xml_start:]
205-
parsed_fallback: Mapping[str, Any] = xmltodict.parse(xml_text, **kwargs)
206-
return parsed_fallback
207-
208189
def _get_endpoint_name(self) -> str:
209190
if self.resource_type == ResourceType.DATASET:
210191
return "data"

openml/tests.test_runs.test_run_functions.TestRun.test_format_prediction_task_without_classlabels_set/org/openml/test/locks/tasks.functions.get_task

Whitespace-only changes.

0 commit comments

Comments
 (0)