Skip to content

Commit 92d0043

Browse files
committed
Deprecate __version__ attribute in wsgiref.simple_server
1 parent 170dac2 commit 92d0043

File tree

5 files changed

+28
-5
lines changed

5 files changed

+28
-5
lines changed

Doc/deprecations/pending-removal-in-3.20.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ Pending removal in Python 3.20
2222
- :mod:`tabnanny`
2323
- :mod:`tkinter.font`
2424
- :mod:`tkinter.ttk`
25+
- :mod:`wsgiref.simple_server`
2526
- :mod:`zlib`
2627

2728
(Contributed by Hugo van Kemenade and Stan Ulbrych in :gh:`76007`.)

Doc/whatsnew/3.15.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1039,6 +1039,7 @@ New deprecations
10391039
- :mod:`tabnanny`
10401040
- :mod:`tkinter.font`
10411041
- :mod:`tkinter.ttk`
1042+
- :mod:`wsgiref.simple_server`
10421043
- :mod:`zlib`
10431044

10441045
(Contributed by Hugo van Kemenade and Stan Ulbrych in :gh:`76007`.)

Lib/test/test_wsgiref.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ def check_hello(self, out, has_length=True):
109109
sys.version.split()[0])
110110
self.assertEqual(out,
111111
("HTTP/1.0 200 OK\r\n"
112-
"Server: WSGIServer/0.2 " + pyver +"\r\n"
112+
"Server: WSGIServer " + pyver +"\r\n"
113113
"Content-Type: text/plain\r\n"
114114
"Date: Mon, 05 Jun 2006 18:49:54 GMT\r\n" +
115115
(has_length and "Content-Length: 13\r\n" or "") +
@@ -206,7 +206,7 @@ def app(e, s):
206206
pyver = py + b"/" + ver
207207
self.assertEqual(
208208
b"HTTP/1.0 200 OK\r\n"
209-
b"Server: WSGIServer/0.2 "+ pyver + b"\r\n"
209+
b"Server: WSGIServer "+ pyver + b"\r\n"
210210
b"Content-Type: text/plain; charset=utf-8\r\n"
211211
b"Date: Wed, 24 Dec 2008 13:29:32 GMT\r\n"
212212
b"\r\n"
@@ -840,5 +840,16 @@ def write(self, b):
840840
self.assertIsNotNone(h.environ)
841841

842842

843+
class TestModule(unittest.TestCase):
844+
def test_deprecated__version__(self):
845+
from wsgiref import simple_server
846+
with self.assertWarnsRegex(
847+
DeprecationWarning,
848+
"'__version__' is deprecated and slated for removal in Python 3.20",
849+
) as cm:
850+
getattr(simple_server, "__version__")
851+
self.assertEqual(cm.filename, __file__)
852+
853+
843854
if __name__ == "__main__":
844855
unittest.main()

Lib/wsgiref/simple_server.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,10 @@
1616
from wsgiref.handlers import SimpleHandler
1717
from platform import python_implementation
1818

19-
__version__ = "0.2"
2019
__all__ = ['WSGIServer', 'WSGIRequestHandler', 'demo_app', 'make_server']
2120

2221

23-
server_version = "WSGIServer/" + __version__
22+
server_version = "WSGIServer"
2423
sys_version = python_implementation() + "/" + sys.version.split()[0]
2524
software_version = server_version + ' ' + sys_version
2625

@@ -70,7 +69,7 @@ def set_app(self,application):
7069

7170
class WSGIRequestHandler(BaseHTTPRequestHandler):
7271

73-
server_version = "WSGIServer/" + __version__
72+
server_version = "WSGIServer"
7473

7574
def get_environ(self):
7675
env = self.server.base_environ.copy()
@@ -152,6 +151,15 @@ def make_server(
152151
return server
153152

154153

154+
def __getattr__(name):
155+
if name == "__version__":
156+
from warnings import _deprecated
157+
158+
_deprecated("__version__", remove=(3, 20))
159+
return "0.2" # Do not change
160+
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
161+
162+
155163
if __name__ == '__main__':
156164
with make_server('', 8000, demo_app) as httpd:
157165
sa = httpd.socket.getsockname()
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Deprecate ``__version__`` from :mod:`wsgiref.simple_server`. Patch by Hugo
2+
van Kemenade.

0 commit comments

Comments
 (0)