New submission from Matt Giuca <[EMAIL PROTECTED]>: The wsgiref "simple server" module has a demo server, which fails to start in Python 3.0 for a bunch of reasons.
To verify this, just go into the Lib/wsgiref directory, and run: python3.0 ./simple_server.py (which launches the demo server). This opens your web browser and points it at the server, and you get the following error: ValueError: need more than 1 value to unpack I fixed a number of issues which simply killed the server: * In get_environ, it did not iterate over the headers mapping properly at all (was expecting a sequence of strings, it actually is a mapping). I think the email.message.Message class changed. Fixed. * In demo_app, it calls sort on the output of dict.items() - a list in Python 2, but an iterator in Python 3, so it fails. Fixed (using "sorted"). Unfortunately, the final issue is a bit harder to fix. It seems when I run the demo server, it opens a binary stream, but handlers.py sends strings to be written, giving the error TypeError: send() argument 1 must be bytes or read-only buffer, not str However in the test case, it opens a text stream, so handlers.py works fine. The following *HACK* fixes it so the demo server works, but breaks the test suite (it is NOT included in the attached patch): --- Lib/wsgiref/handlers.py (revision 64895) +++ Lib/wsgiref/handlers.py (working copy) @@ -382,8 +382,8 @@ self.environ.update(self.base_env) def _write(self,data): - self.stdout.write(data) - self._write = self.stdout.write + self.stdout.write(data.encode('utf-8')) + #self._write = self.stdout.write I can't figure out right away what to do about this, but the best solution would be to get the demo server to open the socket in text mode. In any case, the patch is attached for branch /branches/py3k, revision 64895. Commit log: * Lib/wsgiref/simple_server.py: Fixed two fatal errors which prevent the demo server from running (broken due to Python 3.0). Note: Demo server may still not run due to an issue between strings and bytes. ---------- components: Library (Lib) files: simple_server.py.patch keywords: patch messages: 69587 nosy: mgiuca severity: normal status: open title: Cannot start wsgiref simple server in Py3k type: behavior versions: Python 3.0 Added file: http://bugs.python.org/file10886/simple_server.py.patch _______________________________________ Python tracker <[EMAIL PROTECTED]> <http://bugs.python.org/issue3348> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com