Skip to content

Commit f86bab5

Browse files
committed
Subclass all DataverseErrors
1 parent 72137cb commit f86bab5

4 files changed

Lines changed: 25 additions & 10 deletions

File tree

dataverse/connection.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import requests
33

44
from dataverse import Dataverse
5-
from exceptions import DataverseError, UnauthorizedError
5+
from exceptions import DataverseError, UnauthorizedError, ConnectionError
66
from utils import get_elements, is_not_root_dataverse
77

88

@@ -34,7 +34,7 @@ def connect(self):
3434
if resp.status_code == 403:
3535
raise UnauthorizedError('The credentials provided are invalid.')
3636
elif resp.status_code != 200:
37-
raise DataverseError('Could not connect to the Dataverse')
37+
raise ConnectionError('Could not connect to the Dataverse')
3838

3939
self.service_document = etree.XML(resp.content)
4040
self.connected = True

dataverse/dataset.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,10 @@
55
from lxml import etree
66
import requests
77

8-
from exceptions import DataverseError, MethodNotAllowedError, NoContainerError
8+
from exceptions import (
9+
MethodNotAllowedError, NoContainerError, OperationFailedError,
10+
ConnectionError,
11+
)
912
from file import DataverseFile
1013
from settings import SWORD_BOOTSTRAP
1114
from utils import get_element, get_elements, get_files_in_path, add_field
@@ -91,7 +94,7 @@ def get_entry(self, refresh=False):
9194
resp = requests.get(self.edit_uri, auth=self.connection.auth)
9295

9396
if resp.status_code != 200:
94-
raise DataverseError('Atom entry could not be retrieved.')
97+
raise ConnectionError('Atom entry could not be retrieved.')
9598

9699
entry_string = resp.content
97100
self._entry = etree.XML(entry_string)
@@ -125,7 +128,7 @@ def get_statement(self, refresh=False):
125128
resp = requests.get(self.statement_uri, auth=self.connection.auth)
126129

127130
if resp.status_code != 200:
128-
raise DataverseError('Statement could not be retrieved.')
131+
raise ConnectionError('Statement could not be retrieved.')
129132

130133
self._statement = resp.content
131134
return self._statement
@@ -218,7 +221,7 @@ def publish(self):
218221
)
219222

220223
if resp.status_code != 200:
221-
raise DataverseError('The Dataverse could not be published.')
224+
raise OperationFailedError('The Dataverse could not be published.')
222225

223226
receipt = resp.content
224227
self._refresh(receipt=receipt)
@@ -235,7 +238,7 @@ def delete_file(self, dataverse_file):
235238
)
236239

237240
if resp.status_code != 204:
238-
raise DataverseError('The file could not be deleted.')
241+
raise OperationFailedError('The file could not be deleted.')
239242

240243
def delete_all_files(self):
241244
for f in self.get_files():

dataverse/dataverse.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import requests
22

33
from dataset import Dataset
4-
from exceptions import DataverseError, InsufficientMetadataError, MethodNotAllowedError
4+
from exceptions import (
5+
InsufficientMetadataError, MethodNotAllowedError, OperationFailedError,
6+
)
57
from utils import get_element, get_elements, sanitize
68

79

@@ -50,7 +52,7 @@ def publish(self):
5052
)
5153

5254
if resp.status_code != 200:
53-
raise DataverseError('The Dataverse could not be published.')
55+
raise OperationFailedError('The Dataverse could not be published.')
5456

5557
def add_dataset(self, dataset):
5658
if get_element(dataset._entry, 'title', 'dcterms') is None:
@@ -68,7 +70,7 @@ def add_dataset(self, dataset):
6870
)
6971

7072
if resp.status_code != 201:
71-
raise DataverseError('This dataset could not be added.')
73+
raise OperationFailedError('This dataset could not be added.')
7274

7375
dataset.dataverse = self
7476
dataset._refresh(receipt=resp.content)

dataverse/exceptions.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,14 @@ class MethodNotAllowedError(DataverseError):
2020

2121
class NoContainerError(DataverseError):
2222
"""Raised if a dataset attempts to access the server before it is added to a Dataverse"""
23+
pass
24+
25+
26+
class ConnectionError(DataverseError):
27+
"""Raised when connection fails for an unknown reason"""
28+
pass
29+
30+
31+
class OperationFailedError(DataverseError):
32+
"""Raised when an operation fails for an unknown reason"""
2333
pass

0 commit comments

Comments
 (0)