Skip to content

Commit 6d5fe68

Browse files
committed
Prefer single quotes and PEP8 improvements
1 parent bbd4b45 commit 6d5fe68

7 files changed

Lines changed: 76 additions & 73 deletions

File tree

dataverse/connection.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ class Connection(object):
1111
def __init__(self, host, token):
1212
self.token = token
1313
self.host = host
14-
self.sd_uri = "https://{host}/dvn/api/data-deposit/v1.1/swordv2/service-document".format(host=self.host)
14+
self.sd_uri = 'https://{host}/dvn/api/data-deposit/v1.1/swordv2/service-document'.format(host=self.host)
1515
self.service_document = None
16-
16+
1717
self.connect()
1818

1919
@property
@@ -65,9 +65,9 @@ def get_dataverses(self, refresh=False):
6565

6666
collections = get_elements(
6767
self.service_document[0],
68-
tag="collection",
68+
tag='collection',
6969
)
70-
70+
7171
return [Dataverse(self, col) for col in collections]
7272

7373
def get_dataverse(self, alias, refresh=False):

dataverse/dataset.py

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -55,13 +55,13 @@ def from_xml_file(cls, xml_file):
5555
def from_dataverse(cls, entry_element, dataverse):
5656

5757
# Entry not in appropriate format--extract relevant metadata
58-
id_element = get_element(entry_element, tag="id")
59-
title_element = get_element(entry_element, tag="title")
58+
id_element = get_element(entry_element, tag='id')
59+
title_element = get_element(entry_element, tag='title')
6060
edit_media_element = get_element(
6161
entry_element,
62-
tag="link",
63-
attribute="rel",
64-
attribute_value="edit-media",
62+
tag='link',
63+
attribute='rel',
64+
attribute_value='edit-media',
6565
)
6666

