Skip to content
Snippets Groups Projects
Commit 6107d4549fcc authored by Gregory Szorc's avatar Gregory Szorc
Browse files

hgweb: cast bytearray to bytes

PEP-3333 seems to indicate that bytes is the only allowed type that can
be used to express the output of a WSGI application. And some WSGI
environments seem to enforce this (mod_wsgi does).

This commit universally casts bytearray instances to bytes to appease
the WSGI specification.

I found this because wireprotov2 is emitting bytearray instances. I'd
like to keep things that way because the way it builds a data
structure, bytearray is more efficient. I'd rather keep the low-level
code efficient (and using bytearray) and cast at the edges than impose
a performance penalty on code that may run outside WSGI contexts.
parent 5b530d767e67
No related branches found
No related tags found
No related merge requests found
......@@ -540,6 +540,12 @@
yield self._bodybytes
elif self._bodygen:
for chunk in self._bodygen:
# PEP-3333 says that output must be bytes. And some WSGI
# implementations enforce this. We cast bytes-like types here
# for convenience.
if isinstance(chunk, bytearray):
chunk = bytes(chunk)
yield chunk
elif self._bodywillwrite:
self._bodywritefn = write
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment