Skip to content

Commit 7721835

Browse files
committed
ADD URL to exception
1 parent ef955d5 commit 7721835

2 files changed

Lines changed: 14 additions & 5 deletions

File tree

openml/_api_calls.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ def _read_url_files(url, data=None, file_dictionary=None, file_elements=None):
9595
# 'gzip,deflate'
9696
response = requests.post(url, data=data, files=file_elements)
9797
if response.status_code != 200:
98-
raise _parse_server_exception(response)
98+
raise _parse_server_exception(response, url=url)
9999
if 'Content-Encoding' not in response.headers or \
100100
response.headers['Content-Encoding'] != 'gzip':
101101
warnings.warn('Received uncompressed content from OpenML for %s.' % url)
@@ -117,14 +117,14 @@ def _read_url(url, data=None):
117117
response = requests.post(url, data=data)
118118

119119
if response.status_code != 200:
120-
raise _parse_server_exception(response)
120+
raise _parse_server_exception(response, url=url)
121121
if 'Content-Encoding' not in response.headers or \
122122
response.headers['Content-Encoding'] != 'gzip':
123123
warnings.warn('Received uncompressed content from OpenML for %s.' % url)
124124
return response.text
125125

126126

127-
def _parse_server_exception(response):
127+
def _parse_server_exception(response, url=None):
128128
# OpenML has a sopisticated error system
129129
# where information about failures is provided. try to parse this
130130
try:
@@ -143,4 +143,9 @@ def _parse_server_exception(response):
143143
# 512 for runs, 370 for datasets (should be 372), 500 for flows
144144
# 482 for tasks
145145
return OpenMLServerNoResult(code, message, additional)
146-
return OpenMLServerException(code, message, additional)
146+
return OpenMLServerException(
147+
code=code,
148+
message=message,
149+
additional=additional,
150+
url=url
151+
)

openml/exceptions.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,13 @@ class OpenMLServerException(OpenMLServerError):
1616
"""exception for when the result of the server was
1717
not 200 (e.g., listing call w/o results). """
1818

19-
def __init__(self, code, message, additional=None):
19+
# Code needs to be optional to allow the exceptino to be picklable:
20+
# https://stackoverflow.com/questions/16244923/how-to-make-a-custom-exception-class-with-multiple-init-args-pickleable
21+
def __init__(self, message, code=None, additional=None, url=None):
22+
self.message = message
2023
self.code = code
2124
self.additional = additional
25+
self.url = url
2226
super(OpenMLServerException, self).__init__(message)
2327

2428

0 commit comments

Comments
 (0)