Skip to content

Commit ce8bf4e

Browse files
committed
Add black configuration and format code
1 parent 5950014 commit ce8bf4e

File tree

13 files changed

+217
-211
lines changed

13 files changed

+217
-211
lines changed

.pre-commit-config.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
repos:
2+
- repo: https://github.com/psf/black
3+
rev: 22.3.0
4+
hooks:
5+
- id: black
6+
args: [--safe, --quiet]

README.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
:alt: Supported Python versions
77
:target: https://pypi.python.org/pypi/pytest-localserver
88

9+
.. image:: https://img.shields.io/badge/code%20style-black-000000.svg
10+
:target: https://github.com/psf/black
11+
912
==================
1013
pytest-localserver
1114
==================

pyproject.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,7 @@ build-backend = "setuptools.build_meta"
44

55
[tool.setuptools_scm]
66
write_to = "pytest_localserver/_version.py"
7+
8+
[tool.black]
9+
target-version = ['py35']
10+
line-length = 120

pytest_localserver/http.py

Lines changed: 22 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,12 @@ class WSGIServer(threading.Thread):
2020
HTTP server running a WSGI application in its own thread.
2121
"""
2222

23-
def __init__(self, host='127.0.0.1', port=0, application=None, **kwargs):
23+
def __init__(self, host="127.0.0.1", port=0, application=None, **kwargs):
2424
self.app = application
2525
self._server = make_server(host, port, self.app, **kwargs)
2626
self.server_address = self._server.server_address
2727

28-
super().__init__(
29-
name=self.__class__,
30-
target=self._server.serve_forever)
28+
super().__init__(name=self.__class__, target=self._server.serve_forever)
3129

3230
def __del__(self):
3331
self.stop()
@@ -38,8 +36,8 @@ def stop(self):
3836
@property
3937
def url(self):
4038
host, port = self.server_address
41-
proto = 'http' if self._server.ssl_context is None else 'https'
42-
return '%s://%s:%i' % (proto, host, port)
39+
proto = "http" if self._server.ssl_context is None else "https"
40+
return "%s://%s:%i" % (proto, host, port)
4341

4442

4543
class Chunked(enum.Enum):
@@ -54,7 +52,7 @@ def __bool__(self):
5452
def _encode_chunk(chunk, charset):
5553
if isinstance(chunk, str):
5654
chunk = chunk.encode(charset)
57-
return '{:x}'.format(len(chunk)).encode(charset) + b'\r\n' + chunk + b'\r\n'
55+
return "{:x}".format(len(chunk)).encode(charset) + b"\r\n" + chunk + b"\r\n"
5856

5957

6058
class ContentServer(WSGIServer):
@@ -78,9 +76,9 @@ class ContentServer(WSGIServer):
7876
7977
"""
8078

