Skip to content

Commit 2196846

Browse files
committed
Blacken
1 parent 1ec7cae commit 2196846

File tree

5 files changed

+72
-39
lines changed

5 files changed

+72
-39
lines changed

scuttle/versions/base.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,14 @@
22

33
import requests
44

5+
56
class BaseApi:
67
version = None
8+
79
def __init__(self, domain, api_key):
810
self.endpoint = "https://{}.scuttle.bluesoul.net/api/v{}".format(
9-
domain, type(self).version)
11+
domain, type(self).version
12+
)
1013
self.api_key = api_key
1114

1215
def _request(self, namespace, value=None, data=None):
@@ -15,8 +18,6 @@ def _request(self, namespace, value=None, data=None):
1518
if data is not None:
1619
send['data'] = data
1720
response = getattr(requests, method)(
18-
"{}/{}".format(
19-
self.endpoint,
20-
namespace.format(value)),
21-
**send)
21+
"{}/{}".format(self.endpoint, namespace.format(value)), **send
22+
)
2223
return response.json()

scuttle/versions/v1.py

Lines changed: 32 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@
66

77
from .base import BaseApi
88

9+
910
class Api(BaseApi):
1011
"""API version 1"""
12+
1113
version = 1
1214

1315
def wikis(self):
@@ -19,8 +21,9 @@ def wiki(self):
1921
def all_pages(self):
2022
return self._request("page")
2123

