aboutsummaryrefslogtreecommitdiffstats
path: root/pathod
diff options
context:
space:
mode:
Diffstat (limited to 'pathod')
-rw-r--r--pathod/app.py4
-rw-r--r--pathod/language/__init__.py6
-rw-r--r--pathod/language/base.py16
-rw-r--r--pathod/log.py4
-rw-r--r--pathod/pathoc.py6
-rw-r--r--pathod/pathod.py6
-rw-r--r--pathod/utils.py19
7 files changed, 27 insertions, 34 deletions
diff --git a/pathod/app.py b/pathod/app.py
index aa00ed69..7e9860b9 100644
--- a/pathod/app.py
+++ b/pathod/app.py
@@ -1,6 +1,6 @@
import logging
import pprint
-from six.moves import cStringIO as StringIO
+import io
import copy
from flask import Flask, jsonify, render_template, request, abort, make_response
from . import version, language, utils
@@ -145,7 +145,7 @@ def make_app(noapi, debug):
args["marked"] = v.marked()
return render(template, False, **args)
- s = StringIO()
+ s = io.BytesIO()
settings = copy.copy(app.config["pathod"].settings)
settings.request_host = EXAMPLE_HOST
diff --git a/pathod/language/__init__.py b/pathod/language/__init__.py
index 32199e08..10da93ba 100644
--- a/pathod/language/__init__.py
+++ b/pathod/language/__init__.py
@@ -1,3 +1,5 @@
+from __future__ import absolute_import
+
import itertools
import time
@@ -5,8 +7,8 @@ import pyparsing as pp
from . import http, http2, websockets, writer, exceptions
-from exceptions import *
-from base import Settings
+from .exceptions import *
+from .base import Settings
assert Settings # prevent pyflakes from messing with this
diff --git a/pathod/language/base.py b/pathod/language/base.py
index a4302998..54ca6492 100644
--- a/pathod/language/base.py
+++ b/pathod/language/base.py
@@ -3,9 +3,13 @@ import os
import abc
import pyparsing as pp
+from six.moves import reduce
+from netlib.utils import escaped_str_to_bytes, bytes_to_escaped_str
+
from .. import utils
from . import generators, exceptions
+
class Settings(object):
def __init__(
@@ -105,7 +109,7 @@ class Token(object):
class _TokValueLiteral(Token):
def __init__(self, val):
- self.val = val.decode("string_escape")
+ self.val = escaped_str_to_bytes(val)
def get_generator(self, settings_):
return self.val
@@ -130,7 +134,7 @@ class TokValueLiteral(_TokValueLiteral):
return v
def spec(self):
- inner = self.val.encode("string_escape")
+ inner = bytes_to_escaped_str(self.val)
inner = inner.replace(r"\'", r"\x27")
return "'" + inner + "'"
@@ -143,7 +147,7 @@ class TokValueNakedLiteral(_TokValueLiteral):
return e.setParseAction(lambda x: cls(*x))
def spec(self):
- return self.val.encode("string_escape")
+ return bytes_to_escaped_str(self.val)
class TokValueGenerate(Token):
@@ -161,7 +165,7 @@ class TokValueGenerate(Token):
def freeze(self, settings):
g = self.get_generator(settings)
- return TokValueLiteral(g[:].encode("string_escape"))
+ return TokValueLiteral(bytes_to_escaped_str(g[:]))
@classmethod
def expr(cls):
@@ -221,7 +225,7 @@ class TokValueFile(Token):
return generators.FileGenerator(s)
def spec(self):
- return "<'%s'" % self.path.encode("string_escape")
+ return "<'%s'" % bytes_to_escaped_str(self.path)
TokValue = pp.MatchFirst(
@@ -573,4 +577,4 @@ class NestedMessage(Token):
def freeze(self, settings):
f = self.parsed.freeze(settings).spec()
- return self.__class__(TokValueLiteral(f.encode("string_escape")))
+ return self.__class__(TokValueLiteral(bytes_to_escaped_str(f)))
diff --git a/pathod/log.py b/pathod/log.py
index f203542f..3f6aaea0 100644
--- a/pathod/log.py
+++ b/pathod/log.py
@@ -1,5 +1,7 @@
import datetime
+import six
+
import netlib.utils
import netlib.tcp
import netlib.http
@@ -53,7 +55,7 @@ class LogCtx(object):
]
)
if exc_value:
- raise exc_type, exc_value, traceback
+ six.reraise(exc_type, exc_value, traceback)
def suppress(self):
self.suppressed = True
diff --git a/pathod/pathoc.py b/pathod/pathoc.py
index a49ed351..8706868b 100644
--- a/pathod/pathoc.py
+++ b/pathod/pathoc.py
@@ -13,14 +13,12 @@ import threading
import OpenSSL.crypto
import six
-from netlib import tcp, http, certutils, websockets, socks
+from netlib import tcp, certutils, websockets, socks
from netlib.exceptions import HttpException, TcpDisconnect, TcpTimeout, TlsException, TcpException, \
NetlibException
from netlib.http import http1, http2
-import language.http
-import language.websockets
-from . import utils, log
+from . import utils, log, language
import logging
from netlib.tutils import treq
diff --git a/pathod/pathod.py b/pathod/pathod.py
index 017ce072..af5f9e6a 100644
--- a/pathod/pathod.py
+++ b/pathod/pathod.py
@@ -6,15 +6,11 @@ import sys
import threading
import urllib
-from netlib import tcp, http, certutils, websockets
+from netlib import tcp, certutils, websockets
from netlib.exceptions import HttpException, HttpReadDisconnect, TcpTimeout, TcpDisconnect, \
TlsException
from . import version, app, language, utils, log, protocols
-import language.http
-import language.actions
-import language.exceptions
-import language.websockets
DEFAULT_CERT_DOMAIN = "pathod.net"
diff --git a/pathod/utils.py b/pathod/utils.py
index d1e2dd00..8c6d6290 100644
--- a/pathod/utils.py
+++ b/pathod/utils.py
@@ -2,6 +2,8 @@ import os
import sys
import netlib.utils
+from netlib.utils import bytes_to_escaped_str
+
SIZE_UNITS = dict(
b=1024 ** 0,
@@ -53,24 +55,13 @@ def xrepr(s):
return repr(s)[1:-1]
-def inner_repr(s):
- """
- Returns the inner portion of a string or unicode repr (i.e. without the
- quotes)
- """
- if isinstance(s, unicode):
- return repr(s)[2:-1]
- else:
- return repr(s)[1:-1]
-
-
def escape_unprintables(s):
"""
Like inner_repr, but preserves line breaks.
"""
- s = s.replace("\r\n", "PATHOD_MARKER_RN")
- s = s.replace("\n", "PATHOD_MARKER_N")
- s = inner_repr(s)
+ s = s.replace(b"\r\n", b"PATHOD_MARKER_RN")
+ s = s.replace(b"\n", b"PATHOD_MARKER_N")
+ s = bytes_to_escaped_str(s)
s = s.replace("PATHOD_MARKER_RN", "\n")
s = s.replace("PATHOD_MARKER_N", "\n")
return s