6767
return cls(
@@ -78,7 +78,7 @@ def doi(self):
7878
raise NoContainerError('This dataset has not been added to a Dataverse.')
7979

8080
# Note: This depends strongly on URL structure, and may break easily
81-
return self.edit_media_uri.rsplit("/study/", 1)[-1]
81+
return self.edit_media_uri.rsplit('/study/', 1)[-1]
8282

8383
@property
8484
def id(self):
@@ -105,7 +105,7 @@ def citation(self):
105105
return get_element(
106106
self.get_entry(),
107107
namespace='http://purl.org/dc/terms/',
108-
tag="bibliographicCitation"
108+
tag='bibliographicCitation'
109109
).text
110110

111111
@property
@@ -136,19 +136,19 @@ def get_statement(self, refresh=False):
136136
# Try to find statement uri without a request to the server
137137
link = get_element(
138138
self.get_entry(),
139-
tag="link",
140-
attribute="rel",
141-
attribute_value="http://purl.org/net/sword/terms/statement",
139+
tag='link',
140+
attribute='rel',
141+
attribute_value='http://purl.org/net/sword/terms/statement',
142142
)
143143
if link is None:
144144
# Find link with request to server
145145
link = get_element(
146146
self.get_entry(refresh=True),
147-
tag="link",
148-
attribute="rel",
149-
attribute_value="http://purl.org/net/sword/terms/statement",
147+
tag='link',
148+
attribute='rel',
149+
attribute_value='http://purl.org/net/sword/terms/statement',
150150
)
151-
self.statement_uri = link.get("href")
151+
self.statement_uri = link.get('href')
152152

153153
resp = requests.get(self.statement_uri, auth=self.connection.auth)
154154

@@ -164,13 +164,13 @@ def get_state(self, refresh=False):
164164

165165
self._state = get_element(
166166
self.get_statement(refresh),
167-
tag="category",
168-
attribute="term",
169-
attribute_value="latestVersionState"
167+
tag='category',
168+
attribute='term',
169+
attribute_value='latestVersionState'
170170
).text
171171
return self._state
172172

173-
def get_json(self, version="latest", refresh=False):
173+
def get_json(self, version='latest', refresh=False):
174174
if not refresh and self._json.get(version):
175175
return self._json.get(version)
176176

@@ -193,15 +193,15 @@ def get_json(self, version="latest", refresh=False):
193193
self._json[version] = resp.json()['data']
194194
return self._json[version]
195195

196-
def get_file(self, file_name, version="latest", refresh=True):
196+
def get_file(self, file_name, version='latest', refresh=True):
197197
files = self.get_files(version, refresh)
198198
return next((f for f in files if f.name == file_name), None)
199199

200-
def get_file_by_id(self, file_id, version="latest", refresh=True):
200+
def get_file_by_id(self, file_id, version='latest', refresh=True):
201201
files = self.get_files(version, refresh)
202202
return next((f for f in files if f.id == file_id), None)
203203

204-
def get_files(self, version="latest", refresh=True):
204+
def get_files(self, version='latest', refresh=True):
205205
try:
206206
files_json = self.get_json(version, refresh)['files']
207207
return [DataverseFile.from_json(self, file_json)
@@ -264,7 +264,7 @@ def publish(self):
264264

265265
receipt = resp.content
266266
self._refresh(receipt=receipt)
267-
267+
268268
def delete_file(self, dataverse_file):
269269
resp = requests.delete(
270270
dataverse_file.edit_media_uri,
@@ -273,7 +273,7 @@ def delete_file(self, dataverse_file):
273273

274274
if resp.status_code != 204:
275275
raise OperationFailedError('The file could not be deleted.')
276-
276+
277277
def delete_all_files(self):
278278
for f in self.get_files():
279279
self.delete_file(f)

dataverse/dataverse.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ def is_published(self):
2424

2525
status_tag = get_element(
2626
collection_info,
27-
namespace="http://purl.org/net/sword/terms/state",
28-
tag="dataverseHasBeenReleased",
27+
namespace='http://purl.org/net/sword/terms/state',
28+
tag='dataverseHasBeenReleased',
2929
)
3030
status = status_tag.text
3131

@@ -94,7 +94,7 @@ def add_dataset(self, dataset):
9494

9595
dataset.dataverse = self
9696
dataset._refresh(receipt=resp.content)
97-
97+
9898
def delete_dataset(self, dataset):
9999
if dataset._state == 'DELETED' or dataset._state == 'DEACCESSIONED':
100100
return
@@ -104,12 +104,14 @@ def delete_dataset(self, dataset):
104104
auth=self.connection.auth,
105105
)
106106
if resp.status_code == 405:
107-
raise MethodNotAllowedError('Published datasets can only be '
108-
'deleted from the GUI. For more information, please refer to '
109-
'https://github.com/IQSS/dataverse/issues/778')
107+
raise MethodNotAllowedError(
108+
'Published datasets can only be deleted from the GUI. For '
109+
'more information, please refer to '
110+
'https://github.com/IQSS/dataverse/issues/778'
111+
)
110112

111113
dataset._state = 'DEACCESSIONED'
112-
114+
113115
def get_datasets(self):
114116

115117
collection_info = requests.get(

dataverse/settings/defaults.py

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,36 @@
11
import os
22

3-
TEST_HOST = "apitest.dataverse.org"
4-
TEST_TOKEN = "changeme"
3+
TEST_HOST = 'apitest.dataverse.org'
4+
TEST_TOKEN = 'changeme'
55

66
HERE = os.path.dirname(os.path.abspath(__file__))
77
BASE_PATH = os.path.abspath(os.path.join(HERE, os.pardir))
88

99
EXAMPLE_DICT = {
10-
"title": "ExampleTitle",
11-
"id": "ExampleID",
12-
"author": ["ExampleAuthor1", "ExampleAuthor2"],
13-
"producer": "ExampleProducer",
14-
"date": "1992-10-04",
15-
"description": "ExampleDescription",
16-
"abstract": "ExampleAbstract",
17-
"type": "ExampleType",
18-
"source": "ExampleSource",
19-
"restriction": "ExampleRestriction",
20-
"relation": "ExampleRelation",
21-
"keyword": "ExampleKeyword",
22-
"coverage": "ExampleCoverage",
23-
"publication": "ExamplePublication",
10+
'title': 'ExampleTitle',
11+
'id': 'ExampleID',
12+
'author': ['ExampleAuthor1', 'ExampleAuthor2'],
13+
'producer': 'ExampleProducer',
14+
'date': '1992-10-04',
15+
'description': 'ExampleDescription',
16+
'abstract': 'ExampleAbstract',
17+
'type': 'ExampleType',
18+
'source': 'ExampleSource',
19+
'restriction': 'ExampleRestriction',
20+
'relation': 'ExampleRelation',
21+
'keyword': 'ExampleKeyword',
22+
'coverage': 'ExampleCoverage',
23+
'publication': 'ExamplePublication',
2424
}
2525

26-
SWORD_BOOTSTRAP = """<?xml version="1.0"?>
27-
<entry xmlns="http://www.w3.org/2005/Atom"
28-
xmlns:dcterms="http://purl.org/dc/terms/">
29-
</entry>"""
26+
SWORD_BOOTSTRAP = '''<?xml version='1.0'?>
27+
<entry xmlns='http://www.w3.org/2005/Atom'
28+
xmlns:dcterms='http://purl.org/dc/terms/'>
29+
</entry>'''
3030

3131
SWORD_NAMESPACE = {
32-
"dcterms": "http://purl.org/dc/terms/",
33-
"atom": "http://www.w3.org/2005/Atom",
32+
'dcterms': 'http://purl.org/dc/terms/',
33+
'atom': 'http://www.w3.org/2005/Atom',
3434
}
3535

3636
UNIQUE_FIELDS = ['title', 'id', 'updated', 'summary']

dataverse/test/test_dataverse.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ def test_connect_unauthorized(self):
7979
def test_connect_unknown_failure(self):
8080
httpretty.register_uri(
8181
httpretty.GET,
82-
"https://{host}/dvn/api/data-deposit/v1.1/swordv2/service-document".format(host=TEST_HOST),
82+
'https://{host}/dvn/api/data-deposit/v1.1/swordv2/service-document'.format(host=TEST_HOST),
8383
status=400,
8484
)
8585

@@ -155,10 +155,10 @@ class TestDatasetOperations(object):
155155

156156
@classmethod
157157
def setup_class(cls):
158-
print "Connecting to DVN."
158+
print 'Connecting to Dataverse host at {0}'.format(TEST_HOST)
159159
cls.connection = Connection(TEST_HOST, TEST_TOKEN)
160160

161-
print "Creating test Dataverse"
161+
print 'Creating test Dataverse'
162162
cls.alias = str(uuid.uuid1())
163163
cls.connection.create_dataverse(
164164
cls.alias,
@@ -171,7 +171,7 @@ def setup_class(cls):
171171
@classmethod
172172
def teardown_class(cls):
173173

174-
print "Removing test Dataverse"
174+
print 'Removing test Dataverse'
175175
cls.connection.delete_dataverse(cls.alias)
176176
dataverse = cls.connection.get_dataverse(cls.alias, True)
177177
assert dataverse is None
@@ -192,7 +192,7 @@ def teardown_method(self, method):
192192
def test_create_dataset_from_xml(self):
193193
new_dataset = Dataset.from_xml_file(ATOM_DATASET)
194194
self.dataverse.add_dataset(new_dataset)
195-
retrieved_dataset = self.dataverse.get_dataset_by_title("Roasting at Home")
195+
retrieved_dataset = self.dataverse.get_dataset_by_title('Roasting at Home')
196196
assert retrieved_dataset
197197
self.dataverse.delete_dataset(retrieved_dataset)
198198

@@ -239,7 +239,7 @@ def test_delete_a_file(self):
239239
def test_delete_a_dataset(self):
240240
xmlDataset = Dataset.from_xml_file(ATOM_DATASET)
241241
self.dataverse.add_dataset(xmlDataset)
242-
atomDataset = self.dataverse.get_dataset_by_title("Roasting at Home")
242+
atomDataset = self.dataverse.get_dataset_by_title('Roasting at Home')
243243
num_datasets = len(self.dataverse.get_datasets())
244244

245245
assert num_datasets > 0
@@ -249,11 +249,11 @@ def test_delete_a_dataset(self):
249249

250250
@pytest.mark.skipif(True, reason='Published datasets can no longer be deaccessioned via API')
251251
def test_publish_dataset(self):
252-
assert self.dataset.get_state() == "DRAFT"
252+
assert self.dataset.get_state() == 'DRAFT'
253253
self.dataset.publish()
254-
assert self.dataset.get_state() == "PUBLISHED"
254+
assert self.dataset.get_state() == 'PUBLISHED'
255255
self.dataverse.delete_dataset(self.dataset)
256-
assert self.dataset.get_state(refresh=True) == "DEACCESSIONED"
256+
assert self.dataset.get_state(refresh=True) == 'DEACCESSIONED'
257257

258258

259259
if __name__ == '__main__':

dataverse/utils.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,12 @@ def get_elements(root, tag='*', namespace=None, attribute=None, attribute_value=
2323
if namespace is None:
2424
xpath = tag
2525
else:
26-
xpath = "{{{ns}}}{tag}".format(ns=namespace, tag=tag)
26+
xpath = '{{{ns}}}{tag}'.format(ns=namespace, tag=tag)
2727

2828
if attribute and not attribute_value:
29-
xpath += "[@{att}]".format(att=attribute)
29+
xpath += '[@{att}]'.format(att=attribute)
3030
elif not attribute and attribute_value:
31-
raise Exception("You must pass an attribute with attribute_value")
31+
raise Exception('You must pass an attribute with attribute_value')
3232
elif attribute and attribute_value:
3333
xpath += "[@{att}='{val}']".format(att=attribute, val=attribute_value)
3434

readme.md

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,17 +37,18 @@ Create a file at `dataverse/settings/local.py`. The file should contain the foll
3737
information:
3838

3939
```python
40-
TEST_HOST = "apitest.dataverse.org"
41-
TEST_TOKEN = "" # Token can be generated at {host}/account/apitoken
40+
TEST_HOST = 'apitest.dataverse.org' # or 'dataverse-demo.iq.harvard.edu'
41+
TEST_TOKEN = '' # Token can be generated at {host}/account/apitoken
4242
```
4343

4444
Do not commit this file.
4545

4646
### Running Tests
4747

48-
In order to run any tests, you must first create a Dataverse on the
49-
host you wish to test. Do not run tests on the production server.
50-
5148
To run tests:
5249

5350
$ py.test
51+
52+
Or, to run a specific test:
53+
54+
$ py.test dataverse/test/test_dataverse.py::TestClassName::test_method_name

0 commit comments

Comments
 (0)