22-
def all_pages_since(self, since, *,
23-
limit=None, offset=None, direction=None):
24+
def all_pages_since(
25+
self, since, *, limit=None, offset=None, direction=None
26+
):
2427
data = {
2528
'limit': 20 if limit is None else limit,
2629
'offset': 0 if offset is None else offset,
@@ -39,8 +42,9 @@ def page_by_slug(self, page_slug):
3942
def all_page_revisions(self, page_id):
4043
return self._request("page/{}/revisions", page_id)
4144

42-
def page_revisions(self, page_id, *,
43-
limit=None, offset=None, direction=None):
45+
def page_revisions(
46+
self, page_id, *, limit=None, offset=None, direction=None
47+
):
4448
data = {
4549
'limit': 20 if limit is None else limit,
4650
'offset': 0 if offset is None else offset,
@@ -72,8 +76,9 @@ def forum(self, forum_id):
7276
def forum_threads(self, forum_id):
7377
return self._request("forum/{}/threads", forum_id)
7478

75-
def forum_threads_since(self, forum_id, since, *,
76-
limit=None, offset=None, direction=None):
79+
def forum_threads_since(
80+
self, forum_id, since, *, limit=None, offset=None, direction=None
81+
):
7782
data = {
7883
'timestamp': since,
7984
'limit': 20 if limit is None else limit,
@@ -90,17 +95,19 @@ def thread(self, thread_id):
9095
def all_thread_posts(self, thread_id):
9196
return self._request("thread/{}/posts", thread_id)
9297

93-
def thread_posts(self, thread_id, *,
94-
limit=None, offset=None, direction=None):
98+
def thread_posts(
99+
self, thread_id, *, limit=None, offset=None, direction=None
100+
):
95101
data = {
96102
'limit': 20 if limit is None else limit,
97103
'offset': 0 if offset is None else offset,
98104
'direction': 'asc' if direction is None else direction,
99105
}
100106
return self._request("thread/{}/posts", thread_id, data)
101107

102-
def thread_posts_since(self, thread_id, since, *,
103-
limit=None, offset=None, direction=None):
108+
def thread_posts_since(
109+
self, thread_id, since, *, limit=None, offset=None, direction=None
110+
):
104111
data = {
105112
'timestamp': since,
106113
'limit': 20 if limit is None else limit,
@@ -135,8 +142,9 @@ def all_wikidotuser_pages(self, wikidotuser_id):
135142
raise TypeError("The Wikidot user ID must be an int")
136143
return self._request("wikidotuser/{}/pages", wikidotuser_id)
137144

138-
def wikidotuser_pages(self, wikidotuser_id, *,
139-
limit=None, offset=None, direction=None):
145+
def wikidotuser_pages(
146+
self, wikidotuser_id, *, limit=None, offset=None, direction=None
147+
):
140148
data = {
141149
'limit': 20 if limit is None else limit,
142150
'offset': 0 if offset is None else offset,
@@ -151,8 +159,9 @@ def all_wikidotuser_posts(self, wikidotuser_id):
151159
raise TypeError("The Wikidot user ID must be an int")
152160
return self._request("wikidotuser/{}/posts", wikidotuser_id)
153161

154-
def wikidotuser_posts(self, wikidotuser_id, *,
155-
limit=None, offset=None, direction=None):
162+
def wikidotuser_posts(
163+
self, wikidotuser_id, *, limit=None, offset=None, direction=None
164+
):
156165
data = {
157166
'limit': 20 if limit is None else limit,
158167
'offset': 0 if offset is None else offset,
@@ -167,8 +176,9 @@ def all_wikidotuser_revisions(self, wikidotuser_id):
167176
raise TypeError("The Wikidot user ID must be an int")
168177
return self._request("wikidotuser/{}/revisions", wikidotuser_id)
169178

170-
def wikidotuser_revisions(self, wikidotuser_id, *,
171-
limit=None, offset=None, direction=None):
179+
def wikidotuser_revisions(
180+
self, wikidotuser_id, *, limit=None, offset=None, direction=None
181+
):
172182
data = {
173183
'limit': 20 if limit is None else limit,
174184
'offset': 0 if offset is None else offset,
@@ -194,8 +204,9 @@ def tag_pages(self, tags):
194204
raise TypeError("A single tag must be a string")
195205
return self._request("tag/{}/pages", tags)
196206

197-
def tags_pages(self, tags, operator='and', *,
198-
limit=None, offset=None, direction=None):
207+
def tags_pages(
208+
self, tags, operator='and', *, limit=None, offset=None, direction=None
209+
):
199210
"""
200211
str[] `tags`: A list of tags, finds all page IDs that match the
201212
condition.
@@ -205,8 +216,9 @@ def tags_pages(self, tags, operator='and', *,
205216
multiple tags.
206217
"""
207218
if isinstance(tags, str):
208-
raise TypeError("tags must be str[] or int[]; use tag_pages()"
209-
"for single tags")
219+
raise TypeError(
220+
"tags must be str[] or int[]; use tag_pages()" "for single tags"
221+
)
210222
if not isinstance(tags, Iterable):
211223
raise TypeError("tags must be a list of str or int")
212224
data = {

scuttle/wrapper.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
from scuttle.versions import v1
88

9+
910
def scuttle(wiki, api_key, api_version=1):
1011
"""Create a new API wrapper for a given wiki and API version.
1112
@@ -18,6 +19,7 @@ def scuttle(wiki, api_key, api_version=1):
1819
raise NotImplementedError
1920
return ApiWrapper(wiki, api_key, api_version)
2021

22+
2123
class ApiWrapper:
2224
def __init__(self, wiki, api_key, api_version):
2325
self.domain = wiki
@@ -27,8 +29,9 @@ def __init__(self, wiki, api_key, api_version):
2729
if self.version == 1:
2830
self.api = v1.Api(self.domain, self.api_key)
2931
else:
30-
raise ModuleNotFoundError("API version {} does not exist."
31-
.format(self.version))
32+
raise ModuleNotFoundError(
33+
"API version {} does not exist.".format(self.version)
34+
)
3235

3336
def __getattr__(self, attr):
3437
# Redirect attribute requests to api.

setup.py

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,25 +6,21 @@
66
from scuttle import __version__
77

88
from os import path
9+
910
this_directory = path.abspath(path.dirname(__file__))
1011
with open(path.join(this_directory, 'README.md'), encoding='utf-8') as f:
1112
long_description = f.read()
1213

1314
setup(
1415
name='scuttle',
1516
version=__version__,
16-
packages=[
17-
'scuttle',
18-
'scuttle.versions'
19-
],
17+
packages=['scuttle', 'scuttle.versions'],
2018
url="http://github.com/scuttle/python-scuttle",
2119
license="MIT",
2220
author="Ross Williams",
2321
author_email="[email protected]",
2422
description="Python wrapper for SCUTTLE API.",
2523
long_description=long_description,
2624
long_description_content_type='text/markdown',
27-
install_requires=[
28-
"requests"
29-
]
25+
install_requires=["requests"],
3026
)

test/test_api.py

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,35 +8,48 @@
88

99
API_KEY = os.environ['SCUTTLE_API_KEY']
1010

11+
1112
def test_basic():
1213
wiki = scuttle.scuttle('en', None, 1)
1314
assert wiki.domain == 'en'
1415
assert wiki.version == 1
1516
assert isinstance(wiki.api, scuttle.versions.v1.Api)
1617

18+
1719
def test_get_nonexistent_version():
1820
with pytest.raises(ModuleNotFoundError) as e:
1921
scuttle.scuttle('en', None, 0)
2022
assert str(e.value) == "API version 0 does not exist."
2123

24+
2225
def test_get_default_version():
2326
wiki = scuttle.scuttle('en', None)
2427
assert wiki.version == 1
2528
assert isinstance(wiki.api, scuttle.versions.v1.Api)
2629

30+
2731
def test_wiki():
2832
wiki = scuttle.scuttle('en', API_KEY, 1)
2933
assert wiki.wikis()[0]['subdomain'] == "admin"
3034
assert wiki.wiki()['subdomain'] == "en"
3135

36+
3237
def test_page():
3338
wiki = scuttle.scuttle('en', API_KEY, 1)
3439
pages = wiki.all_pages()
3540
assert set(pages[0].keys()) == {'id', 'slug', 'wd_page_id'}
3641
page_id = pages[0]['id']
3742
assert wiki.page_by_id(page_id)['id'] == page_id
38-
assert wiki.page_by_slug("scp-001")['metadata']['wikidot_metadata']['fullname'] == "scp-001"
39-
assert wiki.page_by_slug("component:ar-theme")['metadata']['wikidot_metadata']['created_by'] == "Croquembouche"
43+
assert (
44+
wiki.page_by_slug("scp-001")['metadata']['wikidot_metadata']['fullname']
45+
== "scp-001"
46+
)
47+
assert (
48+
wiki.page_by_slug("component:ar-theme")['metadata']['wikidot_metadata'][
49+
'created_by'
50+
]
51+
== "Croquembouche"
52+
)
4053
if len(votes := wiki.page_votes(page_id)) > 0:
4154
assert isinstance(votes[0]['vote'], int)
4255
if len(tags := wiki.page_tags(page_id)) > 0:
@@ -46,8 +59,11 @@ def test_page():
4659
timestamp = 1500000000
4760
pages_since_then = wiki.all_pages_since_mini(timestamp)
4861
print(pages_since_then)
49-
assert all(page['metadata']['wd_page_created_at'] >= timestamp
50-
for page in pages_since_then)
62+
assert all(
63+
page['metadata']['wd_page_created_at'] >= timestamp
64+
for page in pages_since_then
65+
)
66+
5167

5268
def test_revisions():
5369
wiki = scuttle.scuttle('en', API_KEY, 1)
@@ -65,13 +81,18 @@ def test_revisions():
6581
assert len(first_rev) == 1
6682
final_rev = wiki.page_revisions(page_id, limit=1, direction="desc")
6783
print(f"{final_rev=}")
68-
assert first_rev[0]['metadata']['wikidot_metadata']['timestamp'] <= final_rev[0]['metadata']['wikidot_metadata']['timestamp']
84+
assert (
85+
first_rev[0]['metadata']['wikidot_metadata']['timestamp']
86+
<= final_rev[0]['metadata']['wikidot_metadata']['timestamp']
87+
)
88+
6989

7090
def test_forums():
7191
wiki = scuttle.scuttle('en', API_KEY, 1)
7292
forum_id = wiki.all_forums()[0]['id']
7393
assert wiki.forum(forum_id)['id'] == forum_id
7494

95+
7596
def test_tags():
7697
# TODO
7798
pass

0 commit comments

Comments
 (0)