From 07a0d6dcc20dcf201d242ba2d8e4f14e5254b49f Mon Sep 17 00:00:00 2001 From: Shadab Zafar Date: Sat, 4 Jun 2016 20:50:42 +0530 Subject: Py3: Return bytes from _Component class --- pathod/language/base.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'pathod') diff --git a/pathod/language/base.py b/pathod/language/base.py index 1369a3c7..228bfe3b 100644 --- a/pathod/language/base.py +++ b/pathod/language/base.py @@ -261,7 +261,7 @@ class _Component(Token): """ A value component of the primary specification of an message. - Components produce byte values desribe the bytes of the message. + Components produce byte values describing the bytes of the message. """ def values(self, settings): # pragma: no cover @@ -272,9 +272,9 @@ class _Component(Token): def string(self, settings=None): """ - A string representation of the object. + A bytestring representation of the object. """ - return "".join(i[:] for i in self.values(settings or {})) + return b"".join(i[:] for i in self.values(settings or {})) class KeyValue(_Component): -- cgit v1.2.3 From bafce6cfe9cf602ac0c8497d18d967974df83bcb Mon Sep 17 00:00:00 2001 From: Shadab Zafar Date: Sat, 4 Jun 2016 20:57:29 +0530 Subject: Py3: Use byte string literals --- pathod/language/http.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'pathod') diff --git a/pathod/language/http.py b/pathod/language/http.py index b2308d5e..c8fe6a50 100644 --- a/pathod/language/http.py +++ b/pathod/language/http.py @@ -109,7 +109,7 @@ def get_header(val, headers): class _HTTPMessage(message.Message): - version = "HTTP/1.1" + version = b"HTTP/1.1" @property def actions(self): @@ -133,10 +133,10 @@ class _HTTPMessage(message.Message): def values(self, settings): vals = self.preamble(settings) - vals.append("\r\n") + vals.append(b"\r\n") for h in self.headers: vals.extend(h.values(settings)) - vals.append("\r\n") + vals.append(b"\r\n") if self.body: vals.extend(self.body.values(settings)) return vals @@ -171,7 +171,7 @@ class Response(_HTTPMessage): return self.tok(Reason) def preamble(self, settings): - l = [self.version, " "] + l = [self.version, b" "] l.extend(self.status_code.values(settings)) status_code = int(self.status_code.value) l.append(" ") -- cgit v1.2.3 From 4813f9c69eb09a5288f539992a01e2f0a9a03dc2 Mon Sep 17 00:00:00 2001 From: Shadab Zafar Date: Sun, 5 Jun 2016 22:52:18 +0530 Subject: Py3: More byte literals --- pathod/language/http.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'pathod') diff --git a/pathod/language/http.py b/pathod/language/http.py index c8fe6a50..052d6d6e 100644 --- a/pathod/language/http.py +++ b/pathod/language/http.py @@ -57,7 +57,7 @@ class _HeaderMixin(object): unique_name = None def format_header(self, key, value): - return [key, ": ", value, "\r\n"] + return [key, b": ", value, b"\r\n"] def values(self, settings): return self.format_header( @@ -174,14 +174,14 @@ class Response(_HTTPMessage): l = [self.version, b" "] l.extend(self.status_code.values(settings)) status_code = int(self.status_code.value) - l.append(" ") + l.append(b" ") if self.reason: l.extend(self.reason.values(settings)) else: l.append( status_codes.RESPONSES.get( status_code, - "Unknown code" + b"Unknown code" ) ) return l @@ -191,7 +191,7 @@ class Response(_HTTPMessage): if self.ws: if not settings.websocket_key: raise exceptions.RenderError( - "No websocket key - have we seen a client handshake?" + b"No websocket key - have we seen a client handshake?" ) if not self.status_code: tokens.insert( @@ -294,11 +294,11 @@ class Request(_HTTPMessage): def preamble(self, settings): v = self.method.values(settings) - v.append(" ") + v.append(b" ") v.extend(self.path.values(settings)) if self.nested_response: v.append(self.nested_response.parsed.spec()) - v.append(" ") + v.append(b" ") v.append(self.version) return v -- cgit v1.2.3 From c4ac19be9fd6ab1186783d23774cc0c500677137 Mon Sep 17 00:00:00 2001 From: Shadab Zafar Date: Sun, 5 Jun 2016 22:54:14 +0530 Subject: Py3: Use bytes_to_escaped_str for escaping message --- pathod/language/message.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'pathod') diff --git a/pathod/language/message.py b/pathod/language/message.py index 33124856..fea4f4de 100644 --- a/pathod/language/message.py +++ b/pathod/language/message.py @@ -1,5 +1,6 @@ import abc from . import actions, exceptions +from netlib import strutils LOG_TRUNCATE = 1024 @@ -49,7 +50,7 @@ class Message(object): def preview_safe(self): """ - Return a copy of this message that issafe for previews. + Return a copy of this message that is safe for previews. """ tokens = [i for i in self.tokens if not isinstance(i, actions.PauseAt)] return self.__class__(tokens) @@ -80,10 +81,10 @@ class Message(object): # We truncate at 1k. if hasattr(v, "values"): v = [x[:LOG_TRUNCATE] for x in v.values(settings)] - v = "".join(v).encode("string_escape") + v = strutils.bytes_to_escaped_str(b"".join(v)) elif hasattr(v, "__len__"): v = v[:LOG_TRUNCATE] - v = v.encode("string_escape") + v = strutils.bytes_to_escaped_str(v) ret[i] = v ret["spec"] = self.spec() return ret -- cgit v1.2.3 From da38ce2e6efc685f760655c75b716a2723303c91 Mon Sep 17 00:00:00 2001 From: Shadab Zafar Date: Sun, 5 Jun 2016 23:03:31 +0530 Subject: Py3: decode() input before creating new Header token --- pathod/language/http.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'pathod') diff --git a/pathod/language/http.py b/pathod/language/http.py index 052d6d6e..51b4d8c0 100644 --- a/pathod/language/http.py +++ b/pathod/language/http.py @@ -205,8 +205,8 @@ class Response(_HTTPMessage): if not get_header(i[0], self.headers): tokens.append( Header( - base.TokValueLiteral(i[0]), - base.TokValueLiteral(i[1])) + base.TokValueLiteral(i[0].decode()), + base.TokValueLiteral(i[1].decode())) ) if not self.raw: if not get_header("Content-Length", self.headers): @@ -314,8 +314,8 @@ class Request(_HTTPMessage): if not get_header(i[0], self.headers): tokens.append( Header( - base.TokValueLiteral(i[0]), - base.TokValueLiteral(i[1]) + base.TokValueLiteral(i[0].decode()), + base.TokValueLiteral(i[1].decode()) ) ) if not self.raw: -- cgit v1.2.3 From 78b2fa3a130837b53e1e839cca0d6e6f69b0500f Mon Sep 17 00:00:00 2001 From: Shadab Zafar Date: Sun, 5 Jun 2016 23:10:55 +0530 Subject: Py3: UASTRINGS should be indexed by and return bytes --- pathod/language/http.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'pathod') diff --git a/pathod/language/http.py b/pathod/language/http.py index 51b4d8c0..b088d2cc 100644 --- a/pathod/language/http.py +++ b/pathod/language/http.py @@ -88,7 +88,7 @@ class ShortcutUserAgent(_HeaderMixin, base.OptionsOrValue): def values(self, settings): value = self.value.val if self.option_used: - value = user_agents.get_by_shortcut(value.lower())[2] + value = user_agents.get_by_shortcut(value.lower().decode())[2].encode() return self.format_header( self.key.get_generator(settings), -- cgit v1.2.3 From daba944151097da7fd1d3f9f2af1bd931e013003 Mon Sep 17 00:00:00 2001 From: Shadab Zafar Date: Sun, 5 Jun 2016 23:21:11 +0530 Subject: Py3: Store base.Integer value as bytes --- pathod/language/base.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'pathod') diff --git a/pathod/language/base.py b/pathod/language/base.py index 228bfe3b..c75005be 100644 --- a/pathod/language/base.py +++ b/pathod/language/base.py @@ -391,7 +391,7 @@ class Integer(_Component): "Integer value must be between %s and %s." % self.bounds, 0, 0 ) - self.value = str(value) + self.value = str(value).encode() @classmethod def expr(cls): @@ -404,7 +404,7 @@ class Integer(_Component): return self.value def spec(self): - return "%s%s" % (self.preamble, self.value) + return "%s%s" % (self.preamble, self.value.decode()) def freeze(self, settings_): return self -- cgit v1.2.3 From 5a2932adc11b9049e5609ae564cdee2482ef800c Mon Sep 17 00:00:00 2001 From: Shadab Zafar Date: Sun, 5 Jun 2016 23:21:50 +0530 Subject: Py3: Fix corresponding base.Integer test in test_language_base --- pathod/language/base.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'pathod') diff --git a/pathod/language/base.py b/pathod/language/base.py index c75005be..bc389792 100644 --- a/pathod/language/base.py +++ b/pathod/language/base.py @@ -401,7 +401,7 @@ class Integer(_Component): return e.setParseAction(lambda x: cls(*x)) def values(self, settings): - return self.value + return [self.value] def spec(self): return "%s%s" % (self.preamble, self.value.decode()) -- cgit v1.2.3 From b03a98f9fcdddead9a30c8818c230c2771d1e073 Mon Sep 17 00:00:00 2001 From: Shadab Zafar Date: Mon, 6 Jun 2016 00:26:00 +0530 Subject: Py3: Exception doesn't have to be bytes --- pathod/language/http.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'pathod') diff --git a/pathod/language/http.py b/pathod/language/http.py index b088d2cc..b2af0864 100644 --- a/pathod/language/http.py +++ b/pathod/language/http.py @@ -191,7 +191,7 @@ class Response(_HTTPMessage): if self.ws: if not settings.websocket_key: raise exceptions.RenderError( - b"No websocket key - have we seen a client handshake?" + "No websocket key - have we seen a client handshake?" ) if not self.status_code: tokens.insert( -- cgit v1.2.3 From afa2ad81df2478b6c6b2819ee2c0460128aeff4a Mon Sep 17 00:00:00 2001 From: Shadab Zafar Date: Mon, 6 Jun 2016 16:06:56 +0530 Subject: Py3: encode() status code responses --- pathod/language/http.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'pathod') diff --git a/pathod/language/http.py b/pathod/language/http.py index b2af0864..4cc7db5f 100644 --- a/pathod/language/http.py +++ b/pathod/language/http.py @@ -182,7 +182,7 @@ class Response(_HTTPMessage): status_codes.RESPONSES.get( status_code, b"Unknown code" - ) + ).encode() ) return l -- cgit v1.2.3 From 6447c8ae2256b0e074a04307a748d61f990e98d4 Mon Sep 17 00:00:00 2001 From: Maximilian Hils Date: Mon, 6 Jun 2016 13:31:44 -0700 Subject: fix .freeze(), improve tests --- pathod/language/base.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'pathod') diff --git a/pathod/language/base.py b/pathod/language/base.py index bc389792..6cafdebd 100644 --- a/pathod/language/base.py +++ b/pathod/language/base.py @@ -578,4 +578,4 @@ class NestedMessage(Token): def freeze(self, settings): f = self.parsed.freeze(settings).spec() - return self.__class__(TokValueLiteral(strutils.bytes_to_escaped_str(f))) + return self.__class__(TokValueLiteral(strutils.bytes_to_escaped_str(f.encode()))) -- cgit v1.2.3 From 2ee5e8ef0e632545038a72f0cedc0320c59b00ff Mon Sep 17 00:00:00 2001 From: Maximilian Hils Date: Mon, 6 Jun 2016 13:39:38 -0700 Subject: fix NestedMessage encoding --- pathod/language/base.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'pathod') diff --git a/pathod/language/base.py b/pathod/language/base.py index 6cafdebd..25f3fd1a 100644 --- a/pathod/language/base.py +++ b/pathod/language/base.py @@ -555,7 +555,7 @@ class NestedMessage(Token): try: self.parsed = self.nest_type( self.nest_type.expr().parseString( - value.val, + value.val.decode(), parseAll=True ) ) -- cgit v1.2.3