81-
def __init__(self, host='127.0.0.1', port=0, ssl_context=None):
79+
def __init__(self, host="127.0.0.1", port=0, ssl_context=None):
8280
super().__init__(host, port, self, ssl_context=ssl_context)
83-
self.content, self.code = ('', 204) # HTTP 204: No Content
81+
self.content, self.code = ("", 204) # HTTP 204: No Content
8482
self.headers = {}
8583
self.show_post_vars = False
8684
self.compress = None
@@ -93,25 +91,27 @@ def __call__(self, environ, start_response):
9391
"""
9492
request = Request(environ)
9593
self.requests.append(request)
96-
if (request.content_type == 'application/x-www-form-urlencoded'
97-
and request.method == 'POST' and self.show_post_vars):
94+
if (
95+
request.content_type == "application/x-www-form-urlencoded"
96+
and request.method == "POST"
97+
and self.show_post_vars
98+
):
9899
content = json.dumps(request.form)
99100
else:
100101
content = self.content
101102

102-
if (
103-
self.chunked == Chunked.YES
104-
or (self.chunked == Chunked.AUTO and 'chunked' in self.headers.get('Transfer-encoding', ''))
103+
if self.chunked == Chunked.YES or (
104+
self.chunked == Chunked.AUTO and "chunked" in self.headers.get("Transfer-encoding", "")
105105
):
106106
# If the code below ever changes to allow setting the charset of
107107
# the Response object, the charset used here should also be changed
108108
# to match. But until that happens, use UTF-8 since it is Werkzeug's
109109
# default.
110-
charset = 'utf-8'
110+
charset = "utf-8"
111111
if isinstance(content, (str, bytes)):
112-
content = (_encode_chunk(content, charset), '0\r\n\r\n')
112+
content = (_encode_chunk(content, charset), "0\r\n\r\n")
113113
else:
114-
content = itertools.chain((_encode_chunk(item, charset) for item in content), ['0\r\n\r\n'])
114+
content = itertools.chain((_encode_chunk(item, charset) for item in content), ["0\r\n\r\n"])
115115

116116
response = Response(response=content, status=self.code)
117117
response.headers.clear()
@@ -152,28 +152,27 @@ def serve_content(self, content, code=200, headers=None, chunked=Chunked.NO):
152152
self.headers = Headers(headers)
153153

154154

155-
if __name__ == '__main__': # pragma: no cover
155+
if __name__ == "__main__": # pragma: no cover
156156
import os.path
157157
import time
158158

159159
app = ContentServer()
160160
server = WSGIServer(application=app)
161161
server.start()
162162

163-
print('HTTP server is running at %s' % server.url)
164-
print('Type <Ctrl-C> to stop')
163+
print("HTTP server is running at %s" % server.url)
164+
print("Type <Ctrl-C> to stop")
165165

166166
try:
167167
path = sys.argv[1]
168168
except IndexError:
169-
path = os.path.join(
170-
os.path.dirname(os.path.abspath(__file__)), '..', 'README.rst')
169+
path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "README.rst")
171170

172171
app.serve_content(open(path).read(), 302)
173172

174173
try:
175174
while True:
176175
time.sleep(1)
177176
except KeyboardInterrupt:
178-
print('\rstopping...')
177+
print("\rstopping...")
179178
server.stop()

pytest_localserver/https.py

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,10 @@
88
from pytest_localserver.http import ContentServer
99

1010
#: default server certificate
11-
DEFAULT_CERTIFICATE = os.path.join(
12-
os.path.abspath(os.path.dirname(__file__)), 'server.pem')
11+
DEFAULT_CERTIFICATE = os.path.join(os.path.abspath(os.path.dirname(__file__)), "server.pem")
1312

1413

15-
class SecureContentServer (ContentServer):
14+
class SecureContentServer(ContentServer):
1615

1716
"""
1817
Small test server which works just like :class:`http.Server` over HTTP::
@@ -113,8 +112,7 @@ class SecureContentServer (ContentServer):
113112
.. _pyOpenSSH: https://launchpad.net/pyopenssl
114113
"""
115114

116-
def __init__(self, host='localhost', port=0,
117-
key=DEFAULT_CERTIFICATE, cert=DEFAULT_CERTIFICATE):
115+
def __init__(self, host="localhost", port=0, key=DEFAULT_CERTIFICATE, cert=DEFAULT_CERTIFICATE):
118116
"""
119117
:param key: location of file containing the server private key.
120118
:param cert: location of file containing server certificate.
@@ -123,31 +121,30 @@ def __init__(self, host='localhost', port=0,
123121
super().__init__(host, port, ssl_context=(key, cert))
124122

125123

126-
if __name__ == '__main__': # pragma: no cover
124+
if __name__ == "__main__": # pragma: no cover
127125

128126
import sys
129127
import time
130128

131-
print('Using certificate %s.' % DEFAULT_CERTIFICATE)
129+
print("Using certificate %s." % DEFAULT_CERTIFICATE)
132130

133131
server = SecureContentServer()
134132
server.start()
135133
server.logging = True
136134

137-
print('HTTPS server is running at %s' % server.url)
138-
print('Type <Ctrl-C> to stop')
135+
print("HTTPS server is running at %s" % server.url)
136+
print("Type <Ctrl-C> to stop")
139137

140138
try:
141139
path = sys.argv[1]
142140
except IndexError:
143-
path = os.path.join(
144-
os.path.dirname(os.path.abspath(__file__)), '..', 'README.rst')
141+
path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "README.rst")
145142

146143
server.serve_content(open(path).read(), 302)
147144

148145
try:
149146
while True:
150147
time.sleep(1)
151148
except KeyboardInterrupt:
152-
print('\rstopping...')
149+
print("\rstopping...")
153150
server.stop()

pytest_localserver/plugin.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ def test_retrieve_some_content(httpserver):
4848
4949
"""
5050
from pytest_localserver import http
51+
5152
server = http.ContentServer()
5253
server.start()
5354
request.addfinalizer(server.stop)
@@ -61,6 +62,7 @@ def httpsserver(request):
6162
SSL encryption.
6263
"""
6364
from pytest_localserver import https
65+
6466
server = https.SecureContentServer()
6567
server.start()
6668
request.addfinalizer(server.stop)
@@ -76,6 +78,7 @@ def smtpserver(request):
7678
* ``addr`` - server address as tuple (host as str, port as int)
7779
"""
7880
from pytest_localserver import smtp
81+
7982
server = smtp.Server()
8083
server.start()
8184
request.addfinalizer(server.stop)

pytest_localserver/smtp.py

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ async def handle_DATA(self, server, session, envelope):
3030
message = email.message_from_bytes(envelope.content)
3131
message.details = MessageDetails(session.peer, envelope.mail_from, envelope.rcpt_tos)
3232
self.outbox.append(message)
33-
return '250 OK'
33+
return "250 OK"
3434

3535

3636
class Server(aiosmtpd.controller.Controller):
@@ -56,7 +56,7 @@ class Server(aiosmtpd.controller.Controller):
5656
5757
"""
5858

59-
def __init__(self, host='localhost', port=0):
59+
def __init__(self, host="localhost", port=0):
6060
try:
6161
super().__init__(Handler(), hostname=host, port=port, server_hostname=host)
6262
except TypeError:
@@ -79,8 +79,8 @@ def _set_server_socket_attributes(self):
7979
# would fail when calling super()._trigger_server(). In the future, when
8080
# we can safely require aiosmtpd >=1.4, this method can be inlined
8181
# directly into _trigger_server().
82-
if hasattr(self, 'addr'):
83-
assert hasattr(self, 'port')
82+
if hasattr(self, "addr"):
83+
assert hasattr(self, "port")
8484
return
8585

8686
self.addr = self.server.sockets[0].getsockname()[:2]
@@ -111,7 +111,8 @@ def accepting(self):
111111
return self.loop.is_running()
112112

113113
# for aiosmtpd <1.4
114-
if not hasattr(aiosmtpd.controller.Controller, '_trigger_server'):
114+
if not hasattr(aiosmtpd.controller.Controller, "_trigger_server"):
115+
115116
def start(self):
116117
super().start()
117118
self._set_server_socket_attributes()
@@ -149,24 +150,25 @@ def __del__(self):
149150
self.stop()
150151

151152
def __repr__(self): # pragma: no cover
152-
return '<smtp.Server %s:%s>' % self.addr
153+
return "<smtp.Server %s:%s>" % self.addr
154+
153155

154156
if __name__ == "__main__": # pragma: no cover
155157
import time
156158

157159
server = Server()
158160
server.start()
159161

160-
print('SMTP server is running on %s:%i' % server.addr)
161-
print('Type <Ctrl-C> to stop')
162+
print("SMTP server is running on %s:%i" % server.addr)
163+
print("Type <Ctrl-C> to stop")
162164

163165
try:
164166

165167
try:
166168
while True:
167169
time.sleep(1)
168170
finally:
169-
print('\rstopping...')
171+
print("\rstopping...")
170172
server.stop()
171173

172174
except KeyboardInterrupt:

runtests.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2663,28 +2663,30 @@
26632663
import zlib
26642664
import imp
26652665

2666+
26662667
class DictImporter:
26672668
def __init__(self, sources):
26682669
self.sources = sources
26692670

26702671
def find_module(self, fullname, path=None):
26712672
if fullname in self.sources:
26722673
return self
2673-
if fullname + '.__init__' in self.sources:
2674+
if fullname + ".__init__" in self.sources:
26742675
return self
26752676
return None
26762677

26772678
def load_module(self, fullname):
26782679
# print "load_module:", fullname
26792680
from types import ModuleType
2681+
26802682
try:
26812683
s = self.sources[fullname]
26822684
is_pkg = False
26832685
except KeyError:
2684-
s = self.sources[fullname + '.__init__']
2686+
s = self.sources[fullname + ".__init__"]
26852687
is_pkg = True
26862688

2687-
co = compile(s, fullname, 'exec')
2689+
co = compile(s, fullname, "exec")
26882690
module = sys.modules.setdefault(fullname, ModuleType(fullname))
26892691
module.__file__ = "{}/{}".format(__file__, fullname)
26902692
module.__loader__ = self
@@ -2697,13 +2699,15 @@ def load_module(self, fullname):
26972699
def get_source(self, name):
26982700
res = self.sources.get(name)
26992701
if res is None:
2700-
res = self.sources.get(name + '.__init__')
2702+
res = self.sources.get(name + ".__init__")
27012703
return res
27022704

2705+
27032706
if __name__ == "__main__":
27042707
exec("def do_exec(co, loc): exec(co, loc)\n")
27052708
import pickle
2706-
sources = sources.encode("ascii") # ensure bytes
2709+
2710+
sources = sources.encode("ascii") # ensure bytes
27072711
sources = pickle.loads(zlib.decompress(base64.decodebytes(sources)))
27082712

27092713
importer = DictImporter(sources)

0 commit comments

Comments
 (0)